0

0

ps aux 显示 [ ] 隐藏命令行的进程真实含义与排查

冷炫風刃

冷炫風刃

发布时间:2026-01-23 20:28:54

|

776人浏览过

|

来源于php中文网

原创

[xxx] 表示内核线程,非用户态进程,无对应可执行文件,由内核直接管理;其 USER 为 root、VSZ/RSS 为 0、Tgid==Pid 且 PPid==2、/proc/PID/exe 报错、cmdline 为空,均为合法特征。

ps aux 显示 [ ] 隐藏命令行的进程真实含义与排查

ps aux 中 [xxx] 进程名代表内核线程或伪进程

方括号包裹的名称(如 [kthreadd][migration/0][rcu_gp])不是普通用户态进程,而是内核创建的线程(kernel threads),不对应任何可执行文件,也不运行在用户空间。它们由内核直接管理,用于调度、内存回收、中断处理等底层任务。

这类进程的 COMMAND 列显示为 [xxx]ps 的约定:只要 comm 字段(内核中进程名)非空且无对应磁盘路径,就用方括号包裹显示。它不表示“被隐藏”或“被伪装”,只是内核线程的标准呈现方式。

如何区分内核线程和被隐藏的恶意进程

真正需要警惕的是用户态进程通过修改 argv[0] 或利用 prctl(PR_SET_NAME) 伪造成 [xxx] 形式——但这种情况极少见,且无法绕过 ps 的基本识别逻辑。实际排查时,重点看以下几点:

  • USER 列为 rootTIME 极低(如 00:00:00)的 [xxx],大概率是合法内核线程
  • VSZRSS 都为 0,基本可确认是内核线程(用户态进程至少占用少量内存)
  • 检查 /proc/PID/status 中的 TgidPid:内核线程的 Tgid == Pid,且 PPid == 2(即父进程为 kthreadd
  • ls -l /proc/PID/exe:对内核线程会报错 No such file or directory;而用户态进程即使改了 argv[0]exe 仍指向真实二进制

为什么有些 [xxx] 看起来像异常进程(如 [apache2]

少数情况下,用户态程序(尤其是服务类 daemon)会调用 prctl(PR_SET_NAME, "[apache2]") 主动将自身 comm 设为带方括号的名字,目的是在 ps 中与子进程区分开(例如主进程叫 [apache2],工作进程叫 apache2)。这属于正常行为,不代表异常。

OpenGPT
OpenGPT

给AI不同提示词,立即创建属于自己的ChatGPT应用程序

下载

判断依据:

  • /proc/PID/cmdline:内核线程该文件为空或只含 \0;用户态进程则能读出原始启动命令(即使 argv[0] 被改过)
  • ps auxf 树状结构:如果 [apache2] 下挂了一堆 apache2 子进程,基本就是主进程设名所致
  • 对比 systemctl status apache2pgrep -f apache2,确认是否与已知服务匹配

真正该检查的隐藏进程场景

真正的“隐藏”通常不靠方括号,而是利用以下机制,需额外工具验证:

  • 进程删除了自身二进制(unlink 后仍运行):用 ls -l /proc/PID/exe 会显示 (deleted)
  • 使用 ptraceLD_PRELOAD 干扰 ps 读取:此时 ps 可能漏掉进程,需用 cat /proc/PID/statuspidof 交叉验证
  • rootkit 类后门:可能 hook 内核的 sys_getdents64,让 /proc 对特定 PID 不可见——这时连 ls /proc/ 都看不到 PID 目录,需用 chkrootkit 或内存取证工具

方括号本身不是线索,别在 [ksoftirqd/0] 上浪费时间;真正要盯住的,是那些 USER 异常、cmdline 为空但 exe 指向可疑路径、或者 PPid 不是 12 却没出现在进程树里的 PID。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

393

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

574

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

482

2023.08.10

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

9

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

18

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

19

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

10

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
RunnerGo从入门到精通
RunnerGo从入门到精通

共22课时 | 1.7万人学习

尚学堂Mahout视频教程
尚学堂Mahout视频教程

共18课时 | 3.2万人学习

Linux优化视频教程
Linux优化视频教程

共14课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号