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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Medusa — Mythic向けのクロスプラットフォームC2エージェント。動的関数ロード、SOCKS5プロキシ、ファイル操作、シェルコードインジェクション、macOS/Windowsのポストエクスプロイテーションモジュールを備えています。 | Kitploit
ツール/GitHubGitHub/mythicagents/medusa
ペネトレーションテストフレームワーク特権昇格エクスプロイトフレームワーク横移動シェルコードポストエクスプロイトコマンド&コントロールレッドチーミングリモートアクセスツールシェルコード生成ペイロード開発
2085221日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
mythicagents/medusa

Medusa

Mythic向けのクロスプラットフォームC2エージェント。動的関数ロード、SOCKS5プロキシ、ファイル操作、シェルコードインジェクション、macOS/Windowsのポストエクスプロイテーションモジュールを備えています。

リポジトリを見る

Medusa ロゴ

Medusa

Medusa は、Python 3.8 と Python 2.7 の両方に対応したクロスプラットフォームエージェントです。

インストール

Medusa をインストールするには、リモートコンピュータに Mythic v3 がインストールされている必要があります。Mythic のインストール手順は Mythic プロジェクトページ で確認できます。

Mythic のインストールルートから、次のコマンドを実行します:

./mythic-cli install github https://github.com/MythicAgents/Medusa.git

インストール後、Mythic を再起動して新しいエージェントをビルドしてください。

RabbitMQ 設定メモ

Payload_Type/medusa/rabbitmq_config.json ファイルはテンプレートであり、ご利用の Mythic 環境と一致している必要があります。

  • rabbitmq_password を Mythic の RABBITMQ_PASSWORD 値(通常は Mythic の .env から取得)に設定します。
  • rabbitmq_host を RabbitMQ ホスト名/コンテナ名(docker-compose 構成では多くの場合 mythic_rabbitmq、ローカルバインドでは 127.0.0.1)に設定します。
  • mythic_server_host を Mythic サーバーのホスト名/コンテナ名(docker-compose 構成では多くの場合 mythic_server、ローカルバインドでは 127.0.0.1)に設定します。

主な機能

  • エージェント機能の動的ロード/アンロードにより、ディスク上でエージェントの機能が露出するのを抑止します。
  • カスタムスクリプトで使用する Python モジュールをメモリ内にロードします。
  • クロスプラットフォームの SOCKS5 プロキシ
  • macOS クリップボードリーダー、スクリーンショット取得、TCC データベース解析
  • アップロード/ダウンロードに対応したファイルブラウザ互換性
  • 動的な Python コードの Eval()
  • ベーシック認証プロキシ対応

コマンドマニュアル クイックリファレンス

ベースエージェントと同梱のコマンドはすべて Python 標準ライブラリを使用しているため、動作に追加パッケージは必要ありません。エージェントはコマンドをスレッドで実行するため、長時間かかるアップロードやダウンロードでもメインエージェントをブロックしません。

一般コマンド

macOS コマンド

Windows コマンド

Python バージョン

Medusa エージェントの両バージョンは、標準ライブラリで記述された AES256 HMAC 実装を使用しています(こちら から改変)。そのため、標準の Python インストール以外の追加依存関係は必要ありません。これにより、エージェントは Windows、Linux、macOS の各ホストで動作するはずです。なお、この暗号実装は大きなファイル(スクリーンショット、ダウンロードなど)の処理時に多少のオーバーヘッドが発生しますが、実用上問題ありません。

Py2 と Py3 のコマンド

Payload_Type/Medusa/agent_code ディレクトリ内には、py2 と py3 の両方のサフィックスが付いた base_agent ファイルがあります。同様に、個々の関数ファイルにも同じようなファイル拡張子があります。

これらは builder.py スクリプトによって読み取られ、まず Medusa エージェントの正しいベース Python バージョンが選択されます。次に builder.py は、選択された Python バージョンに固有のコマンドを含めます。コマンドが .py 拡張子のみを持つ場合は、Py2 と Py3 の間で代替コードが必要ないという前提で、そのファイルがデフォルトで使用されます。

スレッドジョブ

Medusa はジョブ実行に基本的なスレッド処理を使用します。ジョブが長時間実行される可能性がある場合、jobkill タスクからのシグナルに応答する「停止チェック」を実装できます。これは、以下のようなコードスニペットで実装できます:

root@kitploit:~
if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]:
  # Some job-specific tidy up
  return "Job stopped."

このハンドラは、download、upload、watch_dir、screenshot コマンド内で実装されています。

さらに、長時間実行するジョブが継続的な出力を提供する場合、ベースエージェントに含まれる sendTaskOutputUpdate 関数を使用して、タスク完了前に Mythic を更新できます。継続的な出力を提供し、jobkill で停止できるダミー関数を以下に示します。

root@kitploit:~
def dummyFunction(self, task_id):
  while(True):
      # Check if we've got a stop signal.
      if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]: return "Job stopped."

      # Send output back to Mythic
      self.sendTaskOutputUpdate(task_id, "We're still running")

      time.sleep(10)

サポートされている C2 プロファイル

Medusa は現在、http(AES256 HMAC 暗号化あり/なしの両方)と azure_blob の 2 つの C2 プロファイルをサポートしています。

HTTP プロファイル

HTTP プロファイルは、基本の非ダイナミックプロファイルを介して Mythic サーバーにコールバックします。タスクの取得には GET リクエスト、レスポンスの送信には POST リクエストを使用します。

謝辞

  • ブラウザスクリプトとエージェントコードは、@its_a_feature_ と @djhohnstein から改変したものです。
  • MacC2 および Cedric Owens によるこのブログ記事
  • EmPyre および Chris Ross によるこのブログ記事。
  • こちら で公開されている暗号の妙技。
  • エージェントアイコンは flaticon.com から。
ツールをダウンロード
CommandSyntaxDescription
catcat path/to/fileファイルの内容を読み取り、出力します。
cdcd [.. dir]作業ディレクトリを変更します(.. で 1 つ上のディレクトリに移動)。
cpcp src_file_or_dir dst_file_or_dirファイルまたはフォルダを指定先にコピーします。
cwdcwd作業ディレクトリを出力します。
downloaddownload [path]対象システムからファイルをダウンロードします。
download_bulkdownload_bulk [path1] [path2] ...1 つのタスクで対象システムから複数のファイルをダウンロードします。
exitexitコールバックを終了します。
envenv環境変数を出力します。
eval_codeeval_code [commands]Python コードを実行し、出力を返します。
jobkilljobkill [task id]長時間実行中のタスクに停止シグナルを送信します。
jobsjobsダウンロードなどの長時間実行中のタスクを一覧表示します。
list_moduleslist_modules [module_name]メモリ内のモジュール、または特定のモジュールの完全なファイル一覧を表示します。
loadload command新しい機能をエージェントにロードします。
load_moduleload_moduleZIP 圧縮された Python モジュールをメモリにロードします(こちら と こちら から改変)。
load_scriptload_scriptエージェント経由で Python スクリプトをロードして実行します。
lsls [. path][path] 内のファイルとフォルダを一覧表示します。カレントディレクトリを指定するには . を使用します。
mvmv src_file_or_dir dst_file_or_dirファイルまたはフォルダを指定先に移動します。
pip_freezepip_freezeシステムにインストールされているパッケージをプログラム的に一覧表示します。
ptypty [/bin/bash] / pty self / pty fork対話型 PTY セッションを開きます。モード: spawn はプログラムを PTY 付きで実行し、self はライブなエージェント状態を保持した同一プロセス内の Python REPL を開き、fork はスナップショットされた状態を持つ Python REPL にエージェントをフォークします(Linux/macOS のみ)。
rmrm file_or_dirファイルまたはフォルダを削除します。
shellshell [command]subprocess.Popen() を使用してシェルコマンドを実行します。コマンドの完了を待つため、エージェントをブロックしないよう注意してください。
sockssocks start/stop [port]Medusa エージェント経由で SOCKS5 プロキシを開始/停止します。
sleepsleep [seconds] [jitter percentage]エージェントのコールバック間隔を秒単位で設定します。
unloadunload commandエージェントから既存の機能をアンロードします。
unload_moduleunload_module module_name以前メモリにロードした Python モジュールをアンロードします。
uploaduploadマシン上のリモートパスにファイルをアップロードします。
watch_dirwatch_dir path secondsターゲットディレクトリ内の変更を監視し、指定した間隔で変更をポーリングします。
CommandSyntaxDescription
clipboardclipboardクリップボードの内容を出力します(Cedric Owens が こちら で説明している Objective-C API を使用。macOS のみ、Python 2.7 のみ)。
list_appslist_appsmacOS アプリケーションを一覧表示します(Python 2.7 のみ、macOS のみ)。
list_tcclist_tcc [path]macOS TCC データベースのエントリを一覧表示します(フルディスクアクセスが必要で、現時点では Big Sur のみ)。
screenshotscreenshotスクリーンショットを撮影します(Objective-C API を使用。macOS のみ、Python 2.7 のみ)。
spawn_jxaspawn_jxaosascript プロセスを起動し、Javascript コンテンツをパイプで渡します。
vscode_list_recentvscode_list_recent [state_db]VSCode で最近開いたファイルとフォルダを一覧表示します。
vscode_open_editsvscode_open_edits [backup_dir_path]VSCode でファイルに加えた未保存の変更を一覧表示します。
vscode_watch_editsvscode_watch_edits [path to remote dir] [poll_interval]指定した間隔で VSCode のバックアップディレクトリをポーリングし、未保存の編集を確認します。
CommandSyntaxDescription
shinjectshinjectCreateRemoteThread を使用してターゲット PID にシェルコードを注入します(Windows のみ - こちら から改変)。
load_dllload_dll dll_path dll_exportディスク上の DLL をロードし、エクスポートされた関数を実行します(注意: この DLL は完了時に int 値を返す必要があります。たとえば msfvenom で作成した DLL は、完了時にエージェントを強制終了させます)。
list_dllslist_dlls [pid]ローカルまたはターゲットプロセスのプロセスメモリ(PEB)を読み取り、ロード済み DLL の一覧を取得します(Python 3 のみ)
pspsPID、プロセス名、アーキテクチャ、バイナリパスなど、限定的なプロセス情報を取得します(Python 3 のみ)
ps_fullps_fullPPID、整合性レベル、コマンドラインを含む完全なプロセス情報を取得します(Python 3 のみ)
killkillプロセス ID でプロセスを終了します(Python 3 のみ)