密碼存盤的基本方法
- 明文存盤:將用戶密鑰以普通文本的方式保存在資料庫欄位中,對用戶來說很方便,但這種方法的安全性最低,因為所有的密鑰保存為普通文本(明文),如果資料庫受到黑客攻擊(被"脫庫”),黑客將很容易獲得用戶的密鑰,
- 加密存盤: -般常用的是對稱加密方法,該方法使用系統密鑰對所有用戶密鑰進行加密,這種方法的關鍵在于系統密鑰的安全性,如果系統密鑰泄露,所有用戶的密鑰將變得不安全,
- Hash存盤:利用單項散列(雜湊)函式對用戶密鑰進行運算得到Hash值(指紋)并存盤在資料庫中,與第二種方法相比,這種方法的好處是不需要存盤和保護系統密鑰,且攻擊者無法通過Hash值逆向計算出用戶密鑰的明文,
因此,目前最常用的密碼存盤方法為Hash存盤
Hash函式H(x)的特性
- 固定長度的輸出:函式H(x)的輸入可以是任意長度,而輸出是固定長度,
- 單向性:已知x,求h=H(x)較為容易;但若已知h,求使得H(x)= h的x在計算上是不可行的,
- 弱碰撞自由性:已知x,找出y (y≠x)使得H(y)= H(x)在計算上是不可行的,
- 強碰撞自由性:找出任意兩個不同的輸入x、y,使得H(y)= H(x)在計算.上是不可行的,
常用的Hash函式(演算法)
- MD5
- SHA系列(主要包括SHA-1、SHA-224、 SHA-256、 SHA-384和SHA-512)
密碼攻擊的概念
在已經獲取目標密鑰Hash值或加密后的密文的情形下,利用某種方式還原出目標密鑰的明文程序,
密碼攻擊的一般方法
1、暴力攻擊(Brute Force Attack)
- 嘗試對所有可能的密鑰組合進行相同的Hash運算,并將計算結果與目標密鑰的Hash值進行比對,比對結果一致則破解成功,
- 特點:時間成本高,
2、字典攻擊(Dictionary Attack)
- 提前構建一一個“明文->密文”對應關系的一個大型資料庫(字典),破解時通過密文直接反查明文,
- 特點:存盤一個這樣的資料庫(字典),空間成本高,
3、彩虹表攻擊(Rainbow Table Attack)
- 特點:在字典法的基礎上改進,以時間換空間,
- 常用的彩虹表: http://project-rainbowcrack.com/table.htm
用于抵抗字典及彩虹表攻擊的方法一一哈希加鹽法 (HASH+SALT)
- 字典和彩虹表的方式之所以有效,是因為每一個密鑰的都是通過同樣的方式來進行Hash運算的,如果兩個用戶使用同樣的密鑰,那么他們的密鑰Hash值也一定相同,
- 哈希加鹽法的思想是:每次給密鑰加一個隨機的前綴或后綴,然后再進行Hash運算,這個隨機的后綴或者前綴稱為“鹽”(salt) ,通過加鹽,相同的密鑰每次Hash的結果都是完全不一樣的字串,

Hashcat簡介
- Hashcat適用于Linux、OS X和Windows等作業系統,支持多種計算核心(包括CPU、GPU、APU、DSP、 FPGA等),
- Hashcat支持的散列演算法有Microsoft LM哈希、MD4、MD5、 SHA系列、Unix加密格式、MySQL和Cisco PIX等,
在Kali中啟動Hashcat

Hashcat常用引數
| 命令 | 功能 |
|---|---|
| -a | 指定破解模式 |
| -m | 指定Hash型別(默認MD5) |
| -0 | 將輸出結果儲存到指定的檔案 |
| --force | 忽略警告資訊 |
| --show | 僅顯示已經破解的Hash及其對應的明文 |
| --increment | 啟用增量破解模式,可以利用此模式讓Hashcat在指定的密 碼長度范圍內執行破解程序 |
| --increment-min | 密碼最小長度, 配合increment模式一起使用 |
| --increment-max | 密碼最大長度,同上 |
| --outfile-format | 指定破解結果的輸出格式id,默認是3 |
| --username | 忽略hash檔案中的指定的用戶名, 在破解linux系統用戶密碼hash可能會用到 |
| --remove | 洗掉已被破解成功的hash |
| -r | 使用自定義破解規則 |
Hashcat的破解模式(用-a引數指定)
| 命令 | 功能 |
|---|---|
| -a 0 | Straight (字典破解) |
| -a 1 | Combination (組合破解) |
| -a 3 | Brute-force (掩碼暴力破解) |
| -a 6 | Hybrid Wordlist + Mask (字典 +掩碼破解) |
| -a 7 | Hybrid Mask + Wordlist (掩碼+字典破解) |
Hashcat的Hash型別(用-m引數指定)
| 命令 | 型別 |
|---|---|
| -m 900 | MD4 |
| -m 0 | MD5 |
| -m 100 | SHA1 |
| -m 1300 | SHA2-224 |
| -m 1400 | SHA2-256 |
| -m 10800 | SHA2-384 |
| -m 1700 | SHA2-512 |
| -m 10 | MD5($ pass.$salt) |
| -m 20 | MD5($salt.$pass) |
| -m 3800 | MD5($salt.$pass. $salt) |
| -m 3000 | LM |
| -m 1000 | NTLM |
Hashcat的掩碼字符集
| 命令 | 功能 |
|---|---|
| ?l | 小寫字母(abcdefghijklmnopqrstuvwxyz) |
| ?u | 大寫字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ) |
| ?d | 十進制數字(0123456789) |
| ?h | 十六進制數字,字母小寫(0123456789abcdef) |
| ?H | 十六進制數字,字母大寫(0123456789ABCDEF) |
| ?s | 特殊字符(!" #$%& '()*+.-./:;<=>?@[\]^_’{|}~) |
| ?a | 相當于?I?u?d?s,即鍵盤上所有可見的字符 |
| ?b | 0x00 - 0xff |
Hashcat掩碼運用實體
| 八位數字密碼 | ?d?d?d?d?d?d?d?d |
| 八位未知密碼 | ?a?a?a?a?a?a?a?a |
| 前四位為大寫字母,后四位為數字 | ?u?u?u?u?d?d?d?d |
| 前三個字符末知,中間為admin,后三位未知 | ?a?a?aadmin?a?a?a |
| 6- 8位數字密碼 | --increment --increment-min 6 --increment- max 8 ?|?I?I?I?I?I?I?| |
| 6-8位數字+小寫字母密碼 | --increment --increment-min 6 --increment- max 8 ?h?h?h?h?h?h?h?h |
Hashcat使用實體——字典破解(-a 0)
使用單個字典對一個經過MD5演算法運算過后的Hash值進行破解:
hashcat -a0 -m 0 e10adc3949ba59abbe56e057f20f883e /usr/share/john/password.lst
Hashcat使用實體掩碼暴力破解(-a 3)
步驟1:利用漏洞ms17 010攻擊靶機并進入meterpreter模塊
詳細教程在滲透測驗工具——Metasploit_.SYS.的博客-CSDN博客

步驟2:在meterpreter提示符中輸入以下命令獲取系統賬號密碼的Hash值
hashdump
步驟7:連續輸入兩次exit退出meterpreter和msf, 在終端下輸入以下命令,利用Hashcat對獲取的Hash值進行暴力破解:
hashcat -a 3 -m 1000 75f1d23f3a2527c6bfaada3e93b32a8b ?d?d?d
其中,-m 1000表示Hash型別為NTLM,掩碼?d?d?d表示破解的物件為3位十進制數字,

提示
- 若對已經破解的密碼進行再次破解,則會顯示"All hashes found inpotfile",可直接在原命令末尾加上--show引數直接顯示已破解的原文,
- hashcat.potfile檔案中記錄 了近期Hashcat破解的所有Hash值和密碼明文的對應關系,其所在路徑為~/.hashcat/hashcat.potfile,



使用Hashcat進行密碼攻擊的關鍵
- 選擇或構造一本強大的字典
- 了解目標的Hash型別(演算法)
Hydra的使用
- Hydra (九頭蛇)是一個相當強大的暴力密碼破解工具,該工具支持幾乎所有協議的在線密碼破解,如FTP、HTTP、HTTPS、 MySQL、 MS SQL、Oracle、Cisco、IMAP和VNC等,
- Hydra能夠在Linux、Windows、 Cygwin、 Solaris11、 FreeBSD8.1. OpenBSD、OSX、QNX/Blackberry- 上測驗和編譯,
Kali中的Hydra

Hydra常用功能選項(引數)說明
-h:顯示幫助資訊

| 選項 | 功能 |
|---|---|
| -I | 指定單個用戶名,適合在知道用戶名的情況下爆破密碼時使用 |
| -L | 指定多個用戶名,引數值為存盤用戶名的檔案(字典)的路徑(建議為絕對路徑) |
| -p | 指定單個密碼,適合在知道密碼的情況下爆破用戶名時使用 |
| -P | 指定多個密碼,引數值為存盤密碼的檔案(字典)的路徑(建議為絕對路徑) |
| -C | 當用戶名和密碼存盤到一一個檔案時使用此引數,注意:檔案(字典)存盤的格式必須為"用戶名:密碼”的格式 |
| -M | 指定多個攻擊目標,此引數為存盤攻擊目標的檔案路徑(建議為絕對路徑),注意:串列檔案存盤格式必須為" 地址:埠” |
| -S | 指定埠,適用于攻擊目標埠非默認的情況,例如http服務使用非80埠 |
| -t | 指定爆破時的任務數量(可以理解為執行緒數),默認為16 |
| v/-V | 顯示爆破的詳細資訊 |
| -o | 將破解成功的結果輸出到檔案中 |
Hydra支持破解的協議型別
- POP3
- SMB
- RDP
- SSH
- FTP
- Telnet
- MYSQL
利用Hydra進行密碼攻擊的一般步驟
- 選擇目標:輸入目標地址,可選:單獨IP、CIDR、 檔案中的串列
- 選擇協議:輸入需要爆破的協議,如ftp://等,需要開始之前探測服務
- 檢查引數:假如爆破需要加入額外的引數則添加即可
Hydra使用實體——爆破FTP服務器登錄密碼 (已知用戶名)
hydra -l admin -P /usr/share/john/password.lst ftp://192.168.147.132

Hydra使用實體——爆破FTP服務器的用戶名和密碼
hydra -L /usr/share/wordlists/rockyou.txt.gz -P /usr/share/john/password.lst ftp://192.168.147.132
Hydra使用實體——爆破遠程桌面服務的用戶名和密碼
hydra -L /root/password.txt -P /root/password.txt rdp://192.168.147.132

圖形化的Hydra——Hydra-gtk


Crunch的使用
- Crunch是-種創建密碼字典的工具,按照指定的規則生成密碼字典,可以靈活的制定自己的字典檔案,
- 使用Crunch工具生成的密碼可以輸出到螢屏,保存到檔案或另一個程式,
- Kali中自帶crunch工具,可直接在Kali中使用,
Kali中的Crunch

Crunch命令格式
crunch <min-len> < max-len> [<charset string>] [options]
命令引數說明
| 引數 | 功能 |
|---|---|
| min-len (必選) | 字串的最小長度 |
| max-len (必選) | 字串的最大長度 |
| charset string (可選) | 字符集設定,默認是小寫字符集 |
| options (可選) | 選項引數 |
Crunch常用選項引數
| 選項 | 功能 |
|---|---|
| -b | 指定檔案輸出的大小,避免字典檔案過大 |
| -C | 指定檔案輸出的行數,即包含密碼的個數 |
| -d | 限制相同元素出現的次數 |
| -e | 定義停止字符,即到該字串就停止生成 |
| -i | 改變輸出格式,即aaa,aab -> aaa,baa |
| -o | 將密碼保存到指定檔案 |
| -p | 指定元素以組合的方式進行 |
| -q | 讀取密碼檔案,即讀取pass.txt |
| -s | 指定起始字串 |
| -t | 指定密碼輸出的格式 %代表數字 |
| -f | 呼叫庫檔案 /usr/share/crunch/charset.Ist |
Crunch使用實體
生成長度為6、以123元素為組合的字典集,并輸出到/root/number.txt
crunch 6 6 123 -o /root/number.txt


生成長度為4的字典集,第一位為數字,第二位為特殊字符,第三位是小寫字符第四位是大寫字符,并輸出到/root/pass. txt
crunch 4 4 -t %^@, -o /root/pass.txt


以charset.Ist密碼庫的mixalpha-numeric模塊為字符集,以3a2b為開始字符,生成長度為4的字典集,輸出到/root/w.txt
crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric -o /root/w.txt -s 3a2b


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413285.html
標籤:其他
上一篇:2022-滲透測驗-資訊收集-Metasploit(基于SMB協議)
下一篇:ARP基本原理


