Kali Linux 秘籍 第八章 密碼攻擊

第八章 密碼攻擊

作者: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 和更多的協議。需要注意的是,由于這種攻擊可能會產生噪聲,這會增加你被偵測到的可能。

準備

需要內部網絡或互聯網的鏈接,也需要一臺用作受害者的計算機。

操作步驟

讓我們開始破解在線密碼。

  1. 在開始菜單中,選擇Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk。

  2. 既然我們已經把 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

    你可以使用的快捷方式是,點擊單詞列表框來打開文件系統窗口。

  3. 下面,我們要做一些調整。在Performance Options(執行選項)下面,我們將任務數量從 16 設置為 2。原因是我們不打算讓這么多進程運行,這樣會使服務器崩潰。雖然它是可選的,我們也希望選擇Exit after first found pair(在首次發現匹配之后退出)選項。

  4. 最后,我們要設置我們的目標。點擊Target(目標)標簽頁并設置我們的目標和協議。這里,我們使用 Metasploitable 主機(192.168.10.111)的 MySQL 端口。

  5. 最后我們點擊Start(開始)標簽頁的Start按鈕來啟動攻擊。

工作原理

這個秘籍中,我們使用 Hydra 來對目標執行字典攻擊。Hydra 允許我們指定目標,并且使用用戶名和密碼列表。它會通過使用來自兩個列表的不同用戶名和密碼組合來爆破密碼。

8.2 破解 HTTP 密碼

這個秘籍中,我們將要使用 Hydra 密碼破解器來破解 HTTP 密碼。網站和 Web 應用的訪問通常由用戶名和密碼組合來控制。就像任何密碼類型那樣,用戶通常會輸入弱密碼。

準備

需要內部網絡或互聯網的鏈接,也需要一臺用作受害者的計算機。

操作步驟

讓我們開始破解 HTTP 密碼。

  1. 在開始菜單中,選擇Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk

  2. 既然我們已經把 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

    你可以使用的快捷方式是,點擊單詞列表框來打開文件系統窗口。

  3. 下面,我們要做一些調整。在Performance Options(執行選項)下面,我們將任務數量從 16 設置為 2。原因是我們不打算讓這么多進程運行,這樣會使服務器崩潰。雖然它是可選的,我們也希望選擇Exit after first found pair(在首次發現匹配之后退出)選項。

  4. 最后,我們要設置我們的目標。點擊Target(目標)標簽頁并設置我們的目標和協議。這里,我們使用 Metasploitable 主機(192.168.10.111)的 HTTP 端口。

  5. 最后我們點擊Start(開始)標簽頁的Start按鈕來啟動攻擊。

8.3 獲得路由訪問

這個秘籍中,我們會使用 Medusa 來進行爆破攻擊。

當今,我們處于網絡社會之中。隨著聯網視頻游戲系統的誕生,多數家庭擁有數臺計算機,并且小型業務以創紀錄的趨勢增長。路由器也成為了網絡連接的基石。然而,富有經驗的網絡管理員的數量并沒有增長,以保護這些路由器,使得許多這種路由器易于被攻擊。

準備

需要連接到互聯網或內部網絡的計算機。也需要可用的路由器。

操作步驟

  1. 在開始菜單中,訪問Applications | Kali Linux | Password Attacks | Online Attacks | medusa。當 Medusa 啟動后,它會加載help(幫助)文件。

  2. 我們現在已選定的選項來云頂 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
    
    • -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允許我們在成功找到用戶名密碼組合之后停止爆破。

  3. 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 來進行密碼分析。

  1. 我們以配置 Ettercap 來開始這個秘籍。首先,我們找到它的配置文件并用 VIM 編輯它。

    locate etter.conf 
    vi /etc/etterconf
    

    要注意,你的位置可能不同。

  2. ec_uidec_gid改為0。

  3. 下面我們需要取消下面的 IPTABLES 行的注釋。它在靠近文件末尾的LINUX一節。

  4. 現在,我們將要啟動 Ettercap。使用-G選項,加載圖形化界面(GUI)。

  5. 我們開啟統一嗅探。你可以按下Shift + U或者訪問菜單欄中的Sniff | Unified sniffing...。

  6. 選擇網絡接口。

  7. 下面,我們開始Scan for hosts(掃描主機),這可以通過按下Ctrl + S或訪問菜單欄的Hosts | Scan for hosts來完成。

  8. 現在我們能夠讓 Ettercap 開始嗅探了。你可以按下Ctrl + W或訪問菜單欄的Start | Start Sniffing(開始嗅探)。

  9. 最后,我們開始進行 ARP 毒化。訪問菜單欄的Mitm | Arp poisoning(ARP 毒化)。

  10. 在出現的窗口中,選中Sniff remote connections(嗅探遠程連接)的選項。

  11. 取決于網絡情況,我們會看到信息。

  12. 一旦我們找到了我們想找的信息(用戶名和密碼)。我們會關閉 Ettercap。你可以按下Ctrl + E或者訪問菜單欄的Start | Stop sniffing(停止嗅探)來完成。

  13. 現在我們需要關閉 ARP 毒化來使網絡恢復正常。

工作原理

這個秘籍中,我們使用 Ettercap 來毒化網絡并偷取網絡上的用戶名和密碼。我們以尋找和修改 Ettercap 的配置文件來開始。之后我們啟動了 Ettercap 并使用 ARP 毒化執行中間人(MITM)攻擊。由于流量被重定向到我們的主機,當用戶名和密碼在網絡上傳播時,我們就能夠看到它們。

更多

我們也可以使用 Metasploit 來分析用戶名和面。我們會通過使用搜索郵件收集器模塊來執行它。

  1. 打開終端窗口并啟動 MSFCONSOLE:

    msfconsole
    
  2. 搜索郵件收集器;

    search email collector
    
  3. 鍵入下列命令來使用搜索郵件收集器模塊:

    use auxiliary/gather/search_email_collector 
    
  4. 展示該模塊可用的選項:

    show options
    
  5. 下面我們設置域名。如果不想被有關部門查水表的話,請小心選擇域名。

  6. 將域名設為你希望的域名:

    set domain  gmail.com
    
  7. 設置輸入文件。這并不是必需的。如果你打算運行多個攻擊,或打算稍后也能運行某個攻擊,推薦設置它。

    set outfile /root/Desktop/fromwillie.txt
    
  8. 最后,我們開始攻擊。

    run
    

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。

  1. 看看你想掛載哪個硬盤:

    Fdisk -l
    
  2. 掛載該硬盤,并將target設為它的掛載點。

    mount /dev/sda1 /target/ 
    
  3. 將目錄改為 Windows SAM 文件的位置:

    cd /target/windows/system32/config 
    
  4. 列出目錄中所有內容。

    ls –al
    
  5. 使用 SamDump2 來提取哈希,并將文件放到你的 root 用戶目錄中的一個叫做hashes的文件夾中。

    samdump2 system SAM > /root/hashes/hash.txt
    
  6. 將目錄改為 John the Ripper 所在目錄。

  7. 運行 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。

  1. 打開終端窗口,并輸入crunch命令來查看 Crunch 的幫助文件。

    crunch
    
  2. 使用 Crunch 生成密碼的基本語法是,[minimum length] [maximum length] [character set] [options]

  3. Crunch 擁有幾種備選選項。一些常用的如下:

    • -o:這個選項允許你指定輸出列表的文件名稱和位置、

    • -b:這個選項允許你指定每個文件的最大字節數。大小可以以 KB/MB/GB 來指定,并且必須和-o START觸發器一起使用。

    • -t:這個選項允許你指定所使用的模式。

    • -l:在使用-t選項時,這個選項允許你將一些字符標識為占位符(@,%,^)。

  4. 下面我們執行命令來在桌面上創建密碼列表,它最少 8 個字母,最大 10 個字符,并且使用字符集ABCDEFGabcdefg0123456789

    crunch 8 10 ABCDEFGabcdefg0123456789 –o /root/Desktop/ generatedCrunch.txt
    
  5. 一旦生成了文件,我們使用 Nano 來打開文件:

    nano /root/Desktop/generatedCrunch.txt
    

工作原理

這個秘籍中我們使用了 Crunch 來生成密碼字典列表。

8.7 使用彩虹表

這個秘籍中我們會學到如何在 Kali 中使用彩虹表。彩虹表是特殊字典表,它使用哈希值代替了標準的字典密碼來完成攻擊。出于演示目的,我們使用 RainbowCrack 來生成彩虹表。

操作步驟

  1. 打開終端窗口并將目錄改為rtgen的目錄:

    cd /usr/share/rainbowcrack/
    
  2. 下面我們要啟動rtgen來生成基于 MD5 的彩虹表。

    ./rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0
    
  3. 一旦彩虹表生成完畢,你的目錄會包含.rt文件。這取決于用于生成哈希的處理器數量,大約需要 2~7 個小時。

  4. 為了開始破解密碼,我們使用rtsort程序對彩虹表排序,使其更加易于使用。

工作原理

這個秘籍中,我們使用了 RainbowCrack 攻擊來生成、排序和破解 MD5 密碼。RainbowCrack 能夠使用彩虹表破解哈希,基于一些預先準備的哈希值。我們以使用小寫字母值生成 MD5 彩虹表來開始。在秘籍的末尾,我們成功創建了彩虹表,并使用它來破解哈希文件。

8.8 使用英偉達統一計算設備架構(CUDA)

這個秘籍中,我們會使用英偉達統一計算設備架構(CUDA)來破解密碼哈希。CUDA 是一個并行計算平臺,它通過利用 GPU 的能力來提升計算性能。隨著時間的流逝,GPU 的處理能力有了戲劇性的提升,這讓我們能夠將它用于計算目的。出于演示目的,我們使用 CudaHashcat-plus 來破解密碼。

準備

需要 CUDA 所支持的顯卡來完成這個秘籍。

操作步驟

  1. 打開終端窗口并將目錄改為 OclHashcat-plus 所在目錄。

    cd /usr/share/oclhashcat-plus
    
  2. 執行下列命令來啟動 CudaHashcat-plus 的幫助文件:

    ./cudaHashcat-plus.bin –help 
    
  3. 運行 CudaHashcat 的語法是cudaHashcat-plus.bin [options] hash [mask]

    使用 OclHashcat 的重點之一是理解它的字符集結構。

  4. 在我們開始攻擊之前,讓我們先看看一些可用的攻擊向量。CudaHashcat 在攻擊中使用左右掩碼。密碼的字符按照掩碼劃分,并且被均分為左和右掩碼。對于每個掩碼,你可以為其指定字典或字符集。出于我們的目的,我們會使用定制的字符集。

  5. 為了指定自定義字符集,我們使用–1選項。我們可以設置任意多的自定義字符集,只要為它們指定一個數值(1-n)。每個自定義字符都由問號(?)來表示,并且隨后是字符類型??捎玫倪x擇是:

    • d指定數字(0~9)
    • l指定小寫字母
    • u指定大寫字母
    • s指定特殊字符
    • 1-n指定用做占位符的自定義字符集。
  6. 這樣將它們組合起來,我們就指定了一個自定義字符集,它包括特殊字符(s),大寫字母(u),小寫字母(l)和數字(d),生成長度為 8 的密碼。我們打算指定叫做attackfile的哈希表。

    ./cudaHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1
    
  7. 我們可以將這個命令這樣拆分:

    • ./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。

  1. 打開終端窗口并將目錄改為 OclHashcat-plus 所在目錄。

    cd /usr/share/oclhashcat-plus
    
  2. 執行下列命令來啟動 OclHashcat-plus 的幫助文件:

    ./oclHashcat-plus.bin –help 
    
  3. 運行 OclHashcat 的語法是oclHashcat-plus.bin [options] hash [mask]。

    使用 OclHashcat 的重點之一是理解它的字符集結構。

  4. 在我們開始攻擊之前,讓我們先看看一些可用的攻擊向量。OclHashcat 在攻擊中使用左右掩碼。密碼的字符按照掩碼劃分,并且被均分為左和右掩碼。對于每個掩碼,你可以為其指定字典或字符集。出于我們的目的,我們會使用定制的字符集。

  5. 為了指定自定義字符集,我們使用–1選項。我們可以設置任意多的自定義字符集,只要為它們指定一個數值(1-n)。每個自定義字符都由問號(?)來表示,并且隨后是字符類型??捎玫倪x擇是:

    • d指定數字(0~9)
    • l指定小寫字母
    • u指定大寫字母
    • s指定特殊字符
    • 1-n指定用做占位符的自定義字符集。
  6. 這樣將它們組合起來,我們就指定了一個自定義字符集,它包括特殊字符(s),大寫字母(u),小寫字母(l)和數字(d),生成長度為 8 的密碼。我們打算指定叫做attackfile的哈希表。

    ./oclHashcat-plus.bin attackfile -1 ?l?u?d?s ?1?1?1?1 ?1?1?1?1
    
  7. 我們可以將這個命令這樣拆分:

    • ./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 是多線程的,你可以運行任意多的線程。我們推薦你只使用一個線程,因為每次失敗的登錄嘗試在嘗試下個密碼之前通常有三秒的延遲。

操作步驟

  1. 為了使用 SUCrack,你需要在啟動時指定單詞列表。否則,你會得到一條搞笑的信息。打開終端窗口并執行sucrack命令。出于我們的目的,我們會使用之前創建的自定義單詞列表文件,它由 Crunch 生成。但是,你可以指定任何希望的單詞列表。

    sucrack /usr/share/wordlists/rockyou.txt
    
  2. 如果你打算設置兩個工作線程,以及每 6 秒顯示一次統計信息,并且使用 ANSI 轉義代碼,你可以使用下列命令:

    sucrack –w 2 –s 6 –a /usr/share/wordlists/rockyou.txt 
    

    這就結束了。

工作原理

這個秘籍中,我們使用 SUCrack 來對系統的 root 用戶執行物理訪問密碼攻擊。使用單詞列表的攻擊可以對管理員(默認)或特定用戶指定。我們運行sucrack命令,它為我們執行攻擊。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容