Come analizzare i pacchetti / intercettare prima che vengano inviati / ricevuti dal sistema operativo?
-
12-09-2019 - |
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.
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.
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).