TarlogicSecurity / PLCTool

GNU General Public License v2.0
145 stars 55 forks source link

No se realiza envio de tráfico #5

Open vicruijim opened 6 months ago

vicruijim commented 6 months ago

Buenas tardes, un compañero y yo estamos intentando lanzar el BlinkAttack pero siempre salta el tiemout. Decidimos coger una segunda placa con Candlebow y otro ordenador con PLCTool para poder ver el tráfico que se mandaba al ejecutar el BlinkAttack, pero tras ejecutarlo no vimos ningun tipo de tráfico DLMS capturado. Hemos usado tanto las versiones de PLCTool como de BlinkAttack que se encuentra en la release como la ultima actualización del repositorio.

Muchas gracias por su trabajo y espero que puedan ayudarnos

antoniovazquezblanco commented 6 months ago

Hola @vicruijim,

Lo primero que podemos es descartar si el problema se encuentra en la aplicación de escritorio (PLCTool) o en la placa (Candleblow).

Para esto, mientras se ejecuta BlinkAttack, estaría bien observar que mensajes se muestran en la placa de candleblow para confirmar que la placa está recibiendo los mensajes. Otra opción es que captures el tráfico del puerto serie que va a la placa y verificarlo ahí. En este hilo muestran un par de alternativas sobre como hacer eso: https://unix.stackexchange.com/questions/12359/how-can-i-monitor-serial-port-traffic

Muchas gracias

vicruijim commented 6 months ago

Primero de todo muchas gracias por responder.

Cuando hemos hecho pruebas se recoge tráfico PLC y DLMS/COSEM y se muestra en la aplicación de PLCTool, al lanzar el ataque en la placa se muestra "enviando AARQ". Probaremos a monitorizar el puerto serie y le comentamos los resultados.

También quería preguntarle sobre el funcionamiento del apartado "audit", que aparece entre las opciones al pulsar sobre el NID de un contador.

Gracias de nuevo

vicruijim commented 5 months ago

Buenas tardes, hemos usado la herramienta interceptty para monitorizar el puerto serie al ejecutar el BlinkAttack, le adjunto un video con los resultados obtenidos.

También hemos probado la versión 1.0.0 de PLCTool, que es la usada en el artículo, pero no hemos obtenido los mismos resultados al lanzar el ataque.

En la consola también obtenemos unos errores al ejecutar la aplicación con sudo y otra al ejecutar la aplicación de forma "normal"

https://github.com/TarlogicSecurity/PLCTool/assets/80257948/b303b2fa-4f6f-4ab1-bac2-f0970fbd9e79

error al ejecutar sudo PLCTool 6-c4c0-4291-9724-2da3333af68b

error QStandarPaths y qt qpa wayland

Muchas gracias

jesusgomezmoreno commented 4 months ago

Buenas. ¿Durante vuestras pruebas habéis recogido tráfico PRIME y DLMS sin ejecutar el Blink? Entiendo que estáis descubriendo contadores y concentradores. ¿Podéis enseñarnos esos datos? ¿Habéis encontrado algún mensaje con la contraseña?

jesusgomezmoreno commented 4 months ago

Sobre los errores de la consola, la aplicación tiene que ejecutarse con permisos de administrador para acceder al puerto serie con el que se comunica con la placa de Candleblow. Los errores que aparecen de Qt son debido a que Wayland (el servidor gráfico actual de muchos sistemas linux) aún no soporta todas las capacidades de Qt. Podéis utilizar un entorno con X (el servidor gráfico antiguo) o buscar información sobre cómo ejecutar aplicaciones de Qt en Wayland.

jesusgomezmoreno commented 4 months ago

Si el problema acaba siendo que no se están enviando paquetes hacia la red PRIME , el error puede estar en la comunicación con Candleblow (el puerto serie entre el PC y la placa) o en el envío hacia la red de PRIME.

Para depurar la aplicación de PLCTool, QtCreator tiene una función de debug, que podéis usar para averiguar si se están enviando los mensajes de AARQ correctamente hacia Candleblow.

Por otro lado, para depurar Candleblow podéis usar Microchip Studio 7 y el mismo programador JTAG que para programar la placa. Microchip Studio tiene una opción de depuración para esto.

Parece que Candleblow está recibiendo los mensajes correctamente, porque os aparece el mensaje de "Sending AARQ probes", así que puede ser que Candleblow no esté enviando bien los paquetes a la red PRIME. spip.c/spip_iface_write_frame es la función encargada de enviar frames de PRIME. Comprobad con la depuración que los mensajes llegan allí correctamente.

jesusgomezmoreno commented 4 months ago

Todo esto es asumiendo que efectivamente estáis en una red PRIME (no Meters&More) y que habéis encontrado la contraseña de autenticación del contador.

vicruijim commented 4 months ago

Buenas. ¿Durante vuestras pruebas habéis recogido tráfico PRIME y DLMS sin ejecutar el Blink? Entiendo que estáis descubriendo contadores y concentradores. ¿Podéis enseñarnos esos datos? ¿Habéis encontrado algún mensaje con la contraseña? Buenas días, primero agradecerle por responder. Le adjunto una imagen con algunas contraseñas capturadas y otra con mensajes DLMS

tramas de datos PLCTool

imagen credenciales