标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-3153]   作者: 小螺号 发表于: [2022-08-04]

本文共 [248] 位读者顶过

https://blog.malwarebytes.com/threat-intelligence/2022/05/how-the-saitama-backdoor-uses-dns-tunnelling/

Saitama 后门如何使用 DNS 隧道

可以理解的是,许多网络安全研究和评论都集中在不被发现的情况下入侵计算机的行为。但威胁参与者通常也同样关心在未被发现的情况下入侵计算机_的行为。_ [出自:jiwo.org]

以监视或间谍活动为目的的恶意软件需要在不被发现的情况下运行,但它也有可能需要泄露数据或与其指挥和控制基础设施收发消息,这两者行为都可能会暴露给分析人员。

恶意软件试图避免检测到的隐秘通信技术之一是 DNS 隧道,它将消息隐藏在看似普通的 DNS 请求中。 Malwarebytes 威胁情报团队最近发表了关于伊朗高级持续性威胁 (APT) 组织 APT34对约旦政府的攻击的研究,该组织使用了自己的创新版本的这种方法。

攻击中的有效载荷是一个名为 Saitama 的后门,这是一个使用 DNS 进行通信的后门我们的原始文章对Saitama 的运作进行了深入的分析,非常值得一读。 在这里,我们将扩展 Saitama 用来隐藏其 DNS 的技巧。

Saitama 的DNS隧道

DNS 是 Internet 的"address book",它允许计算机查找人类可读的域名,例如malwarebytes.com.,并找到它们的 IP 地址,例如54.192.137.126

DNS 信息不保存在单个数据库中。相反,它是分布式的,每个域都有负责回应有关它们的请求的name servers。威胁参与者可以使用 DNS 进行通信,方法是让他们的恶意软件进行 DNS 查找,并由他们控制的name servers回应。 DNS 非常重要,几乎从未被公司防火墙阻止,而且公司网络上的大量 DNS 流量为恶意通信提供了充足的掩护。 Saitama 的消息受到两个重要问题的影响:DNS 流量在很大程度上仍未加密,因此消息必须被隐藏,因此其目的不明显;并且 DNS 记录通常被大量缓存,因此相同的消息必须看起来不同才能到达 APT 控制的name servers。

Saitama 的讯息

在对约旦外交部的攻击中,埼玉的域名查询使用了以下语法: domain = message , counter '.' root domain 根域始终是可互换使用uber-asia.com的asiaworldremit.com或之一。joexpediagroup.com 每个查找的子域部分由一个消息和一个计数器组成。计数器用于对消息进行编码,并在每次查找时发送到命令和控制 (C2) 服务器,以便 C2 可以对消息进行解码。 可以发送四种类型的消息:

1.通信

第一次执行时,Saitama 通过在0到46655之间选择一个随机数赋值给计数器。在这个例子中,我们随机生成的计数器是7805。 从该计数器派生的 DNS 是: nbn4vxanrj.joexpediagroup.com 计数器本身使用name servers共享的硬编码 base36 字母表进行编码。在 base36 中,每个数字由 36 个字符 0-9 和 AZ 之一表示。在标准 base36 中,字母7805是写成60t( 6x 1296+ 0x 36+ 30 x 1)。但是,在Saitama 的自定义字母表7805中是nrj.

该计数器还用于生成自定义字母表,该字母表将用于使用简单替换对消息进行编码。发送的第一条消息是命令0,base36 编码到a,它告诉服务器它有一个新的受害者,在字符串前面加上haruto 使用计数器生成的字母表进行简单替换即可生成消息nbn4vxa 

C2 名称服务器使用共享的硬编码字母对计数器进行解码,然后使用该计数器导出用于编码的字母aharuto。 它使用包含Saitama 在未来通信中使用的 ID 的 IP 地址响应联系请求。前三个八位字节可以是任何东西,Saitama 忽略它们。最后一个八位字节包含 ID。在我们的示例中,我们将使用 ID 203: 75.99.87.203

2.请求命令

现在它有一个来自 C2 服务器的 ID,Saitama 将它的计数器递增7806并表示它已准备好接收如下命令:计数器用于生成一个新的自定义 alaphabet,它将 ID 编码203为ao . 计数器本身使用恶意软件的硬编码 base36 字母表 to 进行编码nrc ,并随机选择 Saitama 的三个根域之一,结果是: aonrc.uber-asia.com C2 服务器以 Saitama 预期的有效负载大小响应请求。Saitama 将使用它来确定需要发出多少请求才能检索完整的有效负载。 C2 响应的 IP 地址的第一个八位字节是 129 到 255 之间的任意数字,而第二、第三和第四个八位字节表示有效负载大小的第一、第二和第三个字节。在这种情况下,有效载荷将是四个字节。 129.0 .0 .4

3. 获取命令

现在它知道它将接收到的有效负载的大小,Saitama 向服务器发出一个或多个 RECEIVE 请求以获取其指令。它每次将其计数器递增一,从 开始7807。在此步骤中可能需要多个请求,因为某些命令名称需要超过 IP 地址可以携带的四个字节的信息。在这种情况下,它被告知要检索四个字节的信息,因此它只需要发出一个请求。 来自Saitama 的消息由三部分组成:数字2,表示RECEIVE命令;身份证203;和一个偏移量,指示需要有效载荷的哪一部分。这些都是单独的 base36 编码并连接在一起。使用从计数器派生的自定义 base36 字母对生成的字符串进行编码7807,从而为我们提供消息k7myyy 。 计数器使用硬编码字母表编码,nr6 ,并随机选择Saitama 的三个根域之一,给我们: k7myyynr6.asiaworldremit.com C2 使用两位整数指示它想要运行的函数。它可以要求 Saitama 运行五个不同功能中的任何一个:

C2 埼玉
43 Static
70 Cmd
71 CompressedCmd
95 File
96 CompressedFile

埼玉功能 在这种情况下,C2 想要ver使用 Saitama 的Cmd函数运行命令。(在之前的请求中,C2 表示它将向 Saitama 发送一个四字节的有效载荷:一个字节用于70,三个字节用于ver。) 在其响应中,C2 使用 IP 地址的第一个八位字节来指示它想要运行的函数70,然后使用剩余的三个八位字节来拼写命令名称ver,使用小写字符"v"、"e"的ASCII值"和"r": 70 .118 .101 .114

4.运行命令

Saitama 运行它已经给出的命令,并在一个或多个 DNS 请求中将结果输出发送到 C2 服务器。计数器每次加一,从7808我们的示例开始。在此步骤中可能需要多个请求,因为某些命令名称需要超过 IP 地址可以携带的四个字节。 p6yqqqqp0b67gcj5c2r3gn3l9epztnrb.asiaworldremit.com 计数器使用硬编码字母表编码,nrb ,并随机选择Saitama 的三个根域之一。 在这种情况下,消息由五部分组成: 数字 2,表示 RECEIVE 命令;身份证203;以及指示正在发送响应的哪一部分的偏移量;缓冲区的大小;和一个十二字节的输出块。这些都是单独的 base36 编码并连接在一起。使用从计数器派生的自定义 base36 字母对生成的字符串进行编码7808,从而为我们提供消息p6yqqqqp0b67gcj5c2r3gn3l9epzt

IOCs

Maldoc

Confirmation Receive Document.xls 26884f872f4fae13da21fa2a24c24e963ee1eb66da47e270246d6d9dc7204c2b

Saitama backdoor

update.exe e0872958b8d3824089e5e1cfab03d9d98d22b9bcb294463818d721380075a52d

C2s

uber-asia.com asiaworldremit.com joexpediagroup.com

评论

暂无
发表评论
 返回顶部 
热度(248)
 关注微信