恶意代码分析实战06-01

本文介绍了一段shellcode的详细分析过程,包括注入的目标进程、内存位置、编码方式、导入的函数、通信目标及最终行为。该shellcode通过复杂的手段创建了一个隐蔽的浏览器进程并提供了远程shell。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次实验我们将会分析lab19-2文件。先来看看要求解答的问题
Q1.这段shellcode被注入到什么进程中?
Q2.这段shellcode位于哪里?
Q3.这段shellcode是如何被编码的?
Q4.这段shellcode手动导入了哪个函数?
Q5.这段shellcode和什么网络主机进行通信?
Q6.这段shellcode做了什么?
首先载入IDA
在这里插入图片描述

第一处call是调用sub_4010b0,跟入该函数
在这里插入图片描述

从其关键函数调用可知,这个函数为当前进程提供合适的权限,使其允许调试
返回main
在这里插入图片描述

接着是调用sub_401000,跟入
在这里插入图片描述

上图字符串指示的注册表值是系统的默认浏览器
在这里插入图片描述

结合之后的函数调用可知,sub_401000用于从注册表中获得默认浏览器的路径
返回main,继续分析
在这里插入图片描述

跟入sub_401180
在这里插入图片描述

会创建一个新的进程,其sShowWindows值为0,说明它的窗口是隐藏的
那么这是创建了什么进程呢?
我们回到main之后,看看这个函数的地址在这里插入图片描述

地址是4013de
我们将其载入IDA然后在这里下断点,然后执行过来
在这里插入图片描述

如上图左上角所示,这里的eax即在调用这个函数时传入的参数,这里可以看到这个参数是ie浏览器的地址,也就是说这个函数会使用这个路径来创建进程
Q1.这段shellcode被注入到什么进程中?
A1.这个程序进程注入默认浏览器Internet Explorer中。

回到IDA,在main中继续往下分析
在这里插入图片描述

unk_407030就是shellcode缓冲区的位置(我们接下来先分析sub_401230后就会知道为什么说这里是shellcode缓冲区的位置了)
跟入sub_401230
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

从其关键的函数调用不难看出其作用就是用于注入shellcode
至此,我们大概就知道恶意代码实现了如下的操作:
通过读取注册表HKCR\http\shell\poen\command启动默认的浏览器,浏览器作为一个新进程被创建,其StartupInfo.wShowWindow被设置为SW_HIDE,所以浏览器进程对用户界面隐藏。

Q2.这段shellcode位于哪里?
A2. shellcode 的缓存区位于0x407030位置。
在这里插入图片描述
在这里插入图片描述

我们在407030处光标定位,然后按c键转为代码,如下所示
v
从上图可以看到,一开始通过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导入了哪些函数?
A5.导入了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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值