概述
QQ 1274510382
Wechat JNZ_aming
商业联盟 QQ群538250800
技术搞事 QQ群599020441
解决方案 QQ群152889761
加入我们 QQ群649347320
共享学习 QQ群674240731
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。
叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)
纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!
#本文为广告系统自动投放广告
# 如有侵权 删改 请速速联系我们
学习如何分析shellcode。
将IDA和Ollydbg配合检查恶意代码是如何实现将shellcode注入浏览器进程的,
当我们在恶意代码中找到shellcode后
还需要进一步分析shell是如何被编码的,
并通过winhex的配合将shellcode手动提取出来,
之后使用scetest进行模拟,
之后为了更全面分析shellcode导入的函数,又使用了scdbg辅助分析。
恶意代码分析实战
本科/专科信息安全专业
计算机网络、操作系统
预备知识
1.IDA Pro
IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,
交叉Windows或Linux WinCE MacOS平台主机来分析程序,
被公认为最好的花钱可以买到的逆向工程利器。
IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。
它支持数十种CPU指令集其中包括Intelx86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。
查看伪代码,汇编代码
2.Ollydbg
一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,
将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,
己代替SoftICE成为当今最为流行的调试解密工具了。
同时还支持插件扩展功能,是目前最强大的调试工具。
基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug。
实验环境
服务器:Windows 7,kali
辅助工具:IDA,ollydbg,winhex,scdbg
Q1.这段shellcode被注入到什么进程中?
Q2.这段shellcode位于哪里?
Q3.这段shellcode是如何被编码的?
Q4.这段shellcode手动导入了哪个函数?
Q5.这段shellcode和什么网络主机进行通信?
Q6.这段shellcode做了什么?
首先载入IDA
第一处call是调用sub_4010b0,跟入该函数
从其关键函数调用可知,这个函数为当前进程提供合适的权限,使其允许调试
返回main
接着是调用sub_401000,跟入
上图字符串指示的注册表值是系统的默认浏览器
-注册表相关 操作函数
结合之后的函数调用可知,sub_401000用于从注册表中获得默认浏览器的路径
返回main,继续分析
跟入sub_401180
会创建一个新的进程,其wShowWindows值为0,说明它的窗口是隐藏的
那么这是创建了什么进程呢?
我们回到main之后,看看这个函数的地址
地址是4013de
我们将其载入OD然后在这里下断点,然后执行过来
如上图 所示,
这里的eax即在调用这个函数时传入的参数,
这里可以看到这个参数是ie浏览器的地址,也就是说这个函数会使用这个路径来创建进程
Q1.这段shellcode被注入到什么进程中?
A1.这个程序进程注入默认浏览器Internet Explorer中。
回到IDA,在main中继续往下分析
unk_407030就是shellcode缓冲区的位置
(我们接下来先分析sub_401230后就会知道为什么说这里是shellcode缓冲区的位置了)
跟入sub_401230
从其关键 -堆栈-的函数调用不难看出其作用就是用于注入shellcode
至此,我们大概就知道恶意代码实现了如下的操作:
通过读取注册表HKCRhttpshellpoencommand启动默认的浏览器,
浏览器作为一个新进程被创建,
其StartupInfo.wShowWindow被设置为SW_HIDE,所以浏览器进程对用户界面隐藏。
Q2.这段shellcode位于哪里?
A2. shellcode 的缓存区位于0x407030位置。
我们在407030处光标定位,然后按c键转为代码,如下所示
从上图可以看到,
一开始通过jmp来到407043,
而在407043处是调用了loc_407032。
这里需要注意call指令会先将下一地址入栈,
也就是会将407048入栈,
在loc_407032中先是pop edi,见407048传给了edi,
在407039将0xe7赋给al,
在40703b看到会将
0xe7与edi地址中所保存的内容进行异或,
一共是进行了0x18f次。这里就是一个解密的过程
Q3.这段shellcode是如何被编码的?
A3. shellcode 与字节0xe7异或。
我们把这段shellcode提取出来
首先Edit–>Segments–>Rebase Program,查看IDA基址
那么我们可知shellcode偏移位于7030,一直到71d7
接着使用winhex打开文件,选中对应区域
然后复制
再新建一个文件
File->new
将数据粘贴进去
将这段区域的数据保存为19-2.bin文件,在kali上运行
使用sectest模拟,查看结果
sctest -Svs 1000000 < 19-2.bin > sectest-lab19-2.txt
不过这里显示的其实不全面,可以在win上使用scdbg辅助分析
可以看到导入了一些函数,回答第四个问题
Q4.这段shellcode导入了哪些函数?
A4.导入了LoadLibrary,WSAStartup,WSASocket,Connect,CreateProcess,Terminate
在kali的结果可以看到
所以就可以回答第5个问题
Q5.这段shellcode和什么网络主机进行通信?
A5. shellcode 在端口13330上连接IP地址192. 168.200.2。
同样在kali的结果可以看到
函数原型中lpCommandLine指向一个以NULL结尾的字符串,
该字符串指定要执行的命令行,
这里是cmd,也就是说这里会创建一个cmd.exe程序
所以结合第5个问题的答案,我们可以回答第6个问题
Q6.这段shellcode做了什么?
A6.这个shellcode提供了一个远程shell (cmd.exe)
配套学习资源
1.《恶意代码分析实战》
最后
以上就是顺心奇迹为你收集整理的恶意代码分析实战——shellcode分析的全部内容,希望文章能够帮你解决恶意代码分析实战——shellcode分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复