服务器如何批量检测弱密码
学完这篇你能拿到一套可落地的做法:用 Hydra 配合目标清单和密码字典,一次性检测多台 Linux/Windows 服务器上的 SSH、RDP、MySQL 等常见服务的弱口令,并知道怎么控制并发、保存结果和修复问题。
第一步:确认授权并装好工具
这一步要做什么:把测试环境和工具准备好,后续所有命令都基于它。做完你会得到一台装好 Hydra 和 Nmap 的机器。
仅在你自己拥有或已获得书面授权的服务器上操作。以 Kali Linux 2024.1 为例,Hydra 已预装;Ubuntu 22.04 上执行:
sudo apt update
sudo apt install -y hydra nmap
hydra -h | head -n 3
能打印出 Hydra v9.5 左右的版本信息就说明装好了。
注意:未经授权对他人服务器跑密码猜测属于违法行为,本文只讨论自查和授权渗透。
第二步:准备目标清单和字典
这一步要做什么:把要检测的 IP 和要尝试的账号密码写成文本文件。做完你会得到 targets.txt、users.txt、passwords.txt 三个文件,每行一条记录。
printf '192.168.1.10\n192.168.1.11\n192.168.1.12\n' > targets.txt
printf 'root\nadmin\nubuntu\n' > users.txt
printf '123456\npassword\nadmin123\nRoot@123\n' > passwords.txt
Kali 自带的大字典在 /usr/share/wordlists/rockyou.txt.gz,用 sudo gunzip /usr/share/wordlists/rockyou.txt.gz 解压即可,但批量检测时别直接上千万级字典,先用 top100 试探。
第三步:先筛出开了目标端口的主机
这一步要做什么:确认哪些主机在线、端口开放,避免对着关机的机器白跑。做完你会得到一份只含可用目标的清单。
nmap -p 22 --open -iL targets.txt -oG ssh_open.txt
grep "22/open" ssh_open.txt | cut -d" " -f2 > ssh_targets.txt
cat ssh_targets.txt
Windows 环境把 --open 换成 -p 3389,445 即可。
注意:Nmap 的
-oG输出格式方便用 grep 提取,别用-oX再手写解析,容易漏 IP。
第四步:单机试跑,确认参数
这一步要做什么:先拿一台主机验证字典和命令写法是否正确。做完你能看到命中结果或确认没有弱口令。
hydra -l root -P passwords.txt -t 4 -f -V ssh://192.168.1.10
参数含义:-l 单个用户名,-P 密码字典,-t 4 每目标 4 个并发,-f 命中第一个就停,-V 显示每次尝试。命中时会输出类似 [22][ssh] host: 192.168.1.10 login: root password: 123456。
第五步:批量跑多台服务器
这一步要做什么:把单机命令扩展到整份清单。做完你会把所有命中的弱口令写进一个结果文件。
hydra -L users.txt -P passwords.txt -M ssh_targets.txt -t 4 -f -o ssh_result.txt ssh
-M 指定目标清单,-o 保存结果,跑完 cat ssh_result.txt 查看。RDP 换成 rdp、MySQL 换成 mysql、FTP 换成 ftp,端口不用写,Hydra 有默认值。
注意:
-t超过 8 很容易触发 sshd 的 MaxStartups 限制或被 fail2ban 封 IP,内网自查建议 4,跨网段用 2 并加-W 5。
Windows 域内批量检测可用 NetExec(原 CrackMapExec):
nxc smb 192.168.1.0/24 -u users.txt -p passwords.txt --continue-on-success
第六步:整理结果并修复
这一步要做什么:把命中条目挑出来,逐台处理。做完你会拿到一份可跟踪的整改清单。
grep "login:" ssh_result.txt | sort -u
处置动作:立即改掉弱口令;SSH 改为密钥登录,在 /etc/ssh/sshd_config 里设 PasswordAuthentication no 和 PermitRootLogin no,执行 sudo systemctl restart ssh;装 fail2ban,在 /etc/fail2ban/jail.local 的 [sshd] 段设 maxretry = 5、bantime = 3600;用防火墙只放行运维 IP。
小结
- 批量检测的三件套是:目标清单
-M targets.txt、用户字典-L、密码字典-P。 - 先用 Nmap 筛出开放端口的主机,能省掉大量无效尝试。
- 并发
-t控制在 2 到 4,配合-f提前退出,降低被封风险。 - 结果用
-o落盘,再用grep "login:"提取命中项。 - 弱口令只是入口问题,改密码之外还要关掉密码登录、上 fail2ban、限来源 IP。
原文链接:https://www.gj0.com/thread-1054.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。