遗漏杂项:Minimum选项设置catch的字符串的最短长度,小于则丢弃
PMSWalker不带扫描器:
http://code.google.com/p/pmswalker/downloads/list
PMSWalker带扫描器(病毒库自行更新):
http://u.115.com/file/cln6264w
scancl完整病毒库更新地址
http://dl.antivir.de/package/fusebundle/win32/int/vdf_fusebundle.zip
PMSWalker要下载符号文件,初次启动比较慢
注意某些网马Heap Spray太厉害请及时Abort终止其Heap Spray
对你系统中IE的安全性没有信心的话请在沙盘或虚拟机里运行PMSWalker
8.9
自动处理shellcode时模拟步数略微下调(原本过大没有必要)
扫描器换用新版本病毒库
8.10
调整自动分析,可能长时间不会再更新,在反混淆方面PMSWalker已经比以前的很多工具强不少了,要手动处理的应该并不多,所以不要太依赖自动化,机器毕竟不如人
谈所谓“网马解密”
首先我认为“网马解密”这个词不合适,本文一律改称“网马反混淆”,
自动化网马分析工具PMSWalker(并谈所谓“网马解密”)WEB安全
。本文分为五部分:“网马混淆”与“反混淆”、“静态模拟”的反混淆方法、“动态钩挂”的反混淆方法、有关“网马解密”的文章、PMSWalker介绍。
“网马混淆”问题:网马往往为了规避各种监测而进行“混淆”。我们看一个简单的例子:
经过混淆的网马都需要自解密,我们只需要关照eval、document.write等函数即可。这里我们可以使用最简单的方法,如替换eval为document.write再替换document.write为alert或重定向到一个中。但聪明的网马作者可以采用各种手段令上述方法无效,如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解析就带来了很多问题,我们看一个例子:
上述工具都没有办法正确解析http://www.baidu.com这个跨站,因为进行DOM操作的js根本无法正确执行,因此处理国外的几大Exploit Kit非常困难,
电脑资料
《自动化网马分析工具PMSWalker(并谈所谓“网马解密”)WEB安全》(https://www.unjs.com)。但“静态模拟”也不是没有优点,至少它很安全。“动态钩挂”的反混淆方法:“静态模拟”完全实现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会在自动分析时调用它进行扫描,扫描结果在日志中[Scan Info]项下。
安全声明:PMSWalker使用IE引擎动态分析网马,如果你的系统存在相应漏洞,本人不承担任何使用PMSWalker所产生的后果。