Dridex 是目前活跃的技术最先进的银行木马之一。该恶意软件的主要目标是从受害者那里窃取银行凭证。Dridex 自 2014 年以来一直存在,并在持续不断的更新,这些更新帮助该恶意软件进化并变得越来越强大。
样本信息:
MD5 | 107a3bef0da9ab2b42e3e0f9f843093b |
---|
SHA1 | fc5d6fc2cbb1d95864f5ed26b50e4ebe68333eab |
样本概述:
该样本外层是一个 loader,最终的 payload 是一个 Dridex 木马。
运行流程:
详细分析:
1,解密并展开自身携带的 payload (PE1.exe) 与 shellcode。
执行 shellcode,shellcode 及是自身的 sub_1016DB0 函数。
2,shellcode 将当前进程映像替换为 PE1.exe。
首先修改当前进程映像基址处的内存属性,然后使用展开后的 PE1.exe 进行替换。
3,PE1.exe 即是 Dridex 木马,其使用的 API 的名称和字符串均被加密并分块存储,在使用时通过索引与解密函数动态获取,且 API 在第一次调用时获取地址并存储在地址列表中。
函数名存储位置,例:
字符串存储位置,例:
解密方式相同均为与 key 按字节异或,解密后即可获得函数名与字符串信息。
例:
函数地址获取。
4,PE1.exe 运行后首先获得操作系统版本和用户权限信息。
获得用户权限信息。
5,如果权限低于 SECURITY_MANDATORY_HIGH_RID 且系统版本高于 Windows Vista 则利用 Windows 垫片机制和白名单进程进行权限提升。
进行提权时首先在 %LOCALAPPDATA% 目录或者 %LOCALAPPDATA%Low 目录写入自身的微修改副本 edg.*\.exe。
修改位置为 IMAGE_NT_HEADERS + 8 。
然后在 %LOCALAPPDATA%Low 目录释放垫片数据库文件 .*\.sdb 和 .*\.bat 文件。
使用 python-sdb 解析 .*\.sdb 文件得到的内容如下:
.*\.bat 文件内容如下:
然后运行 sdbinst.exe 注册 %LOCALAPPDATA%Low\.*\.sdb 文件。
注册完成后可在 ”卸载或更改程序” 中看到已注册的垫片名称。
最后运行 iscsicli.exe 成功执行了 %LOCALAPPDATA%Low\.*\.bat 文件,完成提权。
完整进程树:
在提权之前会先创建一个线程用于显示可能会出现的安全桌面。
6,检测用户是否安装 ESET 和 AVG 防病毒软件,如果安装则删除其更新目录 (updfiles) 和其中的文件。
检测方式是通过访问以下注册表。
HKEY_LOCAL_MACHINE/SOFTWARE/ESET/ESET Security/CurrentVersion/Info
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/Avg/SystemValues
其中在清空 ESET 防病毒软件更新目录中的文件后会在其中创建 upd.ver 和 lastupd.ver 目录,目的可能是防止用户修复该软件。
7,查找并解密 .sdata 节,获得配置信息。
解密后的配置信息如下,可见其中包括 botnet id、服务器地址列表。
8,获得主机信息、生成用户 ID、与配置信息 server_list 标签中的 C2 通信。
收集的信息包括主机名、操作系统版本,以安装软件的信息,按如下格式组织。
用户 ID 由主机名、用户名及其 hash 组成,格式为 [主机名]_hash。
已安装软件信息在以下注册表处获得。
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall
9,与 C2 通信成功后从 C2 下载后续模块到本地执行。
数据标签判断,如果是相应标签则将内容写入当前文件夹的临时文件中。
使用 rundll32.exe 加载运行相应模块。