ingenieria reversa de puertos series con algo de python

Post on 03-Jul-2015

625 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Cómo hackear conexiones seriales e incluso emplear python para el prototipado de las conexiones. En el LimaHack Noviembre - 2012

TRANSCRIPT

Ingeniería reversa de Ingeniería reversa de dispositivos seriales con dispositivos seriales con

algo de Pythonalgo de Python

Alfonso de la Guarda Reyesalfonsodg@gmail.com

@alfonsodg

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.

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

Cómo funcionan los puertos serie?

● Interfaz de comunicaciones digital

● Transmisión bit a bit

● Normas RS-232 y RS-422 / Propietarias

● Asíncronos

● Simplex, Half Duplex y Full Duplex

● Chips UART

● Seguimiento de un protocolo, usualmente “estándar”

● Los protocolos tienden a emplear secuencias ASCII

● Algunos protocolos propietarios hacen uso de IO/CTL

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

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

Y qué sucede cuándo la receta con funciona?

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

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

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

La experiencia de las radio Tadirant

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

HF-6000 Radio

(RT/RE-6001 Exciter & Radio

System Controller)

External Control Device

HF Antenna Coupler

HF Power

Amplifier

Rx Tx Tx Rx Tx Rx Tx Rx

Communication_Request (COM_REQ)

MASTER Slave #1 Slave #2 Slave #N

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.)

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...

...este... y Python dónde está?

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

Suena bonito, pero... “show me the code”

https://bitbucket.org/alfonsodg/radio-data

Gracias!alfonsodg@gmail.com

top related