Premessa:
Recentemente, su
repubblica.it, è stato pubblicato un articolo, ad opera del giornalista
Alessandro Longo, il cui contenuto è stato travisato, sia per quanto riguarda la sostanza
dell'argomento trattato, sia per quel che concerne la definizione che mi è stata
inopinatamente appioppata. Io non sono un hacker, né voglio che si creda lo sia, né
tantomeno mi sono mai definito tale, nemmeno per scherzo! Quindi... lasciate perdere con
le solite battute da bar.
L'articolo si occupava di
un aspetto che a mio avviso non è trascurabile, ovverosia la permanente vulnerabilità
dei sistemi Windows NT ad attacchi di cui erano vittima già i sistemi Win9X. Forse per
alcuni è la scoperta dell'acqua calda. Può anche darsi, ma mi domando perchè non se ne
debba parlare. In ogni caso, se non ci si fermasse sempre alla superficie dei fatti
(l'articolo, per discutibili esigenze editoriali, era volutamente conciso e perciò
lasciava adito a fraintendimenti), forse si eviterebbe di giudicare affrettatamente...
etichettando ed offendendo pesantemente.
I dettagli...
I programmatori di
Redmond si affannano nel tappare falle più o meno critiche, correlate spesso a rischi
legati ad attacchi provenienti dlla rete. Intanto, però,
per cagionare danni irreversibili ad un sistema basato su Windows NT (quindi i S.O. a
rischio sono Windows NT, 2000, XP, 2003), è sufficiente editare col blocco note un file
batch (con estensione .cmd o .bat) ed inserire al suo interno una breve lista di comandi.
Se inseriamo per esempio, questi
comandi...

Cancelliamo solo il
contenuto di quelle due directory. Quindi... lo script è utile e non distruttivo.
Se, invece,
trascriviamo questi comandi...

O anche solo i seguenti
(facendo notare che, non solo il percorso utente dovrebbe essere indicato così:
"%systemdrive%\Documents and Settings\Nome Utente", ma
che la stessa directory trascritta nello script, ovvero Mario Rossi, in
realtà non è assolutamente presente nel sistema):
@echo off
cd\
C:
cd "Mario Rossi"
erase /F /S /Q *.*
exit
L'interprete dei comandi (CMD.exe),
anzichè segnalare l'assenza di tale percorso e fermare l'azione (si potrebbe dire che è
normale... il PC fa quello che gli diciamo di fare), comincia ad eseguire la cancellazione
di tutte le directories presenti sul sistema non incluse nel file batch (es.
C:\Programmi", "C:\Program Files", "C:\Windows",
percorsi utente, ecc. Cosa che con Windows 98, non è possibile fare, a meno che non si
scrivono tutti i percorsi, uno per uno. Inutile dire che, visti i totali privilegi di
CMD.exe, anche i files in uso e di sistema, verranno eliminati in maniera silente e
fulminea. E', d'altronde, lo stesso metodo con il quale si può eliminare una cartella
oppure uno o più files, che Windows non ci permette di cancellare "perché in
uso".
Il risultato?
In pochi secondi e senza
che il sistema faccia nulla per impedirlo, viene fatta tabula rasa di una valanga tra
files di sistema ed utente. Al riavvio, Windows non sarà più utilizzabile.
Il file batch può essere
scritto in molteplici altri modi... non è questo il punto. Il guaio è che esso è
facilmente eseguibile, in ambiente Windows (anche da remoto), senza che l'utente ne abbia
la consapevolezza, nè tantomeno possa far nulla per impedire o limitare il danno.
In realtà è su di un
errore di percorso nello script (creato ad hoc) che, in buona sostanza, si fonda la
possibilità di danneggiare un sistema basato su kernel NT. Non è necessario quindi, ribadisco,
inserire l'elenco dei percorsi utente o le directory di sistema, come alcuni eccelsi
esperti di sicurezza hanno eccepito. Su questo punto ho ricevuto pesanti critiche, che
rimando al mittente!
In Windows 95, 98, Millennium, non esistono percorsi utente, quindi tale peculiarità,
alla luce di quanto detto, risulta essere un vantaggio, in quanto è vero che con un file
batch posso cancellare dei files o directories di Windows 98, ad esempio, ma in quei
sistemi operativi devo scrivere gli esatti percorsi e tutti quelli che voglio cancellare,
altrimenti il file batch, attraverso l'interprete dei comandi (command.com) non cancella
un bel niente o si limita a eliminare solo qualche file o directory, tra quelle scritte
correttamente nel file batch.
Con Windows XP è diverso. Un conto è cancellare con la cognizione di dover inserire
TUTTI i percorsi da cancellare, un'altra questione è inserire qualche percorso (due, tre
righe di codice, anche con nome utente non corrispondente a quello del sistema) per
cancellare tutte le altre directory, superiori ed annidate. TUTTE!
Windows XP non era
invulnerabile agli attacchi con script eseguiti dal prompt di MS-DOS?
C'è da dire che, se
abbiamo installato Microsoft Antispyware, questo ci avvisa, per mezzo di una finestra a
schermo, che un file batch sta per essere eseguito. Qui, ovviamente, deve intervenire
l'utente, che se dà l'assenso, si frega con le sue stesse mani.
La possibile
soluzione:
Intanto, per quanto mi
attiene, ho dato un'occhiatina al registro di Windows ed ho visto che nella chiave:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download]
Qui sono presenti i seguenti due valori (stringa e Dword):
"CheckExeSignatures"="yes"
"RunInvalidSignatures"=dword:00000001
che in definitiva permettono l'esecuzione di programmi privi di firma.
Aggiungendo le seguenti voci, si dovrebbe, in linea teorica, poter impedire almeno il
download e l'esecuzione di programmi che utilizzano files con estensione .bat, .com, .cmd,
.ins. (vedi, in specialmodo, ultima riga).
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download]
"CheckExeSignatures"="yes"
"RunInvalidSignatures"=dword:00000000
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]
"SaveZoneInformation"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Associations]
"LowRiskFileTypes"=".zip;.rar;.nfo;.txt;.exe;.reg;.msi;.htm;.html;.gif;.bmp;.jpg;.avi;.mpg;.mpeg;.mov;.mp3;.m3u;.wav;"
"HighRiskFilesTypes"=".bat;.com;.cmd;.ins"
E' comunque una soluzione facilmente scavalcabile, visto e considerato che nel file
malevolo, potrebbe essere inserita una stringa contenente parametri da inserire nel
registro prima dell'esecuzione del codice dannoso per il sistema, come nell'esempio qui di
seguito.
Windows Registry Editor Version 5.00
;Thrusted zones
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download]
"CheckExeSignatures"="no"
"RunInvalidSignatures"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]
"SaveZoneInformation"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Associations]
"LowRiskFileTypes"=".zip;.rar;.nfo;.txt;.exe;.reg;.msi;.htm;.html;.gif;.bmp;.jpg;.avi;.mpg;.mpeg;.mov;.mp3;
.m3u;.wav;.bat;.com;.cmd;.ins"
"HighRiskFilesTypes"=""
In conclusione, per
mandare in pappa Windows XP ed affini, non servono conoscenze spropositate, nè
sistemi di intrusione complicatissimi, ma è sufficiente una comunissima serie di comandi
assimilabili al vecchio MS-DOS. Così, mentre in tanti si arrampicano sugli specchi per
individuare falle di vario genere, i sistemi basati su kernel NT, sono suscettibili di
danni irreversibili, adoperando comandi DOS, al pari dei più datati Windows 98,
Millennium e 95.
© Rosario Marcianò

|