Cómo analizar los paquetes / intercepción antes de ser enviados / recibidos por el sistema operativo?
-
12-09-2019 - |
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.
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.
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).