2012-10-18 11 views
9

Sto lavorando a un framework di test del sito Web e mi piacerebbe essere in grado di spoofare l'ip dell'utente. Ho letto, quel software come Loadrunner può farlo, e mi piacerebbe poterlo fare anche io.Come falsificare un indirizzo IP usando un socket?

Un tutorial su come utilizzare una presa normalmente può essere trovato here, ma io se voglio spoofare l'ip, dovrò in qualche modo modificare l'intestazione IP. Questo è fatto a livello di socket, o c'è un altro livello più profondo in .Net, che mi permetterebbe di fare questo?

risposta

9

Non si può più, come l'accesso ai raw socket è stato limitato nelle versioni desktop di Windows:

In Windows 7, Windows Vista, Windows XP con Service Pack 2 (SP2) e Windows XP con Service Pack 3 (SP3), la possibilità di inviare traffico su socket non elaborati è stata limitata in diversi modi:

  • I dati TCP non possono essere inviati su socket non elaborati.
  • I datagrammi UDP con un indirizzo di origine non valido non possono essere inviati su socket non elaborati. L'indirizzo di origine IP per qualsiasi datagramma UDP in uscita deve esistere su un'interfaccia di rete o il datagramma viene eliminato. Questa modifica è stata apportata per limitare la capacità del codice dannoso di creare attacchi denial-of-service distribuiti e limitare la possibilità di inviare pacchetti contraffatti (pacchetti TCP/IP con un indirizzo IP di origine contraffatto).
  • Una chiamata alla funzione bind con una socket non elaborata per il protocollo IPPROTO_TCP non è consentita.
    Nota La funzione bind con un raw socket è consentita per altri protocolli (IPPROTO_IP, IPPROTO_UDP o IPPROTO_SCTP, per esempio).

(da Dev Center - Desktop - TCP/IP Raw Sockets)

È possibile creare un raw socket abbastanza facilmente:

Socket s = new Socket(ip.AddressFamily, SocketType.Raw, ProtocolType.Ip); 

a quel punto la sua su di voi per costruire il datagramma appropriata (che sarebbe una questione a sé stante se non si dispone della documentazione su come farlo a mano)

+0

significa che l'accesso ai socket non elaborati è abilitato sulle versioni server di Windows? –

+2

Sì, solo le versioni server consentiranno di falsificare l'origine dei pacchetti (poiché i server potrebbero doverlo fare a scopo di routing) – PhonicUK

+0

Puoi fornire un esempio che funzioni sul server Windows 2008? –

1

LoadRunner può falsificare gli indirizzi IP solo quando l'indirizzo IP effettivo s esiste sul Load Generator. Quindi, se ho 200 indirizzi IP assegnati al mio host, allora posso distribuire il mio carico attraverso questi indirizzi IP invece di avere il routing di costo minimo o interfacce di rete primarie vs secondarie che entrano in gioco nel sistema operativo. Questo è vero non solo per LoadRunner ma anche per altri strumenti di test delle prestazioni delle applicazioni che falsificano, l'indirizzo deve essere assegnato all'host che genera il carico.

Se siete alla ricerca di soluzioni di spoofing prime in cui non deve essere assegnato l'indirizzo IP per l'host per scopi di test allora si potrebbe considerare di rete strumenti di test delle prestazioni, in particolare le soluzioni basate su chassis, da aziende come Spirent e Ixia. Queste soluzioni di rete possono anche generare decine di migliaia di indirizzi MAC fasulli unici da utilizzare con gli indirizzi IP fasulli, se necessario.

Problemi correlati