瑞星卡卡安全论坛

首页 » 技术交流区 » 恶意网站交流 » 网马解密大讲堂——网马解密中级篇(Shellcode篇)
networkedition - 2009-5-18 14:46:00
卡卡讲堂之网马解密 初级篇
卡卡讲堂之网马解密 中级篇
卡卡讲堂之网马解密 高级篇(swf网马解密)
卡卡讲堂之网马解密 高级篇(pdf网马解密)
1.Freshow解密工具的详细用法
2.网马解密之——Eval篇
3.网马解密之——Document.write篇
4.网马解密之——Alpha2篇
5.网马解密之——Shellcode篇
6.网马解密之——Base64篇
7.网马解密之——US-ASCII篇
8.浅谈eval解密之——工具篇



引用:

一. 什么是shellcode

      1996年,Aleph One在Underground发表了著名论文《SMASHING THE STACK FOR FUN AND PROFIT》,其中详细描述了Linux系统中栈的结构和如何利用基于栈的缓冲区溢出。在这篇具有划时代意义的论文中,Aleph One演示了如何向进程中植入一段用于获得shell的代码,并在论文中称这段被植入进程的代码为“shellcode”。
 
     

引用:
后来人们干脆统一用shellcode这个专用术语来通称缓冲区溢出攻击中植入进程的代码。这段代码可以是出于恶作剧目的的弹出一个消息框,也可以是出于攻击目的的删改重要文件、窃取数据、上传木马病毒并运行,甚至是出于破坏目的的格式化硬盘等等。请注意本章讨论的shellcode就是这种广义上的植入进程的代码,而不是狭义上的仅仅用来获得shell的代码。


用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
networkedition - 2009-5-18 14:46:00


引用:

Shellcode网马特征:以相同分隔符(一般为%u)分隔的4位一组的十六进制字符串



引用:

解密方法:

  • 对于直接使用%u来分隔的shellcode,通过两次esc可以直接解密出网马地址。
  • 对于通过类shellcode形式加密的网马,可以通过将代码进行适当处理(将代码替换为分隔符%u),再进行两次esc解密
networkedition - 2009-5-18 14:47:00


引用:
接下来我们还是以详细的实例,来讲解以shellcode加密的网马,如何使用freshow工具来解密


Game54EBGame758BGame8B3CGame3574Game0378Game56F5Game768BGame0320Game33F5Game49C9GameAD41GameDB33Game0F36Game14BEGame3828Game74F2GameC108Game0DCBGameDA03GameEB40Game3BEFGame75DFGame5EE7Game5E8BGame0324Game66DDGame0C8BGame8B4BGame1C5EGameDD03Game048BGame038BGameC3C5Game7275Game6D6CGame6E6FGame642EGame6C6CGame4300Game5C3AGame2e55Game7865Game0065GameC033Game0364Game3040Game0C78Game408BGame8B0CGame1C70Game8BADGame0840Game09EBGame408BGame8D34Game7C40Game408BGame953CGame8EBFGame0E4EGameE8ECGameFF84GameFFFFGameEC83Game8304Game242CGameFF3CGame95D0GameBF50Game1A36Game702FGame6FE8GameFFFFGame8BFFGame2454Game8DFCGameBA52GameDB33Game5353GameEB52Game5324GameD0FFGameBF5DGameFE98Game0E8AGame53E8GameFFFFGame83FFGame04ECGame2C83Game6224GameD0FFGame7EBFGameE2D8GameE873GameFF40GameFFFFGameFF52GameE8D0GameFFD7GameFFFFGame7468Game7074Game2f3aGame682fGame6f61Game6978Game3161Game2e38Game6f63Game2f6dGame6978Game2f61Game3566Game632eGame7373Game0000




引用:

上述代码实际上是一个典型的shellcode,我们先来简单分析一下,根据shellcode特征:以相同分隔符(一般为%u)分隔的4位一组的十六进制字符串。我们看到上述代码有很多的Game这个单词,每个Game之间的字符都是4位,刚好符合shellcode的特征,那么我们先尝试将Game替换为%u后再进行解密。
networkedition - 2009-5-18 14:47:00


引用:
我们先将上述代码复制粘贴在freshow的上操作区域,利用freshow工具的Replace功能进行字符串的替换,具体操作方法,详见下列截图:






引用:
在这里我们在过滤选项选择Replace,此时filter右边的两个方框为编辑状态,我们要替换的内容输入,点击filter按钮进行替换操作。


附件: shellcode.jpg
networkedition - 2009-5-18 14:48:00


引用:
点击filter替换后,将下操作区域的替换后的代码,点击up按钮上翻至上操作区域,进行两次的esc操作,解出网马的下载地址,详细操作见下列截图:




networkedition - 2009-5-18 14:49:00
占楼备用
networkedition - 2009-5-18 14:50:00
占楼备用
林晓晓 - 2009-5-18 14:57:00
路过路过了路过
艾玛 - 2009-5-20 13:54:00
Malzilla





於陵闲云 - 2009-5-21 12:49:00
不错,艾玛大斑斑还有解法二:kaka12:
Bearboy - 2009-5-28 19:34:00
好好好!:kaka12:
12庞字u - 2009-6-24 8:53:00
我都不太会
覅据ivb - 2009-6-30 19:51:00
学习
gtyre2 - 2009-7-2 16:23:00
老师讲得真详细
kav2046 - 2009-7-17 21:37:00
分析得很详细!学到了新的东西,感谢楼主分享!:kaka17:
J_muse - 2009-7-29 16:33:00
Mazzilla我觉:kaka12: 的更简单一点儿
springyun - 2010-5-22 13:53:00
讲得真好
穷小子cd - 2010-6-17 15:29:00
学习了!
鹰丶风少 - 2010-7-28 12:17:00
又看完一个:kaka9:
1
查看完整版本: 网马解密大讲堂——网马解密中级篇(Shellcode篇)