首页/安全/应急响应速查/unhide 专查隐藏进程与端口

unhide 专查隐藏进程与端口

unhide 用多种系统调用交叉比对(工具视图与内核视图)找出被隐藏的进程、线程与端口,分 quick 与 brute 两档。

应急响应速查安全更新于 2026-10-13

unhide 是什么

unhide 用多条不同的系统调用路径交叉比对(例如遍历 /proc 与内核层面获取的进程、线程、端口清单),专门找那些被 rootkit 做手脚后「工具看不见」的对象,对治「ps 里没有对应进程、端口却在通信」这类情况。它分 quick 与 brute 两档:quick 快但覆盖有限,brute 更彻底也更慢。

基本信息

适用平台Linux(需 root 才能看到全部对象)
模式quick 快速初筛 / brute 彻底扫描
检查范围进程、线程、网络端口
命中标志输出中出现 Found hidden
交叉验证结果配合 /proc 与 ss 手工确认
耗时quick 秒级;brute 数分钟到十几分钟

典型使用场景

  • ps 与 ss 输出对不上(有连接却找不到进程)时定位被隐藏的进程
  • 怀疑 rootkit 做了 PID 隐藏,需要一个独立视角来交叉验证
  • 排查非预期监听端口,确认是否属于被隐藏的进程
  • 在宿主机与容器两侧分别运行,对比差异以发现利用命名空间隐藏的对象
  • 应急演练里验证隐藏检测工具链是否可用、命令是否记全
  • 与 chkrootkit、rkhunter 结论互相印证,避免单点误判

两档扫描并保存结果

两档扫描并保存结果
unhide quick | tee /evidence/unhide_quick.txt   # 先跑快速档
grep -i 'found hidden' /evidence/unhide_quick.txt # 只看命中项
unhide brute | tee /evidence/unhide_brute.txt   # 彻底档,耗时更长
ps -eo pid,ppid,user,cmd --sort=start_time | tail -n 20  # 与进程表对照
ss -lntp | head -n 20                           # 与监听端口对照

两档模式对照

对比项quickbrute
耗时秒级数分钟到十几分钟
覆盖路径常用系统调用路径更多交叉路径
适用阶段初筛、赶时间确认阶段、可等待
资源占用低CPU 与 IO 占用明显
brute 模式在业务机上会明显抢占 CPU 与 IO:先记录当时的负载与关键指标作为对照,业务高峰时段不要跑。输出文件要连同扫描时间一起留档,否则事后无法说明「当时到底有没有隐藏对象」。
Found hidden 只表示「某一条路径看不到该对象」,内核线程、权限差异、procfs 挂载方式都会造成误报。必须回到 /proc/<PID> 手工确认成立后再动手处置。

易错点

  • 在业务高峰跑 brute:CPU 与 IO 被抢占,服务抖动,且高负载本身会产生更多差异噪音
  • 把 Found hidden 直接当结论:不核对 /proc 就处置会误杀合法进程
  • 不用 root 运行:可见对象集不全,差异项大量增加且与真实隐藏无关
  • 忽略工具来源:被替换过的检测工具可能稳定报告「没有隐藏」,让排查失去意义
  • 两个工具结论不一致就挑一个相信:它们覆盖的系统调用路径不同,应保留差异记录,回到 /proc 逐项定论

数据来源与参考

  • unhide 官方文档(SourceForge)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌