Intercetta connessioni invece di inoltro (utilizzando arpspoof)

1

Sto facendo esperimenti con Spoof ARP con arpspoof e ho installato con successo un uomo nel mezzo tra due macchine.

Configuriamo l'inoltro IP usando:

echo 1 > /proc/sys/net/ipv4/ip_forward

Questo ci consente di analizzare le comunicazioni usando, per esempio, Wireshark. In teoria, dovremmo essere in grado di modificare anche il traffico. Sono a conoscenza di strumenti come Ettercap e SSLstrip, ma come impersonerei manualmente il server di destinazione?

Per riformulare la domanda: il client A sta parlando al server B. L'attaccante C (che sono io) è in mezzo e attualmente sta inoltrando i pacchetti in entrambe le direzioni. In che modo C, a un livello basso, reindirizza le richieste destinate a B alla mia macchina?

Tutti i sistemi coinvolti utilizzano BackTrack.

Aggiornamento:

I miei comandi arpspoof (sulla macchina d'attacco, C):

arpspoof -i eth0 -t 8.0.0.2 8.0.0.3 # Tell 8.0.0.2 (A) that I am 8.0.0.3 (B)
arpspoof -i eth0 -t 8.0.0.3 8.0.0.2 # Tell 8.0.0.3 (B) that I am 8.0.0.2 (A)

I miei comandi netcat per il test:

nc -p 5555 -l # Run on target B, listen on port 5555
nc -p 5555 -l # Run same thing on attack machine
nc 8.0.0.3 5555 # Run on A; connect to B.

Il mio obiettivo è far sì che C ponga come B quando A esegue l'ultimo comando.

Se IP forwarding è attivo, A si connette a B. Se l'IP forwarding è disattivato, A non riesce a connettersi con: (UNKNOWN) [8.0.0.3] 5555 (?) : Connection timed out . Il problema è che il livello IP non risponde a un pacchetto significato per un altro indirizzo IP; quindi sebbene C riceva il pacchetto ad un livello più basso, non viene passato "in alto" allo stack. Il mio obiettivo è quello di ottenere questo in pila.

    
posta jtpereyda 31.01.2012 - 19:16
fonte

2 risposte

3

Si tratta di scrivere un po 'di codice, ma il meccanismo è piuttosto semplice.

Scrivi un programma che ascolta le connessioni in uscita dal tuo target. Utilizzare le tipiche tecniche di programmazione socket. Come prima, usa lo spoofing ARP per ottenere il traffico sul tuo computer e, se necessario, riscrivi DNAT se necessario, in modo che l'applicazione riconosca il traffico se la tua configurazione di rete non funziona con i pacchetti in entrata. Quindi esegui una connessione in uscita separata verso il luogo in cui il traffico stava originariamente andando. E semplicemente pappagalli il traffico da un host all'altro, monitorando e / o modificando man mano che procedi, usando SNAT se è necessario per quello che stai cercando di realizzare.

In alternativa, puoi fare un po 'di buonissimo vooooo con libnetfilter_queue . In sostanza, ciò che fai è impostare una regola iptables che invii il traffico alla% di destinazione% co_de. Quindi scrivi uno strumento userspace che riceve quei pacchetti, apporta le modifiche che desideri e poi li rimette facoltativamente nello stack di rete. Questo meccanismo è molto più elegante per certi aspetti, ma anche piuttosto di basso livello. Funziona a livello di pacchetto, quindi ad esempio tutto il magico TCP che fa per te potrebbe dover essere tenuto in conto nel tuo codice, a seconda di ciò che stai cercando di realizzare.

    
risposta data 31.01.2012 - 19:38
fonte
3

Una volta che hai intercettato la comunicazione, puoi eseguire una modifica sul testo normale nei pacchetti inviati, così puoi cambiare, ad esempio, quello che un sito web dice. Una ricerca / sostituzione usando espressioni regolari funziona a questo scopo.

Per farlo in modo efficiente, ettercap ha molti strumenti per aiutarti.

A seconda di ciò che si vuole realizzare, BeEF è un altro grande esempio, incluso in Backtrack. Ti permette di spoofare interi siti web e apportare modifiche. Ha anche alcuni strumenti di attacco client impressionanti, ma penso che non sia nella portata di ciò che si vuole fare.

    
risposta data 31.01.2012 - 19:38
fonte

Leggi altre domande sui tag