跳到主要内容

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 进行,该工具虽支持但不太适合。

叁 - 杂七杂八