SOC Prime Bias: Medio

29 Jan 2026 15:23 UTC

Il codice PyRAT: dettagli di un RAT basato su Python

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Il codice PyRAT: dettagli di un RAT basato su Python
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sintesi

L’articolo descrive PyRAT, un trojan di accesso remoto basato su Python, confezionato come file binario ELF utilizzando PyInstaller. Funziona su Linux e Windows, comunica con un server C2 tramite HTTP non criptato e supporta l’esecuzione di comandi, esfiltrazione di file, cattura degli screenshot e una routine di autodistruzione. La persistenza è implementata tramite XDG autostart su Linux e una chiave di registro Run su Windows. Il rapporto enfatizza la leggerezza dello strumento e la facilità con cui può essere riutilizzato dai cybercriminali.

Indagine

I ricercatori hanno estratto il bytecode Python incorporato con pyinstxtractor, decompilato i moduli e identificato la classe principale Agent che esegue l’identificazione dell’host, la generazione dell’UID, la gestione dei thread e il coordinamento con il C2. L’analisi statica ha portato alla luce importazioni chiave, nomi di file, interazione con il registro e l’endpoint HTTP POST usato per il beaconing. I test comportamentali hanno mostrato l’intero flusso di lavoro: creazione della persistenza, esecuzione dei comandi, enumerazione dei file, operazioni di upload/download, creazione di archivi ZIP, cattura degli screenshot e pulizia opzionale degli artefatti.

Mitigazione

Monitorare la creazione di file .desktop di autostart sospetti nei profili utente e le aggiunte alla chiave di registro HKCURun utilizzando nomi eseguibili non familiari. A livello di rete, osservare il traffico HTTP POST in uscita verso host sconosciuti che puntano all’endpoint /api/{uid}/hello. Sui punti finali, segnalare binari ELF sconosciuti contenenti contenuti Python incorporati e comportamenti di processo anomali come l’esecuzione frequente di subprocessi.

Risposta

Se rilevato, isolare il sistema, raccogliere il campione ELF e i file .desktop associati e conservare lo stato del registro pertinente. Estrarre l’UID, l’indirizzo C2 e tutti i file trasferiti durante l’esecuzione come parte della forensica. Bloccare l’infrastruttura C2 identificata, rimuovere la persistenza e completare una pulizia completa. Ruotare le credenziali degli account che potrebbero essere stati esposti.

Flusso di attacco

Esecuzione Simulazione

Prerequisito: Il Controllo Preliminare di Telemetria & Baselining deve essere superato.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirare a generare la telemetria esatta attesa dalla logica di rilevamento.

  • Narrativa dell’attacco e Comandi:

    Un attaccante ha ottenuto una credenziale SSH compromessa per un utente normale. Dopo il login, eseguono uno script di living‑off‑the‑land che:

    1. Scrive il payload ELF malevolo (agent-svc.pyc) nella directory home dell’utente, camuffandolo come un file di bytecode Python mentre è in realtà un binario ELF.
    2. Copia uno strumento di pacchetto Debian camuffato chiamato dpkgn in /usr/local/bin, concedendogli diritti eseguibili. Lo strumento è un semplice wrapper che avvia il payload ELF.
    3. Installa un’entrata desktop autostart (dpkgn.desktop) in ~/.config/autostart così il payload viene eseguito ad ogni inizio sessione grafica.
    4. Imposta permessi appropriati per evitare sospetti immediati.

    Gli eventi combinati sui file (agent-svc.pyc and dpkgn) soddisfano la prima condizione della regola, mentre il .desktop file soddisfa la seconda condizione.

  • Script di Test di Regressione:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # 1. Distribuire ELF malevolo camuffato da .pyc
    MALWARE_PATH="$HOME/agent-svc.pyc"
    echo "Creazione payload ELF falso (dummy binary) ..."
    dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none
    chmod +x "$MALWARE_PATH"
    
    # 2. Distribuire falso strumento Debian chiamato 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. Creare entrata desktop autostart
    AUTOSTART_DIR="$HOME/.config/autostart"
    mkdir -p "$AUTOSTART_DIR"
    DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop"
    cat > "$DESKTOP_FILE" <<EOF
    [Desktop Entry]
    Type=Application
    Exec=$FAKE_TOOL
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name=Package Manager
    Comment=System Update Service
    EOF
    
    echo "Artefatti di persistenza PyRAT distribuiti."
  • Comandi di Pulizia:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # Rimuovere ELF malevolo
    rm -f "$HOME/agent-svc.pyc"
    
    # Rimuovere strumento falso
    sudo rm -f /usr/local/bin/dpkgn
    
    # Rimuovere entrata autostart
    rm -f "$HOME/.config/autostart/dpkgn.desktop"
    
    echo "Pulizia completata."