章节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