Scoperto il worm FritzFrog, che colpisce i server tramite SSH e costruisce un botnet decentralizzato

L'azienda Guardicore, specializzata nella protezione di data center e sistemi cloud, ha messo in luce ha identificato un nuovo malware altamente tecnologico denominato FritzFrog, che colpisce server basati su Linux. FritzFrog combina un worm che si diffonde tramite attacchi bruteforce ai server con porte SSH aperte, e componenti per costruire un botnet decentralizzato, funzionante senza nodi di controllo e senza un singolo punto di failure.

Per costruire il botnet viene utilizzato un protocollo P2P proprietario, nel quale i nodi comunicano tra loro, coordinano l'organizzazione degli attacchi, mantengono il funzionamento della rete e controllano lo stato reciproco. Nuove vittime vengono scovate attraverso attacchi bruteforce ai server che accettano richieste SSH. Quando viene trovato un nuovo server, viene effettuato un attacco di dizionario con combinazioni comuni di nomi utente e password. Il controllo può avvenire tramite qualsiasi nodo, rendendo difficile l'identificazione e il blocco degli operatori del botnet.

Secondo i ricercatori, il botnet conta già circa 500 nodi, tra cui server di alcune università e di una grande azienda ferroviaria. Si segnala che l'obiettivo principale degli attacchi sono le reti di istituzioni educative, centri medici, enti governativi, banche e aziende di telecomunicazioni. Dopo la compromissione di un server, viene avviato un processo per il mining di criptovalute Monero. L'attività di questo malware è rintracciabile da gennaio 2020.

Una caratteristica distintiva di FritzFrog è che mantiene tutti i dati e il codice eseguibili solo in memoria. Le modifiche su disco si limitano solo all'aggiunta di una nuova chiave SSH nel file authorized_keys, che viene poi utilizzata per accedere al server. I file di sistema non vengono modificati, rendendo il worm invisibile ai sistemi che verificano l'integrità tramite checksum. In memoria vengono archiviati anche i dizionari per il cracking delle password e i dati per il mining, sincronizzati tra i nodi tramite il protocollo P2P.

I componenti dannosi si camuffano come processi «ifconfig», «libexec», «php-fpm» e «nginx». I nodi del botnet monitorano lo stato dei vicini e, in caso di riavvio del server o persino reinstallazione del sistema operativo (se il file authorized_keys modificato è stato trasferito al nuovo sistema), riattivano i componenti dannosi sull'host. Per la comunicazione viene utilizzato SSH standard: il malware avvia anche un «netcat» locale, collegato all'interfaccia localhost e in ascolto del traffico sulla porta 1234, cui i nodi esterni si connettono tramite un tunnel SSH, usando la chiave di authorized_keys.

Scoperto il worm FritzFrog, che colpisce i server tramite SSH e costruisce un botnet decentralizzato

Il codice dei componenti di FritzFrog è scritto in Go e opera in modalità multithread. Il malware include diversi moduli, eseguiti in thread distinti:

  • Cracker — esegue il cracking delle password sui server attaccati.
  • CryptoComm + Parser — crea una connessione P2P crittografata.
  • CastVotes — meccanismo per la scelta collaborativa degli host target per l'attacco.
  • TargetFeed — recupera la lista dei nodi da attaccare dai nodi vicini.
  • DeployMgmt — implementazione del worm che diffonde il codice dannoso su un server compromesso.
  • Owned — si occupa della connessione a server già compromessi dal codice dannoso.
  • Assemble — compone un file in memoria da blocchi separati.
  • Antivir — modulo per sopprimere programmi dannosi concorrenti, identifica e termina processi con la stringa «xmr», che consumano risorse CPU.
  • Libexec — modulo per il mining di criptovalute Monero.

Il protocollo P2P utilizzato in FritzFrog supporta circa 30 comandi, responsabili della trasmissione di dati tra nodi, dell'esecuzione di script, della trasmissione di componenti malware, dell'interrogazione dello stato, dello scambio di log, dell'avvio di proxy, ecc. Le informazioni vengono trasmesse attraverso un canale crittografato separato, serializzate in formato JSON. Per la crittografia viene utilizzata una cifratura asimmetrica AES e la codifica Base64. Per il scambio di chiavi si utilizza il protocollo DH (Diffie-Hellman). Per determinare lo stato, i nodi si scambiano continuamente richieste ping.

Tutti i nodi del botnet mantengono un database distribuito con informazioni sui sistemi attaccati e compromessi. Gli obiettivi per l'attacco vengono sincronizzati in tutto il botnet — ogni nodo attacca un obiettivo distinto, cioè due nodi diversi del botnet non attaccheranno lo stesso host. I nodi raccolgono e trasmettono anche ai vicini statistiche locali, come la dimensione della memoria libera, uptime, carico della CPU e attività di accesso via SSH. Queste informazioni vengono utilizzate per decidere se avviare un processo di mining o utilizzare il nodo solo per attaccare altri sistemi (ad esempio, il mining non viene avviato su sistemi sovraccarichi o con frequenti accessi da parte dell'amministratore).

Per identificare FritzFrog, i ricercatori hanno proposto un metodo semplice script shell. Per determinare la compromissione del sistema
possono essere utilizzati indicatori come la presenza di una connessione in ascolto sulla porta 1234, la presenza di una chiave dannosa in authorized_keys (su tutti i nodi viene installata la stessa chiave SSH) e la presenza in memoria di processi attivi come «ifconfig», «libexec», «php-fpm» e «nginx», che non hanno file eseguibili collegati («/proc//exe» punta a un file remoto). Un ulteriore segnale può essere la presenza di traffico sulla porta di rete 5555, generato quando il malware si connette al pool web.xmrpool.eu durante l'estrazione di criptovaluta Monero.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster