概括
黑客经常使用隐蔽的技术来避免被安全防御系统检测到,一种常见方法是采用不常用的编程语言来开发恶意软件。这种做法的主要优势包括:
- 绕过基于签名的检测系统
- 对于不熟悉这些语言的恶意软件分析师来说,分析起来更加困难
- 社区对这类恶意软件的检测和分析较少
Netskope 最近分析了一款用 Nim 语言(一种相对较新的编程语言)编写的恶意后门程序,在过去一年中使用 Nim 语言编写的恶意软件数量有所增加。随着攻击者继续对现有的 Nim 恶意软件样本进行修改,预计这类恶意软件将变得更加普遍。其中一种著名的基于 Nim 的恶意软件家族是Dark Power 勒索软件,它于今年早些时候开始在网络中传播。
本文详细介绍了一个最近的案例,该案例中攻击者使用带有 Nim 后门的 Word 文档作为诱饵进行针对性攻击。
传递方式
本案例涉及使用恶意 Word 文档部署 Nim 编写的后门程序。该文档作为电子邮件附件发送,发件人伪装成尼泊尔政府官员,声称附件是关于安全安排的信息。尽管在 Office 文件的宏功能上施加了安全限制,但我们发现 APT 类型的恶意软件仍然利用宏来释放其有效载荷,这类似于我们几个月前分析的 Menorah 恶意软件案例。
当用户最初打开该文档时,会看到一个空白文档,并出现启用宏的提示。在点击“打开内容”按钮后,文档中的自动触发程序将被执行。主函数一旦被调用,代码将通过文档内嵌的其他 VBA 函数来进一步执行。
防御规避
为了避免被杀毒软件和静态检测工具发现,所使用的 VBA 项目被设定了密码保护,并且采用了Chr( )
函数和字符串拼接的方法来对宏命令进行混淆。在此情况下,VBA 代码被分解为四个不同的子程序,如下图所示。
sch_task是一个用于创建名为OCu3HBg7gyI9aUaB.vbs
的 VBscript 的函数脚本,该脚本将作为链式触发器。初始被放置于用户的 AppData 启动文件夹(路径为C:\Users<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\OCu3HBg7gyI9aUaB.vbs
),并被设定为隐藏文件。值得注意的是,为了混淆静态分析工具,脚本中的一些变量在一个函数中进行初始化,但在其他不同的函数中被使用。此外,为了进一步规避静态检测,引用目录和库的字符串被分割后再进行连接。
hide_cons 是一个用于创建另一个名为“skriven.vbs”的 VBScript 脚本,这个脚本将被8lGghf8kIPIuu3cM.bat
批处理文件用作 shell,以便运行其他脚本。此外,为了进一步混淆和规避安全检测,该脚本中引用的目录和库字符串被刻意拆分然后重新连接。
read_shell 是一个特定的函数,用于创建名为 conhost.exe 的有效负载,该有效负载被封装在 ZIP 存档中。根据宏代码的截图显示,这个过程涉及到从 UserForm1 对象中提取一个小数数组,每个小数随后被转换为字节,以此方式组装成 ZIP 文件。生成的这个字节数组实际上就是所述的 ZIP 文件,它随后被存放在目标用户的本地路径C:\Users<user>\AppData\Local\Microsoft\conhost.zip
。
vb_chain 是一个专门用于创建名为8lGghf8kIPIuu3cM.bat
的函数,这个批处理文件充当着感染流程中的一个重要阶段,它位于最终有效载荷部署之前。在写入这个批处理文件之前,VBA 宏会生成确切的文件路径。
释放的文件摘要:
e2a3edc708016316477228de885f0c39.doc drops:
- OCu3HBg7gyI9aUaB.vbs (C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\OCu3HBg7gyI9aUaB.vbs)
- skriven.vbs (C:\Users\<user>\AppData\Local\skriven.vbs)
- conhost.zip (C:\Users\<user>\AppData\Local\Microsoft\conhost.zip)
- 8lGghf8kIPIuu3cM.bat (C:\Users\<jack>\AppData\Local\8lGghf8kIPIuu3cM.bat)drops these in C:\Users\<user>\AppData\Local:
- unzFile.vbs
- unz.vbs
- 2L7uuZQboJBhTERK.bat
- 2BYretPBD4iSQKYS.bat
- d.bat
- e.bat
Nim 后门
Word 文档会释放一个名为 conhost.exe 的恶意后门程序的载体。该恶意软件是用 Nim 编写的,Nim是一种静态类型的编译语言。Nim 的特点在于其多功能性,它可以被编译成 C、C++ 或 JavaScript,同时具有类似 Python 的语法,从而为开发者提供了一个用户友好的编程体验。
在这种情况下,后门程序运行时具有与当前登录用户相同的权限级别。它试图通过模仿其 C&C 服务器的政府域名(如 [.]govnp[.]org),假装文件来源于尼泊尔政府。当这个后门程序未被安全系统检测到时,它可能使用户面临着攻击者获得其设备远程访问权限的风险。
虽然在进行安全分析时无法再连接到该恶意软件的C2服务器,但我们仍然能够根据已有的信息和分析结果推测出该恶意软件的一些行为模式。
反分析技术
在连接到其 C&C 服务器之前,该恶意软件会首先执行一系列的后台检查。具体来说,Nim编写的后门程序会启动一个命令提示符窗口来运行 tasklist.exe,这是为了检查其内置的已知分析工具列表中是否有任何进程正在运行。如果该后门程序侦测到列表中的任何分析工具在系统中处于活动状态,它会迅速自我终止。
通过网络协议进行命令和控制
一旦该后门程序确认系统中没有运行任何分析工具,它会创建另一个命令提示符实例以获取计算机的主机名,并建立与其 C&C 服务器的连接。后门使用一个名为 Bakery 的函数对主机名进行加密。这个加密过的主机名会被进行两次 base64 编码,并与一个随机选择的 C&C 服务器的 URL 相拼接,然后在其末尾添加 .asp 后缀,从而形成最终命令的 URL。该命令通过 HTTP GET 请求从 C&C 服务器获取。
GET 的响应数据包含来自 C&C 服务器的命令。如果响应数据与上次获取的数据不同,则表明 C&C 服务器已发出新命令。如果相同,则后门程序会处于休眠状态,继续定期向 C&C 服务器请求命令。解密响应数据是由 confectionary 函数实现的,然后这些命令会与 cmd /c 结合并执行。命令的执行结果也通过 GET 请求发送回服务器。用于加密和解密的密钥是 NPA,这可能是指尼泊尔代理(Nepal Agent)的缩写。
该示例关联以下 C2 主机:
- mail[.]mofa[.]govnp[.]org
- nitc[.]govnp[.]org
- mx1[.]nepal[.]govnp[.]org
- dns[.]govnp[.]org
通过启动文件夹和计划任务进行持久化
为了在受影响的机器上维持访问权限,一个名为 OCu3HBg7gyI9aUaB.vbs
的 VBscript 脚本被放置在启动文件夹中。该脚本的首个操作是使用 WMI 的Win32_PingStatus
类来进行网络连通性测试,以确认是否有互联网连接。如果检测到互联网连接,脚本随后会执行一个名为 8lGghf8kIPIuu3cM.bat
的批处理文件。
批处理文件8lGghf8kIPIuu3cM.bat
的主要功能是释放文件,并为最终的恶意负载创建计划任务。为了完成这些操作,该批处理文件会进一步生成多个脚本,每个脚本负责执行这一系列子任务的一部分。
- unz.vbs:用于从存档中解压出可执行文件到同一目录
- unzFile.vbs:创建 unz.vbs
- 2L7uuZQboJBhTERK.bat:仅用于链接;运行 unzFile.vbs 然后运行 2BYretPBD4iSQKYS.bat
- 2BYretPBD4iSQKYS.bat:仅用于链接;运行 unz.vbs 然后运行 d.bat
- d.bat:创建解压有效负载 (conhost.exe) 的计划任务,然后运行 e.bat
- e.bat:删除自身以及由 8lGghf8kIPIuu3cM.bat 创建的其他脚本
在这个场景中,一个名为“d.bat”的批处理文件创建一个计划任务,目的是在目标计算机上持续地执行恶意软件。该计划任务被命名为 ConsoleHostManager,如下面的截图所示。
网络检测
Netskope Advanced Threat Protection 提供了先进的防护措施,这些防护措施结合了 Netskope 的静态分析引擎和云沙箱技术。在提供的截图中,可以看到对特定恶意软件样本(标识符为 e2a3edc708016316477228de885f0c39)的检测结果。这表明该恶意软件样本已经被 Netskope Cloud Sandbox、Netskope Advanced Heuristic Engine 和 Netskope Threat Intelligence 成功识别和检测。
结论
恶意软件作者采用不常见的编程语言来开发恶意软件,这给安全研究社区带来了挑战,因为研究人员和逆向工程师可能对这些语言不够熟悉,这可能会妨碍他们对恶意软件的调查和分析工作。其中,Nim 是一种新兴的编程语言,近年来日益受到恶意软件作者的青睐。Nim 的一个显著特点是其具有跨编译能力,这意味着攻击者可以编写一个恶意软件变体,并将其跨平台编译,以便针对不同的操作系统和环境。这种语言的灵活性和跨平台特性使得基于 Nim 的恶意软件对安全防御构成了新的挑战。
IOCs
MD5
e2a3edc708016316477228de885f0c39
777fcc34fef4a16b2276e420c5fb3a73
EF834A7C726294CE8B0416826E659BAA
32C5141B0704609B9404EFF6C18B47BF
SHA-1
3aa803baf5027c57ec65eb9b47daad595ba80bac
5D2E2336BB8F268606C9C8961BED03270150CF65
4CAE7160386782C02A3B68E7A9BA78CC5FFB0236
0599969CA8B35BB258797AEE45FBD9013E57C133
SHA-256
b5c001cbcd72b919e9b05e3281cc4e4914fee0748b3d81954772975630233a6e
696f57d0987b2edefcadecd0eca524cca3be9ce64a54994be13eab7bc71b1a83
88FA16EC5420883A9C9E4F952634494D95F06F426E0A600A8114F69A6127347F
1246356D78D47CE73E22CC253C47F739C4F766FF1E7B473D5E658BA1F0FDD662
Network
mail[.]mofa[.]govnp[.]org
nitc[.]govnp[.]org
mx1[.]nepal[.]govnp[.]org
dns[.]govnp[.]org
原文始发于Seebug(知道创宇404实验室翻译组):基于 Nim 的活动分析:使用 Microsoft Word文档冒充尼泊尔政府