域滲透——Security Support Provider

wyzsk發表於2020-08-19
作者: 三好學生 · 2016/02/02 11:54

0x00 前言


在之前的文章中介紹了一些域環境中的滲透方法和技巧,所以這次接著介紹一個用來維持域控許可權的方法——SSP.

Alt text

0x01 簡介


SSP:

Security Support Provider,直譯為安全支援提供者,又名Security Package.

簡單的理解為SSP就是一個DLL,用來實現身份認證,例如:

#!bash
NTLM
Kerberos
Negotiate
Secure Channel (Schannel)
Digest
Credential (CredSSP)

SSPI:

Security Support Provider Interface,直譯為安全支援提供程式介面,是Windows系統在執行認證操作所使用的API。

簡單的理解為SSPI是SSP的API介面

LSA:

Local Security Authority,用於身份認證,常見程式為lsass.exe

特別的地方在於LSA是可擴充套件的,在系統啟動的時候SSP會被載入到程式lsass.exe中.

這相當於我們可以自定義一個dll,在系統啟動的時候被載入到程式lsass.exe!

Alt text

此圖片來自於https://dl.mandiant.com/EE/library/MIRcon2014/MIRcon_2014_IR_Track_Analysis_of_Malicious_SSP.pdf

如圖,這是正常的SSPI結構圖,Client APP是我們自定義的dll,透過Secur32.dll可以呼叫 "credential capture API"來獲取LSA的資訊

Alt text

此圖片來自於https://dl.mandiant.com/EE/library/MIRcon2014/MIRcon_2014_IR_Track_Analysis_of_Malicious_SSP.pdf

上圖展示了攻擊思路,既然可以自定義dll,那麼我們就可以定製dll的功能,透過Named PipeShared Memory直接獲取lsass.exe中的明文密碼,並且能夠在其更改密碼時立即獲得新密碼!

0x02 mimilib SSP


mimikatz早已支援這個功能,而這個檔案就是我們使用的時候常常忽略的mimilib.dll

Alt text

下面就實際測試一下如何透過mimilib偽造SSP記錄明文密碼.

mimikatz poc地址:
https://github.com/gentilkiwi/mimikatz/blob/bb371c2acba397b4006a6cddc0f9ce2b5958017b/mimilib/kssp.c

0x03 實際測試


測試環境

#!bash
域控:server 2008 r2 x64
域內主機: win7 x64

測試步驟:

1、新增SSP

將mimilib.dll複製到域控c:\windows\system32

注:

64位系統要用64位的mimilib.dll,32位的會失敗

2、設定SSP

修改域控登錄檔位置:

#!bash
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages\

如圖 Alt text

在Security Packages下新增mimilib.dll

如圖 Alt text

點選確認,Security Packages已被新增mimilib.dll

如圖 Alt text

3、重啟系統

域控重啟後在c:\windows\system32可看到新生成的檔案kiwissp.log

如圖 Alt text

kiwissp.log記錄了登入賬戶和密碼,如圖 Alt text

Tips:

mimilib只實現了將密碼儲存到本地,如果把密碼傳送到遠端伺服器豈不是威力無窮?

0x04 補充


1、Memory Updating of SSPs

mimikatz同時還支援透過記憶體更新ssp,這樣就不需要重啟再獲取賬戶資訊

需要使用mimikatz.exe,命令如下:

#!bash
privilege::debug
misc::memssp

注:

1、64系統需要64位的mimikatz,如圖

32位mimikatz失敗 Alt text

64位mimikatz成功 Alt text

2、記憶體更新的方法在重啟後會失效.

0x05 檢測


1、登錄檔

檢測登錄檔位置:

#!bash
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages\

2、dll

檢測%windir%\System32是否有可疑dll

3、Autoruns

使用工具Autoruns檢測LSA

如圖,可以發現新增dll的位置 Alt text

0x06 小結


本文僅對SSP的常規用法做了演示,實現了在本地儲存域控的賬戶和密碼,而且基於這個思路,可以開發出更多高階的利用方法。

如果站在防禦的角度,常規方法已經力不從心,只有更多的瞭解攻擊才能更好的防禦。

0x07 參考資料


本文由三好學生原創並首發於烏雲drops,轉載請註明

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章