一键环境搭建脚本
概述
红队工具环境搭建是渗透测试的第一步。本文详细介绍使用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
}