前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[译] 威胁分析报告:11.深入了解Zebrocy的Dropper文档(APT28)

[译] 威胁分析报告:11.深入了解Zebrocy的Dropper文档(APT28)

作者头像
Eastmount
发布2021-12-03 15:08:14
1.1K0
发布2021-12-03 15:08:14
举报

该专栏主要翻译国外知名安全厂商的APT报告,了解它们的安全技术,学习它们溯源APT组织和恶意代码分析的方法,希望对您有所帮助。当然,由于作者英语有限,会借助机翻进行校验,还请包涵!

前文分享了Lazarus攻击工业事件,主要采用ThreatNeedle高级恶意软件集群。这篇文章将详细讲解俄罗斯的APT组织Sofacy(APT28)中Zebrocy的Dropper文档。简短的文章读起来很轻松,希望对您有所帮助。

代码语言:javascript
复制
原文标题:A Deep Dive into Zebrocy’s Dropper Docs
原文链接:https://labs.sentinelone.com/a-deep-dive-into-zebrocys-dropper-docs/
文章作者:MARCO FIGUEROA
发布时间:2021年4月19日
文章来源:https://labs.sentinelone.com/
Contributor:Amitai Ben Shushan Ehrlich

文章目录:

  • 一.APT28介绍
  • 二.绕过VBA宏密码保护
  • 三.Wininition用户表单
  • 四.用Ghidra和dhrake逆向Delphi二进制文件
  • 五.结论
  • IOC指标

一.APT28介绍

Sofacy 是一个从2008年就一直处于活跃状态的APT组织,并在2016年美国总统选举黑客事件中崭露头角。该组织更广为人知的名字是 FancyBearAPT28,其攻击目标包括政府、J队、安全机构和私人组织等,并以参与黑客攻击和泄M行动而闻名。

在过去的几年里,Sofacy进行了彻底的重组,在很大程度上避开了分析师的关注。其中一个比较典型的变体称为 Zebrocy,其目标主要集中在前苏联和亚洲周边国家。

2018年,网络安全公司Palo AltoNetworks的研究人员就发现,与俄罗斯政府关系密切的SofacyAPT(又名APT28、Fancy Bear或Sednit)威胁组织使用Go编程语言编写了他们常用的Zebrocy工具的新版本。Zebrocy主要通过网络钓鱼攻击来实现,其中包含有宏和可执行文件附件的诱饵Microsoft Office文档。 该恶意软件的幕后操纵者于2015年首次被发现与GreyEnergy具有高度关联性。GreyEnergy是一个威胁组织,被认为是BlackEnergy (又名Sandworm)的继任者,这表明它是一个与Sofacy和GreyEnergy关联的子组织。它实际上充当了一个后门和下载器,能够收集系统信息、操作文件、捕获屏幕截图并执行恶意命令,然后将这些恶意命令传输到攻击者控制的服务器。 在2020年,Sofacy利用COVID-19作为诱饵发送Zebrocy恶意软件发起在野攻击。虽然Zebrocy最初是用Delphi(称为Delphocy)编写的,但此后已被用六种语言实现,包括AutoIT,C ++,C#,Go,Python和VB.NET。这篇文章将分享其Dropper的一个攻击案例。

在2021年3月,我们观察到了一系列针对哈萨克斯坦的攻击活动,它们使用Delphi编写的恶意软件 Delphocy 发起攻击,该恶意软件与以前的 Zebrocy 有关。被发现的Word文档据称来自哈萨克斯坦一家名为Kazchrome的公司,该公司是一家采矿和金属公司,并且是全球最大的铬矿和铁合金生产商之一。

总体来说,我们发现了6个与这个集群相关的Delphocy Word文档,它们都包含相同的删除PE文件的VBA脚本。

在这六份Word文件中,有两份似乎是来自哈萨克斯坦的受害者上传到VirusTotal的真实文件。上传的文件包含了原始文件名:

  • Авансовыйотчет(новый).doc
  • Формадокладной(служебной)записки.doc

在这篇文章中,我们将深入研究这些样本,并分享一些其他分析师用来逆向Delphocy dropper文档的技术。我们展示了研究人员如何绕过密码保护宏,并描述了如何使用IDR(交互式Delphi重构器)反编译Delphi,以及如何使用dhrake的插件将保存的IDC文件导入Ghidra。

我们的分析结果引导发现了更多的Zebrocy簇,提供了一组IOC和YARA检测规则,使威胁搜索程序能够在其环境中搜索和这些相关的工件。

二.绕过VBA宏密码保护

在使用VBA宏分析Office文档时,攻击者有许多不同的工具和技术来完成这项工作,但我已经养成了一个习惯。当我第一次开始逆向恶意软件时,在手动绕过受密码保护的宏中,我就使用了这个习惯。

步骤如下:

  • 1.打开您最喜欢的十六进制编辑器,本文使用HxD
  • 2.加载Word文档
  • 3.搜索以下文本 – CMG=GC=DPB=
  • 4.向每个添加一个x – CMGx=GCx=DPBx=
  • 5.保存更改的文件

当打开Word文档并查看宏时,您可以看到脚本和表单。在分析函数时,最突出的地方是:

  • ert.DataType=“bin.base64”

这表明UserForm1采用base64编码。

三.Wininition用户表单

当选择UserForm1时,文本框将显示一个 base64 编码的字符串,这正是我们上面讨论过的函数。下一步是将整个字符串复制到一个文件中,以便对其进行解码。

现在我们通过base64解码二进制文件并将其保存为wininition.exe。

接下来,使用HxD清理头部(headers),然后使用PE-Bear修改块头部(fix the sections headers),以进入下一阶段的分析。

当对一个二进制文件进行分类时,首要工具是Hiew,它可以调查并寻找线索以便进行更深层次的理解。通过 winintion,我注意到Embarcadero字符串,这意味着这个二进制文件是用Delphi编写的。

在逆向Delphi二进制文件时,我总是使用IDR(交互式Delphi重构器)。其中,IDR是一个用Delphi编写的可执行文件和动态库(DLL)的反编译器。

四.用Ghidra和dhrake逆向Delphi二进制文件

在搜索IDR的最新进展时,我们遇到了一个很棒的 Ghidra 插件。它是一个用在Ghidra中的脚本集合,使用IDR输出到IDC的Delphi二进制文件进行逆向工程。虽然这是一年前发表的,但如果攻击者使用Ghidra,它就是一个宝藏。

dhrake允许您将IDC文件从IDR导入Ghidra。这将导入符号名、函数签名并为Delphi类创建结构。该插件从IDR生成的IDC文件中提取并应用Delphi符号,并且试图查找Ghidra错误确定函数入口点的情况。如果您从未将插件导入Ghidra,请阅读另一篇文章。

  • https://labs.sentinelone.com/a-guide-to-ghidra-scripting-development-for-malware-researchers/

这那篇文章中,我已经把IDC保存到一个选定的文件夹,然后将插件安装在Ghidra中,并运行提示输入IDC文件的脚本将其加载!

在wininit二进制文件中,WinMain的第一个函数是 SetWindowsHookExW,这是一个钩子程序(hook procedures),用来监视系统中某些类型的事件。钩子进程的低级键盘输入事件是 WH_KEYBOARD_LL,其参数中的数字是13。该钩子是一种拦截按键事件的机制,然后将所有事件保存到一个日志文件中,并将其发送到C2。

C2使用十六进制进行模糊处理,十六进制可以转换为ascii。

  • 68747470733A2F2F7777772E786268702E636F6D2F646F6D696E61726772656174617369616E6F6479737365792F77702D636F6E74656E742F706C7567696E732F616B69736D65742F7374796C652E706870
  • hxxps://www.xbhp[.]com/dominargreatasianodyssey/wp-content/plugins/akismet/style.php
  • 68747470733A2F2F7777772E63346373612E6F72672F696E636C756465732F736F75726365732F66656C696D732E706870
  • hxxps://www.c4csa[.]org/includes/sources/felims.php

注意:这些域名似乎是被盗用的域名。

五.结论

通过对这些文件的分析,我们找到了其他的Zebrocy集群。随着Zebrocy的范围不断发展,组织必须具有适当的可见性和检测能力来发现这个威胁行动者。我们希望在这篇文章中讨论的技术将有助于其他研究人员分析Delphocy droppper文档,特别是文档中有密码保护的宏。

此外,为了阻止此类攻击,CISA建议在使用可移动媒体打开来自未知发件人的电子邮件和附件,以及扫描可疑的电子邮件附件时,请确保谨慎行事,并确保扫描附件的扩展名与文件头匹配。

前文分享:

2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、逆向分析、APT分析报告、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,谢谢。

IOC指标

Word文件

代码语言:javascript
复制
SHA256
3b548a851fb889d3cc84243eb8ce9cbf8a857c7d725a24408934c0d8342d5811
1dd03c4ea4d630a59f73e053d705185e27e2e2545dd9caedb26a824ac5d11466
1e8261104cbe4e09c19af7910f83e9545fd435483f24f60ec70c3186b98603cc
c213b60a63da80f960e7a7344f478eb1b72cee89fd0145361a088478c51b2c0e
2bf088955007b4f47fe9187affe65fffea234ff16596313a74958a7c85129172
d9e7325f266eda94bfa8b8938de7b7957734041a055b49b94af0627bd119c51c

SHA1
fc0b7ad2ae9347d6d2ababe2947ffb9f7cc73030
71b4b9f105de94090fc36d9226faaa1db6d9f3d1
6a8f63c4491adcf2cf7f76cd1481c5647615a6c9
a3ecf1fdc1206e9d3061530fa91775cf3d97f788
ae01ca2cf0dc07abb3a7bef9930e38c9212975d5
66b39f4fd1dd51c2f548330e5818f732dad0aa28

VBA

代码语言:javascript
复制
SHA256
a442135c04dd2c9cbf26b2a85264d31a5ac4ec5d2069a7b63bc14b64a6dd82b7

SHA1
6ec4eb883752b70db134ac0f4e0d5b4a77196184

Wininition

代码语言:javascript
复制
SHA256
ee7cfc55a49b2e9825a393a94b0baad18ef5bfced67531382e572ef8a9ecda4b

SHA1
afbdb13d8f620d0a5599cbc7a7d9ce8001ee32f1

网址

代码语言:javascript
复制
hxxps://www.xbhp[.]com/dominargreatasianodyssey/wp-content/plugins/akismet/style.php
hxxps://www.c4csa[.]org/includes/sources/felims.php

Yara Rules

代码语言:javascript
复制
rule apt_RU_delphocy_encStrings {
  meta:
    desc = "Hex strings in Delphocy drops"
    author = "JAG-S @ SentinelLabs"
    version = "1.0"
    TLP = "White"
    last_modified = "04.09.2021"
    hash0 = "ee7cfc55a49b2e9825a393a94b0baad18ef5bfced67531382e572ef8a9ecda4b"
    hash1 = "07b2d21f4ef077ccf16935e44864b96fa039f2e88c73b518930b6048f6baad74"

  strings:
    $enc_keylogger2 = "5B4241434B53504143455D" ascii wide
    $enc_keylogger3 = "5B5441425D" ascii wide
    $enc_keylogger4 = "5B53484946545D" ascii wide
    $enc_keylogger5 = "5B434F4E54524F4C5D" ascii wide
    $enc_keylogger6 = "5B4553434150455D" ascii wide
    $enc_keylogger7 = "5B454E445D" ascii wide
    $enc_keylogger8 = "5B484F4D455D" ascii wide
    $enc_keylogger9 = "5B4C4546545D" ascii wide
    $enc_keylogger10 = "5B55505D" ascii wide
    $enc_keylogger11 = "5B52494748545D" ascii wide
    $enc_keylogger12 = "5B444F574E5D" ascii wide
    $enc_keylogger13 = "5B434150534C4F434B5D" ascii wide
    $cnc1 = "68747470733A2F2F7777772E786268702E636F6D2F646F6D696E61726772656174617369616E6F6479737365792F77702D636F6E74656E742F706C7567696E732F616B69736D65742F7374796C652E706870" ascii wide
    $cnc2 = "68747470733A2F2F7777772E63346373612E6F72672F696E636C756465732F736F75726365732F66656C696D732E706870" ascii wide

  condition:
    uint16(0) == 0x5a4d and (any of ($cnc*) or all of ($enc_keylogger*))
}

rule apt_RU_Delphocy_Maldocs {
  meta:
    desc = "Delphocy dropper docs"
    author = "JAG-S @ SentinelLabs"
    version = "1.0"
    TLP = "White"
    last_modified = "04.09.2021"
    hash1 = "3b548a851fb889d3cc84243eb8ce9cbf8a857c7d725a24408934c0d8342d5811"
    hash2 = "c213b60a63da80f960e7a7344f478eb1b72cee89fd0145361a088478c51b2c0e"
    hash3 = "d9e7325f266eda94bfa8b8938de7b7957734041a055b49b94af0627bd119c51c"
    hash4 = "1e8261104cbe4e09c19af7910f83e9545fd435483f24f60ec70c3186b98603cc"

  strings:
    $required1 = "_VBA_PROJECT" ascii wide
    $required2 = "Normal.dotm" ascii wide
    $required3 = "bin.base64" ascii wide
    $required4 = "ADODB.Stream$" ascii wide
    $author1 = "Dinara Tanmurzina" ascii wide
    $author2 = "Hewlett-Packard Company" ascii wide
    $specific = "Caption         =   \"\\wininition.exe\"" ascii wide
    $builder1 = "Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} UserForm1" ascii wide
    $builder2 = "{02330CFE-305D-431C-93AC-29735EB37575}{33D6B9D9-9757-485A-89F4-4F27E5959B10}" ascii wide
    $builder3 = "VersionCompatible32=\"393222000\"" ascii wide
    $builder4 = "CMG=\"1517B95BC9F7CDF7CDF3D1F3D1\"" ascii wide
    $builder5 = "DPB=\"ADAF01C301461E461EB9E2471E616F01D06093C59A7C4D30F64A51BDEDDA98EC1590C9B191FF\"" ascii wide
    $builder6 = "GC=\"4547E96B19021A021A02\"" ascii wide

  condition:
    uint32(0) == 0xE011CFD0 and all of ($required*) and (all of ($author*) or $specific or 5 of ($builder*))
}

参考文献:

  • [1] http://blog.nsfocus.net/windows-apt-zebrocy/
  • [2] https://www.sohu.com/a/283726515_804262
  • [3] https://www.welivesecurity.com/2019/09/24/no-summer-vacations-zebrocy/
  • [4] https://www.4hou.com/posts/x7jq
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 娜璋AI安全之家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.APT28介绍
  • 二.绕过VBA宏密码保护
  • 三.Wininition用户表单
  • 四.用Ghidra和dhrake逆向Delphi二进制文件
  • 五.结论
  • IOC指标
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档