Inserisci Infobox

Network scanning: strumenti e tecniche

Strumenti e tecniche di network e vulnerability scanning. Information gathering.

Conoscere come i propri sistemi appaiono in rete
Autore: al - Ultimo Aggiornamento: 2003-04-14 16:20:17 - Data di creazione: 2003-04-14 16:20:17
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Una delle prime operazioni da compiere all'inizio di un security assessment volto a verificare la vulnerabilità dei propri sistemi su Internet (tralasciando momentaneamente ogni considerazione sulle problematiche di sicurezza in senso lato, che comprendono aspetti non solo informatici ma anche logistici e umani) è uno scanning completo delle porte e delle informazioni che da Internet si possono rilevare.

Sapere come i propri sistemi si presentano in rete è infatti il primo fondamentale passo per procedere alla loro protezione dalla maggior parte delle possibili minacce esterne.
Per farlo ci si può mettere nei panni di un potenziale intrusore, che dei nostri sistemi non sa ancora nulla e che, in prima battuta, li può raggiungere solo via Internet.
Le informazioni e le operazioni che si possono fare sono:
- Network scanning di tutti gli indirizzi IP pubblici che ci sono assegnati da un IP arbitrario su Internet. Va fatto un controllo su tutti gli indirizzi, possibilmente non limitandosi ad un ping scan (potremmo avere un firewall perimetrale che ci filtra i pacchetti ICMP) ma provando tutti gli indirizzi delle nostre network pubbliche su tutte le porte TCP e UDP (l'operazione può essere particolarmente lunga, se si ha fretta limitarsi ad uno scan delle prime 1024 porte di ogni host). Per questo tipo di operazioni un software come Nmap è l'ideale, ma esistono valide alternative come Strobe o NetCat.
- DNS info gathering tramite query DNS sul proprio e su altri server DNS, cercare di ottenere il maggior numero di informazioni sulle macchine dei nostri domini, provare a fare un trasferimento di zona da un server remoto (non dovremmo renderlo possibile) e verificare se le informazioni esposte possono essere di natura delicata (nomi delle macchine troppo indicativi delle loro funzioni, dettagli aggiuntivi sugli host ecc). Per diagnosticare problematiche e raccogliere informazioni sul DNS possono essere usati programmi come nslookup o dig.
- Whois query e ricerca di info in rete per vedere quanto di noi si trova in rete. Partire da una query whois per uno dei nostri domini o blocchi di indirizzi, poi provare a cercare il proprio nome, così come appare nei campi whois, su Google e altri motori. Provare a cercare altre parole chiave che in qualche modo possono essere riconducibili agli amministratori dei propri sistemi, alla propria società o a qualsiasi altro aspetto in qualche modo riconducibile a noi.
Valutare se le informazioni trovate possono fornire spunti interessanti o notizie utili per chi ci vuole attaccare, prendere eventualmente provvedimenti (discorso vago, che richiede più ampia trattazione, in particolare per tutto quello che riguarda possibili attività di social engineering e come il proprio personale è educato al riguardo).
Verificare inoltre se le password che si utilizzano sono in qualche modo riconducibili alle informazioni che ci riguardano che trapelano in rete (interessi personali, abitudini, nomi di parenti, indirizzi ecc).
- Vulnerability scanning di tutta la nostra rete. E' un controllo più approfondito di un semplice port scanning, in quanto per ogni porta aperta si eseguono verifiche sulle versioni dei software che le gestiscono e sulle loro eventuali vulnerabilità. Tipicamente un software che esegue simili controlli (nel mondo opensource Nessus è il più comune e Satan/Saint sono piuttosto noti, anche se ormai obsoleti) esegue una serie di test sulla base di un vulnerability database in costante aggiornamento, per cui è opportuno eseguire un controllo sulla base di check aggiornati.

Queste operazioni possono fornirci i primi punti da cui partire per eventualmente provvedere a "tappare" i buchi più evidenti e più facilmente utilizzabili. A questo, inutile dirlo, dovrebbe seguire una analisi più approfondita e a vari livelli sulla sicurezza generale dei nostri sistemi e sui flussi di dati che li interessano.
E' inoltre buona norma rieseguire dei simili controllo ogni qualche mese, per verificare lo stato della situazione.

Information gathering in rete
Autore: al - Ultimo Aggiornamento: 2004-08-07 12:48:10 - Data di creazione: 2004-08-07 12:48:10
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Su Internet è possibile trovare varie ed inaspettate informazioni su persone, società e server, alcune delle quali possono fornire spunti utili ad un potenziale intrusore per definire le sue strategie di attacco e, soprattutto, per portare avanti sottili azioni di social engineering.

WHOIS QUERY
Ogni dominio registrato in rete deve essere associato ad una persona o società identificabili, che ne siano i proprietari e responsabili. Questo nome e altre informazioni anagrafiche di base (fondamentalmente i recapiti su Internet e sul mondo reale) vengono registrate su dei database whois che sono liberamente consultabili su appropriati server.
Esistono molti server whois in rete, spesso rispondono per i dati relativi ad un singolo Top Level Domain (TLD, come .it, .fr ecc) in alcuni casi (domini transnazionali come .com, .net .org ecc.) rispondono per più TLD.
Una query whois, da informazioni piuttosto articolate quali il nome della persone e della società che ha registrato il domini, il relativo indirizzo e numero di telefono (a meno che il registrante non abbia fornito dati falsi), i server DNS autoritari per il domini (quelli dove vengono configurati gli indirizzi IP dei server di quel dominio), la data di registrazione.
Oltre a informazioni relative ad un dominio, tramite whois è possibile ottenere dettagli su chi ha in uso un dato range di indirizzi IP pubblici. I fornitori di TLC solitamente aggiornano questi record con i dati dei loro clienti a cui hanno assegnato indirizzi IP fissi, per cui non è raro vedere i propri dati disponibili su un whois server  pubblico anche se non si è fatto nulla per metterli, se non firmare un contratto per una DSL con IP fisso.
Queste informazioni, seppur dovute, necessarie ed inevitabili, possono aiutare un intrusore nelle sue attività di social engineering per cui va quantomeno verificato cosa viene esposto pubblicamente e ci si dovrebbe assicurare che le informazioni e i recapiti utilizzati siano il più possibile generici.

GOOGLE (e ALTRI MOTORI)
Google è probabilmente il migliore motore di ricerca su Internet, i suoi spider costantemente sondano il web aggiungendo pagine e aggiornando il suo enorme database.
Alcune funzioni di ricerca permettono analisi piuttosto dettagliate e a volte sorprendenti sul contenuto di un sito: non è raro trovare su Google vecchie pagine di un sito indicizzate in passato che ormai non sono più linkate sul sito attuale, ma risultano ancora presenti sullo stesso server web e quindi accessibili da Internet.
Se queste pagine contengono form o parti dinamiche sfruttabili per un cracker, anche il sito apparentemente più sicuro e controllato potrebbe cadere, oltretutto a causa di funzionalità non più utilizzate.
Un buon modo per vedere su Google (ma ovviamente una simile ricerca andrebbe fatta anche su altre search engines) cosa del nostro sito è indicizzato è una query tipo:
site:www.esempio.it e
Questo ricercherà all'interno di www.esempio.it tutte le pagine che contengono la lettera "e" (quindi, presumibilmente, tutte le pagine in assoluto). Notare che si può usare "e" ma non "a", che Google esclude in quanto parola, inglese, troppo comune.
Google è inoltre estremamente efficace per cercare file di password o che rivelano informazioni potenzialmente sensibili  o che indicano la presenza di applicazioni web vulnerabily.
Una fonte interessante e completa di query è il "Googledorks!" sul sito http://johnny.ihackstuff.com/
Ulteriore fonte di informazioni potenzialmente utili è l'Internet Archive in cui è possibile visualizzare com'era un sito e parti di esso nel passato.

NEWSGROUPS ARCHIVES
Tutto quello che scriviamo su un newsgroup viene propagato su migliaia di news server sul globo ed è destinato a rimanere impresso negli archivi di Internet per molti anni, come parole scolpite nella pietra.
Siti come lo stesso news.google.com permettono di eseguire ricerche in tutti i post di molti newsgroup.
Un buon cracker sicuramente proverà ad utilizzare questo archivio per cercare informazioni sugli amministratori dei sistemi che vuole attacccare. Con una whois query ottiene dati quali il nome e l'indirizzo email del riferimento tecnico per il dominio sotto mira, con un po' di ricerche sugli archivi dei newsgroup e sugli stessi motori di ricerca può arrivare ad ottenere una quantità insospettabile di informazioni utili per le sue losche attività.
Fra queste informazioni ci possono essere richieste di chiarimenti o informazioni eseguite dal sysadmin sotto mira, dove eventualmente ha fornito dati interessanti e sfruttabili sulla sua struttura di rete o sui programmi e servizi che vuole utilizzare.
Controllando la signature usata da questo su un post pubblico il cracker può avere informazioni sul numero di telefono del sistemista, sui suoi hobby, sui suoi recapiti. Bisogna sempre ricordarsi che in termini di sicurezza informatica, chi si difende non conosce il suo avversario mentre chi attacca ha molti mezzi per raccogliere informazioni sul suo bersaglio.

Installare ed usare NMAP
Autore: maxgrante - ( Revisione: al ) - Ultimo Aggiornamento: 2003-04-14 17:23:38 - Data di creazione: 2003-04-14 17:23:38
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Nmap è un port scanner avanzato e performante per sistemi Unix, solitamente installato di default su parecchie distribuzioni Linux. L'interfaccia presentata all'utente è di tipo testuale e richiede spesso i privilegi di root per poter utilizzare componenti critiche del Kernel (come i raw socket).
Il risultato che fornirà nmap sarà una lista di porte aperte, chiuse o filtrate presenti sull'host o sulla rete indicati.

Per testare se nmap è presente sul proprio Linux si può utilizzare rpm (rpm -qa | grep nmap) o comandi quali whereis o locate.
Nel caso fosse necessario installarlo si può procedere tramite rpm precompilati (in genere su http://www.rpmfind.net sono reperibili tutti gli rpm del caso, ad esempio nmap-3.00-1.i386.rpm per RedHat 8.0), o direttamente compilando i sorgenti.

INSTALLAZIONE DI NMAP TRAMITE COMPILAZIONE DEI SORGENTI
Per installare nmap dai sorgenti bisogna innanzitutto ottenere l'ultima release stabile di questi ultimi dal sito ufficiale.
Successivamente una volta scaricati i sorgenti si procede con il classico scompattamento del tarball (tar -zxvf namp...tar.gz) e la compilazione e installazione con i comandi in sequenza:
./configure
make
make install

Ricordarsi di aggiungere /usr/local/bin al proprio PATH

UTILIZZO DI NMAP
A dispetto della semplicità di installazione e configurazione (praticamente inesistente), nmap è un tool molto potente e ricco di opzioni per lo scanning di host o reti

La sintassi di base:
nmap [Tipo(i) di scan] [Opzioni] <host/rete> <host/rete> <host/rete> ...

Le principali opzioni:
-sT
E' il sistema di scanning più semplice in quanto utilizza la chiamata di sistema connect() del proprio sistema operativo. Ha il vantaggio di poter essere utilizzata anche senza privilegi di root ma permette una facile individuazione da parte dell'host di destinazione.

-sS TCP SYN SCAN
E' un sistema più avanzato di scanning che permette l'invio di un SYN per simulare il tentativo di connessione TCP, nel caso l'host risponda con un ACK significa che la porta è in ascolto e pertanto è possibile inviare un RTS per chiudere il tentativo di connessione appena tentato. Il vantaggio è che in assenza di IDS specifici, questi tentativi di connessione non vengono loggati, lo svantaggio è che bisogna avere privilegi di root per poter eseguire uno scan di questo tipo.

-sF -sX -sN
Scanning stealth avanzato. Questi tipi di scan utilizzano sistemi alternativi e a volte deduttivi per identificare le porte aperte limitando la possibilità di essere individuati.
La logica seguita da questi metodi di scan per passare inosservati sono i seguenti:
Le porte chiuse devono rispondere allo scanning con un RTS, mentre le porte aperte devono ignorare lo scan. L'inconveniente è che sistemi come Microsoft, Cisco, HP/UX e altri non supportano questi standard.

-sP
Ping scan. Assolve alla necessità di sapere quali host sono attivi in una rete, tramite un semplice ECHO REQUEST (ping) agli host specificati. E' utile per verificare quali host sono attivi su un segmento di rete specificato, ma può dare risultati incompleti se a monte degli indirizzi di destinazione c'è un firewall che filtra i pacchetti ICMP.

-sU UDP scans
Questa opzione permette di controllare tramite l'invio di un pacchetto UDP di 0 byte se una porta UDP è aperta, se la risposta a questo pacchetto sarà un ICMP che dice Network Unreachable la porta è chiusa, in caso contrario si pensa che sia aperta.

-O Fingerprinting
Esegue un fingerprinting per riconoscere, tramite sottigliezze e differenze nello stack di rete del sistema operativo dell'host remoto, quale OS e quale versione viene utilizzata. I risultati sono spesso corretti ma non infallibili.

-v Verbose mode
Questa è una opzione fondamentale per poter scoprire molteplici informazioni. Se si utilizza l'opzione -vv si aumenta ulteriormente la verbosità dell'output.

-o <logfilename>
Inserendo questa opzione avremo la possibilità di scegliere come argomento il nome di un file in cui NMAP andrà a scriverci il risultato della scansione (Il formato del file è di tipo HUMAN READABLE)

-m <logfilename>
Esegue la stessa cosa dell'opzione precedente tranne che per il fatto che l'output generato è di tipo MACHINE READABLE

-p <range porte>
Permette di inserire un range di porte da scannare (es. -p 25 scannerà esclusivamente la porta SMTP (25))

-F Fast scan
Scan veloce, permette di scansionare tutte le porte presenti nei services di NMAP (in pratica le well known ports) anzichè tutte le porte dalla 0 alla 65535.

Installare, configurare ed utilizzare Nessus
Autore: al - Ultimo Aggiornamento: 2003-05-05 19:09:01 - Data di creazione: 2003-05-05 19:09:01
Tipo Infobox: DESCRIPTION - Skill: 4- ADVANCED

Nessus è probabilmente il più completo ed evoluto strumento di vulnerability scanning disponibile nel mondo open source.
Presenta una struttura modulare, con dei plug-in che possono essere aggiornati per individuare vulnerabilità recenti, ha una logica client-server, in cui il server è l'engine che esegue lo scan vero e proprio e il client è l'interfaccia (disponibile in diversi linguaggi per diversi sistemi operativi) con cui si può configurare una sessione di scan (indirizzi target, tipi di check da eseguire ecc.) da far eseguire sul server.

INSTALLAZIONE
L'installazione di Nessus può essere fatta tramite sorgenti (necessari i seguenti tarball, nell'ordine: nessus-libraries-x.x.tar.gz, libnasl-x.x.tar.gz, nessus-core.x.x.tar.gz, nessus-plugins.x.x.tar.gz) o RPM/DEB.
Esiste anche la comodissima, semplicissima e rischiosa possibilità di eseguire una installazione direttamente via rete con lynx -source http://install.nessus.org | sh che provvede automaticamente a scaricare e compilare il tutto.
I prerequisiti di Nessus sono: disponibilità di GTK (in particolare il package gtk-devel che contiene per il programma gtk-config) per il client su Xwindows, disponibilità di NMAP per le operazioni di scanning, possibilmente presenza di OPENSSL per criptare le comunicazioni fra client e server.
A termine installazione ricordarsi di aggiungere /usr/local/bin e /usr/local/sbin al proprio PATH.

CREAZIONE DEGLI ACCOUNT UTENTE
Per poter eseguire uno scan tramite il server nessus, il client (il front-end disponibile all'utente) deve eseguire un login sulla base di un nome utente/password precedentemente creato.
Per aggiungere nuovi utenti sul server nessus si deve usare il comando nessus-adduser.
Vengono richiesti: login, password, tipo di autenticazione (normale o criptata), regole sugli IP che possono essere scannati dall'utente (lasciare vuoto per non impostare alcuna regola).

CONFIGURAZIONE DEL SERVER NESSUS
Il file di configurazione del demone nessus è di default /usr/local/etc/nessus/nessus.conf. Non sono necessarie particolari modifiche per far funzionare un Nessus compilato con le opzioni di default, in ogni caso fra i parametri configurabili, oltre a PATH vari, ci sono alcune impostazioni sul numero di test simultanei da eseguire, sul range di porte da scannare nonchè sui settaggi utilizzati per il canale criptato fra client e server.

AGGIORNAMENTO DEI PLUGIN
I check eseguiti da Nessus si basano su dei plugin, scrivibili in linguaggi diversi, che vengono regolarmente aggiornati sulla base delle scoperte di nuove vulnerabilità. E' disponibile una comoda utility per aggiornare automaticamente i plugin di nessus:
nessus-update-plugins -v visualizza e scarica gli ultimi aggiornamenti dei plugin di Nessus.

CREAZIONE DEI CERTIFICATI SSL
Prima di poter lanciare nessusd è consigliabile creare i certificati SSL necessari per criptare il traffico client-server.
Eseguire: nessus-mkcert e rispondere alle domande fatte.

ESECUZIONE DEL SERVER
Il server di Nessus può essere finalmente lanciato con nessusd -D, il programma si binda alla porta tcp 1241 ed è pronto per accettare richieste dal client.

ESECUZIONE DEL CLIENT
Lanciare il programma nessus che apre un tool grafico con cui interagire con il server nessus (che può essere sulla stessa macchina o sua una macchina remota).
Nella finestra che compare è innanzitutto necessario eseguire il login dalla finestra NESSUSD HOST (selezionare pure l'opzione di default su come gestire il certificato SSL).
Nella finestra PLUGINS selezionare quali security check eseguire. E' possibile selezionarli tutti tranne, o anche escludere quelli potenzialmente pericolosi, in grado di mandare in crash l'host selezionato.
Nella finestra PREFS si può fare un po' di tuning sulle tecniche di scanning da utilizzare, è possibile provare sistemi di evasione per non essere individuati da IDS vari o impostare brute force attacks basati su file di dizionari esterni.
Su SCAN OPTIONS si imposta il range di porte e altri parametri configurabili anche nel file di configurazione generale.
Nella finestra TARGET SELECTION si sceglie l'indirizzo IP o il nome dell'host da esaminare (se ne possono impostare più di uno separandoli con una virgola o si può definire una network tipo 10.0.0.0/24).
Per lanciare lo scan cliccare su START THE SCAN e aspettare il report sulle vulnerabilità note (da Nessus) presenti sul target selezionato.

Considerare che:
- Nessus non è stato pensato come tool per wannabe cracker
- Nonostante le tecniche di evasione utilizzate è probabile che un simile scan venga notato e registrato in qualche log sugli host target (l'IP registrato è quello del server, l'host su cui gira il demone Nessus)
- Alcune segnalazione di warning o alert si basano o su assunzioni relativamente paranoiche o su condizioni che di fatto  non esistono sul server interessato ("falsi positivi")
- Studiare i report di Nessus e le descrizioni sui buchi trovati è un buon metodo per iniziale a familiarizzare con il mondo variegato dei "Security Alert", che spesso oltre a descrivere il buco trovato, indicano le soluzioni su come correggerlo.
- E' bene abituarsi a lanciare regolarmente un Nessus con i plugin aggiornati sui propri server.

Security Audit: l'analisi di rete
Autore: mozako - Ultimo Aggiornamento: 2005-08-18 15:10:00 - Data di creazione: 2005-03-25 22:09:35
Tipo Infobox: WHITE PAPER - Skill: 3- INTERMEDIATE

L'esponenziale crescita dell' ICT (Information Communication Technologies) ed il pervasivo aumento di reti per l'interconnessione tra sistemi informativi, impongono un'ostinata attenzione a quelli che sono gli aspetti legati alla sicurezza informatica.
Non ci si deve meravigliare, infatti, se il numero di personal computer compromessi ha subito un forte rialzo in questi ultimi anni.
In un recente articolo abbiamo esaminato come “blindare” un PC montante il sistema operativo GNU/Linux tramite una security patch denominata grsecurity.
E' giunto il momento di analizzare in prima persona le vulnerabilità a cui il nostro computer è esposto:  battezziamo così il vulnerability scanning.
Per vulnerability scanning intendiamo esclusivamente l'analisi lecita della nostra rete (e/o comunque di una rete cui abbiamo la piena autorizzazione da parte dell'amministratore): ciò viene comunemente definito forensic analysis.
Non è intenzione dell'autore, pertanto, offrire i mezzi e le conoscenze per sferrare attacchi informatici illeciti; a tal proposito ricordo che l'accesso abusivo a sistemi informatici è un reato punito dal codice penale.
Gli strumenti messi a disposizione dalla comunità del software libero per analizzare (e quindi contrastare) le possibili vulnerabilità di un sistema sono molteplici: dal performante port scanner nmap all'avanzato e potente sistema per la verifica della presenza di eventuali vulnerabilità nessus, passando per l'egregio hardening system bastille.
In questo tutorial analizzeremo i primi due, rimandando ad un prossimo articolo lo studio del terzo.

Nmap
Nmap è probabilmente il più evoluto portscanner della storia;  è presente in quasi tutte le major-distro linux ed esiste un port anche per ambiente win32 ed Os X.
Nel caso in cui la nostra distro non lo abbia installato di default, colleghiamoci al sito http://www.insecure.org/nmap/nmap_download.html e scarichiamolo.
Scaricato il tarball, estraiamolo con tar -zxvf namp.xxx.x.tar.gz e compiliamolo eseguendo: ./configure && make && make install.
L'utilizzo di nmap non è eccessivamente laborioso; esso infatti prevede, nella sintassi di base, i seguenti argomenti:
nmap [tipi di scan] [eventuali opzioni] &lt;host&gt;

Eviterò di elencare tutte le opzioni di nmap (cosa, a mio avviso, inutile); cercherò, invece, di stimolare il lettore attraverso esempi pratici che dimostrino come lavora effettivamente nmap.
Mettiamo il caso che voglia analizzare la mia rete personale dall'interno:
# nmap -sT -PI 192.168.0.0/24
-sT analizzerà le porte (i servizi) attraverso connessioni “piene” mentre -PI si occuperà di sondare le eventuali macchine attive all'interno della rete tramite l'invio di pacchetti icmp echo.
Analizziamo l'output di nmap:
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2005-02-25 15:03 UTC
E' il banner d'avvio (che vedremo ad ogni scansione effettuata).
Host 192.168.0.0 seems to be a subnet broadcast address (returned 4 extra pings). Skipping host.

Indica che all'interno della rete 192.168.0.0 ci sono quattro host da analizzare.
Fatto ciò nmap si mette a lavoro permettendoci di capire quali host e quali servizi sono attivi nella nostra rete:

Interesting ports on 192.168.0.5:
(The 1657 ports scanned but not shown below are in state: filtered)
PORT     STATE SERVICE
80/tcp   open  http
1900/tcp open  UpnP
Interesting ports on 192.168.0.10:
...[output]...
Interesting ports on 192.168.0.101:
...[output]...
Interesting ports on 192.168.0.102:
...[output]...
Interesting ports on joerg.mozakoLabs (192.168.0.103):
PORT    STATE SERVICE
...[output]...


Lo scenario ora è più chiaro: nella rete ci sono 4 macchine attive ed un presumibile router.
La prima cosa che salta all'occhio è la suddivizione che nmap applica allo scanning: PORT, STATE e SERVICE rispettivamente: porta, stato e servizio.
Sotto la voce PORT troviamo un valore numerico che indica il numero della porta rilevata su host X.
STATE mostra lo stato della porta, che può essere di tre tipi: OPEN (porta aperta e liberamente accessibile), CLOSED (porta chiusa, inaccessibile), FILTERED (porta aperta ma filtrata da firewall).
SERVICE, infine, ci dice il nome vero e proprio del servizio abbinato a Y porta.
Naturalmente nmap non si limita ad un'analisi così superficiale; poniamo il caso che adesso io voglia carpire qualche informazione in più dalla mia rete, ad esempio il demone associato a servizio K e, perchè no, la marca e/o il nome del sistema operativo montato sull'host X:
# nmap -sT -sV -O -I -v 192.168.0.102
Host 192.168.0.102 appears to be up ... good. # l'host è attivo: buon segno

Tramite l'opzione -v (verbose) possiamo scorgere in anteprima le informazioni che successivamente verranno passate alle opzioni da noi fornite:
Initiating Connect() Scan against 192.168.0.102 at 15:40
Adding open port 22/tcp
Adding open port 6000/tcp
Adding open port 80/tcp
...[output]...


Ecco che entra in gioco l'opzione -sV che rende noti i demoni abbinati ad i servizi su host X:
Interesting ports on 192.168.0.102:
(The 1656 ports scanned but not shown below are in state: closed)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 3.9p1 (protocol 1.99)
80/tcp   open  http    Apache httpd 1.3.33 ((Unix) PHP/4.3.10)
6000/tcp open  X11

-O mostra il fingerprint dell'host X (svela, praticamente, quale sistema monta l'host):
Device type: general purpose
Running: Linux 2.4.X|2.5.X
OS details: Linux Kernel 2.4.0 - 2.5.20
Uptime 4.834 days (since Sun Feb 20 19:39:39 2005)
# tanto di uptime :)

Prestiamo particolare attenzione alle ultime informazioni fornite dall'opzione -O, grazie alle quali introdurremo il fattore zombie:
TCP Sequence Prediction: Class=random positive increments
                         Difficulty=3450157 (Good luck!)
IPID Sequence Generation: All zeros


<img src="/gfx/infobox/1274a.jpg" border="0" align=left"> Internet si basa sull'unione di due protocolli fondamentali TCP e IP, quando host A si collega ad host B, invierà un pacchetto TCP contenente un flag SYN attivo all'interno del quale vi sarà presente un numero K compreso tra 0 e 2^32-1.
Tale numero viene chiamato Identification Sequence Number (da ora ISN).
Host B, ricevuto il pacchetto TCP da host A, risponderà a sua volta con un altro pacchetto contenente flag SYN e ACK con ISN J proprio e ISN K+1 (ovvero l'ISN di host A aumentato di 1).
Al ricevimento del pacchetto SYN+ACK, host A provvederà all'invio di un terzo pacchetto contenente esclusivamente flag ACK con i due numeri (K e J) aumentati di 1.
Dopo questi tre banali passaggi la connessione TCP/IP è stabilita; a questo punto vi domanderete cosa mai potrà aver a che fare il funzionamento del protocollo TCP/IP con l'ultima “apparizione” dell' argv -O di nmap.
La risposta è semplice: Kevin Mitnick (famoso hacker americano) dimostrò che i numeri ISN potevano essere facilmente prevedibili per il fatto che venivano generati in sequenza fissa... vediamo come.
Prendiamo in considerazione host A (Attaccante), host B (Zombie) ed host C (Target).
Prima di tutto inviamo un pacchetto SYN+ACK dall'host attaccante (A) all'host zombie (B): per quanto abbiamo detto prima ciò non dovrebbe essere consentito in quanto la comunicazione TCP viene inizializzata col il solo flag SYN, ciò nonostante host B risponde alla richiesta con un pacchetto contenente il flag RST che a sua volta include il numero, esemplificativo, ISN 1000.
Fatto questo siamo a conoscenza dell'ISN di B e sappiamo anche che lo stesso verrà incrementato linearmente: inviamo da A un pacchetto “alterato” a C contenente l'ip di B facendo ricadere qualsivoglia responsabilità al medesimo: abbiamo in questa circostanza introdotto il concetto di spoofing.
Nel caso in cui la porta H di C è aperta questi inviarà un pacchetto a B (impersonificazione di A) contenente un pacchetto SYN+ACK ma, non avendo B legittimo richiesto alcunchè, questi chiuderà la connessione con un RST, incrementando logicamente l'ISN di 1: 1001.
Dopo aver fatto questo l'attaccante invierà un pacchetto SYN+ACK a B che, come in precendenza, chiuderà la comunicazione con un RST ed incrementerà l'ISN di 2: 1002 facendo denotare lo stato open della porta H.
Se invece la porta H di C è chiusa questi invierà un pacchetto a B (impersonificazione di A) con flag RST e, pertanto, l'ISN di B non cambierà.
Quando A invierà un nuovo pacchetto SYN+ACK a B ed in rispostà troverà un RST, constaterà che l'ISN sarà aumentato solo di 1 facendo notare lo stato closed di H.
Nmap è ingrado di fare tutto ciò ed è proprio qui che entra in gioco l'opzione -I dello stesso (dove I sta, guarda caso, per idle scan).
Tramite il TCP Sequence Prediction, nmap segnala il “grado di difficoltà” al fine di “intrappolare” un host zombie.
Nel mio caso il livello di difficoltà è molto alto: 3450157, tant'è vero che nmap stampa a video un non-rassicurante  Good luck segno che la macchina non è per niente disposta a farci “da tramite” :).
Nel caso in cui trovassimo un host con difficoltà bassa (Worthy challenge) possiamo sfruttarlo nel seguente modo:
nmap -sI <host zombie>:<porta aperta> -P0 -v <target>

Da bravi sysadmins tutto questo non basta, dobbiamo sapere che uno scanning effettuato con opzione -sT è facilmente rintracciabile da un amministratore attento e pertanto un malintenzionato furbo non lo userebbe mai.
Introduciamo in questo modo il concetto di SYN SCAN o meglio “scanning del mezzo hand-shake”.
E' un'opzione abbastanza avanzata che permette di restare ben al coperto e di non far troppo chiasso nel sistema “vittima”.
Avviene tramite l'invio di un pacchetto TCP contenente flag SYN attivo: qualora la porta H dovesse risultare aperta il sistema “vittima” risponderà con un pacchetto TCP con i flag SYN+ACK al quale, a sua volta, nmap risponderà stoppando la connessione con un pacchetto TCP con flag RST attivo.
Nel caso in cui, invece, la porta H dovesse risultare chiusa, a Nmap arriverà un pacchetto TCP con flag RST attivo che chiuderà la connessione.
Questa tecnica è impossibile da tracciare sui file di log ma un buon IDS (snort) riesce sicuramente a rintracciarla.
# nmap -sS -v 192.168.0.103 # esempio di syn-scan
[banner]
Host joerg.mozakoLabs (192.168.0.103) appears to be up ... good.
Initiating SYN Stealth Scan against joerg.mozakoLabs (192.168.0.103) at 16:57
...[output]...


Se invece abbiamo il sentore che la nostra rete stia sotto scanning ma i nostri sistemi di logging o IDS non rilevano niente, allora può darsi che l'attaccante stia usando un FIN SCAN:
# nmap -sF -v 192.168.0.103
[banner]
Host joerg.mozakoLabs (192.168.0.103) appears to be up ... good.
Initiating FIN Scan against joerg.mozakoLabs (192.168.0.103) at 16:59
The FIN Scan took 3 seconds to scan 1659 ports.    
...[output]...


Suddetta tecnica sfrutta l'invio di pacchetti TCP “anomali” contenenti flag FIN attivi.
Le specifiche RFC per lo standard TCP dicono che, nel caso un servizio (porta) si presenti chiuso, l'host vittima dovrà rispondere all'host attaccante con un pacchetto TCP contenente flag RST .
Di conseguenza se la porta è aperta nmap non riceverà alcuna risposta, se è chiusa, invece, riceverà un pacchetto RST che interromperà la connessione, geniale no ? :)
Esistono tuttavia sistemi che non seguono lo standard RFC e rispondono in entrambi i casi con flag RST; essi sono: MS Windows, Cisco, HP-UX, IRIX e diversi altri.

Presentiamo ora un'altra opzione: l'export dello scanning in XML.
Molte persone (soprattutto in ambito professionale) possono avere l'esigenza di creare dei report ordinati degli scanning fatti.
Nmap ci viene incontro con l'opzione -oX, ecco come funziona:
# nmap <opzioni> 192.168.0.103 -oX /percorso/scan.xml
Scanning avanzato e reporting in XML, che vogliamo di più ? :)

Nessus
Nessus è uno dei più completi ed efficienti strumenti per l'analisi di rete; grazie alla sua struttura modulare è altamente configurabile e performante.
Funziona attraverso plug-ins, aggiornati via web, contenenti le informazioni necessarie a scoprire le vulnerabilità presenti nella nostra rete.
Il suo funzionamento è caratterizzato da due distinte applicazioni: un server ed un client.
Il server è quello che si occupa dell'analisi vera e propria dell'host; il client, invece, è una GUI che permette di selezionare tutte le opzioni che vogliamo sfruttare per portare a termine una scansione.
Nessus è un tool che in determinati casi può essere molto violento, causando l'irraggiungibilità di un servizio o, addirittura, di un'intera macchina (Denial of Service); pertanto l'autore raccomanda di effettuare test solo su macchine cui abbiamo il totale consenso da parte dell'amministratore di rete.
Puntiamo il nostro browser al sito-web http://www.nessus.org/download/ e scarichiamo l'ultimo nessus-installer.
I prerequisiti per intstallare Nessus sono: GTK (in particolare il package gtk-devel che contiene per il programma gtk-config) per il client su Xwindows, NMAP per le operazioni di scanning, OPENSSL per crittare le comunicazioni fra client e server (opzionale, ma raccomandato).
Eseguiamo lo script d'installazione ed eseguiamolo o, alternativamente, sfruttiamo lynx per fare una comodissima installazione online:
# lynx -source http://install.nessus.org | sh
Installato Nessus dobbiamo creare un utente abilitato al login:
# nessus-adduser
Saranno richiesti: login, password, tipo di autenticazione (scegliere crittata) e regole sugli IP che possono essere scannati dall'utente (da lasciare vuoto).
Il file di configurazione di Nessus si trova in /usr/local/etc/nessus/nessus.conf: non è necessaria alcuna modifica per l'installazione di default.
Come abbiamo detto prima Nessus utilizza dei plug-ins per individuare le vulnerabilità, pertanto dovremo aggiornare gli stessi in questo modo:
# nessus-update-plugins -v

Fatto ciò creiamo il certificato SSL client -> server:
# nessus-mkcert

Arrivati a questo punto, avviamo il server nessusd che binderà la porta 1241:
# nessusd -D
All plugins loaded

Avviamo ora la GUI:
$ nessus

La GUI, dopo aver effettuato il login, si presenta come in figura 2 e permette di accedere a tutte le opzioni che Nessus mette a disposizione.
Nel caso in cui l'host da analizzare sia una macchina montante GNU/Linux, dovremo procedere impostando le regole “ad-hoc” per un sistema Unix-Like.
In plugin selection (all'interno del menu Plugins) selezioniamo:
Default Unix Accounts
General
Gain a shell remotely
Misc.
Gain root remotely
Service detection
Backdoors
Settings


<img src="/gfx/infobox/1274b.jpg" border="0" align=left"> Queste diciamo sono le opzioni “minimum” da selezionare quando l'host da analizzare è di tipo Unix-Like.
Un'analisi precedentemente effettuata con nmap permette di estendere il campo d'azione di nessus.
Poniamo il caso che tramite lo scanning di nmap si rilevino servizi come ftp, http o si rintracci un firewall; all'elenco di plugins selezionabili potremmo aggiungere:
CGI abuses
CGI abuses: XSS
FTP
Firewalls


Di fatto, la selezione delle opzioni in Nessus è altamente personalizzabile; essa consente di effettuare scansioni mirate ed estremamente precise.
E' cura dell'utente selezionare quali siano i plugins da impostare e quali non.
Nel menu Prefs possiamo impostare una miriade di opzioni destinate prevalentemente al tipo di scanning (porte/servizi) da fare.
Sono tante le opzioni configurabili in questo menu: descriverle tutte andrebbe al di fuori dell'obiettivo di questo tutorial.
In TCP scanning technique troviamo la raffigurazione grafica delle opzioni che nmap mette a disposizione: selezioniamo SYN scan.
Nel menu Scan options lasciamo default in Port range e, nel menu scorrevole in basso, selezioniamo Nmap (NASL wrapper).
Siamo arrivati alla fine: nel menu Target selection, in Target(s), scriviamo l'ip del PC da analizzare, clicchiamo Start the scan ed aspettiamo che Nessus faccia il suo lavoro <img src="/gfx/infobox/1274c.jpg" border="0">.
Completata l'analisi, Nessus ci mostrerà una schermata divisa in diverse sezioni <img src="/gfx/infobox/1274d.jpg" border="0" align="left">: all'interno della prima selezioniamo, tramite il menu a tendina, “Host” e clicchiamo sull'host scannato.
Nel riquadro sottostante al primo apparirà la subnet; cliccando potremo vedere i servizi attivi trovati all'interno del terzo box.
Selezionando un servizio all'interno di quest'ultimo box appariranno lateralmente (nel box Severity) i due possibili “gradi d' informazione” che Nessus mette a disposizione: Security Warning e Security Note.
Cliccando su questi si potrà scorgere la spiegazione dettagliata della possibile vulnerabilità.
Questo sistema per alcuni può essere scomodo, è per questo che Nessus mette a disposizione l'export in formato XML, HTML, Latex, ASCII ed, addirittura, HTML con statistiche e grafi !
Tramite il bottone Save report... salviamo il file in formato “HTML with Pies and Graphs” e godiamoci il report con tanto di grafi statistiche dettagliate.<img src="/gfx/infobox/1274e.jpg" border="0">

Conclusioni
Abbiamo visto come l'utilizzo combinato di Nmap e Nessus possa fornire importanti informazioni circa lo “stato di salute” della nostra rete.
La comunità open-source offre tanti tool che permettono di analizzare e quantizzare le vulnerabilità presenti nella nostra rete (ettercap, ethereal, tcpdump e molti altri).

Bisogna fare attenzione, inoltre, a non commetere l'errore in cui cadono molte persone, ossia quello di considerare sicura la propria rete solo perchè un nmap o un nessus ha dato esito positivo: questo è un male in quanto dà all'amministratore un finto senso di sicurezza rendendo difficile riparare/intercettare un possibile attacco da parte di un malintenzionato.

NmapFE: un front end X-Window per nmap
Autore: homer - Ultimo Aggiornamento: 2003-06-23 22:44:36 - Data di creazione: 2003-06-23 22:44:36
Tipo Infobox: TIPS - Skill: 2- JUNIOR

Un comodo add-on che è possibile utilizzare con nmap è nmapfe (conosciuto anche come xnmap) ovvero un front end per X-Window grazie al quale è possibile interagire con il programma di portscanning tramite una finestra che ne visualizza le varie opzioni di utilizzo.

Installare ed utilizzare questo front end è semplice e veloce. Naturalmente il prerequisito essenziale è che nmap sia già installato sul sistema.  
Installando nmap tramite i sorgenti con i classici ./configure make e make install NmapFE viene incluso di default, mentre per RPM è disponibile il relativo pacchetto.

DOWNLOAD  
E' possibile trovare l'ultima versione di NmapFE seguendo i link su www.insecure.org:  
[root@Enigma homer]# wget http://download.insecure.org/nmap/dist/nmap-frontend-3.28-1.i386.rpm
--21:31:14--  http://download.insecure.org/nmap/dist/nmap-frontend-3.28-1.i386.rpm  
           => `nmap-frontend-3.28-1.i386.rpm'  
Resolving download.insecure.org... fatto.  
Connecting to download.insecure.org[66.35.250.210]:80... connected.  
HTTP richiesta inviata, aspetto la risposta... 200 OK  
Lunghezza: 26,967 [application/octet-stream]  
  
100%[================================================================================>] 26,967         5.14K/s    ETA 00:00
  
21:31:20 (5.14 KB/s) - `nmap-frontend-3.28-1.i386.rpm' salvato [26967/26967]

  
INSTALLAZIONE E UTILIZZO  
[root@Enigma homer]# rpm -ivh nmap-frontend-3.28-1.i386.rpm  
Preparing...                ########################################### [100%]  
   1:nmap-frontend          ########################################### [100%]

  
Una volta installato è possibile lanciare l'eseguibile nmapfe, da X-Windows oppure da una finestra di shell, il quale si preoccuperà di avviare lo scanner nmap vero e proprio:  
[root@Enigma homer]# nmapfe &   
[1] 1414
  
Avviando il programma in background tramite & viene lasciata libera la shell usata per lanciarlo  

Analisi di rete programmata
Autore: mozako - Ultimo Aggiornamento: 2005-06-15 15:21:36 - Data di creazione: 2005-03-22 17:35:37
Tipo Infobox: TIPS - Skill: 3- INTERMEDIATE

Sovente si ha l'esigenza di effettuare un'analisi di un determinato host protratta nel tempo e soprattutto programmata.
Vediamo come realizzare uno script in python che ci permetta di esportare l'output di Nmap in formato html.

I requisiti per fare ciò sono:
- il portscanner nmap
- l'interprete python >= 2.3
- un webserver qualsiasi

Il webserver si occuperà di rendere accessibile la nostra pagina html via web mentre cron, tramite il nostro script, genererà la stessa ogni 5 minuti.

Lo script:
#!/usr/bin/python
# Analisi di rete "programmata"
# http://openskills.info - by mozako
import os

PATH = "/var/www/htdocs/" # qui inseriremo il percorso (e solo quello) dove salvare il file html; nel nostro caso /var/www/htdocs/ rappresenta la directory root del web-server Apache.

RETE = "192.168.0.102" # L'host da monitorare andrà qui.

NMAP = "/usr/bin/nmap -sT " + RETE # qui inseriremo il percorso completo di nmap seguito dalle opzioni per lo scanning scelte (si badi allo spazio finale); in questo caso si è optato per il semplice TCP connect() scan.

file = open(PATH + "scan.htm",'w') # apriamo il file dove salvare l'output in scrittura.
print >> file, "Network Info<br><hr>"
cd = os.popen(NMAP) # startiamo nmap
for line in cd.readlines():
   file.write(line+ "<br>")
file.close()


Modifichiamo il file /var/spool/cron/crontabs/root, in maniera da avviare lo script ogni 5 minuti, aggiungendo:

*/5 * * * * /percorso/scan.py &> /dev/null

Se tutto è filato liscio troveremo una pagina .htm accessibile tramite http://nostro_host/scan.htm ed aggiornata ogni 5 minuti !

Privacy Policy