
一、背景
服务器环境:
Ubuntu
SSH远程管理
公网开放22端口
服务器主要用途:
个人主页
二、异常现象
最初发现:
网站访问变慢。
随后执行:
top发现:
CPU占用异常于是开始排查。
手机访问面板,负载200%异常拥堵,CPU占用100%直观

三、发现异常进程
执行:
ps aux --sort=-%cpu | head发现:
kthreadadd可疑进程。
注意:
Linux内核线程通常名称类似:
kthreadd
kworker
ksoftirqd而:
kthreadadd明显不是系统组件。
属于伪装。
四、追踪恶意程序
定位进程:
ps -fp PID进一步:
pwdx PID发现目录:
/tmp/.X291-unix/.rsync/c正常 Linux 系统:
/usr/bin
/usr/sbin
/lib会出现系统程序。
但是:
/tmp/.X291-unix/.rsync/这种隐藏目录:
.
.X291-unix
.rsync非常像木马常用藏身位置。
更像挖矿程序
典型特征:
伪装系统进程
放在/tmp
CPU占用高
自动重启完全符合。
五、分析木马脚本
发现:
cat go内容:
while :
do
timeout 4h ./kthreadadd
done特点:
无限循环
自动重启
持久运行
典型矿机行为。
六、发现持久化机制
发现:用户下的隐藏目录
~/.configrc7//home/ivan/.configrc7包含:
upd
sync
run脚本。
作用:
矿机被杀
↓
脚本重新启动
↓
继续挖矿属于持久化后门。
七、发现可疑账户
查看:
id ivan结果:
uid=1002(ivan)
groups=sudo说明:
ivan拥有sudo权限。
攻击者获得了一个拥有 sudo 权限的账户(ivan),并部署了持久化恶意程序。
攻击链:
爆破已存在的ivan
↓
加入 sudo
↓
写 authorized_keys
↓
安装 kthreadadd
↓
写 cron
↓
循环启动非常完整。
八、查看登录日志
执行:
grep "Accepted" /var/log/auth.log发现:
Accepted password for ivan
from 114.130.85.36以及:
Accepted password for ivan
from 46.4.121.243均不是本人IP。
两个国外 IP 登录 ivan
这里:
114.130.85.36
46.4.121.243登录成功:
Accepted password for ivan注意:
Accepted不是尝试。
是:
密码正确已经进来了。
说明3
这个IP:
114.130.x.x属于:
Indonesia
印尼地区网络。
黑客来源 IP
46.4.121.243属于:
Hetzner
德国机房。
大量扫描器、矿工、僵尸网络用这个机房。
九、确认服务器已被入侵
满足条件:
陌生IP登录
登录成功
修改密码
安装矿机
写入SSH后门
因此:
确认入侵。
从日志反推入侵时间
最关键记录:
2026-05-30 06:02
114.130.85.36
Accepted password for ivan这是目前看到的首次成功登录。
因此可以推断:
✅ 木马大概率是 5月30日早晨被植入的
而不是 May17 创建服务器时就存在。
ivan账号密码设置过于简单
或者
密码重复使用
因为日志显示:
06:02 登录成功
06:03 修改密码非常像:
自动化扫描器
↓
爆破成功
↓
自动安装矿机这种模式。
十、攻击者行为分析
攻击流程推测:
扫描22端口
↓
爆破密码
↓
获取ivan账户
↓
sudo提权
↓
获得root
↓
下载矿机
↓
创建启动脚本
↓
植入SSH公钥
↓
持续控制服务器① 登录成功(第一次)
Accepted password for ivan from 114.130.85.36含义:
SSH 密码认证成功
攻击者已经掌握:
用户名
ivan密码(明文或撞库结果)
IP:114.130.85.36(通常是代理/VPS/肉鸡跳板)
👉 重点: 这一步不是“试探”,是直接登录成功
② 修改密码(关键控制权行为)
passwd日志:
password changed for ivan含义:
攻击者登录后执行
passwd把你的账号密码改掉了
👉 这一步是典型的:
🚨 “账户劫持(Account Takeover)完成标志”
③ 第二次登录(换IP)
Accepted password for ivan from 46.4.121.243含义:
新 IP 成功登录
使用的是刚被修改的新密码
攻击者继续控制系统
✅ 99% 是自动化攻击流程 + 可能有人工初始投放
🧠 为什么不是纯人工?
我们看行为特征:
🚨 特征1:时间间隔极短
06:02 登录
06:02~06:03 passwd 修改
06:14 再登录👉 人工操作不会这么“工业化精准”
🚨 特征2:IP快速切换
114.130.85.36
46.4.121.243
特点:
都是 VPS / 代理节点常见 IP 段
没有地理连续性
很像“攻击基础设施池”
🚨 特征3:行为非常标准化
典型脚本链路:
SSH login
→ execute passwd
→ verify login again
→ deploy payload这属于:
🧬 入侵后自动化脚本(Post-exploitation script)
🧠 更真实的模型是:
扫描器(Masscan / ZMap)
↓
密码库(泄露密码 / 撞库)
↓
自动 SSH 登录工具(hydra / custom bot)
↓
成功 → 自动执行 payload
↓
改密码 / 上公钥 / 装后门 / 挖矿🧠 三、你的机器“值不值得被真人盯上”?
答案很现实:
❌ 不值得“人工黑客专门盯你” ✅ 但非常值得“自动化系统扫你”
攻击者可能已经:
修改 PAM
留 systemd 服务
留 SSH Key
留 rootkit
改 sudoers
改 bashrc
改 profile
你永远无法百分百确认。
十一、发现SSH后门
发现:
cat /home/ivan/.ssh/authorized_keys内容:
ssh-rsa AAAA....
mdrfckr说明:
这个:
❌ 不是FinalShell生成的
因为:
FinalShell不会自己往服务器写:
authorized_keys攻击者上传了自己的公钥。
以后即使密码修改,我不配置禁用密码,他照样登录:
仍可登录。
因为:
mdrfckr实际上是英文俚语:
motherfucker的缩写写法。
这把密钥不是系统生成的
而是:
有人自己生成
↓
手动写进 authorized_keys十四、删除木马
执行:
pkill -9 -f kthreadadd
pkill -9 -u ivan删除目录:
rm -rf /tmp/.X291-unix
rm -rf /home/ivan/.configrc7十五、删除账户
执行:
userdel -r ivan
rm -rf /home/ivan彻底删除:
用户
家目录
SSH公钥
十六、检查系统启动项
检查:
crontab -l
systemctl list-unit-files
systemctl list-units --type=service未发现残留矿机服务。
十七、检查监听端口
执行:
ss -tunlp发现:
22
80
443
38638
25774均符合业务需求。
未发现明显恶意端口。
十九、经验教训
不要长期保留测试账户
例如:
ivan
test
admin测试结束立即删除。
不要给日常用户 sudo
例如:
ivan如果只是上传文件。
根本不需要:
sudo权限。
不要使用密码登录
推荐:
SSH公钥登录。
永远不要开放密码登录
修改:
/etc/ssh/sshd_config以后:
PasswordAuthentication no永远使用 SSH 公钥
不要依赖密码。
公钥认证
+
禁用密码是 VPS 最基础的安全配置。
不要使用22端口
改为:
39922
58123
46822等随机端口。
安装Fail2Ban(可选)
自动封禁爆破IP。
apt install fail2ban定期检查日志
查看:
last -a
journalctl
auth.log建立备份机制
遵循:
3-2-1原则
3份数据
2种介质
1份异地
6. 自动监控(进阶)
工具:
netdataglancesprometheus
二十、最重要的认识
公网服务器不是自己的电脑。
只要暴露公网:
就会被扫描。
通常:
几分钟
到
几小时内就会收到攻击。
服务器安全不是:
"会不会被攻击"
而是:
"什么时候被攻击"
因此:
安全措施必须提前部署。
后门
🚨 SSH 后门(最关键)
~/.ssh/authorized_keys🚨 systemd 服务(矿机常用)
systemctl list-units --type=service🚨 隐藏文件
find / -name ".*" -type f 2>/dev/null二十一、我学到了什么
“现实世界真相”
现在的场景,本质是:
🌐 “互联网自动化攻击系统打到了一个弱口令 SSH 节点”
不是:
🎬 “黑客盯上你个人服务器进行定向攻击”
二十二、总结服务器入侵完整流程
服务器已经被入侵过一次,并且攻击者:
成功登录了
ivan账号日志:
2026-05-30 06:02 Accepted password for ivan from 114.130.85.36说明:
攻击者知道 ivan 的密码而且是正确密码。
不是爆破。
因为:
直接一次成功修改了密码
紧接着:
passwd: password changed for ivan说明:
攻击者登录以后执行了:
passwd修改了 ivan 密码。
获得了 sudo 权限
直接提权,输入ivan的密码,因为这个用户被创建的时候就在aG SUDO组中
部署了挖矿程序(kthreadadd64)
出现:
/home/ivan/.configrc7里面:
upd sync run都是恶意脚本。
然后又释放:
/tmp/.X291-unix/.rsync/c/目录。
里面有:
kthreadadd64你的脚本:
timeout 4h ./kthreadadd525线程 —>CPU会被疯狂占用。
运行4小时
然后重启
无限循环
这就是典型矿工行为。
建立了持久化启动项(cron)
留下了后门账户和公钥(ivan)ssh
使用你的机器持续运行挖矿程序
从日志看,这已经不是扫描探测阶段,而是:
攻击者已经获得系统权限并执行恶意程序。
因为一旦攻击者拿到过 sudo 权限,就无法 100% 确认系统里是否还有其他隐藏后门。这是 Linux 应急响应里的基本原则。🛡️
技术层面:
Linux用户管理
SSH认证机制
sudo权限模型
Linux日志分析
木马排查
挖矿程序识别
SSH后门识别
持久化机制分析
应急响应流程
认知层面:
互联网并不安全
公网暴露即会被扫描
安全配置必须前置
日志是最重要的证据
备份比恢复更重要
这次事件虽然是一次安全事故,但同时也是一次非常真实的Linux安全实战课。
从一个计算机专业学生成长的角度来说,这不是一次简单的“服务器中毒”,而是第一次完整经历:
服务器部署
↓
公网暴露
↓
账户泄露
↓
攻击者入侵(扫描机无时无刻在爆破)
↓
权限提升
↓
植入持久化后门
↓
挖矿程序运行
↓
日志取证
↓
应急响应
↓
清除木马
↓
系统加固未来部署: 闲的没事不要新建用户,更不要把用户配置到aG SUDO组别
本文为个人学习记录,转载请注明出处:[万俟季先生的个人博客](https://miloaether.loc.cc)