パケットインスペクションとMalleable C2プロファイルの相関を通じて、Blue Teams、AV、EDR、スキャナーを撃退するCobalt Strike C2リバースプロキシ
(以前は proxy2's の malleable_redirector プラグインとして知られていました)
C2リダイレクタのIR耐性の水準を引き上げましょう。

レッドチームのビジネスでは、インシデントレスポンダーに対抗し、誤った方向へ導きながら、同時に耐性のあるC2リダイレクタネットワークを提供する方法について、いくつかの 異なる 素晴らしい アイデアが登場しています。
この作品は、それらの素晴らしいアイデアの多くを1つの軽量ユーティリティに統合し、そのルーツであるシンプルなHTTP(S)リバースプロキシとしてApache2を模倣しています。
Malleable C2プロファイルの理解、悪質なIPアドレスプールの知識、そして新しい検査および誤ルーティングロジックを容易に追加できる柔軟性を組み合わせることで、IR検査に対する巧妙な忌避手段が生まれました。

無効なインバウンドパケットがRedWardenに到達した場合、redirect、reset、または単にproxyで退避させることができます!
このプログラムは、インバウンドC2 HTTPリクエストに対していくつかの制限を課し、Teamserverに転送するパケットとドロップするパケットを選択するHTTP/HTTPSリバースプロキシとして機能します。これは、Apache2のmod_rewriteで義務付けられている.htaccessファイルの制限と同様です。
RedWardenは、C2リダイレクタ層におけるIR/AV/EDR/サンドボックスの回避の問題を解決するために作成されました。この目的で使用される古典的なApache2 + mod_rewriteのセットアップに取って代わることを意図しています。
特徴:
RedWardenは、入力としてMalleable C2プロファイルとteamserverのhostname:portを受け取ります。次に、提供されたMalleableプロファイルセクションを解析して契約を理解し、それを満たしたインバウンドリクエストのみを通過させ、その他は誤った方向へ導きます。
http-stager、http-get、http-postなどのセクションと、それらに対応するURI、ヘッダー、プリペンド/アペンドパターン、User-Agentはすべて、正当なビーコンのリクエストと無関係なインターネットノイズやIR/AV/EDRの範囲外パケットを区別するために使用されます。
このプログラムは、以下から提供される素晴らしい既知の悪質なIP範囲を活用しています: curi0usJackとその他: https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10
IPアドレスのブラックリスト化と、リバースIP DNSクエリおよびHTTPヘッダー検査による既知の悪質キーワードの検索を組み合わせることで、攻撃者のインフラを調査しようとする不正なピアに対するリダイレクタの耐性を大幅に向上させる信頼性をもたらします。
無効なパケットは3つの戦略に従って誤ルーティングされる可能性があります:
この設定は設定ファイルで義務付けられています:```yaml
drop_action: redirect
以下の例は、`redirect` から `https://googole.com` へのリダイレクトの結果を示しています:

賢く使い、安全に保ちましょう。
### 要件
このプログラムは、fork を使用して複数のプロセスを生成するため、Linux システムでのみ実行できます。
また、SSL証明書の生成に使用されるため、`openssl` システムコマンドがインストールされていることが前提です。
最後に、以下のコマンドで Python3 PIP の要件をすべて簡単にインストールできます。```shell
bash $ sudo pip3 install -r requirements.txt
最小限のRedWardenのconfig.yaml設定ファイルには、次の内容を含めることができます:```yaml port:
profile: jquery-c2.3.14.profile
ssl_cacert: /etc/letsencrypt/live/attacker.com/fullchain.pem ssl_cakey: /etc/letsencrypt/live/attacker.com/privkey.pem
teamserver_url:
drop_action: reset
その後、設定ファイルへのパスを指定してプログラムを起動できます。```shell
bash$ sudo python3 RedWarden.py -c config.yaml
[INFO] 19:21:42: Loading 1 plugin...
[INFO] 19:21:42: Plugin "malleable_redirector" has been installed.
[INFO] 19:21:42: Preparing SSL certificates and keys for https traffic interception...
[INFO] 19:21:42: Using provided CA key file: ca-cert/ca.key
[INFO] 19:21:42: Using provided CA certificate file: ca-cert/ca.crt
[INFO] 19:21:42: Using provided Certificate key: ca-cert/cert.key
[INFO] 19:21:42: Serving http proxy on: 0.0.0.0, port: 80...
[INFO] 19:21:42: Serving https proxy on: 0.0.0.0, port: 443...
[INFO] 19:21:42: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:21:42: == Valid malleable http-get request inbound.
[INFO] 19:21:42: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[INFO] 19:21:42: [RESPONSE] HTTP 200 OK, length: 5543
[INFO] 19:21:45: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:21:45: == Valid malleable http-get request inbound.
[INFO] 19:21:45: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[INFO] 19:21:45: [RESPONSE] HTTP 200 OK, length: 5543
[INFO] 19:21:46: [REQUEST] GET /
[...]
[ERROR] 19:24:46: [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.
[...]
[INFO] 19:24:46: [RESPONSE] HTTP 301 Moved Permanently, length: 212
[INFO] 19:24:48: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:24:48: == Valid malleable http-get request inbound.
[INFO] 19:24:48: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[...]
上記の出力には、C2 プロファイルに準拠していない不正な受信リクエストがあり、提示された互換性のない User-Agent 文字列のためにドロップされたことを示す行が含まれています:``` [...] [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile. [...]
## 使用例
### ビーコントラフィックの発信元にIPジオロケーションを課す
プリフィッシングとOSINTをしっかりと行いました。これでターゲットの居住地がわかり、トラフィックがどこから発信されるべきかの手がかりが得られました。あるいは、まったく補助的なトラフィックを検出する方法は少なくともわかりました。
リダイレクタ上のビーコンリクエストにIPジオロケーションを課すにはどうすればよいですか?
RedWardenが役に立ちます!
例えば、ヨーロッパのポーランドからのトラフィックのみを受け入れたいとします。
Pre-Phish/OSINTの結果は次のことを示しています:
- `89.64.64.150` はあなたのターゲットの1つの正当なIPで、ポーランドからのものです
- `59.99.140.76` はそうではなく、通常のインターネットノイズパケットとしてシステムに到達しました。