4、Hydra 实战(一):Hydra 安装与基础用法、SSH 弱口令批量扫描

说实话,在安全测试的工具链里,Hydra 绝对算得上是一把「老骨头」了。但越是老工具,越经得起折腾。我最早接触它是在一次内网渗透项目里,客户要求验证所有运维账号的密码强度。那时候手动测了十几个就快疯了,后来同事甩过来一句:「用 Hydra 啊,别傻乎乎手打。」嗯,从那以后,Hydra 就成了我工具箱里的常客。

这一章,咱们就把它装好、跑通,然后拿 SSH 练练手。

4.1 什么是 Hydra?

Hydra 全名叫 THC-Hydra,是德国黑客组织 THC 开发的一款网络登录破解工具。说白了,它就是一个「自动化密码尝试器」。你给它一个目标、一个用户名列表、一个密码列表,它就能并发地尝试登录,直到找到正确的组合。

它支持几十种协议,包括 SSH、FTP、HTTP、MySQL、SMB、RDP 等等。我个人习惯把它当作「弱口令扫描的瑞士军刀」——不一定天天用,但用的时候一定得顺手。

核心能力: Hydra 支持多线程并发、多种协议、多种认证方式,是批量弱口令测试的首选工具。

4.2 安装 Hydra

安装其实很简单。不同系统有不同方式,我列一下最常见的几种。

4.2.1 在 Kali Linux 上安装

Kali 默认已经装了 Hydra。如果没有,直接一条命令搞定:

sudo apt update
sudo apt install hydra -y

装完验证一下:

hydra -h

能看到帮助信息就说明装好了。

4.2.2 在 Ubuntu/Debian 上安装

跟 Kali 一样:

sudo apt update
sudo apt install hydra -y

4.2.3 在 macOS 上安装

用 Homebrew:

brew install hydra

4.2.4 在 Windows 上安装

Windows 稍微麻烦点。我建议用 WSL(Windows Subsystem for Linux),然后在 WSL 里装 Hydra。或者直接下载预编译的 exe 版本,但功能可能不全。

我的建议: 如果你只是学习,直接用 Kali 虚拟机最省事。我在 Windows 上折腾过几次,最后还是老老实实开了个 Kali 虚拟机。

4.3 Hydra 基础用法

先看一个最简单的命令结构:

hydra -l 用户名 -P 密码文件 目标IP 协议

举个例子,你想用密码字典爆破一个 SSH 服务:

hydra -l root -P /usr/share/wordlists/rockyou.txt 192.168.1.100 ssh

这条命令的意思是:用 root 这个用户名,从 rockyou.txt 里逐个取密码,去尝试登录 192.168.1.100 的 SSH 服务。

但实际项目中,你往往需要多个用户名。这时候用 -L 指定用户名字典:

hydra -L users.txt -P passwords.txt 192.168.1.100 ssh

嗯,这里要注意:-l 是小写,表示单个用户名;-L 是大写,表示用户名字典文件。大小写搞混了,命令就跑偏了。

常用参数速查表

参数 说明 示例
-l 单个用户名 -l admin
-L 用户名字典文件 -L users.txt
-p 单个密码 -p 123456
-P 密码字典文件 -P passwords.txt
-t 并发线程数(默认16) -t 4
-vV 显示详细尝试过程 -vV
-o 输出结果到文件 -o result.txt
-s 指定端口(非默认端口时用) -s 2222
注意: 线程数不是越大越好。我曾经在测试一个内网服务器时,把线程开到64,结果对方直接断连了——不是被防御系统拦截,而是服务器扛不住并发请求,直接挂了。后来我学乖了,一般控制在4到8个线程。

4.4 SSH 弱口令批量扫描实战

好,理论说完了,咱们直接上手。假设你拿到了一个内网网段 192.168.1.0/24,想批量扫描所有开放 SSH 的主机,看看有没有弱口令。

4.4.1 第一步:扫描存活主机和开放端口

先用 Nmap 扫一下哪些主机开了 SSH(端口22):

nmap -sS -p 22 192.168.1.0/24 -oG ssh_hosts.txt

然后从结果里提取 IP:

grep "22/open" ssh_hosts.txt | awk '{print $2}' > target_ips.txt

4.4.2 第二步:准备字典

字典质量直接决定扫描效果。我一般会准备两份:

  • 用户名字典(users.txt): root, admin, test, user, oracle, tomcat 等常见账号
  • 密码字典(passwords.txt): 123456, password, admin, root, 12345678, qwerty 等弱口令

你也可以直接用 Kali 自带的字典:

/usr/share/wordlists/rockyou.txt

不过这个文件很大,建议先解压:

sudo gunzip /usr/share/wordlists/rockyou.txt.gz

4.4.3 第三步:编写批量扫描脚本

手动一条条跑太慢了。我习惯写个简单的 Shell 脚本:

#!/bin/bash
# SSH 弱口令批量扫描脚本

TARGETS="target_ips.txt"
USERS="users.txt"
PASSWORDS="passwords.txt"
OUTPUT="ssh_weak_results.txt"

# 清空上次结果
> $OUTPUT

# 逐个目标扫描
for ip in $(cat $TARGETS); do
    echo "[*] 正在扫描: $ip"
    hydra -L $USERS -P $PASSWORDS -t 4 -vV -o temp_result.txt $ip ssh
    
    # 如果有结果,追加到总结果
    if [ -s temp_result.txt ]; then
        cat temp_result.txt >> $OUTPUT
        echo "---" >> $OUTPUT
    fi
done

echo "[+] 扫描完成,结果保存在 $OUTPUT"

保存为 ssh_scan.sh,然后执行:

chmod +x ssh_scan.sh
./ssh_scan.sh

4.4.4 第四步:分析结果

扫描完成后,打开 ssh_weak_results.txt,你会看到类似这样的内容:

[22][ssh] host: 192.168.1.105   login: root   password: 123456
[22][ssh] host: 192.168.1.110   login: admin   password: admin123

每一行就是一个弱口令。你可以根据这些结果,通知相关责任人修改密码。

避坑指南: 我曾经在一次授权测试中,用这个脚本扫了一个网段,结果把对方运维的 SSH 服务给扫崩了——因为并发太高,对方服务器配置太低。后来我加了个 sleep 2,每个目标之间停顿2秒,就再没出过问题。

4.5 核心流程总结

为了让你更直观地理解整个流程,我画了一张图:

Hydra SSH 弱口令批量扫描流程图 Hydra SSH 弱口令批量扫描流程 1. 目标发现 2. Nmap 端口扫描 3. 准备字典 4. Hydra 批量扫描 5. 结果分析 关键参数 -t 4:控制并发线程 -vV:显示详细日志 -o:保存结果到文件 避坑提醒 线程数不要过大 目标间加 sleep 延迟 确保有授权再扫描

4.6 常见问题与避坑

  • 扫描速度太慢? 检查线程数 -t,适当调高。但别超过16,否则容易触发防御机制。
  • 结果为空? 先确认目标 SSH 服务是否正常运行,再检查字典是否包含有效组合。我遇到过好几次,字典里全是弱口令,但目标服务器要求密码长度至少8位,结果一个都没命中。
  • 被目标封 IP? 这是最常见的。建议加代理或使用 -W 参数设置超时时间,或者用 --rate 限制速率。
  • Hydra 报错 "connection refused"? 可能是端口不对,或者 SSH 服务没开。用 -s 指定端口试试。
法律声明: 未经授权扫描他人服务器是违法行为。本章内容仅用于授权测试、安全评估或自建实验环境。我在做培训时一直强调:工具没有善恶,但使用工具的人要有底线。

好了,这一章的内容就到这里。Hydra 的安装、基础用法和 SSH 批量扫描,你已经掌握了。接下来就是多练,找几台自己的虚拟机搭个环境,跑一跑,踩踩坑,才能真正记住。