linux 如何查被肉鸡了
- Linux
- 2025-08-11
- 5
netstat -tulnp
查监听端口,
ps aux
看异常进程,
crontab -l
查定时任务,结合
last
登录记录及
/var/log/auth.log
日志排查是否被控
在Linux系统中判断主机是否已被攻击者控制(俗称“肉鸡”)需要系统性地排查多个维度,以下是详细的检测方法和分析思路,涵盖进程行为、网络活动、文件改动、系统配置、日志审计等核心领域,并提供可落地的操作指令和判断依据。
基础特征识别:异常现象预警
若出现以下任一现象,需高度警惕已被植入后门或持续控制:
| 风险等级 | 典型表现 | 潜在原因 |
|———-|———————————–|——————————|
| ️高危 | 未知高CPU/内存占用进程长期运行 | 挖矿载入、DDoS僵尸程序 |
| ️高危 | 非业务需要的对外端口持续开放 | 反向Shell、远控通道 |
| 中危 | 计划任务中出现加密脚本 | crontab注入 |
| 中危 | /etc/rc.local添加异常启动项 | 开机自启反面程序 |
| 低危 | 用户列表中出现陌生账号 | 暴力破解或弱口令载入 |
深度排查方法论(按优先级排序)
进程级分析(重点)
# 查看所有进程及完整命令行参数 ps auxfww --sort=-%cpu,-%mem | head -n 50 # 按资源占用排序前50条 pstree -apsu # 树状展示进程关系
关键判断点:
合法进程不应包含wget http://xxx
、curl | sh
等动态执行语句
警惕/dev/shm
目录下的临时进程(如/dev/shm/script.sh
)
注意PPID=1
的孤儿进程(可能是rootkit伪装)
进阶工具:
# 对比官方包管理器记录 rpm -qf $(which suspicious_binary) # RPM系 dpkg -S $(which suspicious_binary) # Debian系
若返回未找到对应包名,则为非规替换文件。
网络连接审计
# 实时监控网络连接建立过程 ss -tulnp | grep -v "LISTEN" # 过滤已建立连接 netstat -anptu # 传统方式查看四元组 lsof -i : # 显示所有网络相关文件句柄
危险信号:
指向非常见域名的出站连接(如.cn
, .ru
等非业务域)
本地端口映射到外部IP的反向代理(如LOCAL_ADDR=192.168.x.x -> REMOTE_ADDR=公网IP
)
非标准服务的奇怪端口(如8080/tcp却被httpd以外的进程占用)
文件完整性校验
目标路径 | 作用 | 检测方法 |
---|---|---|
/bin/bash |
Shell解释器 | MD5比对官方镜像值 |
/usr/sbin/sshd |
SSH服务端 | strings命令查看嵌入字符串 |
/etc/passwd |
用户凭证数据库 | find / -name “passwd” -exec ls -l {} ; |
/etc/crontab |
计划任务表 | grep -rn “/5 “ |
示例操作:
# 计算关键文件哈希值并与官方对比 md5sum /bin/bash > /tmp/bash.md5 # 从官网下载对应版本的MD5值进行比对
系统配置改动检测
重点关注文件:
cat /etc/profile # 全局环境变量设置 cat /etc/bashrc # 交互式shell配置 cat /etc/hosts # DNS解析劫持点 cat /etc/resolv.conf # 上游DNS服务器设置
典型攻击手法:
️️ 在/etc/profile
末尾添加export PS1="hacked"
等标识符
️️ 修改/etc/hosts
将内部域名解析到攻击者IP
️️ 替换/etc/nsswitch.conf
调整服务查找顺序
日志溯源分析
核心日志路径:
| 日志类型 | 路径 | 关注重点 |
|—————-|——————————-|—————————–|
| 认证日志 | /var/log/auth.log | 失败登录尝试、SUDO提权记录 |
| 系统日志 | /var/log/syslog | 服务启动停止事件 |
| 安全日志 | /var/log/secure | PAM模块认证记录 |
| 内核日志 | /var/log/kern.log | 驱动加载/卸载记录 |
分析技巧:
# 查找最近7天的成功登录记录 grep "Accepted password" /var/log/auth.log | tail -n 100 # 检索敏感命令执行历史 grep -E 'b(sudo|chmod|chown)b' /var/log/syslog | tail -n 50
隐蔽通道检测
常见藏匿位置:
find /dev/shm -type f -mtime -1h # 短期存活的内存盘文件 find /tmp -name ".tmp" -exec ls -l {} ; # 伪装成临时文件 strings /dev/shm/ | grep -i "reverse shell" # 提取可打印字符串
高级技巧:
# 检测隐藏进程(需root权限) for p in $(pgrep -a); do ltrace -p $p ; done # 跟踪系统调用
自动化检测工具推荐
工具名称 | 特点 | 适用场景 |
---|---|---|
chkrootkit |
专门检测rootkit的工具集 | 快速初筛 |
rkhunter |
集成多种检测规则 | 深度扫描 |
falco |
基于行为的实时监控 | 生产环境持续防护 |
osquery |
SQL查询系统状态 | 复杂环境批量检测 |
应急响应流程
- 隔离阶段:立即断网(
iptables -P INPUT DROP
),防止数据外泄 - 取证阶段:完整备份磁盘镜像(
dd if=/dev/vda of=/backup/disk.img bs=4M
) - 清除阶段:根据检测结果删除反面文件,重置密钥对
- 恢复阶段:从可信备份重建系统,更新所有账户密码
- 加固阶段:实施最小化权限原则,禁用不必要的服务
相关问答FAQs
Q1: 如何区分正常进程和反面进程?
A: 主要通过三个维度判断:①命令行参数是否包含动态执行语句(如wget
+);②进程所属用户与实际功能是否匹配(如普通用户运行/usr/sbin/sshd
);③进程文件路径是否在标准位置(如/tmp/
下的可疑二进制),建议结合lsof
查看进程打开的文件描述符,若存在大量外部IP连接则基本可判定为反面。
Q2: 发现可疑进程后应该如何处理?
A: 切勿直接kill进程!正确步骤:①使用strace
跟踪其系统调用(strace -p <PID>
);②提取进程内存转储(gcore -o coredump <PID>
);③记录完整进程树(pstree -aps <PID>
);④最后才终止进程并删除关联文件,整个过程需保留证据用于后续分析。
通过上述多维度的检测方法,可以有效识别Linux系统是否已被植入后门,建议每周执行一次常规检查,并在发现异常时立即启动应急响应流程,对于关键业务系统,推荐部署auditd
等审计框架实现实时