Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DVS — D(COM) V(ulnerability) S(canner) 別名 Devious swiss army knife - DCOM オブジェクトを使用した横方向の移動 | Kitploit
ツール/GitHubGitHub/scorpioneslabs/dvs
エクスプロイト横移動ポストエクスプロイトペネトレーションテストコマンド&コントロールレッドチーミング
GitHubscorpioneslabs/dvs

DVS

D(COM) V(ulnerability) S(canner) 別名 Devious swiss army knife - DCOM オブジェクトを使用した横方向の移動

リポジトリを見る
25647135年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

D(COM) V(ulnerability) S(canner) 別名「狡猾なスイスアーミーナイフ」 - DCOM オブジェクトを使用した横方向の移動

内部ネットワークを横方向に移動する方法や、EDR に警告を発することなくリモートマシンと対話する方法を考えたことはありますか? 有効な資格情報を持っているか、リモートマシンにアクセスできるアクティブなセッションがあるが、既知、予想、または高度に監視された方法(WMI、タスクスケジューラ、WinRM、PowerShell リモート処理など)でリモートでプロセスを実行する選択肢がないと仮定しましょう。

このようなシナリオでは、DVS フレームワークが救いの手を差し伸べます。

DVS フレームワークはスイスアーミーナイフであり、リモート DCOM オブジェクトの脆弱な関数を列挙し、それらを起動し、さらにはそれらを使用して攻撃を開始することができます。

このフレームワークは「レッドチーム」の考え方で開発されており、ステルスな方法を使用してリモートマシンを侵害します。

DVS フレームワークには、DCOM に対するリモートの堅牢化を リモートから 再び有効にし、攻撃ユーザーに必要な権限を自動的に付与することでバイパスするさまざまな方法が含まれています。

また、フレームワークはリモートマシンの変更を攻撃前の元の状態に戻すこともでき、防御側からこれらの変更を隠します。

私たちの主な洞察は、このツールが aqsome テクニック(Invoke-RegisterRemoteSchema について以下を参照)を使用して、脆弱ではない DCOM オブジェクトを介してコマンドを実行できることです。

PowerShell 2.0 以降と互換性あり

YouTube ビデオ PoC: DVS

免責事項

このツールはテストおよび教育目的のみです。このコードのその他の使用は許可されていません。自己責任で使用してください。
作成者は、このツールの誤用によるいかなる責任も負いません。
使用することにより、このツールの使用によって生じた損害に対する責任はすべて利用者にあることを認めたものとします。

レジストリアクセス - DVS フレームワークがそのプロトコルを利用する方法

  • リモートレジストリアクセス(MS-RRP)

    1. ポート 445 を調べてリモートレジストリと対話する
    2. リモートレジストリが有効かどうかを確認する
    3. リモートレジストリと対話する
    4. AutoGrant モードがフラグされている場合、書き込み権限を確認する。それ以外の場合は読み取り権限を確認する
  • 標準レジストリプロバイダー(リモートレジストリが拒否された場合)

    1. ポート 135 を調べて WMI を使用した「標準レジストリプロバイダー」と対話する
    2. StdRegProv にアクセス可能かどうかを確認する
    3. 標準レジストリプロバイダーと対話する
    4. AutoGrant モードがフラグされている場合、書き込み権限を確認する。それ以外の場合は読み取り権限を確認する

このツールはなぜこれほどステルスなのか?

DVS ツールは、まず以下の手順でプリンシパル ID がリモートマシンにアクセスできるかどうかを確認します。

  • 基本アクション

    1. 認証操作(SkipRegAuth がフラグされていない場合)
      1. 資格情報が提供された場合は「ネットオンリー」セッションを作成します。それ以外の場合は現在ログオンしているセッションを使用します。
      2. レジストリアクセスを調べます。
    2. DCOM 機能が有効かどうかを確認します
    3. DCOM アクセスを許可します(AutoGrant がフラグされている場合)、それ以外の場合は失敗します
    4. ログオンしているユーザー/提供されたユーザーとそのユーザーが所属するグループ(adsi/WindowsIdentity 機能を介して)が DCOM との対話を許可されているかどうかを確認します(リモートレジストリクエリを介して)
    5. 権限を付与します(AutoGrant がフラグされている場合)、それ以外の場合は失敗します
    6. NetBIOS over TCP(NetAPI32 または UDP パケットを使用)を使用してリモートマシンからドメイン名を解決します。失敗した場合はレジストリ(HKLM または HKCU ハイブ)を使用して試みます
  • Invoke-DCOMObjectScan

    1. DCOM オブジェクトと対話します
    2. DCOM オブジェクトを列挙し、脆弱な関数を見つけます
    3. 悪用の可能性を検証します
    4. 実行ペイロードを生成します
    5. 脆弱な DCOM オブジェクトに関する個人情報を取得します
  • Get-ExecutionCommand

    1. 実行ペイロードを生成します
  • Invoke-ExecutionCommand

    1. DCOM オブジェクトとの対話を試みます
    2. コマンドを実行します
  • Invoke-RegisterRemoteSchema

    1. 以下のいずれかの DCOM オブジェクトとの対話を試みます:
      • InternetExplorer.Application - InternetExplorer COM オブジェクト
      • {D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E} - Internet Explorer に属する別の COM オブジェクト
      • {C08AFD90-F2A1-11D1-8455-00A0C91F3880} - ShellBrowserWindow
      • {9BA05972-F6A8-11CF-A442-00A0C90A8F39} - ShellWindows
    2. リモートスキーマ(例: http://)を登録します
    3. スキーマを構成して、スキーマの内容からコマンドを実行できるようにします
    4. コマンドを実行します

ツールのコンポーネント

  • セキュリティ権限分析ツール - リモート DCOM オブジェクトにアクセスするためのプリンシパル ID の権限を分析します
  • リモートアクセス許可 - ログオンユーザーにリモートで権限を付与します(まだ付与されていない場合)
  • DCOM スキャナー - 提供されている脆弱な関数(パターンと関数名を指定する必要があります)についてリモート/ローカル DCOM オブジェクトをスキャンして分析します ツールが脆弱な関数を検出すると、関数に含まれる引数と、その関数がコマンドを実行できるかどうかを確認します
  • DCOM コマンド生成ツール - リモートマシンで実行するための PowerShell ペイロードを生成します
  • レポート - 脆弱な DCOM オブジェクトに関するすべての情報を含む CSV レポートを生成します
  • コマンド実行 - DCOM オブジェクトを介してコマンドを実行します

作成者

  • Nimrod Levy

ライセンス

  • GPL v3

テスト済みシナリオ

  • ドメイン外からドメインへ
  • ドメイン内から別のドメイン参加マシンへ
  • ドメインからドメイン外へ
  • 現在のセッションから別のドメイン参加マシンへ

テスト済みオペレーティングシステム

  • Windows 7 SP1
  • Windows 8.1
  • Windows 10
  • Windows Server 2019

クレジット

  • Rafel Ivgi 氏 - 指導とツールのアーキテクチャの考え方のサポートに感謝します。
  • Yossi Sasi 氏 - スクリプトの最適化の支援に感謝します。
  • Gleb Glazkov 氏 - 緩和策と防止策のセクションの執筆に感謝します。

インストール:

git clone https://github.com/ScorpionesLabs/DVS
powershell -ep bypass
PS> Import-Module .\DVS.psm1
PS> Get-Help Invoke-DCOMObjectScan -Detailed  # Invoke-DCOMObjectScan コマンドの詳細を取得します
PS> Get-Help Get-ExecutionCommand -Detailed # Get-ExecutionCommand コマンドの詳細を取得します
PS> Get-Help Invoke-ExecutionCommand -Detailed # Invoke-ExecutionCommand コマンドの詳細を取得します
PS> Get-Help Invoke-RegisterRemoteSchema -Detailed # Invoke-RegisterRemoteSchema コマンドの詳細を取得します

Invoke-DCOMObjectScan

Invoke-DCOMObjectScan 関数を使用すると、DCOM オブジェクトをスキャンし、ファイルに含めたパターンのリストまたは正確な関数名を介して脆弱な関数を見つけることができます。

  • 例:

    1. DC01 ホスト上の攻撃者マシンから MMC20.Application (ProgID) オブジェクトを列挙してスキャンします。レジストリは照会しません。

         Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -HostList DC01 -SkipRegAuth -Username "lab\administrator" -Password "Aa123456!" -Verbose
      

    注: ツールは ACL 権限を分析しません。ツールが成功すると、オブジェクトに関するすべての情報(オブジェクト名、実行可能ファイルなど、レジストリに記載されている詳細を除く)を解決します。

    1. DC01 ホスト上の攻撃者マシンから MMC20.Application (ProgID) オブジェクトにアクセス可能かどうかを、DCOM オブジェクトのアクセスリストを事前に照会および確認せずにチェックします。

         PS> Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -HostList DC01 -SkipPermissionChecks -CheckAccessOnly -Verbose
      
    2. MMC20.Application (ProgID) が範囲 10.211.55.4/24 を介して適用可能かどうかを検証します。存在する場合、ツールはその情報の列挙を試みます(現在ログオンしているユーザーセッションを使用)。

         PS> Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -Hostlist "10.211.55.4/24" -CheckAccessOnly -Verbose
      
    3. CLSID {00020812-0000-0000-C000-000000000046} が IP アドレス 10.211.55.4 を介してオブジェクトとして存在し、アクセス可能かどうかを検証します。存在する場合、ツールはその情報を解決します(lab\administrator 資格情報を使用)。

         PS> Invoke-DCOMObjectScan -Type Single -ObjectName "{00020812-0000-0000-C000-000000000046}" -Hostlist "10.211.55.4" -CheckAccessOnly -Username "lab\administrator" -Password "Aa123456!" -Verbose   
      
    4. 指定されたパス(例: C:\Users\USERNAME\Desktop\DVS\objects.txt)に保存されているすべてのオブジェクトを IP アドレス 10.211.55.4 を介してスキャンし、指定されたファイル(vulnerable.txt など)にある関数リストを lab\administrator 資格情報を使用して見つけます。設定は以下の通り:
      最大深度: 4
      最大結果: 1 (オブジェクトごとに 1 つの結果)
      AutoGrant モード: オブジェクトにアクセスできないか、DCOM 機能が無効な場合、DCOM 機能を有効にし、該当する DCOM オブジェクトに自動的に許可を実行します。
      最後に、マシンを攻撃前と同じ状態に戻します。

         PS> Invoke-DCOMObjectScan -MaxDepth 4 -Type List -ObjectListFile "C:\Users\USERNAME\Desktop\DVS\objects.txt" -FunctionListFile "C:\Users\USERNAME\Desktop\DVS\vulnerable.txt" -AutoGrant -Username "lab\administrator" -Password "Aa123456!" -Hostlist "10.211.55.4" -MaxResults 1 -Verbose
      
    5. 10.211.55.1/24 範囲の利用可能なリモートマシンに保存されているすべてのオブジェクトをスキャンし、選択されたファイル(例: C:\Users\USERNAME\Desktop\DVS\vulnerable.txt)のリストから潜在的な脆弱な関数を見つけ、選択されたファイル(例: C:\Users\USERNAME\Desktop\DVS\exclude.txt)のオブジェクトを除外し、同じオブジェクト上の他のルートにある同じ名前のプロパティをスキップします。
      注: SkipSameProperyName フラグは、同じプロパティ名が異なるプリファレンス(メソッド/その他のプロパティ)または異なる深度チェーンを持つ場合、脆弱な関数を見逃す可能性があります。

         PS> Invoke-DCOMObjectScan -MaxDepth 4 -Type All  -FunctionListFile "C:\Users\USERNAME\Desktop\DVS\vulnerable.txt" -ExcludeFileList "C:\Users\USERNAME\Desktop\DVS\exclude.txt" -Hostlist "10.211.55.1/24" -SkipSameProperyName -Verbose
      

Get-ExecutionCommand

Get-ExecutionCommand 関数を使用すると、リモート DCOM 関数と対話し、関連するパラメータで実行する PowerShell ペイロードを生成できます。

  • 例:
    1. IP アドレス 10.211.55.4 を介して、lab\administrator 資格情報を使用して、プリンシパル ID が {00020812-0000-0000-C000-000000000046} CLSID オブジェクトとの対話を許可されているかどうかを確認し、実行コマンドを生成します。

         PS> Get-ExecutionCommand -ObjectName "{00020812-0000-0000-C000-000000000046}" -ObjectPath "DDEInitiate" -HostList "10.211.55.4" -Username "lab\Administrator" -Password "Aa123456!" -Verbose
      
    2. DCOM アクセスを確認します。
      プリンシパル ID に必要な権限がない場合、または DCOM 機能が無効な場合、ツールは DCOM 機能を有効にし、ID アクセスを許可して、lab\administrator 資格情報を使用して IP アドレス 10.211.55.4 を介して MMC20.Application (ProgID) オブジェクトと対話し、実行コマンドを生成します。
      最後に、マシンを攻撃前と同じ状態に戻します。

         PS> Get-ExecutionCommand -ObjectName "MMC20.Application" -ObjectPath "Document.ActiveView.ExecuteShellCommand" -HostList "10.211.55.4" -Username "lab\Administrator" -Password "Aa123456!" -AutoGrant -Verbose
      
ツールをダウンロード