¿Cómo proceder con la evaluación de la vulnerabilidad de IoT?

4

Primero: este no es uno de esos "¿Cómo empiezo a piratear?" preguntas, pero más de un "¿Cómo comienzo a probar un dispositivo específico?".

Es parte de mi tesis de licenciatura realizar un análisis / evaluación de vulnerabilidad de un dispositivo de IoT que se implementó durante otra tesis de licenciatura con un enfoque de seguridad en mente, y proporcionar posibles soluciones o mejoras. Aplicando el principio de Kerckhoffs, tengo acceso completo a la documentación, el código fuente e incluso se me ha proporcionado un cliente de prueba, lo que me permite configurar el servidor web de acuerdo con la documentación.

¿Cómo procedo?
De acuerdo a this Tenemos varios pasos para una evaluación completa.

  • descubrimiento
  • Análisis de vulnerabilidad
  • Evaluación de vulnerabilidad
  • Evaluación de seguridad
  • prueba de penetración

Sistema
Los tres componentes temáticos principales ya están identificados:

  1. Lectores / etiquetas RFID
  2. Cliente del microcontrolador, (Arduino / w Ethernet Shield)
  3. sistema backend

Información adicional para proporcionar una mejor imagen:
1) solo utiliza el ID de la etiqueta rfid (autorización sin autenticación), es posible la clonación / suplantación de etiquetas. Teniendo en cuenta si es posible integrar esto con el sistema de bloqueo de puertas patentado, ya que se utilizan las mismas etiquetas rfid, el sistema tiene autenticación de usuario.

2) Arduino Uno como interfaz para puerto serie y lectura de etiquetas rfid, usa la biblioteca criptográfica para ChaCha20-Poly1305 encripta / autentica el tráfico al backend, la clave precompartida, genera una nueva clave de sesión periódicamente, implementaré un pequeño programa que emula La comunicación a través del puerto serie.

3) Backend con servidor web (Apache), servidor de aplicaciones (django) y base de datos (sqlite, ya que todavía es un sistema de prueba). Proporciona la interfaz web como herramienta administrativa, utiliza el estado del arte TLS.

Estado actual

Actualmente estoy atascado en cómo abordar esto de manera metódica y estructurada / proceso .
Realmente no tengo mucha esperanza en atacar (1), ya que no puedo ver tantos vectores de ataque, aparte de la clonación / suplantación de identidad. En (2), ya que es un Arduino, utiliza el 99% de su capacidad para sus tareas. Ya utilicé flawfinder en el código fuente, pero solo mostraba algunos errores (verifique el tamaño de la matriz si se copian, etc.), que eran todo manejado en el código. No se realiza ninguna asignación de memoria dinámica, la lectura de matrices se define estrictamente por el tamaño de las matrices, etc. Suponiendo que la Biblioteca ChaCha20, que trae su propio RNG seguro esté implementado correctamente, realmente no veo nada aquí.
Finalmente (3) donde veo el mayor potencial. El servidor web Apache se ejecuta en Debian 9. El servidor web a menudo se configura incorrectamente / no está actualizado, lo que abre vectores de ataque. ¿Servidor de aplicaciones? No estoy seguro de eso. Webclient, dependiendo de la implementación, compilación con Django, también podría ser uno de los componentes más vulnerables.

TL; DR: Tengo un dispositivo IoT, que consta de varios componentes (Microcontrolador, servidor web de fondo con interfaz web) y estoy atascado en cómo realizar una evaluación de vulnerabilidad metódicamente correcta y completa.

Preguntas

  • ¿Cuál es el enfoque metódico adecuado para este problema? ¿Hay normas / marcos?
  • ¿Cómo puedo probar a fondo (1) y (2) las vulnerabilidades? Como hay guías para pentesting (3)

EDIT

Dejo la información de fondo tal como está. La pregunta principal es:

¿Cuál es un enfoque metódico correcto para la evaluación de vulnerabilidad de un dispositivo IoT de múltiples componentes?

    
pregunta k0s1nsky 09.12.2017 - 23:50
fuente

2 respuestas

2

TL;DR:

  1. Manejo de RFID (su entrada principal al sistema)
  2. Interfaces de depuración (combine esto con todos los otros pasos)
  3. aplicación web
  4. cosas criptográficas
  5. Auditoría del código fuente
  6. Canal lateral & inyección de fallas (que es un poco más difícil)

1. RFID

Comenzaría con la parte RFID (revisa proxmark3). ¿Cómo maneja el arduino una identificación de 1KB? Debería estallar. incluso podría arrojar algo de su memoria en algún lugar.

2. Las interfaces de depuración

INTERFACES DE DEPURACIÓN. No puedo enfatizar eso lo suficiente. Verifique el protocolo de depuración One-Wire, por ejemplo, y mi otra interfaz que utiliza. Intenta conseguir un volcado de memoria.

3. Aplicación web

Encienda el tiburón de alambre o burpsuite y vea qué sucede. La configuración incorrecta a menudo no es su mayor problema en las aplicaciones web personalizadas.

4. Cosas criptográficas

Tenga en cuenta que el arduino es un dispositivo de baja potencia con potencia de caballo casi idéntico a la realización de cálculos con lápiz y amp; papel - estos dos con criptografía NO juegan bien. Especialmente la parte de RNG. Si no se trata de hardware (como un generador de ruido blanco con transistores con polarización inversa, por ejemplo) es probablemente la basura. Mira cómo se implementa cada criptografía que tiene lugar, estoy seguro de que encontrarás algo.

5. Auditoría del código fuente

No hace falta decirlo, tendrás que verificar el código fuente. Lo dejo ahí abajo, porque cuando comience a revisar el código fuente, ya tendrá una muy buena idea de lo que está sucediendo, cuándo y por qué. Creo que ya habías comprobado varios bits en las fases anteriores, pero en esta fase intenta ser mucho más exhaustivo

6. Canal lateral & inyección de fallas

Por último, pero no menos importante, probaría una inyección defectuosa & Ataques de canal lateral. Voltaje y amp; La falla de reloj en arquitecturas tan simples, así como el análisis de potencia es muy fácil (en comparación con un procesador de la serie ARM A, por ejemplo). ChipWhisperer será de mucha utilidad! Creo que incluso tiene una tubería de dos pasos para que pueda saltarse instrucciones completas: P

NOTA: intente tomar muchas notas durante la evaluación (cómo hizo las cosas o cómo funciona el sistema), así como imágenes y capturas de pantalla sobre cosas interesantes / extrañas. ¡No hay tal cosa como "demasiadas notas"!

    
respondido por el dzervas 07.03.2018 - 20:19
fuente
-1

Depende de lo que haga el dispositivo. Debe comunicarse de alguna manera. ¿Tiene una interfaz de red? Intente un escaneo de puertos.

Un "dispositivo IoT" es como una mini PC. Tus vectores de ataque deben ser los mismos. Debe recibir algún tipo de entrada. Manipula las entradas.

    
respondido por el rom3ocrash 07.03.2018 - 18:54
fuente

Lea otras preguntas en las etiquetas