基础实例 # 0.键入以下内容看到可读形式的完整列表,通过管道符号传递给其他cmdlet并进行使用 Get-Command -Noun Variable | Format-Table -Property...在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。 $Args : 包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。...在通过 PSConsoleFile 参数启动 Windows PowerShell 或使用 Export-Console cmdlet 将管理单元名称导出到控制台文件 时,将填充此变量。...$Input : 一个枚举数,它包含传递给函数的输入。$Input 变量区分大小写,只能用于函数和脚本块。(脚本块本质上是未命名的函数。)...只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。
在本文中,我们的实验是一个通过PowerShell进行的AMSI测试示例,测试过程是当AMSI模块接受外部传进来的脚本块并将其传递给Defender进行分析的时候进行劫持操作,具体可见下图所示: 正如你所看到的...在左侧,我们有旧的AMSI DLL,在右边,我们有新更新的AMSI DLL。...CoCreateInstance()可以定义为高级函数,该函数用于实例化使用CoGetClassObject()生成的COM例程 。...在进行研究之前,我们需要明白的是:基本上,脚本解释器(如PowerShell)从工作目录加载amsi.dll,而不是从安全路径(如System32)加载它。...由于这个原因,我们可以将PowerShell.exe复制到我们可以写入的目录,并 将易受攻击的amsi.dll版本放到这个目录中。
基础实例: #0.键入以下内容看到可读形式的完整列表,通过管道符号传递给其他cmdlet并进行使用 Get-Command -Noun Variable | Format-Table -Property...,可以将国家代码和国家名称标志字符串转换成一个新的CultureInfo对象。...在对管道中的每个对象或所选对象执行操作的命令中,可以使用此变量。 $Args : 包含由未声明参数和/或传递给函数、脚本或脚本块的参数值组成的数组。...在通过 PSConsoleFile 参数启动 Windows PowerShell 或使用 Export-Console cmdlet 将管理单元名称导出到控制台文件 时,将填充此变量。...只有在声明参数的作用域(如脚本或函数)中, 此变量才有值。可以使用此变量显示或更改参数的当前值,也可以将参数值传递给 其他脚本或函数。
脚本执行后,会通过下载服务器下载下一阶段的攻击载荷,攻击者将下载服务器部署在基于 Azure 的 Windows 服务器或基于 AWS 的 EC2 实例上。...Netwire Netwire 通常会窃取受害者的密码、登录凭据和信用卡数据等隐私信息,同时兼具命令执行和窃取文件的功能。...△ 解密函数 紧接着继续解密: △ 解密函数 第二层 其余加密内容在第二层进行解密,将 ejv()解密的结果传递给解密函数。 去混淆的结果包含另一个解密函数 Ox$(),这是第三层解密函数。...△ 解密函数 第三层 第三层去混淆的结果是另一个混淆函数,包含多个函数调用来进行解密: △ 部分混淆恶意代码 在分析另一个发现的 JavaScript 脚本时,与首次发现的不相同。...△ VBScript Downloader 示例 PowerShell Dropper 在 Azure 的服务器上发现了一个使用 HCrypt 构建的 PowerShell 脚本。
于此同时,事件过滤器还给出了WMI传递事件的条件。 需要在系统上以管理员身份运行才能创建事件实例。...1.2.1.ActiveScriptEventConsumer 当事件传递给它时,以任意脚本语言执行预定义的脚本。此可在 Windows 2000 及更高版本上使用。...Stop-Service wuauserv -Verbose 4.0.使用 Set-WMIInstance创建 WMI 事件订阅 此方法使用 –Arguments 参数,该参数接受将用于定义每个实例及其属性的哈希表...首先,将创建将与我的 splatting 一起使用的哈希表,这些也是不会随每个 WMI 实例更改的通用参数。...$WY79ad')) | iex 最后,脚本将加密的有效负载存储在 Windows 注册表中,在样本中,攻击者似乎对每个目标使用不同的注册表位置。
使用 Snoop,能轻松地查看 WPF 中控件的可视化树以及每一个 Visual 节点的各种属性,或者查看数据上下文,或者监听查看事件的引发。 不过,更强大的是支持使用 PowerShell 脚本。...---- Snoop PowerShell 入口 常规 Snoop 的使用方法,将狮子瞄准镜拖出来对准要调试 UI 的 WPF 窗口松开。...这里我拿 Visual Studio 2019 的窗口做试验。 在打开的新的 Snoop 窗口中我们打开 PowerShell 标签。 本文的内容将从这里开始。...包含这两个,还有其他的可以使用: $root 拿到当前 Snoop 窗口顶层元素类型的实例 $selected 拿到当前 Snoop 用鼠标或键盘选中的元素的实例 $parent 拿到当前 Snoop.../post/powershell-of-snoop.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
在内存中执行 PowerShell 脚本以进行逃避检测 打开诱饵分散受害者的注意力 后文对感染链进行了深入分析,并对 Quantum Builder 生成的 Payload 进行了比较。...【感染链】 HTA 文件解密 PowerShell 脚本,在执行 AES 解密和 GZIP 解压缩后解密并加载另一个 PowerShell 脚本。...【PowerShell 代码执行】 解密的代码以隐藏窗口的形式执行,解密后会获取另一个 PowerShell 代码。...>\AppData\Roaming\MuUQDuaFNoGmHQE.exe: 【写入指定位置】 Agent Tesla 二进制文件的路径作为参数传递给 PowerShell 脚本中的 CMSTP UAC...该脚本将 [ENTER] 按键发送到活动的窗口应用程序,以便使用 SendKeys.SendWait() 函数自动执行。
[TOC] 0x01 开始使用 PowerShell Q: 在哪里可以找到 以及打开 PowerShell?...参数时,PowerShell 将显示该 cmdlet 的帮助。 Get-Service -? 3.通用参数: 参数由 PowerShell 引擎控制, 通用参数的行为方式始终相同。...Get-Help *hotfix* WeiyiGeek.在窗口中打开帮助主题 Tips : 例如,无法同时指定 Full 和 Detailed 参数,因为它们位于不同的参数集中 。...,建议使用 Online 参数或 Full 参数,并通过管道将结果传递给 Out-GridView; help Get-Command -Full | Out-GridView # 4.对 Name...Tips : 更好的选择是使用 Verb 或/和 Noun 参数,因为只有 PowerShell 命令同时具有谓词和名词 。
当get_className_direct执行时,它实例化一个新BSTR持有GET操作的结果,在由指定的地址写入指针这个新的字符串BSTR *value参数。...此外,脚本无法访问损坏的字符串数据以进行信息泄漏,因为BSTR传递给get_className_direct它是暂时的BSTR。它是不一样的BSTR分配该脚本可以稍后访问。因此案例1是不可利用的。...知道CElement::put_scrollLeft需要一个整数参数,调度机制会将我们的MyClass实例强制转换为整数。...我通过打开PowerShell评论解决了这个问题: 之后,我们可以关闭PowerShell命令并编写所需的PowerShell脚本,而不受任何进一步的限制。...结论 我感觉我们只是通过使用对地址空间的读/写访问来解决可能实现的问题。这种访问级别使得可以任意破坏数据结构,甚至可以预先手动创建内存中不存在的新对象实例。
Out-GridView 如何使用 下面这个例子使用了Out-GridView 命令,这个场景下,我选择三个数据库,然后会只备份我选择的三个。 另一个很有用的功能就是过滤。...有趣的脚本参数和实践 这里先要介绍一下-Script ,在备份语句的最后添加这个参数将会允许输出指令,不必等到实际执行的时候。这就让我们可以不用等到备份完成就可以看到脚本。...如下图所示,其实我们的PS脚本就是封装了T-SQL脚本而已。 更多备份参数 让我们看看这个指令其他的可选参数。如果我想能够了解更多信息可以使用Get-Help指令。...或者使用下面的代码样例来备份这个实例中的所有数据库。...提供给大家一个比起T-sql更便捷的方式。同时可以用它来输出T-sql语句。
Out-GridView 如何使用 下面这个例子使用了Out-GridView 命令,这个场景下,我选择三个数据库,然后会只备份我选择的三个。 ? 另一个很有用的功能就是过滤。...有趣的脚本参数和实践 这里先要介绍一下-Script ,在备份语句的最后添加这个参数将会允许输出指令,不必等到实际执行的时候。这就让我们可以不用等到备份完成就可以看到脚本。...如下图所示,其实我们的PS脚本就是封装了T-SQL脚本而已。 ? 更多备份参数 让我们看看这个指令其他的可选参数。如果我想能够了解更多信息可以使用Get-Help指令。...或者使用下面的代码样例来备份这个实例中的所有数据库。 ?...提供给大家一个比起T-sql更便捷的方式。同时可以用它来输出T-sql语句。
中的 3 个组件,在整篇文章中,我们将交替使用 WMI 和 CIM cmdlet,以便熟悉这两种 cmdlet 类型。...可以将相关命令的输出通过管道传输到 cmdlet。为了快速演示,运行计算器应用程序并列出过程。 如果我们通过管道将命令传递给 Remove-CimInstance 会发生什么? 进程被杀死!...现在让我们看看如何使用方法。 要使用一个方法,我们需要知道调用该方法时需要提供哪些参数。...要列出所有可用参数,我们可以结合使用 Powershell,或者更好地阅读 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management...但是,重要的是要记住实例应该是可写的。通过编写一些脚本,我们可以编写一个获取类的所有可写属性的方法。
下面给出的是真实场景中的攻击实例: 在这个样例中,攻击者使用了.downloadfile()方法来下载恶意文件,并使用环境变量将其存储在了用户的Appdata目录中,然后使用“Start-Process...这些文件一般来说都是一些恶意脚本,并且能够使用Powershell –Command参数在内存中直接执行。...命令行为王 很多PowerShell攻击可以通过监控传递给PowerShell进程的命令行参数来进行检测。...Process_Command_Line中包含了传递给新创建进程(例如PowerShell)的命令行参数信息,我们可以基于一些常见参数(例如 –e, -Encod, -windowstyle , Bypass...而此时,我们就需要记录事件ID 4688,然后过滤并记录下任何关于PowerShell进程创建的活动以及传递给PowerShell的命令行参数,并以此来检测可疑的PowerShell攻击活动。
当get_className_direct执行时,它会实例化一个新的BSTR来保存get操作的结果,并在BSTR * value参数指定的地址处写入一个指向这个新字符串的指针。...每当通过调度机制调用一个函数时,第一个参数将是一个指向调用该方法的COM对象的指针(“this”参数)。这对我们来说是个坏消息,因为我们通常需要完全控制传递给目标API的第一个堆栈参数。...我们如何防止pld指针的出现会破坏PowerShell脚本的内容呢?...我是借助PowerShell注释来解决这个问题的: 之后,我们可以关闭PowerShell注释,并编写所需的PowerShell脚本,此外没有任何其他的限制。...如果使用干净的进程的话,它运行起来还是非常可靠得。增强保护模式可以处于关闭或打开状态(只要不处于64位渲染器进程的增强保护模式下)。
通过一些修改,可以在将这些相同的技术注入到不同的进程时使用(例如,如果需要,可以让任何进程执行PowerShell) 下面借用网上的一张图来说明这个流程,上面说了可以让任何进程执行powershell...如果所有的PowerShell脚本都使用Write-Output而不是Write-Host,那么这就不是问题,但是如果使用了足够多的Write-Host,那么实现一个定制PSHost是值得的 在C#中调用...运行空间在使用之前必须打开。...托管应用程序将创建其派生类的实例,然后将其传递给RunspaceFactory CreateRunspace方法。...vtEmpty, 对其调用指定成员的对象 psaStaticMethodArgs, 包含传递给要调用的成员的参数的数组 &vtPSInvokeReturnVal); 表示要使用的全局化区域设置的对象
键盘快捷键:Ctrl +`(Esc下面得按键) Ctrl+Shift+P -> term 打开外部终端 拆分终端 要打开终端: 将Ctrl +`键盘快捷键与反引号一起使用。...可以通过单击TERMINAL面板右上角的加号图标或触发Ctrl + Shift +`命令来添加终端实例。此操作将在下拉列表中创建另一个条目,可用于在它们之间进行切换。...可以使用terminal.integrated.shellArgs.*用户设置将参数传递到终端外壳。...runas.exe Shell参数 您可以在启动外壳程序时将参数传递给外壳程序。...新名称将显示在终端选择下拉列表中。 在特定文件夹中打开 默认情况下,终端将在资源管理器中打开的文件夹中打开。
创建一个新的工作,我叫我的“备份主”,如图1所示。 ? 图1 - 创建一个新的工作 现在点击Steps选项卡查看作业步骤,然后点击New ...打开New Job Step对话框(图2)。 ?...ActiveX脚本 ActiveX子系统允许您运行VBScript,Jscript或其他自定义脚本语言(理论上)。脚本将默认在SQL Server代理服务帐户的安全上下文中运行。...如果你精通VBScript,这可能是一个方便的子系统,但是从SQL Server 2008开始,这个子系统已经被弃用,你应该使用PowerShell子系统。...电源外壳 PowerShell子系统允许您运行兼容Windows PowerShell 1.0或2.0的脚本。与其他脚本子系统一样,该脚本将默认在SQL Server代理服务帐户的安全上下文中运行。...PowerShell将允许您连接到远程系统,所以这是解决Transact-SQL子系统连接到SQL Server远程实例的一个方法。
该部分以学术界论文为主,介绍Powershell恶意代码检测相关现状。 当你打开DBLP或谷歌,会发现Powershell相关的文章很少,主要以那篇CCS解混淆为主。...我们对 2342 个良性样本和 4141 个恶意样本的集合进行了评估,发现我们的去混淆方法平均耗时不到 0.5 秒,同时将混淆后的脚本与原始脚本之间的相似度从仅 0.5% 提高到 80% 左右,这因此既有效又轻便...在实验中,将恶意脚本插入到良性脚本中,以削弱恶意样本在抽象语法树节点和令牌层面的特征,使脚本更加复杂。...另一个是反混淆脚本,包括编码、字符串操作和代码逻辑混淆。同时,我们设计了一种基于PSDEM的Word文档中恶意PowerShell脚本的自动反混淆分析工具。...留了代码上下文的特征并剔除无关的参数干扰,是分析功能类似的PowerShell代码的有效方法 。
打开后,该文档便诱使用户启用内容。 ? 文档用Document_Open()调用另一个VBA函数。这个VBA函数就会设置一个长字符串,其中包含一个Powershell命令和将执行的代码。...除了两个switch外,“pre_logic”函数还支持四个参数,这四个参数随后将传递给下一阶段的“logic”函数。这些参数决定,下一个感染阶段发送DNS TXT记录查询时,要使用哪些子域。...有点必须要注意的是,第三、四阶段的Powershell脚本,都包含两组域,只有在样本使用第二组域名出现问题时才会使用第一组域名。 ?...恶意程序会在另一个DNS TXT记录查询中使用这个域,来尝试获取与当前阶段相关的第四阶段payload。...这一步完成后,将调用新扩展环境中的一个函数,来执行第四阶段代码,并设置特定参数。这些参数包含后续将用到的第四阶段C2域名和将执行的程序,即Windows命令行处理器(cmd.exe)。
攻击特征 1.病毒会创建计划任务持续使用PowerShell.exe下载其他恶意程序。 2.病毒运行挖矿程序占用计算机资源,影响正常使用。 3.病毒运行木马程序用于自身持久化驻留和操控计算机。...运行程序,此程序会调用Mimikatz脚本,进行本机用户和密码的抓取, 同时创建计划任务,每天固定时间点自动向XX.beahh.com发送http请求下载域名解析后服务器上的程序,并以HTA(内含微软某...病毒拥有远控功能,运行后将本机的CUP型号,操作系统版本,MAC地址,ip地址,域用户名,显卡信息,挖矿线程,以及计算机参数传递给终端: 该脚本新增一个计划任务,计划每天7:00运行 C:\windows...释放powershell脚本文件并执行mimikatz模块,运行mimi操作后,释放了另一个配置文件 ? mkatz.ini文件中为抓取到的用户密码hash值 ?...释放PowerShell脚本并执行,命令行参数为 ? 判断自身所在的路径,如果不是则拷贝自身到当前用户的缓存目录中再次启动: ?
领取专属 10元无门槛券
手把手带您无忧上云