服务器如何批量检测弱密码

liulian
liulian 初级会员超兽战士
发布于 2026-10-08 16:31 ·2 浏览 ·0 回复

学完这篇你能拿到一套可落地的做法:用 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。
版权声明:本文来自 GJ站长论坛《服务器如何批量检测弱密码》
原文链接:https://www.gj0.com/thread-1054.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~