日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈暴力破解

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈暴力破解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x01 原理

? 暴力破解(brute force),又名暴力攻擊、暴力猜解,從數學和邏輯學的角度,它屬于窮舉法在現實場景的運用。當密碼未知或獲得密碼哈希時,攻擊者會使用暴力破解來試圖登錄帳戶,即通過利用大量猜測和窮舉的方式來嘗試獲取用戶口令的攻擊方式。在ATT&CK中暴力破解有如下四種子技術。

  • Password Guessing(密碼猜測)

    事先不了解系統和環境,攻擊者會猜測密碼以嘗試登錄帳戶。在不了解帳戶密碼的情況下,攻擊者可能會在操作過程中通過使用常用密碼字典來猜測登錄密碼,而無須事先了解系統或環境密碼。

  • Password Cracking(密碼破解)

    當獲得憑證材料(例如密碼哈希)時,攻擊者可能會解密密碼來嘗試恢復可用的憑據,例如純文本密碼。

  • Password Spraying(密碼噴灑)

    使用多個密碼來暴力破解一個賬號可能會導致該賬號被鎖定,攻擊者可能會針對許多不同帳戶使用單個或少量的常用密碼列表,以嘗試獲取有效帳戶憑據。

    密碼噴灑常常針對如下服務:

    • SSH (22/TCP)

    • Telnet (23/TCP)

    • FTP (21/TCP)

    • NetBIOS/SMB /Samba (139/TCP & 445/TCP)

    • LDAP (389/TCP)

    • Kerberos (88/TCP)

    • RDP/終端服務 (3389/TCP)

    • HTTP/HTTP管理服務 (80/TCP & 443/TCP)

    • MSSQL (1433/TCP)

    • Oracle (1521/TCP)

    • MySQL (3306/TCP)

    • VNC (5900/TCP)

  • Credential Stuffing(撞庫)

    攻擊者可以使用受害者歷史上泄露的數據獲得憑據,通過憑據重疊來訪問目標帳戶。

  • 0x02 實驗

    1.密碼猜測

    Login.html

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Login</title> </head> <body><h1>隨便登錄</h1><form action="checkLogin.php" method="post">Username: <input type="text" name="username"/>Password: <input type="password" name="password"/><input type="submit" value="Submit"></form> </body> </html>

    checkLogin.php

    <?php $username=$_POST['username']; $password=$_POST['password']; if($username=="root" && $password=='root'){echo "Success!"; }else{echo "Fail!"; } ?>

    以上代碼為一個簡單的表單提交到后臺,判斷賬號,密碼都為root則登陸成功。

    接下來burpsuite抓包使用Intruder模塊進行爆破,通過對比數據包的長度可以很好的判斷是否爆破成功,因為爆破成功和失敗的長度是不一樣的。

    在數據包中選定欲爆破的參數

    設置爆破的字典

    根據響應的數據包的長度可以判斷出正確的賬號、密碼。

    PS:進階技巧

    (1)默認憑證

    在對某一服務進行暴力破解之前,我們首先應該嘗試該服務的默認口令,這樣也許可以節約大量的時間和工作量。通過搜索引擎等方式可以獲取到不同服務的默認口令,以下是一些默認口令的合集。

    • http://www.vulnerabilityassessment.co.uk/passwordsC.htm‘
    • https://192-168-1-1ip.mobi/default-router-passwords-list/
    • https://datarecovery.com/rd/default-passwords/
    • https://bizuns.com/default-passwords-list
    • https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/default-passwords.csv
    • https://www.cirt.net/passwords
    • https://www.passwordsdatabase.com/

    通過對這些默認口令的分析不難發現,很多都是以admin、root、administrator、password等字樣出現,而如果不更改掉默認口令,攻擊者往往就能以此輕松突破。

    (2)好用的字典

    爆破的字典選什么是一個技巧,并非越全越好,這里整理了一些好用的字典倉庫(感謝眾大佬的分享),僅供參考。

    • https://github.com/Dormidera/WordList-Compendium
    • https://github.com/danielmiessler/SecLists
    • https://github.com/3had0w/Fuzzing-Dicts

    (3)自定義字典

    如果前期已經通過社工等方式搜集到目標有關信息,也許根據目標生成的專屬字典能增加破解效率。

    使用到的工具:pydictor—— 一個強大實用的黑客暴力破解字典建立工具

    詳細使用方法可以參考其用法示例

    2.密碼破解

    在通過一定方式獲得密碼哈希后,進一步要做的就是將其破解了。

    何為hash?Hash 一般翻譯為“散列”,也可直接音譯為“哈希”的。這個加密函數對一個任意長度的字符串數據進行一次加密函數運算,然后返回一個固定長度的字符串。Hash 主要用于信息安全領域中加密算法,滲透測試中獲取目標系統的明文或 Hash 往往是整個滲透測試過程中重要的一環。

    Window Hash

    在 Windows 系統中本機用戶的密碼 Hash 是放在本地的 SAM(Security Account Manager) 文件里面,域內用戶的密碼 Hash是存在域控的 NTDS.DIT 文件里面。

    分類

  • LM

    LAN Manager(LM)哈希是 Windows 系統所用的第一種密碼哈希算法,是一種較古老的 Hash,在 LAN Manager協議中使用,非常容易通過暴力破解獲取明文憑據。它只有唯一一個版本且一直用到了 NT LAN Manager(NTLM)哈希的出現,在 Windows Vista/Windows 7/Windows Server 2008 以及后面的系統中,LM哈希算法是默認關閉的,LM 算法是在 DES 基礎上實現的,不區分字母大小寫。

  • NTLM

    NT LAN Manager(NTLM)哈希是Windows系統認可的另一種算法,用于替代古老的 LM-Hash,一般指 Windows 系統下 Security Account Manager(SAM)中保存的用戶密碼 Hash,在 Windows Vista/Windows 7/Windows Server 2008 以及后面的系統中,NTLM 哈希算法是默認啟用的。

  • 獲取

    Hash的獲取可以使用mimikatz工具

    項目地址:https://github.com/gentilkiwi/mimikatz

    下圖為使用mimikatz獲取win10用戶的密碼Hash

    Hashcat 破解

    在拿到 LM 或者 NTLM 的密文時,如果沒有明文的時候,最直接的方法當然是直接將其解密啦,這里使用Hashcat來進行密碼解密。

    如上圖我們通過msf獲取到目標主機的hash

    LM:44efce164ab921caaad3b435b51404ee

    NTLM:32ed87bdb5fdc5e9cba88547376818d4

    SHA1:6ed5833cf35286ebf8662b7b5949f0d742bbec3f

    實際明文為:123456

    Hashcat破解過程如下:

    hashcat -a 0 -m 1000 --force 32ed87bdb5fdc5e9cba88547376818d4 password.txt

    -a 0 字典破解

    hashcat –-help 可以看到 LM 和 NTLM 對應的 hash 編號分別為3000和1000

    在線Hash破解

    https://www.cmd5.com/

    https://www.objectif-securite.ch/ophcrack

    Linux Hash

    建立一個test用戶進行測試,密碼test

    useradd -m test passwd test

    Linux 密碼信息保存在兩個文件中,分別為: /etc/passwd 和 /etc/shadow

    /etc/passwd

    普通用戶權限能夠查看

    保存用戶信息,每一行代表一個用戶,每一行通過冒號:分為七個部分

  • 用戶名
  • 密碼,x 表示密碼保存在 /etc/shadow
  • UID,0 代表 root
  • GID,表示所在組
  • 描述信息,依次為 Full Name、Room Number、Work Phone、Home Phone 和 Other
  • 用戶主目錄
  • 默認 shell 類型
  • # tail -n 1 /etc/passwd test:x:1001:1001::/home/test:/bin/sh

    /etc/shadow

    只有 root 用戶權限能夠查看

    保存加密后的密碼和用戶的相關密碼信息,每一行代表一個用戶,每一行通過冒號:分為九個部分

  • 用戶名
  • 加密后的密碼
  • 上次修改密碼的時間 (從 1970.1.1 開始的總天數)
  • 兩次修改密碼間隔的最少天數,如果為 0,則沒有限制
  • 兩次修改密碼間隔最多的天數, 表示該用戶的密碼會在多少天后過期,如果為 99999 則沒有限制
  • 提前多少天警告用戶密碼將過期
  • 在密碼過期之后多少天禁用此用戶
  • 用戶過期日期 (從 1970.1.1 開始的總天數),如果為 0,則該用戶永久可用
  • 保留
  • # tail -n 1 /etc/shadow test:$6$7uNh9hzdvpT3BRuB$ndF3AH.faJPvlgA.d57JOmFTLeQEuzgVFc.sYfI5VZDkOC6D78x9at.d8eTqRuTJsqjd6uboKmmYp75wbqE1e/:18825:0:99999:7:::

    注意:

    • 密碼字符串為*,表示系統用戶不能被登入
    • 密碼字符串為!,表示用戶名被禁用,可以在機器上轉到該用戶,但無法遠程登錄
    • 密碼字符串為空,則表示沒有密碼

    密文由三部分組成:$id$salt$encrypted,id表示加密算法,salt 表示密碼學中的 Salt, 系統隨機生成 encrypted 表示密碼的 hash

    • DES和明文開頭無標記
    • id為1時,采用md5進行加密;
    • id為5時,采用SHA256進行加密;
    • id為6時,采用SHA512進行加密。

    破解Hash

    方式一:John the Ripper

    這里使用kali自帶的John工具進行破解

    使用字典破解

    john --wordlist=/usr/share/john/password.lst /etc/shadow

    或直接暴力破解

    john /etc/shadow

    結果如下:

    方式二:Hashcat

    hashcat -m 1800 -o found1.txt /etc/shadow /usr/share/john/password.lst

    參數說明:

    -m 1800:hash-type,1800對應SHA512

    -o found1.txt:破解結果輸出到found1.txt中

    /etc/shadow:含要破解密文的文件

    /usr/share/john/password.lst:字典文件

    結果如圖:

    3.密碼噴灑

    Mysql爆破

    使用工具–Kali-Hydra

    hydra 192.168.100.250 -l wyw -P password.txt mysql -V #hydra IP地址 -l 單個賬戶名 -P 字典路徑 服務名 -V

    使用工具–Kali-Metasploit

    ①:use auxiliary/scanner/mysql/mysql_login ②:show options③:set RHOSTS IP地址④:set USERNAME 單個賬戶⑤:set PASS_FILE 字典路徑地址⑥:set RPORT 端口號⑦:run

    遇到的坑:

  • 3306端口需對外開放

  • mysql用戶允許遠程連接數據庫

    grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
  • 若出現如下錯誤,需修改mysql字符集

  • 修改my.ini

    character-set-server=utf8

    類似的,FTP、SSH、Tomcat等也可以利用此工具爆破。

    • FTP

    msf

    use auxiliary/scanner/ftp/ftp_login

    Hydra

    hydra 192.168.146.141 -l admin -P /top1500.txt ftp -V
    • SSH

    msf

    use auxiliary/scanner/ssh/ssh_login

    Hydra

    hydra 192.168.146.141 -l root -P /top1500.txt ssh -V
    • Tomcat

    msf

    use auxiliary/scanner/http/tomcat_mgr_login

    0x03 其他場景

    前面描述了針對登錄用戶和密碼的暴力破解,暴力破解是否還可以用在其他場景呢?答案是肯定的,因為涉及人機交互的內容本質還是一個題目驗證場景,在以下這些場景中,也有可能遭遇到暴力破解攻擊。

    圖形驗證碼–同樣的使用窮舉方法,假設Web應用的登錄驗證碼的范圍是一個可衡量的值,攻擊者可以使用工具將所有的驗證碼問題請求及結果保存為合集,并在后續的破解過程中調用這個結果合集;

    短信/郵箱驗證碼–針對四到六位純數字的短信或郵箱驗證碼,也可以用暴力破解的方法進行猜解攻擊嘗試;

    關鍵參數–針對應用中的關鍵參數的,亦可以用窮舉法進行遍歷,當存在權限控制不當時,這種遍歷方法還能批量獲取敏感信息。如枚舉訂單號后并提交訂單查詢,在權限控制不當的Web應用中,這會導致批量的用戶訂單信息泄露。

    0x04 防御方法

    針對暴力破解攻擊,應用的安全設計要多方考量,從每一個可能的受攻擊面出發,結合逆向的邏輯思路,建立合理的防御機制。常見的防御措施如下。

    1)用戶名或密碼輸入錯誤時統一返回“登錄錯誤,請重試”提示信息

    2)在用戶登錄時增加驗證碼,防止通過程序自動枚舉賬戶

    3)驗證碼應具有足夠的隨機性和干擾性,考慮邏輯和交互式驗證碼

    4)確保所有類型的驗證碼能夠用后即失效,防范可被重用

    5)在用戶登錄中增加對同一IP地址嘗試次數的限制

    6)系統自身安全性增強:強制要求用戶注冊時滿足口令復雜度要求

    7)定期對比數據庫存儲的密碼密文值與top500弱密碼的密文值

    參考資料

    [1] 暴力破解

    [2] Windows 用戶密碼的加密方法與破解

    [3] web滲透—暴力破解

    [4] 【技術工場】淺談暴力破解攻擊

    [5] 暴力破解方法匯總——遠程服務爆破篇

    [6] Linux 下的密碼 Hash破解方法

    總結

    以上是生活随笔為你收集整理的浅谈暴力破解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。