BruteForce 命令总结
家有余粮鸡犬饱,户多书籍子孙贤。
导航
壹 - 字典生成
john
john 虽有多种破解模式,但适合用来生成字典的模式主要是:wordlist、mask、increment、subsets。此外,还可配合 external、rules 模式来对生成的字典进行过滤和变形处理。
模式介绍:
- wordlist:提供一个单词字典,配合辅助模式对字典进行衍生。
- mask:提供一个描述单词特征的“占位字符串”来产生字典。【注:占位字符可参考Character classes部分】
- subsets:提供一个字符集,根据字符集中的字符生成字典。【注:配合参数
--length、--min-length、--max-length可对长度进行控制。】 - increment:与 subsets 类似,但字符集和密码长度均已在配置文件中预设,使用时仅需指定模板名称即可。【支持模板:
grep -e "^\[Incremental" /etc/john/john.conf】 - rules【辅助模式】:对字典中的单词再依据一些规则模板来进行变形衍生处理。【支持模板:
grep -e "^\[List.Rules" /etc/john/john.conf】 - external【辅助模式】:对字典中的单词再依据一些过滤模板来进行过滤缩减处理。【支持模板:
grep -e "^\[List.External:Filter." /etc/john/john.conf】
字典生成:
##### Wordlist #####
#一个单词衍生出了 64 种常见的变化
john --wordlist=./word.txt --rules=best64 --stdout > words.txt
#从 1400 万密码中过滤出的纯大写字母有 22 万。
john --wordlist=./rockyou.txt --external=Filter_Upper --stdout
##### Mask #####
#生成的密码都是 skylark 开头,然后跟一个特殊字符,然后两位数字。
john --mask="skylark?s?d?d" --stdout
#自定义占位符的字符集范围为 abc。
john -1=abc --mask='?1?1?d' --stdout
##### Subsets #####
#根据指定的字符集 abc 生成 2 位长度的密码。
john --subsets='abc' --length=2 --stdout
#根据指定的字符集 abc 生成 2-3 位长度的密码。
john --subsets='abc' --min-length=2 --max-length=3 --stdout
##### Increment #####
#生成的全是数字的密码
john --increment=Digits --stdout
#生成的全是大小写的密码
john --increment=Alpha --stdout
注意:(1)参数
--length、--min-length、--max-length属于全局长度过滤器,不仅限于在 Subsets 模式下使用。(2)参数--wordlist、--mask、--subsets、--increment在不指定参数时会使用配置文件/etc/john/john.conf中默认的值使用。
pydictor
pydictor是一款功能非常强大的字典生成器,支持众多实用的功能以供生成各式的高级字典。【命令参考】
支持功能:
- base:根据预定义的字符集来生成字典。
- char:根据自定义的字符集来生成字典。
- chunk:将提供的单词进行排列组合以生成字典。
- extend:根据预定义的规则级别来对提供的单词进行变形扩展。
- conf:以类正则表达式的规则来生成字典。
- sedb:以社会工程学的方式来对提供的身份信息进行组合变形以生成字典。
- tool:此功能虽不生成字典,但提供各种 统计、去重、合并 工具来对指定的字典进行处理。
操作字典参数:
- len:过滤单词的长度范围。示例:
--len 1 2 - head:在单词的开头添加后缀。示例:
--head a - tail:在单词的尾部添加后缀。示例:
--tail z - leet:对字典中的单词进行相似置换处理。示例:
--leet 0【注:如 a 与 @ 相似,则替换出现的 a 为 @,可修改替换表/funcfg/leet_mode.conf来自定义要置换的单词。】 - encode:对字典中的单词进行编码处理。示例:
--encode b64 - regex:对字典中的单词进行正则表达式筛选。示例:
--regex "^z.*?g$"
字典生成:
##### Base #####
#使用数字大写小写字母中的字符去生成长度范围 1-3 的密码字典。
python pydictor.py -base dLc --len 1 3
##### Char #####
#使用自定义的字符去生成长度范围 1-3 的密码字典。
python pydictor.py -char "asdf123._@ " --len 1 3
##### Chunk #####
#对指定的字串或文件中的单词进行排列组合
python pydictor.py -chunk abc 123
##### Extend #####
#对指定的字串 skylark 进行扩展,扩展级别是最高的1,默认是3
python pydictor.py -extend skylark --level 1
##### Conf #####
#生成的单词特征:a字母开头 + 1位数字 + 1-2位字母 + z字母结尾
python pydictor.py -conf "a[0-9]{1,1}<none>[a,b,c]{1,2}<none>z"
##### Sedb #####
#根据提供的个人身份信息来生成字典,
python pydictor.py --sedb
...参数设置...
set cname liwei
set phone 18852006666
set usedchar skylark #其它关键字
show
run
...运行构建...
##### Tool #####
#单字典去重
python pydictor.py -tool uniqifer ./dicts.txt
#多字典合并去重
python pydictor.py -tool uniqbiner /dict/
#单字典词频统计,频率最高的前 10 列出展示
python pydictor.py -tool counter vs ./dicts.txt 10
注意:(1)使用 conf 时,凡使用列表符号
[],则必须携带{1,2}<none>来指定长度,否则会报错。(2)使用 sedb 时,相应的变量含义可参考此说明。
贰 - 暴力破解
john
john 是一款老牌的离线爆破器,它不光提供密码破解的功能,还可以生成字典(看上面)。此外,它还支持 将加密文件转换为可破解的 Hash 字符串、创建所支持破解类型的密码 Hash 值。
##### 字典生成 #####
#对已有字典应用变形规则来扩展字典
john --wordlist=./word.txt --rules=best64 --stdout > words.txt
#其余用法见上面示例
##### 密码破解 #####
#字典破解 md5 加密的 hash 值
john --format=md5crypt --wordlist=./wordlist.txt ./hashes.txt
#查看已破解的 Hash 密码【注:破解的密码均被保存在 ~/.john/john.pot】
john --show ./hashes.txt
#查看支持的 Hash 类型
john --list=formats
##### 加密文件转 Hash #####
#将一个加密的 zip 压缩包转换为可供破解的 Hash 文件
zip2john zip.zip > zip.hash
#支持转换为 Hash 的加密文件
ls /usr/share/john/*2john*
##### 创建密码 Hash #####
#创建一个 md5crypt 类型的密码
echo -n "skylark" | /usr/share/john/pass_gen.pl md5crypt
hashcat
hashcat 号称是离线破解中速度最快的爆破器,其可借助 GPU 的强大算力来加快破解速度,支持的 Hash 类型也很多,但据说在一些老旧的 Hash 类型上支持度不如 john。其支持的破解模式有:0-Straight(字典攻击-默认模式)、1-Combination(排列组合)、3-Brute-force(即 Mask 掩码)、6/7/9(无用不介绍)
#字典破解 md5 加密的 hash 值
hashcat -m 500 -a 0 -r rules/best64.rule hashes.txt wordlist.txt
#查看已破解的 Hash 密码【注:破解的密码均被保存在 ~/.local/share/hashcat/hashcat.potfile】
hashcat --show hashes.txt
#查找 Hash 对应的 Mode 号码
hashcat --help | grep md5crypt
hashcat --example-hashes | grep -C 20 md5crypt
hydry
hydra是一款用于网络服务登录暴力破解的工具,其支持的网络协议众多,常见的如 ssh、telnet、rdp、ftp、smb 均支持。
#SSH 用户密码爆破【-u 开启密码喷洒模式;-e nsr 开启 空密码、用户名当密码、用户名反转当密码 功能;开启详细输出功能;】
hydra -L user.txt -P pass.txt -u -e nsr -V 192.168.1.1 ssh
#指定自定义用户名、密码、端口进行 SSH 爆破
hydra -l user -p pass -s 22 -e nsr -V 192.168.1.1 ssh
#向导问询功能
hydra-wizard
#部分服务可能还支持额外的参数,可使用以下查看 snmp 服务的方式查看
hydra -U snmp
hydra -P pass.txt -m 2 192.168.1.1 snmp
注:http 服务相关的密码爆破建议使用 wfuzz 进行,该工具虽支持但不太适合。
叁 - 杂七杂八
- 参考文章:HackTricks
- 大而全密码字典:SecLists
- 厂商默认凭据:DefaultCreds-cheat-sheet