Commando VM: この種の最初の Windows 攻撃的ディストリビューション

news

 

安定したサポートされている Linux テスト プラットフォームを探しているペネトレーション テスターにとって、業界は Kali が頼りになるプラットフォームであることに同意しています。ただし、オペレーティング システムとして Windows を使用したい場合は、適切なプラットフォームが存在しないことに気付いたかもしれません。セキュリティ研究者として、誰もが少なくとも 1 回は Windows の作業環境をカスタマイズするのに何時間も費やしたことがあるでしょう。また、顧客との契約中に同じツール、ユーティリティ、および手法を使用しています。したがって、すべてのツール セットを最新の状態に保ちながらカスタム環境を維持することは、すべての人にとって単調な作業になる可能性があります。それを認識して、ペネトレーション テスターとレッド チームのサポートに重点を置いた Windows ディストリビューションを作成しました。

リバース エンジニアリングとマルウェア分析に重点を置いた人気のFLARE VMから生まれた Complete Mandiant Offensive VM (「Commando VM」) には、自動化されたスクリプトが付属しており、各自が独自の侵入テスト環境を構築し、VM のプロビジョニングと展開のプロセスを容易にするのに役立ちます。 .このブログ投稿は、Commando VM の機能、インストール手順、およびプラットフォームの使用例について説明することを目的としています。 Commando VM を見つけるには、Github にアクセスしてください。

Commando VM について

侵入テスターは通常、Active Directory 環境を評価する際に、Windows マシンの独自のバリアントを使用します。 Commando VM は、これらの内部侵入テストを実行するための頼りになるプラットフォームになるように特別に設計されました。 Windows マシンを使用する利点には、Windows と Active Directory のネイティブ サポート、VM を C2 フレームワークのステージング領域として使用すること、共有をより簡単に (インタラクティブに) 参照できること、配置を気にせずにPowerViewBloodHoundなどのツールを使用できることが含まれます。クライアント資産の出力ファイル。

Commando VM はBoxstarterChocolatey 、およびMyGetパッケージを使用してすべてのソフトウェアをインストールし、侵入テストをサポートする多くのツールとユーティリティを提供します。このリストには、次のような 140 以上のツールが含まれています。

このような汎用性により、Commando VM はすべてのペネトレーション テスターとレッド チームにとって事実上の Windows マシンになることを目指しています。これを読んでいるブルー チームの皆さんも心配はいりません。ブルー チームも完全にサポートしています。 Commando VM に含まれる多用途のツール セットは、ネットワークを監査し、検出機能を向上させるために必要なツールをブルー チームに提供します。攻撃ツールのライブラリを使用すると、ブルー チームが攻撃ツールや攻撃の傾向に遅れずについていくことが容易になります。

 

ブルーチームのフルサポート

図 1: ブルーチームの完全サポート

インストール

FLARE VM と同様に、仮想マシンで Commando VM を使用することをお勧めします。これにより、展開が容易になり、各エンゲージメントの前にクリーンな状態に戻すことができます。独自の仮想化環境のセットアップと構成の経験があることを前提としています。次の最小仕様で新しい仮想マシン (VM) を作成することから始めます。

  • 60 GB のディスク容量
  • 2GBのメモリ

次に、Windows の新規インストールを実行します。 Commando VM は、Windows 7 Service Pack 1 または Windows 10 にインストールするように設計されており、Windows 10 ではより多くの機能をインストールできます。

Windows のインストールが完了したら、特定の VM ゲスト ツール (VMware Tools など) をインストールして、コピー/貼り付けや画面のサイズ変更などの追加機能を許可することをお勧めします。この時点から、すべてのインストール手順を VM 内で実行する必要があります。

  1. Windows Update ユーティリティを使用して、Windows が最新のパッチで完全に更新されていることを確認します。注: 再起動後、アップデートを再度確認する必要がある場合があります。
  2. この時点で VM のスナップショットを作成して、インストール前に Windows のクリーンなインスタンスを作成することをお勧めします。
  3. 次の URL に移動し、圧縮された Commando VM リポジトリを VM にダウンロードします。
  4. Commando VM のインストールを完了するには、次の手順に従います。
    1. Commando VM リポジトリを選択したディレクトリに解凍します。
    2. 昇格された特権で PowerShell の新しいセッションを開始します。 Commando VM は、追加のソフトウェアをインストールし、システム設定を変更しようとします。したがって、インストールにはエスカレートされた権限が必要です。
    3. PowerShell 内で、Commando VM リポジトリを解凍した場所にディレクトリを変更します。
    4. 次のコマンドを実行し、PowerShell からプロンプトが表示されたら「 Y 」と答えて、PowerShell の実行ポリシーを無制限に変更します。
      • Set-ExecutionPolicy 無制限
    5. install.ps1インストール スクリプトを実行します。現在のユーザーのパスワードを入力するよう求められます。 Commando VM は、再起動後に自動的にログインするために現在のユーザーのパスワードを必要とします。必要に応じて、コマンド ラインで「-password <current_user_password>」を渡すことにより、現在のユーザーのパスワードを指定できます。

 

実行中のインストールスクリプト

図 2: 実行中のインストール スクリプト

残りのインストール プロセスは完全に自動化されています。インターネットの速度によっては、インストール全体が完了するまでに 2 ~ 3 時間かかる場合があります。ソフトウェアのインストール要件が多数あるため、VM は複数回再起動します。インストールが完了すると、PowerShell プロンプトが開いたままになり、終了する前に任意のキーを押すのを待ちます。インストールが完了すると、次のデスクトップ環境が表示されます。

 

インストール後のデスクトップ環境

図 3: インストール後のデスクトップ環境

この時点で、マシンを再起動して、最終的な構成変更を有効にすることをお勧めします。再起動後、Commando VM が正常にインストールされます。 VM の電源をオフにしてから、別のスナップショットを作成してクリーンな VM の状態を保存し、将来のエンゲージメントで使用することをお勧めします。

コンセプトの証明

Commando VM は、内部エンゲージメントのサポートを主な目的として構築されています。 Commando VM の機能を紹介するために、Active Directory 展開の例を作成しました。このテスト環境は不自然かもしれません。ただし、Mandiant のレッド チームが実際の環境でよく観察する設定ミスを表しています。

Nmapを使用してネットワーク スキャンを実行することにより、Commando VM の使用を開始します。

 

Commando VM を使用した Nmap スキャン

図 4: Commando VM を使用した Nmap スキャン

簡単に解決できる方法を探していると、管理目的で一般的に使用されるポートである TCP ポート 8080 で興味深い Web サーバーを実行しているホスト マシンを見つけました。 Firefoxを使用すると、HTTP over TCP ポート 8080 経由でサーバーに接続できます。

 

ホストで実行されている Jenkins サーバー

図 5: ホストで実行されている Jenkins サーバー

Burp Suite のIntruderを起動して、ログインのブルート フォースを試してみましょう。 Desktop フォルダの Wordlists ディレクトリに移動し、 SecLists内から任意のパスワード ファイルを選択します。

 

SecLists パスワード ファイル

図 6: SecLists パスワード ファイル

Burp の Intruder を設定して応答を分析した後、パスワード「admin」によって Jenkins コンソールへのアクセスが許可されていることがわかりました。クラシック。

 

Jenkins サーバーの総当たり攻撃の成功

図 7: Jenkins サーバーの総当り攻撃の成功

Jenkins サーバーにはスクリプト コンソールがインストールされており、Windows システムでは既定で NT AUTHORITYSYSTEM として実行されることはよく知られています。これを利用して、特権コマンドを実行できます。

 

Jenkins スクリプト コンソール

図 8: Jenkins スクリプト コンソール

コマンドを実行できるようになったので、次のステップには多くのオプションがあります。とりあえず、ボックスを調べて機密ファイルを探します。ユーザー ディレクトリを参照すると、パスワード ファイルと秘密 SSH キーが見つかります。

パスワードを含むファイル

図 9: パスワードを含むファイル

CredNinjaを使用して、ドメイン コントローラーに対してこれらの資格情報を検証してみましょう。

 

ドメイン ユーザーの有効な資格情報

図 10: ドメイン ユーザーの有効な資格情報

資格情報が有効であることがわかったので、もう一度 CredNinja を実行して、ユーザーがローカル管理者権限を持っている可能性のあるホストを確認できます。

 

CredNinja を実行してローカルの管理権限を特定する

図 11: CredNinja を実行してローカルの管理者権限を特定する

以前の Jenkins ホスト 192.168.38.104 に対する管理権限しかないようです。ただし、有効なドメイン資格情報を取得したので、ドメインに対する偵察活動を開始できます。 runas /netonly /user:windomain.localniso.sepersky cmd.exeを実行してパスワードを入力すると、認証済みのコマンド プロンプトが起動して実行されます。

 

WINDOMAIN として実行niso.sepersky

図 12: WINDOMAINniso.sepersky として実行されている cmd.exe

図 12 は、ドメイン コントローラー上の SYSVOL ファイル共有の内容を正常に一覧表示し、ドメイン アクセスを確認できることを示しています。ここで、PowerShell を起動し、PowerView で共有ハンティングを開始します。

 

PowerView の Invoke-ShareFinder 出力

図 13: PowerView の Invoke-ShareFinder 出力

また、侵害されたユーザー アカウントが利用できるグループと権限についても興味があります。悪用後のフレームワークPowerViewGet-DomainUserモジュールを使用して、Active Directory からユーザーの詳細を取得してみましょう。 Commando VM はデフォルトでPowerViewの「dev」ブランチを使用することに注意してください。

 

Get-DomainUser の勝利

図 14: Get-DomainUser の勝利

また、以前に見つけた SSH キーを使用して、さらなるアクセスを確認したいと考えています。ポート スキャンを見ると、TCP ポート 22 が開いているホストが 1 つ特定されます。 MobaXtermを使用して、そのサーバーに SSH で接続できるかどうかを確認してみましょう。

 

MobaXterm による SSH

図 15: MobaXterm を使用した SSH

SSH サーバーにアクセスし、サーバーをルート化するための簡単なパスも見つけます。ただし、このアクセス権でドメイン権限を昇格させることはできませんでした。共有検索に戻りましょう。まず、前に見た非表示のソフトウェア共有から始めましょう。エクスプローラーを使用すると、ドメイン内の共有を簡単に参照できます。

 

windomain.local で共有を参照する

図 16: windomain.local での共有の参照

PowerView の Invoke-ShareFinder コマンドからの出力を使用して、共有を掘り下げ、機密情報を探し始めます。多くのファイルを調べた後、最終的に資格情報がハードコードされた config.ini ファイルを見つけます。

 

構成ファイル内の平文資格証明の識別

図 17: 構成ファイルで平文の資格情報を識別する

CredNinja を使用して、ドメイン コントローラに対してこれらの資格情報を検証し、ローカルの管理者権限があることを発見しました!

 

WINDOMAINsvcaccount 資格情報の検証

図 18: WINDOMAINsvcaccount 資格情報の検証

このユーザーのグループ メンバーシップを確認してみましょう。

 

WINDOMAINsvcaccount のグループ メンバーシップを表示しています

図 19: WINDOMAINsvcaccount のグループ メンバーシップの表示

幸運なことに、私たちは「Domain Admins」グループのメンバーです。

最終的な考え

デモで使用されるすべてのツールは、デフォルトで VM にインストールされます。ツールの完全なリストとインストール スクリプトについては、 Commando VM Github リポジトリを参照してください。ユーザーからのフィードバックに対応し、ツールや機能を追加し、多くの拡張機能を作成できることを楽しみにしています。私たちは、このディストリビューションがペネトレーション テスターの標準ツールになると信じており、Windows 攻撃プラットフォームの継続的な改善と開発を楽しみにしています。

参照: https://www.mandiant.com/resources/blog/commando-vm-windows-offensive-distribution

Comments

タイトルとURLをコピーしました