基于AD Event日志檢測LSASS憑證竊取攻擊
01、簡介
簡單介紹一下,LSASS(本地安全機構子系統服務)在本地或域中登錄Windows時,用戶生成的各種憑證將會存儲在LSASS進程的內存中,以便用戶不必每次訪問系統時重新登錄。
攻擊者在獲得起始攻擊點后,需要獲取目標主機上的相關憑證,以便通過用戶憑證進行橫向移動,這個技術點最容易關聯到的就是獲取LSASS內存中保存的用戶憑證。
一般LSASS竊取憑證有兩種方式,第一種就是直接從LSASS內存解析獲取密碼,第二種是將LSASS進程轉儲到本地進行離線解析。
02、LSASS竊取憑證
(1)mimikatz
mimikatz僅需一行命令,就可以直接從lsass內存中提取用戶hash。
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt
在眾多的Windows安全日志中,通過監測訪問lsass,exe的進程,可發現異常進程,因此可以將事件ID:4663 作為關鍵日志特征。
事件ID:4663 顯示已使用訪問權限,4663是沒有失敗事件的,可以看到進程名mimikatz.exe 嘗試訪問內存對象lsass.exe。

(2)Procdump轉儲
procdump是微軟官方提供的一個小工具,可以將lsass.exe進程轉儲為dump文件,將lsass.dmp文件下載到本地進行離線破解。
Procdump64.exe -accepteula -ma lsass.exe lsass.dmp
在Windows事件ID:4663 中,可以看到進程名Procdump64.exe 嘗試訪問內存對象lsass.exe。

(3)MSF中的mimikatz
MSF加載mimikatz模塊,抓取明文密碼
meterpreret > load mimikatzmeterpreret > wdigest

在Windows事件ID:4663 中,可以看到進程名shell.exe 嘗試訪問內存對象lsass.exe。

(4)CS模塊獲取用戶哈希
使用hashdump或logopasswords 獲取用戶密碼哈希值

在Windows事件ID:4663 中,可以看到進程名rundll32.exe 嘗試訪問內存對象lsass.exe。

03、LSASS憑證竊取攻擊檢測
基于幾種常見的LSASS進程竊取憑證的方式以及識別到的AD Event日志特征,可以實時監測異常進程訪問lsass,exe,找到哪個用戶什么時間執行了異常進程訪問了lsass.exe進程,從而實現LSASS憑證竊取攻擊的檢測。
eventtype=wineventlog_security EventCode=4663 Object_Name="*lsass.exe"| regex process="^((?!MsMpEng|vmtoolsd|VsTskMgr|WmiPrvSE).)*$"| stats count min(_time) as start_time max(_time) as end_time by dest user Object_Name Process_Name| eval start_time=strftime(start_time,"%Y-%m-%d %H:%M:%S")| eval end_time=strftime(end_time,"%Y-%m-%d %H:%M:%S") |eval message="在"+start_time+"到"+end_time+"時間內,服務器:"+dest +" 檢測到lsass竊取憑證,進程名:" +Process_Name+" 操作賬號:"+user+" 操作次數:"+count+"次"|table start_time end_time dest message user
安全告警效果如下圖:
