.-.
[.-''-.,
| //`~\)
(<| 0\0|>_
";\ _"/ \\_ _,
__\|'._/_ \ '='-,
/\ \ || )_///_\>>
( '._ T |\ | _/),-'
'. '._.-' /'/ |
| '._ _.'`-.._/
,\ / '-' |/
[_/\-----j
_.--.__[_.--'_\__
/ `--' '---._
/ '---. -'. .' _.-- '.
\_ '--.___ _;.-o /
'.__ ___/______.__8----'
c-'----'
Lefty @lefterispan - Nettitude Red Team - 2022 / 2023
Aladdin は、James Forshaw(@tiraniddo)の研究成果に基づくペイロード生成手法であり、.NET ペイロードのデシリアライズとメモリ上での実行を可能にします。元のベクターは https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html に文書化されています。
AddInProcess.exe プロセスを引数 /guid:32a91b0f-30cd-4c75-be79-ccbd6345de99 および /pid: で起動すると、プロセスは \\.\pipe\32a91b0f-30cd-4c75-be79-ccbd6345de99 の名前付きパイプを開始し、.NET Remoting オブジェクトを待機します。.NET remoting リスナーと通信するために必要な適切なパケットバイトを持つペイロードを生成すると、System.Workflow.ComponentModel の ActivitySurrogateSelector クラスをトリガーし、コード実行を獲得できます。
当初、James Forshaw は POC を https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData で公開しました。しかし、Microsoft が脆弱な System.Workflow.ComponentModel にパッチを適用したため(https://github.com/microsoft/dotnet-framework-early-access/blob/master/release-notes/NET48/dotnet-48-changes.md)、この POC は最近の Windows バージョンでは失敗します。
しかし、Nick Landers(@monoxgas)は、Microsoft が導入したチェックを無効にする方法を特定し、詳細な記事を https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/ で執筆しました。回避策は https://github.com/pwntester/ysoserial.net/pull/41 に文書化されています。
Aladdin は、特定の回避策と .NET remoting プロトコルの必要なヘッダーバイトを使用して、当初文書化されたように AddInProcess を悪用する初期アクセス用ペイロードを生成できるペイロード生成ツールです。
提供されるテンプレートは以下の通りです:
* HTA
* VBA
* JS
* CHM
攻撃を成功させるためには、.NET アセンブリに、デシリアライゼーション中のエントリポイントとして機能する空のコンストラクタを持つ単一のパブリッククラスが含まれている必要があります。プロジェクトにはサンプルアセンブリが含まれています。
public class EntryPoint {
public EntryPoint() {
MessageBox.Show("Hello");
}
}
使用方法:
-w, --scriptType=VALUE js / hta / vba / chm に設定します。
-o, --output=VALUE 生成される出力、例: -o
C:\Users\Nettitude\Desktop\payload
-a, --assembly=VALUE 提供されるアセンブリ DLL、例: -a
C:\Users\Nettitude\Desktop\popcalc.dll
-h, --help ヘルプ
ユーザーが提供した .NET バイナリは、HTA / JS ペイロードから生成される AddInProcess.exe の下で実行されます。プロセスの生成は現在、9BA05972-F6A8-11CF-A442-00A0C90A8F39 COM オブジェクト(https://dl.packetstormsecurity.net/papers/general/abusing-objects.pdf)を使用して行われ、これによりプロセスは Explorer.exe プロセスの子プロセスとして起動されます。
AddInProcess.exe のプロセスパラメータで指定される GUID はユーザーが制御可能です。現時点では GUID はテンプレートとコード内でハードコードされています。
CHM は XSLT 変換を介して JScript を実行します。
Addinprocess.exe は常に /guid と /pid を指定して起動されます。正当な使用のために環境をベースライン化し、残りを監視してください。* https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html
* https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/
コードは以下のリポジトリに基づいています:
* https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData
* https://github.com/pwntester/ysoserial.net
スペシャルサンクス: