惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
I
InfoQ
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
有赞技术团队
有赞技术团队
G
Google Developers Blog
L
LangChain Blog
博客园_首页
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
月光博客
月光博客
IT之家
IT之家
量子位
宝玉的分享
宝玉的分享
S
SegmentFault 最新的问题
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网

OhYee 博客

小鹏辅助驾驶测评|OhYee 博客 小鹏非支持手机开启自动解锁|OhYee 博客 使用函数计算实现 301 重定向|OhYee 博客 针对 HTML 内容使用 Ant Design 图片弹框|OhYee 博客 博客进程泄露及僵尸进程解决|OhYee 博客 蓝易云服务器体验|OhYee 博客 SSH 调起本地 VSCode|OhYee 博客 【2022 秋招内推】阿里云后端研发工程师|OhYee 博客 使用函数计算获取 IP 地址信息|OhYee 博客 正确获取客户端 IP/HTTP Header 也可能重复|OhYee 博客 评测 Oculus Quest2 及 BigScreen|OhYee 博客 NextJS 热重载保留状态|OhYee 博客 如何优雅地贴 gist 代码|OhYee 博客 Linux 精细化文件权限|OhYee 博客 VSCode 容器开发环境|OhYee 博客 Clash 的不兼容更新排查|OhYee 博客 Zeek 导出 PCAP|OhYee 博客 记一次 ssh 配置问题|OhYee 博客 Git Commit 规范化工具|OhYee 博客 谈谈《星之卡比-探索发现》|OhYee 博客 VSCode 快捷键绑定 Shell 命令|OhYee 博客 ASN.1 语法及 X.509 证书格式解析解析|OhYee 博客 腾讯企业邮箱忽略 MX 记录发信|OhYee 博客 Chrome/Edge 标签组插件|OhYee 博客 【应届内推】阿里云后端研发工程师|OhYee 博客 损坏的 Typecho 备份处理为 JSON|OhYee 博客 VS Code VIM 插件高效使用|OhYee 博客 SSH 正反向代理|OhYee 博客 Let's Encrypt 根证书过期引发的问题|OhYee 博客 OpenWRT 忽略内核依赖|OhYee 博客
Hydra 暴力破解工具|OhYee 博客
2021-01-12 · via OhYee 博客

Hydra 暴力破解工具

以 SSH 为例,如果需要进行暴力破解,首先我们需要一个靠谱的密码字典,纯粹的随机尝试效率极低,而有针对性地尝试高频密码自然拥有更高的效率。接下来,需要一个靠谱的程序自动使用密码进行尝试登入,这需要根据不同的协议进行针对性的实现。

前者可以直接在很多地方下载得到,比如 rockyou.txt。而后者,可以使用支持大量协议的 Hydra。

Hydra 是九头蛇的意思,也就是传说中的 Hail Hydra!

Hail Hydra!Hail Hydra!

功能参数

Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

语法: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [service://server[:PORT][/OPT]]

选项:
  -R        从之前停止的会话中继续执行
  -I        忽略存在的恢复文件,不需要等到 10 秒
  -S        使用 SSL 连接
  -s PORT   如果不使用默认端口,在这里定义
  -l LOGIN or -L FILE  设置登入用户名,可以从文件导入
  -p PASS  or -P FILE  用于尝试的密码,可以从文件导入
  -x MIN:MAX:CHARSET  生成暴力破解密码,可以使用 "-x -h" 查看详细帮助
  -y        暴力破解密码不使用的符号
  -e nsr    尝试 "n" 空密码试探,"s" 用户密码试探,"r" 反向登录
  -u        循环用户名,而非密码(隐含 -x)
  -C FILE   使用冒号分割 "login:pass",而非 -L/-P
  -M FILE   要攻击的服务器列表,每行一个,使用 ":" 指定端口
  -o FILE   日志输出到文件
  -b FORMAT 输出信息的格式:text(默认), json, jsonv1
  -f / -F   在发现用户密码后的结束破解(-f 当前主机主机结束破解,-F 全局结束破解)
  -t TASKS  针对每个任务执行任务的并发数,默认 16
  -T TASKS  总并发数,默认  64
  -w / -W TIME  等待响应的时间,默认 32 / 两个线程之间的间隔,默认 0
  -c TIME   所有线程等待登录尝试的时间,强制 -t 1
  -4 / -6   使用 IPv4 / IPv6
  -v / -V / -d  详细输出 / 输出每个尝试的用户名密码 / 调试模式
  -O        使用老版的 SSL v2 和 v3
  -q        不输出连接错误
  -U        服务模块使用明细
  -h        完整版本的帮助
  server    目标地址
  service   要攻击的服务
  OPT       部分服务模块支持的附加选项

支持的服务: adam6500 asterisk afp cisco cisco-enable cvs firebird ftp[s] http[s]-{head|get|post} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] memcached mongodb mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2 rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp

Hydra is a tool to guess/crack valid login/password pairs. Licensed under AGPL
v3.0. The newest version is always available at https://github.com/vanhauser-thc/thc-hydra
Don't use in military or secret service organizations, or for illegal purposes.
These services were not compiled in: ncp oracle sapr3.

使用 HYDRA_PROXY_HTTP 或 HYDRA_PROXY 环境变量设置代理.
E.g. % export HYDRA_PROXY=socks5://l:p@127.0.0.1:9150 (or: socks4:// connect://)
     % export HYDRA_PROXY=connect_and_socks_proxylist.txt  (up to 64 entries)
     % export HYDRA_PROXY_HTTP=http://login:pass@proxy:8080
     % export HYDRA_PROXY_HTTP=proxylist.txt  (up to 64 entries)

样例:
  hydra -l user -P passlist.txt ftp://192.168.0.1
  hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
  hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
  hydra -l admin -p password ftp://[192.168.0.0/24]/
  hydra -L logins.txt -P pws.txt -M targets.txt ssh

破解尝试

首先在服务器上建立一个账户,并设置密码为1q2w3e4r。相对于大部分纯字母、纯数字数字密码,这种混合的密码算得上安全度算上不错了。

接下来,使用上面提到的 rockyou 密码字典,运行

hydra -l ohyee -P rockyou.txt -e ns 119.45.6.103 ssh -o log.log -I -V

可以看到,程序在以 16 个一组进行并发尝试(默认-t 16,一组的 16 个密码同时检测完毕才会进行下一组)

如图,大概花费了几分钟时间,就成功破解了该密码(该账户在实验结束时已删除

最终成功破解密码最终成功破解密码

如何避免暴力破解

如果在配置服务器的时候有看过日志,可以发现一个服务器在他上线的那一瞬间开始,就有经受着大量的暴力破解扫描行为。

故而,可以使用诸如 suricata 在内的 IDS 进行防护。如图是一个检测 10 秒内,同一来源超过 5 次 22 端口会话建立的检测规则。

开启该规则,就可以实现对 SSH 暴力破解的检测。启动 Suricata 后,即可在/var/log/suricata/fast.log看到相应的入侵警告。
如果将其与防火墙联动,即可将该来源进行屏蔽,抵御暴力破解。

SSH 暴力破解检测规则SSH 暴力破解检测规则

如何让自己的密码更安全?

从字典中可以看到,字典覆盖了大多数常见的单词,以及字母与数字的结合,如果可以巧妙地引入部分大写字母以及特殊符号,可以极大增加破解的难度。比如包括 LastPass 在内各种密码管理软件,可以生成诸如jK2QffA35XjP这种随机的混合字符串,如果在综合大小写数字符号等内容,可以认为是难以破解的。