主机入侵痕迹自动化排查工具(Shell脚本)"

admin 2026-10-21 22:17:49 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

主机入侵痕迹自动化排查工具(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

运行结果部分截图:


主机入侵痕迹自动化排查工具(Shell脚本)" 网络安全文章

主机入侵痕迹自动化排查工具(Shell脚本)"

该文档介绍了一款针对Java容器环境的主机入侵痕迹自动化排查Shell脚本,覆盖系统基线、可疑进程、网络连接、Docker容器、登录审计、定时任务等全维度检测,执行后自动生成带时间戳的审计日志,旨在帮助安全运维人员快速定位入侵痕迹并缩短应急响应时间。脚本提供了详细的排查命令和结果汇总,并给出了Windows换行符兼容修复建议。
GitHub代码库诱使AI编码代理运行恶意软件" 网络安全文章

GitHub代码库诱使AI编码代理运行恶意软件"

Mozilla0din研究人员发现新型AI安全威胁,攻击者通过伪装为无害GitHub代码库,利用AI编码代理(如ClaudeCode)自动修复错误的功能,诱导其执行恶意命令。该攻击通过DNSTXT记录隐藏载荷,无需在仓库中存储恶意代码,即可获取开发者权限的交互式shell,窃取API密钥、环境变量并建立持久化访问。
评论:0   参与:  0