SOC Prime Bias: Medio

29 Jan 2026 15:23 UTC

El Código PyRAT: Internos de un RAT Basado en Python

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
El Código PyRAT: Internos de un RAT Basado en Python
shield icon

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

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:

      1. 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.
      2. Copia una herramienta empaquetada de Debian disfrazada llamada dpkgn en /usr/local/bin, otorgándole derechos de ejecución. La herramienta es un envoltorio simple que simplemente lanza la carga ELF.
      3. Instala una entrada de escritorio de autostart (dpkgn.desktop) en ~/.config/autostart para que la carga se ejecute al inicio de cada sesión gráfica.
      4. Configura los permisos apropiados para evitar sospechas inmediatas.

      Los eventos de archivo combinados (agent-svc.pyc and dpkgn) cumplen con la primera condición de la regla, mientras que el archivo .desktop cumple con la segunda condición.

    • 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."