章节3:防御篇
06 密码暴力破解的防御
暴力破解防御
- sleep
- Token
- 限制尝试次数,锁定账户
二次验证


reCAPTCHA(IP验证)


行为识别


WAF

强制修改密码

取消密码登录
segmentfault、知乎
个人用户安全建议
- 使用复杂密码
- 不同网站使用不同密码
- 定期修改密码
- 防止被钓鱼
钓鱼

07 其他暴力破解工具
wfuzz(kali)
-
猜参数
-
暴破密码
-
找出网站过滤的参数,比如SQL注入和XSS
-
目录扫描
-
压力测试
……
wfuzz -z file,user -z file,pass --hw x -d "username=FUZZ&password=FUZ2Z&submit=login" http://ip/pikachu/vul/burteforce/bf_form.php
Hydra(kail)
https://github.com/vanhauser-thc/thc-hydra
支持:
Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP,HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY,HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST,HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener,Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin,Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTPEnum, SNMP v1+v2+v3, SOCKS5,SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth,VNC and XMPP
| 参数 | 解释 |
|---|---|
| -R | 恢复上次中断的会话 |
| -I | 忽略之前的会话文件 |
| -S | SSL连接 |
| -s | 指定端口 |
| -l | 用户名字典,-L 来自文件 |
| -p | 密码字典,-P 来自文件 |
| -x | 密码生成 |
| -y | 禁用字符 |
| -r | rainy mode |
| -e | 循环测试用户名而不是密码 |
| -C | 当用户名和密码存储到一个文件时使用此参数。注意,文件(字典)存储的格式必须为"用户名:密码"的格式。 |
| -M | 批量暴破 |
| -o | 输出的文件名 |
| -b | 输出格式 |
| -f | 一旦暴破成功一个就停止暴破 |
| -t | 指定暴破时的任务数量(可以理解为线程数),默认为16 |
| -T | 总并发数 |
| -w | 每个线程的连接之间的响应等待时间 |
| -c | 所有线程单次登录等待时间 |
| -4/-6 | 使用IPv4 / IPv6地址 |
| -v | 显示暴破的详细信息 |
| -O | 使用旧的SSL v2或v3版本 |
| -q | 不打印有关连接错误的消息 |
| -U | 服务模块使用详细信息 |
Hydra-Examples
hydra -l user -P passlist.txt ftp://ip
hydra -L userlist.txt -p defaultpw imap://ip/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[ip/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh

Medusa
http://foofus.net/goons/jmk/medusa/medusa.html
支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP(NetWare),NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP(AUTH/VRFY), SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC
| 参数 | 解释 |
|---|---|
| -h | 主机名或者IP名 |
| -H | 主机名或者IP名(文件) |
| -u | 用户名 |
| -U | 用户名(文件) |
| -p | 密码 |
| -P | 密码(文件) |
| -C | 指定测试格式为"user:password"的字典 |
| -O | 将输出结果保存在指定文件 |
| -e | 额外的密码检测(n:空密码s:用户名=密码) |
| -M | 指定执行的模块(不带.mod扩展名) |
| -m | 指定传递给模块的参数 |
| -d | 查看支持破解的模块 |
| -n | 指定非默认的TCP端口 |
| -s | 启动SSL |
| -g | 设置连接超时时间(默认值3) |
| -r | 设置重试的次数(默认值3) |
| -R | 重试次数 |
| -c | 验证socket连接是否可用的等待时间 |
| -t | 设置同时测试的登录总数 |
| -T | 设置同时测试的主机总数 |
| -L | 一个线程使用一个用户名 |
| -f | 在破解得到第一个用户名或密码后停止扫描主机 |
| -F | 当在任何主机上破解得到第一个用户名或密码后停止扫描 |
| -b | 不显示软件启动时的版本信息 |
| -q | 显示模块的使用信息 |
| -v | 详细等级(0-6) |
| -w | 错误调试等级(0-10) |
| -V | 显示版本信息 |
| -Z | 恢复中止的扫描 |

msf辅助模块
msfconsole
use auxiliary/scanner/ssh/ssh_login
set RHOSTS ip
set PASS_FILE /root/vuln/pass
set USER_FILE /root/vuln/user
exploit



















