使用PetitPotam代替Printerbug
上帝關(guān)了一扇, 必定會再為你打開另一扇窗
0x00 前言
Printerbug使得擁有控制域用戶/計(jì)算機(jī)的攻擊者可以指定域內(nèi)的一臺服務(wù)器,并使其對攻擊者選擇的目標(biāo)進(jìn)行身份驗(yàn)證。雖然不是一個微軟承認(rèn)的漏洞,但是跟Net-ntlmV1,非約束委派,NTLM_Relay,命名管道模擬這些手法的結(jié)合可以用來域內(nèi)提權(quán),本地提權(quán),跨域等等利用。
遺憾的是,在PrintNightmare爆發(fā)之后,很多企業(yè)會選擇關(guān)閉spoolss服務(wù),使得Printerbug失效。在Printerbug逐漸失效的今天,PetitPotam來了,他也可以指定域內(nèi)的一臺服務(wù)器,并使其對攻擊者選擇的目標(biāo)進(jìn)行身份驗(yàn)證。而且在低版本(16以下)的情況底下,可以匿名觸發(fā)。

?
0x01 原理
MS-EFSR
里面有個函數(shù)EfsRpcOpenFileRaw(Opnum 0)
long EfsRpcOpenFileRaw(
? [in] handle_t binding_h,
? [out] PEXIMPORT_CONTEXT_HANDLE* hContext,
? [in, string] wchar_t* FileName,
? [in] long Flags );
他的作用是打開服務(wù)器上的加密對象以進(jìn)行備份或還原,服務(wù)器上的加密對象由FileName
?參數(shù)指定,FileName
的類型是UncPath。
當(dāng)指定格式為\\IP\C$
的時候,lsass.exe服務(wù)就會去訪問\\IP\pipe\srvsrv

指定域內(nèi)的一臺服務(wù)器,并使其對攻擊者選擇的目標(biāo)(通過修改FileName里面的IP參數(shù))進(jìn)行身份驗(yàn)證。
?
0x02 細(xì)節(jié)
1、通過lsarpc 觸發(fā)
在官方文檔里面,MS-EFSR
的調(diào)用有\pipe\lsarpc
和\pipe\efsrpc
兩種方法,其中
\pipe\lsarpc
的服務(wù)器接口必須是UUID [c681d488-d850-11d0-8c52-00c04fd90f7e]\pipe\efsrpc
的服務(wù)器接口必須是UUID [df1941c5-fe89-4e79-bf10-463657acf44d]
在我本地測試發(fā)現(xiàn)\pipe\efsrpc
并未對外開放


在PetitPotam的Poc里面有一句注釋possible aussi via efsrpc (en changeant d'UUID) mais ce named pipe est moins universel et plus rare que lsarpc ;)
,翻譯過來就是
也可以通過EFSRPC(通過更改UUID),但這種命名管道的通用性不如lsarpc,而且比LSARPC更罕見
所以PetitPotam直接是采用lsarpc的方式觸發(fā)。
2、低版本可以匿名觸發(fā)
在08和12的環(huán)境,默認(rèn)在網(wǎng)絡(luò)安全:可匿名訪問的命名管道
中有三個netlogon
、samr
、lsarpc
。因此在這個環(huán)境下是可以匿名觸發(fā)的


遺憾的是在16以上這個默認(rèn)就是空了,需要至少一個域內(nèi)憑據(jù)。

?
0x03 利用
這篇文章的主題是使用PetitPotam
代替Printerbug
,因此這個利用同時也是Printerbug
的利用。這里順便梳理復(fù)習(xí)下Printerbug
的利用。
1、結(jié)合 CVE-2019-1040,NTLM_Relay到LDAP
詳情見CVE-2019-1040,這里我們可以將觸發(fā)源從Printerbug
換成PetitPotam

2、Relay到HTTP
不同于LDAP是協(xié)商簽名的,發(fā)起的協(xié)議如果是smb就需要修改Flag位,到HTTP的NTLM認(rèn)證是不簽名的。前段時間比較火的ADCS剛好是http接口,又接受ntlm認(rèn)證,我們可以利用PetitPotam把域控機(jī)器用戶relay到ADCS里面申請一個域控證書,再用這個證書進(jìn)行kerberos認(rèn)證。注意這里如果是域控要指定模板為DomainController
python3 ntlmrelayx.py -t https://192.168.12.201/Certsrv/certfnsh.asp -smb2support --adcs --template "DomainController"

2、結(jié)合非約束委派的利用
當(dāng)一臺機(jī)器機(jī)配置了非約束委派之后,任何用戶通過網(wǎng)絡(luò)認(rèn)證訪問這臺主機(jī),配置的非約束委派的機(jī)器都能拿到這個用戶的TGT票據(jù)。
當(dāng)我們拿到了一臺非約束委派的機(jī)器,只要誘導(dǎo)別人來訪問這臺機(jī)器就可以拿到那個用戶的TGT,在這之前我們一般用printerbug來觸發(fā),在這里我們可以用PetitPotamlai來觸發(fā)。


域內(nèi)默認(rèn)所有域控都是非約束委派,因此這種利用還可用于跨域。
3、結(jié)合Net-ntlmV1進(jìn)行利用
很多企業(yè)由于歷史原因,會導(dǎo)致LAN身份驗(yàn)證級別配置不當(dāng),攻擊者可以將Net-Ntlm降級為V1

我們在Responder里面把Challeng設(shè)置為1122334455667788
,就可以將Net-ntlm V1解密為ntlm hash



4、結(jié)合命名管道的模擬
在這之前,我們利用了printerbug放出了pipePotato漏洞。詳情見pipePotato:一種新型的通用提權(quán)漏洞。
在PetitPotam出來的時候,發(fā)現(xiàn)這個RPC也會有之前pipePotato的問題。



?
0x04 引用
[MS-EFSR]: Encrypting File System Remote (EFSRPC) Protocol–PetitPotam