直接盯住/tmp、/dev/shm和/var/tmp是发现反弹shell后门最务实的起点,重点检查可疑进程、异常出站连接、新近脚本及定时任务或环境变量中的持久化痕迹。

直接盯住 /tmp、/dev/shm 和 /var/tmp 这三个目录,是新手快速发现反弹Shell后门最务实的起点。攻击者几乎总把临时脚本丢在这里——不用写入系统路径、不触发安装包校验、重启即消失,但恰恰留下大量行为痕迹。
先抓正在运行的可疑Python或Shell进程
反弹Shell本质是“服务器主动外连”,所以进程命令行里往往藏着关键线索:
- 运行 ps -eo pid,ppid,cmd --sort=-pid | grep -E "(python|sh|bash)",重点搜
/dev/tcp、bash -i、sh -i、subprocess、os.system(.*curl)这类字符串 - 对疑似PID,用 cat /proc/[PID]/cmdline | tr '\0' ' ' 查完整参数——ps默认截断,很多载荷就藏在后面
- 检查 ls -l /proc/[PID]/exe:若指向
[deleted]或/tmp/xxx.py,基本可确认是临时后门
再查异常出站连接并反向定位文件
只要连接还活着,就能顺藤摸瓜找到源头:
- 执行 ss -tunp | grep ESTAB(或
netstat -tunp | grep ESTAB),过滤目标IP非业务地址、端口非常规(如4444、5555、8888)的条目 - 对每个可疑连接,用 ss -tunp | grep :端口号 确认关联PID
- 再用 ps -p PID -o pid,ppid,comm,args 看启动命令——常见格式是
python3 /tmp/.a.py或bash /dev/shm/b.sh
最后扫描临时目录中刚写入的可疑脚本
不靠名字判断,而看时间+内容+路径特征:
- 搜最近3天新建的Python或Shell脚本:find /tmp /dev/shm /var/tmp -type f \( -name "*.py" -o -name "*.sh" \) -mtime -3 2>/dev/null
- 对结果文件,用 head -n 30 文件名 快速扫内容,留意:
socket.、subprocess.Popen、base64.b64decode、/dev/tcp、双fork结构、重定向到/dev/null - 特别注意隐藏文件:find /tmp -name ".*.py" -ls 2>/dev/null,比如
.x.py或..hidden.sh
补漏:别漏掉定时任务和环境级持久化
很多反弹Shell不是手动执行一次,而是靠计划任务或环境变量反复拉起:
- 查所有用户crontab:for u in $(cut -d: -f1 /etc/passwd); do crontab -u $u -l 2>/dev/null | grep -v "^#" | grep -E "(tmp|shm|\.py|\.sh)"; done
- 查系统级定时任务:ls /etc/cron.d/ /etc/cron.hourly/ 2>/dev/null | xargs -r -I{} find {} -type f -exec grep -l "/tmp\|/dev/shm" {} \; 2>/dev/null
- 检查环境初始化文件:grep -r "curl\|wget\|\.py\|\.sh" /etc/profile.d/ /root/.bashrc /home/*/.[br] 2>/dev/null











