
既存のプロセスに .NET アセンブリを注入する
このツールは、Cobalt Strikeの従来のfork and run実行に代わるものです。ローダーは、現在のBeaconを含む任意のプロセスに注入できます。長時間実行されるアセンブリは、実行を継続し、execute-assemblyと同様の動作で出力をBeaconに送り返します。
inject-assemblyには2つのコンポーネントがあります:
BOF initializer: 引数を渡してアセンブリローダーをリモートプロセスに注入する役割を持つ小さなプログラム。注入にはBeaconInjectProcessを使用するため、この動作はMalleable C2プロファイルまたはプロセスインジェクションBOF(バージョン4.5以降)でカスタマイズできます。
PIC assembly loader: プロジェクトの主要部分。ローダーは.NETランタイムを初期化し、提供されたアセンブリをロードし、実行します。ローダーはターゲットプロセス内に新しいAppDomainを作成し、実行完了時にロードされたアセンブリを完全にアンロードできるようにします。
リモートプロセスとBeacon間の通信は名前付きパイプを介して行われます。Aggressorスクリプトがパイプ名を生成し、それをBOF initializerに渡します。
ダウンロードして、inject-assembly.cna AggressorスクリプトをCobalt Strikeにロードしてください。次のコマンドを使用してアセンブリを実行できます:
inject-assembly pid assembly [args...]
PIDに0を指定すると、現在のBeaconプロセス内で実行されます。
既に.NETランタイムをロードしているプロセスを見つけるために、FindObjects-BOFのような別のツールを使用することを推奨しますが、これはinject-assemblyが機能するための必須条件ではありません。
jobkillを使用して名前付きパイプを切断することはできます。このプロジェクトは以下のプロジェクトなしでは実現できませんでした:
その他の機能と着想は以下のリソースから得ました: