El Código PyRAT: Internos de un RAT Basado en Python
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El artículo perfila PyRAT, un troyano de acceso remoto basado en Python empaquetado como un binario ELF usando PyInstaller. Funciona tanto en Linux como en Windows, se comunica con un servidor C2 a través de HTTP sin cifrar, y admite la ejecución de comandos, exfiltración de archivos, captura de pantallas y una rutina de autodestrucción. La persistencia se implementa a través de XDG autostart en Linux y una clave de registro Run en Windows. El informe enfatiza lo liviana que es la herramienta y lo fácilmente que puede ser reutilizada por los ciberdelincuentes.
Investigación
Los investigadores extrajeron el bytecode de Python incrustado con pyinstxtractor, descompilaron los módulos e identificaron la clase principal Agent que realiza el fingerprinting del host, la generación de UID, la gestión de hilos y la coordinación con C2. El análisis estático reveló importaciones clave, nombres de archivos, interacción con el registro y el endpoint HTTP POST utilizado para el beaconing. Las pruebas de comportamiento mostraron el flujo de trabajo completo: creación de persistencia, ejecución de comandos, enumeración de archivos, operaciones de carga/descarga, creación de archivos ZIP, captura de pantalla y limpieza de artefactos opcional.
Mitigación
Monitoree .desktop de autoinicio sospechosos creados en los perfiles de usuario y para adiciones a la clave HKCURun utilizando nombres de ejecutables desconocidos. En la capa de red, observe el tráfico HTTP POST saliente hacia hosts desconocidos que apunten al endpoint /api/{uid}/hello. En los endpoints, marque los binarios ELF desconocidos que contengan contenido Python incrustado y el comportamiento anómalo del proceso, como la ejecución frecuente de subprocesos.
Respuesta
Si se detecta, aísle el sistema, recopile la muestra ELF y cualquier archivo .desktop asociado, y conserve el estado relevante del registro. Extraiga el UID, la dirección C2 y los archivos transferidos durante la ejecución como parte de la forensia. Bloquee la infraestructura C2 identificada, elimine la persistencia y complete una limpieza completa. Rote credenciales para cuentas que puedan haber sido expuestas.
Flujo de Ataque
Detecciones
Operación Potencial de Autoeliminación de Malware o Encubrimiento de Stderr (a través de la línea de comandos)
Ver
El Archivo Fue Creado en la Carpeta Tmp de Linux (a través de file_event)
Ver
Puntos de Persistencia Posibles [ASEPs – Software/NTUSER Hive] (a través de la línea de comandos)
Ver
Intento de Eliminación de Claves de Registro Posible (a través de process_creation)
Ver
Intento de Modificación de Archivos XDG Autostart de Linux Posible (a través de la línea de comandos)
Ver
Permisos Peligrosos para un Binario/Script/Carpeta fueron establecidos (a través de la línea de comandos)
Ver
IOC (HashMd5) para detectar: El Código de PyRAT: RAT Basado en Python y sus Internos
Ver
Persistencia en Windows a través de la Clave de Ejecución del Usuario Actual [Evento del Registro de Windows]
Ver
Detección de Persistencia de PyRAT en Linux [Creación de Proceso en Linux]
Ver
Ejecución de Simulación
Requisito Previo: Debe haber pasado la Verificación de Telemetría y Línea de Base.
Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente las TTPs identificadas y tener como objetivo generar la telemetría exacta esperada por la lógica de detección.
-
-
Narrativa de Ataque y Comandos:
Un atacante ha obtenido una credencial de SSH comprometida de un usuario regular. Después de iniciar sesión, ejecutan un script que utiliza recursos nativos que:
- Escribe la carga útil ELF maliciosa (
agent-svc.pyc) en el directorio de inicio del usuario disfrazándola como un archivo de bytecode de Python aunque es realmente un binario ELF. - Copia una herramienta empaquetada de Debian disfrazada llamada
dpkgnen/usr/local/bin, otorgándole derechos de ejecución. La herramienta es un envoltorio simple que simplemente lanza la carga ELF. - Instala una entrada de escritorio de autostart (
dpkgn.desktop) en~/.config/autostartpara que la carga se ejecute al inicio de cada sesión gráfica. - Configura los permisos apropiados para evitar sospechas inmediatas.
Los eventos de archivo combinados (
agent-svc.pycanddpkgn) cumplen con la primera condición de la regla, mientras que el archivo.desktopcumple con la segunda condición. - Escribe la carga útil ELF maliciosa (
-
Script de Prueba de Regresión:
#!/usr/bin/env bash set -euo pipefail # 1. Desplegar ELF malicioso disfrazado como .pyc MALWARE_PATH="$HOME/agent-svc.pyc" echo "Creando carga ELF falsa (binario de prueba) ..." dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none chmod +x "$MALWARE_PATH" # 2. Desplegar herramienta falsa de Debian llamada dpkgn FAKE_TOOL="/usr/local/bin/dpkgn" echo "#!/usr/bin/env bash" | sudo tee "$FAKE_TOOL" > /dev/null echo "exec "$MALWARE_PATH" "$@"" | sudo tee -a "$FAKE_TOOL" > /dev/null sudo chmod +x "$FAKE_TOOL" # 3. Crear entrada de autostart de escritorio AUTOSTART_DIR="$HOME/.config/autostart" mkdir -p "$AUTOSTART_DIR" DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop" cat > "$DESKTOP_FILE" <
-
-
Comandos de Limpieza:#!/usr/bin/env bash set -euo pipefail # Eliminar ELF malicioso rm -f "$HOME/agent-svc.pyc" # Eliminar herramienta falsa sudo rm -f /usr/local/bin/dpkgn # Eliminar entrada de autostart rm -f "$HOME/.config/autostart/dpkgn.desktop" echo "Limpieza completada."