第八章 密碼攻擊
作者:Willie L. Pritchett, David De Smet
譯者:
飛龍 協定: CC BY-NC-SA 4.0
這一章中,我們要探索一些攻擊密碼來獲得使用者賬戶的方式。密碼破解是所有滲透測試者都需要執行的任務。本質上,任何系統的最不安全的部分就是由使用者送出的密碼。無論密碼政策如何,人們必然讨厭輸入強密碼,或者時常更新它們。這會使它們易于成為黑客的目标。
8.1 線上密碼攻擊
這個秘籍中我們會使用 Hydra 密碼破解器。有時候我們有機會來實體攻擊基于 Windows 的計算機,直接擷取安全賬戶管理器(SAM)。但是,我們也有時不能這樣做,是以這是線上密碼攻擊具有優勢的情況。
Hydra 支援許多協定,包括(但不僅限于)FTP、HTTP、HTTPS、MySQL、MSSQL、Oracle、Cisco、IMAP、VNC 和更多的協定。需要注意的是,由于這種攻擊可能會産生噪聲,這會增加你被偵測到的可能。
準備
需要内部網絡或網際網路的連結,也需要一台用作受害者的計算機。
操作步驟
讓我們開始破解線上密碼。
- 在開始菜單中,選擇
。Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 既然我們已經把 Hydra 打開了,我們需要設定我們的單詞清單。點選
(密碼)标簽頁。我們需要使用使用者名清單和密碼清單。輸入你的使用者名和密碼清單的位置。同時選擇Passwords
(循環使用使用者名)和Loop around users
(嘗試空密碼)。Try empty password
- 使用者名清單:
/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/names/nameslist.txt
- 密碼清單:
/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/passwds/john.txt
你可以使用的快捷方式是,點選單詞清單框來打開檔案系統視窗。
- 使用者名清單:
- 下面,我們要做一些調整。在
(執行選項)下面,我們将任務數量從 16 設定為 2。原因是我們不打算讓這麼多程序運作,這樣會使伺服器崩潰。雖然它是可選的,我們也希望選擇Performance Options
(在首次發現比對之後退出)選項。Exit after first found pair
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 最後,我們要設定我們的目标。點選
(目标)标簽頁并設定我們的目标和協定。這裡,我們使用 Metasploitable 主機(Target
)的 MySQL 端口。192.168.10.111
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 最後我們點選
(開始)标簽頁的Start
按鈕來啟動攻擊。Start
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
工作原理
這個秘籍中,我們使用 Hydra 來對目标執行字典攻擊。Hydra 允許我們指定目标,并且使用使用者名和密碼清單。它會通過使用來自兩個清單的不同使用者名和密碼組合來爆破密碼。
8.2 破解 HTTP 密碼
這個秘籍中,我們将要使用 Hydra 密碼破解器來破解 HTTP 密碼。網站和 Web 應用的通路通常由使用者名和密碼組合來控制。就像任何密碼類型那樣,使用者通常會輸入弱密碼。
讓我們開始破解 HTTP 密碼。
-
Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk
-
Passwords
Loop around users
Try empty password
-
/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/names/nameslist.txt
-
/usr/share/wfuzz/wordlist/fuzzdb/wordlistsuser-passwd/passwds/john.txt
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 -
-
Performance Options
Exit after first found pair
-
Target
)的 HTTP 端口。192.168.10.111
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 -
Start
Start
8.3 獲得路由通路
這個秘籍中,我們會使用 Medusa 來進行爆破攻擊。
當今,我們處于網絡社會之中。随着聯網視訊遊戲系統的誕生,多數家庭擁有數台計算機,并且小型業務以創紀錄的趨勢增長。路由器也成為了網絡連接配接的基石。然而,富有經驗的網絡管理者的數量并沒有增長,以保護這些路由器,使得許多這種路由器易于被攻擊。
需要連接配接到網際網路或内部網絡的計算機。也需要可用的路由器。
- 在開始菜單中,通路
。當 Medusa 啟動後,它會加載Applications | Kali Linux | Password Attacks | Online Attacks | medusa
(幫助)檔案。help
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 我們現在已標明的選項來雲頂 Medusa。
medusa –M http -h 192.168.10.1 -u admin -P /usr/share/wfuzz/ wordlist/fuzzdb/wordlists-user-passwd/passwds/john.txt -e ns -n 80 -F
-
允許我們指定子產品。這裡,我們選擇了 HTTP 子產品。-M http
-
允許我們指定主機。這裡,我們選擇了-h 192.168.10.1
(路由的 IP 位址)。192.168.10.1
-
允許我們指定使用者。這裡我們選擇了-u admin
admin
-
允許我們指定密碼清單的位置。-P [location of password list]
-
允許我們指定額外的密碼檢查。-e ns
變量允許我們使用使用者名作為密碼,并且使用空密碼。ns
-
允許我們指定端口号碼。這裡我們選擇了-n 80
80
-
允許我們在成功找到使用者名密碼組合之後停止爆破。-F
-
- Medusa 會運作,并嘗試所有使用者名和密碼組合,直到某次成功。
這個秘籍中,我們使用 Medusa 來爆破目标路由器的密碼。能夠這樣做的好處就是,一旦你能夠通路路由器,你就可以更新它的設定,便于你以後再通路它,或者甚至是重定向發送給它的流量來改變你選擇的位置。
更多
你也可以直接從指令行運作 Medusa,通過鍵入
medusa
指令。
你也可以傳入其它選項給 Medusa,取決于你的情況。細節請參見幫助文檔,通過在終端視窗僅僅鍵入
medusa
來顯示。
子產品類型
下面是我們可以用于 Medusa 的子產品清單:
- AFP
- CVS
- FTP
- HTTP
- IMAP
- MS-SQL
- MySQL
- NetWare
- NNTP
- PCAnywhere
- Pop3
- PostgreSQL
- REXEC
- RLOGIN
- RSH
- SMBNT
- SMTP-AUTH
- SMTp-VRFY
- SNMP
- SSHv2
- Subversion
- Telnet
- VMware Authentication
- VNC
- Generic Wrapper
- Web form
8.4 密碼分析
這個秘籍中,我們會學到如何在密碼攻擊之前分析密碼。密碼分析的目的是允許我們通過收集目标機器、業務以及其它的資訊來得到更小的單詞清單。在我們的教程中,我們會使用 Ettercap 和 它的 ARP 毒化功能來嗅探流量。
這個秘籍需要區域網路的連結。
讓我們啟動 Ettercap 來進行密碼分析。
- 我們以配置 Ettercap 來開始這個秘籍。首先,我們找到它的配置檔案并用 VIM 編輯它。
要注意,你的位置可能不同。locate etter.conf vi /etc/etterconf
- 将
和ec_uid
改為ec_gid
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 下面我們需要取消下面的 IPTABLES 行的注釋。它在靠近檔案末尾的
一節。LINUX
- 現在,我們将要啟動 Ettercap。使用
選項,加載圖形化界面(GUI)。-G
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 我們開啟統一嗅探。你可以按下
或者通路菜單欄中的Shift + U
Sniff | Unified sniffing...
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 選擇網絡接口。
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 下面,我們開始
(掃描主機),這可以通過按下Scan for hosts
或通路菜單欄的Ctrl + S
來完成。Hosts | Scan for hosts
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 現在我們能夠讓 Ettercap 開始嗅探了。你可以按下
Ctrl + W
(開始嗅探)。Start | Start Sniffing
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 最後,我們開始進行 ARP 毒化。通路菜單欄的
(ARP 毒化)。Mitm | Arp poisoning
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 在出現的視窗中,選中
(嗅探遠端連接配接)的選項。Sniff remote connections
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 取決于網絡情況,我們會看到資訊。
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 一旦我們找到了我們想找的資訊(使用者名和密碼)。我們會關閉 Ettercap。你可以按下
或者通路菜單欄的Ctrl + E
(停止嗅探)來完成。Start | Stop sniffing
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 現在我們需要關閉 ARP 毒化來使網絡恢複正常。
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
這個秘籍中,我們使用 Ettercap 來毒化網絡并偷取網絡上的使用者名和密碼。我們以尋找和修改 Ettercap 的配置檔案來開始。之後我們啟動了 Ettercap 并使用 ARP 毒化執行中間人(MITM)攻擊。由于流量被重定向到我們的主機,當使用者名和密碼在網絡上傳播時,我們就能夠看到它們。
我們也可以使用 Metasploit 來分析使用者名和面。我們會通過使用搜尋郵件收集器子產品來執行它。
- 打開終端視窗并啟動 MSFCONSOLE:
msfconsole
- 搜尋郵件收集器;
search email collector
- 鍵入下列指令來使用搜尋郵件收集器子產品:
use auxiliary/gather/search_email_collector
- 展示該子產品可用的選項:
show options
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 下面我們設定域名。如果不想被有關部門查水表的話,請小心選擇域名。
- 将域名設為你希望的域名:
set domain gmail.com
- 設定輸入檔案。這并不是必需的。如果你打算運作多個攻擊,或打算稍後也能運作某個攻擊,推薦設定它。
set outfile /root/Desktop/fromwillie.txt
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 最後,我們開始攻擊。
run
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
8.5 使用 John the Ripper 破解 Windows 密碼
這個秘籍中,我們會使用 John the Ripper 來破解 Windows 安全通路管理器(SAM)檔案。SAM檔案儲存了目标系統使用者的使用者名和密碼的哈希。出于安全因素,SAM檔案使用授權來保護,并且不能在 Windows 系統運作中直接手動打開或複制。
你将會需要通路 SAM 檔案。
這個秘籍中,我們假設你能夠通路某台 Windows 主機。
讓我們開始使用 John the Ripper 破解 Windows SAM 檔案。我們假設你能夠通路某台 Windows 主機,通過遠端入侵,或者實體接觸,并且能夠通過 USB 或 DVD 驅動器啟動 Kali Linux。
- 看看你想挂載哪個硬碟:
Fdisk -l
- 挂載該硬碟,并将
設為它的挂載點。target
mount /dev/sda1 /target/
- 将目錄改為 Windows SAM 檔案的位置:
cd /target/windows/system32/config
- 列出目錄中所有内容。
ls –al
- 使用 SamDump2 來提取哈希,并将檔案放到你的 root 使用者目錄中的一個叫做
的檔案夾中。hashes
samdump2 system SAM > /root/hashes/hash.txt
- 将目錄改為 John the Ripper 所在目錄。
- 運作 John the Ripper:
./john /root/hashes/hash.txt ./john /root/hashes/hash.txt–f:nt (If attacking a file on a NTFS System)
8.6 字典攻擊
這個秘籍中,我們會進行字典或單詞清單的攻擊。字典攻擊使用事先準備的密碼集合,并嘗試使用單詞清單爆破與指定使用者比對的密碼。所生成的字典通常由三種類型:
+ 隻有使用者名:清單隻含有使用者名。
+ 隻有密碼:清單隻含有密碼。
+ 使用者名和密碼:清單含有生成的使用者名和密碼。
出于示範目的,我們使用 Crucnch 來生成我們自己的密碼字典。
需要在 Kali 上安裝 Crunch。
Kali 的好處是已經安裝了 Crunch,不像 BackTrack。
- 打開終端視窗,并輸入
指令來檢視 Crunch 的幫助檔案。crunch
crunch
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 使用 Crunch 生成密碼的基本文法是,
[minimum length] [maximum length] [character set] [options]
- Crunch 擁有幾種備選選項。一些常用的如下:
-
:這個選項允許你指定輸出清單的檔案名稱和位置、-o
-
:這個選項允許你指定每個檔案的最大位元組數。大小可以以 KB/MB/GB 來指定,并且必須和-b
觸發器一起使用。-o START
-
:這個選項允許你指定所使用的模式。-t
-
:在使用-l
選項時,這個選項允許你将一些字元辨別為占位符(-t
,@
%
)。^
-
- 下面我們執行指令來在桌面上建立密碼清單,它最少 8 個字母,最大 10 個字元,并且使用字元集
ABCDEFGabcdefg0123456789
crunch 8 10 ABCDEFGabcdefg0123456789 –o /root/Desktop/ generatedCrunch.txt
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 一旦生成了檔案,我們使用 Nano 來打開檔案:
nano /root/Desktop/generatedCrunch.txt
這個秘籍中我們使用了 Crunch 來生成密碼字典清單。
8.7 使用彩虹表
這個秘籍中我們會學到如何在 Kali 中使用彩虹表。彩虹表是特殊字典表,它使用哈希值代替了标準的字典密碼來完成攻擊。出于示範目的,我們使用 RainbowCrack 來生成彩虹表。
- 打開終端視窗并将目錄改為
的目錄:rtgen
cd /usr/share/rainbowcrack/
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 下面我們要啟動
來生成基于 MD5 的彩虹表。rtgen
./rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 一旦彩虹表生成完畢,你的目錄會包含
檔案。這取決于用于生成哈希的處理器數量,大約需要 2~7 個小時。.rt
- 為了開始破解密碼,我們使用
程式對彩虹表排序,使其更加易于使用。rtsort
這個秘籍中,我們使用了 RainbowCrack 攻擊來生成、排序和破解 MD5 密碼。RainbowCrack 能夠使用彩虹表破解哈希,基于一些預先準備的哈希值。我們以使用小寫字母值生成 MD5 彩虹表來開始。在秘籍的末尾,我們成功建立了彩虹表,并使用它來破解哈希檔案。
8.8 使用英偉達統一計算裝置架構(CUDA)
這個秘籍中,我們會使用英偉達統一計算裝置架構(CUDA)來破解密碼哈希。CUDA 是一個并行計算平台,它通過利用 GPU 的能力來提升計算性能。随着時間的流逝,GPU 的處理能力有了戲劇性的提升,這讓我們能夠将它用于計算目的。出于示範目的,我們使用 CudaHashcat-plus 來破解密碼。
需要 CUDA 所支援的顯示卡來完成這個秘籍。
- 打開終端視窗并将目錄改為 OclHashcat-plus 所在目錄。
cd /usr/share/oclhashcat-plus
- 執行下列指令來啟動 CudaHashcat-plus 的幫助檔案:
./cudaHashcat-plus.bin –help
- 運作 CudaHashcat 的文法是
cudaHashcat-plus.bin [options] hash [mask]
使用 OclHashcat 的重點之一是了解它的字元集結構。
- 在我們開始攻擊之前,讓我們先看看一些可用的攻擊向量。CudaHashcat 在攻擊中使用左右掩碼。密碼的字元按照掩碼劃分,并且被均分為左和右掩碼。對于每個掩碼,你可以為其指定字典或字元集。出于我們的目的,我們會使用定制的字元集。
- 為了指定自定義字元集,我們使用
選項。我們可以設定任意多的自定義字元集,隻要為它們指定一個數值(–1
)。每個自定義字元都由問号(1-n
)來表示,并且随後是字元類型。可用的選擇是:?
-
指定數字(0~9)d
-
指定小寫字母l
-
指定大寫字母u
-
指定特殊字元s
-
指定用做占位符的自定義字元集。1-n
-
- 這樣将它們組合起來,我們就指定了一個自定義字元集,它包括特殊字元(
),大寫字母(s
),小寫字母(u
)和數字(l
),生成長度為 8 的密碼。我們打算指定叫做d
的哈希表。attackfile
./cudaHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1
- 我們可以将這個指令這樣拆分:
-
調用了 CudaHashcat 。./cudaHashcat-plus.bin
-
是我們的攻擊檔案。attackfile
-
指定了自定義字元集-1 ?l?u?d?
,它包含小寫字母、大寫字母、數字和特殊字元。1
-
是使用字元集?1?1?1?1
的左掩碼。1
-
?1?1?1?1
的右掩碼。1
-
8.9 使用 ATI Stream
這個秘籍中,我們會使用 ATI Stream 來破解密碼哈希。ATI Stream 類似于 CUDA,因為它是一個并行計算平台,它可以通過利用 GPU 的能力來提升計算性能。随着時間的流逝,GPU 的處理能力有了戲劇性的提升,這讓我們能夠将它用于計算目的。出于示範目的,我們使用 OclHashcat-plus 來破解密碼。OclHashcat 有兩種版本:plus 和 lite。兩個都包含在 Kali 中。
需要支援 ATI Stream 的顯示卡來完成這個秘籍。
讓我們開始使用 OclHashcat-plus。
-
cd /usr/share/oclhashcat-plus
Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊 - 執行下列指令來啟動 OclHashcat-plus 的幫助檔案:
./oclHashcat-plus.bin –help
- 運作 OclHashcat 的文法是
oclHashcat-plus.bin [options] hash [mask]
- 在我們開始攻擊之前,讓我們先看看一些可用的攻擊向量。OclHashcat 在攻擊中使用左右掩碼。密碼的字元按照掩碼劃分,并且被均分為左和右掩碼。對于每個掩碼,你可以為其指定字典或字元集。出于我們的目的,我們會使用定制的字元集。
-
–1
1-n
?
-
d
-
l
-
u
-
s
-
1-n
-
-
s
u
l
d
attackfile
./oclHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1
-
-
調用了 OclHashcat 。./oclHashcat-plus.bin
-
attackfile
-
-1 ?l?u?d?
1
-
?1?1?1?1
1
-
?1?1?1?1
1
-
8.10 實體通路攻擊
這個秘籍中,我們會使用 SUCrack 來執行實體通路密碼攻擊。 SUCrack 是個多線程的工具,能夠通過
su
來執行本地使用者賬戶的暴力破解。Linux 的
su
指令允許你作為替代使用者來運作指令。這個攻擊,雖然在你不能通過其他手段提權 Linux 系統時非常有用,但是會填滿日志檔案,是以請確定在完成之後清理這些日志。
SUCrack 擁有幾種備選的可用指令:
-
允許你檢視它的幫助文檔。--help
-
允許你修改我們嘗試繞過登入的使用者。-l
-
允許你設定展示統計資訊的秒數間隔。預設值為 3 秒。-s
-
允許你設定是否使用 ANSI 轉義代碼。-a
-
允許你設定工作線程的數量。由于 SUCrack 是多線程的,你可以運作任意多的線程。我們推薦你隻使用一個線程,因為每次失敗的登入嘗試在嘗試下個密碼之前通常有三秒的延遲。-w
- 為了使用 SUCrack,你需要在啟動時指定單詞清單。否則,你會得到一條搞笑的資訊。打開終端視窗并執行
指令。出于我們的目的,我們會使用之前建立的自定義單詞清單檔案,它由 Crunch 生成。但是,你可以指定任何希望的單詞清單。sucrack
sucrack /usr/share/wordlists/rockyou.txt
- 如果你打算設定兩個工作線程,以及每 6 秒顯示一次統計資訊,并且使用 ANSI 轉義代碼,你可以使用下列指令:
sucrack –w 2 –s 6 –a /usr/share/wordlists/rockyou.txt
這個秘籍中,我們使用 SUCrack 來對系統的 root 使用者執行實體通路密碼攻擊。使用單詞清單的攻擊可以對管理者(預設)或特定使用者指定。我們運作
sucrack
指令,它為我們執行攻擊。