一键环境搭建脚本

概述

红队工具环境搭建是渗透测试的第一步。本文详细介绍使用bash脚本实现红队工具的自动安装、环境检测、依赖管理和配置自动化。

核心理念

  • 自动化安装:一键安装所有必要工具
  • 环境检测:自动检测系统环境和依赖
  • 配置自动化:自动配置工具和环境
  • 可恢复性:安装失败时能够恢复

1. 环境检测

#!/usr/bin/env bash
# 环境检测脚本
 
RED='\033[0;31m'; GREEN='\033[0;32m'; BLUE='\033[0;34m'; NC='\033[0m'
info()  { echo -e "${BLUE}[*]${NC} $*"; }
ok()    { echo -e "${GREEN}[+]${NC} $*"; }
fail()  { echo -e "${RED}[-]${NC} $*"; }
 
detect_system() {
    info "检测系统信息..."
    if [[ -f /etc/os-release ]]; then
        . /etc/os-release
        echo "  OS: $NAME $VERSION_ID"
    fi
    echo "  内核: $(uname -r)"
    echo "  架构: $(uname -m)"
    echo "  内存: $(free -h | awk '/^Mem:/ {print $2}')"
    echo "  磁盘: $(df -h / | awk 'NR==2 {print $2}')"
    echo "  CPU: $(nproc) cores"
}
 
check_dependencies() {
    info "检查依赖..."
    local deps=("curl" "wget" "git" "python3" "pip3" "make" "gcc")
    local missing=()
    for dep in "${deps[@]}"; do
        if command -v "$dep" &>/dev/null; then
            ok "$dep: $(command -v $dep)"
        else
            fail "$dep: 未安装"
            missing+=("$dep")
        fi
    done
    [[ ${#missing[@]} -gt 0 ]] && { echo "  缺少: ${missing[*]}"; return 1; }
    return 0
}
 
check_network() {
    info "检测网络连接..."
    ping -c 1 8.8.8.8 &>/dev/null && ok "网络正常" || { fail "网络异常"; return 1; }
    nslookup github.com &>/dev/null && ok "DNS正常" || fail "DNS异常"
}

2. 工具自动安装

install_package() {
    local package="$1"
    info "安装: $package"
    if command -v apt-get &>/dev/null; then
        sudo apt-get install -y "$package"
    elif command -v yum &>/dev/null; then
        sudo yum install -y "$package"
    elif command -v pacman &>/dev/null; then
        sudo pacman -S --noconfirm "$package"
    fi
}
 
install_redteam_tools() {
    info "安装红队工具..."
    local tools=("nmap" "netcat" "curl" "wget" "git" "python3" "python3-pip")
    for tool in "${tools[@]}"; do
        install_package "$tool" 2>/dev/null
    done
 
    local pentest_tools=("nikto" "dirb" "hydra" "john" "hashcat" "sqlmap")
    for tool in "${pentest_tools[@]}"; do
        install_package "$tool" 2>/dev/null
    done
}
 
install_python_tools() {
    info "安装Python工具..."
    pip3 install --upgrade pip
    local pip_tools=("requests" "beautifulsoup4" "scapy" "paramiko" "impacket" "pwntools")
    for tool in "${pip_tools[@]}"; do
        pip3 install "$tool" 2>/dev/null && ok "$tool" || fail "$tool"
    done
}

3. 依赖管理

check_and_install() {
    local tool="$1" install_cmd="${2:-}"
    if command -v "$tool" &>/dev/null; then
        ok "$tool 已安装"; return 0
    fi
    [[ -n "$install_cmd" ]] && eval "$install_cmd"
    command -v "$tool" &>/dev/null && { ok "$tool 安装成功"; return 0; }
    fail "$tool 安装失败"; return 1
}

4. 配置自动化

setup_aliases() {
    info "设置别名..."
    cat >> ~/.bashrc << 'ALIASES'
# 红队别名
alias ll='ls -la'
alias ports='netstat -tulnp'
alias myip='curl -s ifconfig.me'
alias localip='hostname -I | awk "{print \$1}"'
alias scan='nmap -sC -sV'
alias webdir='gobuster dir -u'
ALIASES
    ok "别名已设置"
}
 
setup_environment() {
    info "配置环境变量..."
    export PATH="$PATH:/opt/tools"
    echo 'export PATH="$PATH:/opt/tools"' >> ~/.bashrc
    ok "环境已配置"
}

5. 综合安装脚本

full_install() {
    echo "[*] === 红队环境一键搭建 ==="
 
    detect_system
    check_dependencies
    check_network
    update_system
    install_redteam_tools
    install_python_tools
    setup_aliases
    setup_environment
 
    echo "[+] 安装完成!"
    echo "[*] 请运行 source ~/.bashrc 使配置生效"
}

总结

本文介绍了红队工具环境的一键搭建:系统检测、自动安装、依赖管理、配置自动化。该脚本可以快速部署渗透测试环境。


6. 工具版本管理

declare -A TOOL_VERSIONS=()
 
register_tool() {
    local name="$1" version="$2" install_cmd="$3"
    TOOL_VERSIONS["$name"]="${version}|${install_cmd}"
}
 
check_tool_version() {
    local name="$1"
    local data="${TOOL_VERSIONS[$name]:-}"
    if [[ -z "$data" ]]; then
        echo "未知工具: $name"
        return 1
    fi
    IFS='|' read -r version install_cmd <<< "$data"
    echo "$name v$version"
}
 
install_tool_by_name() {
    local name="$1"
    local data="${TOOL_VERSIONS[$name]:-}"
    [[ -z "$data" ]] && { echo "未知工具: $name"; return 1; }
    IFS='|' read -r version install_cmd <<< "$data"
    eval "$install_cmd"
}

7. Docker环境搭建

setup_docker_env() {
    info "Docker 环境搭建..."
 
    # 安装 Docker
    if ! command -v docker &>/dev/null; then
        curl -fsSL https://get.docker.com | sh
        sudo usermod -aG docker "$USER"
    fi
 
    # 拉取常用镜像
    local images=(
        "kali-linux"
        "metasploit-framework"
        "burpsuite"
        "owasp/zap2docker-stable"
    )
 
    for image in "${images[@]}"; do
        docker pull "$image" 2>/dev/null && ok "$image" || fail "$image"
    done
}
 
run_in_docker() {
    local image="$1"
    shift
    docker run --rm -it "$image" "$@"
}

8. 配置文件管理

backup_configs() {
    local backup_dir="${1:-/tmp/config_backup_$(date +%Y%m%d)}"
    mkdir -p "$backup_dir"
 
    local config_files=(
        "/etc/ssh/sshd_config"
        "/etc/hosts"
        "/etc/resolv.conf"
        "~/.bashrc"
        "~/.ssh/authorized_keys"
    )
 
    for conf in "${config_files[@]}"; do
        if [[ -f "$conf" ]]; then
            cp "$conf" "$backup_dir/"
            ok "已备份: $conf"
        fi
    done
}
 
restore_configs() {
    local backup_dir="$1"
    if [[ ! -d "$backup_dir" ]]; then
        fail "备份目录不存在: $backup_dir"
        return 1
    fi
 
    for conf in "$backup_dir"/*; do
        local basename
        basename=$(basename "$conf")
        echo "恢复: $basename"
    done
}

9. 安装日志与审计

INSTALL_LOG="/var/log/redteam_install.log"
 
log_install() {
    local action="$1" tool="$2" status="$3"
    echo "$(date '+%Y-%m-%d %H:%M:%S')|$action|$tool|$status" >> "$INSTALL_LOG"
}
 
audit_install() {
    info "安装审计..."
    if [[ -f "$INSTALL_LOG" ]]; then
        echo "=== 安装日志 ==="
        tail -50 "$INSTALL_LOG"
        echo ""
        echo "总安装数: $(wc -l < "$INSTALL_LOG")"
        echo "成功数: $(grep -c '|SUCCESS|' "$INSTALL_LOG" || echo 0)"
        echo "失败数: $(grep -c '|FAILED|' "$INSTALL_LOG" || echo 0)"
    fi
}