文章总结: 该文档介绍了一款针对Java容器环境的主机入侵痕迹自动化排查Shell脚本,覆盖系统基线、可疑进程、网络连接、Docker容器、登录审计、定时任务等全维度检测,执行后自动生成带时间戳的审计日志,旨在帮助安全运维人员快速定位入侵痕迹并缩短应急响应时间。脚本提供了详细的排查命令和结果汇总,并给出了Windows换行符兼容修复建议。 综合评分: 81 文章分类: 应急响应,安全工具,内网渗透,WEB安全
主机入侵痕迹自动化排查工具(Shell 脚本)
cor0ps cor0ps
Web安全
2026年6月29日 20:00 广东
在小说阅读器读本章
去阅读
服务器遭遇入侵攻击时,逐个人工核查进程、网络、容器、定时任务等风险点耗时费力,排查极易出现遗漏。整理一套适配微服务容器环境的排查脚本,覆盖系统基线、恶意进程、外联会话、容器内部风险、登录审计、后门文件、计划任务等全维度检测,执行后自动生成带时间戳完整审计日志,快速定位入侵痕迹,大幅缩短应急溯源处置时间。
#!/bin/bash
# ========================================
# 安全排查脚本 - 针对Java容器环境
# 生成带时间戳的日志文件
# ========================================
# 设置日志文件(带时间戳)
LOG_DIR="./security_check_logs"
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/security_check_$(date +%Y%m%d_%H%M%S).log"
# 颜色输出函数(仅终端显示,不写入日志)
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'# No Color
# 日志函数:同时输出到终端和日志文件
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $1"
echo -e "$msg" | tee -a "$LOG_FILE"
}
log_cmd() {
local cmd="$1"
local separator="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo"" | tee -a "$LOG_FILE"
echo"$separator" | tee -a "$LOG_FILE"
echo"【执行命令】$cmd" | tee -a "$LOG_FILE"
echo"【执行时间】$(date '+%Y-%m-%d %H:%M:%S')" | tee -a "$LOG_FILE"
echo"$separator" | tee -a "$LOG_FILE"
# 执行命令并追加输出到日志
eval"$cmd" >> "$LOG_FILE" 2>&1
local exit_code=$?
if [ $exit_code -ne 0 ]; then
echo"⚠️ 命令执行异常,退出码: $exit_code" | tee -a "$LOG_FILE"
fi
echo"" | tee -a "$LOG_FILE"
}
# ========================================
# 开始排查
# ========================================
echo -e "${GREEN}╔══════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ 安全排查脚本 - 开始执行 ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════════════════════╝${NC}"
echo -e "${YELLOW}日志文件: $LOG_FILE${NC}"
echo""
# ========================================
# 1. 系统基本信息
# ========================================
log"========== 系统基本信息 =========="
log_cmd "uname -a"
log_cmd "cat /etc/os-release | head -5"
log_cmd "uptime"
log_cmd "who -a"
# ========================================
# 2. 可疑进程排查
# ========================================
log"========== 可疑进程排查 =========="
log_cmd "ps aux | grep -E '(bash|sh|nc|python|perl|curl|wget)' | grep -v grep"
log_cmd "ps aux | grep -E 'java.*-jar' | grep -v grep"
# 重点关注可疑的java子进程
log_cmd "ps -ef | grep java | grep -v grep"
# 进程树
log"========== 进程树(查看父子关系)=========="
log_cmd "pstree -p | head -200"
# 显示CPU/内存占用最高的进程
log"========== 资源占用TOP 10 =========="
log_cmd "ps aux --sort=-%cpu | head -11"
log_cmd "ps aux --sort=-%mem | head -11"
# ========================================
# 3. 网络连接排查
# ========================================
log"========== 网络连接排查 =========="
log_cmd "netstat -antlp 2>/dev/null | grep ESTABLISHED"
log_cmd "ss -antlp 2>/dev/null"
log_cmd "netstat -antlp 2>/dev/null | grep LISTEN"
log_cmd "lsof -i -P -n 2>/dev/null | head -100"
# ========================================
# 4. 登录记录
# ========================================
log"========== 登录记录 =========="
log_cmd "last -i | head -50"
log_cmd "lastlog | grep -v 'Never logged in'"
log_cmd "who -a"
# ========================================
# 5. Docker容器检查
# ========================================
log"========== Docker容器信息 =========="
log_cmd "docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}\t{{.Ports}}'"
# 逐个检查指定容器
for container in hzlf-dji-web emqx hzlf-dji-boot minio; do
log"---------- 容器: $container ----------"
log_cmd "docker inspect $container 2>/dev/null | head -100"
# 检查容器内是否有可疑进程
log_cmd "docker exec $container ps aux 2>/dev/null | grep -E '(bash|sh|nc|python|perl|curl|wget)' | grep -v grep"
# 检查容器网络连接
log_cmd "docker exec $container netstat -antlp 2>/dev/null | grep ESTABLISHED"
log_cmd "docker exec $container ss -antlp 2>/dev/null"
done
# ========================================
# 6. 额外安全排查
# ========================================
log"========== 额外安全排查 =========="
# 定时任务检查
log_cmd "crontab -l 2>/dev/null"
log_cmd "cat /etc/crontab 2>/dev/null | head -30"
# 最近修改的可执行文件
log_cmd "find /tmp -type f -executable -mtime -7 2>/dev/null | head -20"
log_cmd "find /var/tmp -type f -executable -mtime -7 2>/dev/null | head -20"
# 检查可疑的SUID文件
log_cmd "find / -perm -4000 -type f 2>/dev/null | head -20"
# 检查SSH配置
log_cmd "cat /etc/ssh/sshd_config 2>/dev/null | grep -E '^(PermitRootLogin|PasswordAuthentication|Port)'"
# 查看系统日志中的异常
log_cmd "tail -50 /var/log/auth.log 2>/dev/null"
log_cmd "tail -50 /var/log/syslog 2>/dev/null | grep -i error"
# ========================================
# 7. 汇总
# ========================================
log"========== 排查完成 =========="
# 统计关键信息
echo"" | tee -a "$LOG_FILE"
echo"【排查汇总】" | tee -a "$LOG_FILE"
echo"日志文件: $LOG_FILE" | tee -a "$LOG_FILE"
echo"生成时间: $(date '+%Y-%m-%d %H:%M:%S')" | tee -a "$LOG_FILE"
# 提取可能的可疑进程列表
echo"" | tee -a "$LOG_FILE"
echo"【可疑进程摘要】" | tee -a "$LOG_FILE"
ps aux | grep -E '(bash|sh|nc|python|perl|curl|wget)' | grep -v grep | grep -v "$0" | tee -a "$LOG_FILE" 2>/dev/null || echo"未发现明显可疑进程" | tee -a "$LOG_FILE"
# 提取ESTABLISHED连接摘要
echo"" | tee -a "$LOG_FILE"
echo"【活跃连接摘要】" | tee -a "$LOG_FILE"
netstat -antlp 2>/dev/null | grep ESTABLISHED | tee -a "$LOG_FILE" || echo"未发现活跃ESTABLISHED连接" | tee -a "$LOG_FILE"
echo"" | tee -a "$LOG_FILE"
echo -e "${GREEN}✅ 排查完成!日志已保存至: $LOG_FILE${NC}"
echo -e "${YELLOW}💡 提示:建议重点关注 '可疑进程排查' 和 '网络连接排查' 部分${NC}"
# 显示日志位置
ls -lh "$LOG_FILE"
注: Windows 上传脚本会存在换行符兼容报错,执行修复命令:sed -i ‘s/\r$//’ check.sh
运行结果部分截图:
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Web安全 cor0ps cor0ps《主机入侵痕迹自动化排查工具(Shell 脚本)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论