Este documento presenta sobre la ingeniería reversa de dispositivos con puertos seriales usando Python. Explica que los puertos seriales todavía se usan aunque menos comúnmente, y describe cómo funcionan. Luego detalla el proceso de ingeniería reversa serial, incluyendo investigar documentación, probar protocolos y sniffear comunicaciones. Presenta dos ejemplos de ingeniería reversa con radios, resolviendo cómo integrar sus canales de datos a un sistema. Finalmente, explica cómo Python es útil para prototipar protocolos de forma iterativa durante el proceso
4. DISCLAIMER
Todo el contenido de esta charla es resultado de investigación
con fines didácticos y educativos. El autor no se hace
responsable por el uso del conocimiento contenido en la
siguiente presentación. La información contenida debe ser
utilizada únicamente para fines éticos y con la debida
autorización.
Todo descubrimiento realizado, ha sido y será usado de forma
legal. La audiencia debe asumir todo lo que se exponga hoy,
como “falso” y “sin fundamento” hasta que lo compruebe
personalmente. Limahack no es el autor directo de ninguno de
los descubrimientos expuestos, ni de las herramientas
demostradas, ni los conoce.
Todas las opiniones vertidas durante esta presentación son
exclusivas del expositor, Limahack no es responsable de
ninguna de las opiniones vertidas.
5. Todavía hay dispositivos con
puertos seriales?
SI
Como también: paralelos, usb, con
puertos propietarios, etc....
Es un estándar de la industria... aunque
hoy en día su uso es más especializado
6.
7. Cómo funcionan los puertos
serie?
●
Interfaz de ●
Seguimiento de un
comunicaciones digital protocolo, usualmente
“estándar”
●
Transmisión bit a bit
●
Normas RS-232 y RS-
●
Los protocolos tienden
422 / Propietarias a emplear secuencias
ASCII
●
Asíncronos ●
Algunos protocolos
●
Simplex, Half Duplex y propietarios hacen uso
Full Duplex de IO/CTL
●
Chips UART
8. Por qué necesito manipular los
puertos serie?
●
Acceder a funcionalidades particulares de
nuestros dispositivos
●
Enviar y recibir datos de los mismos
(dispositivos)
●
En general para controlarlos... hasta el
punto en donde el fabricante lo permita
9. Es complicado acceder a los
dispositivos por puertos serie?
●
Ingredientes: puertos series (emisor/receptor),
cable serie, software de comunicaciones,
parámetros y (quizás) conocer el protocolo...
●
Preparación: mezclar los ingredientes según las
especificaciones del fabricante del dispositivo
●
Presentación: Hacer lo que deseamos según lo
permita el fabricante
11. Hackeando comunicaciones
seriales (preparación)
●
Informarnos: buscar todo material relativo
al dispositivo y/o hasta de sus chips, cada
uno puede revelar valiosa información
●
Buscar si hay software que permita
comunicarse con el dispositivo de
alguna/cualquier manera
12. Hackeando comunicaciones
seriales (practicando)
●
Verificar pinout de puertos y cables
●
Configurar parámetros del puerto
●
Probar protocolos o comandos, buscando
respuesta de los dispositivos
●
“Sniffear” un aplicativo que trabaje con el
dispositivo e interpretar las señales /
comandos
13.
14. Receta 1: Dispositivo Lector de
Tarjetas por Proximidad
●
Transmisión síncrona
●
Comando de petición de registros
●
Comando de validación de recepción con
llave para vacío de memoria
●
Tramas simples alfanuméricas con código
de tiempo e identificación de usuario
16. Equipos VHF 9000 / HF 6000
●
Objetivo: Integrar los canales de datos de los
equipos a un sistema C4I
●
Problema: El fabricante no entregó la
información técnica para la integración de los
dispositivos (ni quería hacerlo)
●
Solución: Aplicar ingeniería reversa al puerto
de comunicaciones para replicar el protocolo
17.
18. Communication_Request (COM_REQ)
HF-6000
Radio
HF HF External
(RT/RE-6001
Exciter & Radio Power Antenna Control
System Controller) Amplifier Coupler Device
Rx Tx Tx Rx Tx Rx Tx Rx
MASTER Slave #1 Slave #2 Slave #N
19. Radios Tadirant VHF 9000
●
Con la documentación obtenida se pudo conseguir el pinout para las
conexiones
●
Se ubicó un software que permitía la transmisión de flujos de vídeo, se
procedió al sniffing (monitoreo) de las señales
●
El protocolo está basado en señales IO/CTL (secuencias de bits)
●
Con la documentación auxiliar se procedió a completar la
configuración de los parámetros del equipo
●
Comunicaciones independientes del canal o modalidad (salto de
frecuencia, etc.)
20.
21. Radios Tadirant HF 6000
No se pudo concluir esta fase, pero se
encontró que el pinout era diferente y que
algunas de las señales (protocolo)
requerían ajustes para cerrar el proceso....
Era una cuestión de días y más pruebas...
23. Y ahora Python...
●
Permite prototipado rápido de los
protocolos
●
Al ser interpretado podemos
experimentar con el proceso de la
ingeniería reversa paso a paso
●
Tiene una magnífica librería para el
manejo de puertos seriales