Tipi di scansione
Vediamo adesso alcune tecniche di scanning (sia host che port scanning). Queste consistono in metodi per rilevare informazioni su host di una rete remota. Possono essere utilizzati da un curioso o un malintenzionato per conoscere, relativamente ad un host, il suo indirizzo IP, se è attivo o meno, se alcune porte (e quindi determinati servizi conosciuti sono attivi) sono aperte ... Anche queste attività illecite sono rilevabili da un sistema di intrusion detection che utilizza il traffico di rete come fonte di informazione per rilevare intrusioni. Le seguenti tecniche di scanning sono utilizzate in molti tool esistenti.
§ ICMP ping sweep - questo tipo di scansione viene effettuata al solo scopo di verificare se un indirizzo IP corrisponde ad un host attivo e raggiungibile all'interno di una rete, per poter effettuare su queste, future attività di probe. Se le macchine sono attive risponderanno con un pacchetto ICMP echo reply. Di solito, se il curioso utilizza un tool per compiere questa operazione, come nmap, il sito sotto attacco riceverà molteplici pacchetti in un breve lasso di tempo diretti a tutti gli host raggiungibili.
§ ACK sweep - vengono inviati pacchetti ACK alla porta 80 (porta di default del servizio http) della macchina da attaccare: Se la macchina è attiva risponderà con un RST per tentare il ripristino della connessione che di fatto non esisteva.
§ TCP connect() scan - il metodo più semplice per eseguire port scanning: viene utilizzato il comando connect( ) del sistema operativo per aprire una connessione con le porte di interesse. Se una generica porta è aperta (presenza di un servizio in ascolto su quella porta) la connect( ) avrà successo, altrimenti la porta sarà irraggiungibile. Il vantaggio di questo tipo di probing è la disponibilità per qualsiasi utente (non necessariamente root).
§ TCP SYN scan - la tecnica è ben nota. In questo caso viene utilizzata però per evidenziare lo stato della porta. Inviato il pacchetto SYN, la ricezione di SYN/ACK evidenzia una porta in ascolto, mentre un RST evidenzia una porta chiusa. Se è ricevuto un SYN/ACK, viene immediatamente inviato un RST, in modo da non effettuare la connessione.
§ UDP scan - utilizzato per determinare quali porte UDP sono aperte su una data macchina. La tecnica prevede di spedire pacchetti Udp da 0 byte ad ogni porta su una data macchina. Se viene spedita come risposta un pacchetto ICMP port unreachable, la porta è chiusa, altrimenti si può assumere che sia aperta.
§ Reverse ident scan – UNIX offre un servizio chiamato ident (RFC 1413) o auth che identifica l’utente di una connessione TCP. Nell’utilizzo normale di questo servizio, quando un utente si connette ad un server, il server risponde con una richiesta al servizio ident per scoprire l’identità dell’utente che vuole connettersi. Ad ogni modo, ident può essere utilizzato anche in modo inverso; se ident è in esecuzione anche sul server, l’utente, dopo aver investigato le porte aperte sul server, può richiedere l’identità del servizio a cui si sta connettendo. Questa operazione agevola la scoperta di eventuali account presenti sul server che possono dunque essere attaccati.
§ RPC scan - per tutte le porte UDP/TCP che sono state trovate da una precedente analisi aperte, vengono inviati dei pacchetti SunRPC NULL command, per determinare se sono porte RPC e in caso affermativo, quali applicazioni (e che versione) servono. Questo metodo può fornire le stesse informazioni date dal comando rpcinfo, anche se il portmapper è protetto dietro un firewall.
§ SYN-FIN, Xmas, Full Xmas, Null, FIN scans, Nmap ping- a volte scanning che sfruttano i pacchetti SYN non portano a molti risultati per il curioso, dal momento che un router o un firewall potrebbero controllare (e quindi filtrare o loggare) l'arrivo di pacchetti SYN per porte riservate. Questi tipi di scan potrebbero avere maggior successo e passare il firewall ottenendo lo scopo. L'idea alla base di queste tecniche è la stessa: una porta chiusa deve inviare un RST quando riceve un probe di questo tipo, mentre una porta aperta la ignorerà. Questo comportamento, specificato dall'RFC 973, non è seguito da tutti i sistemi: Windows 95/NT non manda un reset qualora la porta sia chiusa; Cisco, IRIX ed altri mandano un reset anche qualora la porta sia aperta, quando invece dovrebbero solamente ignorare il pacchetto. Gli scan in questione si diversificano per il pacchetto che viene inviato alla generica porta. Sono tutti pacchetti di costruzione anomala:
- SYN-FIN scan - invia un pacchetto con bit SYN e FIN contemporaneamente settati
- FIN scan - invia un pacchetto FIN con il solo bit FIN settato.
- Xmas scan - invia un pacchetto con i flag FIN, URG, PSH settati.
- NULL scan - invia un pacchetto con nessuno dei flag settato.
- Full Xmas scan - invia un pacchetto con tutti i flag posti ad uno.
- Nmap TCP ping - invia un pacchetto ack con ack number uguale a zero.