• APT样本分析 -plugx家族RAT⽊⻢


    APT样本分析 - plugx家族RAT⽊⻢

    ⼀、样本概述

    样 本 从 海 莲 花 服 务 器 扒 下 来 的 ( 经 提 醒 修 改 , 原 先 错 误 归 类 为 海 莲 花 ) , wsc_proxy.exe执⾏后加载wsc.dll解密wsc.dump⽂件,得到攻击模块(dll),攻击模块注⼊⾃身到系统进程后连接远控服务器上线,接收执⾏远控功能。远控功能包括:管

    理系统、⽂件、屏幕、进程、服务、⽹络、远程shell、键盘记录等。

    wsc_proxy.exe主要功能为:

    . 携带⼩红伞签名的exe⽂件;

    . 加载wsc.dll。

    wsc.dll主要功能为:

    . 解密并调⽤wsc.dump。

    wsc.dump主要功能为:

    . 注册⾃启服务;

    . 注⼊⾃身到系统进程svchost、msiexec;

    . 被注⼊进程连接cc,执⾏远控指令。

    ⼆、样本类型

    样本为越南海莲花组织开发,plugx⽊⻢程序。未加壳,通过注册服务的⽅式进⾏权限维持,实现开机启动。三、详细分析

    3.1 执⾏释放

    1. 攻击组件由三个⽂件组成wsc_proxy.exe、wsc.dll、wsc.dump。
    2. 执⾏经过,签名的合,法程序wscproxy。 .exe,并恶意加载loader程序wsc.dll。
    3. loader程序wsc.dll解密并解压缩payload⽂件。
    4. 解密的shellcode被注⼊到合法的系统进程中。
    5. 注⼊的Windows进程执⾏C2 /远控功能。

    执⾏链

    *3.2 *攻击细节

    Payload启动并挂起系统信任的⽂件svchost.exe,将具有解密加载功能的函数注⼊到 svchost进程,并在scvhost进程⼊⼝地址构造shellcode,唤醒scvhost进程执⾏ shellcode,shellcode将跳转到解密加载函数,该函数解密wsc.dump⽂件并执⾏ payload。

    如上操作后,payload将运⾏在⽩名单进程中,达到隐藏⾃身的⽬的,后续注⼊挖空进程msiexec.exe的过程与之相同。

    3.3 远控模块

    远控功能包括,系统配,置、⽂件管理。 、屏幕监视、进程管理、服务管理、远程shell、⽹络配置、注册表管理、数据库管理、键盘记录等。

    表⼀

    表⼆

    表三

    表四

    表五

    表六

    表七

    表⼋

    表九

    表⼗

    表⼗⼀


    表⼗⼆

    表⼗三

    3.4 逆向细节

    3.4.1 wsc_proxy.exe

    wsc_proxy.exe⽂件数字签名为AVAST Software

    s.r.o.,来⾃安全⼚商AVAST。说明样本开发者拥有该安全⼚商私有证书,利⽤证书将样本签名,达到免杀⽬的(可能是由于⼚商的数字签名私钥泄露或被破解)。

    wsc_proxy.exe数字签名

    0x1 加载“解密dll”

    wsc_proxy.exe为带签名的⽩名单程序,程序功能为:加载wsc.dll。

    3.4.2 wsc.dll

    0x1 构造shellcode

    wsc.dll 构 造 了 ⼀ 段 shellcode 调 ⽤ wsc.dll 导 出 函 数 sub_10001000 , 构 造 地 址 为 wsc_proxy.exe加载⾃身完成时。sub_10001000为加载函数。

    构造shellcode

    Shellcode地址

    执⾏流程

    0x2加载wsc.dump

    读取wsc.dump到内存,修改内存属性为可执⾏,跳转到⽬标wsc.dump地址执⾏。

    ⽂件路径

    修改内存属性,跳转执⾏

    3.4.3 wsc.dump

    ⽂件wsc.dump猜测为样本开发者从内存中dump函数指令得到⼆进制⽂件,跳转到⽂件

    ⾸地址即可正常执⾏函数。

    0x1 解密解压缩并执⾏payload

    解此密为临ws时c链.d接ump,仅⽤⾃于带预览的,加将密在短数据期内失,效再。次解压得到⼀个dll⽂件,在内存中展开PE⽂件并修复重定位。上述操作完毕后调⽤该payload(dll)。

    在该⽚内存中标记“PLUG”。

    解密算法

    解压得到payload

    3.4.4 payload

    Payload每次启动将检查启动环境,并据此进⾏⼀些初始化操作。同时payload将根据启动参数执⾏不同的功能。

    0x1 初始化

    提升权限

    2) 复制到指令⽬录

    复制样本组件到路径"C:\ProgramData\Windows NT\accessories\ wsc_proxy.exe",⽂件属性为隐藏,再次启动wsc_proxy.exe。

    0x2 注册⾃启服务:100进程

    主要⽬的为注册⾃启服务,注册服务之前有检查权限和提升权限的操作。

    提权

    利⽤⽅法:COM提升名称(COM Elevation

    Moniker)技术提升接⼝权限,ICMLuaUtil接⼝启动附带管理员权限进程wsc_proxy.exe 进程,启动参数为100。

    进程监控

    注册服务

    创建服务

    注册表被添加的启动服务

    0x3 注⼊、挖空svchost进程:200进程

    该进程将查找系统⽂件svchost.exe,启动并挂起svchost,随后修改svchost进程内存,将⼀个功能为“解密、解压缩wsc.dll并加载payload”的函数写⼊到svchost进程内存,寻找⼊⼝地址OEP并在此构造shellcode跳转到解密解压缩函数。

    恢复svchost主线程,执⾏解密解压缩操作,执⾏payload。

    创建挂起进程,svchost,

    计算跳转

    构建shellcode

    0x4 svchost进程:201进程

    创建内存映射,保存⼀些⼯具类函数,待后续使⽤。

    保存跨进程访问的⼯具类函数

    保存功能函数

    磁盘管理

    注册表操作

    进程管理

    枚举⽹络资源

    获取⽹络状态

    计算机设置

    端⼝映射

    服务管理

    启动远程cmd

    数据库操作

    启动telnet服务

    Hook键盘消息

    保存键盘记录到本地

    剪切板记录

    创建、注⼊、挖空msiexec进程

    操作过程与操作svchost相同,⻅下图。

    上线、通讯

    通讯线程为OlProcNotify,该线程能够使⽤三种协议尝试连接地址steam.dajuw.com,端⼝为443。

    通信成功后发送附带加密key的加密报⽂,在接收处理循环中接收执⾏远控指令。

    执⾏流程

    上线协议

    发送接收指令消息

    接收消息、处理指令

    4)插件管理器

    远控服务器可以发送指令创建模块管理线程,线程名为:OlProcManager。该线程同样先使⽤指定的协议连接服务器,并进⼊⼊⼀个“发送-接收-处理”循环,遍历执⾏远控模块具有的功能(管理磁盘、⽂件、屏幕…)。

    发送消息

    接收指令循环

    执⾏功能

    0x5 msiexec进程:209进程

    209进程同201进程将功能模块函数安装,并创建管道实现进程通讯。此外,209进程创建DoImpUserProc线程接收指令执⾏功能函数。

    功能安装与管道通讯

    执⾏功能

    0x5 300进程

    300进程操作:关闭并删除远控服务,清理远控留下的注册表痕迹,最后将远控程序和

    ⽂件删除。

    样本特征

    暂不提供

  • 相关阅读:
    PlatformIO 创建 libopencm3 + FreeRTOS 项目
    springboot项目部署到linux服务器
    Linux进阶-Makefile
    Spring八股文
    Spring Boot 如何实现单点登录(SSO)
    一张图进阶 RocketMQ - NameServer
    hash算法
    【Axure教程】多选穿梭框
    Quartus 实例应用(2)——创建设计工程
    跑出了几个明星厂商,DaaS赛道要火?
  • 原文地址:https://blog.csdn.net/sinat_35360663/article/details/127715921