点击蓝字关注我们
一
事件概述
近日,安恒信息猎影实验室在威胁狩猎中捕获一例针对俄罗斯在线汽车交易平台的攻击诱饵。该文件以酒水单的名义伪装为压缩包文件诱惑用户打开,用户打开具有合法签名的白文件时会侧加载恶意dll文件,dll启动RuntimeBroker.exe,并利用APC注入Shellcode执行恶意功能。
值得一提的是该文件使用了开源的Shhhloader框架来执行后续恶意代码。并且我们观察到俄乌冲突持续进行,乌克兰IT网军动作不断,两者或许有着一定的联系。
二
攻击分析
样本信息
文件名 | Hash |
Алкоголь_2023_zip.iso | 0b32bd907072d95223e5eb2dc5e3d9e0 |
Алкоголь_2023_zip.iso
样本为ISO文件,文件名为俄语的“酒水_2023_zip”,ISO文件内部包含多个文件。
其中Алкоголь_2023.pdf.lnk为恶意lnk文件,运行时首先运行update.exe,然后使用浏览器打开alcohol.pdf,文档打开后显示为俄罗斯美食连锁店Globus Gourmet的酒水单。
update.exe与thumbcache.dll为有Windows签名的合法文件,thumbcache.dll实际为真正的version.dll。运行update.exe时DLL侧加载伪装的version.dll执行恶意代码。
version.dll
version.dll是使用开源shellcode加载框架Shhhloader生成的,该框架具有多种强大的功能,并且操作简单,可以快速生成具有shellcode执行能力的恶意PE文件,大大降低了攻击的难度。
version.dll首先通过GetComputerNameExA获取计算机所处的DNS域名称,并比较是否为corp.sberauto.com,如果不是的话就直接退出。sberauto是一家位于俄罗斯的在线汽车交易平台,推测为攻击者本次活动的攻击目标。
DNS域判断通过后首先会创建进程快照遍历进程获取explorer.exe的进程ID,再根据进程ID直接通过syscall调用NtOpenProcess得到进程句柄。
获取到explorer.exe进程的句柄后先通过UpdateProcThreadAttribute将explorer.exe设置为新进程的父进程来模拟正常的双击启动程序,然后创建RuntimeBroker.exe并将初始状态设置为挂起。
再在内存中解密出shellcode并通过NtAllocateVirtualMemory以及NtWriteVirtualMemory将shellcode写入RuntimeBroker.exe中。解密出的部分shellcode如下。
再通过NtProtectVirtualMemory以及NtQueueApcThread将shellcode设置为可执行的APC例程。最后通过NtAlertResumeThread成功执行该APC例程。
Shellcode
Shellcode首先从内存起始位置根据“MZ”以及“PE”标识找到Shellcode中包含的DOS头地址。
然后根据LDR链以及函数hash值获取特定的函数地址
再根据PE头中的信息分配内存以存储各节区数据,将当前Shellcode起始地址偏移0x403处的数据复制到新分配的内存中,这样新分配的内存中就不含有PE头信息,以躲避内存扫描。
写入的代码段数据如下
然后进行手动的导入表填充,导入表经过加密,在进行填充前会先将加密数据复制到空白内存进行解密,然后对解密的数据进行解析以获取需导入的dll名称以及函数。
完成导入表的解密后,会对代码段逐字节与0xC3异或以解密出真正的执行代码
完成代码段的解密之后根据PE头中的重定位表信息进行重定位处理。
最后根据PE头中的入口点信息找到入口函数并进行调用,模拟系统载入dll时进行的第一次调用。对dll进行手动导入后,再次执行dll的入口函数以执行真正的恶意操作。
新加载的dll首先将之前分配的用于手动加载dll的Shellcode内存进行释放
然后获取本机的各种信息,包括当前代码页标识符、当前进程运行位数、是否为管理员、计算机名、用户名、计算机版本、当前进程名等信息,并将各类信息合并到一起。
再对获取到的信息进行加密操作
获取到本机相关信息后与解密出的C2“adblockext.ru”建立连接
然后将之前获取的本机各种信息进行Base64编码,并替换部分字符与固定的URL拼接在一起组成完整的URL并发送GET请求。
成功发送请求后进行读取操作
成功读取到内容后开始对数据进行处理,命令格式如下所示,命令类型为32位数据,根据类型的不同执行不同的操作。
如可监听本地特定端口或者连接到指定地址建立通信
对于文件的增删查改
获取所有运行的进程信息
主要指令如下
指令 | 含义 |
0x5 | 设置指定目录为当前目录 |
0x9 | 检查特定进程位数 |
0x1A | 获取当前用户所在域名以及是否为管理员 |
0x20 | 获取当前所有进程的信息 |
0x21 | 终止进程 |
0x27 | 获取当前目录 |
0x2F | 睡眠 |
0x35 | 获取特定目录所有文件的文件时间 |
0x36 | 创建目录 |
0x37 | 获取逻辑驱动器信息 |
0x38 | 删除特定目录下的所有文件 |
0x39 | 创建文件并写入 |
0x3B | 监听端口并创建线程接受连接 |
0x3C | 创建命名管道并获取当前线程Token |
0x3D | 获取当前用户名以及所属域名 |
0x44 | 打开命名管道 |
0x43 | 打开文件并附加数据 |
0x48 | 添加环境变量 |
0x49 | 复制文件 |
0x4A | 重命名文件 |
0x4B | 检查目标进程跟当前进程是否属于同一个会话 |
0x4D | 调整进程Token权限 |
0x53 | 0x54 | 扩展环境变量 |
0x56 | 0xE | 执行connect连接 |
0x5D | 以特定用户创建进程 |
0x62 | 创建进程执行shellcode |
0x64 | 分配内存并执行shellcode |
0x66 | 0x52 | 0x4F | 监听指定端口 |
三
朔源与关联
通过溯源与关联我们又发现了多个使用Shhhloader进行打包的恶意PE文件。由此可见该框架已经受到了攻击者的青睐,被广泛用于攻击活动当中。
文件名 | Hash |
calc-shh.dll | 0BE22BE8FBB286B6C21F88E18E1886E2 |
Adobede.dll | 0b32bd907072d95223e5eb2dc5e3d9e0 |
a.dll | ECA1459BABE3E00240D5745AE272874B |
a.dll | FF49D38D87642FB5B00ECD0D3BF094F0 |
这些dll文件与前面分析过的version.dll大体框架基本相同,但细节上由于配置参数的不同而有差异。如有的dll具有沙箱检测能力,有的利用msedge.exe进行shellcode注入等。
此外根据以往攻击活动我们发现本次捕获的样本与APT29组织存在一些相同的点。首先是使用ISO文件进行攻击是APT29组织惯用的手法,在今年披露的多起攻击事件中都存在对于ISO文件的使用,并且都使用lnk文件启动白文件加载恶意dll文件。因此在初始入侵手法上,本次捕获的攻击活动与APT29存在一定的相似性。
其次是我们发现本次捕获的version.dll与该组织侧加载使用过的dll(47DDD6003534A108A173AA1FB3361739,6812031432039A89FA741E9338F8E887)存在代码上的相似性,在导出函数中存在两个TLS回调函数,并且回调函数内容相同。
当然仅凭这些相似点我们无法确认此次攻击来自于APT29,或者也有可能该攻击组织在有意模仿APT29的攻击手法。而通过更深入的追踪,我们发现乌克兰IT网军在2022年11月30日曾在媒体上发布过一条消息称俄罗斯多家网上银行存在访问问题,而其中包括Sber(俄罗斯联邦储蓄银行),而本次捕获活动的攻击对象SberAuto恰好是Sber银行旗下的汽车零售服务。二者被攻击时间十分接近且具有关联性,SberAuto有可能是继Sber银行后的后续攻击。因此我们怀疑本次攻击活动或许与乌克兰IT网军有关。
四
防范建议
目前安全数据部已具备相关威胁检测能力,对应产品已完成IoC情报的集成:
●安恒产品已集成能力:
针对该事件中的最新IoC情报,以下产品的版本可自动完成更新,若无法自动更新则请联系技术人员手动更新:
(1)AiLPHA分析平台V5.0.0及以上版本
(2)AiNTA设备V1.2.2及以上版本
(3)AXDR平台V2.0.3及以上版本
(4)APT设备V2.0.67及以上版本
(5)EDR产品V2.0.17及以上版本
● 安恒云沙盒已集成了该事件中的样本特征:
用户可通过云沙盒:
https://ti.dbappsecurity.com.cn/sandbox,对可疑文件进行免费分析,并下载分析报告。
安恒安全数据部, 下设猎影实验室、零壹实验室、析安实验室和回声实验室,团队以数据分析与技术研究为核心,致力于数据驱动安全创造用户价值。
猎影实验室
高级威胁研究团队,专注于APT攻击发现、分析、检测、溯源、防御等研究,以及积累了海量的IoC情报数据。
网络安全研究宅基地
扫码关注我们,一群技术宅