Il problema è tutto in accedere al server e ottenere un adeguato livello di privilegio .
update : e ovviamente se hai un tale accesso, puoi probabilmente prendere il controllo direttamente dal "server" o dal "client", o da entrambi, oppure accedere segretamente ai loro stessi dati all'insaputa a loro. Non c'è bisogno di un uomo nel mezzo se sei il tipo interno .
Ma dì che hai root lì ... allora, sì, puoi montare un attacco MitM anche se non puoi usare altro che l'interfaccia di loopback per qualsiasi motivo, e non puoi altrimenti interferire con operazione del client o del server.
Tutto ciò di cui hai bisogno è lo ve calhost che duplica il suo indirizzo a qualcosa di utile, e che dice alla vittima che example.com esegue la mappatura a quell'indirizzo .
Esempio pratico che utilizza un servizio che ascolto sulla porta localhost 631 - cupsd. Un server web ascolta sulla porta 80, ma tutto il resto rimane lo stesso.
netstat -napo | grep LISTEN | grep -F 127.0.0.1
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1321/cupsd off (0.00/0/0)
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1721/named off (0.00/0/0)
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1721/named off (0.00/0/0)
Ora I non può ascoltare immediatamente sulla porta scelta poiché esiste già un processo legittimo:
# netcat -l 127.0.0.1 631 &
[1] 26264
netcat: Address already in use
[1]+ Exit 1 netcat -l 127.0.0.1 631
#
Ma nulla mi impedisce di creare un'altra interfaccia di loopback (lo: 0 invece di lo) usando l'aliasing ...
# ifconfig lo:0 127.0.0.42
# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:127.0.0.42 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
e dire al sistema che example.com
è effettivamente 127.0.0.42 manipolando il file hosts (se il DNS avesse priorità, avrei modificato il suo file di zona) ...
... e ora posso ascoltare (in questo caso su una singola riga)
# netcat -l 127.0.0.42 631 &
[1] 26442
e se invio quella linea, la mia rete di ascolto riceve (e potrebbe rispondere):
# echo "Hello" | netcat 127.0.0.42 631
Hello
[1]+ Done netcat -l 127.0.0.42 631
#
Nulla ha viaggiato al di fuori dell'interfaccia di loopback ( tranne che ovviamente come sono dentro quella scatola se ha solo un'interfaccia di loopback? ), e se la connessione va a "esempio.com", il server non ha modo di sapere che la connessione viene dirottata.
Potrei provare e farlo anche senza aliasing, ma la procedura richiesta interromperà pesantemente le comunicazioni e potrebbe non funzionare sempre, o addirittura del tutto, dal momento che non posso facilmente impedire a client e server di sentirne uno un'altra.
(L'aliasing che ho fatto qui è solo una prova di concetto, e probabilmente causerebbe il caos lungo la linea - basti pensare che ora ho 127.0.0.1 e 127.0.0.42 sullo stesso "tronco" ed entrambi hanno / 8 mascheramento )