Il codice PyRAT: dettagli di un RAT basato su Python
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
Rilevamenti
Potenziale Operazione di Autoremozione Malware o Occultamento Stderr (via cmdline)
Visualizza
Archivio Creato nella Cartella Tmp di Linux (via file_event)
Visualizza
Possibili Punti di Persistenza [ASEPs – Software/NTUSER Hive] (via cmdline)
Visualizza
Tentativo di Rimozione Chiavi di Registro (via process_creation)
Visualizza
Tentativo di Modifica File Autostart Linux XDG (via cmdline)
Visualizza
Impostate Permessi Pericolosi per un Binario/Script/Cartella (via cmdline)
Visualizza
IOCs (HashMd5) per rilevare: Il Codice PyRAT: RAT Basato su Python e i suoi Interni
Visualizza
Persistenza su Windows via Chiave Run dell’Utente Corrente [Evento Registro Windows]
Visualizza
Rilevamento di Persistenza di PyRAT su Linux [Creazione Processo Linux]
Visualizza
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:
- 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. - Copia uno strumento di pacchetto Debian camuffato chiamato
dpkgnin/usr/local/bin, concedendogli diritti eseguibili. Lo strumento è un semplice wrapper che avvia il payload ELF. - Installa un’entrata desktop autostart (
dpkgn.desktop) in~/.config/autostartcosì il payload viene eseguito ad ogni inizio sessione grafica. - Imposta permessi appropriati per evitare sospetti immediati.
Gli eventi combinati sui file (
agent-svc.pycanddpkgn) soddisfano la prima condizione della regola, mentre il.desktopfile soddisfa la seconda condizione. - Scrive il payload ELF malevolo (
-
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."