千家信息网

如何理解基于C语言的可自定义PE加载恶意软件Gacrux

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,如何理解基于C语言的可自定义PE加载恶意软件Gacrux,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。近期,我对这款名为Gacrux
千家信息网最后更新 2026年10月31日如何理解基于C语言的可自定义PE加载恶意软件Gacrux

如何理解基于C语言的可自定义PE加载恶意软件Gacrux,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

近期,我对这款名为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的漏洞非常多!

关于如何理解基于C语言的可自定义PE加载恶意软件Gacrux问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

代码 函数 恶意 软件 技术 文件 问题 加密 检测 进程 反调 字符 字符串 分析 检查 语言 两个 样本 模块 磁盘 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 上海挚品互联网科技有限公司 广州淘业互联网络科技 互联网科技公司税收优惠 重庆互联网络科技 金融科技创新监管互联网金融 互联网科技与金融科技 猪兼强互联网科技 北京互联网络科技有限公司 壹账通互联网科技 小米互联网科技园设置 互联网校园科技培训 上海宁丞科技互联网 互联网科技圈年度人物 互联网科技股为什么大涨 互联网科技包装股份有限公司上市 广州燕处互联网科技有限公司 信承诺互联网科技有限公司 普陀区互联网教育科技管理办法 互联网科技手机排行榜 没上市的科技互联网公司 奇酷互联网科技 以房互联网科技 米客互联网科技 成都铂石互联网科技做什么的 特约风豹互联网科技为什么扣费 元气玛特互联网科技公司是外包吗 互联网营销推广黑科技 广州梦谷互联网科技有限公司领导 长沙易易互联网科技有限公司
0