Tiempo ha, caí en la cuenta de que cualquier persona con acceso físico a una máquina (sin protección), simplemente con el teclado, tiene todo el poder en sus manos; se puede hacer de todo.¿ Cuál suele ser el problema en estos casos?: el tiempo. Y es que cuando se tiene acceso físico a una máquina a la que queremos ejecutar suele ser por cortos periodos.
Como consecuencia, me llamó la atención la idea de automatizar este tipo de procesos para elimiar el factor tiempo. Se me ocurrió que si fuera posible hacer un dispositivo que, conectado al USB o PS/2, se comportase como un teclado con la salvedad de que en vez de enviar caracteres al PC generados al pulsar teclas, enviara secuencias de caracteres que leyera de ficheros; estaríamos ante un arma muy potente ( casi tanto como un palo con un clavo!)
Aclaración: La idea no es hacer un dispositivo para hacer fuerza bruta. Sino un dispositivo, que al conectarse a un sistema en el que no hay protección (un windows sin bloquear sesión, una consola de linux, etc), ejecute los mismo comandos que podría ejecutar cualquier persona, pero a gran velocidad. Lo que nos da una capacidad muy grande para hacer ataques. Véase echopy.
Implementación
Estoy usando un microcontrolador PIC18F4550 montado sobre una placa de desarrollo OLIMEX que he comprado en www.sparkfun.com. Es un cacharrito simple que hace justo lo que necesito, dispone de:
- PIC18F4550
- Puerto USB
- ICSP (Aunque no es necesario para programarlo porque viene con un bootloader precargado que te permite cargar usando USB directamente)
- Un pulsador
- Un led

Modificando el código de ejemplo que venía con la documentación he conseguido que se comporte como un dispositivo HID de teclado y que escriba a unos 1000 caracteres por segundo. ¡Increible!
El siguiente paso ha sido modificar nuevamente el programa para que lea los caracteres que debe enviar de un array.
Es interesante mencionar que los codigos HID no son iguales al código ASCII y he tenido que programar un pequeño script que transforma ficheros TXT a arrays de codigos HID. Lo tenéis aqui: txt2hid.pl
Futuro
Sigo desarrollando y pronto montaré en la placa un lector de tarjetas MMC para que lea de este tipo de dispositivos los caracteres que debe enviar y así no será necesario reprogramar cada vez que quiera cambiarlos. Además de que podrán ser series mucho más largas.
Sería interesante desarrollar un GUI para poder autogenerar los ficheros que debe leer el PIC, dependiendo de: el sistema operativo al que se quiera conectar, versión, ataques que se quieran hacer, etc.
Pronto publicaré los esquemas y el código para que os montéis vuestro propio Címbulo.
Otros usos
Este cacharro tiene otros posibles usos a parte de los malignos ya mencionados, como por ejemplo, automatizar taréas repetitivas: Configuraciones de bios, instalaciones…
Usando este mismo PIC se pueden emular otros tipos de dispositivos, conversores RS232, dispositivos de almacenamiento, etc; que se podrían usar en combinación con los comandos ejecutados por teclado. Por ejemplo, montar un disco de almacenamiento emulado y volcar el resultado de una ejecución.
Documentación y referencias
- http://www.electronicfr.com/index.php/Microcontrollers-and-USB/Part-1-How-to-build-a-USB-device-with-a-PIC-18F4550-or-18F2550.html
- http://www.edaboard.com/ftopic313796.html
- http://www.sparkfun.com/commerce/product_info.php?products_id=8562
- http://www.edaboard.com/ftopic214195.html
- http://www.beyondlogic.org/usbnutshell/usb1.htm
- http://blog.bricogeek.com/noticias/electronica/mini-sistema-operativo-para-pic-18f-y-tarjeta-mmc/

Interesante artículo, y además creo que el nombre del aparato es autodescriptivo y muy acertado.
Ahora falta hacer un teclado estándar y apañárselas para tener E/S con las luces de estado.
Mas que interesante