V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CrazyArmy
V2EX  ›  程序员

记一次蔓灵花 APT 组织针对巴基斯坦定向攻击样本的分析

  •  
  •   CrazyArmy · 2019-02-06 21:55:42 +08:00 · 3063 次点击
    这是一个创建于 2116 天前的主题,其中的信息可能已经有所发展或是发生改变。

    近日蔓灵花 APT 组织巴基斯坦进行一次定向攻击

    因为微步在线情报的 dalao 已经写过了,连接在这里 [微步在线报告] “蔓灵花”团伙发起新一轮攻击活动

    我这个弱鸡就分享一下我的分析记录吧

    0x00 开始

    样本一开始文件名是:Update Required Case Enq No 192_2018.docx.com

    稍微吐槽一下,我也不知道为啥 APT 组织这么想的

    .com 后缀的欺骗太容易看出来了

    样本截图如下:(笔者没勾去隐藏文件后缀名)

    pic1

    用到的方法是文件后缀名欺骗

    笔者查一下壳子

    pic2

    该程序应该由 c 编写的而且通过这个能看出这是一个WinMain入口的win32GUI 程序

    那我们载入 IDA 开始分析

    我们可以看到其pdb_path

    c:\Users\Asterix\Documents\Visual Studio 2008\Projects\28NovDwn\Release\28NovDwn.pdb
    

    pic3

    0x01.分析 Loader

    载入 IDA 后可以看到入口的WinMain 函数

    pic4

    Sub_401140函数里面的窗口回调函数如图,并没有任何问题

    pic5

    pic6

    调用ShowWindow函数将程序窗口设为隐藏,以达到隐蔽运行的目的

    那我们工作的重点是分析sub_401330 函数

    调用mkdir 函数创建文件夹C:\intel

    pic7

    Sub_401F00函数:通过修改注册表HKEY_CURRENT_USER\Environment

    增加**%AppId%键,键值为:C:\intel\msdtcv.exe**

    就是注册环境变量%AppId%为 C:\intel\msdtcv.exe

    1

    Sub_401F00函数内容具体如图:

    pic9

    pic10

    调用CreateThread创造线程,线程回调函数 StratAdress

    pic11

    Paramter 为:

    a

    线程回调函数StartAddress分析:主要是创造与cmd.exe的进程通信,用 WriteFile 函数向匿名管道中写入一段 cmd 命令(copy 源文件路径 C:\intel\msdtcv.exe),然后让cmd.exe 执行木马自身文件(Update Required Case Enq No 192_2018.docx.com)复制到 C:\intel\msdtcv.exe

    解密出环境变量%ComSpec%

    2

    获取环境变量%ComSpec%的路径

    3

    得到结果:cmd 的路径

    4

    建立与 cmd.exe 的匿名管道进行通讯,并创立子进程 cmd.exe

    5

    6

    调用 WriteFile 函数向 cmd.exe 写入 copy 指令实现复制文件

    7

    如下图所示:

    pic15

    pic16

    打开注册表启动项(HKEY_CURRENT_USER\Software\Microsoft\Windows\Currentversion\Run)

    判断启动项是否存在如果存在不重新写启动项,不打开木马文件转向下面执行

    如果不存在则调用CreateThread创建线程sub_404670来写入开启启动项然后退出进程

    将后续工作交给msdtcv.exe这个木马

    pic17

    线程 sub_404670如下图:

    打开注册表(HKEY_CURRENT_USER\Software\Microsoft\Windows\Currentversion\Run)

    判断是否存在mdstcv键,如果不存在则创建mdstcv键,写入cmd /c start %AppId% && exit键值关闭注册表

    若存在则直接退出线程。

    pic18

    pic19

    0x02 木马本体

    Loader将自身复制并重命名到此路径:C:\intel\mdstcv.exe

    所以,这个文件和原木马的hash是相同的

    如下图所示:

    pic20

    所以这个主体木马就是很照常的对环境变量进行检查以及对注册表启动项进行检查以及建立进程通信执行 copy但是与之不同的自然是其与C&C 服务器的交流,从下图我们可知,写了一个死循环一直获取从 C&C 服务器回显的指令。

    pic21

    获取主机名称

    pic22

    获取系统版本信息

    pic23

    pic24

    木马与 C&C 的交流

    pic25

    Sub_402ba0函数

    通过C&C 服务器域名:framworksupport.net来获取ip:162.222.215.90,端口:80 建立 socket 连接

    pic26

    下载攻击者的指定文件

    pic27

    执行下载文件

    pic28

    再次进行信息发送以及接收回显

    发送信息

    9

    接收回显

    10

    可见这个木马具有基础的 RAT 功能(下载文件,执行文件,接收回显,探测系统变量)

    0x03 关联

    首先看看 VT 的查杀情况

    截止发帖的今天已经有 46 款杀毒软件查杀此木马

    pic30

    微步云沙箱的结果

    恶意行为:

    pic31

    低危行为:

    pic32

    这个收集系统相关硬件的指纹信息这部分应该在sub_4037B0函数中 笔者没有进行详细的分析,同样也有很多混淆,那就请有兴趣的读者自己练手了哟。

    程序流程图:

    pic33

    木马 C&C 服务器域名:

    pic34

    反查一下域名可见 这个域名是在2019-1-04注册的 而且与之通讯的样本有两个

    pic35

    其中一个是笔者分析的这个在2019/01/17被捕获

    pic36

    另一个2019/01/09被捕获的样本,笔者调出了微步云沙箱的记录

    经过比对后,发现这两个样本的pdb_path相同

    pic37

    程序运行流程图也很类似

    这就有很大的可能这两个样本出自一人之手

    pic38

    0x04 总结

    那这个木马也就这么告一段落了

    笔者其实也有一些地方看得不是很明白,而且有的地方描述的也不是很清楚,如果各位读者 dalao 能看出笔者文中的不对以及描述不清楚的地方请在评论区提出来,十分感谢

    笔者把样本放到了末尾,请各位有心气的读者自行逆向分析

    其中这个样本在字符串的隐藏上做的还是很不错,不同的地方有不同的加密,有的不单单有移位加密同时也有一些作者自己写的混淆。同时这个样本调用了很多冷门 API进行绕过杀软 API 的检测以及运用进程通讯做到进程防杀以及隐藏复制文件行为的效果。但是这个样本的后缀名欺骗真的没法去讲,但是如果是插入unciodeRLO控制字符实现后缀名倒转的话应该能起到一定的欺骗作用,但是图标也是一个大的问题,所以这个弊端也大大降低了入侵成功的可能性

    0x05 木马样本

    样本连接

    这文章经过一次修改.......

    9 条回复    2019-02-08 20:20:32 +08:00
    boywhp
        1
    boywhp  
       2019-02-06 22:14:24 +08:00
    同学你是不是发错地方了? 这地方就不是搞安全的, 大部分是搞 web 的
    hxndg
        2
    hxndg  
       2019-02-06 23:22:26 +08:00 via Android
    很赞,这几年看到这种纯代码方向的帖子很少了,流量倒是大了
    dalieba
        3
    dalieba  
       2019-02-07 01:24:32 +08:00 via Android
    @hxndg 同赞
    pod
        4
    pod  
       2019-02-07 01:38:58 +08:00
    有种逛看雪的感觉
    whatsmyip
        5
    whatsmyip  
       2019-02-07 09:28:34 +08:00
    同赞
    TotoroSora
        6
    TotoroSora  
       2019-02-07 21:30:36 +08:00
    这种文章看起来很舒服,支持一下
    congeec
        7
    congeec  
       2019-02-08 14:39:39 +08:00 via iPhone
    @boywhp 所以更应该发
    发到 freebuf 也行
    red0range
        8
    red0range  
       2019-02-08 19:34:27 +08:00
    @hxndg emm,作为曾经的安全人员表示,相同类型的文章我们每周要交 3 篇。
    而且,过来人表示,基本可以确定是为了找工作发的,毕竟当年都这么干过。

    v2 适合发产品,不适合发分析,发看雪、freebuf、52、t00ls,那是国内搞安全常去的地方。
    hxndg
        9
    hxndg  
       2019-02-08 20:20:32 +08:00 via iPad
    @red0range 追求影响力,或者单纯记录都很正常,目的不同而已。况且我不觉得作者只发了 v2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2894 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.