Kali Linux 祕籍 第八章 密碼攻擊
第八章 密碼攻擊
作者:Willie L. Pritchett, David De Smet
譯者:飛龍
這一章中,我們要探索一些攻擊密碼來獲得使用者賬戶的方式。密碼破解是所有滲透測試者都需要執行的任務。本質上,任何系統的最不安全的部分就是由使用者提交的密碼。無論密碼策略如何,人們必然討厭輸入強密碼,或者時常更新它們。這會使它們易於成為黑客的目標。
8.1 線上密碼攻擊
這個祕籍中我們會使用 Hydra 密碼破解器。有時候我們有機會來物理攻擊基於 Windows 的計算機,直接獲取安全賬戶管理器(SAM)。但是,我們也有時不能這樣做,所以這是線上密碼攻擊具有優勢的情況。
Hydra 支援許多協議,包括(但不僅限於)FTP、HTTP、HTTPS、MySQL、MSSQL、Oracle、Cisco、IMAP、VNC 和更多的協議。需要注意的是,由於這種攻擊可能會產生噪聲,這會增加你被偵測到的可能。
準備
需要內部網路或網際網路的連結,也需要一臺用作受害者的計算機。
操作步驟
讓我們開始破解線上密碼。
-
在開始選單中,選擇
Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk
。 -
既然我們已經把 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
你可以使用的快捷方式是,點選單詞列表框來開啟檔案系統視窗。
- 使用者名稱列表:
-
下面,我們要做一些調整。在
Performance Options
(執行選項)下面,我們將任務數量從 16 設定為 2。原因是我們不打算讓這麼多程序執行,這樣會使伺服器崩潰。雖然它是可選的,我們也希望選擇Exit after first found pair
(在首次發現匹配之後退出)選項。 -
最後,我們要設定我們的目標。點選
Target
(目標)標籤頁並設定我們的目標和協議。這裡,我們使用 Metasploitable 主機(192.168.10.111
)的 MySQL 埠。 -
最後我們點選
Start
(開始)標籤頁的Start
按鈕來啟動攻擊。
工作原理
這個祕籍中,我們使用 Hydra 來對目標執行字典攻擊。Hydra 允許我們指定目標,並且使用使用者名稱和密碼列表。它會通過使用來自兩個列表的不同使用者名稱和密碼組合來爆破密碼。
8.2 破解 HTTP 密碼
這個祕籍中,我們將要使用 Hydra 密碼破解器來破解 HTTP 密碼。網站和 Web 應用的訪問通常由使用者名稱和密碼組合來控制。就像任何密碼型別那樣,使用者通常會輸入弱密碼。
準備
需要內部網路或網際網路的連結,也需要一臺用作受害者的計算機。
操作步驟
讓我們開始破解 HTTP 密碼。
-
在開始選單中,選擇
Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk
。 -
既然我們已經把 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
你可以使用的快捷方式是,點選單詞列表框來開啟檔案系統視窗。
- 使用者名稱列表:
-
下面,我們要做一些調整。在
Performance Options
(執行選項)下面,我們將任務數量從 16 設定為 2。原因是我們不打算讓這麼多程序執行,這樣會使伺服器崩潰。雖然它是可選的,我們也希望選擇Exit after first found pair
(在首次發現匹配之後退出)選項。 -
最後,我們要設定我們的目標。點選
Target
(目標)標籤頁並設定我們的目標和協議。這裡,我們使用 Metasploitable 主機(192.168.10.111
)的 HTTP 埠。 -
最後我們點選
Start
(開始)標籤頁的Start
按鈕來啟動攻擊。
8.3 獲得路由訪問
這個祕籍中,我們會使用 Medusa 來進行爆破攻擊。
當今,我們處於網路社會之中。隨著聯網視訊遊戲系統的誕生,多數家庭擁有數臺計算機,並且小型業務以創紀錄的趨勢增長。路由器也成為了網路連線的基石。然而,富有經驗的網路管理員的數量並沒有增長,以保護這些路由器,使得許多這種路由器易於被攻擊。
準備
需要連線到網際網路或內部網路的計算機。也需要可用的路由器。
操作步驟
-
在開始選單中,訪問
Applications | Kali Linux | Password Attacks | Online Attacks | medusa
。當 Medusa 啟動後,它會載入help
(幫助)檔案。 -
我們現在已選定的選項來雲頂 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
- 1
-
-M http
允許我們指定模組。這裡,我們選擇了 HTTP 模組。 -
-h 192.168.10.1
允許我們指定主機。這裡,我們選擇了192.168.10.1
(路由的 IP 地址)。 -
-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
- 1
- 2
要注意,你的位置可能不同。
-
將
ec_uid
和ec_gid
改為0
。 -
下面我們需要取消下面的 IPTABLES 行的註釋。它在靠近檔案末尾的
LINUX
一節。 -
現在,我們將要啟動 Ettercap。使用
-G
選項,載入圖形化介面(GUI)。 -
我們開啟統一嗅探。你可以按下
Shift + U
或者訪問選單欄中的Sniff | Unified sniffing...
。 -
選擇網路介面。
-
下面,我們開始
Scan for hosts
(掃描主機),這可以通過按下Ctrl + S
或訪問選單欄的Hosts | Scan for hosts
來完成。 -
現在我們能夠讓 Ettercap 開始嗅探了。你可以按下
Ctrl + W
或訪問選單欄的Start | Start Sniffing
(開始嗅探)。 -
最後,我們開始進行 ARP 毒化。訪問選單欄的
Mitm | Arp poisoning
(ARP 毒化)。 -
在出現的視窗中,選中
Sniff remote connections
(嗅探遠端連線)的選項。 -
取決於網路情況,我們會看到資訊。
-
一旦我們找到了我們想找的資訊(使用者名稱和密碼)。我們會關閉 Ettercap。你可以按下
Ctrl + E
或者訪問選單欄的Start | Stop sniffing
(停止嗅探)來完成。 -
現在我們需要關閉 ARP 毒化來使網路恢復正常。
工作原理
這個祕籍中,我們使用 Ettercap 來毒化網路並偷取網路上的使用者名稱和密碼。我們以尋找和修改 Ettercap 的配置檔案來開始。之後我們啟動了 Ettercap 並使用 ARP 毒化執行中間人(MITM)攻擊。由於流量被重定向到我們的主機,當用戶名和密碼在網路上傳播時,我們就能夠看到它們。
更多
我們也可以使用 Metasploit 來分析使用者名稱和麵。我們會通過使用搜索郵件收集器模組來執行它。
-
開啟終端視窗並啟動 MSFCONSOLE:
msfconsole
- 1
-
搜尋郵件收集器;
search email collector
- 1
-
鍵入下列命令來使用搜索郵件收集器模組:
use auxiliary/gather/search_email_collector
- 1
-
展示該模組可用的選項:
show options
- 1
-
下面我們設定域名。如果不想被有關部門查水錶的話,請小心選擇域名。
-
將域名設為你希望的域名:
set domain gmail.com
- 1
-
設定輸入檔案。這並不是必需的。如果你打算執行多個攻擊,或打算稍後也能執行某個攻擊,推薦設定它。
set outfile /root/Desktop/fromwillie.txt
- 1
-
最後,我們開始攻擊。
run
- 1
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
- 1
-
掛載該硬碟,並將
target
設為它的掛載點。mount /dev/sda1 /target/
- 1
-
將目錄改為 Windows SAM 檔案的位置:
cd /target/windows/system32/config
- 1
-
列出目錄中所有內容。
ls –al
- 1
-
使用 SamDump2 來提取雜湊,並將檔案放到你的 root 使用者目錄中的一個叫做
hashes
的資料夾中。samdump2 system SAM > /root/hashes/hash.txt
- 1
-
將目錄改為 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)
- 1
- 2
8.6 字典攻擊
這個祕籍中,我們會進行字典或單詞列表的攻擊。字典攻擊使用事先準備的密碼集合,並嘗試使用單詞列表爆破與指定使用者匹配的密碼。所生成的字典通常由三種類型:
+ 只有使用者名稱:列表只含有使用者名稱。
+ 只有密碼:列表只含有密碼。
+ 使用者名稱和密碼:列表含有生成的使用者名稱和密碼。
- 1
- 2
- 3
出於演示目的,我們使用 Crucnch 來生成我們自己的密碼字典。
準備
需要在 Kali 上安裝 Crunch。
操作步驟
Kali 的好處是已經安裝了 Crunch,不像 BackTrack。
-
開啟終端視窗,並輸入
crunch
命令來檢視 Crunch 的幫助檔案。crunch
- 1
-
使用 Crunch 生成密碼的基本語法是,
[minimum length] [maximum length] [character set] [options]
。 -
Crunch 擁有幾種備選選項。一些常用的如下:
-
-o
:這個選項允許你指定輸出列表的檔名稱和位置、 -
-b
:這個選項允許你指定每個檔案的最大位元組數。大小可以以 KB/MB/GB 來指定,並且必須和-o START
觸發器一起使用。 -
-t
:這個選項允許你指定所使用的模式。 -
-l
:在使用-t
選項時,這個選項允許你將一些字元標識為佔位符(@
,%
,^
)。
-
-
下面我們執行命令來在桌面上建立密碼列表,它最少 8 個字母,最大 10 個字元,並且使用字符集
ABCDEFGabcdefg0123456789
。crunch 8 10 ABCDEFGabcdefg0123456789 –o /root/Desktop/ generatedCrunch.txt
- 1
-
一旦生成了檔案,我們使用 Nano 來開啟檔案:
nano /root/Desktop/generatedCrunch.txt
- 1
工作原理
這個祕籍中我們使用了 Crunch 來生成密碼字典列表。
8.7 使用彩虹表
這個祕籍中我們會學到如何在 Kali 中使用彩虹表。彩虹表是特殊字典表,它使用雜湊值代替了標準的字典密碼來完成攻擊。出於演示目的,我們使用 RainbowCrack 來生成彩虹表。
操作步驟
-
開啟終端視窗並將目錄改為
rtgen
的目錄:cd /usr/share/rainbowcrack/
- 1
-
下面我們要啟動
rtgen
來生成基於 MD5 的彩虹表。./rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0
- 1
-
一旦彩虹表生成完畢,你的目錄會包含
.rt
檔案。這取決於用於生成雜湊的處理器數量,大約需要 2~7 個小時。 -
為了開始破解密碼,我們使用
rtsort
程式對彩虹表排序,使其更加易於使用。
工作原理
這個祕籍中,我們使用了 RainbowCrack 攻擊來生成、排序和破解 MD5 密碼。RainbowCrack 能夠使用彩虹表破解雜湊,基於一些預先準備的雜湊值。我們以使用小寫字母值生成 MD5 彩虹表來開始。在祕籍的末尾,我們成功建立了彩虹表,並使用它來破解雜湊檔案。
8.8 使用英偉達統一計算裝置架構(CUDA)
這個祕籍中,我們會使用英偉達統一計算裝置架構(CUDA)來破解密碼雜湊。CUDA 是一個平行計算平臺,它通過利用 GPU 的能力來提升計算效能。隨著時間的流逝,GPU 的處理能力有了戲劇性的提升,這讓我們能夠將它用於計算目的。出於演示目的,我們使用 CudaHashcat-plus 來破解密碼。
準備
需要 CUDA 所支援的顯示卡來完成這個祕籍。
操作步驟
-
開啟終端視窗並將目錄改為 OclHashcat-plus 所在目錄。
cd /usr/share/oclhashcat-plus
- 1
-
執行下列命令來啟動 CudaHashcat-plus 的幫助檔案:
./cudaHashcat-plus.bin –help
- 1
-
執行 CudaHashcat 的語法是
cudaHashcat-plus.bin [options] hash [mask]
。使用 OclHashcat 的重點之一是理解它的字符集結構。
-
在我們開始攻擊之前,讓我們先看看一些可用的攻擊向量。CudaHashcat 在攻擊中使用左右掩碼。密碼的字元按照掩碼劃分,並且被均分為左和右掩碼。對於每個掩碼,你可以為其指定字典或字符集。出於我們的目的,我們會使用定製的字符集。
-
為了指定自定義字符集,我們使用
–1
選項。我們可以設定任意多的自定義字符集,只要為它們指定一個數值(1-n
)。每個自定義字元都由問號(?
)來表示,並且隨後是字元型別。可用的選擇是:d
指定數字(0~9)l
指定小寫字母u
指定大寫字母s
指定特殊字元1-n
指定用做佔位符的自定義字符集。
-
這樣將它們組合起來,我們就指定了一個自定義字符集,它包括特殊字元(
s
),大寫字母(u
),小寫字母(l
)和數字(d
),生成長度為 8 的密碼。我們打算指定叫做attackfile
的雜湊表。./cudaHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1
- 1
-
我們可以將這個命令這樣拆分:
-
./cudaHashcat-plus.bin
呼叫了 CudaHashcat 。 -
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。
-
開啟終端視窗並將目錄改為 OclHashcat-plus 所在目錄。
cd /usr/share/oclhashcat-plus
- 1
-
執行下列命令來啟動 OclHashcat-plus 的幫助檔案:
./oclHashcat-plus.bin –help
- 1
-
執行 OclHashcat 的語法是
oclHashcat-plus.bin [options] hash [mask]
。使用 OclHashcat 的重點之一是理解它的字符集結構。
-
在我們開始攻擊之前,讓我們先看看一些可用的攻擊向量。OclHashcat 在攻擊中使用左右掩碼。密碼的字元按照掩碼劃分,並且被均分為左和右掩碼。對於每個掩碼,你可以為其指定字典或字符集。出於我們的目的,我們會使用定製的字符集。
-
為了指定自定義字符集,我們使用
–1
選項。我們可以設定任意多的自定義字符集,只要為它們指定一個數值(1-n
)。每個自定義字元都由問號(?
)來表示,並且隨後是字元型別。可用的選擇是:d
指定數字(0~9)l
指定小寫字母u
指定大寫字母s
指定特殊字元1-n
指定用做佔位符的自定義字符集。
-
這樣將它們組合起來,我們就指定了一個自定義字符集,它包括特殊字元(
s
),大寫字母(u
),小寫字母(l
)和數字(d
),生成長度為 8 的密碼。我們打算指定叫做attackfile
的雜湊表。./oclHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1
- 1
-
我們可以將這個命令這樣拆分:
-
./oclHashcat-plus.bin
呼叫了 OclHashcat 。 -
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
允許你修改我們嘗試繞過登入的使用者。 -
-s
允許你設定展示統計資訊的秒數間隔。預設值為 3 秒。 -
-a
允許你設定是否使用 ANSI 轉義程式碼。 -
-w
允許你設定工作執行緒的數量。由於 SUCrack 是多執行緒的,你可以執行任意多的執行緒。我們推薦你只使用一個執行緒,因為每次失敗的登入嘗試在嘗試下個密碼之前通常有三秒的延遲。
操作步驟
-
為了使用 SUCrack,你需要在啟動時指定單詞列表。否則,你會得到一條搞笑的資訊。開啟終端視窗並執行
sucrack
命令。出於我們的目的,我們會使用之前建立的自定義單詞列表檔案,它由 Crunch 生成。但是,你可以指定任何希望的單詞列表。sucrack /usr/share/wordlists/rockyou.txt
- 1
-
如果你打算設定兩個工作執行緒,以及每 6 秒顯示一次統計資訊,並且使用 ANSI 轉義程式碼,你可以使用下列命令:
sucrack –w 2 –s 6 –a /usr/share/wordlists/rockyou.txt
- 1
這就結束了。
工作原理
這個祕籍中,我們使用 SUCrack 來對系統的 root 使用者執行物理訪問密碼攻擊。使用單詞列表的攻擊可以對管理員(預設)或特定使用者指定。我們執行sucrack
命令,它為我們執行攻擊。