Mythic
Reading time: 14 minutes
Mythicとは?
Mythicは、レッドチーミングのために設計されたオープンソースのモジュラーコマンド&コントロール(C2)フレームワークです。セキュリティ専門家は、Windows、Linux、macOSを含むさまざまなオペレーティングシステムにわたって、さまざまなエージェント(ペイロード)を管理および展開することができます。Mythicは、エージェントの管理、コマンドの実行、結果の収集を行うためのユーザーフレンドリーなウェブインターフェースを提供し、制御された環境での実際の攻撃をシミュレートするための強力なツールとなっています。
インストール
Mythicをインストールするには、公式の Mythic repo の指示に従ってください。
エージェント
Mythicは、侵害されたシステム上でタスクを実行するペイロードである複数のエージェントをサポートしています。各エージェントは特定のニーズに合わせて調整でき、異なるオペレーティングシステムで実行できます。
デフォルトでは、Mythicにはエージェントがインストールされていません。ただし、https://github.com/MythicAgentsにいくつかのオープンソースエージェントを提供しています。
そのリポジトリからエージェントをインストールするには、次のコマンドを実行するだけです:
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 実行中:
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エージェントです。
インストール方法:
./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として実行することで一般的なアクションを実行することが可能になります(通常はよりステルス性があります)。
インストールを開始するには:
./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-whoami
やforge_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エージェントです。
./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を開き、ターゲットシステム上のシェルとの直接的な対話を可能にする。