-sS(TCP SYN scan)

SYN scan è l’opzione predefinita e più popolare per buone ragioni. Può essere eseguita rapidamente, scansionando migliaia di porte al secondo su una rete veloce non ostacolata da firewall restrittivi. È anche relativamente poco intrusiva e furtiva poiché non completa mai le connessioni TCP. La scansione SYN funziona contro qualsiasi stack TCP conforme piuttosto che dipendere dalle idiosincrasie di piattaforme specifiche come fanno le scansioni FIN/NULL/Xmas, Maimon e idle di Nmap. Permette anche una chiara e affidabile differenziazione tra gli stati open,closed e filtered.

Questa tecnica è spesso chiamata scansione semiaperta, perché non si apre una connessione TCP completa. Si invia un pacchetto SYN, come se si stesse per aprire una vera connessione e poi si aspetta una risposta. Un SYN/ACK indica che la porta è in ascolto (aperta), mentre un RST (reset) è indicativo di un non-ascolto. Se non si riceve alcuna risposta dopo diverse ritrasmissioni, la porta è segnata come filtrata. La porta è anche segnata come filtrata se viene ricevuto un errore ICMP unreachable (tipo 3, codice 0, 1, 2, 3, 9, 10, o 13). La porta è anche considerata aperta se viene ricevuto in risposta un pacchetto SYN (senza il flag ACK). Questo può essere dovuto a una caratteristica TCP estremamente rara conosciuta come una connessione simultanea aperta o split handshake (vedi https://nmap.org/misc/split-handshake.pdf).

-sT(TCP connect scan)

TCP connect scan è il tipo di scansione TCP predefinito quando SYN scan non è un’opzione. Questo è il caso in cui un utente non ha i privilegi sui pacchetti grezzi. Invece di scrivere pacchetti grezzi come fa la maggior parte degli altri tipi di scansione, Nmap chiede al sistema operativo sottostante di stabilire una connessione con la macchina e la porta di destinazione emettendo la chiamata di sistema connect. Questa è la stessa chiamata di sistema di alto livello che i browser web, i client P2P e la maggior parte delle altre applicazioni abilitate alla rete usano per stabilire una connessione, ed è parte di un’interfaccia di programmazione nota come Berkeley SocketsAPI. Piuttosto che leggere le risposte dei pacchetti grezzi dal filo, Nmap usa questa API per ottenere informazioni di stato su ogni tentativo di connessione.

Quando la scansione SYN è disponibile, di solito è una scelta migliore. Nmaph ha meno controllo sulla chiamata di alto livello connectche con i pacchetti grezzi, rendendola meno efficiente. La chiamata di sistema completa le connessioni alle porte di destinazione aperte piuttosto che eseguire il reset di metà apertura che fa la scansione SYN. Non solo questo richiede più tempo e più pacchetti per ottenere le stesse informazioni, ma è più probabile che i computer di destinazione registrino la connessione. Un IDS decente catturerà entrambi, ma la maggior parte delle macchine non ha un tale sistema di allarme. Molti servizi sul vostro sistema Unix medio aggiungeranno una nota al syslog, e a volte un messaggio di errore criptico, quando Nmap si connette e poi chiude la connessione senza inviare dati. Servizi veramente patetici vanno in crash quando questo accade, anche se è raro. Un amministratore che vede un mucchio di tentativi di connessione nei suoi log da un singolo sistema dovrebbe sapere che è stato sottoposto a scansione di connessione.

-sU(scansioni UDP)

Mentre la maggior parte dei servizi popolari su Internet gira sul protocollo TCP, i servizi UDP sono ampiamente distribuiti. DNS, SNMP e DHCP (porte registrate 53, 161/162 e 67/68) sono tre dei più comuni. Poiché la scansione UDP è generalmente più lenta e difficile del TCP, alcuni auditor di sicurezza ignorano queste porte. Questo è un errore, poiché i servizi UDP sfruttabili sono abbastanza comuni e gli aggressori certamente non ignorano l’intero protocollo. Fortunatamente, Nmap può aiutare a inventariare le porte UDP.

La scansione UDP si attiva con l’opzione -sU. Può essere combinato con un tipo di scansione TCP come la scansione SYN (-sS) per controllare entrambi i protocolli durante la stessa esecuzione.

La scansioneUDP funziona inviando un pacchetto UDP ad ogni porta presa di mira. Per alcune porte comuni come 53 e 161, viene inviato un carico utile specifico del protocollo per aumentare il tasso di risposta, ma per la maggior parte delle porte il pacchetto è vuoto a meno che non vengano specificate le opzioni --data,--data-string o --data-length.Se viene restituito un errore ICMP port unreachable (tipo 3, codice 3), la porta è closed. Altri errori ICMP irraggiungibili (tipo 3, codici 0, 1, 2, 9, 10 o 13) contrassegnano la porta come filtered. Occasionalmente, l’aservice risponderà con un pacchetto UDP, dimostrando che è open. Se nessuna risposta viene ricevuta dopo le ritrasmissioni, la porta viene classificata come open|filtered. Questo significa che la porta potrebbe essere aperta, o forse i filtri dei pacchetti stanno bloccando la comunicazione. Il rilevamento della versione (-sV) può essere usato per aiutare a differenziare le porte veramente aperte da quelle filtrate.

Una grande sfida con la scansione UDP è farlo velocemente.Le porte aperte e filtrate raramente inviano alcuna risposta, lasciando Nmap al timeout e quindi a condurre ritrasmissioni solo nel caso in cui la sonda o la risposta siano state perse. Le porte chiuse sono spesso un problema ancora più grande: di solito rimandano indietro un errore ICMP port unreachable. Ma a differenza dei pacchettiRST inviati dalle porte TCP chiuse in risposta a un SYN o a un connectscan, molti host limitano di default i messaggi di porta irraggiungibile ICMP.Linux e Solaris sono particolarmente rigidi su questo punto. Per esempio, il kernel Linux 2.4.20 limita i messaggi di destinazione non raggiungibile a uno al secondo (in net/ipv4/icmp.c).

Nmap rileva la limitazione del tasso e rallenta di conseguenza per evitare di riempire la rete di pacchetti inutili che la macchina bersaglio farà cadere. Sfortunatamente, un limite in stile Linux di un pacchetto al secondo rende una scansione di 65.536 porte più lunga di 18 ore. Idee per velocizzare le tue scansioni UDP includono la scansione di più host in parallelo, facendo prima una scansione veloce solo delle porte popolari, scansionando da dietro il firewall, e usando --host-timeout per saltare gli host lenti.

-sY(SCTP INIT scan)

SCTP è un’alternativa relativamente nuova ai protocolli TCP e UDP, che combina la maggior parte delle caratteristiche di TCP e UDP, e aggiunge anche nuove caratteristiche come il multi-homing e il multi-streaming. Viene usato principalmente per i servizi relativi a SS7/SIGTRAN, ma ha il potenziale per essere usato anche per altre applicazioni.SCTP INIT scan è l’equivalente SCTP di un TCP SYN scan.Può essere eseguito rapidamente, scansionando migliaia di porte al secondo su una rete veloce non ostacolata da firewall restrittivi.Come SYN scan, INIT scan è relativamente discreto e furtivo, poiché non completa mai le associazioni SCTP. Permette anche una chiara e affidabile differenziazione tra gli stati open,closed e filtered.

Questa tecnica è spesso chiamata scansione semiaperta, perché non si apre un’associazione SCTP completa. Si invia un INITchunk, come se si stesse per aprire una vera associazione e poi si aspetta una risposta. Un chunk INIT-ACK indica che la porta è in ascolto (aperta), mentre un chunk ABORT è indicativo di un non ascoltatore. Se non si riceve alcuna risposta dopo diverse ritrasmissioni, la porta è contrassegnata come filtrata. La porta è anche marcata come filtrata se viene ricevuto un errore ICMPunreachable (tipo 3, codice 0, 1, 2, 3, 9, 10, o 13).

-sN;-sF;-sX(scansioni TCP NULL, FIN, e Xmas)

Questi tre tipi di scansione (ancora di più sono possibili con l’opzione--scanflags descritta nella prossima sezione) sfruttano una sottile lacuna nel TCP RFC per differenziare le porte open eclosed. La pagina 65 di RFC 793 dice che “se lo stato della porta è CLOSED …. un segmento in arrivo che non contiene un RST causa l’invio di un RST in risposta”. Poi la pagina successiva discute i pacchetti inviati alle porte aperte senza i bit SYN, RST o ACK impostati, affermando che: “

Quando si scansionano sistemi conformi a questo testo RFC, qualsiasi pacchetto che non contenga bit SYN, RST o ACK risulterà in un RST in risposta se la porta è chiusa e nessuna risposta se la porta è aperta. Finché nessuno di questi tre bit è incluso, qualsiasi combinazione degli altri tre (FIN, PSH e URG) è OK. Nmap sfrutta questo con tre tipi di scansione:

Null scan (-sN)

Non imposta alcun bit (l’intestazione della bandiera TCP è 0)

FIN scan (-sF)

Imposta solo il bit TCP FIN.

Xmas scan (-sX)

Imposta i flag FIN, PSH e URG, accendendo il pacchetto come un albero di Natale.

Questi tre tipi di scansione hanno esattamente lo stesso comportamento, tranne i flag TCP impostati nei pacchetti sonda. Se viene ricevuto un pacchetto RST, la porta è considerata closed, mentre nessuna risposta significa che è open|filtered. La porta è contrassegnatafiltered se viene ricevuto un errore ICMP unreachable (tipo 3, codice0, 1, 2, 3, 9, 10, o 13).

Il vantaggio chiave di questi tipi di scansione è che possono intrufolarsi attraverso certi firewall non-stateful e packet filteringrouter. Un altro vantaggio è che questi tipi di scansione sono un po’ più furtivi di una scansione SYN. Non contate su questo però: la maggior parte dei prodotti IDS moderni possono essere configurati per rilevarli. Il grande svantaggio è che non tutti i sistemi seguono RFC 793 alla lettera. Un certo numero di sistemi invia risposte RST alle sonde indipendentemente dal fatto che la porta sia aperta o meno. Questo fa sì che tutte le porte siano etichettate come closed. I principali sistemi operativi che lo fanno sono Microsoft Windows, molti dispositivi Cisco, BSDI e IBM OS/400. Un altro lato negativo di queste scansioni è che non possono distinguere le porte open da certe filtered, lasciandovi con la rispostaopen|filtered.

-sA(TCP ACK scan)

Questa scansione è diversa dalle altre discusse finora in quanto non determina mai le porte open (o ancheopen|filtered). Viene usato per mappare i set di regole del firewall, determinando se sono stateful o no e quali porte sono filtrate.

Il pacchetto sonda ACK scan ha solo il flag ACK impostato (a meno che non si usi --scanflags). Durante la scansione di sistemi non filtrati, le porte open e closed restituiranno entrambe un pacchetto RST. Nmap quindi le etichetta comeunfiltered, il che significa che sono raggiungibili dal pacchettoACK , ma se sono open o closed è indeterminato. Le porte che non rispondono, o che rimandano indietro certi messaggi di errore ICMP (tipo 3, codice 0, 1, 2, 3, 9, 10 o 13), sono etichettate filtered.

-sW(TCP Window scan)

Window scan è esattamente la stessa cosa dell’ACK scan, tranne che sfrutta un dettaglio di implementazione di certi sistemi per differenziare le porte aperte da quelle chiuse, piuttosto che stampare sempreunfiltered quando viene restituito un RST. Lo fa esaminando il campo TCP Window dei pacchetti RST restituiti. Su alcuni sistemi, le porte aperte usano una dimensione positiva della finestra (anche per i pacchetti RST) mentre quelle chiuse hanno una finestra zero. Così invece di elencare sempre una porta come unfiltered quando riceve un RST indietro, Window scan elenca la porta come open o closed se il valore TCP Window in quel reset è positivo o zero, rispettivamente.

Questa scansione si basa su un dettaglio di implementazione di una minoranza di sistemi su Internet, quindi non ci si può sempre fidare. I sistemi che non lo supportano di solito restituiscono tutte le porteclosed. Naturalmente, è possibile che la macchina non abbia davvero porte aperte. Se la maggior parte delle porte scansionate sonoclosed ma alcuni numeri di porta comuni (come 22,25, 53) sono filtered, il sistema è molto probabilmente suscettibile. Occasionalmente, i sistemi mostreranno anche l’esatto comportamento opposto. Se la vostra scansione mostra 1.000 porte aperte e tre porte chiuse o filtrate, allora quelle tre potrebbero benissimo essere quelle veramente aperte.

-sM(TCP Maimon scan)

Il Maimon scan prende il nome dal suo scopritore, Uriel Maimon.Egli descrisse la tecnica nel numero 49 di Phrack Magazine (novembre 1996).Nmap, che includeva questa tecnica, fu rilasciato due numeri dopo.Questa tecnica è esattamente la stessa di NULL, FIN, e Xmas scan, tranne che la sonda è FIN/ACK. Secondo RFC 793 (TCP), un pacchetto RST dovrebbe essere generato in risposta a tale sonda, sia che la porta sia aperta o chiusa. Tuttavia, Uriel ha notato che molti sistemi derivati da BSD lasciano semplicemente cadere il pacchetto se la porta è aperta.

--scanflags(Custom TCP scan)

Gli utenti Nmap veramente avanzati non devono limitarsi ai tipi di scansione offerti. L’opzione --scanflags permette di progettare la propria scansione specificando flagTCP arbitrari.Lasciate fluire la vostra creatività, mentre evitate i sistemi di rilevamento delle intrusioni i cui venditori hanno semplicemente sfogliato la pagina man di Nmap aggiungendo regole specifiche!

L’argomento --scanflags può essere un valore numerico di flag come 9 (PSH e FIN), ma usare nomi simbolici è più facile. Basta mettere insieme qualsiasi combinazione di URG,ACK, PSH,RST, SYN eFIN. Per esempio, --scanflagsURGACKPSHRSTSYNFIN imposta tutto, anche se non è molto utile per la scansione. L’ordine in cui sono specificati è irrilevante.

Oltre a specificare i flag desiderati, è possibile specificare un tipo di scansioneTCP (come -sA o -sF).Quel tipo di base dice a Nmap come interpretare le risposte. Per esempio, una scansione SYN considera che nessuna risposta indichi una porta filtered, mentre una scansione FIN tratta la stessa come open|filtered. Nmap si comporterà nello stesso modo in cui si comporta per il tipo di scansione di base, eccetto che userà invece i flag TCP specificati dall’utente. Se non si specifica un tipo di base, viene usata la scansione SYN.

-sZ(SCTP COOKIE ECHO scan)

SCTP COOKIE ECHO scan è una scansione SCTP più avanzata. Sfrutta il fatto che le implementazioni SCTP dovrebbero lasciar cadere silenziosamente i pacchetti contenenti chunk COOKIE ECHO sulle porte aperte, ma inviare un ABORT se la porta è chiusa. Il vantaggio di questo tipo di scansione è che non è una scansione delle porte così ovvia come una scansione INIT. Inoltre, ci possono essere ruleset non-statefulfirewall che bloccano gli INIT chunks, ma non i COOKIE ECHOchunks. Non fatevi ingannare nel pensare che questo renderà invisibile una scansione delle porte; un buon IDS sarà in grado di rilevare anche le scansioni SCTPCOOKIE ECHO. Il lato negativo è che le scansioni SCTP COOKIE ECHO non possono differenziare tra le porte open e filtered, lasciandovi con lo stato open|filteredin entrambi i casi.

-sI <zombie host>(scansione inattiva)

Questo metodo avanzato di scansione permette una scansione delle porte TCP veramente cieca del bersaglio (il che significa che nessun pacchetto viene inviato al bersaglio dal tuo indirizzo IP reale). Invece, un unico attacco side-channel sfrutta la prevedibile generazione di sequenza ID di frammentazione IP sull’host zombie per ottenere informazioni sulle porte aperte sul bersaglio. I sistemi IDS visualizzeranno la scansione come proveniente dalla macchina zombie specificata (che deve essere attiva e soddisfare determinati criteri). I dettagli completi di questo affascinante tipo di scansione sono nella sezione chiamata “TCP Idle Scan (-sI)”.

Oltre ad essere straordinariamente furtivo (a causa della sua natura cieca), questo tipo di scansione permette di mappare le relazioni di fiducia basate su IP tra le macchine. L’elenco delle porte mostra le porte aperte dalla prospettiva dell’host zombie. Quindi si può provare a scansionare un obiettivo utilizzando vari zombie che si pensa possano essere affidabili (tramite regole del router/filtro dei pacchetti).

Si può aggiungere un due punti seguito da un numero di porta all’host zombie se si desidera sondare una particolare porta sullo zombie per i cambiamenti di ID IP. Altrimenti Nmap userà la porta che usa di default per i ping TCP (80).

-sO(IP protocol scan)

IP protocol scan permette di determinare quali protocolli IP (TCP, ICMP, IGMP, ecc.) sono supportati dalle macchine target. Questo non è tecnicamente un port scan, dato che passa ciclicamente attraverso i numeri di protocollo IP piuttosto che i numeri di porta TCP o UDP. Eppure usa ancora l’opzione-p per selezionare i numeri di protocollo scansionati, riporta i risultati all’interno del normale formato della tabella delle porte e usa anche lo stesso motore di scansione sottostante come i veri metodi di scansione delle porte. Quindi è abbastanza vicino a una scansione delle porte da appartenere a questa categoria.

Oltre ad essere utile di per sé, lo scandalo dei protocolli dimostra la potenza del software open-source. Mentre l’idea fondamentale è piuttosto semplice, non avevo pensato di aggiungerla né avevo ricevuto alcuna richiesta per tale funzionalità. Poi, nell’estate del 2000, Gerhard Rieger concepì l’idea, scrisse un’eccellente patch che la implementava e la inviò alla mailing listannounce (allora chiamata nmap-hackers). ho incorporato quella patch nell’albero di Nmap e ho rilasciato una nuova versione il giorno dopo. Pochi software commerciali hanno utenti abbastanza entusiasti da progettare e contribuire ai propri miglioramenti!

La scansione del protocollo funziona in modo simile alla scansione UDP. Invece di iterare attraverso il campo del numero di porta di un pacchetto UDP, invia le intestazioni dei pacchetti IP e itera attraverso il campo del protocollo IP a otto bit. le intestazioni sono solitamente vuote, non contengono dati e nemmeno l’intestazione corretta per il protocollo richiesto. Le eccezioni sono TCP, UDP, ICMP, SCTP e IGMP. Una corretta intestazione di protocollo per questi è inclusa perché alcuni sistemi non li inviano altrimenti e perché Nmap ha già delle funzioni per crearli. Invece di osservare i messaggi ICMP portunreachable, protocol scan è alla ricerca di messaggi ICMPprotocol unreachable. Se Nmap riceve una risposta in qualsiasi protocollo dall’host di destinazione, Nmap contrassegna quel protocollo come open. Un errore di protocollo irraggiungibile ICMP (tipo 3, codice 2) fa sì che il protocollo sia contrassegnato come closed mentre la porta irraggiungibile (tipo 3, codice 3) contrassegna il protocollo open. Altri errori ICMP unreachable (tipo 3, codice0, 1, 9, 10, o 13) causano che il protocollo sia marcatofiltered (anche se provano che ICMP èopen allo stesso tempo). Se non si riceve alcuna risposta dopo le ritrasmissioni, il protocollo è marcatoopen|filtered

-b <FTP relay host>(FTP bounce scan)

Un’interessante caratteristica del protocollo FTP (RFC 959) issupporta le cosiddette connessioni FTP proxy. Questo permette a un utente di connettersi a un server FTP, poi chiedere che i file siano inviati a un server di terze parti. Una tale caratteristica è matura per l’abuso su molti livelli, così la maggior parte dei server ha cessato di supportarla. Uno degli abusi che questa caratteristica permette è far sì che il server FTP faccia il port scan di altri host: basta chiedere al server FTP di inviare un file a ogni porta interessante dell’host di destinazione a turno. Il messaggio di errore descriverà se la porta è aperta o no. Questo è un buon modo per bypassare i firewall perché i server FTP delle organizzazioni sono spesso posizionati dove hanno più accesso ad altri host interni di qualsiasi vecchio host Internet. Nmap supporta la scansione FTPbounce con l’opzione -b. Prende un argomento della forma<username>:<password>@<server>:<port>.<Server> è il nome o l’indirizzo IP di un server FTP vulnerabile. Come per un normale URL, si può omettere<username>:<password>, nel qual caso vengono usate credenziali di accesso anonime (utente:anonymous password:-wwwuser@). Anche il numero di porta (e i due punti precedenti) possono essere omessi, nel qual caso viene usata la porta FTP predefinita (21) su<server>.

Questa vulnerabilità era diffusa nel 1997 quando Nmap fu rilasciata, ma è stata in gran parte risolta. I server vulnerabili sono ancora in giro, quindi vale la pena provare quando tutto il resto fallisce. Se bypassare un firewall è il vostro obiettivo, scansionate la rete di destinazione per la porta 21 (o anche per qualsiasi servizio FTP se scansionate tutte le porte con versiondetection) e usate lo scriptftp-bounceNSE. Nmap vi dirà se l’host è vulnerabile o no. Se state solo cercando di coprire le vostre tracce, non avete bisogno di (e, in effetti, non dovreste) limitarvi agli host della rete di destinazione. Prima di andare a cercare indirizzi Internet a caso per server FTP vulnerabili, considerate che i responsabili del sistema potrebbero non apprezzare che abusiate dei loro server in questo modo.

admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg