# Stuxnet

Stuxnet è un virus informatico che è stato creato e diffuso dal governo statunitense, in collaborazione col governo israeliano, tale teoria è stata confermata (nell'ambito dell'operazione "Giochi Olimpici", che consisteva in un'"ondata" di "attacchi digitali" contro l'Iran). Lo scopo del virus era il sabotaggio dell'impianto di arricchimento di Natanz. In particolare, doveva disabilitare le centrifughe dell'impianto, impedendo la rilevazione dei malfunzionamenti e della presenza del virus stesso. Nel documentario diretto da Alex Gibney, Zero Days, viene per la prima volta rivelato che Stuxnet faceva parte di un progetto ben più ampio che aveva come obiettivo degli attacchi informatici a obiettivi sensibili presenti in Iran (chiamato "Nitro Zeus").
Stuxnet colpiva i PLC, componenti hardware programmabili via software fondamentali per l'automazione degli impianti, in particolare quelli adibiti al controllo delle centrifughe (utilizzate per separare materiali nucleari come l'uranio arricchito). La caratteristica che ha colpito gli esperti fin dall'inizio è stata il livello di sofisticatezza di questo software, che dimostrava che chi aveva scritto il programma conosceva molto dettagliatamente l'ambiente informatico in uso nell'impianto. Questo malware fra l'altro faceva leva su quattro vulnerabilità di Windows ancora inedite (0-day) all'epoca, per poi propagarsi verso il software Step7 della Siemens, informazioni che, secondo alcuni specialisti del settore, varrebbero sul mercato nero almeno un quarto di milione di dollari ciascuna.
In seguito all'infezione del virus nel centro di arricchimento, il programma si è diffuso al di fuori dello stabilimento (tramite un PC portatile infetto) a causa di un errore di programmazione presente nel virus stesso, dato che Stuxnet poteva essere eseguito anche su più sistemi dotati di sistema SCADA e PLC, colpendo principalmente le aziende (e quindi anche le relative nazioni tra cui il Giappone, gli USA e l'Europa)) da cui provenivano le attrezzature per il programma atomico iraniano, venendo così scoperto e finendo poi sotto i riflettori dei media di tutto il mondo.
L'architettura di Stuxnet è assai complessa, ma in estrema sintesi il virus è composto da tre grandi moduli: un worm che danneggia i PLC e permette al software di autoreplicarsi su altre macchine, un collegamento che mette in esecuzione le copie create dal worm e un rootkit che nasconde il virus rendendolo non individuabile.
L'inizio del contagio da parte di Stuxnet è probabilmente avvenuto all'interno del sistema industriale stesso, tramite una chiavetta USB infetta in mano a un ignaro ingegnere iraniano: il virus si è poi propagato in rete, cercando il software industriale Step7 (realizzato dalla Siemens per controllare i PLC dell'impianto), modificandone il codice in modo da danneggiare il sistema e facendo credere all'operatore che tutto funzionasse correttamente.

## Storia

Il virus fu scoperto nel 2010 da Sergey Ulasen impiegato di VirusBlokAda, una società di sicurezza bielorussa. Ulasen fu chiamato da un loro cliente iraniano perché un tecnico aveva osservato un riavvio inaspettato di una macchina dopo un BSOD: dopo un'analisi, il tecnico bielorusso rilevò che tali anomalie si ripresentavano su più macchine e osservò comportamenti diversi tra i PC industriali (differenze tra i PC che risulteranno infetti e quelli puliti). A seguito di test con macchine sane munite di un sistema di rilevamento collegate in rete, scoprì il tentativo di infezione.
Il nome attribuito al virus da VirusBlokAda fu "Rootkit.Tmphider"; Symantec lo chiamò "W32.Temphid", per poi passare a "W32.Stuxnet". Attualmente il suo nome è dato dalla combinazione di parole chiave particolarmente frequenti nel suo codice (".stub" e "mrxnet.sys").
La prima versione infettava le macchine tramite vulnerabilità non ancora note del sistema operativo Windows. Non si è trattato del primo attacco contro un sistema di controllo industriale, ma è stata la prima scoperta dell'esistenza di un malware in grado di spiare, controllare e danneggiare un sistema industriale tramite l'utilizzo di un rootkit per PLC.
Dalla notizia di questo sabotaggio, sono cresciute le preoccupazioni per un'eventuale "Černobyl' iraniana".
La società Kaspersky Lab stimò che la diffusione del virus fosse incominciata tra i mesi di marzo e aprile del 2010, nonostante la prima versione del software potesse essere datata per il giugno 2009. Il worm infettava tutti i sistemi in rete ma si eseguiva solamente su coloro che erano dotati di sistemi SCADA modificando il codice del software Step7 che controllava i PLC dell'impianto.
Versioni successive del virus Stuxnet hanno colpito altre cinque organizzazioni iraniane, con l'obiettivo di controllare e danneggiare la produzione iraniana di uranio arricchito. L'agenzia di sicurezza informatica Symantec ha valutato che nel 2010 il 60% dei computer infetti dal Stuxnet in tutto il mondo era in Iran. Symantec ha confermato che i suoi clienti non sono stati danneggiati dal worm, ma il sistema industriale iraniano dotato del software Step7 fu il bersaglio iniziale di Stuxnet.
Dato l'elevato grado di complessità del software, dal fatto che esso doveva essere testato su sistemi reali (con relative spese per l'acquisto dei PLC), l'azienda di sicurezza Kaspersky Lab ha confermato che l'attacco deve aver sicuramente avuto un supporto da agenzie nazionali, considerazione sostenuta anche dalla F-Secure.
Il 25 novembre 2010, il canale televisivo del Regno Unito Sky News pubblicò un servizio fatto da una fonte anonima dove dichiarava che Stuxnet, o una sua variante, era venduto al mercato nero.
Nel febbraio 2011 il movimento di hacker Anonymous ha "trafugato" delle e-mail alla HBGary, contractor del governo USA. Una di queste e-mail era datata 28 luglio 2010, proveniva dalla McAfee e forniva all'azienda una copia di Stuxnet. In seguito Crowdleaks ha decompilato parte di Stuxnet, il sorgente è ottenibile su github.com.
Nel maggio 2011, il programma televisivo statunitense Need To Know riporta un discorso dove Gary Samore afferma che il governo americano è grato che lo stato iraniano abbia avuto problemi con le centrifughe nucleari, facendo intendere un coinvolgimento USA nel progetto di Stuxnet. Successivamente tramite il The Daily Telegraph anche Israele ha fatto intendere il suo coinvolgimento.
Il primo di giugno 2012, un articolo del New York Times afferma che Stuxnet è stato il prodotto di una collaborazione tra USA e Israele la cui operazione prende il nome di "Operation Olympic Games", promossa dal governo Bush e proseguita con Obama.
Il 24 luglio 2012, un articolo di Chris Matyszczyk dell''azienda CNET rivela come l'agenzia iraniana per l'energia atomica inviò una mail a F-Secure dove si è scoperta una nuova versione di Stuxnet.
Il 25 dicembre 2012, una comunicazione semi ufficiale iraniana afferma che il virus Stuxnet ha colpito alcune industrie nella zona meridionale dell'Iran, tra cui una centrale elettrica.
Nel luglio 2013 Edward Snowden ha confermato che Stuxnet è stato progettato dalla NSA con la collaborazione dell'"intelligence" israeliana, tramite un corpo speciale noto come Foreign Affairs Directorate (FAD).
Il worm ha anche infettato un impianto nucleare russo, l'esperto Eugene Kaspersky ha avvisato che fintanto gli impianti non vengono collegati alla rete pubblica non ci saranno rischi di infezione.

## Modalità di funzionamento

Diversamente dalla maggior parte dei malware, Stuxnet è stato progettato per danneggiare solo quei sistemi dotati di particolari requisiti, rimanendo del tutto dormiente nei sistemi non interessati. In particolare il virus aggredisce solo i calcolatori dotati del software Siemens Step7, altrimenti il virus stesso è stato progettato per disattivarsi. Inoltre, per evitare di venire scoperto, il virus è stato dotato di un modulo che ne limita la diffusione da un PC a non più di altri tre; in più il virus è stato progettato per auto cancellarsi dopo il 24 giugno 2012.
Per i suoi scopi il virus è dotato della capacità di effettuare un attacco man in the middle usato per falsificare i dati forniti dai sensori industriali dopo la manomissione degli impianti, in modo da non insospettire i tecnici, facendo credere un funzionamento corretto del sistema. La complessità del software è molto elevata, a tal punto di essere in grado di sfruttare vulnerabilità di ben tre sistemi diversi: il sistema operativo Windows, il software di gestione dei PLC della Siemens (PCS7, WinCC e Step7) e i PLC stessi.
Stuxnet avrebbe aspettato 13 giorni prima di agire (13 giorni è infatti il tempo che ci vuole per riempire una cascata di centrifughe con l'uranio). Nel frattempo, registrò tutte le attività delle centrifughe, salvandone i dati tecnici per poterli riutilizzare in una fase successiva dell'attacco. Il quattordicesimo giorno attaccò, aumentando la velocità di rotazione delle centrifughe da 1064 Hz a 1410 Hz, in modo che le centrifughe risentirono della cosiddetta frequenza di risonanza: il metallo della centrifuga vibrò fino al punto di rompersi in pezzi. Poi, in una seconda fase dell'attacco, rallentò le centrifughe fino a 2 Hz, facendo oscillare la centrifuga fino a romperla. Durante tutta la fase attiva dell'attacco, Stuxnet mandò ai computer della sala di controllo i dati che raccolse nei primi 13 giorni, in modo che i tecnici (almeno in un primo momento) non potessero accorgersi di nulla.

### Infezione di Windows

Stuxnet attaccò Windows sfruttando quattro bachi software del sistema operativo non ancora conosciuti (0-day) oltre alla vulnerabilità nota come CPLINK e l'utilizzo del worm Conficker. La fase iniziale dell'attacco è avvenuta attraverso l'infezione dei primi dispositivi tramite chiavette USB, per poi propagarsi e attivarsi attraverso la rete interna degli stabilimenti industriali tramite una rete peer to peer RPC (così facendo è stato possibile infettare computer non connessi a Internet). Il numero di vulnerabilità 0-days utilizzate è inusuale, dato che al mercato nero ognuna di queste può valere un quarto di milione di dollari, per questo in genere un virus informatico non ne usa più di una. Alcune di queste vulnerabilità riguardano la condivisione delle stampanti, una vulnerabilità ora nota come LNK/PIF, nella quale un file viene eseguito se visualizzato su Internet Explorer evitando così l'esecuzione diretta da parte dell'utente. Stuxnet occupa circa mezzo MegaByte di memoria ed è stato scritto usando più di un linguaggio di programmazione, ciò fa pensare a uno sviluppo congiunto di più organizzazioni. Inoltre dopo aver infettato il sistema operativo il virus procede a infettare indiscriminatamente tutti gli altri sistemi sulla rete.
Stuxnet è in grado di lavorare sia in modalità utente sia amministratore nel sistema Windows, inoltre i suoi driver erano firmati con la chiave privata di due certificati rubati a due aziende conosciute e affidabili, JMicron e Realtek, entrambe situate ad Hsinchu Science Park a Taiwan. Grazie a tali firme digitali i driver del virus sono stati in grado di installarsi nel kernel di Windows senza alzare alcun allarme. Dopo la scoperta del virus entrambi i certificati sono stati revocati da VeriSign.
Due siti web (in Danimarca e Malaysia) sono stati progettati per ricevere dati dal virus, al fine di fare spionaggio industriale. Dopo la scoperta del virus entrambi i siti sono stati bloccati.

### Infezione del software Step 7

Grazie a una ricerca di Ralph Langner, una volta installato su Windows il virus cercava e infettava i progetti realizzati col software della Siemens WinCC/ PCS7 Step7 per sistemi SCADA, sostituendo una libreria chiave di WinCC ( s7otbxdx.dll ). Con tale modifica è stato possibile intercettare lo scambio di messaggi tra Windows e i PLC collegati al sistema. Così facendo Stuxnet è stato in grado di installarsi sui PLC stessi senza generare campanelli di allarme. Inoltre l'infezione su WinCC faceva in modo che un tentativo di lettura dei blocchi di codice sui PLC risultasse in un programma corretto e privo di infezioni.
Il virus usò una vulnerabilità 0-day (di WinCC in sistemi SCADA) che riguardava il modo in cui venivano memorizzate le password nel database.

### Infezione dei PLC

Nonostante il codice completo del virus non fu mai rivelato si è certi che esso prendeva di mira quei sistemi SCADA configurati con particolari criteri specifici.
Stuxnet prevedeva la presenza di particolari convertitori di frequenza (VDF) per attaccare le macchine Siemens S7-300 e i moduli a esse collegate. In particolare il virus colpiva i PLC che avevano i convertitori di frequenza di due particolari case produttrici: Vacon con sede in Finlandia e Fararo Paya con sede in Iran. Successivamente il virus monitorava la frequenza dei motori infetti (in particolare quelli che giravano tra gli 807 Hz e i 1210 Hz, frequenze di solito usate per le pompe e le centrifughe industriali).
Il virus si installava nel blocco di memoria DB890 dei PLC, blocco particolare che monitorava il bus di campo Profibus. Negli istanti in cui particolari criteri venivano soddisfatti, Stuxnet incominciava periodicamente a modificare la frequenza di lavoro delle macchine passando tra i 1410 Hz, 2 Hz e i 1064 Hz, influenzando di conseguenza la velocità di lavoro dei motori collegati. Inoltre il rootkit presente nel virus nascondeva il software malevolo e faceva credere agli operatori che i macchinari lavorassero sempre alle frequenze corrette.

## Alias

Gli alias di stuxnet sono: roj/Stuxnet-A, W32/Stuxnet-B, W32. Temphid, WORM_STUXNET.A, Win32/Stuxnet.B, Trojan-Dropper:W32/Stuxnet, W32/Stuxnet.A, Rootkit.Win32.Stuxnet.b, Rootkit.Win32.Stuxnet.a.exet

## Eliminazione

Siemens ha messo a disposizione uno strumento per il rilevamento e la rimozione degli Stuxnet. Richiede inoltre agli utenti di evitare l'utilizzo di penne USB non sicure all'interno della rete, anche successivamente alla rimozione del virus.
L'elevata capacità del virus di riprogrammare i PLC ha complicato la procedura di rimozione. Symantec ha avvisato che, dopo l'infezione, rimuovere il virus da Windows non risolve completamente il problema; infatti è necessaria un'ulteriore analisi sui PLC interessati.
Siemens ha confermato che nei successivi quattro mesi dopo la scoperta del virus, Stuxnet è stato rimosso correttamente da 22 clienti senza causare danni agli impianti.
Uno strumento gratuito per la rimozione di Stuxnet era stato messo a disposizione da Bitdefender sul suo sito dedicato MalwareCity.com.

## Diffusione

Uno studio riguardante Stuxnet dell'azienda informatica Symantec ha dato un quadro della diffusione nel mondo (aggiornamento al 6 agosto 2010):
| Paese | Computer infettati |
| Iran | 62 867 |
| Indonesia | 13 336 |
| India | 6 552 |
| Stati Uniti | 2 913 |
| Australia | 2 436 |
| Regno Unito | 1 038 |
| Malaysia | 1 013 |
| Pakistan | 993 |
| Finlandia | 7 |
| Germania | 5 (settembre 2010) |

## Altri malware collegati
### Variante di Stuxnet

In un articolo del giornale Foreign Policy scritto nel novembre del 2013, si parla di una versione di Stuxnet precedente a quella normalmente conosciuta. Tale variante è risultata essere più aggressiva e complessa anch'essa mirata a colpire le centrifughe dell'impianto di arricchimento iraniano di Natanz. A differenza della versione tradizionale di Stuxnet che puntava a diffondersi solo sulle macchine dotate del software Step7 e aveva lo scopo di sabotaggio e spionaggio, la versione precedente infettava in modo indiscriminato tutte le macchine e puntava soprattutto al puro sabotaggio delle centrifughe. Il metodo di sabotaggio prevedeva di aumentare il tasso di incidenti e danneggiamenti delle centrifughe nel tempo, attraverso l'aumento della pressione dei gas, inducendo una maggiore sollecitazione sul rotore. Tale tipo di strategia puntava quindi sul ridurre il tempo di vita dei macchinari, tale scelta potrebbe non aver avuto alcun impatto negativo sulle centrifughe, infatti spesso i progetti ingegneristici vengono sovradimensionati in termini di sicurezza, probabilmente per questo motivo è stata sviluppata successivamente la versione moderna di Stuxnet.

### Duqu

Il 1º settembre 2011, venne trovato un nuovo tipo di virus correlato a Stuxnet. Scoperto dal laboratorio di crittografia e sicurezza dell'Università di Budapest che analizzò il software chiamandolo Duqu. L'azienda di sicurezza informatica Symantec, continuò le analisi del virus identificandolo nella struttura e metodo di attacco come molto simile a Stuxnet ma realizzato per uno scopo completamente diverso. Lo scopo principale di Duqu era infatti quello di rubare informazioni come chiavi di accesso e dati aziendali sensibili. I dati rubati potevano essere anche riutilizzati per consentire altri attacchi simili in futuro.
Il 28 dicembre 2011, Costin Raiu direttore del laboratorio di ricerca e analisi di Kaspersky Lab attraverso l'agenzia di stampa britannica Reuters ha svelato il forte legame tra Stuxnet e Duqu, nati entrambi nel 2007 e dotati di file che incominciavano con lo stesso simbolo (~d). Nell'articolo inoltre si cita l'esistenza di altre tre varianti di virus che presentavano le stesse similitudini.

### Flame

Nel maggio 2012, venne scoperto un nuovo virus chiamato Flame fortemente correlato con il noto Stuxnet perché sfruttava la stessa vulnerabilità di infezione via USB. Come detto da un esperto di Kaspersky Lab, il codice di Flame è risultato essere anche 20 volte più complesso di Stuxnet, presentando parti di codice scritto anche in linguaggi diversi e capace di auto-eliminarsi senza lasciare traccia del suo passaggio.