kali密码攻击教程
拿到一台Kali,密码别急着打开MSF。攻击密码攻击这件事,教程工具只是密码壳,思路才是攻击核。我见过太多人上来就`hydra -l admin -P rockyou.txt`,教程跑了半小时没结果,密码然后骂工具垃圾。攻击问题不在工具,教程在于你根本没搞清楚目标是密码什么类型的认证。
先摸清楚对面是攻击什么
密码攻击分两大类:在线攻击和离线攻击。在线就是教程对着活着的服务猜,比如SSH、密码FTP、攻击Web登录框。教程离线是拿到哈希之后在自己机器上慢慢算,比如抓到了NTLM hash或者shadow文件。
在线攻击最大的敌人不是密码复杂度,是网络延迟和账户锁定策略。你每猜一次都要等服务器回应,速度被卡死在几十到几百次每秒。而且很多系统三次错误就锁账户,你字典再大也没用。所以在线攻击的核心不是字典多大,是字典多准。
离线攻击就爽了。hashcat配合一张RTX 4090,NTLM能跑到几千万次每秒。这时候你才需要考虑字典策略、规则引擎、掩码攻击这些东西。
在线:Hydra和Medusa的实战差异
Hydra是Kali里最出名的在线爆破工具。命令结构简单:hydra -l user -P pass.txt target ssh。但实际用的时候有几个坑。
默认线程数是16,对SSH来说太高了,很多sshd配置会直接掐断连接。我一般降到4到6。加个-t 4,再配合-f让它在找到第一个有效密码后停止,不然它会继续跑完整本字典,浪费时间。
Medusa在某些场景下比Hydra稳。它处理并发连接的方式不一样,对FTP和MySQL的兼容性更好。有次打一个老版vsftpd,Hydra一直报协议错误,换Medusa一把过。工具没有绝对的好坏,看场景。
还有个小细节:很多Web登录框不是HTTP Basic认证,Hydra的http-post-form模块需要你手动构造请求格式。用Burp抓一次登录请求,把用户名和密码字段替换成^USER^和^PASS^,失败标志填返回页面里的错误提示文字。这个格式写错一个字符,跑一万年也出不来结果。
离线:hashcat才是主场
抓到哈希之后,先别急着跑字典。第一步是识别哈希类型。hashid或者hash-identifier能帮你判断。NTLM、NetNTLMv2、SHA-512、bcrypt,每种类型的破解速度差几个数量级。
bcrypt是故意的慢,设计出来就是抗爆破的。一张4090跑bcrypt大概每秒几千次,你拿rockyou.txt(1400万条)去跑,算算要多久。所以遇到bcrypt,字典攻击基本没戏,得换思路。
NTLM就快得多。用hashcat -m 1000 hash.txt rockyou.txt,几分钟就能跑完rockyou。但rockyou是2009年泄露的老字典,对现代密码命中率已经很低了。我现在更常用的是结合规则引擎:-r /usr/share/hashcat/rules/best64.rule。它会把字典里的每个词做变形——首字母大写、末尾加数字、替换字母为符号。1400万条瞬间变成几亿条候选。
掩码攻击适合你知道密码大概长什么样的情况。比如公司密码策略是“大写字母+小写字母+数字+特殊符号,8位”,那用-a 3 ?u?l?l?l?l?d?s这种模式去跑,比盲跑字典效率高得多。但前提是你得先拿到密码策略,这个信息往往藏在目标的AD组策略或者之前泄露的文档里。
字典不是越大越好
我见过有人下了个50G的字典,跑了一整天啥也没出。问题在于那本字典里大部分是随机字符串和外语词汇,跟目标环境完全不搭。
好的字典是定制的。打一个国内企业,用带拼音和常见中文姓名的字典比rockyou有效十倍。打一个技术公司,把GitHub上泄露的配置文件里的密码字段提取出来做成字典,命中率极高。这些工作比无脑跑大字典有意思得多。
CeWL可以从目标网站爬取关键词生成字典。cewl -d 3 -m 5 http://target.com -w custom.txt,深度3层,最小长度5。生成的词都是目标网站实际用到的词汇,比通用字典精准。
最后说个真实案例
之前打一个内网,拿到一台Web服务器权限后,在/var/www/html/config.php里发现了数据库密码。这个密码是Summer2023!。然后我用这个密码去试SSH,同一台机器,用户名root,直接进去了。因为运维图省事,数据库密码和系统密码设成一样的。
这件事说明什么?密码攻击很多时候不是技术问题,是人的问题。你不需要破解AES-256,你只需要找到那个把密码写在便利贴上的人。工具会用就行,真正决定成败的是信息收集和场景判断。
Kali里的密码工具够多了,别贪多。Hydra、hashcat、John、CeWL,这四个吃透,覆盖90%的场景。剩下的时间花在理解目标环境上,比多装十个工具管用。









