15 abr 2024

Herramientas para facilitar los trabajos de Pentest sobre dispositivos IoT



Internet de las Cosas o IoT es una terminología utilizada para referenciar a las redes conformadas por dispositivos conectados a Internet. En sus múltiples variantes, como el IIoT (Industrial), comprende multitud de productos interconectados: vehículos, electrodomésticos, cámaras, sistemas de control industrial, etc.

Durante el uso de estos productos, estos recopilan multitud de datos de múltiples fuentes en paralelo y, a menudo, comparten esta información con los fabricantes de estos sin que los usuarios sean conscientes, lo que trae consigo nuevos desafíos para la privacidad o el cumplimiento normativo y regulatorio. ¿Dónde acaba esta información? ¿Acaba en servidores dentro de la UE para cumplir con el RGPD? 

Al mismo tiempo, la amenaza de ataques físicos y lógicos a través de estos dispositivos dispara los riesgos al aumentar la superficie de ataque de las compañías. 

Pentest Tradicional & Pentest IoT

A la hora de realizar pentesting a dispositivos IoT, se pueden observar algunas diferencias respecto al pentesting tradicional. Algunas de estas se muestran en la siguiente tabla:

AspectoPentesting TradicionalPentesting IoT
FocoSistemas y dispositivos diversos, incluidos servidores, aplicaciones y redesDispositivos específicos del Internet de las Cosas (IoT). Ej: cámaras, dispositivos biométricos, etc.
Tipos de dispositivosAmplia gama, incluyendo hardware y software de propósito general.Dispositivos generalmente más pequeños, especializados y con mayores limitaciones.
Complejidad TécnicaMenor especificidad en protocolos y comunicaciones.Uso de protocolos especializados y requisitos de comunicación únicos, añadiendo complejidad al proceso de pentesting.
Riesgos de seguridadVarían ampliamente según el sistema y el contexto, con enfoque en ciberataques.Incluyen riesgos físicos, mayores superficies de ataque debido a la conectividad y comunicaciones con otros sistemas.
Sensibilidad de los DatosDependiendo de la aplicación y el entorno, puede variar.Datos frecuentemente más sensibles o valiosos, aumentando las consecuencias potenciales de las brechas de seguridad.
Objetivos específicosIdentificación y mitigación de vulnerabilidades en una amplia gama de tecnologías.Enfoque en identificar y mitigar vulnerabilidades específicas de los dispositivos IoT y sus integraciones únicas.



Herramientas esenciales para el Pentesting IoT 

Aunque para los no entendidos en la materia pueda resultar sorprendente, los ejercicios de pentest sobre sistemas IoT no son muy diferentes en relación con los ejercicios tradicionales sobre otros sistemas, y las herramientas base con las que trabajamos no dejan de ser muy similares:

WIRESHARK

Se centra en la captura y el análisis de paquetes, implementada sobre las evaluaciones en dispositivos IoT con diversos objetivos. Wireshark es empleada en las revisiones IoT para:

  • Análisis de tráfico de red. Captura y estudia de forma detallada el tráfico de la red, facilitando la identificación de patrones y anomalías. De esta manera es más fácil comprender la interacción del dispositivo con otros sistemas.
  • Resolución de problemas de comunicación. Ayuda a diagnosticar problemas de comunicación al capturar y analizar el tráfico de datos enviado y recibido por un dispositivo.
  • Extracción de datos confidenciales. Puede ser empleada para la extracción de datos sensibles transmitidos a través de la red, como contraseñas o información crítica.
  • Identificación de protocolos de red. También permite determinar los protocolos empleados en una red, proporcionando una visión de como el dispositivo interactúa con otros sistemas.

NMAP

Orientado al reconocimiento de dispositivos en una red, puertos abiertos, sistemas operativos y servicios en ejecución. Alguno de los usos sobres entornos IoT son los siguientes:

  • Descubrimiento de dispositivos. Comprende el escaneo de redes para identificar dispositivos conectados, obteniendo sus direcciones IP y nombres de host. Esto es importante para obtener una visión general de la arquitectura de la red.
  • Escaneo de puertos. Se pueden examinar los puertos abiertos en un dispositivo para descubrir que servicios y aplicaciones están abiertos. Este análisis es muy importante para comprender las comunicaciones del dispositivo con otros sistemas.
  • Huella digital de servicios. Esta funcionalidad de Nmap, permite determinar la versión específica de un servicio que opera en un dispositivo, lo que es crucial para identificar vulnerabilidades conocidas asociadas a esa versión.
  • Mapeo de red. Nmap también se emplea para elaborar mapas detallados de una red, mostrando los dispositivos y sus interconexiones.

BINWALK

Esta utilidad si que es más novedosa con respecto a las herramientas tradicionales de pentest y se basa en la ingeniería inversa y análisis de imágenes de firmware, comúnmente empleada en sobre dispositivos IoT. El objetivo que persigue es profundizar en la estructura y funcionalidad del firmware, facilitando la identificación de vulnerabilidades potenciales. Algunas de las aplicaciones prácticas de Binwalk en el contexto de un pentest de un dispositivo IoT:
  • Análisis de firmware. Permite analizar detalladamente las imágenes de firmware para validar sus estructura interna y funcionamiento. Este análisis es crucial para identificar vulnerabilidades y comprender la estructura interna de un dispositivo
  • Extracción de archivos incrustados. Usando esta herramienta es posible extraer archivos incrustados dentro de las imágenes del firmware, como configuraciones, scripts y otros tipos de datos. Esta funcionalidad es muy útil a la hora de buscar información sensible que podría ser explotada.
  • Escaneo de firmas. Binwalk también se utiliza para realizar escaneos de firmas en imágenes de firmware, buscando firmas de archivo conocidas. Este proceso ayuda a identificar qué tipos de archivos están incrustados en el firmware, lo cual es esencial para la evaluación de seguridad y la identificación de componentes críticos dentro del mismo.

BURPSUITE

Comprende el reconocimiento o mapeo de la aplicación basadas en web y evaluar la seguridad de las comunicaciones entre activos web. Algunos ejemplos de uso de la herramienta en las evaluaciones IoT son:

  • Interceptar el tráfico web: Consiste en interceptar las peticiones Cliente-Servidor, lo cual es útil para el auditor a la hora de identificar patrones y errores que pueda aprovechar para encontrar posibles vulnerabilidades.
  • Prueba de comunicación web: Lanza peticiones modificadas al activo objetivo con el fin de causar una respuesta concreta por parte del servidor.
  • Identificación de vulnerabilidades web: la herramienta cuenta con funcionalidades para, por ejemplo, realizar fuerza bruta a partir de payloads propios o modificados.  Esta funcionalidad puede ser utilizada por el auditor para verificar la seguridad del activo.


AIRCRACK-NG

Centrada en la prueba de seguridad inalámbrica, busca evaluar la seguridad en redes inalámbricas y probar las comunicaciones de estas. Las prácticas de esta herramienta sobre entornos IoT son:

  • Descubrimiento de redes inalámbricas: Realiza búsquedas de redes y recopila información sobre ellas, como su nombre (SSID), el tipo de seguridad que usa y fabricante del punto de acceso. Esta información es de utilidad, ya que puede utilizarla para concretar sus pruebas de seguridad.
  • Descifrar contraseñas: Se puede utilizar para intentar descifrar la contraseña demostrando el impacto que suponen las contraseñas débiles o para conseguir vulnerabilidades que supongan un problema serio de seguridad.
  • Pruebas de comunicación inalámbricas: Aircrack se puede utilizar para captar y manipular el tráfico que se transmite a través de la red, permitiendo identificar vulnerabilidades en la forma que los dispositivos manejan las comunicaciones.

En conclusión, dado el creciente papel de los dispositivos IoT en la vida diaria, es muy importante que estos dispositivos sean sometidos a pruebas de seguridad rigurosas y se establezcan estándares mínimos de protección. Pruebas como las de desbordamiento de búfer, incumplimiento de protocolos y pruebas de hacking en general, son esenciales para mitigar la incorporación de vulnerabilidades en estos dispositivos.

8 abr 2024

CVE-2024-3094 XZ Backdoor



Buenas a todos, en el artículo de hoy vamos a tratar un caso que se está discutiendo bastante en los últimos días y es la vulnerabilidad CVE-2024-3094 o como se le denomina comúnmente “backdoor en XZ”.

XZ Utils es una herramienta (open source) de compresión de datos presente en casi todas las distribuciones Linux, que sirve para comprimir formatos de archivos grandes en tamaños más pequeños y manejables para ser compartidos. Al ser un software de código abierto, es mantenido y actualizado por desarrolladores de manera liberal. 

Estas actualizaciones se añaden al proyecto mediante lo que se denominan “Pull Requests” y antes de ser admitidas, son revisadas por otros miembros del equipo que han contribuido al mismo con anterioridad a fin de evitar errores en el código fuente propuesto.

En este caso, un usuario de Github que contribuyó al proyecto de XZ, llamado Jia Tan logró obtener permisos para revisar y aceptar modificaciones de código, ganándose la confianza del resto del equipo y pudiendo aceptar sus propias contribuciones sin que estas fueran revisadas por otros miembros.

Con esta confianza depositada en su trabajo por los miembros del equipo, Jia incorporó código malicioso al proyecto de xz-utils, con la intención de hacer interferir la autenticación del servicio SSH y permitir una ejecución remota de código o RCE.

Explicación de la vulnerabilidad


explicación de la vulnerabilidad CVE-2024-3094 XZ Blackdoor


Todo nace cuando Andrés Freund, ingeniero de software en Microsoft, detecta un comportamiento inusual con el servicio sshd, el cual estaba consumiendo una alta cantidad de CPU.

Dentro del proceso de compilación de XZ, se ejecuta el script “Build-to-Host.m4”. Este script contiene la siguiente línea de código:

gl_[$1]config='sed "r\n" $gl_am_configmake | eval $gl_path_map | $gl[$1]_prefix -d 2>/dev/null'

La cual, inyecta un script obfuscado al final del script de configuración. Este script de configuracion es el responsable de crear los MakeFiles para xz-utils y liblzma.

El script tiene como objetivo principal modificar el MakeFile de liblzma en tiempo de ejecución, haciendo que el RSA_public_decrypt@....pl apunte al código malicioso de la backdoor.  

Durante el proceso de autenticación de sshd, se invoca a la función RSA_public_decrypt@....pl haciendo que se ejecute el código maliciosos del atacante al cual está apuntando. Este código es el encargado de extraer el payload de la clave pública que se le pasa durante el proceso de autenticación y la cual será sometida a una serie de pasos de verificación y controles de firma. Si pasa con éxito estas comprobaciones, se transfiere a la función system() de libc, que será la encargada de ejecutar el payload y llevar a cabo la ejecución remota de código (RCE).

El código ofuscado que se ejecuta dentro del script de configuración levanta un backdoor únicamente bajo ciertas condiciones:

1. El sistema operativo de destino debe ser Linux x86-64.

2. El proceso de compilación de XZ debe ser parte de la compilación de un paquete Debian o RPM.

3. El binario que se invoca debe estar en el path /usr/sbin/sshd

4. La variable de entorno TERM no debe estar configurada

5. Tampoco deben estarlo las variables LD_DEBUG y LD_PROFILE

6. La variable de entorno LANG debe estar seteada por defecto por sshd.

Distribuciones afectadas

  • Fedora 41 and Fedora Rawhide
  • Kali Linux actualizado entre el 26 y 29 de marzo
  • OpenSuse Tumbleweed
  • Alpine 5.6.0, 5.6.0-r0, 5.6.0-r1, 5.6.1, 5.6.1-r0 y 5.6.1-r1
  • Arch que tengan instalado las versiones de xz-utils 5.6.0 y 5.6.1

Además, para determinar si se ha instalado una versión de software de xz-utils vulnerable, se puede usar el script creado por el equipo JFrog, el cual se encuentra en el siguiente enlace.

Este checker es bastante sencillo, realiza las seis comprobaciones, que forman parte de las condiciones necesarias que hemos comentado anteriormente, para poder explotar esta vulnerabilidad. Os mostramos un ejemplo de uso:



¡Muchas gracias y hasta la próxima entrega!

Alejandro Auñón, Offensive Security Engineer at Zerolynx 
Justo Martín ,Consultor de Ciberseguridad en Zerolynx.