SOC Prime Bias: Medio

18 Dec 2025 18:42 UTC

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 Segui
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.

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