È finito sulla prima pagina di tutti i giornali, e in queste ore sta continuando a far parlare di sé. Si tratta di WannaCry , il ransomware balzato agli onori della cronaca per essersi diffuso con una rapidità notevole infettando sistemi informatici in tutto il mondo.
Anche Punto Informatico ha dato la notizia , soffermandosi su quelle che sono le caratteristiche principali. Nel suo editoriale, Marco Calamari ha inoltre sottolineato come non si tratti di un vero attacco informatico organizzato, quanto di un’infezione sproporzionata condotta da un comune ransomware, sfruttando vulnerabilità di cui non era stato valutato correttamente il livello di rischio.
Questo ransomware, come sottolineato da vari esperti tra cui Matteo Flora, ha due peculiarità.
La prima è il vettore di propagazione : il malware si avvale un exploit sviluppato dall’Equation Group dell’NSA , Eternal Blue, e diffuso dal gruppo Shadow Brokers solo dopo l’erogazione della patch tramite il bollettino Microsoft MS17-010 di Marzo.
Nonostante la soluzione sia arrivata repentina, WannaCry è riuscito a diffondersi in modo molto rapido sfruttando le installazioni di Windows non aggiornate o non più supportate ufficialmente da Microsoft. Nel tentativo di fermare l’infezione, Microsoft ha poi rilasciato una patch straordinaria anche per Windows Server 2003 e Windows XP (KB4012598), ormai non più mantenuti dal 2014.
L’exploit Eternal Blue sfrutta una vulnerabilità del protocollo SMB (Server Message Block), utilizzato da Windows per funzionalità IPC (comunicazione tra processi) autenticata e per la condivisione di file sulla rete: il semplice blocco del traffico internet diretto alle porte relative (TCP 135 e TCP 445) è una rapida ed efficace contromisura per tutti quei sistemi non ancora patchati ma esposti.
La seconda è il meccanismo di persistenza: una backdoor chiamata DoublePulsar anch’essa sviluppata dall’Equation Group, e già implementata per l’utilizzo sul framework Metasploit.
Un ulteriore punto interessante è costituito dalla modalità di disattivazione: come rilevato dall’analisi condotta da Malwarebytes , il metodo WinMain dell’eseguibile tenta per prima cosa di contattare il dominio “www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com”. Se la connessione va a buon fine, l’esecuzione del malware termina senza apportare danni: il meccanismo di kill switch era basato esclusivamente sul fallimento della risoluzione DNS di un dominio composto da una sequenza di caratteri improbabile.
La scoperta di questo dettaglio ha permesso di rallentare la propagazione dell’infezione mediante la semplice registrazione del dominio.
Tuttavia il kill switch non è efficace nei sistemi protetti da proxy, a causa del fatto che il tipo di connessione WinInet aperta è INTERNET_OPEN_TYPE_DIRECT , come illustrato dal ricercatore Didier Stevens .
Un’altra versione del malware presentava invece una URL di kill-switch diversa. Questa è stata prontamente individuata e neutralizzata da Matthieu Suiche .
New kill switch detected ! https://t.co/sMyyGWbgnF #WannaCry – Just pushed for an order ! pic.twitter.com/cV6i8DpaF4
— Matt Suiche @ #OPCDE2020 (@msuiche) May 14, 2017
In altre varianti la chiamata di kill-switch è stata eliminata modificando l’esadecimale dell’eseguibile e bypassando le chiamate interessate : probabilmente queste versioni non sono state realizzate dall’autore originale , in quanto analizzando il codice è chiaro che non sia avvenuta una compilazione; anche le chiavi di cifratura e l’indirizzo Bitcoin al quale inviare i pagamenti restano gli stessi del malware originale.
Successivamente al controllo relativo al kill-switch , il flusso di esecuzione del malware procede creando un servizio chiamato “mssecsvc2.0” (visualizzato col nome simbolico “Microsoft Security Center (2.0) Service” ), avviandolo, estraendo la componente ransomware ed eseguendola.
Viene quindi inizializzato lo stack di rete tramite la libreria Winsock , chiamando WSAStartup , e viene invocata la funzione CryptAcquireContext() per creare un contesto per l’utilizzo delle API crittografiche di Windows.
Il vero e proprio processo di cifratura dei file, realizzato con una combinazione di tecniche di crittografia asimmetrica e crittografia simmetrica, inizia qui: il ransomware tenta innanzitutto di caricare una chiave pubblica installata al momento dell’infezione . Se il caricamento fallisce viene generata una coppia di chiavi RSA a 2048 bit tramite la funzione CryptGenKey . La chiave privata viene cifrata ulteriormente con la chiave pubblica del ransomware .
A questo punto viene generata una chiave AES casuale a 128 bit in modalità CBC – tramite la funzione CryptoGenRandom – per ogni file e ciascuno di questi viene cifrato. La chiave AES viene a sua volta crittografata con la chiave pubblica precedentemente generata e inclusa nel file stesso .
Il processo di decifratura richiede quindi la conoscenza della chiave privata del creatore del malware, in grado di decifrare la chiave privata specifica per l’infezione e ottenere così la chiave AES di ciascun file.
Il pagamento del riscatto, fortemente sconsigliato, avviene con la cryptovaluta Bitcoin. Il malware effettuerà il controllo dei pagamenti tramite una serie di command & control raggiungibili tramite la rete TOR. Se il pagamento non viene effettuato entro il tempo limite di una settimana, il ransomware provvede alla cancellazione di tutti i file criptati.
Il payload del worm viene copiato in due DLL , una per l’architettura x86, l’altra per l’architettura x86-64, e viene eseguito.
Il flusso di esecuzione viene diviso in due gruppi di thread : uno per infettare gli host sulla LAN , l’altro per infettare gli host sulla rete Internet . Il primo analizza quindi l’intervallo di IP appartenenti alla rete locale, eseguendo l’exploit Eternal Blue su tutti gli host con la porta 445 aperta, il secondo genera un IP casuale utilizzando il generatore precedentemente inizializzato e tenta di attaccare la porta 445 di quell’IP. Se l’attacco ha successo, scansiona tutta la sottorete di classe C (con lunghezza di prefisso di 24 bit, individuando così eventuali IP adiacenti presumibilmente appartenenti alla stessa organizzazione e quindi presumibilmente vulnerabili) relativa all’IP infettato, tentando di portare a termine nuovi attacchi.
Ad ogni tentativo di attacco il malware tenta di rilevare la presenza della backdoor DoublePulsar , usata ove possibile per infettare il sistema in modo persistente.
È chiaro, dunque, che i sistemi da proteggere non sono solamente quelli esposti direttamente sulla rete Internet, ma che anche tutti quelli appartenenti alla rete locale possono essere attaccati.
Sintomatico da questo punto di vista è il caso dell’ Università di Milano Bicocca , infettata presumibilmente mediante drive esterni connessi dagli utenti.
Per prevenire eventuali attacchi su sistemi non ancora patchati, è sufficiente provvedere al blocco delle porte di SMB sul proprio firewall .
In ambienti Windows è possibile utilizzare i comandi:
netsh advfirewall firewall add rule dir=in action=block protocol=TCP localport=135 name="Block_TCP-135"
netsh advfirewall firewall add rule dir=in action=block protocol=TCP localport=445 name="Block_TCP-445"
Il protocollo SMB può essere anche disabilitato permanentemente con il comando
dism /online /norestart /disable-feature /featurename:SMB1Protocol
La backdoor DoublePulsar, invece, può essere rilevata e rimossa tramite questo script .
La soluzione consigliata è ovviamente quella di applicare le patch rilasciate dal produttore su tutte le versioni di Windows precedenti a Windows 10 (in cui gli aggiornamenti vengono effettuati in modo automatico), oltre ad adottare soluzioni specifiche per contrastare i ransomware, effettuare i backup di file e documenti e disporre un piano di contingenza per il recupero delle attività di business a seguito di un eventuale incidente informatico .