事件背景
近日,安恒信息中央研究院猎影实验室追踪到一起针对中东地区的网络间谍活动,经研究,此次活动与之前的攻击攻击活动存在许多相似之处,因此背后的攻击组织被归因为Gaza Cybergang Group2:AridViper。
在本次攻击活动中,Gaza Cybergang Group2(AridViper)以“法塔赫运动和巴勒斯坦事业的未来”话题为诱饵再次针对巴勒斯坦地区目标进行网络钓鱼活动攻击。在深度跟踪此次活动后我们有如下发现:
在宏代码方面,样本未使用Download URL进行下一阶段负载下载,而是将数据流以字符串形式存储在宏代码中,随后释放在本地;
流量特征方面,该组织弃用了过去以明文命名数据包字段的做法,转而使用随机字符替代;
后续负载疑似为Pierogi Backdoor的C++版本,该版本中用到了开源CURL框架进行通信,以及开源的Nlohmann对C2服务器返回的json数据进行解析
组织概述
Gaza Cybergang Group该组织自2012年开始活跃,是一个出于政治动机,以Arab语为主的高级威胁组织。由于该组织攻击目标一致,在攻击活动中涉及到的恶意软件及感染阶段较为分散,因此Kaspersky研究人员将该组分为了三个子组:
1、Gaza Cybergang Group1:即Molerats,该小组自2012年一直活跃,其使用鱼叉式网络钓鱼邮件针对中东及北非地区的目标,鱼叉式网络钓鱼邮件主题常附加巴勒斯坦权力机构相关的诱饵诱使目标下载并运行恶意文件。该组织在活动中使用多种恶意软件,包括自研特马以及其他通用工具;
2、Gaza Cybergang Group2:也称Desert Falcons、AridViper,该小组除了针对中东及北非目标外,还发起过针对欧洲及亚洲国家的恶意活动。其自研攻击武器以Windows端恶意软件Kasperagent、Micropsia以及Android端恶意软件Vamp、GnatSpy为主;
3、Gaza Cybergang Group3:该小组被认为是Operation Parliament的幕后黑手,也是三个子组中攻击技术和手法最为复杂的。其专注于中东、北美、欧洲和亚洲的高知名度目标,据报道,该组织曾袭击过政府机构、议会、参议院、外交机构,甚至奥林匹克和其他体育机构。
三个子组使用不同的攻击技术,但在某些情况下,攻击者会共享初始感染阶段后的工具和命令,例如Group1部署的恶意脚本分发Group2的恶意软件。也正因如此,这些子组被统称为Gaza Cybergang。
近期攻击活动分析
01 攻击流程图
02 DOCM文件
初始样本是以《法塔赫运动和巴勒斯坦事业的未来》话题为诱饵的带有恶意宏代码的DOCM文件:
03 宏代码
宏代码运行后将HEX字节以字符串的形式写入本地文件C:\ProgramData\wifidatacapabilityhandler.txt:
随后读取TXT文件内容将其转化成字节流重新写入本地文件C:\ProgramData\wifidatacapabilityhandler.exe,并加载执行
04 后门
样本运行后首先获取%Temp%目录并在该目录下新建MilliebyBrownTechanimationGB文件夹:
接着通过ShellExecuteA函数调用cmd.exe将自身启动快捷方式复制到开启自启目录下实现持久化操作:
然后根据操作系统版本选择HTTP/HTTPS协议URL:若运行环境为Windows 7,后续则使用HTTP协议通信。本报告样本调试环境为Windows 7。
获取本机信息与指定字段组成POST包进行初次上传:
其中各个字段对应获取到的内容如下:
K8vOE7pWbD字段(ComputerName):
读取C:\Users\gg\AppData\Local\Temp\MilliebyBrownTechanimationGB\SearchFilterHostbv.txt文件内容,若文件内容为空,则获取计算机名经base64编码后写入TXT文件中
Xs6LSe4MIq字段(AVGInfo):
通过WMI SQL查询本机反病毒软件:
bznARe3QwA字段(OSInfo):
通过注册表查询本机系统版本:
OUlAOZ7Fa0字段(文件运行路径)
U41kWElueg字段(内置字符串QS-02)
后门上传至服务器的POST包如下:
成功上传窃密信息后,等待C2进一步下发指令:
Path | Method | Variables |
/vB7uYS1rAQBX3dLm/dojp82iKL0KFt081//gW8Gz8na9kQmKQsc/ | 上传信息 | K8vOE7pWbD、Xs6LSe4MIq、bznARe3QwA、OUlAOZ7Fa0、U41kWElueg |
/vB7uYS1rAQBX3dLm/dojp82iKL0KFt081/MgSBEBXuG01RVWDB/ | 上传信息 | K8vOE7pWbD |
/vB7uYS1rAQBX3dLm/dojp82iKL0KFt081/n7RyOPKaeyTRD0cD/ | K8vOE7pWbD、HChdIuD7Gp | |
/vB7uYS1rAQBX3dLm/dojp82iKL0KFt081/ta8rl3dT9ZRP8C/ | 屏幕截图 | K8vOE7pWbD、Iwesaq K8vOE7pWbD、HChdIuD7Gp、Iwesaq |
/vB7uYS1rAQBX3dLm/dojp82iKL0KFt081/fcDBg7ysDVPMYL[M]9/ | 下载后续 | K8vOE7pWbD、fm3rYw5iYS |
单向测试发包结果如下:
POST .../MgSBEBXuG01RVWDB/...,字段:K8vOE7pWbD 计算机名。
通过Nlohmann::json解析json数据中的HChdIuD7Gp字段信息,debug过程中该字段为null。
C2返回指令包括:PelayoFingerprintcr-获取屏幕截图,Kodinsky-shell指令执行,Ishikawal-后续文件下载与执行:
PelayoFingerprintcr标识(Pelayo西班牙人名):屏幕截图
校验yDVy8x字段返回值,若校验成功则进行以下操作,根据后续数据库报错信息推测yDVy8x字段可能为reques_id。
获取时间戳,在%Temp%MilliebyBrownTechanimationGB/目录下创建以时间戳为名的.mhi文件,用于存储通过模拟键盘PRINT SCREEN键捕获到的屏幕快照数据,与C2通信后删除.mhi文件。
POST .../ta8rl3dT9ZRP8C/...,字段:K8vOE7pWbD 计算机名,Iwesaq 捕获的屏幕截图数据:
POST .../n7RyOPKaeyTRD0cD/...,字段:K8vOE7pWbD 计算机名,HChdIuD7Gp字段经解析后为null值,为C2服务器回传字段。
Kodinsky标识(人名):shell指令执
校验yDVy8x字段返回值,若校验成功则进行以下操作:
接收K1BkPO字段信息,debug过程中该字段为null,根据后续上传信息猜测K1BkPO字段为C2服务器回传的shell指令在%Temp%MilliebyBrownTechanimationGB/目录下创建以随机字符命名的文件RYwTiizs2_1654843986.txt,该文件用于存放shell指令执行结果:
该POST请求将获取信息直接存放数据库中,由于未获取到C2服务器回传的request_id,因此POST数据入库失败
{"error":"SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'null' for column 'request_id' at row 1 (SQL: insert into `files` (`name`, `device_id`, `request_id`, `path`, `parts`, `updated_at`, `created_at`) values (RYwTiizs2_1654843986.txt, 426, null, public\/files\/426\/docs\/RYwTiizs2_1654843986.txt, 0, 2022-06-10 10:04:39, 2022-06-10 10:04:39))","s_code":400}
这里K1BkPO字段为null,因此执行结果为空。
Ishikawal标识(人名):后续文件下载与执行
校验yDVy8x字段返回值,若校验成功则进行以下操作:
接收K1BkPO、NJ4mVB字段信息,debug过程中该字段均为null,在%Temp%MilliebyBrownTechanimationGB/目录下创建WindowLanWlanWwanSwitchingServiceUW.txt,用于接收后续负载执行。
此外,本次捕获的后门样本在通信中使用了新版本开源curl框架,支持HTTPS协议传输,可使通信变得更加隐蔽。
05 ATT&CK
ID | Name | |
T1583 | .001 | 注册域名用于攻击活动 |
T1156 | .001 | 使用鱼叉式网络钓鱼邮件 |
T1059 | .005 | 使用VB脚本执行恶意代码 |
T1204 | .002 | 引导用户执行的恶意文件 |
T1053 | .001 | 在%AppData%\Microsoft\Windows\Start Menu\Programs\Startup目录创建快捷方式实现持久化 |
T1560 | .003 | 使用base64对收集到的数据进行编码 |
T1005 | 搜索本地文件系统并窃取敏感数据 | |
T1573 | 使用base64对收集到的信息信息进行编码,并以一定的间隔时间发送到C2 |
总结
研究人员对本次活动投递的恶意样本分析后发现,本次捕获样本除了使用人名作为指令标识外,还在以下几个方面与已知的活动存在关联。
01 宏代码特征
此次捕获样本与Cybereason 2020年披露的Molerats活动[1]中的恶意DOC文档以及Pierogi后门的重合之处:
01
宏代码均将有效负载先写入TXT文件再创建PE文件写入
02
后门均使用WMI SQL查询本机的反病毒软件信息
03
均在%AppData%\Microsoft\Windows\Start Menu\Programs\Startup目录创建快捷方式实现持久化
04
Pierogi后门发送到C2的信息包括:cname计算机名、av反病毒软件、osversion操作系统版本、aname恶意软件在受感染机器上的位置,与此次捕获样本所上传的信息相同
05
C2下发指令包括:截屏、shell指令以及文件下载,与此次捕获的后门样本C2下发指令完全重合
不同的是,以往活动中的恶意DOC文档通过Download URL获取后续负载,此次捕获DOCM文档将恶意负载以字符串的形式内嵌在宏代码中。此外,上述后门(Pierogi Backdoor)使用Delphi编写,此次捕获样本为C++编写。
02 网络流量特征
本次捕获样本的网络流量特征与研究人员于2020年披露的AridViper攻击活动有相似之处,响应包格式均为:"key" : ["The key is required."]。“巧合”的是,后门的POST包缺省字段均为反病毒软件查询字段:
03 URL路径结构
此次捕获后门连接到的URL路径与Palo Alto 2020年披露的AridViper新型python后门PyMICROPSIA[2]连接的URL路径结构的风格相似,均为随机字符组成:
04 加密算法
最后,在代码细节方面,我们发现此次捕获后门在算法处与AridViper历史样本中存在一致的部分。
综上,此次活动可以归属到Gaza Cybergang组织下的子组2:AridViper。在经过大量关联对比分析,我们也证实了该组织内部子组存在恶意软件资源共享。