服务器被黑后第一反应是保全证据、锁定异常、阻断攻击链;需交叉验证进程(ps、/proc、lsmod)、排查内存驻留、定时任务、SSH后门及Webshell,并安全备份恶意样本与网络流量。

服务器被黑后,第一反应不是重装系统,而是快速锁定异常行为、保留证据、阻断攻击链。隐藏进程和恶意代码是黑客维持权限的核心手段,必须优先排查。
检查异常进程与隐藏进程
黑客常通过 rootkit、内核模块或 ptrace 技巧隐藏进程。不能只依赖 ps aux 或 top,需交叉验证:
- 用 ps auxf --forest 查看进程树,重点关注父进程为 1(systemd)但行为可疑的子进程,比如名字伪装成
sshd、bash或带随机字符串的二进制(如/tmp/.X11-unix/ksys) - 对比 /proc 目录真实进程与 ps 输出:运行 ls -la /proc/[0-9]* 2>/dev/null | grep -E "(cmdline|comm)" | head -20,手动检查 cmdline 内容是否匹配进程名
- 执行 lsmod 查看加载的内核模块,比对正常基线;若发现不明模块(如
hideko、adore、knark),立即 rmmod(需谨慎,可能触发崩溃)并保存 dmesg 日志 - 使用 chkrootkit 或 rkhunter 扫描(注意:这些工具可能被篡改,建议从干净终端或 Live CD 运行)
定位内存驻留与无文件恶意代码
现代攻击常绕过磁盘,直接注入内存或利用合法工具(Living-off-the-Land Binaries):
- 用 lsof -i -P -n 列出所有网络连接,过滤非标准端口(如 31337、4444、5555)及 ESTABLISHED 状态但无对应进程名的条目
- 检查 /proc/[pid]/maps 和 /proc/[pid]/mem(需 root):对可疑 PID,执行 cat /proc/[pid]/maps | grep rwx,查找可读写执行(rwx)的内存段——这是 shellcode 注入典型特征
- 用 strings /proc/[pid]/mem 2>/dev/null | grep -E "(curl|wget|base64|/dev/tcp|bash -i)" 快速识别内存中运行的恶意命令片段
- 检查定时任务与 systemd 服务:crontab -l(各用户)、systemctl list-timers --all、ls /etc/cron.* /var/spool/cron/,留意注释含“backup”、“update”但路径指向
/tmp或/dev/shm的项
溯源恶意代码落地点与持久化机制
找到进程只是开始,要挖出它从哪来、怎么活下来的:
- 对可疑二进制,用 file、ldd、readelf -d 检查类型与依赖;用 stat 查看 atime/mtime/ctime,判断是否被篡改(如 mtime 远早于 atime)
- 检查启动项:systemctl list-unit-files --type=service | grep enabled,重点看自定义服务(非 systemd 自带);查看 /etc/systemd/system/*.service 中
ExecStart=是否调用非常规路径或拼接变量 - 检查 SSH 后门:grep -r "AuthorizedKeysCommand" /etc/ssh/sshd_config*,以及 ~/.ssh/authorized_keys 是否含陌生公钥;同时检查 /etc/passwd 末尾是否有 UID 0 的新用户(如
sysadm:x:0:0:sysadm:/root:/bin/bash) - 搜索常见 Webshell 特征:find /var/www -name "*.php" -exec grep -l "eval\|base64_decode\|system\|passthru" {} \; 2>/dev/null,但注意混淆变种(如字符串拼接、hex 编码)
安全隔离与证据保全建议
排查过程中,避免打草惊蛇或破坏关键线索:
- 不要直接 kill -9 或 rm 文件,先用 cp /proc/[pid]/exe /evidence/malware.bin 备份原始二进制
- 用 tcpdump -w capture.pcap port not 22 抓包(避开 SSH 流量),保存至外部存储,用于后续分析 C2 域名/IP
- 导出内存快照(如用 dd if=/dev/mem of=/evidence/mem.dump bs=1M count=500,仅限物理机且有权限;云主机建议使用厂商提供的内存取证接口)
- 记录完整时间线:date; uname -a; last -a; history | tail -50,并立即同步到可信终端
攻防对抗本质是时间与细节的较量。一次有效排查不在于工具多炫,而在于敢质疑每一个“看起来正常”的进程、路径和权限。动手前先备份关键日志,操作时保持冷静,每一步都问一句:它为什么在这里?谁启动了它?它连向哪里?

















