一.前置

做一些字符的收集 strings.exe .\Lab11-02.dll
image.png
这边也可以知道 dll利用 AppInit_DLLs 实现挂钩安装并且关联注册表SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
strings.exe .\Lab11-02.ini 看样子是个加密值 或者是 钥匙
image.png

1.这个恶意的DLL 导出了什么

静态分析 第一个函数 GetModuleFileNameA 检索模块并且加载当前进程
image.png
看到调用偏移量是 Installer +76
image.png
往下跟进入 到了installer() 函数里 知识点 是 rundll32.exe 模块 来启动 此dll
image.png
也就是说这边导出的是 installer 启动命令是 rundll32.exe Lab11-02.dll,installer
使用静态分析就不做动调

2.使用rundll32.exe 安装这个恶意代码后,发生了什么?恶意代码的驻留?

在刚才跟进 偏移位是+76 更进函数是 CopyFileA() 函数中的属性
image.png
安装后会把文件拷贝在系统目录
运行后根据上面注册表的自信会是
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
C:\Windows\System32\spoolvxx32.dll
在系统system32目录文件spoolvxx32.dll,在注册表AppInit_DLLs里添加了这个dll
image.png
安装这个dll ini文件也得放在 C:\Windows\System32\ 这个下面
驻留方式 看到恶意函数AppInit_DLLs
https://learn.microsoft.com/zh-cn/windows/win32/dlls/secure-boot-and-appinit-dlls
AppInit_DLLs基础结构允许将自定义 DLL 加载到每个交互式应用程序的地址空间中,从而提供了一种简单的方法来挂钩系统 API。 应用程序和恶意软件都使用 AppInit DLL 的基本原因相同,即挂钩 API;加载自定义 DLL 后,它可以挂钩已知的系统 API 并实现备用功能。 只有一小部分新式合法应用程序使用此机制来加载 DLL,而大量恶意软件使用此机制来破坏系统。 即使是合法的AppInit_DLLs也会无意中导致系统死锁和性能问题,因此不建议使用AppInit_DLLs
官方回答 也就是说 关于他的全局调用都会被注入,根据学术来看 关于user32.dll 的程序都会被添加
window 8 后可禁用 可能对内网win7伤害大
image.png
image.png
也就是上面分析出来这一串 C:\Windows\System32\poolvxx32.dll
image.png
这是注册表的创建值也就是上面的
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
驻留方式是 通过在系统目录创建文件 poolvxx32.dll 对文件进行复制 关联进所添加的 AppInit_DLLs 注册表实现永久驻留

3.恶意代码的采用的用户状态Rookit技术是什么?

从这个部分就使用了 HOOK 技术 可以看到函数 CreateFuLeA 可以用来HOOK如何分辨 HOOK 技术 后面会写一篇HOOK 常用的函数和手法
image.png
createFileA 函数 第一个if ReadFile()下 也就是说这边会先读取文件ini 到缓存区 成功的话第二个 就是 对其进行解密
这边的操作可以看CLoseHarndle 关闭打开的对象句柄 会实现一个跳转 尝试跟进去看
image.png
image.png
是一个inline hook 技术 前面收集到的exe 字符串 都会在这里被调用 sub_100014B6函数首先获取当前进程名
GetModuleFileNameAimage.png
image.png
会对字符串大写化 https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/toupper-toupper-towupper-toupper-l-towupper-l?view=msvc-170
image.png
EXE 大写化 分析EXE
image.png
分析上面的jz 判断 跟进其中 看样子是一个暂停进程
image.png
image.png
HOOK wsock32.dll的send函数

4.HOOK代码做了什么?

跟进被hook的函数 send 的 sub_1000113D
代码大概是 RcptTo_2 复制进缓冲区 在根据上面的 ini 大概是把 ini数据解密后复制进缓冲区
image.png
HOOK 做了send 函数 方法 来进行 添加 RCPT TO 2 : INI 文件中的解密数据

5.那些进程执行了恶意攻击,为什么?

针对THEBAT.exe、OUTLOOK.exe、MSIMN.exe进程进行攻击 这次劫持目标是电子邮箱客户端程序

6.ini文件的意义是什么?

ini里面文件进行解密
image.png
image.png
写出解密脚本

1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char *a1 = "CHMMXaL@MV@SD@O@MXRHRCNNJBNL";
for (int i = 0; i < strlen(a1); ++i) {
cout << char(a1[i] ^ (666 * 0x32 >> 4));
}
cout << endl;
}

dll -> system32\spoolvxx32.dll -> 设置注册表实现永久驻留 appinit_Dll->user32 >>> spoolvxx32.dll -> hook wsock32.dll >>>>>> billy@malwareanalysisbook.com