一.前言:
Gcow安全团队追影小组于2019年11月份捕获到名为SideWinder(响尾蛇)组织针对巴基斯坦的活动,介于该组织主要针对巴基斯坦和中国以及其他东南亚国家,且其于10月份时候针对中国部分国防重要行业进行类似手法的攻击活动,为了更好了解对手的攻击手段以及加以防范,团队将以最近的样本为契机来总结该组织为期一年的攻击活动.
响尾蛇(又称SideWinder、T-APT-04)是一个背景可能来源于印度的APT组织,该组织此前已对巴基斯坦和东南亚各国发起过多次攻击, 该组织以窃取政府,能源,军事,矿产等领域的机密信息为主要目的。此次的攻击事件以虚假邮件为诱饵,利用Office远程代码执行漏洞(cve-2017-11882)或者通过远程模板注入技术加载远程URL上的漏洞文件.在针对于巴基斯坦的攻击中我们发现了Lnk文件的载荷,其主要驱动是mshta.exe,攻击者通过各种方式以达到伪装的目的
在我们的样本捕获中,我们发现了该组织在这一年之间的变化,其攻击的手段越来越先进,这对我国的军事部门当然是一个不容小觑的威胁,所以我们追影小组将带领各位读者来回顾该组织的攻击手法,以及其技术的更迭。
二.样本分析:
为了方便于各位读者的理解,笔者画了一张关于该组织攻击的流程图
如下:
在2019下半年,该组织经常使用该流程针对巴基斯坦和中国的目标进行攻击
ADVOCATE.docx 利用远程模板注入技术加载含有漏洞的CVE-2017-11882漏洞RTF文档,使用的这样加载方式可以绕过防病毒网关,增加成功率。当成功加载main.file.rtf文件后,释放1.a 到Temp目录下,触发漏洞shellcode执行1.a,1.a是一个混淆后的Jscript脚本文件,再次释放Duser.dll文件 tmp文件,并拷贝rekeywiz.exe到 C:\ProgramData\DnsFiles目录下,并执行rekeywiz.exe文件,带起Duser.dll,Duser.dll加载tmp文件.
1.诱饵文档
1).样本信息:
2).分析
打开ADVOCATE.docx样本后,利用远程模板注入技术远程加载远程模板: https://www.sd1-bin.net/images/2B717E98/-1/12571/4C7947EC/main.file.rtf
成功打开后显示,用掩饰目的文档,如下图:
2.漏洞文档:
1)样本信息:
2).分析:
当main.file.rtf加载成功后,会将1.A文件释放到当前用户temp文件夹下面
1.a是嵌入到rtf文档中的OLE Object,如下图:
通过分析rtf也可以看到
默认释放到 temp文件夹中,如下图:
1.a文件通过Shellcode加载起来
(1).Shellcode分析
shellcode 代码 如下图:
直接在00411874 处下断点 此处为 ret处,也就是将通过覆盖ret返回地址,达到任意代码执行目的,如下图:
可以看到esp 值已经被覆盖为0x18f354,这个就是shellcode入口地址,如下图:
也可以在rtf 文件中找到shellcode,如下图:
Shellcode通过获取RunHTMLApplication来加载恶意js
对异或后的js代码进行解密,秘钥是12
将执行js的命令行替换其原来的命令行
恶意js如下:(读取1.a文件的所有内容并且用eval执行)
(2).1.a分析
i.样本信息
ii.分析
通过分析,1.a是一个通过DotNetToJScript成生的Jscript文件,并且经过混淆过,但是还原后还可以看出来如下图:
其主要逻辑即为将内置的c# dll解密后内存加载其Work函数传入三个参数
第一个参数是黑dll的数据,第二个参数是同目录下的tmp文件数据,第二个参数是混淆的C2地址
通过调试解密出内置dll文件的base64编码
Base64解密后
删除前面加载部分然后保存为dll文件
StInstaller.dll
其Work函数是其核心
1) .检测白名单文件是否存在,若存在则拷贝到其工作目录下
2) 修改注册表添加启动项以开机启动,注册表的值为拷贝后的白名单文件路径
3) 释放对应的恶意dll和tmp文件以及配置的config文件
4) .启动白名单程序
通过API Monitor可以直观看到释放流程,如下图:
1.拷贝c:\windows\syswow64\rekeywiz.exe到c:\ProgramData\DnsFiles\rekeywiz.exe下面.
2. 释放 Duser.dll文件到C:\ProgramData\DnsFiles\Duser.dll
3. 释放 xxx.tmp 文件到 C:\ C:\ProgramData\DnsFiles\xxx.tmp
4. 使用CreatePocess 拉起 rekeywiz.exe
(3).Duser.dll分析
i.样本信息
ii.分析
Rekeywiz.exe 是一个白名单文件,存在dll劫持特性,俗称白加黑如下图:
利用rekeywiz.exe 带起Duser.dll,Duser.dll再将 ***.tmp文件,此处用***表示随机文件名,解密后,内存加载.net,使其逃避防护软件查杀.关键代码如下图所示:
选取.tmp文件的前32字节当做秘钥,对后续的字节进行异或解密后,使用Assembly.Load 加载到内存执行。
解密后,发现是一个.net后门程序,如下图所示:
(4).SystemApp.dll分析
i.样本信息
ii.分析
start函数
首先加载基础设置信息,设置两个时间回调函数GET函数,POST函数,通过基础配置Settings类的属性来判断是否需要获取系统信息,写入选择文件,最后执行两个时间回调函数GET,POST,执行时间是5000秒。
LoadSettings函数
通过Settings的settingsFilePath来获取配置文件路径,然后通过Decode函数来加载到内存,在返回一个用配置文件信息初始化的Settings类,否则返回默认配置
基础配置信息
其中可以看见默认C2地址:
https://reawk.net/202/OaZbRGT9AZ6rhLMSEWSoFykWnI7FeEbXdgvNvwZP/-1/12571/10255afc
DecodeData函数
Decode函数主要复制加解密数据文件,就是将文件的前32位当作key,循环异或后面的数据,来解码出源文件数据。
EnCode函数,也就是加密函数,和Decode函数同理
Get函数
从配置信息里面的c2地址下载数据,通过DecodeData函数解码后传入Process执行,
Process函数上半部分
Process函数主要将传入的数据文件解析执行,先申请出一个Loader类型,加载传入的data,然后将data解base64后,根据解码出来的数据的第一个byte来选择需要执行的功能
Process函数中间部分
函数可执行的主要功能:
1. 获取系统信息 写入.sif文件
2. 获取文件列表 写入.flc文件
3. 获取指定文件,先复制移动到.fls
4. 修改setting
5. 更新c2地址
6. 准备上传文件
7. 加载文件执行
8. 设置文件最大尺寸
9. 下载文件
Case功能列举表格:
Process函数下半部分
Process函数执行出现异常就写入随机命名.err文件
POST函数上半部分
POST函数中间部分
POST下半部分
POST函数结束部分
把执行写入的文件,也就是GET获取请求执行后的信息或者程序异常的的信息写入的文件,准备上传同时删除写入的文件,如果执行报错依然写入.err文件
UploadFile函数
通过之前post函数更具文件的后缀入.sif、.fls、.err等来设置type类型,构造包体,然后发包,也就是我们说的回显。改后面基本分析结束
后门获取的信息表:
三.活动总结:
1).针对中国的攻击:
部分诱饵文档如下(介于一些因素这些样本将不会给出相应的样本hash)
1.a文件与其攻击巴基斯坦的样本有着一定的相似性
但是有略微的不同
攻击中国的样本直接调用ActiveX控件对象进行解密
而攻击巴基斯坦的样本则是通过自实现的解密算法进行
样本所使用的都是Write.exe与PROPSYS.dll的白加黑组合
其中PROPSYS.dll依旧与上文流程类似
读取其同目录下的tmp文件并且区其前32个字节作为异或解密的秘钥
然后将tmp文件32个字节后的数据解密后内存加载
同样其解密后的后门与上文针对巴基斯坦的后门类似
2).对巴基斯坦的活动
SideWinder除了针对中国的目标之外,其还热衷于针对巴基斯坦的相关在目标,
与针对中国的目标有相同的特点就是Sidewinder组织对巴基斯坦的军事相关的目标也饶有兴趣,并且也会去攻击政府组织
部分诱饵如下
该组织在对巴基斯坦的攻击活动中使用了压缩包中带有lnk的攻击手法,该手法在针对中国的活动中并没有很多次的出现
Lnk载荷
针对于Lnk文件的载荷,该组织通过使用mshta.exe远程加载目标hta文件的手法
Hta文件貌似也有NotNetToScript的工具,并且其采用了不同的加载payload的方式
采用wmi的方式收集本地杀毒软件信息
替换掉内置的混淆字符串,将文件解密加载到内存中
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)