Penso che il miglior esempio per il dirottamento di sessioni TCP sia l'attacco di Kevin Mitnick, che è spiegato molto bene su questa pagina . L'idea è che indovini il numero di sequenza di un pacchetto. Tuttavia, al giorno d'oggi questo attacco non è pratico perché la maggior parte dei sistemi operativi randomizza questo numero, rendendo difficile la previsione.
Per gli attacchi Man-in-the-Middle d'altra parte, hai una vasta gamma di opzioni. Per prima cosa devi entrare tra i due nodi. Questo può essere davvero semplice quando si possiede uno dei nodi che instradano il proprio traffico, come un punto di accesso wireless.
Ma puoi anche usare attacchi come lo spoofing ARP che hai menzionato. Altri protocolli di routing consentono anche tale comportamento, come BGP. Poi ci sono altri attacchi indiretti come l'avvelenamento della cache DNS.
Una volta che hai il controllo del traffico dati, puoi annusare passivamente il traffico. Penso che troverai scapy un bel modulo Python per cose come questa. È piuttosto potente e può essere utilizzato per tutti i tipi di attacchi di rete.
È possibile eseguire altri sniffing passivi con libpcap . pcapy è un modulo Python che si interfaccia con questa libreria. Puoi anche usare Wireshark solo se vuoi dare una rapida occhiata al traffico.
La modifica del traffico tra i nodi è più difficile. Un modo per farlo è indirizzare tutto il traffico verso una determinata porta. Per l'esempio di app di chat, diciamo che instradi il traffico in ingresso dalla porta 12221 a localhost: 1337 usando iptables. Ora si esegue un server sulla porta 1337 che cattura tutto questo traffico, annusa i pacchetti, li modifica e li invia alla porta 12221 nell'host corretto.
Se vuoi esercitarti a guardare il traffico da un altro dispositivo, puoi installare uno strumento come Burp e impostare un proxy su un dispositivo come il tuo telefono. Vedrai il tuo traffico HTTP e sarai in grado di modificarlo. Ma con i siti Web TLS (HTTPS) riceverai un avviso di certificato, perché questi strumenti generano un certificato TLS falso al volo. Se vuoi approfondire questo argomento, ti consiglio di mitmproxy , perché è open source e ha una bella API Python. Inoltre, puoi consultare bettercap .