恶意代码分析实战Lab6


本次实验中的前两个程序在分析后发现是后两个程序的功能简化版,因此我们仅对后两个结构不同的实验程序进行分析

Lab06-03

首先分析main函数中调用的几个函数

(1)sub_401271

函数参数

函数细节

可以看到在调用前压入了字符串Success:xxx作为参数,在调用过程中又设置了缓冲区等,我们合理推断该函数为printf函数

(2)sub_401000

函数细节

发现函数在 call InternetGetConnectedState后,将结果与0进行比较,并且根据不同的返回结果print两个字符串,由此推断,该函数用于判断当前设备网络连接状态

(3)sub_401040

构建http请求

首先构造http请求,并尝试连接”http://www.practicalmalwareanalysis.com

判断前4字节是否相同

其次从该网址中下载512字节数据并判断数组首位4字节是否为**<!–**

返回值

如果是,便返回网页中的第五个字节。可以总结出该函数用于从远程网络连接中下载并判断数据

(4)sub_401130

函数的switch结构

通过图标结构可以得知该函数使用了switch结构,接下来我们依次分析各个case

‘a’:创建目录”C:\Temp”

‘b’:将lpExistingFileName中的文件资源copy到”C:\Temp\cc.exe”

‘c’:删除”C:\Temp\cc.exe”文件

‘d’:向注册表中写入键值对,将”C:\Temp\cc.exe”设置为自启动项,

‘e’:程序休眠100s

通过对这个switch结构的分析,我们可以了解这个函数的具体作用了——用于将远程获取的恶意程序拷贝到本地,并且设置为开机自启

至此我们的程序大体流程便分析完毕了。总结一下,这个程序的作用从连接远程,获取恶意程序,并且设置为开机自启,后续可能会进行远程连接等一系列控制操作

Lab06-04

该程序的大体功能与Lab06-03相似,不过多了一个循环结构,接下来我们对这两个程序间的不同进行具体分析

main函数流程图

由大体的流程图可以发现,在原先Lab06-03的流程走完以后,这里将会跳转回函数开头进行循环,下述为循环代码

循环代码

分析可得,此处将会循环1440次,又因为每次流程都会sleep60s,可以相乘得出此程序完整运行完需要一天

多出的参数

Agent每次不同

同时我们可以看到,原先的下载远程资源的函数多出了一个参数i,用于记录循环次数并且修改UserAgent的值,使得每次http请求从不同的Agent发出。

至此该次实验中的恶意程序已经分析完毕


文章作者: Yssx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yssx !
评论
  目录