title: Packet injection
text: # Packet injection
  
  Nelle reti di computer, il packet injection è un processo con il quale si vuole interferire in una connessione di rete stabilita tra 2 utenti, costruendo ed iniettando pacchetti che appaiano come se fossero parte del normale flusso di dati. Questo metodo di "iniezione dei pacchetti" consente ad un'ignota terza parte di sabotare e/o intercettare pacchetti tra le 2 parti legittamente in comunicazione tra loro; ciò può comportare un degrado e/o un impedimento nell'utilizzo di alcuni servizi o protocolli di rete. Il packet injection è comunemente usato in attacchi man in the middle e denial of service.
  
  ## Potenzialità
  
  Utilizzando i raw socket, le chiamate di funzione NDIS o l'accesso diretto ad un driver in modalità kernel mode di una scheda di rete, si possono costruire ed iniettare pacchetti arbitrari in una rete di computer. Essi possono essere realizzati per qualsiasi tipo di protocollo di comunicazione (ICMP, TCP, UDP, ecc.), essendoci pieno controllo sull'header del pacchetto mentre viene assemblato.
  
  ## Procedura generale
  
  * Creare un raw socket
  * Creare un header Ethernet in memoria
  * Creare un header IP in memoria
  * Creare un header TCP o UDP in memoria
  * Creare i dati da iniettare in memoria
  * Concatenare gli header e i dati insieme per formare il pacchetto da iniettare
  * Calcolare correttamente l'IP e il checksum del pacchetto TCP o UDP
  * Inviare il pacchetto al raw socket
  
  ## Impieghi
  
  Il packet injection viene usato per:
  
  * Disturbare alcuni servizi (file sharing o HTTP) attraverso ISP e WAP;
  * Compromettere i WAP ed aggirare i loro sistemi di sicurezza;
  * Sfruttura alcune funzionalità nei giochi online;
  * Determinare la presenza della censura di Internet;
  * Consentire ai costruttori di pacchetti personalizzati di testare i loro pacchetti inserendoli direttamente in rete;
  * Simulare specifici traffici e scenari di rete;
  * Testare i firewall e gli IDS;
  * Controllare le reti di computer e risolverne i problemi correlati.
  
  ## Rilevamento
  
  Tramite l'esecuzione di un'attività di sniffing su entrambi gli access point in comunicazione tra loro, è possibile compararne i risultati per verificare la presenza di un packet injection. Se A non ha alcuna registrazione sull'invio di alcuni pacchetti che invece compaiono nel log di B (e viceversa), allora tale inconsistenza dimostra che i pacchetti in questione sono stati creati ed iniettati da un access point intermedio. Solitamente, per disturbare la comunicazione, vengono compiuti degli attacchi "TCP reset" spedendo un flag RST ad entrambi gli access point in comunicazione.
  
  ## Software
  
  * lorcon, parte di Airpwn
  * KisMAC
  * pcap
  * Winsock
  * CommView for WiFi Packet Generator
  * Scapy
  * Kali Linux (successore di BackTrack)
  * NetHunter (Kali Linux per Android)
  