Lab 6-4
静态分析
会动态生成Internet Explorer 7.50/pma%d
。
导入表
和Lab 06-03.exe中相同
1.在实验6-3和6-4的main函数中的调用之间的关系的区别是什么?
sub_401000:检查网络连接
sub_401040:解析HTML
sub_401150:switch语句
sub_4012B5:printf函数
2.什么新的代码结构已经被添加到main中?
for循环
局部变量var_C
用于循环计数。在1处赋值为0,在2处递增1,每次到了5就返回递增,因此这是一个循环结构。当var_C
大于或者等于3处的5A0h时,循环停止。
在调用函数sub_401040
之前,var_C
将被压入栈,循环到5之前会休眠一分钟,最后将计数器加1,因此持续1440分钟,24小时。
3.这个实验的解析HTML的函数和前面实验中的那些有什么区别?
sub_401000使用一个参数,使用格式化字符串来调用sprintf函数,使得传入的参数创建用于HTTP通信的User-Agent字段。
4.这个程序会运行多久?(假设它已经连接到互联网。)
1440分钟(24小时)
5.在这个恶意代码中有什么新的基于网络的迹象吗?
新的User-Agent。
Internet Explorer 7.50/pma%d
分析sub_401040
,arg_0
是唯一的参数,由于只有main
函数调用了sub_401040
函数,因此arg_0
始终是从main
函数传入的计数器var_C
。
在1处,arg_0
与一个格式化字符串以及一个目标地址一起被压入栈。
调用了sprintf
函数,后者创建一个字符串,并将其存储在目的缓冲区,即szAgent
。
2处,szAgent
被传给InternetOpenA
函数,每次计数器递增生成的User-Agent
会随之改变。这个机制可以被管理和监控web服务器的攻击者用于跟踪恶意代码运行时间。
6.这个恶意代码的目的是什么?
在6-3的基础上,运行24小时后会停止。
参考
1.斯科尔斯基, 哈尼克. 恶意代码分析实战[M]. 电子工业出版社, 2014.