
WIP ハイパーバイザー向けポストエクスプロイテーションフレームワーク
Reaveは、Pythonで書かれたハイパーバイザーのエンドポイント向けに特化したポストエクスプロイトフレームワークです。現在開発中です。
Reaveは従来のリスナー/エージェントモデルに従い、ユーザーは複数のリスナーを設定でき、リスナーは任意の数のエージェントを受け入れます。現在のフレームワークはPythonエージェントを提供し、以下の目標をサポートしています。
Reaveの目標は、仮想化が進んだ環境、またはESXiやProxmoxなどのハイパーバイザープラットフォーム上にターゲット/重要インフラがホストされている環境において、ペネトレーションテストキャンペーンを自動化・迅速化するためのフレームワークを提供することです。
サーバーでは、単にapp.pyを実行します:
python3 reave/app.py
ターゲットエンドポイントでは、agents/client.pyにあるPythonエージェントをアップロードして実行します。以下の設定オプションが利用可能です:
_LISTENER_HOST サーバーのホスト名/IP_LISTENER_PORTS エージェントがラウンドロビン方式で接続を試みるポートのリスト_LISTENER_SECRET エージェントがバインドするリスナーのアソシエーションキー_AGENT_LOGLEVEL デバッグログレベルBEACON_INTERVAL エージェントがビーコンを送信する間隔BEACON_JITTER ビーコン間隔に追加されるランダムジッター係数START_TIME エージェントがビーコンを開始する時間帯END_TIME エージェントがビーコンを停止する時間帯SOCKET_TIMEOUT エージェントのソケットのタイムアウトPID_FILE エージェントがエンドポイント上で既に実行されていないことを確認するためのPIDファイルTRANSFER_BLOCK_SIZE エージェントがサーバーにファイルを転送する際のブロックサイズエージェントがリスナーに正常に関連付けられたら、agentコンテキストに入り、list(または ls)コマンドを発行して表示できます。Reaveが自動的にエンドポイントから列挙したすべての情報を表示するには、info <agent uuid>コマンドを発行します。たとえば、エージェントのuuidが 18ab の場合、info 18ab を使用します。
エージェントから任意のファイルを取得するには、get 18ab /my/test/file を発行します。
エンドポイント上でインタラクティブシェルを起動するには、interact 18ab を発行します。
コマンドラインには3つの異なるコンテキストがあり、それぞれ独立した操作を制御できます:
リスナーコンテキストに入るには、listenerコマンドを使用します。そこから以下のオプションが利用可能です:
list すべてのアクティブなリスナーを一覧表示
add <host> <port> <secret> リスナーを追加
remove <uuid> リスナーを削除
このコンテキストを終了するには、backコマンドを使用します。
エージェントコンテキストに入るには、agentコマンドを使用します。そこから以下のオプションが利用可能です:
list すべてのエージェントを一覧表示(別名: ls)
info <uuid> エージェントの情報と自動列挙データを表示
interact <uuid> エージェントとのインタラクティブターミナルセッション。
'quit' で終了。
get <uuid> <file> エージェントエンドポイントからファイルをダウンロードディレクトリに転送
このコンテキストを終了するには、backコマンドを使用します。
ペイロードコンテキストに入るには、payloadコマンドを使用します。そこから以下のオプションが利用可能です:
list ロードされているすべてのペイロードを一覧表示
info <name> ペイロードの情報を取得
use <name> 使用するペイロードを選択
set <option> <value> ペイロードオプションを値に設定
run agent <uuid> 個別のエージェントでペイロードを実行
このコンテキストを終了するには、backコマンドを使用します。
Reaveは、列挙データを表示するフォーマットを定義することもサポートしています。特定のフォーマットに切り替えるには:
format json テーブル形式で情報を出力します。
format table JSON形式で情報を出力します。