ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows下使用thc-hydra-windows进行口令测试的完整指南

Windows下使用thc-hydra-windows进行口令测试的完整指南 简介面向Windows平台的THC-Hydra预编译工具包版本为9.12020-07-29发布专为需要在Windows环境下开展口令安全审计与登录破解测试的安全工程师、渗透测试人员及网络学习者准备。工具整合了SSH、MySQL、PostgreSQL、RDP等常见协议模块并内嵌Cygwin运行库解压后直接运行hydra.exe即可使用省去自行编译的繁琐步骤。包体共36个文件、整体约8.29MB其中32个dll为Cygwin及加密、数据库等相关依赖库用于支撑工具运行2个exe分别为hydra.exe主程序和pw-inspector.exe密码字典筛查工具另附1个sh辅助脚本与1个md说明文档结构清晰便于查阅。借助该版本读者可快速开展本地口令强度检测、内网服务弱口令排查与渗透测试演练结合说明文档也能熟悉Hydra各模块的常用参数与基本用法适合有一定命令行基础的安全爱好者上手实践。目前已有1670人浏览学习是Windows下接触Hydra的实用选择。1. thc-hydra-windows 是什么为什么要在 Windows 上跑密码工具拿到 thc-hydra-windows 这个工具时很多人的第一反应是THC-HYDRA 不是 Kali 里那个跑口令测试的黑匣子吗在 Windows 上折腾它图什么但真实场景里手边只有一台 Windows 笔记本、虚拟机内存分不出来的情况太多了。thc-hydra-windows 就是把同一套 SSH、FTP、RDP、SMB、HTTP 表单口令测试能力搬到 Windows 上让你不用开 Linux 虚拟机也能直接跑字典。适合授权渗透测试、自己服务器密码找回这类明确有权限的目标坚决不能拿去对生产系统乱试这是我的血泪经验也是底线。2. 装好能用的 thc-hydra-windows三种部署方式与首次验证Hydra 原本跑在 Linux 上Windows 下要用起来常见做法有三条路原生编译版 exe、WSL 子系统里装 Linux 版、Docker Desktop 里跑容器版。选哪条取决于你手头的 Windows 版本和要不要跟其他工具联动。2.1 原生 exe下载、解压与依赖检查最常见的做法是直接在 GitHub 上搜 thc-hydra-windows找维护频率高、release 时间新的版本。下载后不要放桌面或带中文和空格的路径我一般放到C:\tools\hydra这种纯英文目录很多诡异的闪退都是路径问题引起的。# 进入工具目录 cd C:\tools\hydra # 查看帮助确认 exe 能正常加载 hydra.exe -h # 列出所有支持的服务模块 hydra.exe -U第一次跑hydra.exe -h如果报缺少 DLL比如 libssl 或 libgcrypt 相关文件说明这个发行版依赖 OpenSSL 动态库。常见做法是装上对应版本的 Visual C 运行库或者换一个把依赖打包成静态库的构建版。-U参数会输出一长串协议清单看到 ssh、ftp、rdp、smb、http-post-form 这些就说明工具本体没问题。还有一个小坑cmd 和 PowerShell 里直接敲hydra可能找不到命令因为当前目录不在 PATH 里。用.\hydra.exe或把目录加进 PATH 都行。我习惯临时加一下 PATH省得每次带完整路径。# 把工具目录加进当前会话的 PATH set PATHC:\tools\hydra;%PATH% # 验证命令能直接识别 hydra.exe -h这步是纯验证作用不涉及任何目标。原生 exe 的好处是启动快、不依赖虚拟化组件适合老旧 Windows Server 或没开 WSL 的环境。2.2 WSL 里的 Linux 版最省心的命令行体验如果你的 Windows 10 版本在 2004 以上或者干脆是 Windows 11WSL 是更省心的方案。Hydra 在 Linux 发行版软件源里就是现成的包依赖完整版本也新不用处理 DLL 地狱。整个过程在管理员 PowerShell 里完成。# 安装 WSL 和 Ubuntu 子系统需要管理员权限 wsl --install -d Ubuntu # 装完重启进入 Ubuntu 终端更新并安装 hydra sudo apt update sudo apt install -y hydra # 验证安装 hydra -hwsl --install会自动开启需要的 Windows 功能但如果你之前改过系统组件可能卡在“正在安装未指定任何参数”或者直接报向导提前结束这个坑第 5 章专门说。装完后在 Ubuntu 终端里用的就是纯正的 Linux 版 Hydra字典、脚本、目录结构都按 Linux 习惯来网上九成教程都能直接照抄。WSL 里跑 Hydra 还有一个额外好处文件系统和 Windows 互通Windwos 桌面上准备的字典可以直接通过/mnt/c/tools/pass.txt路径读不用复制。我一般会把工具和字典都放在/mnt/c/tools/hydra下这样 Windows 和 WSL 两边都能操作避免子系统删了以后数据丢失。2.3 Docker Desktop 镜像隔离运行和随时换版本第三种方式是 Docker Desktop for Windows 里跑 Hydra 容器。这个方式的隔离性最好跑完不留痕迹换版本也快适合做红队演练或者要对比多个老版本行为的时候。缺点是多一层 Docker 的磁盘和内存开销而且镜像来源要挑干净。# 先搜索社区维护的 hydra 镜像挑更新时间近、描述清楚的 docker search hydra --limit 10 # 运行容器里的 hydra--rm 用完即删-it 开交互式终端 docker run --rm -it 你选定的镜像名 hydra -h # 进容器后可以用 nslookup、nmap 等联动装备注意镜像名必须用docker search实际查到的不要随便拿来路不明的包。容器里的 Hydra 和宿主机是隔离的字典文件要用-v挂载进来比如# 把 Windows 下的 C:\tools 挂载到容器 /tools docker run --rm -it -v C:\tools:/tools 你选定的镜像名 hydra -l admin -P /tools/pass.txt 192.168.1.20 ssh挂载路径在 Docker Desktop 里有时会因为文件共享权限慢半拍第一次用先 ls 确认文件能读到再开始跑不然跑到一半找不到字典白等。2.4 装完先做三件事验证进程、列出模块、本机跑通最小用例不管用哪种方式装完别急着上目标。先在本地做三件事确认命令能输出、确认模块清单里有你要的协议、用本机临时服务跑一条最小命令证明工具链完整。# 1) 静默判断 exe 是否正常OK 表示能启动 hydra.exe -h nul 21 echo OK || echo FAIL # 2) 只关心模块清单省略头部信息 hydra.exe -U | findstr /i ssh ftp rdp smb http # 3) 本地 FTP 最小验证test 用户密码字典只有一行 echo 123456 pass.txt hydra.exe -l test -P pass.txt 127.0.0.1 ftp第一条命令里的nul 21是 Windows 下标准的静默运行写法把正常输出和错误都吞掉只靠echo OK判断退出状态。第二条用findstr过滤出关心的协议避免输出太长刷屏。第三条需要你先在本机用 FileZilla Server 之类起一个临时 FTP账户名 test、密码 123456如果 Hydra 能准确报出login: test password: 123456说明整个工具链是通的。本地验证通过以后再上真实目标是减少自我怀疑的最好办法。3. 核心参数怎么用从一条最小命令开始拆解Hydra 的参数看起来多但跑通一条基础命令只需要搞懂十几个。下面把最小命令拆开再做一张参数速查表最后讲怎么根据目标服务选模块。3.1 一条最小命令的解剖hydra.exe -l admin -P wordlist.txt -t 16 -f -vV -o result.txt 192.168.1.20 ssh这段命令的意思是用固定用户名 admin从wordlist.txt逐行取密码对 192.168.1.20 这台机器的 SSH 服务做登录尝试同时开 16 个线程。-f表示找到一个正确密码就停止整个任务-vV会在屏幕上实时打印每一次尝试的用户名和密码-o result.txt把最终结果写进文件。很多人第一次跑喜欢一直开着-vV觉得能看到进度才踏实。但目标服务是 SSH 时高频打印会导致终端卡顿而且日志量大只要做一次不需要全程开。我的习惯是先不打印留着-o输出跑完看结果文件。什么时候开-vV目标服务是自己测试机、或者要确认模块判定逻辑对不对的时候才开便于一眼看出是不是有密码被漏报。-t 16这个数字要注意它不是越大越好。开 16 个线程打本机 FTP 没问题打远程 SSH 就可能瞬间触发对方的 fail2ban后面单独说。3.2 必须调好的参数速查表参数作用我的建议值-l 用户名指定单个用户名知道目标账号时用-L 用户字典从文件逐行读用户名用户名字典放在/tools/users.txt-p 密码指定单个密码密码喷洒时用-P 密码字典从文件逐行读密码主爆破方式-e nsr额外尝试空密码、用户名同名、反向用户名首轮快速探测用成功率不低-C 组合文件文件里每行是“用户:密码”已有账密清单时跳过爆破-M 主机列表批量目标每行一个 IP 或域名内网主机信息收集时用-t 并发任务数每个目标同时跑多少线程本机 16远程 SSH 用 2-w 超时秒数每次连接最多等多久默认 30弱网环境调到 60-f找到一个密码就结束抢时间时必开-F批量模式下找到一个就结束多目标时和 -f 配合-R恢复上次中断的会话掉了以后续跑别从头来-s 端口指定非默认端口FTP 改到 2121 这类场景-S走 SSL/TLS 加密连接新版服务默认要加-o 文件结果写入文件一直开着方便交报告-vV屏幕打印每次尝试调试时开批量跑慎开这张表只需要记一个原则预告性的参数每次都要带-o限速相关的参数按目标网络的“脾气”调。和自写 Python 脚本比Hydra 的价值是内置了几十种协议栈RDP、NTLM、SMB 这些复杂握手不用自己写隧道和重试逻辑也现成。3.3 模块与目标服务用 -U 看能打哪些协议Hydra 的模块机制是它的核心资产。hydra.exe -U会打印所有插件服务和对应说明常见的有 ssh、ftp、telnet、rdp、vnc、smb、http-get、http-post-form、smtp、pop3、imap、mysql、mssql、postgres、ldap、snmp。选模块不是随便填个协议名要跟目标真实开放的服务对应。比如目标 443 端口开了 HTTPS 但没有封顶层协议就应该用https-get或https-post-form而不是光写http-get然后指望它自己去识别 TLS。我见过最典型的翻车是目标明明是把 SSH 改成 2222 端口命令里没加-s 2222Hydra 默认连 22连不上就报 “Connection refused”排查半天才发现是端口没指。# 查看某个模块的具体用法例如 http-post-form hydra.exe -U http-post-form模块选错时Hydra 给出的提示通常是 “service attack not supported” 或握手超时。这时先冷静下来回到-U输出里确认服务名拼写再确认端口和 SSL 开关。对密码喷洒来说-e nsr是性价比最高的组合先探测空密码和同名密码再上大字典能省一半时间。4. 实战场景SSH、RDP、Web 表单与批量目标理论参数讲完落到具体服务上。不同协议的判定逻辑、默认端口和锁账户行为差别很大不能一套命令走天下。4.1 SSH 和 FTP低并发慢跑别一上来就 16 个线程SSH 和 FTP 是 Hydra 最常见的两个目标。SSH 的 sshd 本身就带防暴力机制连接太频繁会直接拒绝新连接FTP 的 vsftpd 也有类似行为。# SSH 口令测试并发降到 2找到即停结果存文件 hydra.exe -L users.txt -P pass.txt -t 2 -f -o result_ssh.txt 192.168.10.5 ssh # FTP 口令测试FTP 相对宽容可以开到 4 hydra.exe -L users.txt -P pass.txt -t 4 -w 20 -f -o result_ftp.txt 192.168.10.6 ftpSSH 用-t 2是很多人的血泪经验。开 4 以上短则几分钟长则半小时目标就会开始批量返回Connection refused不是密码不对是服务端把来源 IP 拉黑了。FTP 宽容一些但建议也不要超过 4。-w 20是连接超时 20 秒如果目标在 NAT 后面或链路质量一般再加大到 40。注意这里不要追求速度口令测试本身就是慢工出细活。跑完后看result_ssh.txt有login:开头的行就是命中的口令。判定为 failed 的行不要纠结Hydra 对 SSH 和 FTP 的判定很可靠改判概率极低。4.2 RDP先看目标锁定策略再动手安全日志是你的证据RDP 和 SSH 完全不是一回事。Windows 默认或域环境下经常开着账户锁定策略连续输错几次就把账户锁了。所以在对 RDP 跑 Hydra 之前必须确认目标环境的锁定阈值否则你不但测不出来还会把别人的管理员账户全部锁死这是事故级别的问题。# RDP 口令测试并发务必保持 1避免触发锁定策略 hydra.exe -l administrator -P pass.txt -t 1 -f -o result_rdp.txt 192.168.10.8 rdp # 查看本机或可管理机器上的登录失败事件确认 4625 数量 Get-WinEvent -FilterHashtable {LogNameSecurity; Id4625} -MaxEvents 20 | Select-Object TimeCreated, {nIpAddress;e{$_.Properties[18].Value}}并发调成 1 意味着整个过程很慢但这是唯一不会加速锁定的办法。如果目标是域环境我更建议改用密码喷洒思路用-p 固定密码 -L 用户字典每一个密码对一批用户试一次这比固定用户名跑大字典安全得多。注意这条 PowerShell 命令里的 4625 事件属性位置在不同 Windows 版本可能有差异只是给你一个找日志的方向。跑 RDP 还有一个现象Hydra 报 success 但远程桌面还是登不进去。常见原因是目标开了 NLA网络级别身份验证而 Hydra 的 RDP 模块对 NLA 支持不完整或者账户虽有正确密码但被限制为“仅允许本地登录”。这种时候别急着验证密码先看安全日志里有没有对应的成功登录事件 4624没有就说明问题是权限限制而不是密码错误。4.3 Web 表单登录http-post-form 的判定标记是核心Web 登录是另一个高频场景。和 SSH 不同Web 表单的请求要自己拼Hydra 通过http-post-form模块提供一个模板字符串三个冒号分别指定路径、POST 数据和判定标记。# 一个典型后台登录爆破命令 hydra.exe -l admin -P pass.txt 202.114.1.10 http-post-form /admin/login.php:user^USER^pass^PASS^submit登录:F密码错误这段命令里^USER^和^PASS^是占位符Hydra 跑的时候会替换成字典里的用户名和密码。F后面跟的是登录失败时页面上会出现的关键词这里填“密码错误”。有些站成功和失败页面都有自己的特征词你可以反过来用S欢迎回来之类标记成功。注意整条命令是用双引号包起来的如果页面特征词里还有特殊字符比如要转义不然 cmd 会把命令截断。做 Web 表单测试前最好先在浏览器里手动登录一次用抓包工具看 POST 到哪个路径、字段名是什么、失败提示是不是固定文案。这个测试环境是允许你操作的测试站点时整套流程才有参考价值。字段名猜错Hydra 跑一万遍也是白费。4.4 批量目标与结果管理内网主机信息收集后一口气测多台拿到内网授权或者维护自己机房时往往不是测一台而是几十台一起摸。Hydra 的-M参数支持从文件里读一批目标配合前面参数表里的-o和-F就是一套内网主机信息收集后常见的口令评估流程。# targets.txt 每行一个 IP先经 Nmap 确认各自主机开放端口 hydra.exe -M targets.txt -L users.txt -P pass.txt -t 2 -F -o verify_report.txt 2nul ssh这里2nul是把运行时的错误提示静默掉防止个别主机连不上导致刷屏。-F和-t 2配合每台机器上的线程数被压住批量扫描才不会把整个网段打成一片红。结果文件里会列出每台机器的命中口令格式是[22][ssh] host: port login: admin password: 123456我一般会再用文本工具把这些行抠出来做成一张表。跑批量前一定要确认 targets.txt 里的 IP 都在授权范围里这个翻过车的人都知道代价。5. 避坑清单Windows 下跑 Hydra 的 5 个常见问题与排查这一章是实操里最容易让人血压升高的部分。每一条我都按现象、原因、解决来写照着排查比重新搜索踩坑帖快得多。5.1 双击或命令行闪退“没有被指定在 Windows 上运行或者它包含错误”现象从网上下载的 hydra.exe 双击无反应或者在 cmd 里执行后弹出一句“没有被指定在 Windows 上运行或者它包含错误。”原因绝大多数不是工具坏了而是三种情况缺 Visual C 运行库、缺 OpenSSL 相关 DLL、或者文件被安全软件隔离到只剩一个空壳。还有一个常见原因是执行路径带中文或空格Windows 在解析依赖 DLL 时找不到相对路径。解决先把整个工具目录移动到C:\tools\hydra这种纯英文短路径。然后安装微软官方最新的 Visual C 运行库合集重启终端再执行hydra.exe -h。如果还是闪退看下目录里是不是有libssl-3-x64.dll这类文件被删了被删就是隔离去安全软件恢复区找回后加白名单。5.2 Windows Defender 主动隔离工具被当恶意软件删掉现象解压完成后一切正常过几分钟 hydra.exe 消失Windows 安全中心提示检测到威胁并已隔离。原因Hydra 的行为特征就是高频口令尝试启发式查杀会把它归类为 HackTool。这属于误报但杀毒软件不这么想。解决在测试机上把C:\tools\hydra整个目录加入 Windows Defender 排除项设置路径在“病毒和威胁防护”-“管理设置”-“排除项”。加白后重新解压一次就能正常使用。这条只建议在你有控制权的测试机和虚拟机里做别在严格管控的办公电脑上另搞一套。5.3 并发一高就全部断连目标直接封了你这个 IP现象SSH 任务开了-t 16前 5 分钟还正常之后所有连接开始报Connection refused或者Timeout。原因目标主机的 fail2ban 或云平台安全组检测到单个 IP 的高频失败直接把来源 IP 拉黑了。有些时候不是对方封你而是云厂商的默认防暴力规则在起作用。解决把-t降到 2必要时降到 1同时尽量错峰跑。已经封了的话看看目标有没有登录到管理后台解封的途径如果完全没有就只能等封禁时间自然过去。这个教训告诉我远程服务的并发调参永远比本地快。5.4 密码明明试出来了结果文件却是乱码现象用了-o result.txt任务显示[22][ssh] host: 192.168.1.20 login: admin password: admin123但记事本打开后中文口令全变成“锟斤拷”一类乱码。原因cmd/PowerShell 的默认输出编码是 GBK而 Hydra 结果写文件时按当前代码页输出。字典文件如果是 UTF-8 编码和 GBK 混在一起就彻底乱套。解决两个办法。一是在跑之前先切到 UTF-8 代码页chcp 65001再跑 Hydra二是更省事不用-o直接在命令后面用 PowerShell 的重定向方式写结果同时让 PowerShell 把输出编码设成 UTF-8$OutputEncoding [Console]::OutputEncoding [Text.Encoding]::UTF8 hydra.exe -L users.txt -P pass.txt 192.168.1.20 ssh result.txt事先把所有字典文件统一转成 UTF-8 无 BOM 编码能少掉一半编码问题。这条在 Windows 上比在 Linux 上遇到概率高得多属于 Windows 专属坑。5.5 WSL 安装向导提前结束Ubuntu 一直装不上现象执行wsl --install -d Ubuntu后进度条走一半提示“windows linux更新子系统安装向导提前结束由于错误”反复重试都一样。原因常见是两个系统功能没开启Microsoft-Windows-Subsystem-Linux和VirtualMachinePlatform。有些精简版系统把虚拟化相关组件也关了导致向导半途退出。解决在管理员 PowerShell 里手动开启这两个功能然后重启再重新执行安装dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启后还不行就检查 BIOS/UEFI 里的虚拟化开关Intel VT-x 或 AMD SVM是否关闭。开完再装绝大多数都能过。装好 WSL 后记得先把 apt 源更新一遍不然默认源拉包可能很慢。6. 进阶玩法把 Hydra 干成一条 Windows 自动化流水线跑一次 Hydra 不难难的是把几十个目标、多套协议、不同字典的测试节奏管起来还要能在事后快速汇总结果。我会在 Windows 上写一段 PowerShell 脚本把目标、服务和结果输出串起来这就是最基础的自动化口令评估流程。# windows自动化批量跑多服务并自动提取命中口令 $targets Get-Content C:\tools\targets.txt $usersList C:\tools\users.txt $passList C:\tools\pass.txt foreach ($t in $targets) { $cleanName $t.Replace(., _) hydra.exe -L $usersList -P $passList -t 2 -f -o C:\tools\out_${cleanName}.txt $t ssh } # 从所有结果里过滤出命中行 Get-ChildItem C:\tools\out_*.txt | ForEach-Object { Select-String -Path $_.FullName -Pattern login: | ForEach-Object { $_.Line } }$cleanName是为了防止 IP 里的点导致文件名混乱out_192_168_1_20.txt这类命名后面一眼能对上目标。脚本跑完以后用Select-String把所有含login:的行抽出来直接就是一份命中清单。由于变量路径都写死了整个流程在命令行里是静默运行的适合丢给计划任务定时跑。跑大字典时最怕中途掉线Hydra 的-R参数是后悔药我每次都会留着。中断后重新执行同一条命令Hydra 会从上次断点继续不用重复试一遍已经验证过的密码组合hydra.exe -R -L users.txt -P pass.txt 192.168.1.20 ssh这个参数在长任务里能省几个小时。我现在每次跑完批量任务都会顺手看一眼目标环境的 Windows 安全日志里有没有异常增多的 4625 登录失败事件既是确认测试效果也是在帮对方检查有没有留下安全欠账。工具好不好用不只是看爆破速度更要看你能不能把整个过程控制得清楚、收得干净。希望这些细节对你有用也希望帮你在自己权限范围内的测试里少踩几个坑。本文还有配套的精品资源点击获取
返回列表