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
· 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
