乌克兰网络战士用来隐藏进程的一种工具Zapper:黑客如何在Linux系统中隐藏恶意进程

导语:一个让人不安但真实的规律——黑客经验越丰富,就越难被检测到。初出茅庐的攻击者毛手毛脚,工具用得明目张胆,日志满天飞,防御方一眼就能发现。但真正的老手完全不同:他们用防御者的思维思考,知道日志长什么样,知道SIEM怎么报警,知道盯着监控屏幕是什么感觉。正因为如此,高级黑客越来越依赖高级隐藏技术。今天我们要聊的Zapper,就是这类 stealth 工具中的典型代表——它甚至已经在乌克兰网络战中被真实使用。


什么是Zapper?

Zapper是由知名黑客组织Hacker’s Choice开发的一款专用于在Linux系统上隐藏运行进程的工具。与其他粗糙的隐藏手段不同,Zapper的实现方式出人意料地优雅且低侵入。

开发者描述了几个重要特性:

无需root权限:Zapper可以在非root状态下运行,这一点极为关键——因为攻击者在入侵初期往往并不具备系统最高权限。

支持静态二进制:即使目标系统上部署了Go语言编译的静态二进制程序,Zapper依然能够正常工作。

隐藏范围全面:不仅可以隐藏命令行参数,还能隐藏进程的环境变量,包括/proc//environ中可见的内容。

不依赖LD_PRELOAD或libc技巧:Zapper使用ptrace()来操控ELF辅助向量表(ELF Auxiliary Vector),这让它避开了传统hook技术会触发的检测机制。

性能开销极低:根据开发者的数据,Zapper引入的性能开销仅约千分之一,几乎可以忽略不计——这正是它设计的目的:让管理员既看不到,也无从怀疑这个进程的存在。

此外,Zapper还提供了一个-n 参数的小技巧,允许Zapper在任何指定的进程ID下启动目标程序。它通过遍历整个PID空间,利用极快的进程创建和终止技术,直到目标PID值对齐。这个技巧常被用于让恶意进程伪装成系统中某个特定的服务进程。


使用Zapper

获取二进制文件

使用Zapper的第一步是获取其二进制文件。项目仓库提供了如下示例命令:

$ curl -fL -o zapper https://github.com/hackerschoice/zapper/releases/latest/download/zapper-linux-$(uname -m) && chmod 755 zapper && ./zapper -h

然而,在对抗环境中,现实往往不会这么简单。防守方通常会监控HTTP流量,对可疑域名、异常下载行为或已知黑客工具来源(如”hackerschoice”)触发告警。因此,攻击者往往更倾向于将工具托管在已被入侵的服务器或攻击者自建的基础设施上,并将二进制文件重命名为看似完全合法的名称,融入系统之中。

$ mv zapper systemd-control

这里我们将二进制文件重命名为systemd-control,听起来就像是操作系统的一部分。在许多Linux发行版中,真正的systemd组件位于/lib/systemd/目录下,将重命名后的文件放入该目录并修改时间戳,可以让这个恶意文件在视觉上与合法二进制文件毫无区别。这正是为什么蓝队永远不能单纯依赖文件名来检测威胁。

运行隐藏进程

执行重命名后的二进制文件即可查看Zapper的帮助菜单:

$ ./systemd-control -h

Zapper的用法展示了多种创造性的隐藏方式:

  • 完全隐藏:不仅隐藏二进制文件本身,还能隐藏其所有子进程
  • 创建隐藏tmux会话:在服务器上维持持久化连接,而在正常进程列表中完全不可见
  • 隐藏命令行参数:即使进程名称可见,攻击者也可以剥离所有命令行选项,让进程看起来无害或普通

实战演示:隐藏nmap扫描

作为演示,假设我们想用Zapper配合一个常见工具nmap进行扫描,同时隐藏真实的命令细节。执行方式如下:

$ exec ./systemd-control -f -a '[kworker/2:2-events_power_efficient]' nmap IP -Pn -sV -sC > /dev/shm/scan.txt &

在这个命令中,我们让nmap进程伪装成Linux内核的kworker(内核工作线程)——这是大多数管理员会直接忽略的系统进程。在执行过程中,使用psgrep等命令搜索进程,不会返回任何可疑结果。同时,扫描在后台静默运行。一段时间后,扫描结果会出现在/dev/shm/scan.txt文件中。

$ cat scan.txt

这正是渗透测试人员用来真实模拟现实世界攻击行为的 stealth 技术。


技术原理

Zapper的核心在于对Linux进程跟踪机制的创造性滥用。当一个进程使用ptrace()附加到另一个进程时,它可以在目标进程执行特定系统调用时介入。Zapper利用这一点,专门追踪forkexec事件,在不触发明显异常的情况下修改进程的显示信息。

关键在于ELF辅助向量表(ELF Auxiliary Vector)。这个数据结构在程序加载时由内核填充,包含传递给动态链接器的各种信息。Zapper通过ptrace()接口直接操作这个表,能够修改/proc文件系统呈现的进程信息——而无需hook任何库函数,也不会触发通常被安全工具监控的LD_PRELOAD机制。

对于防御者来说,这意味着:传统的基于文件名、基于进程链表、或基于常见hook技术的检测手段,在Zapper面前可能完全失效。检测需要转向行为分析异常的系统调用模式识别


防御建议

如果你是防御者,以下几点应该纳入你的威胁模型:

行为检测优先于签名检测:Zapper可以在不修改任何可执行文件的情况下隐藏进程,纯签名匹配很难应对。建议关注进程的异常创建模式,尤其是那些父进程为未知二进制文件的进程。

监控/proc挂载点之外的数据:虽然Zapper隐藏了/proc中的信息,但攻击者的操作本身(如网络扫描、数据读写)仍可能产生系统级异常。

PID异常检测:使用-n 参数强制进程运行在特定PID下会导致异常的PID分配模式。监控PID分配速度异常(短时间内大量PID被创建并销毁)可以发现这类痕迹。

限制可疑工具的下载源:监控对GitHub上可疑仓库的访问,尤其是hackerschoice等已知黑客工具组织。


原文信息

原文标题:Zapper – How Hackers Hide Malicious Process 原文来源:Hackers Arise 原文链接:https://hackers-arise.com/linux-zapper-how-hackers-hide-malicious-process/ 译者注:本文仅供技术研究与防御参考,请勿用于非法用途。

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容