美文网首页
恶意代码分析实战 第五章 实验部分

恶意代码分析实战 第五章 实验部分

作者: doinb1517 | 来源:发表于2022-01-02 21:43 被阅读0次

Q

1.DllMain的地址是什么?

2.使用Imports窗口并浏览到gethostbyname,导入函数定位到什么地址?

3.有多少函数调用了gethostbyname?

4.将精力集中在位于0x1000757处的对gethostbyname的调用,你能找出哪个DNS请求将被触发吗?

5.IDA Pro识别了在0x16001656处的子过程中的多少个局部变量?

6.IDA Pro识别了在0x16001656处的子过程中的多少个参数?

7.使用Strings窗口,来在反汇编中定位字符串\cmd.exe/c。它位于哪?

8.在引用\cmd.exe/c的代码所在的区域发生了什么?

9.在同样的区域,在0x100101C8处,看起来好像dword_1008E5C4是一个全局变量,它帮助决定走哪条路径。那恶意代码是如何设置dword_1008E5C4的呢?(提示:使用dword_1008E5C4的交叉引用。)

10.在位于0x1000FF58处的子过程中的几百行指令中,一系列使用memcmp来比较字符串的比较如果对rootwork的字符串比较是成功的(当memcmp返回0),会发生什么?

11.PSLIST导出函数做了什么?

12.使用图模式来绘制出对sub_10004E79的交叉引用图。当进入这个函数时,哪个API函数可能被调用?仅仅基于这些API函数,你会如何重命名这个函数?

13.DllMain直接调用了多少个 Windows api?多少个在深度为2时被调用?

14.在0x10001358处,有一个对Sleep(一个使用一个包含要睡眠的毫秒数的参数的API函数)的调用。顺着代码向后看,如果这段代码执行,这个程序会睡眠多久?

15.在0x10001701处是一个对 socket的调用。它的3个参数是什么?

16.使用MSDN页面的 socket和 IDA Pro中的命名符号常量,你能使参数更加有意义吗?在你应用了修改以后,参数是什么?

17.搜索in指令( opcode 0xED)的使用。这个指令和一个魔术字符串VMXh用来进行 Vmware检测。这在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能发现进一步检测Vmware的证据吗?

18.将你的光标跳转到0x1001D988处,你发现了什么?

19.如果你安装了 IDA Python插件(包括 IDA Pro的商业版本的插件),运行Lab0501py,一个本书中随恶意代码提供的 IDA Pro Python脚本,(确定光标是在0x1001D988处。)在你运行这个脚本后发生了什么?

20.将光标放在同一位置,你如何将这个数据转成一个单一的ASCI字符串?

21.使用一个文本编辑器打开这个脚本。它是如何工作的?

A

1、入口点地址1000D02E

2、100163CC

3、ctrl + X查看交叉引用,或者如下方式查看,共18个函数

cross.png

4、直接g跳到指定位置,看函数前面的参数,参数eax是[This is RDO]pics.praticalmalwareanalysis.com,这是一个指针,后面add eax,0Dh 加上了13位的偏移,所以0x10001757位置处函数的参数是pics.praticalmalwareanalysis.com,请求的是这个域名。

param.png

5、局部参数通常以var_开头,偏移值为负值,看红色部分;参数的偏移为正,看蓝色部分。

args.png

7、位于0x10095B34

8、查看\cmd.exe/c的交叉引用,定位到sub_1000FF58函数,这个函数的参数是SOCKET,是一个网络连接,还有很多字符串可以给出提示信息Encrypt Magic Number For This Remote Shell Session [0x%02x]\r\n。根据不同系统打开了命令行,接下来就是很多比较,这部分代码在图形模式下更容易看懂,quit,exit,cd,enmagic。所以这部分代码是一个远程shell,可以执行cmd。

01.png

9、X查看交叉引用,只有第一个地址是W类型的写入操作,跳转过去.

xref.png

dword_1008E5C4是eax的值,所以应该是sub_10003695函数的执行改变eax的,继续跟进。

1678.png

可以看到这个函数最终影响了al的值(eax的最低8位),实际上是确认系统是否是某个特定版本。

system_version.png

10、跳转到该位置,比较成功跟进红色箭头。跳转到sub_100052A2。继续跟进该函数。该函数查询注册表项SOFTWARE\Microsoft\Windows\CurrentVersion

robot.png robot2.png robot3.png

获取WorkTimeWorkTimes的键值。然后将格式化的字符串调用sub_100038EE发送。

11、

在导出表中查看PSLIST函数,result是关于系统版本的信息,根据不同的系统版本进行跳转。首先跟进函数sub_1000664C

pslist.png

该函数获取系统内所有进程的快照。获取失败就获取相关错误信息,socket传回,重点关注红框内代码逻辑即可。

sub664c.png

这部分收集了一些进程信息,并通过Socket发送。

processproce.png

12、直接查看交叉引用。

4e792.png 4e79.png

编辑函数修改函数名

edit.png

13、使用以下方式查看引用 ,设置引用的深度为1即可。

xrefs.png

14、关注以下部分代码,[This is CTI]30此字符串偏移13位,在转为int,乘1000,将单位从毫秒转为秒。将30作为sleep的参数。所以代码在此部分休眠30s。

imul.png

15、G跳转到位置,三个参数是2,1,6。这里需要注意参数的压栈顺序是从右到左的。

15.png

16、可以设置符号常量,感觉其实原始参数旁边的注释已经可以帮助我们理解参数含义了。

const.png constant.png

17、可以看到564D5868h,这就是小端存储的VMXh,也是检测恶意代码有反虚拟机行为的特征码。

搜索指令可以使用search text,也可以使用Search -> Sequence of Bytes ,搜索in指令的opcode(ED)。

参考链接

https://www.cnblogs.com/FallenHWer/p/3409620.html
vm.png vm1.png

可以看到这个函数调用之后的比较中也出现了虚拟机相关的字符串,按时了这个函数有反虚拟机的功能。

vm2.png

18、发现了一个字符串但是好像乱码不可读。

988.png

19、根据提示运行脚本。File -> Script File

关于IDAPython可以参考:

https://wizardforcel.gitbooks.io/grey-hat-python/content/43.html

20、光标定位在1001D988位置,A可以转换位string

21、将从1001D988位置的数据到0x50偏移的数据都与0x55进行XOR操作。

相关文章

网友评论

      本文标题:恶意代码分析实战 第五章 实验部分

      本文链接:https://www.haomeiwen.com/subject/wadtcrtx.html