Metodi diversi per effettuare un Network Scanning | Cerca per titolo, autore, parola chiave | ||||||||
Metodi diversi per effettuare un Network Scanning In questo articolo entrerò nel dettaglio di un Network Scanning, in modo da poter capire a fondo come funziona e come effettuare uno scan specifico. Per comprendere bene l'articolo, è necessario ricordare alcuni fondamenti del protocollo TCP. TCP ( Transfer Control Protocol ) è il protocollo che gestisce le comunicazioni tra un host e l'altro, mettendo in atto una serie di strategie che rendano quelle comunicazioni affidabili. Affinchè una comunicazione possa essere considerata affidabile, TCP tiene traccia di tutti i pacchetti di dati inviati, si preoccupa di verificare che ogni singolo pacchetto di dati sia arrivato a destinazione, che vi sia arrivato integro, reinviandolo, nel caso non fosse stato consegnato, e che il computer di destinazione sia in grado di riassemblare tutti i pacchetti di dati ricevuti, nello stesso ordine in cui erano stati inviati. TCP prende in consegna i dati da spedire dall'applicazione utente, li impacchetta in un datagramma e consegna il suo datagramma, completo di header ( intestazioni ) e dati dell'applicazione, al protocollo di livello inferiore, che si occuperà del trasporto vero e proprio: il protocollo IP. I molti campi presenti nell'header TCP rispecchiano la complessità e la vastità dei compiti assegnati a questo protocollo. I campi di maggior rilevanza per il nostro argomento presenti in un header TCP sono i seguenti: Porta di origine TCP, 16 bit. All'interno del protocollo TCP, una porta è un semplice numero che identifica l'applicazione che ha inviato i dati da trasmettere al protocollo TCP. TCP ha bisogno di poter idenficare, in modo univoco, quell'applicazione, nel caso ricevesse una qualche risposta da parte del computer di destinazione. Pensate a quando aprite più finestre del vostro browser. Per ogni chiamata al server internet, TCP assegnerà un numero di porta distinto a ciascuna finestra del browser. Porta di destinazione TCP, 16 bit. Numero di sequenza TCP, 32 bit. Per ogni byte di dati inviato da un computer, utilizzando TCP, viene incrementato di uno un contatore, utilizzato da TCP per tenere traccia di tutti i pacchetti di dati inviati. Il numero di sequenza di partenza ( Initial Sequence Number, o ISN ) viene stabilito in fase di sincronizzazione tra i due computer coinvolti nella sessione di trasmissione, con l'invio, da parte di entrambi gli host, di un datagramnma di sincronizzazione ( SYN ). Numero di ricevuta TCP, 32 bit. ACK ( ACKnowledge ) number. Se il computer mittente mantiene un contatore che incrementa di uno per ogni pacchetto di dati inviato, il computer di destinazione, per ogni pacchetto di dati ricevuto, invia un messaggio di avvenuta ricezione al computer mittente, inviando un numero di ricevuta, che è pari all'ultimo numero di sequenza ricevuto dal computer mittente. E' come se il computer di destinazione dicesse al computer mittente: ho ricevuto i tuoi pacchetti di dati, fino a questo numero di sequenza. FLAG, 8 bit. Bit di controllo: quando attivo, un bit segnala il tipo di datagramma corrente: SYN (datagramma di sincronizzazione, usato per inizializzare un circuito), FIN, PUSH, RST (Reset), URG, ACK. Il computer che desidera connettersi con un altro computer, invia un datagramma SYN ( S ), dicendo: "Io desidero connettermi con te". Il computer di destinazione risponde con un analogo datagramma SYN, con il quale accetta la connessione e conferma ( ACK ) la ricezione del precedente datagramma SYN ( S. ). Il computer di origine, a questo punto, invia un datagramma ACK ( . ) al computer di destinazione, solo per confermare la ricezione del suo datagramma SYN. All'arrivo di questo terzo datagramma, la connessione è stabilita. Questo processo si chiama Handshake a tre vie. In questa fase, un messaggio di tipo SYN comunica, alla controparte, alcuni importanti parametri, da rispettare, nel corso della transazione. Tra questi parametri, troviamo: MSS ( Maximum Segment Size ), la massima quantità di dati, esclusi gli header TCP, che un datagramma ( segmento ) potrà contenere ( i due computer potranno negoziare valori diversi di MSS ) ed il numero iniziale della sequenza TCP ( ciascuno dei due computer invierà un proprio numero iniziale di sequenza ). Il numero iniziale di sequenza ( Initial Sequence Number o ISN ) è il numero con il quale ciascuno dei due computer invierà il primo pacchetto di dati all'altro computer. Per ciascun pacchetto di dati inviato successivamente, tale numero verrà incrementato di uno, per ciascun byte di dati inviato. Ciascun datagramma, quindi, sarà composto da più byte di dati e sarà contrassegnato da un numero di sequenza iniziale ed un numero di sequenza finale. Il numero di sequenza finale non è mai compreso nel datagramma corrente, ma rappresenta il numero di sequenza iniziale del datagramma successivo. Il numero di sequenza iniziale di ciascun datagramma inviato successivamente al primo sarà, quindi, pari al numero di sequenza finale del datagramma precedente.
|
|||||||||
Metodi diversi per effettuare un Network Scanning | Disclaimer: questo è un link a contenuti ospitati su server esterni. |