BITTER又名蔓灵花、APT-C-08,疑似来自南亚地区,主要攻击目标为巴基斯坦和中国。BITTER最早的攻击可追溯到2013年11月份,活跃高峰期为2015年至2016年。
BITTER 主要针对政府、军工业、电力、核等单位进行攻击,窃取敏感资料,具有强烈的政治背景。该组织最早在2016由美国安全公司Forcepoint进行了披露,并且命名为“BITTER”,同年360也跟进发布了分析报告,命名为“蔓灵花”。
由于该组织早期特马数据包头部以"BITTER"作为标识,因此国外厂商将其命名为BITTER,但是值得注意的是,自从该活动被曝光后,该组织就修改了数据包结构,不再以"BITTER"作为数据包的标识,改为五字节的随机字符进行代替。
在本文中,笔者初略的对BITTER一小类的样本进行了分析和总结。但因资源有限、C2存活时间短等原因,大部分样本都是以前都老样本,目前还有很多插件和后续payload未获取到或是还未来得及分析。也没有比较好的机会分析通信协议和C2的基础架构。但是管中窥豹,我们可以通过已有的一些资源去了解和推测,一步步揭开BIITER的神秘面纱。
根据红雨滴团队的APT_Digital_Weapon以及后来的收集,笔者整理收集到的BITTER相关样本约240个左右。截止到2020年10月,BITTER都还保持着一定的活跃度:
020 年度的攻击中,BITTER主要是使用了带0199远程模板注入漏洞的文档来替代之前的11882类文档。后续payload还是以Win32EXE为主。PE文件擅长使用Windows、Update等文件名以迷惑用户。
根据之前的分析来看,BITTER的攻击方式主要是:
鱼叉攻击->Dropper->Downloader->后续插件、RAT、Keylogger等。
通常来说,诱饵类样本类型一般有LNK、DOCX、RAR、RTF、ZIP等。
BITTER在鱼叉攻击阶段,主要是投递带有office漏洞的恶意文档,他们似乎并不喜欢使用宏进行攻击。由于BITTER所用的这些漏洞特征比较明显,笔者个人认为这类文档的免杀性应该不如带宏的文档。
其中11882漏洞文档主要是从指定地址下载文件保存到本地加载执行。
通过脚本解析文档,得到的模板注入地址去重后如下:
hxxp://maq.com.pk/wehsd 203.124.43.227
hxxp://comglobal.com.pk/wp-content/g 203.124.44.32
hxxp://oppak.com/one/opa 203.124.44.31
hxxp://netnsiservice.net/logs/crid
hxxp://w32infinitisupports.net/win/ctfd
hxxp://quartzu.hol.es/mso/x64/x32/section/update
hxxp://liveways.pk/images/rgnd 203.124.44.48
hxxp://tusdec.org.pk/ee 203.124.44.48
hxxp://sartetextile.com/news/pq
hxxp://maq.com.pk/wehsd 203.124.43.227
hxxp://quartzu.hol.es/mso/x64/x32/section/update 213.190.6.187
hxxp://quartzu.hol.es/cretmong/tangkrdg/uplandjt 213.190.6.187
hxxp://tusdec.org.pk/ee 203.124.44.48
hxxp://oppak.com/one/eths 203.124.44.31
hxxp://hartraders.com/wp-sig 203.124.44.31
hxxp://liveways.pk/images/rgnd 203.124.44.48
BITTER早期样本WinMain如下:
经过分析,该入口点是BITTER的惯用代码:
甚至从14年的样本到20年的样本都保留了该段代码
直接以这个入口点编写yara扫描一下,效果似乎还不错
早期样本在创建窗体之后,会在WinMain最后执行一个call,所有的操作都在这个函数中执行:
样本多处使用随机数sleep以逃避早期的一些沙箱检测。和其他常见的样本不同的是,BITTER比较喜欢通过CreateSemaphoreA来防止多开而不是CreateMute.
接下来,程序会通过简单的do while 给变量赋值,然后调用一个解密函数进行解密:
这里解密出了早期的C2地址和Windows的调试路径
通过多个循环将解密之后的C:\Windows\debug\WIA\ 路径存放到多个数组中
然后循环对构造出多个WIA相关的路径
获取当前路径并截取文件名
将截取到的文件名与WIA路径拼接,同时拼接出另外两个路径:
解密出指令REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Run /f /v SVC /t REG_SZ /d
接着解密出自启动的注册表键Software\\Microsoft\\Windows\\CurrentVersion\\Run
通过RegQueryValueEx查询是否存储SVC键值
由于此时未设置注册表键值,RegQueryValueEx将会返回2
然后传递到00401936函数中创建
首先创建一个输入管道和一个输出管道
获取CMD路径
创建cmd进程
PeekNamedPipe获取cmd进程返回值:
将拷贝指令传入到管道中,给cmd.exe执行,此处是将C:\Windows\debug\WIA\2.exe路径写入到开机自启动中。
REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Run /f /v SVC /t REG_SZ /d "C:\Windows\debug\WIA\2.exe"
设置后如下:
接着通过管道将自身拷贝到WIA目录下:
再通过两次管道操作,将原始文件拷贝到WIA目录并分别另存为svcm.exe和svcs.exe
接着再次通过管道使用cmd启动svcs.exe
至此,原始进程完毕。
svcs.exe主要是通过管道启动svcm.exe
当程序检测当前进程名是svcm.exe的时候才会执行关键功能。
网络请求信息如下,请求方式为POST,参数为用户的计算机ID //m2s_reply_u2.php?x=WIN-IHN30SD7IMB
接着通过GetLogicalDriveStringsW获取计算机上所有的磁盘信息
接着进行文件夹遍历
遍历所有文件并上传
收集到信息则会尝试请求m2s_uploads_u2.php
将收集到的所有信息上传到C2,包括文件名,文件类型和文件内容
综上,该样本请求C2为:range7.com,由于该样本具备多次释放文件的功能,有的厂商将其报毒为Dropper,但从行为上来说,更像是Trojan/Backdrop
样本hash:4b0e5c5c4e0e22f2dfeef0531e021072
CreateTime:2019-06-18
SubTime:2019-09-09
在历史样本信息中,笔者还看到了一例被标注为keylooger的样本。
样本由VC编写,有一个名为KeyEvent的导出函数
在WinMain函数中,程序首先是拼接出一些字符串,然后创建一个名为hfyuwejffkkfa的信号量:
接着程序通过CreateThread创建一个新线程, 在新线程中通过SetWindowshook设置键盘钩子,调用KeyEvent导出函数实现键盘监听。
从已有的资料(信号量、请求域名)来看,好像只有一例KeyLooger。
样本hash:806626d6e7a283efffb53b3831d53346
外层样本是一个自解压包,内含一个恶意文件dlhost.exe和一个诱饵文件<开证装期邮件.pdf>
很明显这是一起针对我国境内的鱼叉攻击,用于迷惑用户的文档如下
核心代码在释放的dlhost.exe文件中,dlhost由VC编译,但WinMain已经被抹去:
main函数中前面大部分代码都是进行解密字符串的操作:
解密之后一些比较关键的字符串信息如下:
依旧通过CreateSemaphorA来防止多开,创建的信号量为:7t56yr54r
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课