freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

[恶意软件分析] Gacrux:基于C语言的可自定义PE加载恶意软件
2020-10-28 10:33:24

写在前面的话

近期,我对这款名为Gacrux的恶意软件样本进行了分析。考虑到这两个样本文件的来源,我无法直接跟大家共享文件的哈希或直接公开样本文件,不过根据本文所提供的信息,大家可以轻松识别出这款恶意软件。这款恶意软件加载器采用C语言开发,并且使用了Visual Studio 2017进行编译。这款恶意软件从2020年8月开始在某些论坛上出售,似乎受到了Smoke Loader的极大启发。

反分析技术

Gacrux应用了很多反调试和反虚拟机技术。其中,第一种技术涉及到了下列代码跳转,这将导致IDA无法对代码指令进行正确解析。

这里,我们可以直接利用nop操作码来修复这个问题。进行模式扫描并修复问题之后,我们就可以使用IDA来对代码进行反编译了。

第二种技术涉及到伪造的返回值,并破坏IDA的函数分析过程。跟之前的一样,我们同样可以使用nop操作码来解决这种问题。

最后的代码混淆涉及到两个磁盘上的加密函数,解密操作是在调用函数之前完成的,然后在不久之后又会对函数进行重新加密。

解密/加密的工作原理是在函数中找到两个表示加密区域开始和结束的模式,然后用传递给函数的键来对代码进行异或操作。

代码会检查目标磁盘上的可用空间和RAM大小,这也是其反虚拟机检测机制的一部分。在这里,我们可以设置断点来修改返回值,或直接使用nop命令跳过检测。

字符串加密

字符串存储在一个函数中,该函数根据传入的ID对字符串进行解密。

点击【这里】即可获取外部模块的字符串列表。

整体执行流

反调试和反VM技术

这款恶意软件的代码中还添加了一些反调试技术,这些技术嵌入在了很多重要函数中,并且会在检测到调试器或虚拟机的时候来让进程崩溃。第一个技术位于malloc函数中,它会检查PEB中的BeingDebugged成员,如果检测到了相应设置,那么函数将返回请求的缓冲区的大小,而不是分配它。除此之外,它还会检查黑名单上的模块,如果存在,则退出执行。

在第二项技术中,如果目标系统的RAM或磁盘空间不足,则会增加Explorer资源浏览器的进程PID,这通常是虚拟化的表现。此时,代码将会NtOpenProcess崩溃并阻止其进一步运行。

在这里,注入的初始化ShellCode/自定义PE加载器还会检查PEB的BeingDebugged和NtGlobalFlag成员。

Syscall

这款恶意软件的Syscall模块几乎完全是从开源的加密程序中拷贝过来的。

这里的哈希算法被修改为了djb2,而输出会使用一个常量值进行异或计算。

持久化

恶意软件的持久化是通过一个Windows进程实现的,恶意代码会在explorer.exe上下文中不断地调用这个进程,这个进程会检测安装文件,并在启动项菜单中创建.lnk文件。

代码注入

针对代码注入,Gacrux在32位环境中使用NtCreateSection/NtMapViewOfSection作为写原语,在64位环境中使用NtAllocateVirtualMemory/NtWriteVirtualMemory,这两种方法都是通过直接的系统调用完成的。对于执行原语,它利用的是SetPropA,正如Adam在其文章“PROPagate–一种新的代码注入技巧”中所详述的那样。这是从开源实现中复制的,函数指针的设置方式就证明了这一点。

这里的代码注入技术主要用来调用一个小型的自定义PE加载器,请大家继续往下看。

自定义PE加载器和数据格式

这是Gacrux最有意思的功能,注入到Explorer中的代码并非一个普通的PE文件,而是一个带有自定义PE Header和自定义加载器的PE加载器。

加载器首先会进行一些反调试检测:

接下来,它会解析三个API,并使用它们来处理导入的表并修复重定位:

PE加载器使用的是自定义的PE格式,根据Kaitai描述符,我们可以轻松恢复出原始的PE文件:

网络通信

这款恶意软件的网络通信使用的是WinInet,并且在Explorer上下文场景中实现:

总结

正如我们所看到的,Gacrux实际上也没有非常多的特别之处。它借鉴了大量的公共代码,并且在稍加修改之后便投入使用了。最重要的是,Gacrux的漏洞非常多!

# 恶意软件 # 恶意软件分析 # 恶意软件样本 # 恶意软件检测
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录