SOC Prime Bias: Critico

05 Jun 2026 15:40 UTC

C0XMO: Una Nuova Variante di Gafgyt con Propagazione Cross-Platform

Author Photo
SOC Prime Team linkedin icon Segui
C0XMO: Una Nuova Variante di Gafgyt con Propagazione Cross-Platform
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

FortiGuard Labs ha identificato un nuovo ceppo di botnet Gafgyt chiamato C0XMO che si propaga sfruttando un difetto di overflow del buffer nei router DD-WRT tracciato come CVE-2021-27137. Il malware utilizza uno scanner separato basato su Python per ampliare le infezioni su diverse architetture CPU, facendo anche affidamento su attacchi a credenziali deboli, diverse capacità di DDoS e routine per rimuovere malware concorrenti. Dopo l’infezione, stabilisce la persistenza tramite file nascosti, cron job e modifiche al profilo shell prima di contattare il suo server di comando e controllo. Il rapporto include anche indicatori e linee guida difensive per le organizzazioni che operano dispositivi IoT esposti.

Indagine

L’analisi mostra che C0XMO abusa CVE-2021-27137 nel servizio UPnP di DD-WRT per ottenere l’accesso iniziale, quindi recupera uno scanner Python da 217.160.125.125:15527. Quello scanner effettua tentativi di brute-force su Telnet e SSH, lancia diverse richieste di exploit basate su HTTP e distribuisce binari specifici per architettura a seconda dell’ambiente target. La persistenza è mantenuta tramite file nascosti posti in posizioni come /tmp, /var/tmp, /dev/shm, e directory home utente, insieme a voci di cron-job e modifiche al profilo shell. Il malware poi comunica con la sua infrastruttura C2 a 85.215.131.70 usando una sequenza di stretta di mano personalizzata.

Mitigazione

Le organizzazioni dovrebbero aggiornare il firmware DD-WRT a una release successiva al changeset 45723 e applicare correzioni per tutte le CVE correlate. I servizi remoti non necessari come UPnP, Telnet e SSH dovrebbero essere disattivati sui dispositivi esposti a internet ogni volta che è possibile. Dovrebbero essere imposti credenziali forti e uniche su tutti i dispositivi di frontiera, e i servizi esposti dovrebbero essere regolarmente rivisti. Dovrebbero essere inoltre distribuite rilevazioni a livello di rete per gli indirizzi IP, porte e comandi malevoli identificati associati con la campagna.

Risposta

I difensori dovrebbero monitorare il traffico in uscita per connessioni all’infrastruttura C2 conosciuta e alla porta di download dello scanner. Dovrebbero essere configurati allerta per file nascosti denominati .sys, cambiamenti di cron che si eseguono ogni 15 minuti, e l’esecuzione dello script dello scanner. Gli IP e domini malevoli identificati dovrebbero essere bloccati al firewall e qualsiasi dispositivo compromesso dovrebbe essere isolato per la revisione forense e una pulizia completa.

Flusso di attacco

Esecuzione della Simulazione

Prerequisito: Il Controllo Pre‑volo di Telemetria e Baseline deve essere passato.

Motivazione: Questa sezione dettaglia l’esatta esecuzione della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirano a generare la telemetria esatta attesa dalla logica di rilevamento.

  • Narrativa e Comandi dell’Attacco:
    Il bot dell’avversario, già installato sull’host compromesso tramite esecuzione del servizio (T1546.007), inizia una stretta di mano C2 con il server codificato in hard 217.160.125.125 sulla porta 15527. La connessione utilizza un socket TCP normale per estrarre comandi, corrispondendo esattamente ai criteri della regola. Questa attività è tipica del comportamento di “richiamo” della botnet C0XMO.

  • Script di Test di Regressione:

    # Simulazione di comunicazione C2 C0XMO – attiva la regola Sigma
    $c2Ip = "217.160.125.125"
    $c2Port = 15527
    
    # Apri una connessione TCP, invia un payload minimo, quindi chiudi
    $client = New-Object System.Net.Sockets.TcpClient
    $client.Connect($c2Ip, $c2Port)
    
    $stream = $client.GetStream()
    $payload = [System.Text.Encoding]::ASCII.GetBytes("PING`n")
    $stream.Write($payload, 0, $payload.Length)
    
    # Attendi brevemente per simulare la latenza realistica
    Start-Sleep -Seconds 2
    
    $stream.Close()
    $client.Close()
  • Comandi di Pulizia:

    # Non sono state apportate modifiche persistenti; assicurarsi solo che eventuali socket aperti siano chiusi
    # (Lo script chiude già il socket; questo è una rete di sicurezza.)
    Get-Process -Name "powershell" | Where-Object { $_.MainWindowTitle -eq "" } | Stop-Process -Force