Coinhive y el mercado legal {e ilegal} de la minería de criptodivisas
Coinhive es uno de los crypto miner más famosos y utilizados. Este tipo de crypto miner permiten a un usuario minar mientras visita un sitio web. El tema está de actualidad y es de los que llaman la atención de mucha gente y de los que tienen dos vertientes, como casi todo en el mundo de la ciberseguridad, la parte legal y la que no.
El modo de funcionamiento de Coinhive, Crypto-Loot o JSECoin es idéntico y no podemos decir que es algo novedoso. Es más, si vamos años atrás vemos incidentes como el caso de la RSA Conference y el SEA, dónde gracias a un Javascript que se cargaba externamente a la web de la RSA Conference se consiguió emitir un mensaje cada vez que los usuarios accedían al sitio web. Estas técnicas usadas en Crypto Minering se han convertido en un auténtico boom.
- El boom de los minadores JavaScript
- Cyptojacking: Amenza latente y creciente
- Guerra abierta para evitar la minería no autorizada de criptodivisas cuando navegamos
En el Security Day de 2014 contamos este caso como ejemplo de la importancia de un pentesting estratégico y de observar y controlar todos los recursos de terceros que son utilizados por una empresa. El servicio Faast de ElevenPaths así lo hace.
Figura 2: Security Innovation Day 2014
En su día hablamos de CoffeeMiner, un proyecto educativo que enseñaba cómo funcionaba la inyección de código Javascript para minar, haciendo uso del propio Coinhive.
Figura 3: Ejemplo de CoffeeMinner
El funcionamiento de Coinhive y otros mineros web tiene un funcionamiento similar al problema de la RSA que comentaba antes. El propietario de un sitio web puede inyectar el código Javascript en su sitio web con el objetivo de que los visitantes aporten parte de su CPU para minar. La parte legal viene en el caso del consentimiento y notificación de esto al usuario. Es decir, Trespass to chattels.
A continuación, podéis ver un esquema sencillo de funcionamiento de minado web. En este esquema se muestra como un actor compromete un sitio web y modifica la web para que el Javascript de, por ejemplo, Coinhive esté disponible en la web cada vez que se sirva. El script de Coinhive dispone de una data-key que apunta a la clave pública. De esta forma todo lo que se mina por parte del navegador va hacia el propietario de esa clave pública.
En el último año y medio ha habido un aumento notable de incidentes de seguridad que acaban con la inclusión de este tipo de código en sitios web. Además, se ha incrementado el número de aparición de este tipo de soluciones. Un caso llamativo fue el de Facebook Messenger y el malware que lo usaba para minar Monero en el PC. Se llamaba Digmine y era descargado a través de un enlace video que se enviaba a través de Facebook Messenger. El malware descargaba un programa que minaba Monero en background. De nuevo, una intrusión para utilizar recursos de CPU.
Otro caso interesante, por el potencial que tiene fue el caso de los EXCEL que disponían de una Macro que minaba. Como se puede ver en la imagen, se utilizaba conexiones a Coinhive desde la Macro con el objetivo de minar Monero. En la siguiente ElevenPaths Talk se habla un poco de todas las criptomonedas existentes.
Figura 7: Criptografía, criptomonedas y otras hiervas
Hay muchas derivadas y vectores que acaban con el objetivo de minar en el equipo. Ahora, hablaremos un poco más de Coinhive en detalle. El sitio web de Coinhive proporciona una serie de posibilidades para introducir el Javascript en un sitio web.
Como se puede ver en la imagen superiro, se puede utilizar un ejemplo rápido a través de la opción “Simple Miner UI”, un captcha que aprovecha para minar y validar que no eres un bot, una API con la que interactuar y poder validar, por ejemplo, que no eres un bot, un plugin de Wordpress, etcétera. El primero de los ejemplos de Coinhive es algo como esto:
El atributo data-key es el que debe contener la clave pública del sitio creado en Coinhive. En la parte interna de Coinhive hay que crear un par de claves, y la pública se configura. Por defecto, este código utiliza authedmine, por lo que en todo momento el usuario es consciente de la minería y no se activará hasta que el usuario que navega al sitio quiera.
Esto es importante, ya que solo se minará si el usuario es consciente y quiere apoyar al sitio cediendo su CPU. En la imagen, se puede observar un ejemplo sencillo de cómo se puede ver en un sitio web real.
El segundo ejemplo es el del captcha. Es una solución interesante y que puede ayudar a sitios web a obtener beneficio por el uso de sus servicios. En vez de utilizar publicidad, siempre que el usuario sea consciente y quiera ceder su recurso, se puede dar pie a una minería a favor del sitio web. En este caso, el código es similar al anterior:
Cuando pasa unos segundos minando, se verifica y es cuando se puede hacer el submit para demostrar que uno no es un bot o que ha sido una infección sin conocimiento del usuario.
Hasta aquí, hay un uso legítimo porque es el usuario que cede sus recursos, es consciente de ello y quiere colaborar. El problema radica cuando uno no es consciente que por acceder a un sitio se está haciendo uso de su CPU. Para evitar caer en este tipo de sitios web, podemos utilizar plugins para el navegador como el de Notmining. También se puede utilizar bloqueadores de código Javascript como NoScript, todo un clásico. Además, las soluciones antivirus han entrado a evaluar este tipo de códigos.
Figura 12+1: Ejemplo de funcionamiento de NotMining
Como últimas curiosidades decir que Coinhive mina el 1% de todos los bloques de Monero. Más de 250.000 dólares han sido minados con Coinhive, aunque esto no quiere decir que, de forma ilegal, aunque, probablemente, parte sí. Coinhive se queda con 75.000 dólares de esos 250.000 dólares minados, es decir, un 30%.
Sin duda, este tipo amenazas, por su no notificación y consentimiento, son una de las principales amenazas del año 2018, sustituyendo en los rankings de reportes anuales al ransomware. También se debe entender las diferencias entre esto y el ransomware, ya que a efectos prácticos y de impacto no es igual. El cryptojacking está aquí para quedarse. Ya es parte de nuestra vida digital.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
Figura 1: Coinhive y el mercado legal {e ilegal} de la minería de criptodivisas |
El modo de funcionamiento de Coinhive, Crypto-Loot o JSECoin es idéntico y no podemos decir que es algo novedoso. Es más, si vamos años atrás vemos incidentes como el caso de la RSA Conference y el SEA, dónde gracias a un Javascript que se cargaba externamente a la web de la RSA Conference se consiguió emitir un mensaje cada vez que los usuarios accedían al sitio web. Estas técnicas usadas en Crypto Minering se han convertido en un auténtico boom.
- El boom de los minadores JavaScript
- Cyptojacking: Amenza latente y creciente
- Guerra abierta para evitar la minería no autorizada de criptodivisas cuando navegamos
En el Security Day de 2014 contamos este caso como ejemplo de la importancia de un pentesting estratégico y de observar y controlar todos los recursos de terceros que son utilizados por una empresa. El servicio Faast de ElevenPaths así lo hace.
Figura 2: Security Innovation Day 2014
En su día hablamos de CoffeeMiner, un proyecto educativo que enseñaba cómo funcionaba la inyección de código Javascript para minar, haciendo uso del propio Coinhive.
Figura 3: Ejemplo de CoffeeMinner
El funcionamiento de Coinhive y otros mineros web tiene un funcionamiento similar al problema de la RSA que comentaba antes. El propietario de un sitio web puede inyectar el código Javascript en su sitio web con el objetivo de que los visitantes aporten parte de su CPU para minar. La parte legal viene en el caso del consentimiento y notificación de esto al usuario. Es decir, Trespass to chattels.
Figura 4: Trespass to chattels |
A continuación, podéis ver un esquema sencillo de funcionamiento de minado web. En este esquema se muestra como un actor compromete un sitio web y modifica la web para que el Javascript de, por ejemplo, Coinhive esté disponible en la web cada vez que se sirva. El script de Coinhive dispone de una data-key que apunta a la clave pública. De esta forma todo lo que se mina por parte del navegador va hacia el propietario de esa clave pública.
Figura 5: Esquema sencillo de minado |
En el último año y medio ha habido un aumento notable de incidentes de seguridad que acaban con la inclusión de este tipo de código en sitios web. Además, se ha incrementado el número de aparición de este tipo de soluciones. Un caso llamativo fue el de Facebook Messenger y el malware que lo usaba para minar Monero en el PC. Se llamaba Digmine y era descargado a través de un enlace video que se enviaba a través de Facebook Messenger. El malware descargaba un programa que minaba Monero en background. De nuevo, una intrusión para utilizar recursos de CPU.
Figura 6: Macro minando Monero |
Otro caso interesante, por el potencial que tiene fue el caso de los EXCEL que disponían de una Macro que minaba. Como se puede ver en la imagen, se utilizaba conexiones a Coinhive desde la Macro con el objetivo de minar Monero. En la siguiente ElevenPaths Talk se habla un poco de todas las criptomonedas existentes.
Figura 7: Criptografía, criptomonedas y otras hiervas
Hay muchas derivadas y vectores que acaban con el objetivo de minar en el equipo. Ahora, hablaremos un poco más de Coinhive en detalle. El sitio web de Coinhive proporciona una serie de posibilidades para introducir el Javascript en un sitio web.
Figura 8: Opciones de introducir Coinhive |
Como se puede ver en la imagen superiro, se puede utilizar un ejemplo rápido a través de la opción “Simple Miner UI”, un captcha que aprovecha para minar y validar que no eres un bot, una API con la que interactuar y poder validar, por ejemplo, que no eres un bot, un plugin de Wordpress, etcétera. El primero de los ejemplos de Coinhive es algo como esto:
Figura 9: Ejemplo 1 de Coinhive |
El atributo data-key es el que debe contener la clave pública del sitio creado en Coinhive. En la parte interna de Coinhive hay que crear un par de claves, y la pública se configura. Por defecto, este código utiliza authedmine, por lo que en todo momento el usuario es consciente de la minería y no se activará hasta que el usuario que navega al sitio quiera.
Esto es importante, ya que solo se minará si el usuario es consciente y quiere apoyar al sitio cediendo su CPU. En la imagen, se puede observar un ejemplo sencillo de cómo se puede ver en un sitio web real.
Figura 10: Usuario consciente de la minería de Coinhive |
El segundo ejemplo es el del captcha. Es una solución interesante y que puede ayudar a sitios web a obtener beneficio por el uso de sus servicios. En vez de utilizar publicidad, siempre que el usuario sea consciente y quiera ceder su recurso, se puede dar pie a una minería a favor del sitio web. En este caso, el código es similar al anterior:
Figura 11: Ejemplo de Coinhive con Captcha |
Cuando pasa unos segundos minando, se verifica y es cuando se puede hacer el submit para demostrar que uno no es un bot o que ha sido una infección sin conocimiento del usuario.
Figura 12: Alertas de uso |
Hasta aquí, hay un uso legítimo porque es el usuario que cede sus recursos, es consciente de ello y quiere colaborar. El problema radica cuando uno no es consciente que por acceder a un sitio se está haciendo uso de su CPU. Para evitar caer en este tipo de sitios web, podemos utilizar plugins para el navegador como el de Notmining. También se puede utilizar bloqueadores de código Javascript como NoScript, todo un clásico. Además, las soluciones antivirus han entrado a evaluar este tipo de códigos.
Figura 12+1: Ejemplo de funcionamiento de NotMining
Como últimas curiosidades decir que Coinhive mina el 1% de todos los bloques de Monero. Más de 250.000 dólares han sido minados con Coinhive, aunque esto no quiere decir que, de forma ilegal, aunque, probablemente, parte sí. Coinhive se queda con 75.000 dólares de esos 250.000 dólares minados, es decir, un 30%.
Sin duda, este tipo amenazas, por su no notificación y consentimiento, son una de las principales amenazas del año 2018, sustituyendo en los rankings de reportes anuales al ransomware. También se debe entender las diferencias entre esto y el ransomware, ya que a efectos prácticos y de impacto no es igual. El cryptojacking está aquí para quedarse. Ya es parte de nuestra vida digital.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
2 comentarios:
Gracias
Hola, si pudieras analizar y decir que te parece JSEcoin, una criptomoneda, es como coinhive pero legal, eficiente y no cryptojacking.
Un saludo
Publicar un comentario