Cómo analizar los paquetes / intercepción antes de ser enviados / recibidos por el sistema operativo?

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

Pregunta

Siempre me he preguntado cómo funcionan los cortafuegos de software bajo las sábanas, y les gustaría ser capaz de escribir mis propias herramientas personalizadas para analizar o paquetes de intercepción antes de que sean enviados o recibidos por el sistema operativo. Estoy bastante familiarizado con los principios de redes de núcleo; Sólo tengo ni idea de por dónde empezar si quiero escribir software que se ajusta dentro de la pila de red similar a la forma en que lo hacen los cortafuegos. ¿Podría alguien darme algunos consejos?

Yo estaría interesado especialmente si esto se puede lograr usando C #, pero no puedo hacer otros idiomas también. Estoy centrado principalmente en Windows, pero me gustaría saber si había alguna bibliotecas multiplataforma por ahí también.

Editar Uso de un controlador NDIS (como lo hace Wireshark) suena como una buena opción, y las capacidades de filtrado de paquetes de Vista sonido limpio, pero ¿cómo lo hacen los servidores de seguridad, por ejemplo, en Windows XP? Ellos no tienen que instalar un controlador especial que yo sepa.

¿Fue útil?

Solución

En Windows Vista y hasta, es posible que desee ver en la plataforma de filtrado de Windows. En las versiones anteriores de Windows es necesario utilizar controladores de filtro (la página vinculada a MSDN menciona lo reemplaza tecnologías PMA).

Otros consejos

Por lo que recuerdo que consiste en escribir un controlador NDIS. Esta se encuentra prácticamente en la parte superior de la (Network Interface Card) NIC y tiene control absoluto de lo que ocurre en o sale de la tarjeta de red antes de cualquier otra cosa -. Hasta el nivel de paquetes de Ethernet

Esto no se puede lograr con C #. Que realmente necesita el uso de C o C ++ para esta tarea.

Actualizar : La última vez que hice esto en días Ventana XP. Veo en otra respuesta que hay una nueva, y por el aspecto de la misma, API más simple si está usando Windows Vista en adelante.

No está seguro de si se trata de "antes de que el O / S", pero echar un vistazo a WireShark y la biblioteca que utiliza, libpcap .

Tome un vistazo a WinPcap - que utiliza un controlador NDIS para poner en práctica sus capacidades de filtrado de paquetes. Esta biblioteca probablemente puede proporcionar una base excelente para cualquier programa de inspección / cortafuegos de paquetes que te gustaría escribir, y es de código abierto. De http://www.winpcap.org/docs/docs_40_2/html/group__internals .html :

  

En primer lugar, un sistema de captura necesita   pasar por alto la década de los sistemas operativos   pila de protocolos con el fin de acceder a la   datos en bruto que transitan en la red.   Esto requiere una parte se ejecuta dentro de   el núcleo del sistema operativo, interactuando directamente   con los controladores de interfaz de red.   Esta parte es muy dependiente del sistema,   y en nuestra solución se realiza como   un controlador de dispositivo, llamado Netgroup   Filtro de Paquetes (NPF); proporcionamos   diferentes versiones del controlador para   Windows 95, Windows 98, Windows ME,   Windows NT 4, Windows 2000 y Windows   XP. Estos controladores ofrecen tanto básica   características como la captura de paquetes y   inyección, así como la más avanzada   aquellos como un filtrado programable   sistema y un motor de monitorización. los   primero uno puede ser utilizado para restringir una   capturar sesión a un subconjunto de la   el tráfico de red (por ejemplo, es posible   para capturar sólo el tráfico ftp   generada por un huésped particular), el   segundo, proporciona un poderoso pero   simple de usar mecanismo para obtener   estadísticas sobre el tráfico (por ejemplo, que es   posible obtener la carga de red o   la cantidad de datos intercambiados entre   dos anfitriones).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top