
D(COM) V(ulnerabilidade) S(canner) também conhecido como Canivete Suíço Traiçoeiro - Movimento lateral usando objetos DCOM
Você já se perguntou como pode se mover lateralmente através de redes internas? Ou interagir com máquinas remotas sem alertar os EDRs?
Vamos supor que temos credenciais válidas, ou uma sessão ativa com acesso a uma máquina remota, mas estamos sem uma opção para executar um processo remotamente de uma forma conhecida, esperada ou altamente monitorada (ex.: WMI, Agendador de Tarefas, WinRM, PowerShell Remoting).
Para esses cenários, o framework DVS vem ao resgate.
O framework DVS é um canivete suíço que permite enumerar funções vulneráveis de objetos DCOM remotos, lançá-los e até lançar ataques usando-os.
O framework está sendo desenvolvido com uma mentalidade "Red Team" e usa métodos furtivos para comprometer máquinas remotas.
O framework DVS contém várias maneiras de contornar o hardening remoto contra DCOM, reabilitando o acesso DCOM remotamente e concedendo automaticamente as permissões necessárias ao usuário atacante.
O framework também pode reverter alterações na máquina remota ao seu estado original, antes do ataque - ocultando essas mudanças dos defensores.
Nosso principal insight é que a ferramenta também pode executar comandos usando objetos DCOM não vulneráveis através de uma técnica interessante (Leia abaixo sobre Invoke-RegisterRemoteSchema)
Compatível com PowerShell 2.0 e superior
Vídeo PoC no Youtube: DVS
Esta ferramenta é apenas para fins de teste e educacionais. Qualquer outro uso deste código não é permitido. Use por sua própria conta e risco.
O autor NÃO assume responsabilidade pelo uso indevido desta ferramenta.
Ao usar esta ferramenta, você aceita que qualquer dano causado pelo uso dela é de sua responsabilidade.
Acesso remoto ao registro (MS-RRP)
AutoGrant estiver marcado, verificar permissões de escrita; caso contrário, verificar permissões de leituraProvedor de Registro Padrão (Se o registro remoto for negado)
StdRegProv está acessívelAutoGrant estiver marcado, verificar permissões de escrita; caso contrário, verificar permissões de leituraA ferramenta DVS primeiro verifica se a identidade principal tem acesso à máquina remota através das seguintes etapas:
Ações básicas
SkipRegAuth não estiver marcado)
AutoGrant estiver marcado), caso contrário, falharadsi/WindowsIdentity) têm permissão para interagir com o DCOM (através de consultas ao registro remoto)AutoGrant estiver marcado), caso contrário, falharHKLM ou HKCU)Invoke-DCOMObjectScan
Get-ExecutionCommand
Invoke-ExecutionCommand
Invoke-RegisterRemoteSchema
git clone https://github.com/ScorpionesLabs/DVS
powershell -ep bypass
PS> Import-Module .\DVS.psm1
PS> Get-Help Invoke-DCOMObjectScan -Detailed # Obter detalhes do comando Invoke-DCOMObjectScan
PS> Get-Help Get-ExecutionCommand -Detailed # Obter detalhes do comando Get-ExecutionCommand
PS> Get-Help Invoke-ExecutionCommand -Detailed # Obter detalhes do comando Invoke-ExecutionCommand
PS> Get-Help Invoke-RegisterRemoteSchema -Detailed # Obter detalhes do comando Invoke-RegisterRemoteSchema
A função Invoke-DCOMObjectScan permite escanear objetos DCOM e encontrar funções vulneráveis através de uma lista de padrões ou nomes exatos de funções que você incluiu em um arquivo.
Exemplos:
Enumera e escaneia o objeto MMC20.Application (ProgID) da máquina atacante para o host DC01 sem consultar o registro.
Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -HostList DC01 -SkipRegAuth -Username "lab\administrator" -Password "Aa123456!" -Verbose
Nota: A ferramenta não analisará permissões ACL e, quando bem-sucedida, resolverá todas as informações sobre o objeto, exceto os detalhes mencionados no registro (como nome do objeto, arquivo executável, etc.)
Verifica se o objeto MMC20.Application (ProgID) está acessível da máquina atacante para o host DC01 sem primeiro consultar e verificar a lista de acesso do objeto DCOM.
PS> Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -HostList DC01 -SkipPermissionChecks -CheckAccessOnly -Verbose