I port scanner

 

 

1 - Introduzione

 

L’espansione della rete ha portato all' aumento dei tentativi di intrusione che hanno inciso sul fattore sicurezza della rete stessa.

 


Figura 1

 


Descriveremo una delle fasi della penetrazione, lo scanning incentrandosi sulle tecniche implementative di un portscanner e presentando Portscan, Nmap, Nessus, Saint: i piu avanzati portscanner di pubblico dominio.

Ci accosteremo ad essi sia come amministratori di rete con l’intenzione, quindi, di curare la robustezza del nostro sistema sia come un cracker che potrebbe invece utilizzare tali strumenti per penetrare nel nostro sistema a scopi dannosi.

E’ auspicabile ottenere tutte le informazioni relative alla struttura ed alla configurazione del sistema che andremo ad analizzare.

L'ottenimento di tali informazioni si divide in due passi essenziali, che precedono l'analisi vera e propria: l’improntamento sistematico di un server posto in rete  e lo scanning . Il primo permette possibile intruso di crearsi un profilo completo dello stato di sicurezza della rete stessa cercando di ottenere maggiori informazioni possibili relative a:

 

· Amministratori di rete e utenti della rete

· Posizione del server

· Presenza o meno di Intranet

· Sistemi di rilevamento delle intrusioni

· Server DNS e sua configurazione

· Indirizzi IP assegnati

· Eventuale Accesso Telefonico

 

Il secondo ci permette di rilevare quali macchine risultano attive e raggiungibili via Internet e quali servizi sono disponibili usando tecniche come:

 

· I ping sweep (utili per rilevare se uno determinato host sia attivo o meno)

· Il portscanning

· Il rilevamento del sistema operativo tramite stack TCP/IP fingerprinting

 

 

 

 

2 - Portscanning

 

Definiamo come portscanning il processo di connessione a porte TCP e UDP sul sistema nel quale si vuole tentare una penetrazione al fine di determinare quali servizi siano in esecuzione o in stato di LISTENING.

L'identificazione delle porte in LISTENING è critica al fine di determinare il tipo di Sistema Operativo e le applicazioni in uso.

Eventuali servizi attivi in ascolto potrebbero consentire a utenti non autorizzati di accedere a sistemi configurati in maniera errata o su cui sia in esecuzione un software con problemi di sicurezza noti.

 

 

 

3 - Obiettivi

 

Un intruso può abusare dei servizi presenti della macchina Linux, se sono malconfigurati o soggetti a bug, per penetrare nel sistema. Identificare i servizi TCP o UDP in esecuzione sul dato sistema. Identificare quale Sistema Operativo, è presente sul dato sistema. Identificare applicazioni specifiche o versioni di un dato servizio sul sistema.

 

 

4 -Tipi di scansione

 

Prima di passare agli indispensabili strumenti per la scansione delle porte, è necessario chiarire quali siano le diverse tecniche disponibili. Uno dei pionieri nell’implementazione di queste tecniche di scansione è Fyodor, che ne ha implementate un buon numero nel suo Nmap. Molti dei tipi di scansione che presenteremo qui sono stati elaborati direttamente dallo stesso Fyodor. Molte delle tecniche esistenti si basano sul protocollo TCP.

TCP è un protocollo aperto, il che significa semplicemente che le descrizioni tecniche del protocollo appaiono nei documenti pubblici e quindi chiunque può creare un TCP/IP sul proprio hardware e software.

Inoltre TCP è un protocollo connection-oriented e tramite alcuni flag caratterizza i pacchetti che curano la connessione. Questi flag sono: SYN (richiesta di sincronizzazione), ACK (accusa di ricevuta), FIN (termine connessione), RST (rifiuto di connessione). Sfrutteremo tali flag allo scopo di sapere se un certo host è on line oppure se una certa porta è in listening.

 

 

 

·        Scan TCP connect()

·        Scan TCP SYN

·        Scan TCP FIN

·        Scan TCP Xmas Tree

·        TCP Null Scan

·        UDP scan

 

 

Scan TCP connect( ) (scansione TCP con connessione).

Questo tipo di scansione si collega alla porta obiettivo e completa una procedura di hand-shake a tre fasi (three-way handshake), SYN, SYN/ACK e ACK (secondo lo schema descritto in Figura 2).

 

 


Figura 2

 

 


È facilmente rilevabile dal sistema, che lo subisce e per questo motivo difficilmente un potenziale intruso lo usa.

 

Scan TCP SYN (scansione TCP via SYN).

Questa tecnica è detta anche di scansione “semiaperta” (“half-open scanning”), perché non viene realizzata una connessione TCP completa. Opera come segue:

 

Supponiamo di avere una porta P in un nostro host :

 

 

 

 


Figura 3

 


Mandando un pacchetto TCP SYN, alla porta P dell'host interrogato, se questo risponderà con un messaggio di SYN/ACK allora si potrà dedurre che P è in LISTENING (Figura 3).

 

 

 


Figura 4

 

 


Al contrario ricevendo un messaggio di RST/ACK potremmo dire con certezza che la porta P non è in LISTENING (Figura 4).

 

In questo caso evitiamo di mandare l’ACK finale per evitare, che  l'handshake si completi.

Questa tecnica ha il vantaggio di essere più discreta rispetto alla connessione TCP completa e potrebbe non essere registrata sul sistema target.

 

Scan TCP FIN (scansione TCP via FIN).

Questa tecnica prevede l’invio di un pacchetto FIN sulla porta obiettivo. Secondo la RFC-793 funziona in questo modo:

 

Inviando un pacchetto TCP FIN,  alla porta P dell'host obiettivo se si riceve un RST dalla porta P allora posso dedurre che la porta è chiusa (Figura 5).

 

Solitamente questa tecnica funziona solo con le implementazioni UNIX di TCP/IP.

 

 

 

 

 


 


Figura 5

 

 

Scan TCP Xmas Tree (scansione TCP ad albero di Natale).

Questa tecnica prevede l’invio di un pacchetto FIN, URG e PUSH alla porta target. Secondo la RFC-793, il sistema obiettivo dovrebbe rispondere con RST per tutte le porte chiuse (Figura 6).

 

 

 

                                                           


Figura 6

 


TCP Null Scan (scansione TCP nulla). Adoperando questa tecnica disattiveremo tutti i flag. Secondo la RFC-793, il sistema obiettivo dovrebbe rispondere con RST per tutte le porte chiuse (Figura 7).

 

 


Figura 7

 


UDP scan (scansione UDP).

Questa tecnica prevede l’invio di un pacchetto UDP alla porta target. Se la risposta è un messaggio “ICMP port unreachable”, la porta è chiusa. Se invece non si riceve tale messaggio, si può concludere che la porta è aperta (Figura 8).

 


Figura 8

 


Essendo UDP un protocollo “connectionless”, cioè non basato sulla connessione, la precisione di questa tecnica dipende fortemente da numerosi fattori legati al livello di utilizzo delle risorse della rete e di sistema. Inoltre, la scansione UDP è un protocollo estremamente lento, specialmente nel caso si tenti di esaminare un dispositivo che utilizzi intensamente i filtri sui pacchetti. Se decidete di eseguire delle scansioni UDP su Internet, non aspettatevi risultati affidabili.

 

 

5 - I Software a confronto