Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
RedWarden — パケットインスペクションとMalleable C2プロファイルの相関を通じて、Blue Teams、AV、EDR、スキャナーを撃退するCobalt Strike C2リバースプロキシ | Kitploit
ツール/GitHubGitHub/mgeeky/redwarden
ペネトレーションテストフレームワーク偵察エクスプロイトフレームワークウェブプロキシと傍受IDS/IPS回避リバースエンジニアリング情報収集ネットワークセキュリティコマンド&コントロール脅威インテリジェンスレッドチーミングArchived
99713873年前Kitploit レビュー済み
GitHub
mgeeky/redwarden

RedWarden

パケットインスペクションとMalleable C2プロファイルの相関を通じて、Blue Teams、AV、EDR、スキャナーを撃退するCobalt Strike C2リバースプロキシ

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

RedWarden - 柔軟なCobaltStrike Malleableリダイレクタ

(以前は proxy2's の malleable_redirector プラグインとして知られていました)

C2リダイレクタのIR耐性の水準を引き上げましょう。

RedWarden

レッドチームのビジネスでは、インシデントレスポンダーに対抗し、誤った方向へ導きながら、同時に耐性のあるC2リダイレクタネットワークを提供する方法について、いくつかの 異なる 素晴らしい アイデアが登場しています。

この作品は、それらの素晴らしいアイデアの多くを1つの軽量ユーティリティに統合し、そのルーツであるシンプルなHTTP(S)リバースプロキシとしてApache2を模倣しています。

Malleable C2プロファイルの理解、悪質なIPアドレスプールの知識、そして新しい検査および誤ルーティングロジックを容易に追加できる柔軟性を組み合わせることで、IR検査に対する巧妙な忌避手段が生まれました。

RedWarden

無効なインバウンドパケットがRedWardenに到達した場合、redirect、reset、または単にproxyで退避させることができます!

概要

このプログラムは、インバウンドC2 HTTPリクエストに対していくつかの制限を課し、Teamserverに転送するパケットとドロップするパケットを選択するHTTP/HTTPSリバースプロキシとして機能します。これは、Apache2ので義務付けられている.htaccessファイルの制限と同様です。

mod_rewrite

RedWardenは、C2リダイレクタ層におけるIR/AV/EDR/サンドボックスの回避の問題を解決するために作成されました。この目的で使用される古典的なApache2 + mod_rewriteのセットアップに取って代わることを意図しています。

特徴:

  • Malleable C2プロファイルパーサー:Malleableの契約に厳密に従ってインバウンドHTTP/Sリクエストを検証し、違反した場合に逸脱したパケットをドロップします(バリアントを含むMalleable Profiles 4.0+に対応)
  • プロキシやキャッシュ(CloudFlareなど)の中間システムによって追加された予期しない不要なHTTPヘッダーをアンフィルター/修復し、有効なMalleable契約に準拠させる機能。
  • ITセキュリティベンダーに関連することが知られているIPv4プールと範囲の厳選された大規模ブラックリストを統合
  • Grep可能な出力ログエントリ(Apache2 combined access log形式とカスタムRedWarden形式の両方)は、ピア接続イベント/問題を追跡するのに便利です。
  • 接続しているピアのIPv4アドレスをIP地理位置情報/whois情報に対してクエリし、事前定義された正規表現と照合して、信頼された組織/国/都市などの外部から接続しているピアを除外する機能。
  • 組み込みのリプレイ攻撃緩和:受け入れたリクエストのMD5ハッシュをローカルに保存されたSQLiteデータベースに記録し、以前に受け入れたリクエストを防止することで実現。
  • 特定のURLに一致するリクエストを他のホストに渡すためのProxyPassステートメントを定義可能。
  • 複数のTeamserverをサポート。
  • 多くのリバースプロキシホスト/リダイレクトサイトをランダムな順序でサポート。これにより、トラフィックの負荷分散やより多様なインフラストラクチャの構築が可能。
  • トラフィック中に一部のヘッダーが破損した場合、期待されるMalleable契約に従ってHTTPパケットを修復可能。
  • 詳細な冗長なHTTP(S)リクエスト/レスポンスログのおかげで、「なぜCloudFlare/CDN/ドメインフロンティング経由でBeaconが動作しないのか」というトラブルシューティングに費やされた眠れぬ夜はもう終わりです。

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つの戦略に従って誤ルーティングされる可能性があります:

  • redirect: ピアを他のウェブサイト(Rick Rollなど)に単純にリダイレクトします。
  • reset: TCP接続を直ちに切断します。
  • proxy: 別のウェブサイトから応答を取得し、クローン/ハイジャックされたウェブサイトを可能な限り模倣します。

この設定は設定ファイルで義務付けられています:```yaml

What to do with the request originating not conforming to Beacon, whitelisting or

ProxyPass inclusive statements:

- 'redirect' it to another host with (HTTP 301),

- 'reset' a TCP connection with connecting client

- 'proxy' the request, acting as a reverse-proxy against specified action_url

(may be dangerous if client fetches something it shouldn't supposed to see!)

Valid values: 'reset', 'redirect', 'proxy'.

Default: redirect

drop_action: redirect

root@kitploit:~
以下の例は、`redirect` から `https://googole.com` へのリダイレクトの結果を示しています:

![redirect](https://assets.kitploit.com/production/public/readmes/4322/2ac28c863e766b5aaa2f225c33c225075c7042383d9c51860342a4da63cc6dcd.png)


賢く使い、安全に保ちましょう。

### 要件

このプログラムは、fork を使用して複数のプロセスを生成するため、Linux システムでのみ実行できます。

また、SSL証明書の生成に使用されるため、`openssl` システムコマンドがインストールされていることが前提です。

最後に、以下のコマンドで Python3 PIP の要件をすべて簡単にインストールできます。```shell
bash $ sudo pip3 install -r requirements.txt

使用方法

使用例

最小限のRedWardenのconfig.yaml設定ファイルには、次の内容を含めることができます:```yaml port:

  • 80/http
  • 443/https

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:

  • 1.2.3.4:8080

drop_action: reset

root@kitploit:~
その後、設定ファイルへのパスを指定してプログラムを起動できます。```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. [...]

root@kitploit:~
## 使用例

### ビーコントラフィックの発信元にIPジオロケーションを課す

プリフィッシングとOSINTをしっかりと行いました。これでターゲットの居住地がわかり、トラフィックがどこから発信されるべきかの手がかりが得られました。あるいは、まったく補助的なトラフィックを検出する方法は少なくともわかりました。
リダイレクタ上のビーコンリクエストにIPジオロケーションを課すにはどうすればよいですか?

RedWardenが役に立ちます!

例えば、ヨーロッパのポーランドからのトラフィックのみを受け入れたいとします。
Pre-Phish/OSINTの結果は次のことを示しています:

- `89.64.64.150` はあなたのターゲットの1つの正当なIPで、ポーランドからのものです
- `59.99.140.76` はそうではなく、通常のインターネットノイズパケットとしてシステムに到達しました。

RedWardenのユーティリティ `lib/ipLookupHelper.py` を使用して、これらの2つのアドレスに関するIP Geoメタデータを収集できます。```shell
bash$ python3 ipLookupHelper.py

Usage: ./ipLookupHelper.py <ipaddress> [malleable-redirector-config]

Use this small utility to collect IP Lookup details on your target IPv4 address and verify whether
your 'ip_geolocation_requirements' section of proxy2 malleable-redirector-config.yaml would match that
IP address. If second param is not given - no 

前者はもたらす:```shell bash$ python3 ipLookupHelper.py 89.64.64.150 [dbg] Following IP Lookup providers will be used: ['ip_api_com', 'ipapi_co'] [.] Lookup of: 89.64.64.150 [dbg] Calling IP Lookup provider: ipapi_co [dbg] Calling IP Lookup provider: ip_api_com [dbg] New IP lookup entry cached: 89.64.64.150 [.] Output: { "organization": [ "UPC Polska Sp. z o.o.", "UPC.pl", "AS6830 Liberty Global B.V." ], "continent": "Europe", "continent_code": "EU", "country": "Poland", "country_code": "PL", "ip": "89.64.64.150", "city": "Warsaw", "timezone": "Europe/Warsaw", "fulldata": { "status": "success", "country": "Poland", "countryCode": "PL", "region": "14", "regionName": "Mazovia", "city": "Warsaw", "zip": "00-202", "lat": 52.2484, "lon": 21.0026, "timezone": "Europe/Warsaw", "isp": "UPC.pl", "org": "UPC Polska Sp. z o.o.", "as": "AS6830 Liberty Global B.V.", "query": "89.64.64.150" }, "reverse_ip": "89-64-64-150.dynamic.chello.pl" }

root@kitploit:~
そして後者は次のようになります:```shell
bash$ python3 ipLookupHelper.py 59.99.140.76
[dbg] Following IP Lookup providers will be used: ['ip_api_com', 'ipapi_co']
[dbg] Read 1 cached entries from file.
[.] Lookup of: 59.99.140.76
[dbg] Calling IP Lookup provider: ip_api_com
[dbg] New IP lookup entry cached: 59.99.140.76
[.] Output:
{
  "organization": [
    "",
    "BSNL Internet",
    "AS9829 National Internet Backbone"
  ],
  "continent": "Asia",
  "continent_code": "AS",
  "country": "India",
  "country_code": "IN",
  "ip": "59.99.140.76",
  "city": "Palakkad",
  "timezone": "Asia/Kolkata",
  "fulldata": {
    "status": "success",
    "country": "India",
    "countryCode": "IN",
    "region": "KL",
    "regionName": "Kerala",
    "city": "Palakkad",
    "zip": "678001",
    "lat": 10.7739,
    "lon": 76.6487,
    "timezone": "Asia/Kolkata",
    "isp": "BSNL Internet",
    "org": "",
    "as": "AS9829 National Internet Backbone",
    "query": "59.99.140.76"
  },
  "reverse_ip": ""
}

さて、前者は "country": "Poland" を持ち、後者は "country": "India" を持っていることがわかります。この知識をもとに、大きなYAML辞書の形で制約を考案する準備が整いました。```yaml ip_geolocation_requirements: organization: continent: continent_code: country: - Poland - PL - Polska country_code: city: timezone:

root@kitploit:~
その辞書の各エントリは、インバウンドピアのIPアドレスの決定されたIP Geoメタデータに対してマッチさせる正規表現を受け入れます。
`country`プロパティの3つのエントリを使用して、指定された値のいずれかを持つリクエストを許可します。

設定でそれを設定したら、`ipLookupHelper`ユーティリティ(2番目のパラメータを受け付ける)を使用して、別のIPアドレスがRedWardenのIP Geolocation判別器を通過するかどうかを確認できます。

![ipLookupHelper IP Geo discriminator](https://assets.kitploit.com/production/public/readmes/4322/f67983439349d959f5ce0b08c45e53de3664d82796fd15273f3bb72f831ac7dc.png)

最後の行は、パケットがブロックされるか受け入れられるかを示します。

以上です!IP Geolocationの制約を賢く安全に設定し、RedWardenのログでIP Geo関連のDROPエントリを注意深く確認し、C2トラフィックをきちんと整頓してください!


### 改ざんされたBeaconリクエストの修復

もしAWS LambdaやCloudFlareなどの中間システムをDomain Fronting/リダイレクターとして使用している場合、一部のパケットが合意されたMalleable Contractから逸脱したためにTeamserverに受け入れられない状況に遭遇したことがあるでしょう。それが改ざんされたり削除されたHTTPヘッダー、並び替えられたCookie、その他何であれ、おそらく多くの時間を無駄にしたことでしょう。

C2チャネル設定プロセスの問題や中間システムによる改ざんに対抗するため、RedWardenはBeaconパケットを修復する機能を提供します。

これは、Malleable Profileがパケットに期待する内容をチェックし、プロファイルの要件に従って設定されたHTTPヘッダーを合意された値に復元することで実現します。

以下のシンプルなプロファイルを考えてみましょう:```
http-get {
    set uri "/api/abc";
    client {

        header "Accept-Encoding" "gzip, deflate";

        metadata {
            base64url;
            netbios;
            base64url;
            parameter "auth";
        }
    }
    ...

この Accept-Encoding がわかりますか?すべての Beacon リクエストはそのヘッダーとその値を持たなければなりません。もしあなたの Beacon が CloudFlare システムにヒットし、そのリクエストがそのヘッダーから取り除かれるか、代わりに Accept-Encoding: gzip が設定された場合、どうなるでしょうか?Teamserver はその場でリクエストをドロップします。

このヘッダーを RedWarden 設定セクションの repair_these_headers と呼ばれる場所で設定することで、接続を安全にできます。:```yaml

This option repairs Beacon requests's header value by restoring to what was expected in Malleable C2 profile.

If RedWarden validates inbound request's HTTP headers, according to policy drop_malleable_without_expected_header_value:

"[IP: DROP, reason:6] HTTP request did not contain expected header value:"

and detects some header is missing or was overwritten along the wire, the request will be dropped.

We can relax this policy a bit however, since there are situations in which Cache systems (such as Cloudflare) could tamper with our

requests thus breaking Malleable contracts. What we can do is to specify list of headers, that should be overwritten back to their values

defined in provided Malleable profile.

So for example, if our profile expects:

header "Accept-Encoding" "gzip, deflate";

but we receive a request having following header set instead:

Accept-Encoding: gzip

Because it was tampered along the wire by some of the interim systems (such as web-proxies or caches), we can

detect that and set that header's value back to what was expected in Malleable profile.

In order to protect Accept-Encoding header, as an example, the following configuration could be used:

repair_these_headers:

- Accept-Encoding

Default:

repair_these_headers:

  • Accept-Encoding
root@kitploit:~
### 問題のあるレスポンスヘッダーを削除する

Cobalt Strike 4.7+ 以降、Teamserver が何の通知もなく自動的に Content-Encoding ヘッダーを削除し、それによって malleable `http-(get|post).server` 契約に違反していることに気付きました。

RedWarden はその契約に従っていたため、Beacon はレスポンスをドロップするか、不正確に解凍していました。

このオプションは、Teamserver のレスポンスから Beacon プロセスに届く前に削除すべきヘッダーを指定します。```yaml

remove_these_response_headers:
  - Content-Encoding

RedWardenは今後、CS4.7+バージョンとの互換性を維持するために、デフォルトでTeamserverのレスポンスからContent-Encodingヘッダーを削除します。

出力例

プロキシが生成する出力を見てみましょう。

verbose: Trueオプションでは、詳細度は最大でINFOに設定され、受け入れられたリクエストとドロップされたリクエストが区別されます。

リクエストがRedWardenの設定ファイルに設定されたすべての基準に適合した場合、そのリクエストは受け入れられる可能性があります。そのような場合、ログエントリに[ALLOW, ...]が続きます。``` [INFO] 2021-04-24/17:30:48: [REQUEST] GET /js/scripts.js [INFO] 2021-04-24/17:30:48: == Valid malleable http-get (variant: default) request inbound. [INFO] 2021-04-24/17:30:48: [ALLOW, 2021-04-24/19:30:48, 111.222.223.224] "/js/scripts.js" - UA: "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" [INFO] 2021-04-24/17:30:48: Connected peer sent 2 valid http-get and 0 valid http-post requests so far, out of 15/5 required to consider him temporarily trusted [INFO] 2021-04-24/17:30:48: Plugin redirected request from [attacker.com] to [127.0.0.1:5555]

root@kitploit:~
リクエストがRedWardenが各リクエストに対して行うチェックのいずれかに失敗した場合、対応する`[DROP, ...]`行が出力され、ドロップの**理由**に関する情報が含まれます。:```
[INFO] 2021-04-24/16:48:28: [REQUEST] GET /
[ERROR] 2021-04-24/16:48:29: [DROP, 2021-04-24/18:48:28, reason:1, 128.14.211.186] inbound User-Agent differs from the one defined in C2 profile.
[INFO] 2021-04-24/16:48:29: [DROP, 2021-04-24/18:48:28, 128.14.211.186] "/" - UA: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
[ERROR] 2021-04-24/16:48:29: [REDIRECTING invalid request from 128.14.211.186 (zl-dal-us-gp3-wk107.internet-census.org)] GET /

ドロップポリシーの微調整

リクエストがドロップされるかどうかを決定する理由は数多くあります。これらの各チェックは、要件に応じて、または微調整や誤った判断の修正の過程で、独立してオン/オフを切り替えることができます:

example-config.yaml からの抜粋:```yaml

Fine-grained requests dropping policy - lets you decide which checks

you want to have enforced and which to skip by setting them to False

Default: all checks enabled

policy:

[IP: ALLOW, reason:0] Request conforms ProxyPass entry (url="..." host="..."). Passing request to specified host

allow_proxy_pass: True

[IP: ALLOW, reason:2] Peer's IP was added dynamically to a whitelist based on a number of allowed requests

allow_dynamic_peer_whitelisting: True

[IP: DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.

drop_invalid_useragent: True

[IP: DROP, reason:2] HTTP header name contained banned word

drop_http_banned_header_names: True

[IP: DROP, reason:3] HTTP header value contained banned word:

drop_http_banned_header_value: True

[IP: DROP, reason:4b] peer's reverse-IP lookup contained banned word

drop_dangerous_ip_reverse_lookup: True

[IP: DROP, reason:4e] Peer's IP geolocation metadata contained banned keyword! Peer banned in generic fashion.

drop_ipgeo_metadata_containing_banned_keywords: True

[IP: DROP, reason:5] HTTP request did not contain expected header

drop_malleable_without_expected_header: True

[IP: DROP, reason:6] HTTP request did not contain expected header value:

drop_malleable_without_expected_header_value: True

[IP: DROP, reason:7] HTTP request did not contain expected (metadata|id|output) section header:

drop_malleable_without_expected_request_section: True

[IP: DROP, reason:8] HTTP request was expected to contain (metadata|id|output) section with parameter in URI:

drop_malleable_without_request_section_in_uri: True

[IP: DROP, reason:9] Did not found append pattern:

drop_malleable_without_prepend_pattern: True

[IP: DROP, reason:10] Did not found append pattern:

drop_malleable_without_apppend_pattern: True

[IP: DROP, reason:11] Requested URI does not aligns any of Malleable defined variants:

drop_malleable_unknown_uris: True

[IP: DROP, reason:12] HTTP request was expected to contain <> section with URI-append containing prepend/append fragments

drop_malleable_with_invalid_uri_append: True

root@kitploit:~
デフォルトでは、これらすべてのチェックが有効になっています。

`debug: True`を有効にすると、RedWardenが複雑な判断プロセスで実行する各ステップのログ行が大量にコンソールバッファにあふれます。
リクエストとレスポンスの完全なボディを確認したい場合は、`debug`と`trace`をtrueに設定すると、ログの洪水に埋もれてしまいます!

## FAQ

**- このプログラムはMalleable Profileなしで実行できますか?**

はい、可能です。ただし、リクエスト検査ロジックはオフになりますが、その他の機能(IP地理位置情報の適用、逆引きロジック、禁止IPリストなど)は正常に動作します。

**- このプログラムは他のC2フレームワーク(Mythic、Covenantなど)にも簡単に適応できますか?**

簡単にはできません。少し努力すれば可能です。以下で説明したように、このツールは他のC2への適応を困難にするように書かれています。しかし、時間と労力をかければ十分に可能です。

**- パケットがドロップされます。なぜですか?**

`debug: True`と`trace: True`を有効にして、できるだけ多くのログを収集してみてください。その後、ログを確認して何が起こっているのか調査する必要があります。パケットはMalleable Profileで期待した通りに届いていますか?あるいは、ネットワーク経由で微妙な改ざんがあり、それがRedWarden(そしてTeamserverも)にパケットをドロップさせる原因になっている可能性はありませんか?

## 既知の問題点

- インタラクティブスリープスループットにわずかなオーバーヘッドが追加される可能性があります。
- ProxyPassの処理ロジックは完全とはほど遠く、**非常に**バグが多いです(そして、なんと醜いことか!)。
- 設定ファイルの奇妙な形式は、RedWardenのパーサーを脱線させ、エラーを引き起こす可能性があります。これを回避する最も簡単な方法は、`example-config.yaml`をコピーして、代わりにそれを編集することです。

## なぜこのコードはこんなにも工学的なクソなのか?

このコードは**めちゃくちゃでっかいクソの山**です – それは認めます – そしてそれには正直な理由もあります。このプロジェクトは、実際のRed Teamのエンゲージメント中に90%開発されました。誰もが知っているように、こうしたエンゲージメントにはやるべきことが非常に多く、適切な複雑なツールを開発する時間はほとんど残されていません。ましてや、プロジェクトのセットアップにおけるこのプログラムの重要性は言うまでもありません。このツールは当初、Python2で書かれたシンプルなプロキシスクリプトとして始まり、その後プラグイン対応のプロキシへと進化し、`malleable_redirector`プラグインを受け入れました。それ以来、私は`proxy2`の後方互換性を維持しようと必死に努力してきました(かわいそうな私、まるでMicrosoftのようでした!)。これは私が作成した他のプラグインとの互換性と、元の目的を維持するためです。

しかし、手放し、名前を変え、導入された悪いコードの臭いをすべて修正し始める時が来ました。

とはいえ、問題を報告したり、プルリクエストを送信したりする際には、ある程度の思いやりを私に示してください。そして、判断するのではなく、助けようとしてください! :-)
ありがとうございます!

## TODO

- 脅威インテリジェンスフィードを悪意のある目的(例えば、IPに基づくセキュリティベンダーの検出など)に使用する可能性を調査する
- MaxMind GeoIPデータベース/APIのサポートを追加する
- JA3シグネチャの検出とブロッキング、およびnginx/Apache2/カスタムセットアップの偽装のサポートを実装する
- 独自の裁量でステージングと通信プロセスを拒否する柔軟性を提供するために、ユニークなビーコントラッキングロジックを追加する
- リダイレクト機能を提供する際に時間帯の制約を導入する(_営業時間内のみプロキシ_)
- CONNECT/リレーにプロキシ認証と認可ロジックを追加する
- モバイルユーザーを対象としたリダイレクトを追加する
- 注入するカスタムHTTPヘッダー、または削除するヘッダーを定義するための設定オプションを追加する
- ProxyPass基準を通過するリクエストに特定のHTTPヘッダーの存在を要求する設定オプションを追加する
- Nmapのように、入力された単純な文字で出力ログの詳細度を制御できるインタラクティブインターフェース
- Malleableプロファイルパーサーのロジックを[pyMalleableC2](https://github.com/Porchetta-Industries/pyMalleableC2)に書き換える。初めて独自のパーサーロジックを書き始めたとき、Githubにはそのようなツールキットはありませんでした。
- すべてのコードベースをリファクタリングする

---

### ☕ サポートをお願いします ☕

このプロジェクトや他のプロジェクトは、眠れぬ夜と**たくさんのハードワーク**の結果です。私の活動を気に入っていただき、常にコミュニティに還元していることに感謝していただけるなら、
[コーヒーをおごることを検討してください](https://github.com/sponsors/mgeeky) _(またはビールの方が良いかも)_ ありがとうの気持ちとして! 💪

---

## 著者```   
   Mariusz Banach / mgeeky, '19-'21
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky) 
ツールをダウンロード