时刻

Saitama后门如何使用DNS隧道

Saitama后门如何使用DNS隧道

埼玉后门简介

埼玉(Saitama) 后门是一种新发现的恶意软件的名称,在 .Net 中编码和编译。顾名思义,埼玉就像一个后门,该恶意软件以可执行文件的形式分发,名为“Saitama.Agent.exe”。后门允许其恶意操作员渗透目标系统,建立某种持久性,使其在每次计算机重新启动时都能运行,并从黑客拥有的 C2 服务器接收命令。


Saitama 允许访问 20 个远程命令,并使其操作员能够从目标系统中抓取信息,然后将其渗透回命令和控制服务器。
具有足够功能的后门允许黑客将更多恶意软件投放到受感染的系统上并安装各种其他恶意工具。假设后门还没有击键记录功能,那么这些范围可以从加密矿工到键盘记录器。


Saitama 后门是在恶意电子邮件活动中发现的,该活动使用办公室文件附件下载可执行有效负载。

正文

可以理解的是,很多网络安全研究和评论都集中在如何不被发现地闯入电脑的行为上。但是,威胁者往往也同样关注在不被发现的情况下闯出电脑的行为。

以监视或间谍为目的的恶意软件需要在不被发现的情况下运行,但它也有可能需要渗出数据或与其指挥和控制基础设施交换信息,这两种情况都可能向威胁猎手暴露其存在。

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


攻击中的有效载荷是一个名为Saitama的后门,一个使用DNS进行通信的有限状态机。我们的原创文章对Saitama的操作进行了教育性的深入研究,非常值得一读。


在这里,我们将扩展Saitama用来保持其DNS隧道的隐藏技巧。

埼玉的DNS隧道

DNS是互联网的 “地址簿”,允许计算机查询人类可读的域名,如malwarebytes.com,并找到其IP地址,如54.192.137.126。
DNS信息并不保存在一个单一的数据库中。相反,它是分布式的,每个域名都有名称服务器,负责回答有关它们的问题。黑客可以利用DNS进行通信,让他们的恶意软件进行DNS查询,并且由他们控制的服务器来响应。

DNS是如此重要,但它几乎从未被企业防火墙阻止,而企业网络上巨大的DNS流量为恶意通信提供了大量的掩护。

琦玉的信息是由两个重要的问题形成的。DNS流量在很大程度上仍未加密,因此信息必须被掩盖,以便其目的不明显;而且DNS记录通常被大量缓存,因此相同的信息必须看起来不同,才能到达APT控制的名称服务器。

埼玉的消息

在对约旦外交部的攻击中,Saitama的域名查询使用了以下语法。
域名=信息,计数器’.’根域名,根域名总是uber-asia.com, asiaworldremit.com或joexpediagroup.com中的一个,它们可以互换使用。


每个查询的子域名部分由一个信息和一个计数器组成。计数器用于对消息进行编码,并在每次查询时被发送到命令和控制(C2)服务器,以便C2能够解码消息。
可以发送四种类型的消息。

建立连接

第一次执行时,Saitama通过在0和46655之间选择一个随机数来启动其计数器。在这个例子中,我们随机生成的计数器是7805。
从该计数器得出的DNS查询是:
nbn4vxanrj.joexpediagroup.com

计数器本身是使用硬编码的base36字母来编码的,该字母是由名称服务器共享的。在base36中,每个数字由36个字符中的一个0-9和A-Z代表。在标准的base36中,字母7805被写成60t(6 x 1296 + 0 x 36 + 30 x 1)。然而,在琦玉的自定义字母表7805中是nrj。


计数器也被用来生成一个自定义的字母表,该字母表将被用来用简单的替换法对信息进行编码。发送回家的第一条信息是命令0,base36编码为a,它告诉服务器它有一个新的受害者,在字符串haruto的前面,使aharuto。
使用计数器生成的字母表进行简单的替换,得到的信息是nbn4vxa。

a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9
↓             ↓             ↓     ↓   ↓ ↓             n j 1 6 9 k p b h d 0 7 y i a 2 g 4 u x v 3 e s w f 5 8 r o c q t l z m

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

请求命令

现在它有了一个来自C2服务器的ID,琦玉把它的计数器增加到7806,并发出信号说它准备好接收一个命令,如下所示。计数器被用来生成一个新的自定义字母,它将ID 203编码为ao。计数器本身使用恶意软件的硬编码base36字母编码为nrc,并随机选择琦玉的三个根域之一,结果是。

aonrc.uber-asia.com
C2服务器用琦玉应该期望的有效载荷的大小来响应该请求。琦玉将利用这一点来确定它需要发出多少个请求来检索全部有效载荷。


C2响应的IP地址的第一个八位数是129和255之间的任何数字,而第二、第三和第四个八位数标志着有效载荷大小的第一、第二和第三字节。在这种情况下,有效载荷将是四个字节。
129.0.0.4

得到命令

现在它知道了它将收到的有效载荷的大小,Saitama向服务器发出一个或多个RECEIVE请求,以获得其指令。它每次都将其计数器增加1,从7807开始。在这个步骤中,可能需要多个请求,因为有些命令名称需要超过一个IP地址可以携带的四个字节的信息。在这种情况下,它被告知要检索四个字节的信息,所以它只需要发出一个请求。
埼玉的信息由三部分组成。数字2,表示RECEIVE命令;ID 203;和一个偏移量,表示需要哪一部分的有效载荷。这些都是单独进行base36编码并连接在一起的。由此产生的字符串使用从计数器7807衍生出来的自定义base36字母进行编码,给我们的信息是k7myyy。


计数器使用硬编码的字母表编码为nr6,并在埼玉的三个根域中随机选择一个,给我们提供了:k7myyynr6.asiaworldremit.com
C2使用两位数的整数表示它想运行的功能。它可以要求琦玉运行五个不同功能中的任何一个:

C2Saitama43Static70Cmd71CompressedCmd95File96CompressedFileSaitama函数


在这种情况下,C2想用Saitama的Cmd函数来运行命令ver。(在之前的请求中,C2表示它将向琦玉发送一个四字节的有效载荷。一个字节为70,三个字节为ver)


在它的响应中,C2使用IP地址的第一个八位数来表示它要运行的功能,70,然后剩下的三个八位数使用小写字母 “v”、”e “和 “r “的ASCII码位来拼出命令名称ver,70.118.101.114

运行命令

琦玉运行它被赋予的命令,并在一个或多个DNS请求中向C2服务器发送结果输出。计数器每次递增一个,在我们的例子中从7808开始。在这个步骤中可能需要多次请求,因为一些命令名称需要超过一个IP地址可以携带的四个字节。

计数器使用硬编码字母对nrb进行编码,并在埼玉的三个根域中随机选择一个。


在这种情况下,信息由五个部分组成。数字2,表示RECEIVE命令;ID 203;和一个偏移量,表示正在发送响应的哪一部分;缓冲区的大小;和一个12字节的输出块。这些都是单独进行base36编码并连接在一起的。由此产生的字符串使用从计数器7808衍生出来的自定义base36字母进行编码,给我们的信息是p6yqqqqp0b67gcj5c2r3gn3l9epzt。

检测

Malwarebytes的客户通过我们的Anti-Exploit层受到保护,免受这种攻击。要了解更多关于最近涉及琦玉的攻击,请阅读APT34使用新的琦玉后门瞄准约旦政府。

IOCs

Maldoc

Confirmation Receive Document.xls
确认收到的文件.xls
26884f872f4fae13da21fa2a24c24e963ee1eb66da47e270246d6d9dc7204c2b

Saitama backdoor

埼玉后门
update.exe
e0872958b8d3824089e5e1cfab03d9d98d22b9bcb294463818d721380075a52d

C2s

uber-asia.com
asiaworldremit.com
joexpediagroup.com

分享此文章