SOC Prime Bias: Medio

18 Dic 2025 21:42

Phantom 3.5 – Malware di furto di credenziali distribuito tramite un falso installer di Adobe

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Phantom 3.5 – Malware di furto di credenziali distribuito tramite un falso installer di Adobe
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

Phantom 3.5 è un malware che ruba credenziali distribuito tramite un falso installer di Adobe. Una volta eseguito, l’installer rilascia uno script PowerShell che scarica un DLL .NET offuscato (BLACKHAWK.dll) e inietta il payload finale in Aspnet_compiler.exe per essere eseguito sotto il contesto di un processo apparentemente affidabile.

Indagine

I ricercatori hanno eseguito il falso installer in una sandbox e catturato la posizione del downloader (positivepay-messages.com/file/floor.ps1). Hanno decodificato lo script protetto da Base64/RC4, identificato il DLL .NET recuperato, e confermato l’iniezione in Aspnet_compiler.exe usando strumenti come hollows_hunter e ProcDump. L’analisi indica che il DLL include misure anti-analisi, tecniche di Heaven’s Gate e molteplici canali di esfiltrazione, inclusi SMTP, FTP, Telegram e Discord.

Mitigazione

Limita o blocca l’esecuzione di script PowerShell non firmati, previeni il caricamento di DLL non attendibili, e monitora per la creazione anomala di processi Aspnet_compiler.exe. Applica il filtraggio degli URL per negare l’accesso al dominio malevolo e ai suoi percorsi. Assicurati che i controlli endpoint possano rilevare pattern di iniezione di processi e comportamenti comuni dei ladri di credenziali.

Risposta

Attiva allarmi sulle connessioni in uscita verso positivepay-messages.com, su artefatti di memoria o moduli relativi a BLACKHAWK.dll, e su evidenze di iniezione di codice in Aspnet_compiler.exe. Isola l’host interessato, acquisisci immagini di memoria, e conduci un triage forense completo per eradicare il DLL malevolo e i payload associati.

“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f9d5e5 %% Nodes u2013 Initial Access and Execution action_user_execution[“<b>Azione</b> – <b>T1204.002 Esecuzione Utente</b>: La vittima esegue un falso u201cinstaller Adobe 11.7.7u201d che sembra legittimo.”] class action_user_execution action tech_masquerade[“<b>Tecnica</b> – <b>T1036.008 Camuffamento</b>: Il file dell’installer viene rinominato e camuffato per sembrare un installer Adobe.”] class tech_masquerade technique tool_powershell[“<b>Strumento</b> – <b>Nome</b>: PowerShell<br/><b>Descrizione</b>: Usato per scaricare ed eseguire uno script dannoso con finestra nascosta e bypass delle policy di esecuzione.”] class tool_powershell tool %% Nodes u2013 Obfuscation and Decoding tech_deobfuscate[“<b>Tecnica</b> – <b>T1140 Deoffuscare/Decodificare File</b>: Il payload Base64u2011RC4 viene decodificato e decriptato prima dell’esecuzione.”] class tech_deobfuscate technique tech_obfuscate[“<b>Tecnica</b> – <b>T1027 File Offuscati</b>: Gli script malware sono fortemente offuscati per eludere l’analisi statica.”] class tech_obfuscate technique %% Nodes u2013 Process Injection and Reflective Loading tech_process_injection[“<b>Tecnica</b> – <b>T1055 Injection Processo</b>: BLACKHAWK.dll viene iniettato in Aspnet_compiler.exe per eseguire il payload.”] class tech_process_injection technique process_aspnet_compiler[“<b>Processo</b> – <b>Nome</b>: Aspnet_compiler.exe”] class process_aspnet_compiler process tech_reflective_load[“<b>Tecnica</b> – <b>T1620 Caricamento Codice Riflessivo</b>: Un assembly .NET viene caricato in memoria usando System.Reflection.Assembly::Load.”] class tech_reflective_load technique %% Nodes u2013 Defense Evasion tech_sandbox_evasion[“<b>Tecnica</b> – <b>T1497.002 Evasione Sandbox di Virtualizzazione</b>: Controlla nomi utente e variabili d’ambiente per rilevare macchine di analisi.”] class tech_sandbox_evasion technique %% Nodes u2013 Persistence tech_active_setup[“<b>Tecnica</b> – <b>T1547.014 Persistenza Active Setup</b>: Crea una chiave di registro Run tramite Active Setup per l’esecuzione automatica all’accesso.”] class tech_active_setup technique %% Nodes u2013 Credential Access and Collection tech_keylogging[“<b>Tecnica</b> – <b>T1056.001 Keylogging</b>: Cattura i tasti premuti dall’utente.”] class tech_keylogging technique tech_browser_cred[“<b>Tecnica</b> – <b>T1555.003 Accesso Credenziali Browser</b>: Ruba chiavi master, password, cookie e dati del portafoglio dai browser web.”] class tech_browser_cred technique tech_clipboard[“<b>Tecnica</b> – <b>T1115 Dati Appunti</b>: Raccoglie dati dagli appunti di sistema.”] class tech_clipboard technique tech_screen_capture[“<b>Tecnica</b> – <b>T1113 Cattura Schermo</b>: Scatta screenshot a intervalli di un secondo.”] class tech_screen_capture technique tech_video_capture[“<b>Tecnica</b> – <b>T1125 Cattura Video</b>: Registra riprese video del desktop dell’utente.”] class tech_video_capture technique %% Nodes u2013 Exfiltration tech_smtp_ftp[“<b>Tecnica</b> – <b>T1048 Esfiltrazione su Protocollo Alternativo</b>: Invio dati rubati tramite email SMTP e trasferimenti FTP.”] class tech_smtp_ftp technique tech_telegram_discord[“<b>Tecnica</b> – <b>T1567 Esfiltrazione tramite Servizio Web</b>: Trasferisce dati attraverso le API di Telegram e Discord.”] class tech_telegram_discord technique %% Nodes u2013 Command and Control tech_web_service[“<b>Tecnica</b> – <b>T1102.002 Servizio Web C2 Bidirezionale</b>: Utilizza Telegram e Discord come canali di comunicazione bidirezionali per comando e controllo.”] class tech_web_service technique %% Connections u2013 Flow of Attack action_user_execution u002du002d>|porta a| tech_masquerade tech_masquerade u002du002d>|porta a| tool_powershell tool_powershell u002du002d>|esegue| tech_deobfuscate tech_deobfuscate u002du002d>|supporta| tech_obfuscate tech_obfuscate u002du002d>|abilita| tech_process_injection tech_process_injection u002du002d>|obiettivo| process_aspnet_compiler process_aspnet_compiler u002du002d>|carica| tech_reflective_load tech_reflective_load u002du002d>|facilita| tech_sandbox_evasion tech_sandbox_evasion u002du002d>|permette| tech_active_setup tech_active_setup u002du002d>|abilita| tech_keylogging tech_keylogging u002du002d>|raccoglie| tech_browser_cred tech_browser_cred u002du002d>|aggiunge a| tech_clipboard tech_clipboard u002du002d>|aggiunge a| tech_screen_capture tech_screen_capture u002du002d>|aggiunge a| tech_video_capture tech_video_capture u002du002d>|fornisce| tech_smtp_ftp tech_video_capture u002du002d>|fornisce| tech_telegram_discord tech_smtp_ftp u002du002d>|esfiltra tramite| tech_web_service tech_telegram_discord u002du002d>|esfiltra tramite| tech_web_service %% Styling class action_user_execution action class tech_masquerade,tech_deobfuscate,tech_obfuscate,tech_process_injection,tech_reflective_load,tech_sandbox_evasion,tech_active_setup,tech_keylogging,tech_browser_cred,tech_clipboard,tech_screen_capture,tech_video_capture,tech_smtp_ftp,tech_telegram_discord,tech_web_service technique class tool_powershell tool class process_aspnet_compiler process “

Flusso di Attacco

Esecuzione di Simulazione

Prerequisito: Il Controllo di Telemetria & Baseline Pre‑flight deve essere stato superato.

Razionale: Questa sezione dettagli l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirano a generare la telemetria esatta attesa dalla logica di rilevamento.

  • Narrazione Attacco & Comandi:
    L’avversario ha ottenuto il payload Phantom 3.5 e intende eseguirlo in memoria per eludere le difese basate su disco. Sfruttano Aspnet_compiler.exe, un binario affidabile di Windows, per caricare l’assembly gestito malevolo tramite l’argomento Invoke-ManagedAssembly . Ciò causa l’avvio del processo del compilatore, iniettando il payload nello spazio del processo corrente e persistendo creando un task pianificato che esegue ripetutamente lo stesso comando.

    1. Prepara l’assembly gestito malevolo (phantom_payload.dll) sull’host di destinazione.

    2. Esegui l’iniezione usando Aspnet_compiler.exe:

       $maliciousDll = "C:Tempphantom_payload.dll"
       $cmd = "`"$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe`" -p `"$maliciousDll`" -c `Invoke-ManagedAssembly`"
       Start-Process -FilePath $cmd -WindowStyle Hidden
    3. Crea persistenza (opzionale) registrando un task pianificato che ripete lo stesso comando ogni ora.

  • Script di Test di Regressione: Lo script seguente riproduce i passaggi sopra descritti in modo autonomo e ripetibile.

    <#
    .SYNOPSIS
        Simula l'iniezione di processo Phantom 3.5 usando Aspnet_compiler.exe.
    .DESCRIPTION
        Copia un dll malevolo dummy in una posizione nota, quindi lancia Aspnet_compiler.exe
        con il flag `Invoke-ManagedAssembly` per generare l'evento di creazione del processo esatto
        che la regola di rilevamento monitora.
    #>
    
    # --- Preparazione -----------------------------------------------------------
    $dllPath = "$env:TEMPphantom_payload.dll"
    # Crea un DLL dummy piccolo (segnaposto per il vero payload)
    Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00)) -Encoding Byte
    
    # --- Esecuzione -------------------------------------------------------------
    $aspnetPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe"
    if (-Not (Test-Path $aspnetPath)) {
        Write-Error "Aspnet_compiler.exe non trovato nella posizione prevista."
        exit 1
    }
    
    $arguments = "-p `"$dllPath`" -c `Invoke-ManagedAssembly`"
    Write-Host "Avvio di Aspnet_compiler.exe con argomenti malevoli..."
    Start-Process -FilePath $aspnetPath -ArgumentList $arguments -WindowStyle Hidden -PassThru
    
    # --- Persistenza Opzionale ----------------------------------------------------
    # Registra un task pianificato che ripete l'iniezione ogni ora
    $taskName = "PhantomInject"
    $action = New-ScheduledTaskAction -Execute $aspnetPath -Argument $arguments
    $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration ([TimeSpan]::MaxValue)
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force
    
    Write-Host "Simulazione completata. Controlla il SIEM per l'allerta generata."
  • Comandi di Pulizia: Rimuovi il DLL dummy, il task pianificato, e qualsiasi processo rimanente.

    # Rimuovi il DLL dummy
    Remove-Item -Path "$env:TEMPphantom_payload.dll" -Force -ErrorAction SilentlyContinue
    
    # Deregistra il task pianificato
    Unregister-ScheduledTask -TaskName "PhantomInject" -Confirm:$false -ErrorAction SilentlyContinue
    
    # Termina eventuali processi Aspnet_compiler.exe avviati dal test
    Get-Process -Name "Aspnet_compiler" -ErrorAction SilentlyContinue | Stop-Process -Force