Sulle tracce di MyDoom con Nmap
di Maurizio Anconelli
Il ritardo con il quale è stata rilasciata la signature per MyDoom da parte della maggior parte di aziende produttrici di antivirus ha contribuito non poco alla vasta diffusione del worm. A causa di ciò, anche chi ha una rete monitorata da un sistema antivirus costantemente aggiornato si è trovato probabilmente alle prese con qualche istanza di questo simpatico bruco. Nonostante i vari programmi di monitoraggio su rete Microsoft, il buon vecchio Nmap su una stazione Linux si è dimostrato il migliore e più veloce strumento per scovare le stazioni infette in un dominio Windows 2000.
Una delle poche certezze nei primi attimi di allerta mondiale è stata la porta 3127 aperta sul sistema colpito. La pericolosità di una backdoor sempre in ascolto è ovvia ma avere una porta aperta ben definita può dimostrarsi un ottimo parametro segnalatore del virus, una specie di led rosso fra una marea di lucine verdi. Conoscendo le caratteristiche del bersaglio dobbiamo quindi scegliere uno strumento adeguato che ci permetta nel più breve tempo possibile il rilevamento dei sistemi colpiti, senza ovviamente correre rischi o aggravare la situazione.
La scelta della stazione di partenza ricade ovviamente su una Linux-box ben attrezzata, dalla quale è possibile muoversi nel sistema senza correre rischi. Nella prima risposta ad una infezione su sistemi Microsoft è, infatti, sempre consigliabile agire da una piattaforma differente, in modo da non incorrere negli stessi problemi dei sistemi colpiti. Lo scanner scelto non può essere che Nmap di Fyodor, presente praticamente in ogni distribuzione Linux, scaricabile comunque dal sito insecure.org .
Per controllare un singolo host lanciamo nmap con i seguenti parametri :
nmap -sS -T4 -p 3127 192.168.0.10
-sS sta per scansione SYN, -T4 è la velocità di scansione (la massima è 5), -p indica il numero della porta.
L’output sarà il seguente :
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-01-27 09:17 CET
Interesting ports on 192.168.0.10:
PORT—STATE—SERVICE
3127/tcp closed unknow
Lo stato della porta (closed in questo caso) ci dirà se il virus è presente o meno. Se il risultato fosse ‘open’ è conveniente eseguire uno spegnimento immediato della stazione colpita e procedere alla disinfezione manuale o attraverso i vari pacchetti di rimozione distribuiti dai produttori di antivirus.
Possiamo agevolmente scansire un’intera rete di pc col seguente comando:
nmap -sS -T4 -p 3127 192.168.0.0/24
Se la porta 3127 fosse già occupata il worm ne sceglie un’altra nel range 3128-3199, conviene quindi estendere la ricerca a queste porte:
nmap -sS -T4 -p 3127-3199 192.168.0.0/24
Evitiamo l’opzione -v (verbose) in modo da avere una visione immediata dello stato della porta.
Ok, neanche il tempo di divertirci con la prima versione che è già in pista Mydoom.B. Le porte scelte dalla mutazione del lombrico sono oltre alla 3127 : 80, 1080,3128,8080,10080. Possiamo semplicemente aggiungere le porte alla lista ma, se avessimo una sottorete di classe B con svariati server web e proxy in ascolto, come possiamo distinguere con immediatezza se il servizio in ascolto sia o meno il worm o un server appropriato?
E’ qui che entra in gioco una delle ultime funzionalità di Nmap: la scansione del servizio (Version Detection). Possiamo ora interrogare una porta aperta in modo da conoscere quale server la stia utilizzando. Tutto ciò grazie ad un database con le siganture di risposta della maggior parte dei servizi conosciuti. Il comando che ci serve è –sV.
nmap -sV -T4 -p 80,8080 192.168.0.1
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-01-27 09:17 CET
Interesting ports on 192.168.0.10:
PORT—-STATE—-SERVICE—VERSION
80/tcp open http Microsoft IIS webserver 5.0
8080/tcp open http-proxy Microsoft ISA Server http proxy
In questo caso nmap ha trovato le porte 80 e 8080 in ascolto e le ha interrogate in modo da conoscere il reale processo server che ha aperto il servizio, scoprendo così un server web IIS e il proxy di casa Microsoft ISA Server.
La versione finale della nostra stringa di ricerca sarà quindi il seguente:
nmap -sV -T4 -p 3127-3199,80,8080,1080,10080 192.168.0.0/24
Possiamo fare ancora meglio. Aggiungendo la signature del worm al database nmap-service-probes, sarà nmap stesso ad avvisarci della presenza del virus. Il file nmap-service-probes si trova nella directory /usr/local/share/nmap/ o /usr/share/nmap/ a seconda della distribuzione. Trovato il file aggiungiamo le seguenti righe (tutto ciò che è preceduto da # è un commento):
###### MyDoom ####### Probe TCP return-enter q|n| ports 80,1080,3127,3128,8080,10080 match mydoom m/^x04x5bx00x00x00x00x00x00$/ v/original///
Attenzione alle tre barre rovesciate (///) finali che segnalano il termine della signature.