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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Medusa — Mythic向けのクロスプラットフォームC2エージェント。動的関数ロード、SOCKS5プロキシ、ファイル操作、シェルコードインジェクション、macOS/Windowsのポストエクスプロイテーションモジュールを備えています。 | Kitploit
ツール/GitHubGitHub/mythicagents/medusa
ペネトレーションテストフレームワーク特権昇格エクスプロイトフレームワーク横移動シェルコードポストエクスプロイトコマンド&コントロールレッドチーミングリモートアクセスツールシェルコード生成ペイロード開発
2085241ヶ月前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 標準ライブラリを使用しているため、動作に追加パッケージは必要ありません。エージェントはコマンドをスレッドで実行するため、長時間かかるアップロードやダウンロードでもメインエージェントをブロックしません。

    一般コマンド

    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

    macOS コマンド

    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 のバックアップディレクトリをポーリングし、未保存の編集を確認します。

    Windows コマンド

    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 のみ)

    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 から。
    ツールをダウンロード
    システムにインストールされているパッケージをプログラム的に一覧表示します。
    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ターゲットディレクトリ内の変更を監視し、指定した間隔で変更をポーリングします。