En este artículo, te enseñaremos a pensar como los cazadores de amenazas y a utilizar la herramienta de código abierto YARA junto con Censys para encontrar Coinhive, un servicio de minado de criptomonedas. Creada para ayudar a los analistas de seguridad, YARA (ahora gestionada por VirusTotal) permite a los usuarios escribir reglas/descripciones complejas para identificar y clasificar el malware. Yara es lo suficientemente flexible como para permitirte iterar sobre etiquetas HTML, una técnica que utilizaremos más adelante en este post.
A menudo, los atacantes crean malware "nuevo" simplemente cambiando algunos rasgos menores de malware conocido para eludir las protecciones de seguridad. YARA y herramientas similares permiten agrupar programas maliciosos que siguen patrones y comportamientos similares, con el fin de detectar programas maliciosos parecidos y evitar riesgos para la seguridad. Gracias a herramientas como YARA, los analistas de amenazas pueden rastrear más fácilmente estas "nuevas" infecciones de malware y prevenir los ataques.
Ataques reales con Coinhive
Según una investigación del equipo SpiderLab de TrustWave, Coinhive afectó a más de 200.000 routers MikroTik en agosto de 2018. En ese momento, el investigador de seguridad de SpiderLab Simon Kenin dijo a BleepingComputer:
"El atacante sabiamente pensó que en lugar de infectar sitios pequeños con pocos visitantes, o encontrar formas sofisticadas de ejecutar malware en los ordenadores de los usuarios finales, irían directamente a la fuente; dispositivos de router de grado carrier. Incluso si este ataque sólo funciona en páginas que devuelven errores, seguimos hablando de millones de páginas diarias potenciales para el atacante."
Estos ataques en concreto parecían afectar sobre todo a sitios web brasileños, pero el informe de SpiderLabs afirmaba que el atacante probablemente extendería el malware a un público más amplio y global después de medir el éxito en Brasil.
Aunque el impacto de este ataque en particular fue amplio, MikroTik publicó rápidamente un parche que impedía que otros exploits afectaran a sus clientes.
Encontrar infecciones Coinhive con Censys + YARA
Los cazadores de amenazas estarán encantados de saber que Censys permite a los usuarios buscar en la fuente de la página web utilizando expresiones regulares. Recientemente, mostramos a los usuarios cómo encontrar el malware Magecart utilizando Censys. Como Magecart funcionaba inyectando Javascript malicioso en la página raíz de los sitios web, podíamos buscar sitios web infectados buscando enlaces a las fuentes de script conocidas que alojaban el código malicioso en el HTML sin procesar. En el caso de Magecart, devolvía pocos resultados, por lo que podíamos inspeccionar manualmente los resultados de la búsqueda para asegurarnos de que el HTML en el cuerpo HTTP(S) contenía un enlace de script a uno de los dominios sospechosos. En ese momento, mencionamos que si los resultados de la búsqueda arrojaban un mayor número de dominios, el proceso manual se volvería inmanejable, pero que se podía automatizar la comprobación de falsos positivos con un script.
Queremos centrarnos aquí en un proceso similar de caza de amenazas, pero cómo puede utilizar un script para ayudar a eliminar los falsos positivos cuando los resultados de la búsqueda son demasiado grandes para revisarlos manualmente. Aquí es donde entran en juego las reglas YARA.
Al igual que Magecart, una de las formas en que los atacantes distribuyen la familia de códigos Coinhive es inyectándola en sitios web legítimos. Los atacantes utilizan Coinhive para utilizar el navegador del visitante del sitio (también conocido como la víctima) para comenzar a minar criptomoneda para ellos, utilizando la CPU de la víctima para hacer el trabajo pesado y liberar la máquina del atacante. Hemos creado un útil script que lee la lista de dominios sospechosos que utilizan el conocido código Javascript malicioso de Coinhive. Utiliza la biblioteca PythonCensys y la biblioteca Python Yara.
Este script lee la lista de dominios y construye dinámicamente una búsqueda en Censys de menciones de los dominios infectados en el cuerpo del texto de la página web, utilizando la regla personalizada YARA para refinar aún más los resultados de la búsqueda y eliminar los falsos positivos. Estos falsos positivos a menudo incluyen menciones de los sitios en el texto, pero no en un comando para indicar al navegador que ejecute ese Javascript.
Este es un ejemplo de una búsqueda que podría realizar, utilizando nombres de dominio que se sabe que se utilizan para distribuir código Javascript malicioso. Puedes usar Censys para buscarlos en cualquier detalle de host, ver más abajo:
El script YARA que incluimos en este post reduce los resultados de la búsqueda a las coincidencias de código de script. Desafortunadamente, YARA no es capaz de analizar HTML de forma nativa, así que aunque queramos buscar en las etiquetas de script del sitio web el código Javascript malicioso relacionado con Coinhive, tenemos que crear una solución para analizar las etiquetas. Yara puede iterar sobre sus grupos de captura y buscar en ellos, así que utilizamos patrones de apertura y cierre de etiquetas de script para extraer sólo los fragmentos que queremos.
En nuestro script, escribimos reglas para buscar cualquier nombre de dominio situado entre las etiquetas de apertura y cierre del script, lo que evita las coincidencias en los campos de texto plano. He aquí una captura de pantalla del resultado para que se haga una idea de cómo estamos refinando los resultados de nuestra búsqueda:
Un poco de pensamiento creativo por tu parte como cazador de amenazas te ayudará a encontrar el verdadero poder de las búsquedas de malware en Censys y útiles herramientas de código abierto como YARA pueden ayudarte a automatizar parte del análisis y filtrar el ruido.
Qué hacer si encuentras Coinhive en alguno de tus dominios
Aquí tienes algunos consejos para desbaratar Coinhive si lo encuentras en tus activos:
- Cambie y aplique contraseñas seguras a los usuarios y cuentas de servicio que tengan acceso para editar o actualizar el contenido del sitio web.
- Actualice la contraseña de los sitios o servicios de terceros que puedan tener acceso para editar o actualizar el contenido del sitio web.
- Imponga la autenticación multifactor en las cuentas de administrador y en las cuentas de usuario que puedan modificar el contenido del sitio web.
- Revise y actualice los plugins de WordPress. Asegúrese de que los plugins instalados siguen en desarrollo activo.
- Si es posible, instale registros de auditoría en sus servidores web y de bases de datos. Herramientas de código abierto como OSSEC u OSQuery pueden alertar a los administradores de comportamientos anómalos en el servidor.
Este ejemplo concreto es sólo una muestra de las infinitas posibilidades. Nos encantaría saber qué descubres tú, compártelo con nosotros en Twitter(@censysio). Juntos podemos construir una comunidad en la que compartir descubrimientos y tácticas, de igual a igual, para ayudar a combatir a los atacantes y las amenazas.