别看了,在加载了......

文章背景图

服务器首次被入侵事件(不嘻嘻😭)

2026-05-31
15
-
- 分钟
|

c6ad8481cee4f75d464b2a14040d06c9.gif

一、背景

服务器环境:

  • Ubuntu

  • SSH远程管理

  • 公网开放22端口

服务器主要用途:

  • 个人主页


二、异常现象

最初发现:

网站访问变慢。

随后执行:

 top

发现:

 CPU占用异常

于是开始排查。

手机访问面板,负载200%异常拥堵,CPU占用100%直观

1000161073.jpg

三、发现异常进程

执行:

 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

德国机房。

大量扫描器、矿工、僵尸网络用这个机房。


九、确认服务器已被入侵

满足条件:

  1. 陌生IP登录

  2. 登录成功

  3. 修改密码

  4. 安装矿机

  5. 写入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. 自动监控(进阶)

工具:

  • netdata

  • glances

  • prometheus


二十、最重要的认识

公网服务器不是自己的电脑。

只要暴露公网:

就会被扫描。

通常:

几分钟
到
几小时

内就会收到攻击。

服务器安全不是:

"会不会被攻击"

而是:

"什么时候被攻击"

因此:

安全措施必须提前部署。

后门

🚨 SSH 后门(最关键)

~/.ssh/authorized_keys

🚨 systemd 服务(矿机常用)

systemctl list-units --type=service

🚨 隐藏文件

find / -name ".*" -type f 2>/dev/null


二十一、我学到了什么

“现实世界真相”

现在的场景,本质是:

🌐 “互联网自动化攻击系统打到了一个弱口令 SSH 节点”

不是:

🎬 “黑客盯上你个人服务器进行定向攻击”

二十二、总结服务器入侵完整流程

服务器已经被入侵过一次,并且攻击者:

  1. 成功登录了 ivan 账号

    日志:

    2026-05-30 06:02
    
    Accepted password for ivan
    from 114.130.85.36

    说明:

    攻击者知道 ivan 的密码

    而且是正确密码。

    不是爆破。

    因为:

    直接一次成功
  2. 修改了密码

    紧接着:

    passwd: password changed for ivan

    说明:

    攻击者登录以后执行了:

    passwd

    修改了 ivan 密码。

  3. 获得了 sudo 权限

    直接提权,输入ivan的密码,因为这个用户被创建的时候就在aG SUDO组中

  4. 部署了挖矿程序(kthreadadd64)

    出现:

    /home/ivan/.configrc7

    里面:

    upd
    sync
    run

    都是恶意脚本。

    然后又释放:

    /tmp/.X291-unix/.rsync/c/

    目录。

    里面有:

    kthreadadd64

    你的脚本:

    timeout 4h ./kthreadadd

    525线程 —>CPU会被疯狂占用。

    运行4小时

    然后重启

    无限循环


    这就是典型矿工行为。

  5. 建立了持久化启动项(cron)

  6. 留下了后门账户和公钥(ivan)ssh

  7. 使用你的机器持续运行挖矿程序

从日志看,这已经不是扫描探测阶段,而是:

攻击者已经获得系统权限并执行恶意程序。

因为一旦攻击者拿到过 sudo 权限,就无法 100% 确认系统里是否还有其他隐藏后门。这是 Linux 应急响应里的基本原则。🛡️

技术层面:

  • Linux用户管理

  • SSH认证机制

  • sudo权限模型

  • Linux日志分析

  • 木马排查

  • 挖矿程序识别

  • SSH后门识别

  • 持久化机制分析

  • 应急响应流程

认知层面:

  • 互联网并不安全

  • 公网暴露即会被扫描

  • 安全配置必须前置

  • 日志是最重要的证据

  • 备份比恢复更重要

这次事件虽然是一次安全事故,但同时也是一次非常真实的Linux安全实战课。

从一个计算机专业学生成长的角度来说,这不是一次简单的“服务器中毒”,而是第一次完整经历:

服务器部署
↓
公网暴露
↓
账户泄露
↓
攻击者入侵(扫描机无时无刻在爆破)
↓
权限提升
↓
植入持久化后门
↓
挖矿程序运行
↓
日志取证
↓
应急响应
↓
清除木马
↓
系统加固

未来部署: 闲的没事不要新建用户,更不要把用户配置到aG SUDO组别

本文为个人学习记录,转载请注明出处:[万俟季先生的个人博客](https://miloaether.loc.cc)

(https://blog.ivano.cyou)

评论交流

文章目录