GaryCollinsAI-Sec/Automated-Incident-Response-Triage-Tool
GitHub: GaryCollinsAI-Sec/Automated-Incident-Response-Triage-Tool
一款基于 Bash 的轻量级 Linux 实时取证与威胁狩猎工具,用于在安全事件中快速采集易失性证据并检测内存驻留威胁。
Stars: 0 | Forks: 0
🛡️ 自动化事件响应取证工具
Linux 取证 • 威胁狩猎 • 易失性内存分析 • 事件响应
📌 概述
自动化事件响应取证工具是一个轻量级的 Linux 取证框架,专为在活跃的安全事件期间进行 快速的实时系统调查而设计。
该工具使用 Bash 构建,旨在获取易失性证据,通过在证据 被篡改、删除或从内存中丢失之前收集高价值的 取证遥测数据,实现了基于主机的事件响应流程的 早期阶段自动化。
该项目主要侧重于:
- 实时主机取证收集
- 内存驻留威胁检测
- Linux 进程检查
- 持久化审计
- 安全日志保全
- 对手模拟与检测验证
该工具是在隔离的 Linux 安全 实验室环境中,使用受控的、非破坏性的对手模拟技术 开发和验证的。
🚀 核心功能
🔍 实时系统取证
快速从实时 Linux 系统中收集关键的取证证据,以保存状态指标。
捕获的证据
- 活动的网络连接
- 监听套接字
- 运行中的进程树
- 交互式用户会话
- 身份验证历史记录
- 持久化机制
- 系统日志
- Shell 配置文件修改
🧠 易失性内存狩猎
通过 Linux 内核 进程元数据实现了轻量级的内存狩猎逻辑。
检测逻辑包括
- 已删除但仍在运行的二进制文件
- 从易失性目录中执行
- 可疑的运行时执行路径
- 内存驻留进程指标
目标目录
/tmp
/dev/shm
⚔️ 对手模拟
使用受控的对手模拟工作流来验证运行时
检测能力。通过执行一个安全的独立实用程序,掩盖其路径,
并在它于 RAM 中活跃时取消与磁盘文件的链接,该框架成功识别了:
- 掩盖执行的进程
- 解耦的运行时二进制文件
- 已删除的内存驻留可执行文件
- 可疑的活动执行状态
🛠️ 展示的技术技能
- 数字取证:实时 Linux 证据获取与易失性证据保全
- 威胁狩猎:检测隐蔽执行技术和内存驻留二进制文件
- Bash 脚本编写:自动化的取证分类工作流和证据打包
- Linux 内部原理:使用
/proc 文件系统进行进程检查
- 对手模拟:模拟的、非破坏性的防御规避验证测试
- 安全运营:面向 SOC 的事件调查工作流
- 系统管理:Linux 审计、持久化分析和日志保全
- 虚拟化:使用 VirtualBox 部署强化的、网络隔离的实验室环境
🧩 架构概述
实时主机
↓
证据收集
↓
进程与内存分析
↓
持久化枚举
↓
日志保全
↓
证据打包
↓
📂 证据收集类别
- 网络审计:枚举套接字、监听器和活动连接
- 进程分析:捕获进程树和可疑的运行时行为
- 内存狩猎:通过 ProcFS 检测仍在内存中执行的已删除二进制文件
- 用户审计:审查活动会话和登录历史记录
- 持久化分析:识别 cron 作业和 shell 持久化钩子
- 日志保全:保全关键的身份验证和系统日志
- 打包:将取证证据压缩到安全的调查包中
💻 检测逻辑示例
已删除二进制文件检测
#!/bin/bash
echo "[!] Hunting for deleted binaries executing in memory..."
ls -al /proc/*/exe 2>/dev/null | grep '(deleted)' \
此逻辑用于识别已执行但随后从磁盘
删除,却仍在内存中保持活动状态的进程。
这些行为通常与以下情况相关:
- 无文件恶意软件技术
- 防御规避
- 仅运行时执行的 payload
- 反取证活动
🧪 取证分类工作流示例
#!/bin/bash
# # Live Linux Incident Response Triage Tool
# 目的:从可疑的被入侵主机收集易失性取证数据。
# 注意:必须使用 sudo/root 权限运行。
# 确保脚本以 root 身份运行
if [ "$EUID" -ne 0 ]; then
echo "[-] Error: This script must be run as root to gather forensic artifacts." >&2
exit 1
fi
# 设置 Output Directories
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
HOSTNAME=$(hostname)
OUT_DIR="/tmp/triage_${HOSTNAME}_${TIMESTAMP}"
mkdir -p "$OUT_DIR"
echo "[+] Starting Triage on $HOSTNAME at $(date)"
echo "[+] Artifacts will be saved to: $OUT_DIR"
echo "--------------------------------------------------"
# --- 1. NETWORK AUDITING ---
audit_network() {
echo "[*] Collecting Network Sockets..."
# Get active listening and established connections with PIDs/Process Names
ss -tulpn > "$OUT_DIR/net_listening.txt" 2>&1
ss -atp > "$OUT_DIR/net_all_connections.txt" 2>&1
}
# --- 2. PROCESS ANALYSIS ---
audit_processes() {
echo "[*] Capturing Running Processes..."
ps auxf > "$OUT_DIR/process_tree.txt"
# Flag processes running from temporary/volatile directories (Common for malware)
echo "[!] Checking for suspicious execution paths (/tmp, /dev/shm)..."
ls -al /proc/*/exe 2>/dev/null | grep -E '(/tmp|/dev/shm|/run)' > "$OUT_DIR/suspicious_proc_paths.txt"
}
# --- 3. PERSISTENCE CHECKING ---
audit_persistence() {
echo "[*] Auditing Scheduled Tasks and Backdoors..."
# Dump all user crontabs
for user in $(cut -f1 -d: /etc/passwd); do
crontab -u "$user" -l > "$OUT_DIR/cron_$user.txt" 2>/dev/null
done
# Grab system-wide cron locations
ls -la /etc/cron* /etc/anacrontab > "$OUT_DIR/system_cron_list.txt" 2>&1
# Inspect user shell profiles for suspicious additions (e.g., reverse shells)
tail -n 20 /etc/profile /etc/bash.bashrc ~/.bashrc ~/.bash_profile > "$OUT_DIR/shell_profiles_tail.txt" 2>/dev/null
}
# --- 4. LOG PRESERVATION ---
preserve_logs() {
echo "[*] Preserving Security and System Logs..."
# Copy the tail end of critical security logs
tail -n 500 /var/log/auth.log > "$OUT_DIR/auth_log_tail.txt" 2>/dev/null
tail -n 500 /var/log/secure > "$OUT_DIR/secure_log_tail.txt" 2>/dev/null
tail -n 500 /var/log/syslog > "$OUT_DIR/syslog_tail.txt" 2>/dev/null
}
# --- 5. PACKAGING ---
package_artifacts() {
echo "--------------------------------------------------"
echo "[*] Packaging artifacts..."
TAR_FILE="/tmp/triage_${HOSTNAME}_${TIMESTAMP}.tar.gz"
tar -czf "$TAR_FILE" -C "/tmp" "triage_${HOSTNAME}_${TIMESTAMP}"
# Clean up the uncompressed directory to keep host tidy
rm -rf "$OUT_DIR"
echo "[+] Triage Complete! Investigation bundle saved to: $TAR_FILE"
}
# 运行执行序列
audit_network
audit_processes
audit_persistence
preserve_logs
输出示例
/tmp/triage_test-VirtualBox_20260520_203552.tar.gz
生成的文件包包含结构化的取证证据,用于离线
调查和分析人员审查。
📸 项目证据
检测引擎逻辑
```
Detection logic identifying deleted but actively executing binaries
through Linux kernel process metadata.
```
模拟威胁检测
```
Successful interception of a simulated stealth execution technique
during adversary emulation testing.
```
📈 开发路线图
✅ 阶段 1 — 已完成
- 构建核心取证收集框架
- 实现易失性内存狩猎引擎
- 添加已删除二进制文件检测逻辑
- 通过非破坏性对手模拟验证了运行时检测
- 实现证据打包工作流
🚧 阶段 2 — 活跃开发中
证据解析优化
减少环境噪声并提高分析人员的信噪比。
SOC/SIEM 集成
为 SIEM 和 SOAR 平台构建自动化摄取工作流。
自动化响应动作
研究自动化的主机隔离和富化能力。
🔐 使用的技术
- Linux
- Bash
- ProcFS
- VirtualBox
- 事件响应
- 威胁狩猎
- 数字取证
- 系统审计
- 安全运营
⚠️ 免责声明
本项目的开发严格用于:
- 教育目的
- 防御性安全研究
- 事件响应培训
- 受控的对手模拟
所有测试均在安全的隔离实验室环境中进行。在开发或验证期间未使用任何危险的或实际的恶意代码。