Durante una prueba de penetración interna realizada por el equipo de Plaintext Cybersecurity Solutions, nos encontramos con un escenario interesante que involucraba a Duo Security.
El objetivo era conectarnos a un equipo vía RDP para ejecutar una aplicación crítica y mostrar al cliente el impacto de la vulnerabilidad. A pesar de contar con privilegios administrativos, que obtuvimos concatenando otros ataques, el servicio de Duo Security impedía la conexión como se puede observar en el siguiente mensaje:
En este post compartimos cómo descubrimos una forma de evadir este control, qué implicaciones tiene y por qué abre la discusión sobre los límites de la protección de soluciones de seguridad.
¿Qué es Duo Security?
Duo Security, adquirido por Cisco, es una solución que agrega doble factor de autenticación (2FA) a servicios como SSH, RDP y VPN, incluso en plataformas que no lo soportan de manera nativa.
Su fortaleza es proteger accesos críticos, pero su documentación reconoce ciertas limitaciones: por ejemplo, Duo no protege conexiones SMB en Windows.
Hallazgo Durante la Prueba
Considerando que Duo Security no protege conexiones SMB, nos conectamos desde otra PC vía SMB y accedimos al directorio donde estaba instalado Duo Security.
Nuestra primera idea era validar si ningún proceso estaba utilizando los archivos de Duo Security y hacer que el sistema no encontrara los archivos de Duo cuando los necesitara. En ese orden modificamos la carpeta que estaba en Duo Security llamada “WindowsLogon” a “WindowsLogon.old”.
Ahora al intentar hacer una conexión RDP notamos que el sistema automáticamente instala el Duo Security nuevamente y nos bloquea.
El siguiente mensaje de error muestra el bloqueo luego de la instalación.
Conociendo esto, lo que hicimos fue crear un script en PowerShell, al que llamamos DuoBypass, que hace un backup de todo el contenido de WindowsLogon en otro directorio y crea una réplica de los archivos, pero con contenido en blanco, para que el sistema piense que aún están instalados.
Una vez ejecutamos el script el directorio luce de la siguiente forma:
Y el contenido de la carpeta sería el siguiente, con todos los archivos en blanco.
Ahora, si intentamos conectarnos vía RDP, podemos satisfactoriamente conectarnos al equipo, haciendo evasión del control de 2FA. Aquí les dejo un video de la secuencia del ataque:
Reporte a Cisco y el equipo de Duo Security:
Notificamos el hallazgo al PSIRT de Cisco en agosto.
La respuesta fue rápida y cordial, pero indicaron que no lo consideran una vulnerabilidad, ya que el bypass requiere privilegios de administrador local, y existen múltiples formas de desactivar Duo Security en ese contexto (desinstalar, editar el registro, etc.).
Reflexiones
Un producto de seguridad debería ser resistente incluso frente a administradores locales comprometidos, tal como lo hacen EDRs y antivirus, que cuentan con mecanismos de autoprotección más robustos (procesos protegidos, integridad de archivos, drivers firmados, etc.).
En un escenario real de ataque, si un adversario ya comprometió un endpoint con privilegios administrativos, el doble factor de autenticación debería seguir siendo una barrera para impedir movimiento lateral vía RDP.
Conclusión
Este hallazgo no pretende señalar una falla crítica, sino evidenciar un punto ciego en el modelo de protección de Duo Security.
Nuestra recomendación es que este tipo de soluciones de seguridad integren capacidades de autodefensa avanzadas, de modo que puedan seguir ofreciendo protección efectiva incluso ante atacantes con privilegios elevados.
En definitiva, la seguridad no debería ser opcional frente al administrador local.
Recomendaciones
En caso de que utilices Duo Security en tu organización, es importante tomar en cuenta las siguientes medidas de protección y monitoreo: