公众号旧文

服务器被黑,黑客用的是我自己创建的用户

作者:胖子阅读 —

今天凌晨,我像往常一样打开 VPS 状态页。

其中一台的信息如下:

IP: 45.202.240.112
00:40:26 up 46 days
load average:2.08, 1.79, 1.66
内存:760MB / 973MB
Fail2Ban:当前封禁 6 | 累计封禁 19965

正常情况下,负载应该长期维持在 0.x ,内存占用也不应该那么高。

因为这台服务器网络最差,用着最卡,一直是吃灰的状态。

那到底是什么在消耗我的服务器资源?

于是,我开始排查。

原来服务器里有一个伪装成 Linux 系统组件的程序,通过 SSH 进入,在普通用户权限下建立持久化任务,并长期与境外 IP 保持通信。

离谱的是,这个被攻陷的普通用户,还是我自己创建的……

第一步:找到元凶

用 top 查看系统负载,很快发现一个异常进程。

进程名字看起来像随机数字:

3155209075

CPU占用90%以上。

继续查看:

ps -fp PID

发现它居然是从:

/dev/shm/3155209075

运行的。

/dev/shm 是Linux的内存文件系统。

很多恶意程序会在这运行,因为重启后文件会消失,不容易留下痕迹。

第二步:追查父进程

用 pstree -p 查看进程树发现这个进程并不是孤立存在的。

它的父进程叫 dmesg,路径 /home/testuser/.config/systemd/dmesg

dmesg 是 Linux 用于查看内核日志的系统命令,但这里出现的却是一个位于用户目录中的可执行文件。

很明显,这是在故意伪装成系统组件。

第三步:发现神秘用户

继续检查:

ls -laR /home/testuser

发现整个用户目录几乎是空的。

除了 .config/systemd/dmesg 别的什么都没有。

随后查看启动项:

crontab -u testuser -l

发现:

@reboot /home/testuser/.config/systemd/dmesg

开机后自动启动,这属于典型的持久化手段。

第四步:网络连接分析

查看网络连接:

lsof -Pan -p PID

发现程序一直连着:

170.168.103.27:29205

说明程序一直在和远端服务器通信。

第五步:查入侵来源

查看日志后发现了关键线索:

Accepted password for testuser
from 176.65.139.242

时间:

2026-06-02 05:30:47

也就是说攻击者不是通过漏洞进来的,而是直接SSH登录成功了。

随后又出现:

sudo: testuser : user NOT in sudoers

说明攻击者还尝试提权,但失败了。

真相大白

继续翻历史记录,发现:

adduser testuser
su - testuser

5月28日,我为了学习 Linux 用户权限,创建了一个 testuser 账号。

之后忘记删除,6月2日 05:30,这个账号成了攻击者进入服务器的入口。

Fail2ban 没能拦住,因为设置的规则是10分钟内5次失败才生效。

而显然这个 testuser 的密码也是 testuser 之类的,根本不用5次。

幸运的是,攻击者只拿到了普通用户权限,没能进一步提权到root。