前言与合规声明
在企业网络安全运维与身份鉴别机制评估中,**Medusa(美杜莎)** 是一款经典的并发、多线程、模块化服务身份认证测试工具。相比 Hydra(海德拉),Medusa 在多线程并发性能和模块加载效率上表现更为出色。
> 免责声明:本文介绍的技术及工具仅供网络安全从业者、运维人员进行内部系统**安全加固与自查**使用。请勿用于未授权的网络测试。遵守《中华人民共和国网络安全法》,共同维护网络安全。
- Medusa 的核心特性与工作原理
Medusa 基于 C 语言开发,采用模块化设计,支持多种常见网络服务的身份鉴别测试(如 SSH、FTP、Telnet、MySQL、SMB 等)。
并发优势:支持基于主机、用户及密码的多维度并行测试。
模块化架构:每个服务独立为 `.mod` 模块,按需加载,资源占用低。
非阻塞 I/O:采用异步网络通信机制,极大提升响应速率。
- 环境准备与基础指令
在 Kali Linux 系统中,Medusa 通常已预装。若未安装,可通过官方源进行部署:
```bash
sudo apt-get update
sudo apt-get install medusa -y
基础语法结构
```bash
medusa -h 目标IP -u 用户名 -P 字典路径 -M 服务模块 其他参数
```
常用核心参数说明
| 参数 | 功能描述 |
|---|---|
| -h | 指定目标主机 IP 地址 |
| -U / -u | 指定用户名列表文件 / 单个用户名 |
| -P / -p | 指定密码字典文件 / 单个密码 |
| -M | 指定调用的服务模块(如 ssh, ftp, mysql) |
| -t | 设置总并发线程数(默认 6) |
| -f | 匹配到一组有效凭据后立即停止测试 |
| -v | 设置日志输出详细等级(1-6,推荐 5 或 6 排错) |
- 高频报错与解决方案(排坑指南)
在实际测试过程中,由于依赖库缺失或服务回应异常,常会出现报错。以下为常见报错及解决方法:
报错一:ERROR Unable to load module: .../ssh.mod: cannot open shared object file
* **现象描述**:执行指令时提示无法加载指定 .mod 模块。
* **原因分析**:未安装对应服务的开发依赖库,或 Medusa 模块路径未正确识别。
* **解决方案**:
安装对应的动态链接库及开发包(以 SSH 和 SSL 为例):
```bash
sudo apt-get install libssh2-1-dev libssl-dev -y
```
报错二:ERROR ACCOUNT CHECK: ssh ... Connection refused / Timeout
* **现象描述**:运行后直接报连接拒绝或超时,测试中断。
* **原因分析**:
-
目标服务端口非默认端口;
-
目标主机开启了防火墙或速率限制(如 fail2ban);
-
线程数过高导致目标服务拒绝响应。
* **解决方案**:
* 若目标服务使用了自定义端口(如 SSH 端口为 2222),通过 -n 参数指定端口:
```bash
medusa -h 192.168.1.100 -n 2222 -u admin -P pass.txt -M ssh
```
* 降低并发线程,并增加单次请求延迟:
```bash
medusa -h 192.168.1.100 -u admin -P pass.txt -M ssh -t 2 -r 1
```
报错三:ERROR Failed to initialize SSL/TLS connection
* **现象描述**:在测试 HTTPS、FTPS 或启用 TLS 的 RDP 服务时报错。
* **原因分析**:目标服务强制要求 SSL/TLS 加密通信,但命令行未开启 SSL 标志。
* **解决方案**:
添加 -s(开启 SSL)或 -S(指定使用特定 SSL 端口)参数:
```bash
medusa -h 192.168.1.100 -u admin -P pass.txt -M ftp -s
```
- 实战案例:SSH 服务弱口令自查与安全加固
步骤一:执行安全检测
对内部测试服务器的 SSH 鉴别机制进行评估:
```bash
medusa -h 192.168.1.50 -u root -P /usr/share/wordlists/rockyou.txt -M ssh -f -v 5
步骤二:安全加固建议
若在自查中发现弱口令风险,建议采取以下防御措施提升系统安全基线:
- **禁用 Root 远程直接登录**:
修改 /etc/ssh/sshd_config,设置 PermitRootLogin no。
- **启用密钥对认证,禁用密码认证**:
设置 PasswordAuthentication no。
- **部署 Fail2ban 防护**:
配置自动封禁策略,对短时间内多次鉴别失败的 IP 进行暂封。
```
```