1. 黑客安全网-互联网安全媒体信息综合平台首页
  2. 分类阅读
  3. 系统安全

分析无文件恶意软件 : Cobalt Strike Beacon

分析无文件恶意软件 : Cobalt Strike Beacon

今天我们将研究一个由多阶段组成的恶意软件,它的最终目的依然是与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 



    Federal Express Service
    Federal Express
    
    Federal Express documents online.
        
    
        
    
    
        
        
    
        
    

现在我们已经知道它第二阶段的动作,payload的名称和位置,该域名hxxp://fedex-tracking.fun仍在运行中,因此可以尝试下载可以FedEx_Delivery_invoice.jar。下载完毕我们可以直接使用JD-GUI对它进行分析。JD-GUI是一个简单的工具,可以反编译并查看到jar文件的代码。(在打开JD-GUI后,我将代码复制到了Atom,因为我喜欢它突出的显示语法)

分析无文件恶意软件 : Cobalt Strike Beacon

从上面的代码中可以看到 FedEx_Delivery_invoice.jar 将尝试从域名:hxxp://fedex-tracking[.]press 上下载fedex912.exe,该可执行文件将存放在Windows临时目录中,然后在该目录中执行该文件。这个jar文件还会加载合法的FedEx网站信息,使用户确信他们下载的文件是合法的。

截断2 :可执行文件分析

不过遗憾的是,在我撰写该文章时,托管域名不在处于活动状态,这意味着我不能下载到fedex912.exe。但是可以下载VirusTotal的示例。我在我的分析环境里使用进程监视和regshot运行可执行文件,首先fedex912.exe将一个名为gennt.exe的新文件释放到C:ProgramData9ea94915b24a4616f72c目录。该文件只是它自己的一个副本,将副本复制到一个隐藏目录中,然后删除自身。复制到隐藏目录的目的通常是因为正常情况下该类目录是不可见的。

分析无文件恶意软件 : Cobalt Strike Beacon

我使用regshot在运行可执行文件后,对注册表进行了前后对照比较。下面的条目显示了恶意软件的持久性机制。gennt.exe将可执行文件添加到注册表中确保每次windows重新启动时都可以启动恶意软件。

HKUS-1-5-21-1245055219-2462972176-1415829347-1001SoftwareMicrosoftWindows NTCurrentVersionWinlogonShell:"explorer.exe, "C:ProgramData9ea94915b24a4616f72cgennt.exe""

对可执行文件进行研究后,我发现它应该是先启动cmd然后在启动Powershell,但是运行文件时,在我的计算机上没有复现。造成这种情况的原因可能有很多种,其中一种可能是该恶意软件有反分析功能,并且可以检测虚拟机防止分析。由于我当前的环境尚未设置可以对抗可以识别vm的恶意软件,因此我将作弊一下,在Anyrun上运行一下。在AnyRun分析中,我們可以看到cmd命令:”C:WindowsSystem32cmd.exe” /c powershell -nop -w hidden -encodedcommand”,然后再将base64的命令解析到powershell。AnyRun分析:

分析无文件恶意软件 : Cobalt Strike Beacon

分析无文件恶意软件 : Cobalt Strike Beacon我们可以看到该命令使用了base64进行了编码,进一步分析我们还可以看到它不仅编码了还被Gunzip压缩了。

分析无文件恶意软件 : Cobalt Strike Beacon使用Cyber​​Chef再次解碼base64并解压。

分析无文件恶意软件 : Cobalt Strike Beacon

解码以后,终于有了人能看懂的东西……这里发生了很多有意思的事情。powershell脚本实际上包含了三个块,其中第一个块具有几个功能,第二块带有base64编码和”for“语句。最后一块带有一些已经定义的变量和”if”语句。我们应该首先解决base64 Encoded块,然后在处理powershell脚本的其余部分。

注意:我不得不将代码截图分成两部分,因为代码太多一张图根本放不下,如不截图直接放代码,又会导致我的网站被标记成恶意网址,你可以在本文底部西在代码示例。

分析无文件恶意软件 : Cobalt Strike Beacon

分析无文件恶意软件 : Cobalt Strike Beacon

立即引起注意的是“ Powershell腳本第2部分”图像中Base64编码文本下方的“ for”语句。

分析无文件恶意软件 : Cobalt Strike Beacon“for”语句表示Base64块是用密钥为35的异或加密的,我们也可以使用Cyber​​Chef解密。

 

 

 

分析无文件恶意软件 : Cobalt Strike Beacon我们可以看到解密出的内容很多不是人话(……不可读的)但是我们还是看到了像IP地址和User-Agent的信息。其余没法判断是不是shellcode的部分,让我们尝试做一些基本的shellcode分析看看有没有效。

我使用Cyber​​Chef将上面的代码转换为十六进制。

分析无文件恶意软件 : Cobalt Strike Beacon分析无文件恶意软件 : Cobalt Strike Beacon

有了十六进制代码后,可以保存为.dat文件,接下来使用scdbg分析一下。这个工具可以模拟windows的基本行为,并且通过模拟windowsAPI环境拦截windows API调用的shellcode。

將.dat文件解析到工具後,給出以下輸出。shellcode加載wininet API庫並導入兩個用於建立Internet連接的函數。我們可以看到已經建立了到前面通過端口8080看到的IP地址的連接。
载入.dat文件以后,给出以下输出。shellcode加载wininetAPI库并导入了两个用于联网的函数。我们可以看到已经通过8080端口建立的与刚才看到的IP地址的连接。

分析无文件恶意软件 : Cobalt Strike Beacon由于这段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%9ea94915b24a4616f72cgennt.exe
Persistence Registry Key:
HKUS-1-5-21-1245055219-2462972176-14158293471001SoftwareMicrosoftWindows NTCurrentVersionWinlogonShell: “explorer.exe, “C:ProgramData9ea94915b24a4616f72cgennt.exe
C2 Stage:
176[.]103[.]56[.]89

 

原文地址:https://newtonpaul.com/analysing-fileless-malware-cobalt-strike-beacon/

相关推荐: 微软在Surface设备取消Windows 10 2004更新阻止

Microsoft删除了Windows 10 2004防护保留,该保留用于阻止客户偶发关闭,并在安装Windows 10 May 2020更新后在某些Microsoft Surface设备上重新启动。 此兼容性更新背后的已知问题正在导致错误和意外关闭,并在具有…

本文为转载文章,源自互联网,由网络整理整理编辑,转载请注明出处:https://www.hacksafe.net/articles/system/3698.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注