自 2021 年 9 月初 Qakbot 木马回归以来,尤其是通过SquirrelWaffle恶意垃圾邮件活动,我们从 Trustwave DFIR 和全球威胁运营团队收到了一些要分析的 Qakbot 样本。
Qakbot 是一种银行木马,自 2007 年以来一直存在。它一直在不断发展,引入了新功能,例如横向移动、泄露电子邮件和浏览器数据的能力,以及安装其他恶意软件的能力。一项新技能是将加密数据插入注册表。我们从 Trustwave 的 DFIR 和全球威胁运营团队收到的请求之一是让我们解密 Qakbot 创建的注册表数据。我们适时地投入到这项任务中,并且,因为它有点有趣,所以决定写博客。
图 1. Qakbot 创建的加密注册表项示例
那里只有一些关于 Qakbot 的详细分析,但在其中我们并没有真正找到有关如何解密这些注册表项的任何技术细节。在本博客中,我们将尽最大努力解释该技巧,并希望这对恶意软件逆向者有所帮助。
对于那些没有时间阅读整个博客的人,我们准备了下面的图表来显示解密流程:
图 2. Qakbot 的注册表数据解密流程。
最初,Qakbot 从受感染主机收集系统信息,包括:
让我们以我们被感染机器的信息为例:
计算机名称:DESKTOP-4NQG47A(转换为大写)卷序列号:2797280851(从十六进制序列号 A6BB1E53 转换)用户帐户名称:SECRET ACCOUNT(转换为大写) |
---|
然后将此信息连接起来形成密码:
DESKTOP-4NQG47A2797280851秘密账户 |
---|
然后使用修改后的 CRC32_shift4 算法对密码进行哈希处理。
图 3. 修改后的 CRC32 shift4 函数。
在这个例子中产生的散列是 AC E9 B5 8D - 我们称之为 PASSWORDHASH。
PASSWORD = "DESKTOP-4NQG47A2797280851秘密帐户"mit_crc32_shift4(PASSWORD) // 返回值“\xac\xe9\xb5\x8d”密码哈希 = “\xac\xe9\xb5\x8d” |
---|
Qakbot 恶意软件创建的每个注册表项值名称都是由一字节 ID 定义的配置字段。此 ID 还用于对 PASSWORDHASH 进行加盐。
连接 ID 和 PASSWORDHASH,然后用 SHA1 算法对它们进行散列,将得到一个派生密钥,我们将其称为 DERIVED_KEY。
SHA1(<1 bytes ID> + <3 byte \x00 padding> + <4 bytesCRC32 Hash KEY_B>) = DERIVED_KEY |
---|
举个例子:ID = 0Eh 和 PASSWORDHASH = \xac\xe9\xb5\x8d
SHA1(“\x0e” + ”\x00\x00\x00” + “\xac\xe9\xb5\x8d”) = \x7a\x2b\x30\xb1\xaf\x46\xeb\xc0\xe3\xc7\xf6 \x9b\xf1\x97\x2b\x05\xd5\xca\x06\x8f |
---|
SHA1 哈希结果将用作派生密钥,以使用 RC4 算法解密与 ID 相关的注册表项值数据。
为了确定它将解密哪个特定的注册表键值名称,将 ID 和 DERIVED_KEY 连接在一起并使用 CRC32_shift4 算法进行散列以获得注册表值名称。
mit_crc32_shift4("\x0e\x00\x00\x00" + "\xac\xe9\xb5\x8d") -> "\x6a\xae\x40\xdd" |
---|
下面的屏幕截图显示了可以使用 DERIVED_KEY 使用 RC4 算法解密的特定注册表项值名称 (6aae40dd):
\x7a\x2b\x30\xb1\xaf\x46\xeb\xc0\xe3\xc7\xf6\x9b\xf1\x97\x2b\x05\xd5\xca\x06\x8f |
---|
应用 RC4 算法从值名称“6aae40dd”中解密注册表键值数据,揭示了包含恶意软件安装时间戳的配置。
6aae40dd id=14 (0x0e) 03 01 16 00 00 00 35 3b 31 3b 30 7c 33 3b 32 31 | ......5;1;0|3;2 3b 31 36 33 38 37 35 32 30 35 35 00 8e 53 03 0b | 1;1638752055..S. df e5 f0 2d bf 42 cb 70 bf 1d 62 d1 d8 ec 1a c5 | ....-.Bp.b.... a8 f4 cf d8 e1 c4 bd 52 18 d6 68 a6 e2 95 03 f8 | ........R..h.... c8 c9 a3 41 7a ff 6b 69 11 2b 1b 9b 60 d4 19 49 | ....Az.ki.+..`.. 00 eb f5 7f 08 24 86 c0 10 6d 55 d7 bd ce 2c 23 | I.....$...mU..., e9 d7 91 b1 | #.... |
---|
我们编写了一个解密工具来帮助这个过程,它可以在我们的Github 帐户存储库中找到。该工具可以帮助恶意软件逆向者和安全研究人员解密 Qakbot 的注册表项。
用法:qakbot-registry-decrypt.py [选项] 选项: -h,--help 显示此帮助消息并退出 -r REGISTRY_PATH,--regpath=REGISTRY_PATH 存储 Qakbot 加密数据的注册表路径。 (例如 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Efwramsn') -p PASSWORD, --password=PASSWORD 密码(可选)
示例用法:
图 4. Qakbot 注册表解密工具
Qakbot DLL
MD5:90aac91ba4336bdb252dee699d32d78d MD5:a53c130fe120348b9bfa188ab93b6ad4
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。