Un primer sulla comunicazione di rete
Abbiamo sempre sentito dire che per eseguire test di penetrazione, un pentester deve essere consapevole dei concetti di rete di base come indirizzi IP, sottoreti di classe, sottoreti senza classi, porte e reti di trasmissione. La prima ragione è che le attività come quali host sono attivi nell'ambito approvato e quali servizi, porte e funzionalità hanno aperti e reattivi determineranno il tipo di attività che un valutatore eseguirà nei test di penetrazione. L'ambiente continua a cambiare e i sistemi vengono spesso riallocati. Quindi, è del tutto possibile che vecchie vulnerabilità possano ripresentarsi e senza la buona conoscenza della scansione di una rete, può accadere che le scansioni iniziali debbano essere rifatte. Nelle nostre sezioni successive, discuteremo le basi della comunicazione di rete.
Modello di riferimento
Il modello di riferimento offre un mezzo di standardizzazione, che è accettabile in tutto il mondo poiché le persone che utilizzano la rete di computer si trovano su un ampio raggio fisico ei loro dispositivi di rete potrebbero avere un'architettura eterogenea. Per fornire la comunicazione tra dispositivi eterogenei, abbiamo bisogno di un modello standardizzato, cioè un modello di riferimento, che ci fornisca un modo in cui questi dispositivi possono comunicare.
Abbiamo due modelli di riferimento come il modello OSI e il modello di riferimento TCP / IP. Tuttavia, il modello OSI è ipotetico, ma il TCP / IP è un modello pratico.
Modello OSI
L'interfaccia del sistema aperto è stata progettata dall'organizzazione internazionale di standardizzazione (ISO) e, pertanto, è indicata anche come modello ISO-OSI.
Il modello OSI è costituito da sette livelli come mostrato nel diagramma seguente. Ogni livello ha una funzione specifica, tuttavia ogni livello fornisce servizi al livello superiore.
Livello fisico
Il livello fisico è responsabile delle seguenti attività:
Attivazione, mantenimento e disattivazione della connessione fisica.
Definizione di tensioni e velocità dati necessarie per la trasmissione.
Conversione di bit digitali in segnale elettrico.
Decidere se la connessione è simplex, half-duplex o full-duplex.
Livello di collegamento dati
Il livello di collegamento dati esegue le seguenti funzioni:
Esegue la sincronizzazione e il controllo degli errori per le informazioni che devono essere trasmesse tramite il collegamento fisico.
Abilita il rilevamento degli errori e aggiunge bit di rilevamento degli errori ai dati che devono essere trasmessi.
Livello di rete
Il livello di rete svolge le seguenti funzioni:
Per indirizzare i segnali attraverso vari canali all'altra estremità.
Agire come controller di rete decidendo quale percorso devono prendere i dati.
Per dividere i messaggi in uscita in pacchetti e per assemblare i pacchetti in arrivo in messaggi per livelli superiori.
Livello di trasporto
Il livello di trasporto svolge le seguenti funzioni:
Decide se la trasmissione dei dati debba avvenire su percorsi paralleli o percorso unico.
Esegue multiplexing, suddivisione sui dati.
Suddividi i gruppi di dati in unità più piccole in modo che vengano gestiti in modo più efficiente dal livello di rete.
Il Transport Layer garantisce la trasmissione dei dati da un'estremità all'altra.
Livello di sessione
Il livello di sessione esegue le seguenti funzioni:
Gestisce i messaggi e sincronizza le conversazioni tra due diverse applicazioni.
Controlla l'accesso e lo scollegamento, l'identificazione dell'utente, la fatturazione e la gestione delle sessioni.
Livello di presentazione
Il livello Presentazione svolge le seguenti funzioni:
Questo livello garantisce che le informazioni vengano fornite in una forma tale che il sistema ricevente le comprenda e le utilizzi.
Livello applicazione
Il livello Applicazione svolge le seguenti funzioni:
Fornisce diversi servizi come la manipolazione delle informazioni in diversi modi, il ritrasferimento dei file di informazioni, la distribuzione dei risultati, ecc.
Le funzioni come LOGIN o il controllo della password vengono eseguite anche dal livello dell'applicazione.
Modello TCP / IP
Il modello TCP / IP (Transmission Control Protocol and Internet Protocol) è un modello pratico e viene utilizzato in Internet.
Il modello TCP / IP combina i due livelli (livello fisico e livello di collegamento dati) in un unico livello: livello Host-to-Network. Il diagramma seguente mostra i vari livelli del modello TCP / IP:
Livello applicazione
Questo livello è uguale a quello del modello OSI e svolge le seguenti funzioni:
Fornisce diversi servizi come la manipolazione delle informazioni in diversi modi, il ritrasferimento dei file di informazioni, la distribuzione dei risultati, ecc.
Il livello dell'applicazione esegue anche funzioni come LOGIN o controllo della password.
Di seguito sono riportati i diversi protocolli utilizzati nel livello Applicazione:
- TELNET
- FTP
- SMTP
- DN
- HTTP
- NNTP
Livello di trasporto
Svolge le stesse funzioni del livello di trasporto nel modello OSI. Considera i seguenti punti importanti relativi al livello di trasporto:
Utilizza il protocollo TCP e UDP per la trasmissione end-to-end.
TCP è un protocollo affidabile e orientato alla connessione.
TCP gestisce anche il controllo del flusso.
L'UDP non è affidabile e un protocollo senza connessione non esegue il controllo del flusso.
I protocolli TCP / IP e UDP vengono utilizzati in questo livello.
Livello Internet
La funzione di questo livello è quella di consentire all'host di inserire i pacchetti nella rete e poi farli viaggiare indipendentemente verso la destinazione. Tuttavia, l'ordine di ricezione del pacchetto può essere diverso dalla sequenza in cui sono stati inviati.
Il protocollo Internet (IP) viene utilizzato nel livello Internet.
Livello host-rete
Questo è il livello più basso nel modello TCP / IP. L'host deve connettersi alla rete utilizzando un protocollo, in modo da poter inviare pacchetti IP su di esso. Questo protocollo varia da host a host e da rete a rete.
I diversi protocolli utilizzati in questo livello sono:
- ARPANET
- SATNET
- LAN
- Packet radio
Architettura utile
Di seguito sono riportate alcune architetture utili, utilizzate nella comunicazione di rete:
L'architettura del frame Ethernet
Un ingegnere di nome Robert Metcalfe ha inventato per la prima volta la rete Ethernet, definita secondo lo standard IEEE 802.3, nel 1973. È stata utilizzata per la prima volta per interconnettere e inviare dati tra la workstation e la stampante. Più dell'80% delle LAN utilizza lo standard Ethernet per la sua velocità, i costi inferiori e la facilità di installazione. D'altra parte, se parliamo di frame, i dati viaggiano da host a host lungo il percorso. Un frame è costituito da vari componenti come indirizzo MAC, intestazione IP, delimitatore di inizio e fine, ecc.
Il frame Ethernet inizia con Preamble e SFD. L'intestazione Ethernet contiene sia l'indirizzo MAC di origine che quello di destinazione, dopodiché è presente il carico utile del frame. L'ultimo campo è CRC, utilizzato per rilevare l'errore. La struttura del frame Ethernet di base è definita nello standard IEEE 802.3, spiegato come di seguito:
Il formato frame Ethernet (IEEE 802.3)
Il pacchetto Ethernet trasporta un frame Ethernet come payload. Di seguito è riportata una rappresentazione grafica del frame Ethernet insieme alla descrizione di ciascun campo:
Nome campo | Preambolo | SFD (inizio del delimitatore di frame) | MAC di destinazione | Fonte MAC | genere | Dati | CRC |
---|---|---|---|---|---|---|---|
Dimensioni (in byte) | 7 | 1 | 6 | 6 | 2 | 46-1500 | 4 |
Preambolo
Un frame Ethernet è preceduto da un preambolo, 7 byte di dimensione, che informa il sistema ricevente che un frame sta iniziando e consente al mittente e al destinatario di stabilire la sincronizzazione dei bit.
SFD (inizio del delimitatore di frame)
Questo è un campo da 1 byte utilizzato per indicare che il campo dell'indirizzo MAC di destinazione inizia con il byte successivo. A volte il campo SFD è considerato parte di Preambolo. Questo è il motivo per cui il preambolo è considerato 8 byte in molti punti.
Destination MAC - Questo è un campo di 6 byte in cui abbiamo l'indirizzo del sistema ricevente.
Source MAC - Questo è un campo di 6 byte in cui abbiamo l'indirizzo del sistema di invio.
Type- Definisce il tipo di protocollo all'interno del frame. Ad esempio, IPv4 o IPv6. La sua dimensione è di 2 byte.
Data- Questo è anche chiamato Payload e i dati effettivi vengono inseriti qui. La sua lunghezza deve essere compresa tra 46-1500 byte. Se la lunghezza è inferiore a 46 byte, vengono aggiunti gli 0 di riempimento per soddisfare la lunghezza minima possibile, ovvero 46.
CRC (Cyclic Redundancy Check) - Questo è un campo a 4 byte contenente CRC a 32 bit, che consente il rilevamento di dati danneggiati.
Formato frame Ethernet esteso (frame Ethernet II)
Di seguito è riportata una rappresentazione grafica del frame Ethernet esteso utilizzando il quale possiamo ottenere un Payload maggiore di 1500 byte -
Nome campo | MAC di destinazione | Fonte MAC | genere | DSAP | SSAP | Ctrl | Dati | CRC |
---|---|---|---|---|---|---|---|---|
Dimensioni (in byte) | 6 | 6 | 2 | 1 | 1 | 1 | > 46 | 4 |
La descrizione dei campi, che sono diversi dal frame Ethernet IEEE 802.3, è la seguente:
DSAP (Destination Service Access Point)
DSAP è un campo lungo 1 byte che rappresenta gli indirizzi logici dell'entità del livello di rete destinata a ricevere il messaggio.
SSAP (punto di accesso al servizio di origine)
SSAP è un campo lungo 1 byte che rappresenta l'indirizzo logico dell'entità del livello di rete che ha creato il messaggio.
Ctrl
Questo è un campo di controllo da 1 byte.
L'architettura del pacchetto IP
Il protocollo Internet è uno dei principali protocolli nella suite di protocolli TCP / IP. Questo protocollo funziona a livello di rete del modello OSI e a livello di Internet del modello TCP / IP. Pertanto, questo protocollo ha la responsabilità di identificare gli host in base ai loro indirizzi logici e di instradare i dati tra di loro sulla rete sottostante. L'IP fornisce un meccanismo per identificare in modo univoco gli host tramite uno schema di indirizzamento IP. IP utilizza la consegna del massimo sforzo, ovvero non garantisce che i pacchetti vengano consegnati all'host di destinazione, ma farà del suo meglio per raggiungere la destinazione.
Nelle nostre sezioni successive, impareremo a conoscere le due diverse versioni di IP.
IPv4
Questa è la versione 4 del protocollo Internet, che utilizza un indirizzo logico a 32 bit. Di seguito è riportato il diagramma dell'intestazione IPv4 insieme alla descrizione dei campi:
Versione
Questa è la versione del protocollo Internet utilizzato; ad esempio, IPv4.
IHL
Lunghezza intestazione Internet; lunghezza dell'intera intestazione IP.
DSCP
Code Point Servizi differenziati; questo è il tipo di servizio.
ECN
Notifica esplicita della congestione; trasporta le informazioni sulla congestione osservata nel percorso.
Lunghezza totale
La lunghezza dell'intero pacchetto IP (inclusi header IP e payload IP).
Identificazione
Se il pacchetto IP viene frammentato durante la trasmissione, tutti i frammenti contengono lo stesso numero di identificazione.
Bandiere
Come richiesto dalle risorse di rete, se il pacchetto IP è troppo grande per essere gestito, questi "flag" indicano se possono essere frammentati o meno. In questo flag a 3 bit, l'MSB è sempre impostato su "0".
Frammento offset
Questo offset indica la posizione esatta del frammento nel pacchetto IP originale.
Tempo di vivere
Per evitare loop nella rete, ogni pacchetto viene inviato con un valore TTL impostato, che indica alla rete quanti router (hop) questo pacchetto può attraversare. Ad ogni salto, il suo valore viene decrementato di uno e quando il valore raggiunge lo zero, il pacchetto viene scartato.
Protocollo
Indica al livello di rete dell'host di destinazione, a quale protocollo appartiene questo pacchetto, ovvero il protocollo di livello successivo. Ad esempio, il numero di protocollo di ICMP è 1, TCP è 6 e UDP è 17.
Checksum intestazione
Questo campo viene utilizzato per mantenere il valore di checksum dell'intera intestazione, che viene quindi utilizzato per verificare se il pacchetto viene ricevuto senza errori.
Indirizzo di partenza
Indirizzo a 32 bit del mittente (o sorgente) del pacchetto.
Indirizzo di destinazione
Indirizzo a 32 bit del destinatario (o destinazione) del pacchetto.
Opzioni
Questo è un campo facoltativo, che viene utilizzato se il valore di IHL è maggiore di 5. Queste opzioni possono contenere valori per opzioni come Sicurezza, Registra percorso, Timestamp, ecc.
Se vuoi studiare IPv4 in dettaglio, fai riferimento a questo link - www.tutorialspoint.com/ipv4/index.htm
IPv6
La versione 6 del protocollo Internet è il protocollo di comunicazione più recente, che come il suo predecessore IPv4 funziona sul livello di rete (livello 3). Insieme alla sua offerta di un'enorme quantità di spazio di indirizzi logici, questo protocollo ha ampie funzionalità che risolvono il difetto di IPv4. Di seguito è riportato il diagramma dell'intestazione IPv4 insieme alla descrizione dei campi:
Versione (4 bit)
Rappresenta la versione del protocollo Internet - 0110.
Classe di traffico (8 bit)
Questi 8 bit sono divisi in due parti. I 6 bit più significativi vengono utilizzati per il tipo di servizio per indicare al router quali servizi dovrebbero essere forniti a questo pacchetto. I 2 bit meno significativi vengono utilizzati per la notifica di congestione esplicita (ECN).
Etichetta flusso (20 bit)
Questa etichetta viene utilizzata per mantenere il flusso sequenziale dei pacchetti appartenenti a una comunicazione. La sorgente etichetta la sequenza per aiutare il router a identificare che un particolare pacchetto appartiene a uno specifico flusso di informazioni. Questo campo aiuta a evitare il riordino dei pacchetti di dati. È progettato per lo streaming / media in tempo reale.
Lunghezza payload (16 bit)
Questo campo viene utilizzato per indicare ai router quante informazioni contiene un particolare pacchetto nel suo payload. Il carico utile è composto da intestazioni di estensione e dati di livello superiore. Con 16 bit si possono indicare fino a 65535 byte; ma se le intestazioni di estensione contengono un'intestazione di estensione hop-by-hop, il carico utile può superare i 65535 byte e questo campo è impostato su 0.
Intestazione successiva (8 bit)
O questo campo viene utilizzato per indicare il tipo di Extension Header oppure, se non è presente Extension Header, indica l'Upper Layer PDU. I valori per il tipo di PDU di livello superiore sono gli stessi di IPv4.
Hop Limit (8 bit)
Questo campo viene utilizzato per interrompere il ciclo continuo del pacchetto nella rete. Questo è lo stesso di TTL in IPv4. Il valore del campo Hop Limit viene decrementato di 1 quando passa un collegamento (router / hop). Quando il campo raggiunge 0, il pacchetto viene scartato.
Indirizzo sorgente (128 bit)
Questo campo indica l'indirizzo di origine del pacchetto.
Indirizzo di destinazione (128 bit)
Questo campo fornisce l'indirizzo del destinatario previsto del pacchetto.
Se vuoi studiare IPv6 in dettaglio, fai riferimento a questo link - www.tutorialspoint.com/ipv6/index.htm
Architettura dell'intestazione TCP (Transmission Control Protocol)
Come sappiamo, il TCP è un protocollo orientato alla connessione, in cui viene stabilita una sessione tra due sistemi prima di iniziare la comunicazione. La connessione verrebbe chiusa una volta completata la comunicazione. TCP utilizza una tecnica di handshake a tre vie per stabilire il socket di connessione tra due sistemi. L'handshake a tre vie significa che tre messaggi - SYN, SYN-ACK e ACK, vengono inviati avanti e indietro tra due sistemi. Le fasi di lavoro tra due sistemi, sistema iniziale e sistema di destinazione, sono le seguenti:
Step 1 − Packet with SYN flag set
Prima di tutto il sistema che sta tentando di avviare una connessione inizia con un pacchetto con il flag SYN impostato.
Step 2 − Packet with SYN-ACK flag set
Ora, in questa fase, il sistema di destinazione restituisce un pacchetto con i set di flag SYN e ACK.
Step 3 − Packet with ACK flag set
Alla fine, il sistema di avvio restituirà un pacchetto al sistema di destinazione originale con il flag ACK impostato.
Di seguito è riportato il diagramma dell'intestazione TCP insieme alla descrizione dei campi:
Porta sorgente (16 bit)
Identifica la porta di origine del processo di applicazione sul dispositivo di invio.
Porta di destinazione (16 bit)
Identifica la porta di destinazione del processo di applicazione sul dispositivo ricevente.
Numero di sequenza (32 bit)
Il numero di sequenza di byte di dati di un segmento in una sessione.
Numero di riconoscimento (32 bit)
Quando il flag ACK è impostato, questo numero contiene il numero di sequenza successivo del byte di dati previsto e funziona come riconoscimento dei dati ricevuti in precedenza.
Offset dati (4 bit)
Questo campo implica sia la dimensione dell'intestazione TCP (parole a 32 bit) sia l'offset dei dati nel pacchetto corrente nell'intero segmento TCP.
Riservato (3 bit)
Riservato per uso futuro e impostato su zero per impostazione predefinita.
Flag (1 bit ciascuno)
NS - Il processo di segnalazione della notifica di congestione esplicita utilizza questo bit Nonce Sum.
CWR - Quando un host riceve un pacchetto con il bit ECE impostato, imposta Congestion Windows Reduced per riconoscere che ECE ha ricevuto.
ECE - Ha due significati -
Se il bit SYN è chiaro a 0, ECE significa che il pacchetto IP ha il bit CE (esperienza di congestione) impostato.
Se il bit SYN è impostato su 1, ECE significa che il dispositivo è compatibile con ECT.
URG - Indica che il campo Puntatore urgente contiene dati significativi e deve essere elaborato.
ACK- Indica che il campo di riconoscimento ha un significato. Se ACK è azzerato, indica che il pacchetto non contiene alcun riconoscimento.
PSH - Quando è impostato, è una richiesta alla stazione ricevente per PUSH dati (non appena arrivano) all'applicazione ricevente senza buffering.
RST - Reset flag ha le seguenti caratteristiche:
Viene utilizzato per rifiutare una connessione in entrata.
Viene utilizzato per rifiutare un segmento.
Viene utilizzato per riavviare una connessione.
SYN - Questo flag viene utilizzato per impostare una connessione tra host.
FIN- Questo flag viene utilizzato per rilasciare una connessione e in seguito non vengono più scambiati dati. Poiché i pacchetti con flag SYN e FIN hanno numeri di sequenza, vengono elaborati nell'ordine corretto.
Dimensioni di Windows
Questo campo viene utilizzato per il controllo del flusso tra due stazioni e indica la quantità di buffer (in byte) che il ricevitore ha allocato per un segmento, ovvero la quantità di dati che il ricevitore si aspetta.
Checksum - Questo campo contiene il checksum di intestazione, dati e pseudo intestazioni.
Urgent Pointer - Punta al byte di dati urgenti se il flag URG è impostato a 1.
Options- Facilita le opzioni aggiuntive, che non sono coperte dalla normale intestazione. Il campo opzione è sempre descritto in parole a 32 bit. Se questo campo contiene dati inferiori a 32 bit, il riempimento viene utilizzato per coprire i bit rimanenti per raggiungere il limite di 32 bit.
Se vuoi studiare il TCP in dettaglio, fai riferimento a questo link - https://www.tutorialspoint.com/data_communication_computer_network/transmission_control_protocol.htm
L'architettura dell'intestazione UDP (User Datagram Protocol)
UDP è un semplice protocollo senza connessione a differenza di TCP, un protocollo orientato alla connessione. Implica una quantità minima di meccanismo di comunicazione. In UDP, il destinatario non genera un riconoscimento del pacchetto ricevuto e, a sua volta, il mittente non attende alcun riconoscimento del pacchetto inviato. Questa lacuna rende questo protocollo inaffidabile e più facile da elaborare. Di seguito è riportato il diagramma dell'intestazione UDP insieme alla descrizione dei campi:
Porta di origine
Queste informazioni a 16 bit vengono utilizzate per identificare la porta di origine del pacchetto.
Porto di destinazione
Queste informazioni a 16 bit vengono utilizzate per identificare il servizio a livello di applicazione sulla macchina di destinazione.
Lunghezza
Il campo della lunghezza specifica l'intera lunghezza del pacchetto UDP (inclusa l'intestazione). È un campo a 16 bit e il valore minimo è 8 byte, ovvero la dimensione dell'intestazione UDP stessa.
Checksum
Questo campo memorizza il valore di checksum generato dal mittente prima dell'invio. IPv4 ha questo campo come opzionale, quindi quando il campo checksum non contiene alcun valore, viene impostato a 0 e tutti i suoi bit sono impostati a zero.
Per studiare il protocollo TCP in dettaglio, fare riferimento a questo collegamento - User Datagram Protocol