23rd
JUL
Fabricación de Keylogger electrónico casero tipo DIY [I Parte]
Publicado por ElPerro | Archivado en Gadgets, Laboratorio, Mi Trabajo, Seguridad
Hace unos días comenté que iba a realizar el tutorial acompañado de video mostrando como construir nuestra propia DormiLaptop sin embargo, tuve que desviar mi atención a un manual que me llegó de la mano de mi amigo mexicano Salvador Castillo, actual propietario de Warexone.
El tutorial consiste en fabricar un dispositivo simple pero muy completo que graba todos los ingresos del teclado y los almacena en una simple base de datos.
Estoy hablando de un dispositivo, es decir, un hardware lo cual imposibilita su detección por software antivirus y es una muy buena herramienta para controlar los datos que se ingresan en una PC a fines de analizar potenciales espionajes en nuestra empresa, red o entorno de trabajo.
Mi intención con el siguiente tutorial es facilitar una herramienta simple a administradores de red y/o empresas en general. NO ESTA DESTINADA A ESPIAR DATOS SENSIBLES COMO TARJETAS DE CRÉDITO, CUENTAS BANCARIAS O CLAVES.
Introducción
Para entender a fondo que es un keylogger, nos vamos a remitir a Wikipedia:
Un keylogger (deriva del inglés: Key (Tecla) y Logger (Registrador); registrador de teclas) es una herramienta de diagnóstico utilizada en el desarrollo de software que se encarga de registrar las pulsaciones que se realizan sobre el teclado, para memorizarlas en un fichero y/o enviarlas a través de internet.
Suele usarse como malware del tipo daemon, permitiendo que otros usuarios tengan acceso a los números de una tarjeta de crédito o a la contraseña de cuentas on line al infiltrarse en un ordenador.
El registro de lo que se teclea puede hacerse tanto con medios de hardware como de software. Los sistemas comerciales disponibles incluyen dispositivos que pueden conectarse al cable del teclado (lo que los hace inmediatamente disponibles pero visibles si un usuario lo revisa) y al teclado mismo (que no se ven pero que se necesita algún conocimiento de como soldarlos). Escribir aplicaciones para realizar keylogging es trivial y, como cualquier programa computacional, puede ser distribuido a través de un troyano o como parte de un virus informático o gusano informático. Se dice que se puede utilizar un teclado virtual para evitar esto, ya que sólo requiere clics del ratón. Sin embargo, la aplicaciones más nuevas también registran pantallazos que anulan la seguridad de esta medida. Cabe decir que esto podría ser falso ya que los eventos de mensajes del teclado deben ser enviados al programa externo para que se escriba el texto, por lo que cualquier keylogger podría registrar el texto escrito mediante un teclado virtual.
Extraído del artículo original: http://es.wikipedia.org/wiki/Keylogger
Algunos puntos a tener en cuenta
Antes de empezar, todos los que me conocen saben que lo primordial en todos nuestros proyectos de fin de semana que involucren la seguridad de datos o intervención de los mismos requiere de unas pequeñas cláusular éticas y si se quiere, legales.
Responsabilidad legal
La legislación respecto al registro de datos de las pulsaciones de teclas varía según los países. El desconocimiento de la ley no exime de su cumplimento.
Ni ElPlog.com, ElPlog.tv o ninguno de sus administradores se harán responsables por los daños o perjuicios que pudieran ser causados por el uso de este hardware.
Este dispositivo no podrá ser utilizado para la captación no autorizada de los datos, en particular contraseñas, datos bancarios, correspondencia confidencial, etc. En la mayoría de los países lo antedicho se considera un delito.
Registro de datos de teclas
El keylogger por hardware dispone de 64 kB de memoria no volátil EEPROM. Cuando la memoria esté llena la grabación de datos empezará otra vez, empezando por la primera localización en la memoria. De esta forma los datos más antiguos se perderán.
Los primeros 128 bytes de la memoria están reservados para los datos de configuración, por ejemplo para guardar la dirección del último acceso a la memoria. La última dirección de acceso se actualiza en la memoria cada 10 segundos aproximadamente.
No dejes el keylogger conectado en el modo de registro cuando no sea necesario. La memoria se va a llenar y los datos antiguos, algunos de ellos importantes, pueden ser sobreescritos y obviamente perderías toda la información guardada.
Transmisión de datos
Para reproducir los datos del keylogger necesitás una PC de la clase 100 MHz Pentium o superior, con el Windows 9X/Me/XP/2000 instalado.
El hardware transmite los datos a la PC simulando el teclado. El teclado real tiene que estar desconectado durante la transmisión.
La aplicación que utilizaremos se llama KeyGrab.
Los datos de pulsaciones de teclas se descargan en el orden cronológico inverso. De esta forma los datos más recientes aparecen primeros. Para obtener los datos más antiguos hay que esperar un rato. La transmisión puede durar hasta 20 minutos en total.
Es necesario terminar transmisión manualmente, presionando el pulsador otra vez. Hágalo cuando los datos empiecen a duplicarse.
Funcionamiento del teclado PS/2
El funcionamiento del teclado PS/2 es un poco más complicado de lo que pueda parecer. Esto se puede observar analizando los datos sin procesar, guardados por el keylogger por hardware. El teclado de la PC genera un caracter con cada pulsación de tecla. Cuando se libera la tecla, este carácter se genera otra vez, procedido por el carácter 240 (F0 hex). También existen unas teclas extendidas, las que utilizan el carácter 224 (E0 hex). Mas adelante analizamos esto en el apartado “Protocolo de teclado PS/2″.
Aunque el keylogger por hardware tiene 64 kB de memoria, esto no significa que se puedan guardar 64 mil de pulsaciones de teclas. Cada secuencia pulsación-liberación de tecla requiere tres bytes en caso de teclas estándar y 5 bytes en caso de teclas extendidas.
Herramientas y componentes
Antes de arrancar con nuestro trabajo, tenemos que tener a mano los siguientes materiales para nuestro
proyecto de Keylogger por Hardware Open Source:
*experiencia básica en hardware electrónico
*estañador para circuitos integrados
*programador de microcontroladores (compatible con la familia Atmel AT89CXX51)
*microcontrolador Atmel AT89C2051 (o AT89C1051, AT89C4051)
*memoria EEPROM tipo AT24C512 (o compatible)
*cuarzo 12 MHz
*2x condensador 33p
*condensador 10 uF
*resistor 10 k
*pulsador pequeño
También es necesaria una protección para el keylogger. Una buena idea sería comprar un cable de extensión PS/2 y un pedacito de tubo termorretráctil de unos 10 centímetros. Este tubo se contraerá con el calor, cubriendo el keylogger.

Software a utilizar
La aplicación para la descarga y análisis de datos del keylogger por hardware tipo DIY para Windows 9X/ME/2000/XP:
KeyGrab.zip (0.7MB)
El código fuente completo para el microcontrolador AT89C2051:
Código fuente – diy.asm
Firmware precompilado para el microcontrolador AT89C2051:
fichero BIN – diy.bin
fichero HEX – diy.hex

Protocolo de teclado PS/2
Generalidades
Al cortar un cable de teclado PS/2 probablemente encontraríamos dentro 6 alambres. Solamente 4 de ellos son significativos. Dos de ellos son líneas de alimentación: la de tierra (GND) y la de +5
voltios (VCC), que van de la fuente de alimentación de nuestra PC. Los dos alambres restantes son líneas de transmisión asíncrona: la línea de datos (DATA) y la del reloj (CLK). En la figura a la derecha se puede ver la correspondencia entre estas líneas y los pines conectores DIN (a) y miniDIN (b). La transmisión es bidireccional, no obstante, el teclado es superior.
El teclado envía la información sobre las teclas presionadas y liberadas. El bloque de datos consiste de un solo byte, precedido por un bit inicial y seguido por una paridad y un bit final. El teclado manda los sucesivos bits por la línea de DATA, y los temporiza con impulsos negativos en la línea CLK. La frecuencia del reloj es de 10…30 kHz. Esto sería un protocolo de serie muy bonito, si no fuera por el ordenador, que de vez en cuando quiere mandar información al teclado. En tal caso la PC pone la línea CLK a cero por un tiempo y espera a que el teclado empiece a generar impulsos. Cuando empiezan los impulsos, éste pone sus propios datos en la línea de DATA.
En la figura abajo se pueden ver los diagramas de estado de la transmisión del teclado al host y del host al teclado. Evidentemente este protocolo tiene un par de excepciones, por ejemplo interrupción de la transmisión, caracteres repetidos, etc., pero, estos casos son muy poco frecuentes.

Datos del bus
¿Qué datos se transmiten realmente por las líneas de teclado?
Al ponerse en marcha tanto el teclado como la PC envían unos datos de inicialización, informando que están en condiciones. Cuando la PC trabaja normalmente, sólo el teclado manda datos. Estos datos conciernen a todas las acciones que tuvieron lugar. Una acción se considera una pulsación o liberación de una tecla. Si se presiona una tecla estándar, se envía su llamado “scan code”. Cada tecla tiene exactamente un scan code, creando así un mapa de scan codes. Si se libera una tecla, primero se envía un especial byte 240 (F0 hex), y después se envía el scan code. Así que una pulsación de tecla ocasiona el envío de 3 caracteres por la línea. Si se mantiene una tecla presionada por un cierto tiempo, su scan code se generará constantemente, repitiéndose con una frecuencia determinada. Cuando finalmente se libera esta tecla, se mandará el caracter 240 (F0 hex), y después el scan code.
Este protocolo seguiría siendo muy bonito y agradable, si no fuera por unas teclas especiales del teclado estándar del PC, tales como por ejemplo las teclas Inicio, Fin, las flechas, etc. Cuando se presiona una tecla especial, se genera el byte 224 (E0 hex), seguido por el scan code. Cuando se libera una tecla especial, se lanza la secuencia 224, 240 (E0, F0) seguida por el scan code. Respecto al mapa de scan codes las teclas normales y las especiales son comunes para todas las distribuciones nacionales de teclado. Para hacer las cosas un poco más jodidas complicadas, existen dos teclas super especiales, la de Imprimir Pantalla y la de Pausa, que provocan la transmisión de una entera secuencia de scan codes. Para la persona que prepara la comunicación con el teclado es mejor pretender que estas teclas no existen.
Registro de datos
El microcontrolador controla las líneas DATA y CLK todo el tiempo, capturando todos los datos. Los datos se graban en la memoria no volátil EEPROM a medida que llegan por la línea. Gracias a esto, el usuario podrá enterarse de todas las acciones que fueron llevadas a cabo en el teclado.
Cuando el usuario decida que el registro está terminado, el keylogger por hardware cambiará al modo playback. Para esta acción el teclado tiene que estar desconectado, en caso contrario empezará a interpretar el flujo de datos. El keylogger iniciará la simulación de las pulsaciones de teclado utilizando para ello su memoria interna hardware. La aplicación KeyGrab tiene que estar activa, para procesar el flujo de datos que llegan del keylogger por hardware. Las teclas normales se simulan tal como habían sido registradas en la memoria, mientras que las teclas especiales se transmiten utilizando un código hex de dos bytes.
Manos a la obra…
Pero ahora no…sino se me hace muy largo ![]()
En la próxima entrega [mañana seguramente] vamos a ver el Análisis de Datos, el Modo Playback, el Modo de registro y por supuesto, el montaje y la puesta en marcha de nuestro Keylogger DIY por hardware.
También analizaremos algunos puntos en favor y en contra de este gadget hecho en casa con respecto a las alternativas actuales de software como Radmin y keyloggers en general.
Fin de la primera parte.
Basado en manuales y técnicas de Keelog.com
Leer la Segunda parte del manual
GreetZ!
Comentarios de lectores
Responder
Opciones del post
-
Julio 23, 2009 -
Gadgets, Laboratorio, Mi Trabajo, Seguridad -
Un comentario
-
Feed de comentarios -
Del.ico.us
-
Digg This
-
Twitter
-
Facebook















[...] a fabricar nuestro propio KeyLogger electrónico a fines de monitorear una PC en particular. La Primera parte obviamente, debería ser leída [...]