Come analizzare i pacchetti / intercettare prima che vengano inviati / ricevuti dal sistema operativo?

StackOverflow https://stackoverflow.com/questions/1457491

Domanda

Mi sono sempre chiesto come firewall software funzionano sotto le coperte, e vorrebbero essere in grado di scrivere i miei propri strumenti personalizzati per analizzare o pacchetti intercettare prima di essere inviati o ricevuti dal sistema operativo. Sono abbastanza conoscenza con i principi di networking di base; Ho solo ho idea da dove cominciare se voglio scrivere software che si inserisce all'interno stack di rete simile al modo in cui i firewall fanno. Qualcuno potrebbe darmi alcune indicazioni?

Sarei particolarmente interessato, se questo può essere realizzato utilizzando C #, ma posso fare anche altre lingue. Sto principalmente concentrando su Windows, ma vorrei sapere se ci fossero le librerie multipiattaforma là fuori pure.

Modifica Utilizzo di un driver NDIS (come fa Wireshark) suona come una buona opzione, e capacità di filtraggio dei pacchetti di Vista suono pulito, ma come lo fanno i firewall, per esempio, su Windows XP? Non hanno installare un driver speciale che io sappia.

È stato utile?

Soluzione

In Windows Vista e su, si potrebbe desiderare di guardare il Windows Filtering Platform. Nelle versioni precedenti di Windows è necessario utilizzare i driver di filtro (la pagina collegata a MSDN menzioni ciò sostituisce tecnologie PAM.)

Altri suggerimenti

Se non ricordo male si tratta di scrivere un driver NDIS. Questo si siede praticamente in cima al NIC (Network Interface Card) e si ha il controllo assoluto di ciò che accade dentro o esce dalla scheda di rete prima di ogni altra cosa -. Fino al livello di un pacchetto Ethernet

Questo non può essere realizzato con C #. Hai davvero bisogno di usare C o C ++ per questo compito.

Aggiorna : L'ultima volta fatto questo in giorni Window XP. Vedo da un'altra risposta c'è un nuovo, e dagli sguardi di esso, più semplice API se si utilizza Windows Vista in poi.

Non sono sicuro se è "prima che l'O / S", ma dare un'occhiata al WireShark e la biblioteca utilizza, libpcap .

Date un'occhiata a WinPcap - utilizza un driver NDIS per attuare le sue capacità di filtraggio dei pacchetti. Questa libreria può probabilmente fornire una base eccellente per qualsiasi programma di ispezione / firewall packet che ci si vuole scrivere, ed è open-source. Da http://www.winpcap.org/docs/docs_40_2/html/group__internals .html :

  

In primo luogo, un sistema di cattura deve   bypassare i sistemi operativi   stack di protocollo per accedere   dati grezzi che transitano sulla rete.   Ciò richiede una porzione esecuzione all'interno   il kernel del sistema operativo, interagendo direttamente   con i driver di interfaccia di rete.   Questa porzione è molto dipendente dal sistema,   e nella nostra soluzione ci si rende conto come   un driver di dispositivo, chiamato Netgroup   Filtro Packet (NPF); noi forniamo   diverse versioni del driver per   Windows 95, Windows 98, Windows ME,   Windows NT 4, Windows 2000 e Windows   XP. Questi driver offrono sia di base   caratteristiche come cattura dei pacchetti e   iniezione, così come più avanzati   quelli come un filtraggio programmabile   sistema ed un motore di monitoraggio. Il   primo può essere utilizzato per limitare una   catturare sessione a un sottoinsieme del   traffico di rete (ad esempio è possibile   per catturare solo il traffico ftp   generato da un particolare host), la   secondo fornisce un potente, ma   semplice da usare meccanismo per ottenere   statistiche sul traffico (per esempio si è   possibile avere il carico della rete o   la quantità di dati scambiati tra   due host).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top