Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

admin 2023年6月9日00:46:17评论17 views字数 5176阅读17分15秒阅读模式

旧笔记回顾,目前想给自己提的问题如下:

1)应用层软件漏洞如何挖掘到exploit样本?

2)应用层的exploit样本如何在端点进行检测告警或拦截?

3)如何发现针对地区或存在定向性攻击的恶意文件?

4)如何批量化或大规模快速检测相关的恶意文件?

5)有哪些可以取证的痕迹点?


利用漏洞:CVE-2017-12824

InPage是一个专门针对乌尔都语使用者(巴基斯坦国语)设计的文字处理软件,卡巴斯基曾在2016年11月首次曝光了利用该软件漏洞进行定向攻击的案例,而利用该文字处理软件漏洞的野外攻击最早可以追溯到2016年6月。

漏洞成因:越界读(Out-Of-Bound Read)

CVE-2017-12824漏洞的本质是Out-Of-Bound Read,InPage文字处理程序在处理文档中的InPage100流时未对需要处理的数据类型(Type)进行检查,而需要处理的数据类型(Type)是通过InPage文档中的某个字段指定的。这样攻击者可以通过设置一个超出Type范围的值来使得InPage程序发生越界读错误。

漏洞调试

第一步先安装Inpage软件,公网只找到2010版本。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

最终找到该版本:Inpage 2010 Professional Edition

下载地址:http://softwareslabpk.blogspot.com/2014/08/inpage-2010-professional-edition-free.html

漏洞分析如下:

InPage zero-day exploit used to attack financial institutions in Asia | Securelist

https://securelist.com/inpage-zero-day-exploit-used-to-attack-financial-institutions-in-asia/76717/

可通过其他文章里的截图找到对应的漏洞触发点,比如通过截图里调用的API函数名称搜索。

具体步骤如下,调试客户端漏洞比较简单,首先运行Inpage软件,接着使用ollydbg的附加功能去附加该进程,接着设置相应的断点,然后F9运行起来,此时通过软件菜单打开对应的漏洞利用文档会暂停在之前设置的断点下,然后可以进行调试,如下截图为打开Inpage100文件流。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

移动读取的位置,之后会逐步读取相应的文件流数据。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

seek方法的作用:从起始0开始到0xD0位置。参考链接为https://github.com/mirror/winscp/blob/master/libs/mfc/source/olestrm.cpp。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

漏洞触发的位置如下(通过设置条件断点,当edi的值为0x72时满足断点),如下截图。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

此时的关键数据结构如下:

72 7E 90 90 90 90 83 C7 28 FF D7 27 0A 05 04 00 0C 05 00 00 0D 05 00 8F E5 AD BA 7E CA 01 00 7E 7E A7 0F 00 01 7E C4 F9 17 00 02 7E 1C 1F 01 00 03 7E 40 9E 00 00 00 00 00 FE 58 74 A8 43 22 00 00 C4 00 02 03 20 32 02 03 00 00 00

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

接着通过pop retn进行跳转,执行如下截图。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

通过遍历搜索是否匹配LuNdLuNd寻址到shellcode起始位置,如下截图。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

执行shellcode,会经过一大段很长的nop指令,之后获取相应的API函数。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

创建互斥量"QPONMLKJIH",确保单一实例运行,该shellcode内存释放加载的dll具有的pdb路径为:c:usersmzdocumentsvisual studio 2013ProjectsShellcodeReleaseShellcode.pdb。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

之后通过之前的shellcode分配内存空间,模拟PE内存加载,获取所需的API函数,跳转到入口点执行。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

首先会创建一个线程,如下图。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

在该线程内,首先会加载两个资源内容,名称为0x6A,0x6B,类型为BIN,BIN2。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

获取%TEMP%环境变量的实际地址后,拼接路径创建"C:UsersonionAppDataLocalTempwinopen.exe"文件,写入BIN的资源内容,最后执行该路径下的winopen.exe。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

接着还会打开正常的INP文件,呈现给用户,让用户以为打开了正常文件。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

SAMPLE.INP的内容(当时分析时暂时没有想到如何去将文档内容翻译回中文内容),文档内容为解决克什米尔地区的当前问题。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

接下来对之前漏洞利用后释放的文件winopen.exe进行分析,首先采用CheckRemoteDebuggerPresent进行反调试,采用循环时造成溢出来改变判断条件实现延时功能对抗自动化行为检测系统。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

寻找资源名"11HZBC",利用RC4算法解密出PE文件,RC4使用的密钥为:VACqItywGR1v3qGxVZQPYXxMZV0o2fzp。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

在注册表HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRunOnce,设置键值"Putty",路径为:"C:UsersonionAppDataLocalTempwinopen.exe"。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

创建挂起的进程:"C:UsersonionAppDataLocalTempwinopen.exe"

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

采用进程镂空技术,之后重新写入新的PE文件内容。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

之后就是常规的远控木马内存驻留了,因为是老样本且该漏洞利用文件在国内基本不可能出现,因此就不详细叙述后续的交互了。

作为恶意代码分析人员,对样本进行分析后可以输出相关的检测规则进行后续的检测或挖掘相似或同源的恶意文件,因此yara规则编写如下。

汇编代码(溢出导致延时的十六进制数据,可作为yara规则的线索)

33 D2 42 6A 0A 58 6A 09 59 48 83 E9 01 75 FA 85 C0 74 04 03 D0 75 EC

SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

rule APT_Confucius_droppper_2017_9_13

{

    meta:

        author = "jishuzhain"

        description = "Detects Confucius apt dropper exe"

        reference = "https://unit42.paloaltonetworks.com/unit42-recent-inpage-exploits-lead-multiple-malware-families/"

        hash = "f5cd8fd133642b75cd8a36def167dde8"

        date = "2021-3-3"

    strings:

        $delay_code = {33 D2 42 6A 0A 58 6A 09 59 48 83 E9 01 75 FA 85 C0 74 04 03 D0 75 EC}

        /*

        .text:00401313 33 D2                                   xor     edx, edx

        .text:00401315 42                                      inc     edx

        .text:00401316

        .text:00401316                         loc_401316:                             ; CODE XREF: start+62↓j

        .text:00401316 6A 0A                                   push    0Ah

        .text:00401318 58                                      pop     eax

        .text:00401319 6A 09                                   push    9

        .text:0040131B 59                                      pop     ecx

        .text:0040131C

        .text:0040131C                         loc_40131C:                             ; CODE XREF: start+5A↓j

        .text:0040131C 48                                      dec     eax

        .text:0040131D 83 E9 01                                sub     ecx, 1

        .text:00401320 75 FA                                   jnz     short loc_40131C

        .text:00401322 85 C0                                   test    eax, eax

        .text:00401324 74 04                                   jz      short loc_40132A

        .text:00401326 03 D0                                   add     edx, eax

        .text:00401328 75 EC                                   jnz     short loc_401316

        */

        $reg = "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"  ascii wide

    condition:

        uint16(0) == 0x5a4d and filesize < 1000KB and $delay_code and $reg

}


特殊的哈希计算方式也可以作为检测特征进行yara规则的输出,如下。

rule InPageShellcodeHashing

{

    strings:

        $hashingFunction = {55 8B EC 51 53 52 33 C9 33 DB 33 D2 8B 45 08 8A 10 80 CA 60 03 DA D1 E3 03 45 10 8A 08 84 C9 E0 EE 33 C0 8B 4D 0C 3B D9 74 01 40 5A 5B 59 8B E5 5D C2 0C 00}

    condition:

        $hashingFunction

}


下面继续开始分析PE文件(0131E207B2DF97353348060C0477F3A5),执行流程与上述文件差不多,不过这里增加了比较当前用户名称的功能。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

遍历进程获取explorer进程的PID

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

读取资源名"BD02MLD7"的内容

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

之后使用RC4算法解密资源内容,密钥为:kRPAnN2DN6vfrxsJLntnh7Mma8E68s。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

在注册表HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRunOnce设置键值名为Putty,路径为之前的路径,之后同样是对当前进程进行进程替换。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

下面接着分析PE文件(A028510821531E8DDE80FC3D3B08118B),该文件是最后阶段的恶意文件,属于远控类恶意软件,归属于CONFUCIUS_B恶意软件家族,回连的C&C地址为151.80.14.194。

Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

参考文章

https://unit42.paloaltonetworks.com/unit42-recent-inpage-exploits-lead-multiple-malware-families/

https://unit42.paloaltonetworks.com/unit42-confucius-says-malware-families-get-further-by-abusing-legitimate-websites/


原文始发于微信公众号(OnionSec):Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inp

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月9日00:46:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Confucius(摩罗桫)的老样本分析回顾Cyber Advisory No 91.inphttp://cn-sec.com/archives/1789334.html

发表评论

匿名网友 填写信息