0x00 简介
“毒菡”攻击始于三年前。这个网络间谍活动的主要目标是东南亚政府和军方组织。我们发现,香港、 台湾、 越南、 菲律宾和印度尼西亚都是这次攻击行动的受害者。”毒菡”小组主要通过钓鱼攻击来感染目标,然后部署“Elise”后门木马(“Elise”是英国的一款莲花跑车)。并且,他们使用了专门定制的恶意Office文档和诱饵文件来诱使受害者上钩。
恶意附件中包含有漏洞代码,也就是微软Office漏洞-CVE-2012-0158。”毒菡”攻击小组就是利用这个漏洞在用户的系统上植入木马。当用户点击诱饵文档时,文档会正常显示,从而消除受害者的戒心。
诱饵文件实例:
- 菲律宾海军高级军官的个人信息,包括出生日期,手机号码。
- “机密”-菲律宾陆军的人道主义救援计划和抗灾计划。
- 邀请挪威大使观看电影。
虽然我们尚未确定攻击事件的幕后主使者,但是,这些证据表明,其幕后主使相当重视东南亚。Elise是一个高度定制的后门木马。在网络上根本没有类似的木马,只有”毒菡”小组使用过这个工具。也就是说,这个木马有可能是专门针对”毒菡”行动开发的。这次行动的攻击目标几乎都是军队和政府组织。这些数据对于一般的犯罪组织来说没有什么价值,但是对于国家组织来说可是价值连城。并且,这次攻击活动已经暗中执行了3年,也就是说,行动的幕后主使掌握有大量的资源。
通过Palo Alto Networks®的AutoFocus平台,我们分析了大量由WildFire生成的报告。最终,unit 42确定了50多项独立的攻击活动都与此次间谍活动有关。
在行动信息章节,我们对某些攻击活动进行了详细的分析。在Elise后门分析章节,我们说明了三个Elise变种的操作方式以及在不同时间发挥的作用。C2域名、IP地址和文件哈希都列在附录部分。
0x01 “毒菡”行动溯源
在2012 年至 2015 年期间,”毒菡”小组连续攻击了几个东南亚国家的军方和政府机构。其中,越南和菲律宾在 2013年和 2014 年期间,遭遇了沉重的打击。
在这些攻击中,都使用了高度定制后门木马-Elise。”毒菡”攻击小组首先会利用这个木马来入侵网络。入侵成功后,他们就会再次植入另外的恶意程序,感染网络中的其他用户并窃取网络中的数据。在下文中,我们会详细地介绍Elise木马。
钓鱼攻击是间谍活动实施的第一步。攻击者往往会根据目标的兴趣来定制邮件主题,并且把恶意文件伪装成了合法文件的样子,从而诱使目标用户会打开这些看似合法的文件。而实际上,这些文件都是木马。诱饵文档的主题一般是军队或政府机构的人员名册,或者是从网络上复制的亚洲女性照片。其中一些诱饵文件中的信息都是从互联网上收集的; 但是,需要注意的是,凡是涉及到军方或政府相关的诱饵文件都不是网络上的。
尤其是,在攻击菲律宾时,攻击者使用的诱饵文件都是以军方或政府为主题,菲律宾海军是当时攻击的主要目标。
由于我们未能在网络上找到任何相关的诱饵文件,以及这些文件中往往会包含敏感信息,为了防止这些敏感信息的泄露,我们在这里不会提供诱饵文件的详细资料.值得注意的是,其中的一份诱饵文件甚至标注为”机密文件”. 虽然所有的攻击活动可能是由同一个小组完成的,但是恶意服务器的分布却很分散(图 1)。如图,木马都会根据配置文件,来连接指定的C2域名和IP地址。
此外,我们还根据域名的注册地址和域名对应的IP地址,绘制了攻击分布图。从图中可以看出,虽然每次攻击使用的CC都不一样,但是,这些服务器都汇集到了下列的一些区域,包括越南,菲律宾,台湾,香港和印度尼西亚。
我们把注册恶意域名的email地址和恶意域名的解析ip地址绘制成了平面图.从图中可以看出,虽然每次攻击使用的恶意域名都不尽相同,但是它们之间明显是有联系的.在下面的章节中,我们将会一个国家一个国家的逐一审视黑客的犯罪行径.
0x02 越南
在”毒菡”攻击中,越南政府是最常遭受攻击的国家,总共遭受了11波钓鱼攻击,主要分布在2014年9月。这些攻击使用了一个 Microsoft Excel® 文档和五个 Microsoft Word® 文件来投放木马。所有的这些文档都是诱饵文档并且都使用了不同的内容,来诱骗用户相信打开的是合法文件。
越南遭遇了两组截然不同的攻击。在这次攻击中,有三个样本使用了同一个 C2 服务器 (图 2),其中有两个CC域名都是 "2759931587@qq.com这个邮箱注册的。在其他针对东南亚的攻击活动中,也使用了一些由这个邮箱注册的C2域名。这组攻击使用了下面的行动代码来标记他们的感染活动,其中多数名称都包含字符串“Alice”。我们目前尚不清楚这个字符串有没有任何特殊含义。
- Alice_erpas
- Alice_rosey
- Alice_15A
- Alice_Spider
- Alice_vishipel
- jessica-cpt-app
- oyf
- ooo
第二组攻击 (图 3) 中使用的注册人并没有出现在其他活动中,但是这些攻击活动都具有相同的目标,相同的行动标志代码和相同一个C2地址。域名的初始注册人是'paulzz@yeah.net (mailto:paulzz@yeah.net)',后来变更为了'studywindows123@outlook.com[email protected]注册的,也就是说,这个人很可能是一个与APT小组合作的域名分销商。当然,也有可能是APT小组就是喜欢用这个分销商注册的域名,其他的我们也不好说。还有一个域名是另一个注册人注册的,但是没有显示任何注册信息。这些样本使用了下面三个行动标志代码。
- QY030610
- KITY01232
- KITY090901
在这次钓鱼中,多数附件的内容都是和技术相关的信息,如图2,图3,图4.并且,使用的语言也都是越南语。其中有一个样本,我们并没有提供图像,因为这个样本是VAST终端的一个测试证书。我们不清楚攻击者是如何获取了这样一个测试证书,所以我们只能假定这是合法的文件,所以不能公布。
最后的四个诱饵文档使用了完全不同的主题。其中一个是邀请挪威驻越南大使馆参加木筏航行周年庆活动的邀请函 (图 7) 。值得注意的是,诱饵文档标注的活动时间不正确 — —这个活动正确的时间应该是2014年12月11日至12日。同时,一份预约邮件(指导收件人如何转发请求,如果不能参加的话)也很可疑。还有两个诱饵文档包含一张或多张性感亚洲女性的照片,这些照片都是从网络上获取的,其中一张照片还重复使用了(图 8) 。最后还有一个诱饵文件是一张圣诞节图片,但是里面的英语有语法错误.
第二组攻击中也使用了用越南语书写的诱饵文件。这个文档是一份联系人名称,上面公布了越南高层的姓名和webmail地址。下面是第二个诱饵文档的第一页 (图 10),貌似是越南政府2015年的IT升级计划。最后一个样本似乎也与IT升级计划有关,涉及了实施日期和相关负责人(图 11)。
0x03 菲律宾
至少从2013年开始,”毒菡”小组就攻击了菲律宾政府,主要目标是菲律宾军方。我们总共识别了6个Elise的投放程序,每个都使用个不同的诱饵文档和内容。所有这些样本都使用了相同的C2服务器(图12)。这六个诱饵文档都涉及到了菲律宾军方或政府,主要称包含有高层官员的联系人信息。因为这些信息可能是合法的,所以我们不会公布图片。不过我们在表1中提供了这些钓鱼邮件主题内容和一些简介信息.
目录 描述
DFA GAD Directory 声称是菲律宾外交部的人员目录,包括个人邮箱帐号和手机号码。
HADR PLAN 29 May 14 声称是“机密的”菲律宾路径人道主义救援计划和抗灾计划。
C,1AD NR 03-0226-313-14 声称是实时飞机追踪系统的问题文件,可能是属于菲律宾空军的一份文档。
RQST MOUTPIECE LOUD HAILER 声称是某部队的申请书。
PN KEYPOSITION with CELL Nrs 声称是菲律宾海军总部高层的名册,日期是 2014 年 6 月 23 日。在这份名册上还列出了这些官员的职位,出生日期和手机号码。
Cellphone Number 声称是菲律宾海军总部的高层名册,时间是2015年2月。名册上列出了这些官员的职位和手机号码。
不同于在越南的攻击行动,此次行动中的恶意CC注册人信息异常繁杂,而且C2服务器也换成了DDNS动态域名.
.但是,这些域名的初始注册人还是'paulzz@yeah.net (mailto:paulzz@yeah.net),'。并且多数行动代码都是以日期为结尾。此外,值得注意的是,只有两个样本的开头不是 '340'。其中有三个行动代码的和诱饵内容相关。菲律宾攻击中使用的行动代码如下。
- 340_typhoon
- 340-0226
- 340-dfa-520
- 340-0528
- phone
- key0730
0x04 台湾和香港
我们在针对台湾的攻击中发现了3个投放程序,在针对香港的攻击中发现了1个投放程序。其中一个诱饵文件伪装成了员工联系表,但是在打开后没有显示任何信息。这可能是攻击者的失误造成的。不过,我们没能恢复另外两个诱饵文档。
在香港的攻击活动中,诱饵文档是一份中文书写的地震安全信息。这些信息也是从网络上复制的。至少从2009年开始,就出现了多个语言版本的这类信息。Snopes.com甚至还有一个条目专门评判了这个信息是否是正确的。相比于其他行动的攻击目标都是政府或军方机构,这个样本的例外之处在于,它攻击的目标是一所科技大学.
此次攻击活动有着最明显的活动路线(图 13),左边的那些活动使用了下面的前两个行动代码。
- 310-pyq
- mm-0807
- cyd-zc
由此可见,针对台湾和香港的攻击行动在相同的时间中使用了相同的木马。有趣的是,左上角的那些活动使用的某些恶意服务器和一名注册人就是在越南攻击活动中使用的。
0x05 印度尼西亚
我们发现一个Elise的投放程序携带着一个用印尼语书写的诱饵文档,这个诱饵文档中包含一份关于防流感应该吃什么食物的文章,还包括一张地瓜的图片。这些信息也好像是从网络上直接复制的。
这次攻击中使用的行动代码是"36-SC-0115,也使用了下列C2服务器。
- 122.10.89.84
- beckhammer.xicp.net
行动代码和 C2s 如下所示,其中一个C2也出现在了菲律宾样本中。另外,行动代码的格式和结尾数字也与菲律宾的攻击行动类似,都是以日期为结尾。
0x06 分析Elise后门
在我们研究期间,unit 42已经识别了50多个属于Elise系列的木马样本。经过分析,我们把这些文件分为了3类。
这些样本的编译时间在 2012 年 6 月至 2015 年 3 月期间。
我们并没有采用业界共识的方法来命名木马样本,而是采用了木马的编译时间戳来命名Elise木马变种.
虽然,每个变种都采用了不同的感染机制和维持机制,但是,这三个变种都具有下列常见属性:
- 加密的二进制配置数据结构,其中包含了C2服务器列表。
- 一个行动标识符,用于识别与C2服务器通信的木马,比如jessica-cpt-app’或‘370my0216’,。
- 通过HTTP或HTTPS发送自定义格式的请求与C2通信。
- 根据安装和C2服务器接收的报告来执行基础的网络侦测。
每个Elise变体都具备执行下列任务的功能:
- 执行命令、 Dll 或可执行文件
- 写入文件
- 读取文件
- 更新配置
- 上传配置数据
0x07 木马变种A
第一个Elise变种的编译时间是2012年中旬。这个变种的配置文件大小是1480字节,能够作为服务或可执行文件来自动安装。变种A的安装过程是投放程序的可执行文件负责完成的,之后的变种都是采用了恶意的Offie文档来进行安装。
执行完毕后,木马会使用 MoveFileExA 函数,配置自己在重启后删除,如下所示。
MoveFileExA(self, 0, MOVEFILE_DELAY_UNTIL_REBOOT);
有人也许记得,在越南攻击中,Microsoft Excel shellcode就利用了这种技术。接下来,木马会把内嵌的DLL文件提取并解密到下列位置。
%APPDATA%\Microsoft\Network\mssrt32.dll
使用下面的算法,你就可以加密或解密内嵌的DLL文件:
在把这个DLL写入磁盘之前, 木马首先会把加密的配置数据写入这个DLL。使用下面的 Python 代码,可以解密这些配置数据:
然后,木马会把mssrt32.dll配置为一项服务。木马会根据配置数据中指定的属性来配置这项服务。下面就是我们分析的一个样本。
服务名称 MSCM
Display Name Microsoft Security Compliance Manager
Description 这项服务提供集中化的安全基准管理功能,基准组合,定制功能和安全基准输出,能帮助你更快速更高效地管理Microsoft技术的安全和编译过程。
Image Path %SystemRoot%\System32\svchost.exe -k MSCM
Service DLL %APPDATA%\Microsoft\Network\mssrt32.dll
Service Main ESEntry
接着,通过手动调用StartServiceA函数,这项服务就能启动。如果这项新服务未能成功创建,木马就会在下列位置写入一个可执行程序:
%APPDATA%\Microsoft\Network\svchost.exe
木马的配置数据中指定了这个可执行程序的名称。这个文件的嵌入方法和投放方法与mssrt32.dll文件相同。这个可执行程序的维持机制是通过注册表项设置实现的:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\svchost :
%APPDATA%\Microsoft\Network\svchost.exe
最后,通过调用ShellExecuteW 函数,这个可执行程序就可以运行了。真正的Elise木马就在这个DLL文件或可执行文件中。当运行时,木马首先会删除下列文件:
%TEMP%\000ELISEA350.TMP
Elise木马生成的所有日志数据都会储存在这个文件中。木马会把加密的配置数据写入下列的某个位置:
%APPDATA%\Microsoft\Network\6B5A4606.CAB
%APPDATA%\Microsoft\Network\6B5A4607.CAB
下面的脚本可以解密和解析 CAB 文件:
紧接着,木马会进入一个循环,在循环中,木马会尝试通过HTTPS或HTTPS与指定的URL通信。木马首先会发送下列的GET请求到指定的C2服务器:
在上述的请求中,是受害人MAC地址上的最后四个八字节。例如,如果受害人的MAC地址是00-11-22-33-44-55-66,那么这个参数就是 ‘2233445566’。是使用当前时间作为种子随机生成的。这样每次生成的请求就都不是一样的。
木马在首次与远程服务器通信时,会执行下列的命令来进行基础的网络侦测:
- net user
- ipconfig /all
- net start
- systeminfo
Elise会把窃取来的数据放在cookie值里面 如下所示:
这些 cookie 中都是base64编码的数据。在解码并组合后,数据结构如下。
0x08 木马变种 B
第二个Elise变种(B)的时间戳可以追溯到2012年6月。变种B的配置信息大小是324字节。变种B一般是利用客户端漏洞CVE-2012-0158来植入。
当木马首次植入到目标的计算机上时,客户端的上shellcode就会投放两个文件——一个可执行文件和一个DLL文件。然后,可执行文件会在新的衍生进程中运行。接着,可执行文件会按照函数的顺序值,加载DLL文件中的第二个导入函数。这个导入函数的名称一般是 'CsOptionsHandle' 或 'ESHandle'。
当函数调用时,这个Elise变体就会开始解密配置信息(324字节)。使用下面的 Python 代码,你就可以解密和解析配置数据:
这个Elise变种使用了和变种A相同的加密/解密例程来加密配置数据。接下来,木马会创建下面的某个文件来储存配置数据:
%APPDATA%\Microsoft\IMJP8_1\8S3N0PW7.dat
%APPDATA%\\Microsoft\IMJP8_1\26TXNK4F.dat
这个变种最有意思的一个功能就是检测其自身是否在虚拟机环境中运行(VMware® 或VirtualPC)(图17)。
一旦木马检测到了虚拟机环境,木马就不再执行任何恶意活动。否则,木马会继续设置下列注册表项来配置维持机制:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\imejp:
在首次运行时,Elise变种B也会在受害人的计算机上执行下列命令:
- ipconfig /all
- net start
- dir C:\progra~1
- systeminfo
木马中的命令字符串使用了下列混淆算法:
变种B也使用了和变种A相同的数据窃取技术。利用 Base64 编码的 cookie 值来窃取数据,如下。解码后的数据结构也与变种A完全相同。下面是变种B使用的结构。
0x09 木马变种 C
第三个Elise变种的最早编译时间是2013年中期,自此之后,这个变种就会周期性地应用在攻击行动中。总整体上看,这个变种的使用频率最高,占到了总样本的75%。最新版的变种C是在2015年3月末编译的。另外,变种C的配置数据结构大小是336字节。
与变种B类似,变种C也常常是利用客户端漏洞来安装文件,比如漏洞CVE-2012-0158。这个变种就是一个DLL文件,具有两个导出函数-‘Setting’和‘Update’。
当调用‘Setting’时,木马就会把自己复制到下列位置:
%APPDATA%\Microsoft\Network\rasphone.dll
然后,此新文件通过下面的命令来调用:
Rundll32.exe %APPDATA%\Microsoft\Network\rasphone.dll,Update
当‘Update’函数在 rasphone.dll上调用时,木马就会开始调用IsDebuggerPresent(),来检查其自身是否被附加到了可调试程序上。如果没有检测到,木马接着会检查当前的文件名是不是dll32’,以确保是不是Rundll32.exe加载了DLL文件。rasphone.dll使用了一个简单的字符串加密例程。
使用下面的代码,你就可以解密字符串:
然后,木马会继续确定iexplore.exe 的位置 (%PROGRAM FILES% Internet Explorer\iexplore.exe) ,并衍生一个新的iexplore.exe进程实例。接着,木马就会把自己注入到iexplore.exe。最后,木马解密资源节上(‘XDATA’)上的内嵌DLL,并把这个DLL写入iexplore.exe上。接着,把配置文件(336字节)写入这个DLL,然后,通过调用LoadLibraryA把这个DLL载入iexplore.exe。
注入的DLL(接下来用 xdata指代)首先会衍生一个新的线程。之后的所有操作都会在这个线程上进行。木马会把加密的配置数据写入下列的某个位置:
%APPDATA%\Microsoft\Network\6B5A4606.CAB
你可以使用下面的脚本来接解密这个CAB 文件。
这个 CAB 文件创建时间和修改时间都停在了Sunday, November 21, 2010, 10:29:33 UTC。木马还会把日志文件写入下列路径。
%TEMP%\00EL225AF.TMP
这个文件中的数据既没有混淆也没有加密。紧接着,木马会进入一个循环,在循环中,木马会尝试通过HTTPS或HTTPS与指定的URL通信。二进制数据会按照下面的结构,通过POST请求发送给C2服务器。所有的这些Elise变种都是用了相同的数据结构。
木马在首次与远程服务器通信时,会执行下列的命令来进行基础的网络侦测:
- net user
- ipconfig /all
- net start
- systeminfo
这些数据是通过POST请求窃取的,如下。
如图,URL中的‘2320’就是使用受害者的MAC地址生成的。URI 中的 '00320511' 的值是根据当前时间生成的。这样每个请求就都是不同的,通过这些请求就能识别受害人的设备。
0x10 业界同仁的研究
先前已经有多个研究小组发布了关于Elise后门的研究报告。我们在文章的这一部分引用了其中的一些报告来帮助读者发现这次间谍活动与先前的攻击活动之间的关联。在 2013 年,Xecure 实验室和中研院(Academia Sinica)发表一份联合文件,并且在黑帽大会上发表了演讲,他们认为Elise是“LStudio,” “ST Group” “APT0LSTU”等大型工具的一个组成部分。该研究小组指出,Elise和其他相关的工具都主要用于攻击台湾(图22),但是美国,加拿大和其他一些国家也是其攻击目标。
Trend Micro在2013年2H 发表的攻击趋势报告中首次提到了Elise ii.从那时起,他们就在博客和报告中大量的引用了这篇文章 iii iv v。这次研究表明,在使用了Elise木马的攻击中,受害目标往往是亚太地区的政府组织。FireEye 把Elise命名为“Page”木马,因为早期版本的木马,在C2 URL中使用了“Page”这个词。FireEye最早是在2012年的9月的钓鱼攻击中发现了Elise。当时的航空国防工业遭到了攻击。FireEye后来还提到,Elise还曾经利用过马航370坠毁事件,作为诱饵文件的内容。
0x11 结论
“毒菡行动”是一次长期的网络间谍活动,行动的主要目标是东南亚国家的政府和军事组织。最早的攻击可以追溯到2012年,最近的攻击活动就在我们截稿前不久。在一次攻击案例中,目标组织在8周内竟然收到了20封不同的攻击邮件,这些邮件都携带着Elise的漏洞文件。
虽然,我们无法确定这些攻击活动是哪个国家授意的,但是,通过攻击模式我们就能发现,其幕后主使具备开发定制工具的能力,也能长时间地维护CC服务器。这些证据都说明,其幕后操纵者是某个国家势力,并且对东南亚国家的军事情况很感兴趣。
除了Elise后门,“毒菡行动”中可能还部署了其他的攻击工具。我们已知的工具有“LStudio”和 Evora。
Unit 42 最初通过Palo Alto Networks的AutoFocus平台,快速地发现了木马样本(使用 WildFire系统分析的)与攻击活动之间的关系。然后,我们又综合开源情报,收集到了另外的一些样本,从而拓宽了我们的分析视野。我们已经标记了所有的样本( Elise)和相关的服务器(LotusBlossom)。
WildFire准确地识别了Elise的可执行程序,以及在“毒菡攻击”中使用的漏洞文件。我们公布的IPS签名14358, 可以用于检测Elise的C2流量。
附录
相关样本md5 以及 纪录c2服务器 见报告原文。