Linux进程名伪装:黑客如何隐藏恶意进程逃过安全检测

Linux进程名伪装技术(MITRE ATT&CK T1036)通过prctl和内存覆写修改/proc/pid/comm和cmdline,将恶意进程伪装成kworker等内核线程,绕过ps/top监控。安全分析师可使用eBPF工具(如Kunai)检测真实命令行与显示不一致的行为。本文提供PoC代码、检测方法和缓解建议。

🔍 High 其他

攻击者利用Linux进程名称存储机制,通过修改/proc/pid/comm和/proc/pid/cmdline,将恶意进程伪装成内核线程(如kworker)。PoC演示了使用prctl和直接覆写argv/environ内存区域的技术,可绕过ps、top等常规监控,但eBPF工具(如Kunai)能捕获真实命令行,发现伪装行为。

来源:SANS ISC | 2026-06-24 | 原文链接

🔍 关键发现

  • Linux进程名存储于/proc/pid/comm(默认ps/top读取)和/proc/pid/cmdline(ps aux读取),均可被篡改
  • 攻击者通过prctl(PR_SET_NAME)修改comm,通过覆写argv/environ连续内存块修改cmdline,最大15字符限制仅限comm
  • eBPF工具Kunai可记录原始命令行,但无法获取实际可执行文件路径,形成检测盲区
  • Windows上可通过修改PEB中的ImagePathName/CommandLine(用户态),但EPROCESS中的ImageFileName由内核保护不可篡改

⚔️ 攻击链分析

1. 攻击者编写或植入恶意进程,使用prctl设置comm为类似[kworker/0:1]的合法内核线程名;2. 调用自定义函数覆写argv/environ区域,使cmdline显示为伪装字符串;3. 恶意进程运行后,ps/top显示为内核线程,安全分析师难以察觉;4. 在执行敏感操作(如C2通信、提权)时继续隐藏进程名。

🚩 失陷指标 (IOC)

  • /proc//comm 内容与 /proc//cmdline 或者实际可执行文件路径不一致
  • 进程名类似 [kworker/*] 或 [kthreadd] 等内核线程格式,但属于普通用户权限

🛡️ 缓解建议

  • ✅ 部署eBPF或审计框架(如Kunai、Falco)监控/proc/pid/cmdline与实际可执行文件路径的差异
  • ✅ 定期检查/proc文件系统,对比/proc/pid/exe软链接指向的可执行文件与comm/cmdline内容
  • ✅ 启用进程创建审计日志(如auditd),记录execve系统调用的完整参数
  • ✅ 限制非root用户修改/proc/self/comm(默认允许),考虑内核参数kernel.dmesg_restrict等

涉及漏洞:[]


⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。

🤖 常见问题解答(FAQ)

❓ 如何检测Linux进程名伪装?

使用eBPF工具如Kunai对比execve时的真实命令行与/proc/pid/cmdline,或手动检查/proc/pid/exe与comm是否匹配。

❓ Windows上也能实现类似伪装吗?

可以,通过修改PEB中的ImagePathName和CommandLine(用户态),但内核态EPROCESS.ImageFileName由内存管理器保护,无法篡改。

❓ 伪装后的进程能否被SELinux检测?

SELinux基于进程安全上下文,不直接检查进程名,但可通过域转换规则限制;进程伪装不会改变上下文,但可能绕过基于名称的白名单。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)