前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解密 Qakbot 的加密注册表项

解密 Qakbot 的加密注册表项

作者头像
Khan安全团队
发布2022-01-17 14:15:07
8100
发布2022-01-17 14:15:07
举报
文章被收录于专栏:Khan安全团队

自 2021 年 9 月初 Qakbot 木马回归以来,尤其是通过SquirrelWaffle恶意垃圾邮件活动,我们从 Trustwave DFIR 和全球威胁运营团队收到了一些要分析的 Qakbot 样本。

Qakbot 是一种银行木马,自 2007 年以来一直存在。它一直在不断发展,引入了新功能,例如横向移动、泄露电子邮件和浏览器数据的能力,以及安装其他恶意软件的能力。一项新技能是将加密数据插入注册表。我们从 Trustwave 的 DFIR 和全球威胁运营团队收到的请求之一是让我们解密 Qakbot 创建的注册表数据。我们适时地投入到这项任务中,并且,因为它有点有趣,所以决定写博客。

图 1. Qakbot 创建的加密注册表项示例

那里只有一些关于 Qakbot 的详细分析,但在其中我们并没有真正找到有关如何解密这些注册表项的任何技术细节。在本博客中,我们将尽最大努力解释该技巧,并希望这对恶意软件逆向者有所帮助。

流动

对于那些没有时间阅读整个博客的人,我们准备了下面的图表来显示解密流程:

图 2. Qakbot 的注册表数据解密流程。

密钥生成

最初,Qakbot 从受感染主机收集系统信息,包括:

  1. 计算机名称(使用GetComputerNameW)
  2.  卷序列号(使用GetVolumeInformationW)
  3. 用户帐户名称(使用LookUpAccountSidW)

让我们以我们被感染机器的信息为例:

计算机名称: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”

配置 ID

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 流动
  • 密钥生成
  • 配置 ID
  • 解密注册表:
  • 解密工具:
  • 国际奥委会:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档