APT组织“蔓灵花”近期活动分析–“ORPCBackdoor”武器逆向分析

APT 3个月前 admin
41 0 0

前言

上接前文,“APT组织“蔓灵花”近期活动分析–恶意邮件附件”介绍了恶意附件执行的常见手法,包括:

  • 恶意“.chm”文件投放
  • 恶意”DDE”隐藏域代码执行
  • “.ppt”文件PowerPoint单击鼠标事件
  • 恶意宏文档
  • 公式编辑器漏洞利用

本篇继续介绍恶意附件的后续远控武器“ORPCBackdoor”,该武器样本于2023年5月被首次曝光。文章记录分析流程较为详尽,如果你也在分析学习此样本,本文会很有帮助。

样本概述

1.样本执行流程

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

2.样本特性

  • 使用dll劫持技术。白加黑有一定的免杀效果。

  • 交互初始化和持久化均通过文件是否存在,来判断流程是否重复执行。

  • 系统信息搜集罕见的详尽。

  • 通过多层if-else来完成指定指令功能。而不是switch..case..

  • 通过远程过程调用(RPC)完成通讯。不再使用从前socket、http等。

  • 字符初始化特殊。内置的关键字符以HEX转码形式硬编码于样本中,使用时解码。包括路径、文件名、指令等。

3.远控指令功能

功能数量不多。

  • ID指令,保存服务端生成ID

  • INF指令,上传系统基本信息

  • RUN指令,文件执行

  • DLY指令,休眠指令

  • CMD指令,执行shell

  • DWN指令,文件下载

样本分析

1.入口

“MSOutlookServices.exe”执行会加载和执行包含恶意程序的动态链接库“OLMAPI32.dll”,exe文件本身不包含恶意功能。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

从“OLMAPI32.dll”导出函数情况来看,”蔓灵花“组织使用了dll劫持技术,以白加黑的形式,在安全的”version.dll“中封装了恶意程序。

安全的”version.dll“(左)与包含恶意程序“OLMAPI32.dll”(右)导出函数结构对比如图。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

恶意程序包含在GetFileVersionInfoByHandleEx()、DllMain()两个函数中。DllMain()运行即会调用GetFileVersionInfoByHandleEx(),主要的恶意功能模块也在其中。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

2.持久化

开始执行恶意功能,首先ORPCBackdoor通过当前路径“ts.dat”文件是否存在,防止多次执行持久化操作。

样本内字符硬编码以hex形式存储在文件中,后续字符获取也常见于此方法,包括路径、文件名、远控指令等。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

进入功能函数,在当前路径查看文件“ts.dat”是否存在,如果不存在则休眠1分钟。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

休眠结束创建任务调度流程,初始化COM组件后调用TaskScheduler CLSID创建计划任务“Microsoft Update”,每日零时执行“MSOutlookServices.exe”。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

任务结束后在当前路径创建“ts.dat”

3.详尽的系统信息搜集

样本继续执行,调用CreateToolhelp32Snapshot、Process32First函数获取系统中的进程、线程和模块等详细信息。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

动态调试查看获取状态。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

后续一个函数调用大量的WindowsApi和注册表读取等形式详尽的搜集了系统基本信息,并格式化和标注了搜集信息类型。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

动态调试查看获取状态。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

4.远控指令初始化

样本继续执行,初始化服务端远控指令。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

5.服务端交互初始化

交互初始化也是判断路径”C:ProgramData$cache.dat”文件是否存在,防止与服务端同时多进程交互。(同时只存在一个通讯会话)。

如果文件不存在将创建“$cache.dat”并且初始化RPC调用,初始化pct_pi_ncacn、ncacn_ip_tcp两种远程过程调用(RPC)的协议。APT组织使用的域名“outlook-services.ddns.net”硬编码在这里。调用RpcStringBindingComposeA构建RPC绑定字符串。

ncacn_ip_tcp:outlook-services.ddns.net[443]

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

没有服务端可以简单写一个RPC服务端,改好hosts表,捕获一个简单的初始化通讯。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

如果在尝试RPC调用后服务端无数据返回则休眠5分钟后继续尝试,当服务端返回命令后进入交互模块。


6. RPC通讯

通讯采用远程过程调用(RPC)协议,通过rpcrt4.dll中的导出函数NdrClientCall2()完成与服务端的通讯。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析


7. 指令功能模块

7.1 ID指令,生成ID

判断“c:ProgramData$tmp.txt”是否存在,若存在则删除,然后重新创建$tmp.txt。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

随后在$tmp.txt文件中写入从服务端获取的ID值,此ID值后续在客户端别无他用。

6.2 INF指令,上传系统基本信息

读取此前采集的详细的系统基本信息,并且上传至受控端。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

上传的基本信息在内存情况如下。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

6.3 DWN指令,文件下载

DWN指令功能为下载文件,根据对代码的分析,DWN功能模块写的十分完善,包括但不限于采集和回传报错详细、下载状态等。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

6.4 RUN指令,指定文件执行

调用Windows API WinExecAPI执行文件,返回执行状态。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

6.5 DLY指令,休眠指令

从服务端获取一个时长,做sleep操作再运行。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

6.6 CMD指令,执行shell

获取从服务端下发的Shell指令后进行指令拼接,拼接格式为cmd.exe /c |服务端下发的指令|>> c:UsersPubliccr.dat。

cmd.exe /c systeminfo >> c:UsersPubliccr.dat
cmd.exe /c whoami >> c:UsersPubliccr.dat

随后调用WinExec()API执行,执行完成后将cr.dat的内容发送至服务端,后续删除cr.dat文件

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

动态调试查看命令拼接。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析

动态调试查看调用WinExec()API执行该条执行。

APT组织“蔓灵花”近期活动分析--“ORPCBackdoor”武器逆向分析



原文始发于微信公众号(帅仔回忆录):APT组织“蔓灵花”近期活动分析–“ORPCBackdoor”武器逆向分析

版权声明:admin 发表于 2024年1月18日 上午8:51。
转载请注明:APT组织“蔓灵花”近期活动分析–“ORPCBackdoor”武器逆向分析 | CTF导航

相关文章