当前位置: 首页 > news >正文

服务器异常负载排查手册 · 隐蔽进程篇

适用范围

适用于 Linux 3.10+ 生产环境,发现 load 高但用户态 CPU 接近 0 % 的场景。


1. 现场冻结

目标:在 rootkit 干预前保存易失数据。

#!/bin/bash
# freeze.sh
TS=$(date +%s)
mkdir -p /srv/ir/${TS}
cd /srv/ir/${TS}# 1.1 进程树(busybox 静态单文件,绕过 LD_PRELOAD)
curl -sLo bb https://busybox.net/downloads/binaries/1.36.1-x86_64-linux-musl/busybox
chmod +x bb
./bb ps -eo pid,ppid,cmd,pcpu,stat --sort=-pcpu > ps.txt# 1.2 内核调度器原始视图
cat /proc/sched_debug > sched.txt# 1.3 打开文件表(含 deleted)
lsof +L1 > lsof_deleted.txt

运行:

sudo bash freeze.sh

输出目录 /srv/ir/<timestamp>/ 打包后拉走离线分析。


2. 隐形进程定位

2.1 比对法

#!/usr/bin/env python3
# hidden_pid.py
import os, re, globproc_pids   = {int(p) for p in glob.glob('/proc/[0-9]*')}
sched_pids  = set()
with open('/proc/sched_debug') as f:sched_pids = {int(m.group(1)) for m in re.finditer(r'pid\s+:\s+(\d+)', f.read())}hidden = sched_pids - proc_pids
print("Hidden PIDs:", hidden)

执行:

python3 hidden_pid.py

若有输出,则继续 2.2。

2.2 提取样本

PID=<hidden_pid>
cp /proc/$PID/exe /srv/ir/${TS}/pid_${PID}.elf
strings /srv/ir/${TS}/pid_${PID}.elf | grep -i 'stratum\|xmrig'

若命中关键字,可定性为挖矿木马。


3. 网络侧交叉验证

使用 eBPF 无需抓完整 PCAP,仅统计外联端口与字节数。

// conn_count.c  (clang + libbpf)
#include <vmlinux.h>
#include <bpf/bpf_helpers.h>struct {__uint(type, BPF_MAP_TYPE_HASH);__type(key, __u32);   // daddr__type(value, __u64); // bytes__uint(max_entries, 1024);
} ipv4_tx SEC(".maps");SEC("tracepoint/syscalls/sys_enter_write")
int trace_write(struct trace_event_raw_sys_enter *ctx) {__u32 fd = ctx->args[0];struct sock *sk = ...; // 省略 sk 获取逻辑if (!sk || sk->__sk_common.skc_family != AF_INET) return 0;__u32 daddr = sk->__sk_common.skc_daddr;__u64 *bytes = bpf_map_lookup_elem(&ipv4_tx, &daddr);__u64 len = ctx->args[2];if (bytes) *bytes += len;else bpf_map_update_elem(&ipv4_tx, &daddr, &len, BPF_ANY);return 0;
}
char LICENSE[] SEC("license") = "GPL";

编译 & 运行:

clang -O2 -target bpf -c conn_count.c -o conn_count.o
sudo bpftool prog load conn_count.o /sys/fs/bpf/conn_count
sudo bpftool prog attach tracepoint /sys/kernel/debug/tracing/events/syscalls/sys_enter_write conn_count
sleep 30
sudo bpftool map dump name ipv4_tx

若出现大量流量涌向已知矿池网段,证据链完整。


4. 止血与恢复

步骤动作备注
4.1从旁路接入清洗中心将 0.0.0.0/0 → TCP/443 流量牵引至第三方高防 Anycast 清洗;源站仅接受清洗中心回源网段
4.2本地进程 killkill -9 <hidden_pid> 后立即 echo f > /proc/sysrq-trigger 强制释放已删除文件句柄
4.3内核完整性校验apt install debsums && debsums -cs 失败包重新安装
4.4重启确认 /var/log/syslogima: error 后单用户模式重启

5. 参考架构

  • 边缘接入层:Anycast + 七层 WAF + Bot 管理
  • 源站侧:仅开放 22/443 回源白名单,SSH 端口改为 922 并通过隧道访问
  • 日志:清洗中心提供 JSON 格式原始日志,直接对接 SIEM,减少自建 ELK 节点数量
http://www.xdnf.cn/news/1450999.html

相关文章:

  • Android AI客户端开发(语音与大模型部署)面试题大全
  • Tomcat 服务器全方位指南:安装、配置、部署与实战优化
  • Sentinel 与 Feign 整合详解:实现服务调用的流量防护
  • Clang 编译器:下载安装指南与实用快捷键全解析
  • C++类和对象(上):从设计图到摩天大楼的构建艺术
  • 蔚来汽车前制动器设计及热性能分析cad+三维图+设计说明书
  • MySQL SM4 UDF 安装与使用
  • 【计算机网络(自顶向下方法 第7版)】第一章 计算机网络概述
  • 《D (R,O) Grasp:跨机械手灵巧抓取的机器人 - 物体交互统一表示》论文解读
  • 实战演练(二):结合路由与状态管理,构建一个小型博客前台
  • Java基础知识点汇总(五)
  • 修订版!Uniapp从Vue3编译到安卓环境踩坑记录
  • 新手向:AI IDE+AI 辅助编程
  • 开源视频剪辑工具推荐
  • 经典资金安全案例分享:支付系统开发的血泪教训
  • Hadoop(七)
  • 数说故事 | 2025年运动相机数据报告,深挖主流品牌运营策略及行业趋势​
  • HarmonyOS路由导航方案演进:HMRouter基于Navigation封装,使用更方便
  • 【软考架构】嵌入式系统及软件
  • Shadcn UI – 开发者首选的高性能、高定制化 React 组件库
  • Flutter之riverpod状态管理详解
  • 第1章 Jenkins概述与架构
  • ⸢ 肆 ⸥ ⤳ 默认安全:安全建设方案 ➭ b.安全资产建设
  • HTTP性能优化
  • Rust 文件操作终极实战指南:从基础读写到进阶锁控,一文搞定所有 IO 场景
  • 设计模式3 创建模式之Singleton模式
  • 大数据工程师认证推荐项目:基于Spark+Django的学生创业分析可视化系统技术价值解析
  • 基于 EasyExcel + 线程池 解决 POI 导出时的内存溢出与超时问题
  • 如何简单理解状态机、流程图和时序图
  • Docker学习记录