挖矿木马事件总概况:挖矿木马/tmp/272587863,启用netstat.service,伪装bluetoothd
初始木马进程PID: 916 (取得Root权限)
CPU:199.7
父进程PID:753(取得Root权限,单次总线程数量7个)
伪装systemd持久化服务名称:netstat.service
伪装蓝牙守护进程:/usr/local/bin/bluetoothd
挖矿远程终端IP和端口: 185.112.146.184:6280
SSH植入密钥或公钥后门:/root/.ssh/authorized_keys
实例名称:@10-11-164-56
案例操作系统:Ubuntu 24.04 LTS (Noble Numbat)
报警通知时间:2026年10月14日晚20:59分(北京时间)
作者简介: 张开辉,福州张开辉网络营销工作室创始人,全球OWASP安全组织中国区成员,担任2020年11月11-13日东盟国家电机电器云展会网络安全负责人,独创使用Python进行安全防护及报警程序(未公开),全国首个公开SEO和GEO的外贸实战案例的营销人员,本记实案例由张开辉原创,如需转发需转发全文。
第一:发现木马CPU100%的排查第一步:防火墙禁止所有入口流量仅自己可进
1、查询本机上网IP和代理IP, 并使用网页版的控制台的防火墙功能,仅允许自己IP进入服务器,禁止所有端口进入。切断木马的连接。(因大部分木马虽断网但在服务器内会继续运行程序,并链接远程终端,可以查询相关的日志并知道对方的IP)
第二:发现木马CPU100%的排查第二步:登录后台,使用 top 命令查到高CPU的进程。
root@10-11-164-56:~# top
发现进程号916 因执行程序 272587863 , CPU达到 199.7 。这是非常明显的异常。
第三:按常规分析木马进程916的程序及位置等。
# 查看可执行文件路径 命令 ls -l /proc/916/exe
root@10-11-164-56:~# ls -l /proc/916/exe
lrwxrwxrwx 1 root root 0 Oct 14 23:12 /proc/916/exe -> /tmp/272587863
# 查看进程树(看父进程是谁) 命令 pstree -p 916
root@10-11-164-56:~# pstree -p 916
272587863(916)─┬─{272587863}(918)
├─{272587863}(919)
├─{272587863}(920)
├─{272587863}(921)
├─{272587863}(923)
├─{272587863}(1354)
└─{272587863}(1355)
#检查服务日志:journalctl -u <服务名> -n 100
root@10-11-164-56:~# journalctl -u 272587863 -n 100
-- No entries --
备注:木马就把日志删除非常干净了。
# 先查网络连接(挖矿会连矿池) 命令 netstat -antp | grep 916 或者 ss -antp | grep 916
root@10-11-164-56:~# netstat -antp | grep 916
tcp 0 0 10.11.164.56:41096 185.112.146.184:6280 ESTABLISHED 916/272587863
root@10-11-164-56:~# ss -antp | grep 916
ESTAB 0 0 10.11.164.56:41096 185.112.146.184:6280 users:(("272587863",pid=916,fd=13))
#检查可疑目录 命令 ls -la /tmp /var/tmp /dev/shm
root@10-11-164-56:~# ls -la /tmp /var/tmp /dev/shm
/dev/shm:
total 0
drwxrwxrwt 2 root root 40 Oct 14 23:12 .
drwxr-xr-x 18 root root 3940 Oct 14 23:12 ..
/tmp:
total 7420
drwxrwxrwt 11 root root 4096 Oct 14 23:12 .
-rwx------ 1 root root 7552312 Oct 14 23:12 272587863
备注其它省略
第四:常规清除木马进程916
#先取证(可选,建议做) # 记录916连接信息 命令
ss -antp | grep 916 > /root/malware_$(date +%s).log
ps -ef >> /root/malware_$(date +%s).log
root@10-11-164-56:~# ss -antp | grep 916 > /root/malware_$(date +%s).log
root@10-11-164-56:~# ps -ef >> /root/malware_$(date +%s).log
# 计算文件哈希 命令
md5sum /tmp/272587863
sha256sum /tmp/272587863
root@10-11-164-56:~# md5sum /tmp/272587863
8d95e7231dd1ad84d00b02af125716df /tmp/272587863
root@10-11-164-56:~# sha256sum /tmp/272587863
78774375e567f22479880778fdbb20aa106c56ca37b1d0d3c075e9798066df88 /tmp/272587863
#杀死916进程 前 先看父进程是谁 命令 ps -o ppid= -p 916
root@10-11-164-56:~# ps -o ppid= -p 916
753
备注:753 是启动这个挖矿进程的父进程。它可能再次拉起恶意进程。
# 强制杀死 命令 kill -9 916
root@10-11-164-56:~# kill -9 916
#删除恶意文件 # 先删除文件(即使进程在运行也能删,但文件句柄还会占用空间)命令rm -f /tmp/272587863
root@10-11-164-56:~# rm -f /tmp/272587863
备注:会无反应,表示删除成功。
# 确认删除 命令 ls -l /tmp/272587863
root@10-11-164-56:~# ls -l /tmp/272587863
ls: cannot access '/tmp/272587863': No such file or directory
第五:检查持久化机制(关键!否则会被重新拉起)
# 检查所有 crontab 命令
crontab -l
ls -la /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.weekly/ /etc/cron.monthly/
cat /etc/crontab
for u in $(cut -f1 -d: /etc/passwd); do echo "=== $u ==="; crontab -l -u $u 2>/dev/null; done
# 检查 systemd 服务(挖矿常伪装成服务)
systemctl list-units --type=service | grep -iE 'tmp|272587863|kdev|kinsing'
ls -la /etc/systemd/system/ | grep -vE '^d|total'
grep -rl "272587863\|/tmp/" /etc/systemd/system/ 2>/dev/null
其中操作中,要认真分析
root@10-11-164-56:~# ls -la /etc/systemd/system/ | grep -vE '^d|total'
-rw-r--r-- 1 root root 206 Oct 14 20:58 netstat.service
备注:2026年10月14日20:58分,有个netstat.service 服务,是跟报警时间非常临近,非常可疑。netstat.service 尤其可疑,名字伪装成网络工具,但创建时间就在今天(Oct 14 20:58),而挖矿进程 23:12 启动 —— 时间线吻合。
其他继续检查
# 检查 ld.so.preload 劫持
cat /etc/ld.so.preload 2>/dev/null
# 检查启动项
cat /etc/rc.local 2>/dev/null ls -la /etc/init.d/
# 检查 SSH authorized_keys(是否被留后门)
cat /root/.ssh/authorized_keys 2>/dev/null
在检查到SSH后门,发现异常。
root@10-11-164-56:~# cat /root/.ssh/authorized_keys 2>/dev/null
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH+dcRD2RWrvqm4DENbL0rvehoVR7fecCNR3QKa2vXtg root@10-11-164-56
# 查找最近修改的可疑文件
find /tmp /var/tmp /dev/shm -type f -mmin -120 2>/dev/null
find / -name "*272587863*" 2>/dev/null
# 查看是否有其他同类进程
ps -ef | grep -vE 'grep|sshd|systemd' | awk '$3>50'
# 查看登录记录(判断入侵途径)
last -20
lastb -20
grep -i "Failed password" /var/log/auth.log | tail -20
第六:了解木马父进程753
上述步骤得到 753 是启动这个挖矿进程的父进程,按常规了解一个这个753进程。
ps -p 753 -o pid,ppid,user,%cpu,cmd
ls -l /proc/753/exe
root@10-11-164-56:~# ps -p 753 -o pid,ppid,user,%cpu,cmd (备注 #确认 753 是什么)
PID PPID USER %CPU CMD
753 1 root 0.0 /usr/local/bin/bluetoothd
root@10-11-164-56:~# ls -l /proc/753/exe (备注 #确认 753 是什么)
lrwxrwxrwx 1 root root 0 Oct 14 23:12 /proc/753/exe -> /usr/local/bin/bluetoothd
root@10-11-164-56:~# systemctl status netstat.service (备注# 查看这个服务的状态)
● netstat.service - System Service for netstat
Loaded: loaded (/etc/systemd/system/netstat.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-10-14 23:12:21 CST; 29min ago
Main PID: 753 (bluetoothd)
Tasks: 12 (limit: 4636)
Memory: 25.6M (peak: 26.1M)
CPU: 59min 5.331s
CGroup: /system.slice/netstat.service
├─ 753 /usr/local/bin/bluetoothd
└─1808 /tmp/272587863
Oct 14 23:12:21 10-11-164-56 systemd[1]: Started netstat.service - System Service for netstat.
root@10-11-164-56:~# journalctl -u netstat.service -n 50 (备注# 查看这个服务的日志)
Oct 14 23:11:07 10-11-164-56 systemd[1]: netstat.service: Unit process 117458 (3244108054) remains running after unit stopped.
备注:木马父进程仍在继续工作,并没有停止。
root@10-11-164-56:~# systemctl cat netstat.service (备注# 查看它实际执行什么)
# /etc/systemd/system/netstat.service
[Unit]
Description=System Service for netstat
After=network.target
[Service] ExecStart=/usr/local/bin/bluetoothd
Nice=-20
Restart=always
RestartSec=3
KillMode=process
[Install]
WantedBy=multi-user.target
其他检查,
1. 检查是否有开机自启的可疑项
root@10-11-164-56:~# systemctl list-unit-files --state=enabled | grep -viE 'ssh|network|systemd|cron|rsyslog|docker|ufw|apparmor|dbus|getty|multi|remote|snap|cloud|unattended|polkit|rsync|iscsi|open-iscsi|modem|e2scrub|sysstat|man-db|apt|dpkg|logrotate|apport|uuidd'
2. 检查 /etc/profile.d/ 和 bashrc(用户登录触发)
root@10-11-164-56:~# ls -la /etc/profile.d/
root@10-11-164-56:~# grep -rn "tmp\|272587863\|curl\|wget" /etc/profile.d/ /etc/profile /root/.bashrc /root/.profile 2>/dev/null | grep -v "^Binary"
3. 检查进程 753 是否还存在
root@10-11-164-56:~# ps -ef | grep -E "753|272587863" | grep -v grep
root 753 1 0 23:12 ? 00:00:00 /usr/local/bin/bluetoothd
root 1808 753 99 23:32 ? 00:26:36 /tmp/272587863
备注:关于 /usr/local/bin/bluetoothd 这是关键伪装。
正常的蓝牙守护进程在 /usr/sbin/bluetoothd 或 /usr/lib/bluetooth/bluetoothd
/usr/local/bin/ 是手动安装程序的位置,systemd 服务通常不会放这里
攻击者故意起名 bluetoothd 让它看起来像系统进程
4. 查看最近的登录情况(判断入侵途径)
root@10-11-164-56:~# last -20
root@10-11-164-56:~# grep -i "Accepted\|Failed" /var/log/auth.log | tail -30
输入内容省略
第七:明确判断木马,进行常规清除
上一段的检查,可以得到完整证据链:
netstat.service (伪装成系统服务)
└─ ExecStart=/usr/local/bin/bluetoothd ← 伪装成蓝牙守护进程
└─ PID 753 (bluetoothd)
└─ /tmp/272587863 (PID 1808) ← 真正的挖矿程序,已复活!
关键证据:
systemctl cat netstat.service 显示 Restart=always、Nice=-20(最高优先级)
systemctl status 显示 PID 753 的 cgroup 下又拉起了 1808 /tmp/272587863
ps -ef 确认 1808 正在运行,99% CPU,已跑 26 分钟
日志显示之前还有 117458 (3244108054) 这个变种名
之前的 kill -9 916 和 rm 只清除了当前实例,守护进程 753 立即又拉起了一个新的(PID 1808)
解决方案如下:
1. 先停掉并禁用恶意服务(阻止复活)
systemctl stop netstat.service
systemctl disable netstat.service
2. 杀掉守护进程和挖矿进程
kill -9 753 1808
ps -ef | grep -E "bluetoothd|272587863" | grep -v grep
3. 删除恶意文件
# 删除服务定义
rm -f /etc/systemd/system/netstat.service
systemctl daemon-reload
systemctl reset-failed
# 删除伪装成 bluetoothd 的木马
ls -l /usr/local/bin/bluetoothd
rm -f /usr/local/bin/bluetoothd
# 删除挖矿程序
rm -f /tmp/272587863
# 确认全部删除
ls -l /usr/local/bin/bluetoothd /tmp/272587863 /etc/systemd/system/netstat.service 2>&1
4. 验证是否彻底清除
# 不应该有任何输出
ps -ef | grep -E "bluetoothd|272587863|3244108054" | grep -v grep (备注# 不应该有任何输出)
systemctl status netstat.service
这个会提示:
root@10-11-164-56:~# systemctl status netstat.service
Unit netstat.service could not be found.
ss -antp | grep -E "185.112.146.184|6280" (备注# 不应该有任何输出)
# 再观察几分钟,确认没有新进程出现
watch -n 5 'ps -ef | grep -E "272587863|bluetoothd" | grep -v grep; ss -antp | grep 185.112' (备注# 不应该有任何输出)
#/usr/local/bin/bluetoothd 再次删除确认
ls -l /usr/local/bin/ | head -50
# 看看 /usr/local/bin 下还有什么可疑文件
file /usr/local/bin/bluetoothd
root@10-11-164-56:~# file /usr/local/bin/bluetoothd
/usr/local/bin/bluetoothd: cannot open `/usr/local/bin/bluetoothd' (No such file or directory)
第八:事后马上把简单密码更改复杂无规律密码,把22端口改为其它5位数端口,同时替换SSH公钥后门仅密钥登录加二维实时动态口令登录,进行时服务器安全升级等。
特别是/root/.ssh/authorized_keys 里新增的公钥 RSA key: ssh-ed25519 ... root@10-11-164-56, 要删除或做替换处理。这个后门留不得。
#开启SSH的Fail2Ban功能
root@10-11-164-56:~# systemctl start fail2ban
root@10-11-164-56:~# systemctl enable fail2ban
第九:张开辉针对“挖矿木马/tmp/272587863,启用netstat.service,伪装bluetoothd,植入SSH后门”结语
服务器重启并运营多个小时后,正常运营。
挖矿病毒只是表象。攻击者既然能用 root 植入挖矿,也可能:
装了 SSH 后门
改了系统文件,如源文件 /etc/apt/sources.list 也是要重点检查的。
留了其他定时任务
窃取了数据
张开辉认为第一时间如较短时间几秒内就有木马入侵报警通知,及时排除相关的进程,就可以短时间内快速清除并减少损失。

