Venom C2は、パッケージをインストールせずに動作するよう構築された、レッドチームの永続化向けの依存関係不要なPython3のコマンド&コントロール(C2)フレームワークです。Flask製のチームサーバー、Electron製のオペレーターGUI、そしてHTTP/HTTPS上で設定可能なAES暗号化JSONメッセージを用いて通信する単一ファイルのPythonエージェントで構成されています。これを使ってコマンド実行、ファイル管理、アクセス維持、侵害されたシステムからのSSHリバーストンネル作成が可能です。
背景
ネットワーク権限を昇格させる過程で、特殊なディストリビューションやアーキテクチャで動作する多くの本番システムに到達しました。永続化を設定したかったのですが、手持ちのツールや手法が機能しませんでした。さらに、対象システムの一部ではEDRが稼働していました。
これらは本番システムだったため、パッケージをインストールしたくありませんでした。依存関係なしで動作するC2エージェントが必要でした。システムにはPython3がインストールされていたので、エンゲージメントの途中でVenom C2を作成しました。依存関係不要で、とにかく動くPython3 C2エージェントです。
既製のC2エージェントは、ブルーチームによる検知につながるリスクがあるため使いたくありませんでした。 現代のEDRを回避するには、独自コードが最強です
システム数が多かったため、エージェントごとに固有の難読化、命名、ファイルシステム上の配置、異なるコールバック用ドメイン、そして固有のネットワークパス要求を自動化しました。
Venom C2の今後
サーバー
- Python3 Flask
- 複数オペレーターに対応したチームサーバー
- コマンド履歴を保存
- エージェント設定用スクリプト
- エージェント難読化用スクリプト
- エージェント接続を管理
- GUIクライアントと通信するためのAPI
- 以下の大規模配列からランダム選択するカスタムプロファイル:
- C2メッセージのパラメータ名
- ランダムヘッダー
- スケーラブルな値型を持つランダムJSON属性
クライアントGUI
- Electron
- Linux、macOS、Windowsで動作
- GUIはLoki GUIのスリム版
エージェント
- 依存関係なしのPython3
- メッセージは設定可能なAESキーで暗号化
- すべてのメッセージはJSONのPOSTリクエストとして送信
- 以下の大規模配列からランダム選択するカスタムプロファイル:
- URIのベースパス(リバースプロキシのルーティング設定に有用)
- 各エージェント機能ごとの複数URIパス
- C2メッセージのパラメータ名
- ユーザーエージェント
- ランダムヘッダー
- スケーラブルな値型を持つランダムJSON属性
インストール&使用方法
翻訳元: https://meterpreter.org/venom-c2-the-dependency-free-python-framework-for-stealthy-persistence/