Está en la página 1de 1

Hacking Lethani Blog Destacados Sobre mí Contacto

Hacking físico con USB


enero 9, 2019 por Lethani

¿Te han dicho alguna vez que si te encuentras un USB en el suelo, no lo debes introducir en
tu ordenador? Hoy te mostraré mediante una prueba de concepto por qué no debes
hacerlo. En este post veremos cómo crear un USB malicioso que puede infectar un
ordenador en segundos.

Pero antes un poco de historia.

En 2010, los medios se hicieron eco de un virus que había conseguido infectar una central
nuclear de Irán. Este malware, llamado Stuxnet, relentizaba las centrifugadoras que
enriquecían uranio, aumentando la presión hasta puntos críticos. La central tenía unos
sensores que permitían accionar unas válvulas que liberaban la presión cuando esta
aumentaba. El virus consistía en modi car los datos que leían estos sensores para que
pareciera que todo iba correctamente, y aumentar la presión de las centrifugadoras.

Si hubieran querido, podrían haber hecho estallar la central nuclear. Sin embargo, cuando
la presión era demasiado alta, Stuxnet paraba el ataque. Esto se debe a que su objetivo era
retrasar el programa nuclear de Irán. De haberlo hecho estallar, los ingenieros iranís
hubieran detectado y arreglado el problema enseguida. sin embargo, al aumentar mucho la
presión sin que llegaran a estallar, se producían muchos más fallos en los rotores por
estrés, y los ingenieros no eran capaces de identi car por qué, retrasandolos
enormemente.

Pero lo más curioso de esto, es que la primera versión de este virus no tenía una forma de
propagación automática con la que llegar a la red de la central. Para poder actuar, el virus
debía ejecutarse en un ordenador de la central, pues necesitaba modi car uno de los
archivos de con guración para poder ejecutar su código en vez del original. Pero los
sistemas de la central nuclear no estaban conectados a internet, por seguridad. Entonces
¿cómo se infectó? Mediante los propios trabajadores de la empresa.

Alguien dejó caer una memoria USB cerca de un empleado de la central, que se la encontró
y tuvo la brillante idea de conectarla a su ordenador para ver el contenido del mismo. Una
vez dentro de la red, ya si pudo propagarse y llegar hasta ese archivo de con guración.

Este es el caso más sonado de este tipo de vector de infección, puesto que se considera la
primera arma cibernética. Sin embargo, se han encontrado miles de casos en los que
mediante ingeniería social un trabajador ha comprometido a su empresa al conectar un
USB que se había encontrado.

Bad USB
Hoy en día, no hacen falta más que un par de clicks para hacerse con un USB malicioso.
Cualquiera con acceso a un ordenador y 10 dólares puede tener el suyo propio. La marca
más famosa de este tipo de USB es RubberDucky y cuesta 45 dólares, sin embargo
encontramos otros por 8 o 9 dólares con la misma funcionalidad, o incluso se puede
fabricar manualmente.

¿Cómo funciona?

Al enchufarlo, el ordenador reconoce el USB como si fuera un teclado. El programa del USB
simplemente realiza distintas pulsaciones de teclas automáticamente. Dado que el sistema
operativo lo considera como el teclado del usuario legítimo, todo lo que se pulsa se
ejecuta.

PoC
Para esta prueba de concepto utilizaré un dispositivo llamado Lily GO que compré por 8
dólares en Aliexpress. La principal diferencia con el Rubber Ducky es que en este último se
puede insertar una tarjeta microSD en la que almacenar información comprometida o
guardar scripts.

Existen muchos scripts ya creados para Rubber Ducky


que permiten realizar diferentes ataques. En este github
puedes encontrar un recopilatorio de esos scripts.

Sin embargo, estos scripts solo valen para el Rubber


Ducky. La versión low cost se programa mediante
Arduino, por lo que los scripts varían. sin embargo, esto
no supone ningún problema, gracias a que alguien ya se
ha tomado la molestia de realizar un conversor
DuckyScript – Arduino.

No obstante, la gracia está en aprender a hacer nuestros


propios scripts.

Para ello, en primer lugar necesitaremos descargarnos Arduino. Una vez descargado,
vamos a herramientas -> placa y seleccionamos «Arduino Leonardo».

Antes de empezar con el script, es importante saber que la librería por defecto solo
soporta teclados estadounidenses, por lo que en caso de que nuestra víctima tenga
con gurado el teclado en otro idioma, deberemos instalar las librerías compatibles con ese
idioma.

Para hacer esto solo tenemos que descargar este repositorio en el directorio
Arduino/libraries, y modi car la librería Keyboard.

Ahora si, vamos con el script. En primer lugar, incluimos la librería Keyboard.h, con la que
podremos simular la pulsación de teclas. La función setup() es la principal del script. Para
empezar, debemos llamar a Keyboard.begin() y esperar un tiempo (medio segundo es
su ciente).

Cada tecla tiene especial tiene un identi cador. Por ejemplo, la tecla de enter es «KEY_RETURN». Primero hay que
llamar a la función de pulsar tecla, después esperar unas milésimas de segundo, y por último llamar a la función de
soltar tecla. Encapsularemos esto en la función typeKey para que sea más fácil:

Para escribir una cadena de texto, llamamos a la función Keyboard.print(palabra).

Para esta prueba inicial, vamos a abrir un bloc de notas y escribir «Hacked by Lethani!»,
suponiendo que la víctima está utilizando Windows. Pensemos qué teclas es necesario
pulsar. El método más rápido es mediante el atajo de teclado Windows + R, que abre el
panel de Ejecutar:

Por tanto primero presionaré la tecla de windows, cuyo identi cador es «KEY_LEFT_GUI»
y presionaré la tecla r (código ascii 114). Después, soltaré ambas teclas.

Tras una espera de medio segundo (para que se abra el panel), voy a escribir el programa
que usaré. Pulsaré enter, y esperaré medio segundo a que se abra el notepad. Por último,
escribiré una frase en el notepad:

Por acabar esta prueba de concepto, y para hacer un poquito de spam, vamos a abrirle a la
victima un navegador a pantalla completa con mi web.

El proceso es idéntico: abro Ejecutar y escribo el comando. En este caso, el comando es


iexplore, con -k para que salga a pantalla completa.

El script nal quedaría así:

Cabe destacar que no he utilizado la función loop() porque en este ejemplo no era
necesaria, pero es una función muy util ya que permite ejecutar cíclicamente las
instrucciones que introduzcamos.

Para cargarlo en el USB tan solo hay que conectarlo, seleccionarlo en Herramientas ->
Puerto, pulsar en «Veri car» (para comprobar la sintaxis del script) y pulsar en «Subir».
Aviso: una vez subido, se ejecutará automáticamente, por lo que debes tener mucho
cuidado.

A continuación os dejo un vídeo que he grabado con una demostración del script anterior.

Esta herramienta es muy útil combinada con ingeniería social, puesto que permite ataques
físicos delante de la víctima sin que se de cuenta, mucho más sigilosa y rápidamente que
de forma manual.

No obstante, recuerda que la ética y el honor debe prevalecer a cualquier n personal.

Lethani.

4.7/5 - (229 votos)

Hacking Físico, Pentesting, PoC's


El arte de romper un hash (HashCat)
Manual del pentester

6 comentarios en «Hacking físico con USB»

Nilson
noviembre 15, 2019 a las 5:42 pm

Nilsoncabezas4@gmail.com puede copiado Hacking

Responder

Lethani
noviembre 27, 2019 a las 3:59 pm

???

Responder

Ddxdaniell
abril 8, 2020 a las 11:38 pm

Y para ver la información que hemos conseguido, tendría forzosamente que conectarla a
mi PC y me infectaron ami mismo

Responder

Lethani
mayo 25, 2020 a las 10:06 am

Ese es uno de los problemas de esta «versión china» del rubberducky, que en el
momento en el que lo conectas a cualquier ordenador se ejecuta el payload. Pero
siempre hay métodos para no auto-infectarte, puedes enchufarlo con el ordenador
apagado o enviar la información que recopiles a algún sitio en internet, como
pastebin.com.

Responder

alex
octubre 6, 2021 a las 3:10 pm

me pone esto por que?

Arduino:1.8.16 (Windows Store 1.8.51.0) (Windows 10), Tarjeta:»LilyPad Arduino USB»

El Sketch usa 5578 bytes (19%) del espacio de almacenamiento de programa. El máximo
es 28672 bytes.

Las variables Globales usan 278 bytes (10%) de la memoria dinámica, dejando 2282 bytes
para las variables locales. El máximo es 2560 bytes.

Ha ocurrido un error mientras se enviaba el sketch

avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding

Found programmer: Id = «�»; type = �

Software Version = i.

Responder

Lethani
noviembre 17, 2021 a las 9:37 am

Mmm quizá has introducido algún caracter incompatible? Puedes compartir el


código del programa que estas intentando ejecutar? O mandame un mail a
admin@hackinglethani.com

Responder

Deja un comentario

Nombre *

Correo electrónico *

Web

Publicar comentario

© 2023 Hacking Lethani • Creado con GeneratePress

También podría gustarte