自动化弱口令扫描需坚持“稳、准、可闭环”:用nmap+Hydra+自定义逻辑实现命令行稳定运行,精准扫描资产清单指定目标,空口令服务用原生命令毫秒验证,结果自动归档、分级告警并比对历史形成修复趋势。

用自动化脚本周期性扫描弱口令账号,核心是“稳、准、可闭环”——不追求一次扫全,而要能稳定运行、精准识别高危目标、自动记录并触发处置。重点不在工具多炫酷,而在脚本能长期跑得起来、结果有人跟进。
选轻量可靠工具,避免依赖图形界面
生产环境服务器通常无桌面,脚本必须命令行可用、无交互依赖:
- SNETCracker 不适合——它是 Windows 图形工具,无法后台静默运行;
- 推荐组合:nmap + Hydra + 自定义校验逻辑:nmap 快速筛出真实开放的高危端口(如 22/3389/6379/3306),Hydra 按服务类型调用精简字典爆破,再用 shell 或 Python 封装结果过滤与去重;
- Redis、MongoDB 等空口令服务,直接用原生命令验证更高效:例如
redis-cli -h $ip -p 6379 ping 2>/dev/null | grep -q "PONG",毫秒级判断,零字典、零误报。
配置精准扫描范围,拒绝全网盲扫
周期性任务最怕失控。每次执行前必须明确“只扫谁、为什么扫”:
- 目标来源固定为资产清单 CSV 文件(含 IP、服务类型、负责人),脚本启动时先读取该文件,跳过已下线或标记“免扫”的条目;
- 端口和服务强绑定:若某台机器 MySQL 运行在 3307 而非默认 3306,清单中需注明
mysql:3307,脚本解析后自动适配,不硬编码; - 首次扫描用 Top 20 字典(admin:admin、root:123456、sa:sa、空密码等),后续仅对新增资产或版本变更的服务启用扩展字典。
结果自动归档+分级告警,防止漏处理
扫描完没人看,等于没扫。脚本末尾必须内置闭环动作:
- 成功命中弱口令时,自动生成结构化记录:时间、IP、端口、服务、账号、口令、所属系统名(来自资产清单)、责任人邮箱;
- 按风险等级自动分类:RDP/SSH/root 级账户 → 高危,立即邮件+企业微信双通道告警;MySQL/FTP 普通账号 → 中危,汇总进每日安全简报;
- 结果存入本地 SQLite 数据库,并导出为 CSV 备份;同时比对上次扫描结果,新增弱口令条目标红,消失条目标注“已修复”,形成趋势视图。
用 cron 安排周期,但加防冲突和日志追踪
Linux 下用 cron 很方便,但需规避常见陷阱:
- 避免每分钟执行:设为每天凌晨 2:15 扫描一次(
15 2 * * * /opt/weakpass-scan/run.sh >> /var/log/weakpass-scan.log 2>&1); - 脚本开头加锁机制:
if [ -f /tmp/weakpass-scan.lock ]; then exit; else touch /tmp/weakpass-scan.lock; trap 'rm -f /tmp/weakpass-scan.lock' EXIT;,防上一次未结束就触发新任务; - 每轮执行生成唯一 run_id(如
$(date +%Y%m%d_%H%M%S)),所有日志、临时文件、输出都带该 ID,便于问题回溯。

















