01
概述
近期,知道创宇404高级威胁情报团队捕获到Patchwork组织疑似针对不丹的攻击样本,该样本除加载已多次发现的go语言后门(以下称“PGoShell”)外,还大规模增强了功能。与此同时,样本首次使用了红队工具Brute Ratel C4,即近期观察到的比较大的武器更新。该组织在最近2年的攻击活动中,于技术方面比其他同源组织投入的热情更多,并不断更新自身的武器库及加载方式。迄今为止,已发现该组织使用了超过10种不同的木马及加载方式。以下将对本次发现进行分析和描述。
02
组织背景
Patchwork (又称Dropping Elephant)是一个极为的高级持续性威胁 (APT) 组织,自 2014 年以来一直活动。Patchwork 主要针对东亚及南亚等亚洲地区的政府、国防和外交组织以及大学,科研机构。
03
攻击链
样本链如下图所示:
04
样本综述
此次捕获样本为lnk文件,其主要功能是下载诱饵及后续载荷,经过对载荷的分析后发现此次攻击使用的武器包含PGoShell以及红队攻击框架Brute Ratel C4,详情如下:
-
lnk分析描述:
lnk文件名为Large_Innovation_Project_for_Bhutan.pdf.lnk,当用户未开启文件后缀显示时,极易将其当作pdf文档打开,lnk运行后其中包含的脚本参数得以运行:
lnk参数
参数包含的操作如下:
操作一:
访问并下载uri(hxxps://adaptation-funds.org/documents/Large_Innovation_Project_for_Bhutan.pdf)文件至本地 C:UsersPublicLarge_Innovation_Project_for_Bhutan.pdf,该文件为诱饵文档,下载完成后运行。
诱饵文档部分截图
诱饵文档内容为adaptation fund(适应基金董事会)关于不丹的项目提案为诱饵,疑似针对不丹相关机构和个人
操作二:
访问并下载uri(hxxps://beijingtv.org/wpytd52vDw/brtd2389aw)数据至本地C:UsersPublichal,并将其重命名为C:UsersPublicedputil.dll
值得注意的是该域名疑似仿冒北京电视台
操作三:
访问并下载uri(hxxps://beijingtv.org/ogQas32xzsy6/fRgt9azswq1e)数据至本地C:UsersPublicsam,并将其重命名为C:UsersPublicWinver.exe
操作四:
从系统目录复制resmon.exe到C:UsersPublicresmon.exe,创建名为MicroUpdate的计划任务,该计划任务每分钟执行一次,执行目标为C:UsersPublicresmon.exe。创建名为MicroUppdate的计划任务,该计划任务每分钟执行一次,执行目标为C:UsersPublicWinver.exe,最终删除lnk文件。
-
Brute Ratel C4(edputil.dll)分析:
Brute Ratel C4 loader分析描述:
resmon.exe为系统文件,运行后会加载edputil.dll,基于windows默认加载原则,与resmon.exe同目录下的edputil.dll将被加载,edputil.dll使用themida加壳:
edputil.dll区段中的.themida段
最终resmon.exe加载EdpGetIsManaged导出函数:
edputil.dll导出表
EdpGetIsManaged导出的主要功能既是Brute Ratel C4 loader,首先攻击者利用自定义的hash算法获取api地址;
通过hash获取api地址
为达到unhook和反调试的目的,攻击者将获取对应函数的系统调用号,然后获取“syscall”指令地址,以下以NtProtectVirtualMemory函数为例,其中调用号为“0x50”:
获取调用号及“syscall”地址
后续若需要调用NtProtectVirtualMemory,则只需要将调用号(0x50)传入eax,再调用“syscall”的地址即可完成函数的调用,利用此调用方式,传统的下断点将失效:
syscall调用代码片段
将shellcode写入申请的内存中,更改新分配的内存的保护,通过NtCreateThreadEx创建线程并执行:
Shellcode运行
Shellcode的主要功能是加载最终载荷(Brute Ratel C4),首先会进行调试器检测,通过对PEB中的NtGlobalFlag值进行对比,若为0x70则结束运行。
调试器检测
获取后续需要使用的api地址:
获取api地址
接下来进行系统时间检测,若当前系统时间超过硬编码的时间戳(0x66c0666d),则结束运行:
运行时间检测
使用RC4算法解密出后续需要加载的文件名(chakra.dll),该文件主要作为Brute Ratel C4的载体:
解密数据
当chakra.dll被加载后,将去除了“MZ”头的最终载荷Brute Ratel C4写入chakra.dll的地址空间,并模拟加载Brute Ratel C4:
去掉”MZ”的Brute Ratel C4
将数据写入chakra.dll内存空间
获取OEP并跳转执行,最终执行载荷既是Brute Ratel C4:
跳转OEP执行
-
Brute Ratel C4简述
Brute Ratel C4是一个红队框架,被视为Cobalt Strike 的替代品,该框架能够实现诸如文件管理、端口扫描、文件上传下载、屏幕截图等功能,以下为本次该载荷的配置截图,各项配置间使用“|”进行分隔:
Brute Ratel C4配置截图
-
PGoShell(Winver.exe)分析
PGoShell由Go语言开发,总体来看其功能较丰富,包括远程shell、屏幕截图,载荷下载执行等,由于首次发现该武器时主要功能为远程shell故而得名。相关详细逆向分析内容如下:
初始化URI、RC4密钥,User-Agent,本次样本中RC4密钥内容为“0g8RXt137ODBeqPhTv2XYjgmnxUsijfc”。
初始化URI、RC4密钥
检测HKCUSoftwareMicrosoftWinTemp是否存在,存在则获取temp键对应的值,若不存在则生成随机字符串,并使用RC4+base64加密后写入,该值将作为ID被上传到服务端:
进入信息收集&交互模块后PGoShell首先会尝试获取主机信息(主机名、用户名、当前主机对公IP、当前主机所处国家<ip及国家信息由查询ip-api.com获取>、当前系统版本、当前执行路径、进程PID、PROCESSOR_ARCHITECTURE信息),获取成功后将对应的数据进行拼接,各信息数据使用“||”进行分隔。</ip及国家信息由查询ip-api.com获取>
获取主机信息并拼接
PGoShell获取到的所有数据均会使用RC4+base64进行编码(截图中main_AESENC为攻击者迷惑分析人员编写的函数名,其内在实际为RC4+base64):
RC4 Key及其解密数据
随后将拼接的数据发送到服务端,并从服务端获取数据,上线信息以及交互信息上传方式均采用POST方式上传
PGoShell部分功能如下表:
05
总结
本次捕获的攻击活动主要以adaptation fund(适应基金董事会)关于不丹的项目提案作为诱饵,针对对象疑似为不丹相关机构和个人。在此次攻击活动中,首次发现Patchwork组织使用Brute Ratel C4作为武器。整个Brute Ratel C4加载运行过程为纯内存加载,能够有效对抗终端设备检测。在加载过程中,多次进行反调试和解除挂钩操作,并在执行周期上进行了限制。这表明该组织正在积极扩充其武器库。根据网络信息,Brute Ratel C4的作者来自于印度:
目前该工具的价格为US$3000,patchwork组织在购买该工具的时候或许可以获得一定折扣。
此外,我们注意到本次使用的PGoShell在功能上进行了极大的扩展,与以往发现的攻击样本相比更加先进。而PGoShell作为该组织自研的后门工具实施了大规模的功能更新,可见该武器对于patchwork组织的重要程度。我们有理由相信,PGoShell在以往的攻击活动中帮助Patchwork取得了显著成果,未来,该组织可能会更多地使用这一武器发起攻击。
06
IOC
C2:
Beijingtv[.]org
Cartmizer[.]info
longwang.b-cdn[.]net
07
参考链接
[1] https://unit42.paloaltonetworks.com/brute-ratel-c4-tool/
原文始发于微信公众号(知道创宇):威胁情报 | Patchwork 组织更新武器库,首次利用 Brute Ratel C4 和 PGoshell 增强版发起攻击
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论