1272 字
6 分钟
恶意代码实战分析-Labs6
2025-10-19
统计加载中...

1. Lab 6-1#

在这个实验中, 你将分析在文件 Lab 06-01. exe 中发现的恶意代码。

1.1. 由 main 函数调用的唯一子过程中发现的主要代码结构是什么?#

唯一子过程调用 sub_401000 image.png 跟踪 sub_401000,通过 InternetGetConnectedState 函数获取连接状态,

InternetGetConnectedState 属于 wininet.dll 的 API; 返回 TRUE 表示“系统认为至少存在一个到 Internet 的连接”,返回 FALSE 则表示“系统认为没有可用的 Internet 连接”。

image.png 如果联网即 ConnectedState 不为 0,执行 sub_40105F;否则执行 sub_40105F

image.png

1.2. 位于 0x40105F 的子过程是什么?#

可见 sub_401282 之外包裹着 _stbuf 和 _ftbuf 函数,而 _stbuf 和 _ftbuf 本身就是用作 C 语言中写入文件时对文件的保护及刷新,

_stbuf (&File):给出写操作准备工作,可能包括:确保 FILE 有缓冲区(若没则分配/绑定)、为线程安全加锁、保存当前缓冲/状态标志,或者设置临时缓冲策略。 _ftbuf (saved, &File):写完后执行清理/恢复,可能包含:刷新缓冲、释放临时缓冲区、解除锁、恢复之前的状态并返回写入结果。

image.png 传给 0x40105F 的字符串还携带着换行 \n, 因此判断其作用为记录未联网的日志。

image.png

1.3. 这个程序的目的是什么?#

查看 sub_40105F 交叉引用,发现后续还有修改进程的操作,故判断该程序主要行为为检测当前主机是否联网并写入网络联通情况日志,在退出时查看进程编辑进程。 可能:查看网络连通性并通过进程植入维持权限?以及不联网的情况下终结进程防杀箱?

image.png

2. Lab 6-2#

分析在文件 Lab 06-02. exe 中发现的恶意代码。

2.1. main 函数调用的第一个子过程执行了什么操作?#

image.png 跟踪 sub_40100,首先依旧通过 InternetGetConnectedState 判断系统的联网状况

image.png 再看一下子函数,作用与 Lab 6-1相同,向文件中写入传入的内容。

image.png 跟踪传入的参数,可见为明显用作日志的字符。

image.png

2.2. 位于 0x40117F 的子过程是什么?#

同上题,向文件中写入传入的内容。 image.png

2.3. 被 main 函数调用的第二个子过程做了什么?#

设置 UA 头为 Internet Explorer 7.5/pma,并请求 http://www.practicalmalwareanalysis.com,解析返回的句柄 hfile,将解析出来的数据存至 buffer 中, 并跳转 loc_4010E5 函数

image.png loc_4010E5 用于判断 buffer 的的前四个内容是否为 <!--,如果是返回 buffer 的第五个值

image.png

2.4. 在这个子过程中使用了什么类型的代码结构?#

嵌套 if 语句

image.png

2.5. 在这个程序中有任何基于网络的指示吗?#

  1. User-Agent 为 Internet Explorer 7.5/pma
  2. Host 为 http://www.practicalmalwareanalysis.com

2.6. 这个恶意代码的目的是什么?#

  1. 设置 UA 头为 Internet Explorer 7.5/pma
  2. 请求 http://www.practicalmalwareanalysis.com
  3. 解析返回的句柄 hfile,将解析出来的数据存至 buffer 中
  4. loc_4010E5 判断 buffer 的的前四个内容是否为 <!--,如果是返回 buffer 的第五个值
  5. sub_40117F 处理命令 buffer[4]
  6. sleep 60000 毫秒

image.png

3. Lab 6-3#

在这个实验中, 我们会分析在文件 Lab 06-03. exe 中发现的恶意代码。

3.1. 比较在 main 函数与实验 6-2 的 main 函数的调用。从 main 中调用的新的函数是什么#

sub_401130

image.png

3.2. 这个新的函数使用的参数是什么?#

sub_401130 (v4, *argv);

  1. buffer[4]
  2. argv[0],多为程序本身的名字或路径

3.3. 这个函数包含的主要代码结构是什么?#

switch 语句

image.png

image.png

3.4. 这个函数能够做什么?#

使用switch 语句处理传入的指令 a-e image.png

image.png

image.png

  1. a 创建目录
  2. b 复制文件
  3. c 删除文件

image.png 4. d 将 C:\\Temp\\cc.exe 写入开机自启动

image.png 5. e 休眠 100000 毫秒
6. 其他选项,将这个错误命令记录到日志中

3.5. 在这个恶意代码中有什么本地特征吗?#

注册表存在 Software\Microsoft\Windows\CurrentVersion\Run\Malware 键, 键值为 C:\Temp\cc.exe

3.6. 这个恶意代码的目的是什么?#

权限维持自启动的远控。

4. Lab 6-4#

在这个实验中, 我们会分析在文件 Lab 06-04. exe 中发现的恶意代码。

4.1. 在实验 6-3 和 6-4 的 main 函数中的调用之间的区别是什么?#

由 if 结构变成了 for 循环

image.png

4.2. 什么新的代码结构已经被添加到 main 中?#

for 循环

4.3. 这个实验的解析 HTML 的函数和前面实验中的那些有什么区别?#

向解析 HTML 的函数 sub_401040 传入 for 循环的计数器

image.png 在原先的 User-Agent:Internet Explorer 7.50/pma%d 后拼接父函数 for 循环的计数器

image.png

4.4. 这个程序会运行多久? (假设它已经连接到互联网。)#

每次调用 loc_40127E 都会sleep 60000 毫秒

image.png 共调用 1440 次 loc_40127E ,共计 1440 * 60s = 1天

4.5. 在这个恶意代码中有什么新的基于网络的迹象吗?#

携带 Internet Explorer 7.50/pma%d 及拼接了父函数 for 循环的计数器的 User-Agent 访问 http://www.practicalmalwareanalysis.com/cc.htm

image.png

4.6. 这个恶意代码的目的是什么?#

权限维持自启动的远控。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

恶意代码实战分析-Labs6
https://blog.41an.com/posts/malware-analysis-6/
作者
Alan
发布于
2025-10-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时