Mythic

Reading time: 14 minutes

Mythicとは?

Mythicは、レッドチーミングのために設計されたオープンソースのモジュラーコマンド&コントロール(C2)フレームワークです。セキュリティ専門家は、Windows、Linux、macOSを含むさまざまなオペレーティングシステムにわたって、さまざまなエージェント(ペイロード)を管理および展開することができます。Mythicは、エージェントの管理、コマンドの実行、結果の収集を行うためのユーザーフレンドリーなウェブインターフェースを提供し、制御された環境での実際の攻撃をシミュレートするための強力なツールとなっています。

インストール

Mythicをインストールするには、公式の Mythic repo の指示に従ってください。

エージェント

Mythicは、侵害されたシステム上でタスクを実行するペイロードである複数のエージェントをサポートしています。各エージェントは特定のニーズに合わせて調整でき、異なるオペレーティングシステムで実行できます。

デフォルトでは、Mythicにはエージェントがインストールされていません。ただし、https://github.com/MythicAgentsにいくつかのオープンソースエージェントを提供しています。

そのリポジトリからエージェントをインストールするには、次のコマンドを実行するだけです:

bash
sudo ./mythic-cli install github https://github.com/MythicAgents/<agent-name>
sudo ./mythic-cli install github https://github.com/MythicAgents/apfell

新しいエージェントは、Mythicがすでに実行中であっても、前のコマンドで追加できます。

C2 プロファイル

MythicのC2プロファイルは、エージェントがMythicサーバーと通信する方法を定義します。通信プロトコル、暗号化方法、およびその他の設定を指定します。Mythicのウェブインターフェースを通じてC2プロファイルを作成および管理できます。

デフォルトでは、Mythicはプロファイルなしでインストールされますが、リポジトリからいくつかのプロファイルをダウンロードすることが可能です https://github.com/MythicC2Profiles 実行中:

bash
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/<c2-profile>>
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/http

Apollo Agent

Apolloは、SpecterOpsのトレーニング提供に使用されるように設計された、4.0 .NET Frameworkを使用してC#で書かれたWindowsエージェントです。

インストール方法:

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

このエージェントには、Cobalt StrikeのBeaconに非常に似た多くのコマンドがあり、いくつかの追加機能があります。その中には、以下が含まれます:

一般的なアクション

  • cat: ファイルの内容を表示
  • cd: 現在の作業ディレクトリを変更
  • cp: ファイルをある場所から別の場所にコピー
  • ls: 現在のディレクトリまたは指定されたパスのファイルとディレクトリをリスト
  • pwd: 現在の作業ディレクトリを表示
  • ps: ターゲットシステム上で実行中のプロセスをリスト(追加情報付き)
  • download: ターゲットシステムからローカルマシンにファイルをダウンロード
  • upload: ローカルマシンからターゲットシステムにファイルをアップロード
  • reg_query: ターゲットシステム上のレジストリキーと値をクエリ
  • reg_write_value: 指定されたレジストリキーに新しい値を書き込み
  • sleep: エージェントのスリープ間隔を変更し、Mythicサーバーとのチェックイン頻度を決定
  • その他多数、helpを使用して利用可能なコマンドの完全なリストを表示。

権限昇格

  • getprivs: 現在のスレッドトークンで可能な限り多くの権限を有効に
  • getsystem: winlogonへのハンドルを開き、トークンを複製し、実質的にSYSTEMレベルに権限を昇格
  • make_token: 新しいログオンセッションを作成し、エージェントに適用し、他のユーザーのなりすましを可能に
  • steal_token: 他のプロセスからプライマリトークンを盗み、そのプロセスのユーザーをなりすますことを可能に
  • pth: Pass-the-Hash攻撃により、エージェントがNTLMハッシュを使用してユーザーとして認証できるようにし、平文のパスワードを必要としない
  • mimikatz: Mimikatzコマンドを実行して、メモリまたはSAMデータベースから資格情報、ハッシュ、およびその他の機密情報を抽出
  • rev2self: エージェントのトークンをプライマリトークンに戻し、実質的に権限を元のレベルに戻す
  • ppid: 新しい親プロセスIDを指定することで、ポストエクスプロイトジョブの親プロセスを変更し、ジョブ実行コンテキストの制御を向上
  • printspoofer: PrintSpooferコマンドを実行して印刷スプーラーのセキュリティ対策を回避し、権限昇格またはコード実行を可能に
  • dcsync: ユーザーのKerberosキーをローカルマシンに同期し、オフラインパスワードクラッキングやさらなる攻撃を可能に
  • ticket_cache_add: 現在のログオンセッションまたは指定されたものにKerberosチケットを追加し、チケットの再利用またはなりすましを可能に

プロセス実行

  • assembly_inject: リモートプロセスに.NETアセンブリローダーを注入することを許可
  • execute_assembly: エージェントのコンテキストで.NETアセンブリを実行
  • execute_coff: メモリ内でCOFFファイルを実行し、コンパイルされたコードのメモリ内実行を可能に
  • execute_pe: 非管理実行可能ファイル(PE)を実行
  • inline_assembly: 一時的なAppDomainで.NETアセンブリを実行し、エージェントのメインプロセスに影響を与えずにコードを一時的に実行
  • run: ターゲットシステム上でバイナリを実行し、システムのPATHを使用して実行可能ファイルを見つける
  • shinject: リモートプロセスにシェルコードを注入し、任意のコードのメモリ内実行を可能に
  • inject: エージェントのシェルコードをリモートプロセスに注入し、エージェントのコードのメモリ内実行を可能に
  • spawn: 指定された実行可能ファイルで新しいエージェントセッションを生成し、新しいプロセスでシェルコードを実行
  • spawnto_x64およびspawnto_x86: ポストエクスプロイトジョブで使用されるデフォルトのバイナリを指定されたパスに変更し、非常に騒がしいrundll32.exeをパラメータなしで使用しない。

Mithic Forge

これは、ターゲットシステム上で実行できる事前コンパイルされたペイロードとツールのリポジトリであるMythic ForgeからCOFF/BOFファイルをロードすることを可能にします。ロードできるすべてのコマンドを使用すると、現在のエージェントプロセスでそれらをBOFとして実行することで一般的なアクションを実行することが可能になります(通常はよりステルス性があります)。

インストールを開始するには:

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

その後、forge_collectionsを使用して、Mythic ForgeからCOFF/BOFモジュールを表示し、エージェントのメモリに選択してロードできるようにします。デフォルトでは、以下の2つのコレクションがApolloに追加されています:

  • forge_collections {"collectionName":"SharpCollection"}
  • forge_collections {"collectionName":"SliverArmory"}

モジュールが1つロードされると、forge_bof_sa-whoamiforge_bof_sa-netuserのような別のコマンドとしてリストに表示されます。

Powershell & スクリプト実行

  • powershell_import: 新しいPowerShellスクリプト(.ps1)をエージェントキャッシュにインポートし、後で実行できるようにします。
  • powershell: エージェントのコンテキストでPowerShellコマンドを実行し、高度なスクリプティングと自動化を可能にします。
  • powerpick: PowerShellローダーアセンブリを犠牲プロセスに注入し、PowerShellコマンドを実行します(PowerShellログなし)。
  • psinject: 指定されたプロセスでPowerShellを実行し、他のプロセスのコンテキストでスクリプトをターゲット実行できるようにします。
  • shell: エージェントのコンテキストでシェルコマンドを実行し、cmd.exeでコマンドを実行するのと似ています。

横移動

  • jump_psexec: PsExec技術を使用して、新しいホストに横移動するために、最初にApolloエージェント実行可能ファイル(apollo.exe)をコピーして実行します。
  • jump_wmi: WMI技術を使用して、新しいホストに横移動するために、最初にApolloエージェント実行可能ファイル(apollo.exe)をコピーして実行します。
  • wmiexecute: WMIを使用して、ローカルまたは指定されたリモートシステムでコマンドを実行し、オプションでなりすましのための資格情報を使用します。
  • net_dclist: 指定されたドメインのドメインコントローラーのリストを取得し、横移動の潜在的なターゲットを特定するのに役立ちます。
  • net_localgroup: 指定されたコンピュータのローカルグループをリストし、コンピュータが指定されていない場合はlocalhostがデフォルトになります。
  • net_localgroup_member: ローカルまたはリモートコンピュータ上の指定されたグループのローカルグループメンバーシップを取得し、特定のグループ内のユーザーを列挙できるようにします。
  • net_shares: 指定されたコンピュータ上のリモート共有とそのアクセス可能性をリストし、横移動の潜在的なターゲットを特定するのに役立ちます。
  • socks: ターゲットネットワーク上にSOCKS 5準拠のプロキシを有効にし、侵害されたホストを通じてトラフィックをトンネリングできるようにします。proxychainsなどのツールと互換性があります。
  • rpfwd: ターゲットホストの指定されたポートでリスニングを開始し、Mythicを通じてリモートIPおよびポートにトラフィックを転送し、ターゲットネットワーク上のサービスへのリモートアクセスを可能にします。
  • listpipes: ローカルシステム上のすべての名前付きパイプをリストし、IPCメカニズムと対話することで横移動や特権昇格に役立ちます。

その他のコマンド

  • help: 特定のコマンドに関する詳細情報またはエージェントで利用可能なすべてのコマンドに関する一般情報を表示します。
  • clear: タスクを「クリア」としてマークし、エージェントが取得できないようにします。すべてのタスクをクリアするにはallを指定するか、特定のタスクをクリアするにはtask Numを指定します。

Poseidon Agent

Poseidonは、LinuxとmacOSの実行可能ファイルにコンパイルされるGolangエージェントです。

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

ユーザーがLinux上で使用するいくつかの興味深いコマンドがあります:

一般的なアクション

  • cat: ファイルの内容を表示する
  • cd: 現在の作業ディレクトリを変更する
  • chmod: ファイルの権限を変更する
  • config: 現在の設定とホスト情報を表示する
  • cp: ファイルをある場所から別の場所にコピーする
  • curl: オプションのヘッダーとメソッドを使用して単一のウェブリクエストを実行する
  • upload: ターゲットにファイルをアップロードする
  • download: ターゲットシステムからローカルマシンにファイルをダウンロードする
  • その他多数

機密情報の検索

  • triagedirectory: ホスト内のディレクトリ内で興味深いファイルを見つける、例えば機密ファイルや資格情報。
  • getenv: 現在のすべての環境変数を取得する。

横移動

  • ssh: 指定された資格情報を使用してホストにSSH接続し、sshを生成せずにPTYを開く。
  • sshauth: 指定されたホストにSSH接続し、指定された資格情報を使用する。これを使用してリモートホストで特定のコマンドを実行したり、ファイルをSCPすることもできます。
  • link_tcp: TCP経由で別のエージェントにリンクし、エージェント間の直接通信を可能にする。
  • link_webshell: webshell P2Pプロファイルを使用してエージェントにリンクし、エージェントのウェブインターフェースへのリモートアクセスを可能にする。
  • rpfwd: リバースポートフォワードを開始または停止し、ターゲットネットワーク上のサービスへのリモートアクセスを可能にする。
  • socks: ターゲットネットワーク上でSOCKS5プロキシを開始または停止し、侵害されたホストを通じてトラフィックをトンネリングすることを可能にする。proxychainsなどのツールと互換性があります。
  • portscan: ホストのオープンポートをスキャンし、横移動やさらなる攻撃の潜在的なターゲットを特定するのに役立ちます。

プロセス実行

  • shell: /bin/sh経由で単一のシェルコマンドを実行し、ターゲットシステム上でのコマンドの直接実行を可能にする。
  • run: 引数付きでディスクからコマンドを実行し、ターゲットシステム上でのバイナリやスクリプトの実行を可能にする。
  • pty: インタラクティブなPTYを開き、ターゲットシステム上のシェルとの直接的な対話を可能にする。