天天看點

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

    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  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

    (在首次發現比對之後退出)選項。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  4. 最後,我們要設定我們的目标。點選

    Target

    (目标)标簽頁并設定我們的目标和協定。這裡,我們使用 Metasploitable 主機(

    192.168.10.111

    )的 MySQL 端口。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  5. 最後我們點選

    Start

    (開始)标簽頁的

    Start

    按鈕來啟動攻擊。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊

工作原理

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

8.2 破解 HTTP 密碼

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

讓我們開始破解 HTTP 密碼。

  1. Applications | Kali Linux | Password Attacks | Online Attacks | hydra-gtk

  2. 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 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  3. Performance Options

    Exit after first found pair

  4. Target

    192.168.10.111

    )的 HTTP 端口。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  5. Start

    Start

8.3 獲得路由通路

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

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

需要連接配接到網際網路或内部網絡的計算機。也需要可用的路由器。

  1. 在開始菜單中,通路

    Applications | Kali Linux | Password Attacks | Online Attacks | medusa

    。當 Medusa 啟動後,它會加載

    help

    (幫助)檔案。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  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_uid

    ec_gid

    改為
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  3. 下面我們需要取消下面的 IPTABLES 行的注釋。它在靠近檔案末尾的

    LINUX

    一節。
  4. 現在,我們将要啟動 Ettercap。使用

    -G

    選項,加載圖形化界面(GUI)。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  5. 我們開啟統一嗅探。你可以按下

    Shift + U

    或者通路菜單欄中的

    Sniff | Unified sniffing...

    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  6. 選擇網絡接口。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  7. 下面,我們開始

    Scan for hosts

    (掃描主機),這可以通過按下

    Ctrl + S

    或通路菜單欄的

    Hosts | Scan for hosts

    來完成。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  8. 現在我們能夠讓 Ettercap 開始嗅探了。你可以按下

    Ctrl + W

    Start | Start Sniffing

    (開始嗅探)。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  9. 最後,我們開始進行 ARP 毒化。通路菜單欄的

    Mitm | Arp poisoning

    (ARP 毒化)。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  10. 在出現的視窗中,選中

    Sniff remote connections

    (嗅探遠端連接配接)的選項。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  11. 取決于網絡情況,我們會看到資訊。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  12. 一旦我們找到了我們想找的資訊(使用者名和密碼)。我們會關閉 Ettercap。你可以按下

    Ctrl + E

    或者通路菜單欄的

    Start | Stop sniffing

    (停止嗅探)來完成。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  13. 現在我們需要關閉 ARP 毒化來使網絡恢複正常。
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊

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

我們也可以使用 Metasploit 來分析使用者名和面。我們會通過使用搜尋郵件收集器子產品來執行它。

  1. 打開終端視窗并啟動 MSFCONSOLE:
    msfconsole           
  2. 搜尋郵件收集器;
    search email collector           
  3. 鍵入下列指令來使用搜尋郵件收集器子產品:
    use auxiliary/gather/search_email_collector            
  4. 展示該子產品可用的選項:
    show options           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  5. 下面我們設定域名。如果不想被有關部門查水表的話,請小心選擇域名。
  6. 将域名設為你希望的域名:
    set domain  gmail.com           
  7. 設定輸入檔案。這并不是必需的。如果你打算運作多個攻擊,或打算稍後也能運作某個攻擊,推薦設定它。
    set outfile /root/Desktop/fromwillie.txt           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  8. 最後,我們開始攻擊。
    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。

  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           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  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           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  5. 一旦生成了檔案,我們使用 Nano 來打開檔案:
    nano /root/Desktop/generatedCrunch.txt           

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

8.7 使用彩虹表

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

  1. 打開終端視窗并将目錄改為

    rtgen

    的目錄:
    cd /usr/share/rainbowcrack/           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  2. 下面我們要啟動

    rtgen

    來生成基于 MD5 的彩虹表。
    ./rtgen md5 loweralpha-numeric 1 5 0 3800 33554432 0           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  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

    )。每個自定義字元都由問号(

    ?

    )來表示,并且随後是字元類型。可用的選擇是:
    • 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. cd /usr/share/oclhashcat-plus           
    Kali Linux 秘籍 第八章 密碼攻擊第八章 密碼攻擊
  2. 執行下列指令來啟動 OclHashcat-plus 的幫助檔案:
    ./oclHashcat-plus.bin –help            
  3. 運作 OclHashcat 的文法是

    oclHashcat-plus.bin [options] hash [mask]

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

    1-n

    ?

    • d

    • l

    • u

    • s

    • 1-n

  6. s

    u

    l

    d

    attackfile

    ./oclHashcat-plus.bin attackfile -1 ?l?u?d?s ?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 是多線程的,你可以運作任意多的線程。我們推薦你隻使用一個線程,因為每次失敗的登入嘗試在嘗試下個密碼之前通常有三秒的延遲。

  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

指令,它為我們執行攻擊。

繼續閱讀