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

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

作者: 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