近日,MacOS平台首次出现了XAgent的病毒样本。XAgent家族是由俄罗斯知名黑客团队APT28开发的间谍软件,具备反调试,键盘记录,下载文件和加密通信等恶意能力,在各种主流操作系统中都有样本出现,在近年来的黑客入侵事件中扮演了重要的角色。本文首先对APT28的背景进行解读,然后从技术角度深度分析该间谍软件,从挖掘出的病毒特征证实该样本出自APT28之手。最后提供了YARA规则用于判定此类病毒。
1. APT28解读
APT28被证实是俄罗斯政府支持的组织[4],该组织由经验丰富的开发人员和黑客组成,主要收集国防和地缘政治方面的情报,该组织相关攻击时间最早可以追溯到 2007 年。APT28间谍活动主要针对美国、欧洲和前苏联国家,包括政府和军事单位、国防机构、媒体以及与俄罗斯当局持不同政见者。
通过分析APT28之前所使用的恶意软件(Sofacy和XAgent),能够体会到这个黑客组织的在技术上的强大之处。早在2014年,APT28组织就使用了两段式攻击手法。即首先使用感染性强的Sofacy,在Windows平台广泛撒网,利用word和PDF漏洞,使用邮件附件进行传播。当受害者中毒之后,会采集感染者的信息,筛选出高价值的感染者之后,再在第二阶段释放技术含量更高的XAgent病毒。如下示意图展示了两段式攻击,这样做的好处是,最大程度的隐藏APT28所使用的攻击技术,让针对APT28的研究更为困难。
除了常见的隐藏手段,APT28制作的病毒,还将配置信息(C&C服务器)加密保存在注册表中。这样即使获取了病毒文件,也无法和后端服务器通信,增加了分析研究的难度。另一方面,XAgent系列病毒在Windows, Linux, Android甚至iOS平台上均有发现,开发如此高质量的间谍软件,需要各个操作系统的专业知识,所以有理由推测APT28是一个组织严密,分工细致的黑客团队。近年来耳熟能详的黑客入侵事件都和APT28有着千丝万缕的联系。
2014年,乌克兰总统选举期间,乌克兰选委网站的网络投票遭受黑客攻击,包括入侵系统、窃取数据、ddos攻击,以及尝试用假选举结果篡改网站内容。乌克兰官员披露,在之后的调查中,发现了APT28组织使用的恶意软件。
2015年,法国电视台TV5Monde遭到大规模网络攻击,攻击者入侵了电视台的广播传输渠道,删除重要数据,破坏重要的硬件设施。短短几分钟内,TV5Monde的12个频道全部瘫痪。之后的事件调查发现,此次的攻击行为与黑客组织APT28有关。
此外,APT28还在2016年入侵了世界反兴奋剂组织的数据库,窃取了运动员的医疗数据,并在网上公布了部分运动员的医疗档案,披露了美国等国家数位高水平运动员豁免使用禁药的事件。
近期,俄罗斯黑客介入美国总统选举的报告被披露,矛头直指黑客组织APT28。报告声称APT28入侵了民主党全国委员会的邮箱服务器,导致了大量邮件被公开。全美媒体对公开的邮件进行了大量的报道,扩大了攻击的效果。
2. 技术分析
通过对MacOS平台上XAgent样本的深入分析,发现该样本具备反调试,盗取密码,下载文件和加密通信等多种能力,总结出该病毒的功能模块信息如下。
序号 | 名称 | 功能 |
---|---|---|
1 | BootXLoader | 启动类,具备反调试功能,侦测当前网络环境,启动 HTTPChannel |
2 | HTTPChannel | HTTP通信类,具备生成加密数据包的功能 |
3 | FTPManager | FTP类,具备上传下载功能 |
4 | Launcher | 负责自启动功能,使用随机的名字 |
5 | MainHandler | 负责主要的恶意行为的实现,例如keylogger,获取系统信息,执行命令和下载文件等 |
6 | InjectApp | 负责进程注入的实现 |
7 | Keylogger | 负责键盘记录的实现 |
8 | Cryptor | 负责加密算法的实现,使用RC4算法 |
9 | FileSystem | 负责文件系统的操作 |
10 | Password | 负责窃取密码的实现 |
2.1 静态分析
首先本次分析的XAgent样本属于MacOS平台上的二进制可执行格式即Mach-O格式,其在VirusTotal中的基本情况如下:
MD5 | 4fe4b9560e99e33dabca553e2eee** |
---|---|
文件大小 | 376.0 KB |
文件类型 | Mach-O 64-bit executable |
首次提交 | 2017-02-08 19:01:00 UTC |
从基本信息来看,该样本近期才被发现,后续的分析也能够印证其应该处于开发的初级阶段,不排除后续升级的可能。静态分析主要从字符串特征,代码逆向等方面进行。
2.1.1 字符串特征
病毒文件中包含的可见字符,是病毒静态特征的重要来源,也会大量用于病毒判别规则中。从结果中可以得出如下信息:病毒尝试访问浏览器(Firefox)和通讯录(TCC.db),开发者用户名(kazak)和该病毒的工程名(XAgentOSX),恶意行为函数名(executeShellCommand)和C&C服务器域名(apple-iclods.org)。
alices-iMac:~ root# strings -n 8 -a ./XAgent.macho.bin | sort | uniq /Applications/Firefox.app/Contents/MacOS /Library/Application Support/com.apple.TCC/TCC.db /Users/kazak/Desktop/Project/XAgentOSX/XAgentOSX/Source/Boot/Boot.mm <font size=4 color=red><pre>Error take screenshot</pre></font> executeShellCommand: http://apple-iclods.org/ injectRunningApp
2.1.2 代码逆向
通过代码逆向发现,病毒使用Object-C编写。由于篇幅的限制,这里只展现一些有趣的细节:下图的反编译结果展现了样本提取Firefox密码的SQL语句。
2.2 动态分析
动态分析以MacOS Sierra 10.12 为环境,会重点关注反调试机制,文件I/O和网络通信等方面。
2.2.1 反调试机制
在动态调试过程中,发现病毒触发了自删除行为。如下汇编代码展示了这一技术,其中sysctl系统调用,传入了CTL_KERN参数,如果检测到了调试器,病毒会调用remove()函数,将自身删除。
2.2.2 文件I/O
通过对文件I/O行为进行监控,发现该样本试图对日志(Logging)、网络(CFNETWORK_DIAGNOSTICS)、用户界面(SystemAppearance)、键盘布局(AppleKeyboardLayouts)等关键文件进行访问和操作。
UID PID COMM FD PATH 0 346 XAgent -1 /Library/*/Logging/Subsystems/com.apple.defaults.plist 0 346 XAgent 4 /usr/share/icu/icudt57l.dat 0 346 XAgent -1 /System/*/CFNETWORK_DIAGNOSTICS 0 346 XAgent 4 /System/*/SystemAppearance.car 0 346 XAgent 4 /System/*/AppleKeyboardLayouts-L.dat 0 346 XAgent 4 /var/db/mds/messages/se_SecurityMessages 0 346 XAgent -1 /var/root/Library/Cookies/XAgent.binarycookies
2.2.3 网络监控
首先分析样本发起的DNS查询,可以得到5个C&C服务器信息,而且反汇编的结果也提供了交叉验证。在特征规则中这些域名信息会被整理成判定规则。
其次,根据反汇编的结果,我们主要从HTTP协议进行分析。如下图所示,样本使用{watch,search,results,open,close}等命令同C&C服务器进行通信。其中参数都是经过RC4加密后,然后base64编码的。比较遗憾的是,这些请求均没有得到服务器的响应。
通过网络分析,可见该样本只接收数据上报,对于普通的客户端不会进行回复,符合间谍软件的定位。
至此对于该病毒的分析已经告一段落,可以看出该病毒具备较多的恶意能力,同时后台服务器的策略做的非常周密。不足之处是,对于Object-C代码混淆和关键字符串混淆做的不够完善,所以猜测该样本处于开发阶段,后续会持续进化。
3. 特征规则
经过上一节的病毒分析过程,我们掌握了该样本的静态和动态特征,本节会先介绍该样本被判断为XAgent的原因,然后介绍该样本的判定规则。
3.1判定原因
首先直接原因是样本中出现了体现作者和样本项目名称的源代码路径信息。XAgentOSX直接提示该样本属于MacOS平台上的XAgent家族。
/Users/kazak/Desktop/Project/XAgentOSX/XAgentOSX/Source/Boot/Boot.mm
其次,根据Google发布的Windows和Linux平台上的XAgent报告[3],我们可以找到该样本和其他平台上的样本的共同点。
如下图所示,报告中分析的URL格式和该样本一致。
而且,该样本也使用了HTML做为日志格式。同报告中披露的日志格式一致。并且对字体和颜色的设置也是相同的。
综合这两方面的原因,可以确定该样本是APT28团队制作的MacOS平台上的XAgent间谍软件。
3.2 判定规则
根据前面静态分析的结果,提取了如下YARA规则对MacOS平台上的XAgent病毒进行判别。此条YARA规则可以分为三个部分,首先判断Mach-O的文件头,其次提取关键的字符串信息,例如keylog,项目名称和通讯录文件名等。最后是该样本试图访问的C&C服务器的IP或者域名,对于C&C服务器,只要满足其一即可。
rule MacOS_XAgent { meta: Date = "2017/02/21" Description = "MacOS XAgent APT28" strings: $s0 = "keylog_spec_key" $s1 = "encryptedUsername" $s2 = "com.apple.TCC/TCC.db" $s3 = "kazak/Desktop/Project/XAgentOSX" $s4 = "Error take screenshot" $cc0 = "23.227.196.215" $cc1 = "apple-checker.org" $cc2 = "apple-iclods.org" $cc3 = "apple-search.info" $cc4 = "apple-uptoday.org" $mach = {CF FA ED FE} // Mach-O condition: $mach in (0..4) and all of ($s*) and 1 of ($cc*) }
4.总结
本文首先对XAgent样本幕后的作者APT28进行了解读,然后对其进行了技术分析,根据分析结果归纳出针对该病毒的判定规则。从病毒表现出的功能和逆向结果可以看出,XAgent功能强大,具备反调试,加密通信等能力。对于后续XAgent的变种和传播情况,我们会持续进行关注。
5.参考资料
1. https://zh.wikipedia.org/wiki/Mach-O
2. https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/dtruss.1m.html
3. https://www.documentcloud.org/documents/3461560-Google-Aquarium-Clean.html
4. https://www.fireeye.com/blog/threat-research/2017/01/apt28_at_the_center.html
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/55164.html