概述
2024年7月1日,绿盟科技伏影实验室依托全球威胁狩猎系统捕获了由APT攻击者Actor240524发起的针对阿塞拜疆和以色列的攻击活动。对本次攻击活动进行深入挖掘,共捕获了该组织的两种新型武器,分别是ABCloader和ABCsync。
此次攻击事件中,Actor240524攻击者使用鱼叉式钓鱼邮件,针对阿以外交人员发起攻击,意图通过新型武器窃取敏感数据。
通过对此次事件中的攻击战术、攻击手段、攻击武器以及攻击设施分析研判,发现已暴露的攻击特征与已知APT组织无直接关联。因此,伏影实验室将此次攻击活动的攻击者归因为一个新的攻击组织,并将该组织标记为Actor240524,将该组织使用的新型木马程序命名为ABCloader和ABCsync。
Actor240524具有窃密及修改文件数据等攻击能力,会使用多种对抗技术,避免攻击技战术过多暴露。该攻击者已知攻击目标主要为阿塞拜疆、以色列两国外交相关人员。
组织名 |
Actor240524 |
攻击目标 |
阿塞拜疆、以色列 |
攻击方式 |
鱼叉式钓鱼 |
攻击武器 |
ABCloader、ABCsync |
技术能力 |
木马开发能力、对抗分析调试能力 |
本次事件中攻击者使用内嵌恶意宏代码的Word文档作为诱饵,文件名为“iden.doc”,其内容是三张模糊的图片。
图片2.1为政府网站或新闻机构发布的公文。
图片2.2为阿塞拜疆官网页面,记录了阿塞拜疆国会图标、名称以及部分链接。
图片2.3为阿塞拜疆官网页面,记录了阿塞拜疆内阁大楼以及行政人员列表。
伏影实验室发现,该诱饵文档首先出现在以色列区域,而上述诱饵图片中出现的语言均为阿塞拜疆语。
阿塞拜疆与以色列是盟友国,在经济与政治等层面有密切的往来,Actor240524的本次行动很可能是瞄准了阿以两国的合作关系,针对两国外交相关人员发起的钓鱼攻击。
图2.1 Actor240524组织使用的诱饵文件
图2.2 Actor240524组织使用的诱饵文件
图2.3 Actor240524组织使用的诱饵文件
3.1 攻击流程
攻击者通过带有模糊图片的恶意文档,诱骗目标主动点击“启用内容”执行恶意代码。其运行后会读取自身中的加密数据,释放三个可执行文件,最后执行ABCsync。本次事件的攻击流程总结如下:
-
打开文档后提示用户点击“启用内容”。用户点击后执行宏代码,利用doc中嵌入的VBA程序,解码自身存储的恶意载荷到指定路径下最后执行ABCloader。
-
执行“MicrosoftWordUpdater.log”(ABCloader)解密并释放三个可执行文件并加载后续“synchronize.dll”(ABCsync)。
-
ABCsync会连接C2,接收远程指令并执行指令对应功能。
图3.1 此次事件的复原攻击流程
受害者运行钓鱼文档后执行的VBA脚本功能为:解码自身存储的恶意载荷到指定路径"C:\Users\Public\Documents\MicrosoftWordUpdater.log" 下(该文件为.exe文件,攻击者将其后缀名修改为.log,以迷惑用户),随后执行指令运行该程序,代码如下:
图3.2 恶意宏代码
3.2 ABCloader主要行为分析
“MicrosoftWordUpdater.log”(ABCloader)是一个加载器,文件是一个后缀名改成.log的.exe文件。主要功能为判断运行环境后解密程序并加载后续dll(ABCsync)。
程序运行后会进行初始化,执行解密函数名称并动态获取函数地址,存入一个全局结构体数组中待后续使用。
图3.3 执行初始化
随后执行多种反沙箱,反分析技术进行环境检测。如检测到沙箱环境或分析行为将跳转到退出函数,执行该函数以退出当前进程。
图3.4 检测到分析行为后退出进程
通过反分析检测后,会解密存储于当前程序中的加密数据,将解密后的数据写入指定位置中(C:\Users\AppData\Local\Microsoft\Edge\User Data\Synchronize\)。根据内存位置0x7ffe0260的值是否小于0x4E20进行判断 ,解密出 “vcruntime220.dll”或“vcruntime190.dll”中的一个,随后固定解密两个文件,“synchronize.dll”和“synchronize.exe”。最后加载“synchronize.dll”动态链接库(ABCsync)。
图3.5 加载“synchronize.dll”动态链接库
加载器“ABCloader”和恶意载荷“ABCsync”中使用了相似的对抗分析检测方法。下面将对木马中的对抗技术进行详细描述。
4.1 API加密
程序中重要字符串(文件路径、文件名、密钥、报错信息、C2地址),重要API函数均使用加密处理,以应对沙箱检测及静态分析。
图4.1 字符串加密
4.2 PEB检测
检测BeingDebugged字段和NtGlobalFlag标志,检测进程是否正在被调试。其中PEB中的BeingDebugged字段,如果该字段为1,判断进程正在被调试。
图 4.2 使用PEB进行反调试
通过调用NtQueryInformationProcess函数检测是否存在调试器,通过检测ProcessDebugPort(0x7)、ProcessDebugObjectHandle(0x1E)判断进程是否处于调试状态。
图4.3 通过调用NtQueryInformationProcess函数检测程序状态
4.3 硬件断电检测
通过检查硬件断点是否被设置,判断是否存在调试行为:
图4.4 检测硬件断点反调试
4.4 检测所有屏幕分辨率
检测屏幕分辨率判断虚拟机和沙箱环境:通过判断显示器是否使用常规分辨率(分辨率:1920,2560,1440,1080,1200,1600,900)判断进程是否运行在沙箱或者虚拟机环境。
图4.5 枚举系统中的所有显示器
4.5 进程数量检测
判断系统中运行的进程是否小于200个,小于200退出进程:
图4.6 判断当前系统进程运行数量
4.6 特定的权限检测
当前进程的访问令牌是否具有特定的权限(内置域和管理员组),通过检测特殊权限判断进程运行环境:
图4.7 检查当前进程令牌是否属于特定的 SID 组
5.1 概述
“ABCsync”是攻击过程中的攻击载荷部分,其主要功能为执行远程shell、修改用户数据、窃取用户文件等。
“ABCsync”使用与“ABCloader”中同样的对抗技术,通信数据加密传输。多个通信指令组合完成一个功能,猜测程序仍在测试阶段。
首先“ABCloader”会加载“ABCsync”,然后使用同样的对抗技术进行反调试。再进行字符串和AES加密密钥初始化,创建注册表项及键值,实现COM组件劫持。最后连接C2接收指令并执行。
5.2 通信
5.2.1 与服务端进行上线通信
解密出C2地址"185.23.253.143"后连接并发送固定数据包。发送数据包之后服务器会自动发送指令“aaaa”(解密后)。执行获取计算机基础信息功能。循环接收指令并发送上线包直到下一步指令更新。
5.2.2 通信数据加密方法
程序使用UDP协议进行通信,通信过程中使用AES加密中的AES-256 算法(加密模式为 ChainingModeCBC)以加密通信数据。
图5.1 初始化AES加密函数
5.3 功能
木马程序的主要功能为通过管道通信执行远程shell和修改用户数据,窃取用户文件等。C2端下发指令功能多为分步进行,且客户端会回传错误信息。故猜测此程序仍在持续开发测试阶段。因为指令详细且每步执行功能细化有序,猜测这个木马程序有非常复杂的控制端,对功能进行组合执行更多样的操作。
5.3.1 匿名管道执行远程shell
其中执行远程shell要先由服务端按需求下达指令“aaaaaa aaaaa-”,建立CMD与当前进程的管道通信。再通过发送“aaaa aaaaaaa+CMD指令”将想要执行的CMD指令发送到客户端,以执行远程shell指令。
图5.2 建立匿名管道
5.3.2窃取用户指定文件
获取文件数据需要服务端先发送“bbbbbbbb-”,客户端创建文件得到句柄并获取该文件的大小。通过指令后面的参数标识获取文件位置。再发送指令“aaaa-aaaaa-” 通过句柄读取文件数据并发送到服务端。
图5.3 读取要发送的文件
5.3.3 修改计算机中的文件
改写计算机中指定文件的内容,会先通过“aaaaaa-” 指令设置想修改的文件,再使用“aaaaaaaa-”指令设置修改的数据,进行具体修改操作。通过API实现指定文件的修改。
5.3.4 具体功能参数对照表
参数会跟在指令后,形成一个长字符串:
指令 |
参数 |
功能 |
发送值 |
aaaa |
– |
发送系统信息 |
加密后的系统信息 |
aaa aaaaa- |
– |
解析指令 |
– |
aaaaaa aaaaa- |
– |
建立CMD与当前进程的管道通信 (创建管道用于后续执行cmd指令) |
失败发送bbbbbb |
aaaa aaaaaaa |
要执行的CMD指令 |
写入要执行的CMD指令 |
失败发送bbbbbb |
aaaaa aaaaaa |
– |
读取CMD指令执行后输出信息 |
失败返回–aa aaaa– |
aaaa aaaaa |
– |
退出进程 |
– |
aaaaaa- |
要获取的指定文件路径 |
获取指定文件句柄(打开文件,用于后续写入) |
失败发送bbbbbb |
aaaaaaaa- |
要写入文件的数据 |
写入指定内容到aaaaaa-指令获取到句柄的文件 |
– |
bbbbbbbb- |
要获取的指定文件路径 |
获取指定文件句柄和文件大小 |
失败发送bbbbbb |
aaaa-aaaaa- |
– |
发送bbbbbbbb-指令指定的文件 |
– |
ccccc |
– |
重新连接网络 |
– |
aa aaaaa |
– |
执行synchronize.exe |
– |
bbbbb |
– |
交互指令 |
aaaaaaaaaa |
– |
– |
接收数据长度为0 |
aaaaaaaaaa |
5.3.5 ABCsync中的其他行为
初始化程序执行检测,如果部分初始化失败,则弹出作者伪造的错误提示信息,用于欺骗受害者:
"The program can't start because mspdb80.dll is missing from your computer. Try reinstalling the program to fix this problem."。
图5.4 作者伪造的报错信息
木马会根据0x7ffe0260地址存储的值判断系统版本,确认要劫持的COM组件:
图5.5 系统注册表操作
6.1 synchronize.exe
synchronize.exe是一个加载器,其功能与ABCloader基本一致,主要的区别在于synchronize.exe删除了解密synchronize.exe程序的加密数据,也就是说该程序不会重复解密自身:
图6.1 加密内容传入值修改为0
6.2 vcruntime190.dll
ABCsync实现了COM组件劫持,用恶意的vcruntime190.dll替换原本被调用的LanguageComponentsInstaller.dll,实现持久化驻留能力。
系统调用LanguageComponentsInstaller.dll会导致vcruntime190.dll被调用运行,vcruntime190.dll主要功能为创建线程执行synchronize.exe,从而实现持久化(正常的组件在C:WindowsSystem32LanguageComponentsInstaller.dll):
图6.2 执行程序synchronize.exe
6.3 Vcruntime220.dll
Vcruntime220.dll功能与vcruntime190.dll相同。用恶意的dll替换原本被调用的可执行文件,实现持久化驻留能力。区别在于Vcruntime220.dll利用COM组件为Windows.UI.FileExplorer.dll。 Windows.UI.FileExplorer.dll主要用于支持文件资源管理器的某些功能和界面元素。正常的组件在(C:WindowsSystem32Windows.UI.FileExplorer.dll)。
HASH
iden.doc:
1ee73b17111ab0ffb2f62690310f4ada 诱饵文件
C2:
185.23.253.143:36731
关于绿盟科技伏影实验室
研究目标包括Botnet、APT高级威胁,DDoS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁及新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。
绿盟威胁情报中心
绿盟威胁情报中心(NSFOCUS Threat Intelligence center, NTI)是绿盟科技为落实智慧安全3.0战略,促进网络空间安全生态建设和威胁情报应用,增强客户攻防对抗能力而组建的专业性安全研究组织。其依托公司专业的安全团队和强大的安全研究能力,对全球网络安全威胁和态势进行持续观察和分析,以威胁情报的生产、运营、应用等能力及关键技术作为核心研究内容,推出了绿盟威胁情报平台以及一系列集成威胁情报的新一代安全产品,为用户提供可操作的情报数据、专业的情报服务和高效的威胁防护能力,帮助用户更好地了解和应对各类网络威胁。(绿盟威胁情报中心官网:https://nti.nsfocus.com/)
原文始发于微信公众号(绿盟科技威胁情报):新APT组织Actor240524针对阿以两国外交人员的网络攻击