Tu PLC Sauter viene con una cuenta de e-mail de "regalo"
Sauter moduweb Vision es un módulo que proporciona un aplicativo web para la visualización de manera compacta, sencilla e intuitiva de la información que proporcionan diversos PLCs a los operarios que los utilizan en sus Sistemas Industriales. También permite interactuar de manera directa en la configuración de ciertos parámetros de este tipo de autómatas programables.
Una funcionalidad que incorpora este módulo, es la configuración de un cliente de correo electrónico para que, en el caso de que se dispare una alarma (temperatura por encima de una consigna, extractores de humo averiados, etc…), automáticamente se envié una notificación por correo electrónico a la persona responsable, avisando del tipo de incidencia.
Veremos en el presente artículo cómo, aprovechándonos de la configuración por defecto de acceso a la gestión del PLC mediante el módulo moduWeb Vision, es posible acceder a la configuración del cliente de correo electrónico del PLC, obtener la contraseña de la cuenta de correo indicada para las notificaciones y comprobar, con la ayuda del protocolo SMTP, si el password de acceso a la cuenta de correo electrónico realmente se corresponde con ésta.
Fase 1: Búsqueda de dispositivos Sauter con el módulo moduWeb Vision
Localizar PLCs con el módulo moduWeb Vision es realmente fácil, utilizando el patrón “Sauter moduWeb - Login” presente en el título de la web. Realizando un poco de Hacking con Buscadores, Google devuelve los siguientes resultados:
Fase 2: Datos de acceso por defecto
Muchos de estos PLCs conectados a Internet, que controlan entornos donde las vidas humanas tienen un papel fundamental ya que pueden estar en Sistemas Industriales o Infraestructuras Críticas, siguen presentando configuraciones inseguras por defecto. Una sencilla búsqueda en Google nos proporciona los datos de acceso por defecto a estos dispositivos con moduWeb Vision: “admin” y “password”.
Introduciendo la información mostrada en la figura anterior, es posible acceder a buena parte de estos dispositivos. En la figura siguiente, se muestra el panel de manipulación y monitorización del sistema de calefacción de un bloque de viviendas comunitario con credenciales por defecto.
Fase 3: Configuración del cliente del correo electrónico del PLC
Como se ha comentado, el módulo moduWeb Visión dispone de un cliente de correo electrónico que se comunica con un servidor de correo electrónico bajo el protocolo SMTP (Simple Mail Transfer Protocol) usando el puerto 25/TCP. Para ello, hemos de proporcionar en el la configuración del cliente de correo, quién es el servidor de correo electrónico saliente que enviará el mensaje de alerta a un buzón de correo electrónico, la cuenta de correo electrónico y la contraseña de correo.
Por defecto, léase la documentación del PLC, la opción de SSL para enviar correos electrónicos cifrados viene desactivada.
Fase 4: Seguridad por ocultación
En la figura anterior puede observarse cómo la contraseña, a primera vista, no aparece en texto plano debido al uso del campo input de tipo password en el formulario de configuración del cliente de correo SMTP. Basta realizar un cambio en caliente desde el navegador web para obtener la clave en texto claro de la cuenta de correo electrónico.
Conocida el password de uno de los usuarios del servidor de correo saliente usado por el PLC, el siguiente paso es comprobar que realmente se trata de una identidad digital válida utilizada por el PLC. Aquí es dónde entrará en juego el protocolo SMTP.
Fase 5: Diálogo con el servidor de correo electrónico mediante SMTP
El protocolo SMTP (Simple Mail Transfer Protocol) utiliza por defecto el puerto 25/TCP. Para conectarnos, basta realizar una conexión TCP del servidor. Inicialmente intentaremos mandar un correo electrónico desde la cuenta de correo descubierta en el PLC. En caso de no estar bien configurado el servidor de correo, podríamos “spoofear” cualquier cuenta de correo electrónico (aunque el nombre de dominio fuera diferente al nombre de dominio configurado en el servidor de correo electrónico) y usar ese servidor para realizar ataques, por ejemplo, de spear phishing.
Comprobamos cómo el servidor de correo no permite el envío de correos electrónicos si no nos autenticamos correctamente en él.
Es en este punto es donde utilizaremos para la autenticación el password descubierto en la figura 6. Tras conectarnos al puerto 25/TCP, con la opción “auth login” decimos al servidor que queremos autenticarnos en él. El servidor nos devolverá el mensaje “334 VXNlcm5hbWU6”, que se trata de una cadena codificada en Base64 solicitando el nombre de usuario.
Introducimos el nombre de usuario codificado en Base64 (c2xxxxxxxxx20=) y el servidor nos devuelve el mensaje “334 UGFzc3dvcmQ6” codificado en Base64 solicitando el password. Codificamos el password de la figura 7 en Base64 y se lo enviamos al servidor de correo. El servidor devuelve un mensaje de que la autenticación es correcta (authentication succeeded).
Tras indicar quién es el emisor del mensaje y el destinatario, finalizar el mensaje con punto (.), el servidor devuelve el mensaje “mail accepted for delivery” (correo aceptado para la entrega). A continuación se muestran todos los pasos de la conexión SMTP AUTH a través de Telnet:
En estos momentos, podemos determinar que la cuenta de correo electrónico y el password presente en la configuración del cliente de correo del PLC de la figura 7, realmente pertenecen a una identidad digital válida en el servidor de correo saliente usado por el módulo moduWeb Vision del PLC Sauter y está distribuida en todos y cada uno de los dispositivos. Todos con la misma. No parece la forma más segura de crear un sistema industrial.
Autor: Amador Aparicio (@amadapa), autor del libro "Hacking Web Technologies"
Figura 1: Tu PLC Sauter viene con una cuenta de e-mail de "regalo" |
Una funcionalidad que incorpora este módulo, es la configuración de un cliente de correo electrónico para que, en el caso de que se dispare una alarma (temperatura por encima de una consigna, extractores de humo averiados, etc…), automáticamente se envié una notificación por correo electrónico a la persona responsable, avisando del tipo de incidencia.
Figura 2: PLC Sauter |
Veremos en el presente artículo cómo, aprovechándonos de la configuración por defecto de acceso a la gestión del PLC mediante el módulo moduWeb Vision, es posible acceder a la configuración del cliente de correo electrónico del PLC, obtener la contraseña de la cuenta de correo indicada para las notificaciones y comprobar, con la ayuda del protocolo SMTP, si el password de acceso a la cuenta de correo electrónico realmente se corresponde con ésta.
Fase 1: Búsqueda de dispositivos Sauter con el módulo moduWeb Vision
Localizar PLCs con el módulo moduWeb Vision es realmente fácil, utilizando el patrón “Sauter moduWeb - Login” presente en el título de la web. Realizando un poco de Hacking con Buscadores, Google devuelve los siguientes resultados:
Figura 3: Dorking y resultados devueltos por Google |
Fase 2: Datos de acceso por defecto
Muchos de estos PLCs conectados a Internet, que controlan entornos donde las vidas humanas tienen un papel fundamental ya que pueden estar en Sistemas Industriales o Infraestructuras Críticas, siguen presentando configuraciones inseguras por defecto. Una sencilla búsqueda en Google nos proporciona los datos de acceso por defecto a estos dispositivos con moduWeb Vision: “admin” y “password”.
Figura 4: Búsqueda de los datos de acceso por defecto |
Introduciendo la información mostrada en la figura anterior, es posible acceder a buena parte de estos dispositivos. En la figura siguiente, se muestra el panel de manipulación y monitorización del sistema de calefacción de un bloque de viviendas comunitario con credenciales por defecto.
Figura 5: Diagrama de un sistema de calefacción comunitario |
Fase 3: Configuración del cliente del correo electrónico del PLC
Como se ha comentado, el módulo moduWeb Visión dispone de un cliente de correo electrónico que se comunica con un servidor de correo electrónico bajo el protocolo SMTP (Simple Mail Transfer Protocol) usando el puerto 25/TCP. Para ello, hemos de proporcionar en el la configuración del cliente de correo, quién es el servidor de correo electrónico saliente que enviará el mensaje de alerta a un buzón de correo electrónico, la cuenta de correo electrónico y la contraseña de correo.
Figura 6: Parámetros de la configuración del cliente de correo electrónico por SMTP |
Por defecto, léase la documentación del PLC, la opción de SSL para enviar correos electrónicos cifrados viene desactivada.
Fase 4: Seguridad por ocultación
En la figura anterior puede observarse cómo la contraseña, a primera vista, no aparece en texto plano debido al uso del campo input de tipo password en el formulario de configuración del cliente de correo SMTP. Basta realizar un cambio en caliente desde el navegador web para obtener la clave en texto claro de la cuenta de correo electrónico.
Figura 7: Modificación en el formulario del cliente para ver la password |
Conocida el password de uno de los usuarios del servidor de correo saliente usado por el PLC, el siguiente paso es comprobar que realmente se trata de una identidad digital válida utilizada por el PLC. Aquí es dónde entrará en juego el protocolo SMTP.
Fase 5: Diálogo con el servidor de correo electrónico mediante SMTP
El protocolo SMTP (Simple Mail Transfer Protocol) utiliza por defecto el puerto 25/TCP. Para conectarnos, basta realizar una conexión TCP del servidor. Inicialmente intentaremos mandar un correo electrónico desde la cuenta de correo descubierta en el PLC. En caso de no estar bien configurado el servidor de correo, podríamos “spoofear” cualquier cuenta de correo electrónico (aunque el nombre de dominio fuera diferente al nombre de dominio configurado en el servidor de correo electrónico) y usar ese servidor para realizar ataques, por ejemplo, de spear phishing.
Comprobamos cómo el servidor de correo no permite el envío de correos electrónicos si no nos autenticamos correctamente en él.
Figura 8: Conexión SMTP e intento de envío sin autenticar. El servidor no lo permite. |
Es en este punto es donde utilizaremos para la autenticación el password descubierto en la figura 6. Tras conectarnos al puerto 25/TCP, con la opción “auth login” decimos al servidor que queremos autenticarnos en él. El servidor nos devolverá el mensaje “334 VXNlcm5hbWU6”, que se trata de una cadena codificada en Base64 solicitando el nombre de usuario.
Introducimos el nombre de usuario codificado en Base64 (c2xxxxxxxxx20=) y el servidor nos devuelve el mensaje “334 UGFzc3dvcmQ6” codificado en Base64 solicitando el password. Codificamos el password de la figura 7 en Base64 y se lo enviamos al servidor de correo. El servidor devuelve un mensaje de que la autenticación es correcta (authentication succeeded).
Tras indicar quién es el emisor del mensaje y el destinatario, finalizar el mensaje con punto (.), el servidor devuelve el mensaje “mail accepted for delivery” (correo aceptado para la entrega). A continuación se muestran todos los pasos de la conexión SMTP AUTH a través de Telnet:
Figura 9: Conexión SMTP AUTH a través de Telnet |
En estos momentos, podemos determinar que la cuenta de correo electrónico y el password presente en la configuración del cliente de correo del PLC de la figura 7, realmente pertenecen a una identidad digital válida en el servidor de correo saliente usado por el módulo moduWeb Vision del PLC Sauter y está distribuida en todos y cada uno de los dispositivos. Todos con la misma. No parece la forma más segura de crear un sistema industrial.
Autor: Amador Aparicio (@amadapa), autor del libro "Hacking Web Technologies"
2 comentarios:
Gracias por el desglose, muy completo. Sólamente una pregunta:
Es esta la misma vulnerabilidad que se descubrió en 2016 ?
http://www.securityweek.com/flaws-expose-sauter-scada-systems-takeover
@Unknow 14/7/17 8:45 a.m.
Buenos días, en el artículo el acceso al PLC se realiza porque no se han modificado los datos de acceso por defecto y eso permite acceder a los datos de la cuenta de correo que usa el PLC para registrar de eventos, pero no se realiza la PoC de intentar obtener un backup del PLC como describe el enlace.
Muchas gracias por la info!!
Publicar un comentario