admin 发表于 2026-10-8 17:09:44

服务器被挂马,为什么"清了又活"?——聊聊我处置时的顺序

处理过几台被挂马的机器,发现一个共同现象:很多人(包括以前的我)第一反应是找到那个可疑文件 rm 掉、把进程 kill 掉,看着"干净"了,过一会儿它又回来了。来回几次,人先崩了。

后来复盘,问题一般就出在两个地方。

一、只清了"结果",没断"源头"
马靠什么反复活过来?一大半是靠自启链被反复拉起。常见的得一条一条过:
· crontab(含 /etc/cron.d、/etc/cron.hourly 这类目录)
· init.d / rc*.d / rc.local
· systemd 的 unit 和 timer
· 计划任务 spool(/var/spool/cron)
· 各种开机脚本、profile 注入
只删本体不清自启,等于拔草不除根。

二、顺序反了
正确顺序应该是:先断源 → 再杀进程 → 最后删本体。
先杀进程的坑在于:如果拉起它的链条还在,你一杀,watchdog 立刻用另一个名字重新拉起,还会把文件写回来,越杀越多。等自启链先停了,再杀再删,才是真的清掉。

还有几个细节,都是踩出来的:
· 判断"清没清干净"要回读,别只看命令返回码。disable 返回成功不代表真停了,回读一遍最实在。
· 动手改/删之前先备份,万一判断错了还能还原。
· 文件时间戳新 ≠ 感染时间新,不少马会 rewrite 自己的 mtime,别被它误导。
· 注意一个信号:如果清完之后同轮(甚至一秒内)就复活,或者 /etc/ld.so.preload 被人动过、ps/ss 这类命令明显被换过——说明对面有内核级/工具链级的东西。这种情况别再硬清了,老老实实取证、换盘重装、只把业务数据搬回来,省时间也省心。

一句话总结:别急着删,先看清它靠什么活着,把链条断了再动手。
各位处置时有什么独门习惯,欢迎楼下补充。

discuz 发表于 2026-10-20 21:56:30

补一个假冒得很好的源头:除了自启链,还有一种是「被正常服务顺手拉起来」——马把启动逻辑塞进某个面板守护进程或 rc.local 的下一行里,你清了本体,那边守护进程一重启,它又回来了。

我的习惯是:动手前先 lsof 一遍那几个可疑文件被谁打开着,把「谁在用它」先揪出来,再按你说的顺序(断源 → 杀进程 → 删本体)走。顺序这一层我觉得是你这篇最值钱的地方,很多人就是卡在「先杀进程」上,越杀越多。
页: [1]
查看完整版本: 服务器被挂马,为什么"清了又活"?——聊聊我处置时的顺序