Diseño y Desarrollo de Herramienta de Análisis de Paquetes de Red

Diseño y Desarrollo de Herramienta de Análisis de Paquetes de Red

 

Resumen

En la actualidad, con el desarrollo de la tecnología de la información, los problemas de seguridad de la red son cada vez más prominentes y los ataques a la red son cada vez más desenfrenados, por lo que la seguridad de la información de la red se vuelve muy importante. Un servidor web debe tener medidas de seguridad adecuadas, de lo contrario, el valor de la web se depreciará. El desarrollo de este sistema es proporcionar una herramienta útil de análisis de paquetes de red para los usuarios de la red. Este sistema tiene cuatro funciones principales: captura de paquetes de datos, análisis de paquetes de datos, análisis de información de paquetes de datos y visualización de información de paquetes de datos. Para realizar las funciones del sistema, este sistema está desarrollado en la plataforma de ubuntu (Linux), libpcap, apache, mysql y php. El sistema operativo y los kits de desarrollo de software son todos de código abierto y software gratuito, lo cual también es una característica importante de este sistema. Este sistema primero usa libpcap para capturar paquetes de datos, luego usa lenguaje C y usa el protocolo TCP/IP como base teórica para analizar los paquetes de datos, y la información obtenida del análisis se almacena en la base de datos mysql. El módulo de análisis de información de paquetes lee datos de la base de datos mysql, realiza análisis estadísticos de la información y describe el estado de seguridad de la información de la red. Finalmente, se muestra la información de la base de datos a través de tecnología apache y php. Al probar este sistema, se realizan la captura, el análisis, el análisis de la información y la visualización de la información del paquete de datos, lo que proporciona una buena referencia para que los usuarios comprendan el estado actual del paquete de datos de la red.

Palabras clave: paquete de datos de red; TCP/IP; análisis de paquetes de datos; análisis de información de paquetes de datos; características de ataque

Tabla de contenido

Diseño y Desarrollo de Herramienta de Análisis de Paquetes de Red

1. Introducción

1.1 Antecedentes del tema

1.2 Estado de la investigación en el país y en el extranjero

1.3 Importancia de esta investigación

1.4 Base teórica de este tema

2 Descripción general del sistema de análisis de paquetes de red

2.1 Importancia del análisis de paquetes de red

2.2 La base técnica central del análisis de paquetes de red

2.3 Funciones principales del sistema de análisis de paquetes de red

3 Diseño del sistema de análisis de paquetes de red

3.1 División del módulo del sistema

3.3 Diseño del módulo de almacenamiento de análisis de paquetes de datos

3.4 Diseño del módulo de análisis de información de paquetes

4 Solución del sistema de análisis de paquetes de red

4.1 Solución del módulo de captura de paquetes

4.2 Solución de módulo de almacenamiento y análisis de paquetes de datos

4.3 Solución del módulo de análisis de información de paquetes de datos

4.4 Solución del módulo de visualización de datos

5 Realización del sistema de análisis de paquetes de red.

5.1 Realización del módulo de control del sistema

5.2 Realización del módulo de captura de paquetes

5.3 Implementación del módulo de almacenamiento y análisis de paquetes de datos

5.4 Realización del módulo de análisis de información de paquetes

5.5 Realización del módulo de visualización de información de paquetes de datos

6 Análisis de prueba del sistema de análisis de paquetes de red

6.1 Plan de prueba y entorno de prueba

6.2 Resultados de la prueba

6.2.1 Captura de paquetes

6.2.2 Análisis y almacenamiento de paquetes de datos

6.2.3 Análisis simple de información de paquetes

6.2.4 Visualización de información de paquetes de datos

en conclusión

referencias


1 Introducción

1.1 Antecedentes del tema

Hoy, el rápido desarrollo de la red es obvio para todos, pero en el proceso de este rápido desarrollo, también hay factores inseguros. El rápido crecimiento de los ataques a la red y la transmisión de virus, y el uso de la red para el robo, el fraude, la extorsión y el robo secreto han aumentado año tras año, lo que ha afectado gravemente el orden normal de la red y ha dañado gravemente los intereses de los usuarios de la red. ; ante la grave situación de seguridad de la red, cómo juzgar si el host conectado a la red es seguro o no se vuelve muy importante. El propósito de la selección de temas es comprender activamente la forma actual de seguridad de la red, analizar paquetes de datos de protocolos de red comunes, diseñar una herramienta que pueda capturar y analizar paquetes de datos de red, ver información de paquetes de datos y realizar análisis estadísticos de datos, y obtener una Comprensión profunda Protocolo de red y conocimiento de seguridad.

1.2 Estado de la investigación en el país y en el extranjero

Un analizador de paquetes de red típico captura paquetes, decodifica varios protocolos y proporciona los resultados en un formato legible por humanos. La mayoría de los analizadores completos también incluyen algunas funciones de informes estadísticos. Al ver la distribución de la información de la red, comprender la utilización de la red y recibir la dinámica de la conexión y una serie de comportamientos, los administradores pueden determinar fácilmente la estación de trabajo defectuosa y su causa.

1.3 Importancia de esta investigación

El tema de la seguridad de la red ya no es un tema nuevo, y ya no es un tema avanzado.Para el análisis de paquetes de datos de red, ya existen diseños estructurales relativamente maduros, como la captura de paquetes de datos, el análisis y la provisión de Easy-to -formato de visualización e informes estadísticos sencillos. Pero el desarrollo de la red está cambiando cada día que pasa, y los requisitos de seguridad también están en constante desarrollo.El documento lleva a cabo principalmente la estrecha conexión de los dos módulos y utiliza la base de datos MySQL para fortalecer la función del módulo de informes estadísticos.

1.4 Base teórica de este tema

La herramienta de análisis de paquetes de datos está diseñada sobre la plataforma de ubuntu+libpcap+apach+mysql+php. Utilice el kit de desarrollo libpcap para configurar el equipo de red y capturar los paquetes de datos. En el módulo de análisis, los paquetes de datos obtenidos se analizan de acuerdo con el formato del encabezado del protocolo y se proporciona una explicación sencilla. Finalmente, se pone en la base de datos mysql y espera el módulo de análisis estadístico posterior. El módulo de análisis estadístico clasifica y cuenta la información en la base de datos, obtiene la información de datos requerida y la compara con varias características de ataque configuradas para realizar un análisis estadístico simple sobre el estado actual de seguridad del host. Además, si el usuario necesita realizar análisis manual, la herramienta proporciona una página para consultar convenientemente la información del encabezado del paquete de los paquetes de datos capturados. Los usuarios pueden analizar manualmente los datos para juzgar el estado del host.

Todo el sistema está basado en el protocolo TCP/IP. El protocolo TCP/IP no se ajusta completamente al modelo de referencia de siete capas de OSI. OSI es un modelo de referencia abstracto de 7 capas de un protocolo de comunicación, donde cada capa realiza una tarea específica. El protocolo de comunicación TCP/IP adopta una estructura jerárquica de 4 capas, y cada capa llama a la red proporcionada por su siguiente capa para satisfacer sus propias necesidades. [3] El Protocolo de Internet IP es el corazón de TCP/IP y el protocolo más importante en la capa de red. Además, existen protocolos de conexión TCP, UDP, ICMP y otros protocolos.

2 Descripción general del sistema de análisis de paquetes de red

2.1 Importancia del análisis de paquetes de red

Cualquiera que haya visto la película clásica "The Matrix" y haya usado herramientas de análisis de paquetes de red debería tener la "operación" de sentarse frente a una gran cantidad de paneles de control en la película para decodificar las señales que se deslizan continuamente por la pantalla como un flujo. de agua. el "mismo sentimiento".

Mientras que los operadores en la película se ocupan de cuestiones de vida o muerte, en realidad los usuarios de las herramientas de análisis de paquetes se ocupan de cuestiones igualmente importantes. Su capacidad para solucionar problemas e inspeccionar paquetes es fundamental para las redes y las industrias que dependen de ella.

Las herramientas de análisis de paquetes aún tienen una larga vida útil, principalmente porque para aquellas industrias que necesitan una administración de red útil las 24 horas del día, los 7 días de la semana, las herramientas de análisis de paquetes pueden proporcionar datos de análisis de red que son más fáciles de aceptar y digerir para las empresas.

2.2 La base técnica central del análisis de paquetes de red

El análisis de paquetes se basa en un protocolo TCP/IP. Cuando se trata de TCP/IP, debe mencionar OSI. El protocolo TCP/IP no cumple completamente con el modelo de referencia de siete capas de OSI. OSI es un modelo de referencia abstracto de 7 capas de un protocolo de comunicación, donde cada capa realiza una tarea específica. El propósito de este modelo es permitir que varios hardware se comuniquen entre sí al mismo nivel. Estas 7 capas son: capa física, capa de enlace de datos, capa de red, capa de transporte, capa de voz, capa de presentación y capa de aplicación. El protocolo de comunicación TCP/IP adopta una estructura jerárquica de 4 capas, y cada capa llama a la red proporcionada por su siguiente capa para satisfacer sus propias necesidades. [3] Las cuatro capas son:

Capa de aplicación: la capa para la comunicación entre aplicaciones, como la transferencia simple de correo electrónico (SMTP), el protocolo de transferencia de archivos (FTP), el protocolo de acceso remoto a la red (Telnet), etc.

Capa de transporte: en esta capa, proporciona servicios de transmisión de datos entre nodos, como el Protocolo de control de transmisión (TCP), el Protocolo de datagramas de usuario (UDP), etc. TCP y UDP agregan datos de transmisión al paquete de datos y lo transmiten al siguiente En una capa, esta capa es responsable de transmitir datos y asegurarse de que los datos se hayan entregado y recibido.

Capa de red de interconexión: Responsable de proporcionar funciones básicas de transmisión de paquetes de datos, para que cada paquete de datos pueda llegar al host de destino (pero no verifica si se recibe correctamente), como el Protocolo de Internet (IP).

Capa de interfaz de red: administra los medios de red reales y define cómo usar la red real (como Ethernet, línea serie, etc.) para transmitir datos.

2.3 Funciones principales del sistema de análisis de paquetes de red

El software está diseñado para aplicaciones, por lo que es muy importante qué tipo de funciones puede proporcionar el software. La herramienta de análisis de paquetes de datos de red debe realizar cuatro funciones: captura de paquetes de datos, análisis de paquetes de datos, análisis de información de paquetes de datos y visualización de información de paquetes de datos. La captura y el análisis de paquetes de datos es la parte básica del sistema, y ​​el análisis y visualización de la información del paquete de datos es parte del procesamiento de datos. Los cuatro módulos se coordinan entre sí para analizar los paquetes de datos de red del host actual.

En el proceso de diseño de herramientas de análisis de paquetes de red, se debe considerar la velocidad de la red. La evolución de las redes y las velocidades de las redes ha traído nuevos desafíos al monitoreo de redes. Los sistemas relacionados con el análisis de paquetes de datos basados ​​en Linux en PC comunes son cada vez más impotentes frente a los enlaces de alta velocidad. Entonces, cómo capturar rápidamente los paquetes de datos es muy importante. La tecnología de análisis de paquetes de datos es la base del análisis de paquetes de datos. El análisis de paquetes de datos es el problema central que deben resolver las herramientas basadas en el análisis de paquetes de datos. Existen muchos protocolos para construir paquetes de datos. Los paquetes deben procesarse de acuerdo con los protocolos para construir paquetes de datos, y las unidades transmitidas en la red deben ser entendido correctamente. , para controlar bien la transmisión de la unidad de red y realizar el análisis del paquete de datos. El análisis de paquetes de datos de red es el análisis estadístico de la información de paquetes de datos capturados y decodificados, que es parte de los resultados de salida. La visualización de la información del paquete de datos se proporciona como una función auxiliar humanizada.

3 Diseño del sistema de análisis de paquetes de red

Toda la herramienta de análisis de datagramas de red adopta una idea de diseño modular, porque muchos programas son demasiado largos o complicados para escribirse en una sola unidad. Si el código se divide en unidades funcionales más pequeñas, el proceso de programación se simplificará enormemente. Los programas modulares son generalmente más fáciles de escribir, depurar y modificar que los programas monolíticos. Así que este sistema adopta la idea de diseño modular.

Las ventajas de la programación modular son las siguientes:

(1) Desarrollo eficiente de programas: los programas se pueden desarrollar más rápido utilizando un enfoque modular porque las subrutinas más pequeñas son más fáciles de entender, diseñar y probar que los programas más grandes. Después de definir la entrada y la salida del módulo, el programador puede proporcionar la entrada requerida al módulo y juzgar la corrección del módulo detectando la salida. Luego, los módulos separados son conectados y posicionados por el enlazador para generar un solo módulo de programa ejecutable con una dirección absoluta. Finalmente, pruebe todo el módulo.

(2) Las subrutinas se pueden reutilizar: el código escrito para un programa a menudo se puede usar en otros programas. En la programación modular, estas partes se pueden guardar para uso futuro. Debido a que el código se puede reubicar, un módulo guardado se puede vincular a cualquier programa que cumpla con sus requisitos de entrada y salida. En la programación de programas de un solo bloque, tales partes están profundamente enterradas en todo el programa y no son fácilmente utilizadas por otros programas.

(3) Fácil de depurar y modificar: los programas modulares generalmente son más fáciles de depurar que los programas de un solo bloque. Debido a que la interfaz del módulo del programa está cuidadosamente definida, es fácil localizar el problema en un módulo específico. Una vez que haya localizado el módulo infractor, corregir el problema es bastante fácil.

3.1 División del módulo del sistema

La herramienta de análisis de paquetes de datos de red consta de cuatro módulos: uno es la captura de paquetes de datos, que realiza la adquisición de paquetes de datos de la tarjeta de red. El segundo es el análisis de paquetes de datos. Estos dos módulos son las partes básicas de toda la herramienta de análisis y juegan un papel importante en todo el sistema. El tercero es el análisis de la información capturada. Los valores propios se comparan para dibujar un simple análisis conclusión El cuarto es mostrar la información de los paquetes de datos capturados, y el propósito es proporcionar a los usuarios una forma conveniente para el análisis manual. La relación de llamadas entre los cuatro módulos se muestra en la Figura 1.

3.2 Diseño del módulo de captura de paquetes

Este módulo primero obtiene información de varios paquetes de datos de la tarjeta de red y los copia en el caché, esperando la llamada del módulo de análisis. La parte clave de este módulo es capturar paquetes de datos rápidamente y reducir la tasa de pérdida de paquetes.

La captura de paquetes se basa en Ethernet. Ethernet (Ethernet) tiene las características de un medio compartido, y la información se transmite en la red en forma de texto sin formato. El estándar Ethernet IEEE802.3 adopta el método CSMA continuo.Es precisamente porque Ethernet adopta este método de contención de canales de transmisión que cada estación puede obtener los datos enviados por otras estaciones. El uso de este principio permite que el sistema de captura de información intercepte la información que queremos, que es la base física de la captura de paquetes de datos. [1]

Ethernet es una red tipo bus, desde un punto de vista lógico se compone de un bus y múltiples estaciones conectadas al bus, cada estación utiliza el protocolo CSMA/CD mencionado anteriormente para competir y compartir canales. Cada sitio (aquí se refiere específicamente a la tarjeta de interfaz a través de la computadora) tarjeta de red para lograr esta función. El trabajo principal de la tarjeta de red es completar la detección del estado actual del bus, determinar si transmitir datos y juzgar si el destino de cada trama de datos físicos es la dirección de la estación. significa que no se envía a la estación y descartarlo. En caso afirmativo, reciba el marco de datos, realice una verificación de CRC en el marco de datos físico y luego envíe el marco de datos a la subcapa LLC. [1]

3.3 Diseño del módulo de almacenamiento de análisis de paquetes de datos

En el módulo anterior, el paquete de datos fue capturado y copiado en el caché. El módulo de análisis es principalmente para analizar la información de datos de acuerdo con el encabezado del protocolo del paquete de datos, hacer una explicación adecuada y finalmente colocar los datos en la base de datos. Espere a que el módulo de análisis lea los datos. Los protocolos analizados actualmente incluyen etnernet, LLC, arp/rarp, ip, tcp, udp, icmp, dns, dhcp. Los encabezados de protocolo se analizan y la información del paquete de datos se almacena en la base de datos.

El análisis del encabezado del paquete de datos es principalmente para leer campos significativos de acuerdo con el formato del protocolo del paquete de datos. A continuación, se utiliza el encabezado del protocolo ARP para ilustrar todo el proceso de análisis.

Primero, debe comprender el formato de encabezado del protocolo ARP/RARP, como se muestra en la Figura 2.

significado de campo

Campo de tipo de hardware: indica el tipo de interfaz de hardware que el remitente desea conocer, el valor de Ethernet es 1; campo de tipo de protocolo: indica el tipo de protocolo de alto nivel proporcionado por el remitente, la IP es 0800 (hexadecimal); la longitud de la dirección del hardware y Longitud del protocolo: indica la longitud de la dirección del hardware y la dirección del protocolo de alto nivel, para que el mensaje ARP pueda ser utilizado en cualquier red de hardware y protocolo; el campo de operación: se utiliza para indicar el tipo de este mensaje, el La solicitud ARP es 1 y la respuesta ARP es 2. La solicitud RARP es 3 y la respuesta RARP es 4. La dirección de hardware del remitente (0-3 bytes): los primeros 3 bytes de la dirección de hardware del host de origen ; la dirección de hardware del remitente (4-5 bytes): la fuente Los últimos 3 bytes de la dirección de hardware del host; IP del remitente (0-1 bytes): los primeros 2 bytes de la dirección de hardware del host de origen; IP del remitente (2 -3 bytes): los últimos 2 bytes de la dirección del hardware del host de origen; dirección del hardware de destino (0-1 bytes): los primeros 2 bytes de la dirección del hardware del host de destino; dirección del hardware de destino (2-5 bytes): la última 4 bytes de la dirección de hardware del host de destino; IP de destino (0-3 bytes): dirección IP del host de destino. [3]

De acuerdo con la definición de formato del protocolo, la estructura de datos del encabezado (la definición específica se da más adelante). Lea los datos después de la conversión de tipo y haga las interpretaciones necesarias. Lo más importante aquí es la definición del formato de protocolo del paquete de datos. Si hay un problema con la estructura definida, la extracción de datos posterior no tendrá sentido.

El almacenamiento de la información del paquete de datos es para almacenar la información del encabezado del paquete de datos extraído en un lugar y esperar la consulta del módulo de análisis de información del paquete de datos posterior. El almacenamiento de información requiere un rápido almacenamiento y extracción de información y, al mismo tiempo, se deben proporcionar potentes funciones de consulta para cumplir con los requisitos de datos del módulo de análisis.

3.4 Diseño del módulo de análisis de información de paquetes

La función de este módulo es hacer una evaluación razonable de la situación actual de seguridad de la red a través de un análisis estadístico simple de la información del paquete de datos capturado.

Mediante el análisis del paquete de datos, podemos juzgar el tamaño del paquete de datos, la información del encabezado del paquete de datos, la información del protocolo y el contenido del paquete de datos, etc. Para quienes estudian seguridad en redes, es muy importante dominar este conocimiento. En la comunicación de red actual, la mayoría de los datos no están encriptados y podemos extraer fácilmente números de cuenta, contraseñas y otros datos que nos interesan de los paquetes de datos. Además, las estadísticas sobre la información general del paquete de datos también son un aspecto del análisis del paquete de datos. En los módulos anteriores obtuvimos mucha información de paquetes, en este módulo usaremos esta información para el análisis. Los resultados del análisis de seguridad de la red actual se obtienen comparando los datos obtenidos de la consulta de la base de datos con los datos característicos de intrusión.

El proceso de análisis de la información del paquete de datos se muestra en la Figura 3.

3.5 Diseño del módulo de visualización de información de paquetes de datos

El propósito del módulo de visualización de información del paquete de datos es proporcionar una ventana para que el usuario vea la información del paquete de datos, y el principio es tratar de mostrar razonablemente la información útil del paquete de datos. La información del paquete se mostrará en una variedad de arreglos diferentes, como por IP, por puerto, etc. Al mismo tiempo, el resultado del análisis del módulo de análisis de información generará un documento de tipo página web, y el resultado del análisis final se puede ver en forma de página web, y debe haber una ventana de entrada para las características de seguridad.

La visualización de la información no es necesariamente toda la información de la base de datos, sino que principalmente proporciona la información que los usuarios más desean ver. El modo de visualización de la información tiene la forma de una tabla, lo que es beneficioso para que el usuario tenga una comprensión más intuitiva de la información del paquete de datos, a fin de hacer un juicio correcto y razonable.

4 soluciones para el sistema de análisis de paquetes de datos de red

La plataforma de desarrollo de todo el sistema es Ubuntu+Libpcap+Apache+Mysql+Php, y cada componente es Software Libre o de Código Abierto (software libre o de código abierto). Elegir esta plataforma de desarrollo es una característica importante de todo el sistema.En primer lugar, el software libre reduce los costos de desarrollo y reduce el consumo innecesario. Nuevamente, el uso de software genuino hace que el sistema sea más estable y tenga una mayor confiabilidad, y al mismo tiempo evita el problema de la infracción. Este enfoque gratuito y de código abierto es muy atractivo para los usuarios, tanto para desarrolladores corporativos como individuales, especialmente para los desarrolladores que desean un mejor soporte técnico pero no tienen suficiente apoyo financiero. En términos de Internet, se puede desarrollar y aplicar sin pagar ninguna tarifa de licencia por el lanzamiento del software. Al mismo tiempo, el potencial de la comunidad de código abierto radica en el intercambio de recursos. Millones de desarrolladores voluntarios contribuyen al software de código abierto, lo que garantiza el avance y la actualización continuos de la tecnología. La naturaleza del código abierto también permite a las empresas y desarrolladores modificar el programa fuente para su propio uso a voluntad, mejorando la flexibilidad que no está disponible en las limitaciones del software propietario o comercial, y magnificando la derivación de proyectos.

El diseño del sistema adopta la idea de diseño modular. Porque la modularidad tiene muchas ventajas. Desarrollo eficiente de programas: los programas se pueden desarrollar más rápido utilizando un enfoque modular porque las subrutinas más pequeñas son más fáciles de entender, diseñar y probar que los programas más grandes. Las subrutinas se pueden reutilizar: el código escrito para un programa a menudo se puede usar en otros programas. Facilidad de depuración y modificación: los programas modulares son generalmente más fáciles de depurar que los programas monolíticos.

El sistema operativo Ubuntu tiene sus propias ventajas, la razón para elegirlo es: Ubuntu siempre es gratuito y no hay necesidad de pagar ninguna tarifa de licencia. Se puede descargar, usar y compartir con otros de forma totalmente gratuita. Se lanzan nuevas versiones de escritorio y servidor cada 6 meses, lo que significa que siempre podrá disfrutar de las últimas y mejores aplicaciones que ofrece el mundo del código abierto. Ubuntu se toma la seguridad muy en serio. Para cada edición de escritorio y servidor, obtenga al menos 18 meses de actualizaciones de seguridad gratuitas. Si usa la versión de soporte a largo plazo (LTS), puede obtener 3 años de soporte para la versión de escritorio y 5 años para la versión de servidor. No hay cargo adicional por las versiones LTS, Ubuntu brindará a todos nuestro mejor servicio bajo las mismas condiciones gratuitas. Las actualizaciones a nuevas versiones de Ubuntu también son siempre gratuitas.

4.1 Solución del módulo de captura de paquetes

El módulo de captura de paquetes de datos utilizará el paquete de desarrollo libpcap, libpcap es una biblioteca de funciones de captura de paquetes que no tiene nada que ver con la implementación del mecanismo de captura de paquetes proporcionado por el sistema operativo de acceso y se utiliza para acceder a la capa de enlace de datos. Esta biblioteca proporciona una interfaz de programación consistente para diferentes plataformas.En la plataforma donde está instalado libpcap, los programas y aplicaciones escritos con libpcap como interfaz se pueden usar libremente en todas las plataformas. Hay tres mecanismos principales de captura de paquetes proporcionados por el sistema operativo: BPF (Berkeley Packet Filter), DLPI (Interfaz de proveedor de enlace de datos) y socket de tipo SOCK_PACKET en Linux. Los sistemas basados ​​en BSD usan BPF y los sistemas basados ​​en SVR4 generalmente usan DLPI. Según la literatura, BPF tiene un rendimiento mucho mejor que DLPI, mientras que SOCK_PACKET es más débil. Aunque SCO OpenServer no tiene un módulo de filtro de kernel BPF, tiene un módulo de STREAMS BPF que se puede insertar en el kernel y adopta el mismo concepto que Berkeley BPF. Pero en términos de operaciones de ioctl, el BPF de SCO no proporciona todas las funciones del BPF de Berkeley.

La estructura de libpcap es simple. Analizar su estructura puede darnos una cierta comprensión de la idea básica de escribir un programa un poco más grande. En primer lugar, para proporcionar compatibilidad multiplataforma, no hay un Makefile en el código fuente. En su lugar, se debe ejecutar un script de configuración para generar automáticamente un Makefile. El script de configuración detecta las características del sistema, por un lado, para determinar el sistema actual y algunas configuraciones relacionadas; El archivo Makefile.in escrito se utiliza como modelo para generar un Makefile adecuado para la plataforma actual. [4]

4.2 Solución de módulo de almacenamiento y análisis de paquetes de datos

El análisis de paquetes de datos utiliza completamente la estructura de datos escrita por sí mismo para convertir datos y utiliza los miembros de la estructura para leer datos, lo que implica encabezado Ethernet, LLC, ARP/RARP, IP, TCP, UDP, DHCP, DNS, ICMP El paquete formato de encabezado y la definición del cuerpo.

El almacenamiento de la información del paquete de datos adopta la base de datos mysql. Las características de Mysql son las siguientes:

(1) MYSQL admite un almacén de datos con 50 millones de registros.

(2) La ventaja de que MYSQL se adapte a todas las plataformas es la misma que la razón para elegir PHP.

(3) MYSQL es un software de código abierto y las actualizaciones de la versión también se verán afectadas por las conclusiones realizadas desde un punto de vista comercial. Y las cosas de código abierto siempre parecen ser más prácticas, y no habrá demasiadas consideraciones comerciales.

(4) Es fácil de aprender, tal vez no se pueda decir eso, porque la mayoría de las bases de datos usan sentencias SQL.

(5) Debido a que MYSQL es de código abierto, admite modificaciones arbitrarias, es decir, puede eliminar funciones que no necesita, lo que simplifica MYSQL y mejora la velocidad. Hay que decir que esta es una función muy buena, que no puede ser lograda por ninguna base de datos comercial.

4.3 Solución del módulo de análisis de información de paquetes de datos

El módulo de análisis de información de paquetes utiliza lenguaje C para conectarse con la base de datos mysql para consultar y contar los datos de la base de datos. La comparación entre los resultados estadísticos de los datos y las características de intrusión se completa utilizando lenguaje C. Porque el lenguaje C tiene las siguientes características:

El lenguaje C permite la manipulación de bits, bytes y direcciones, los elementos básicos de la funcionalidad de la computadora. Los programas en lenguaje C son muy fáciles de portar. La portabilidad significa que el software escrito para una computadora se puede usar en otra máquina. Todos los lenguajes de alto nivel admiten el concepto de tipos de datos. Un tipo de dato define el rango de valores de una variable y un conjunto de operaciones que se pueden realizar sobre ella. Los tipos de datos comunes son enteros, caracteres y números reales. Los programas en C permiten casi todas las conversiones de tipos. Por ejemplo, los datos de caracteres y enteros se pueden mezclar libremente en la mayoría de las expresiones. Esto no está permitido en lenguajes de alto nivel fuertemente tipados. Otra característica importante del lenguaje C es que solo tiene 32 palabras clave, y estas palabras clave son los comandos que componen el lenguaje C. C es un lenguaje estructurado Aunque desde un punto de vista estrictamente académico, C es un lenguaje estructurado en bloques, a menudo se lo denomina lenguaje estructurado. [6]

4.4 Solución del módulo de visualización de datos

La visualización de la información del paquete de datos se realiza mediante la tecnología Apache+php. PHP es un lenguaje de secuencias de comandos que puede escribir páginas web que contienen códigos incrustados. Estos códigos se pueden ejecutar siempre que se acceda a las páginas, y estos códigos también pueden generar contenido dinámico como Una parte de la salida se envía al navegador web del cliente.

(1) Alta seguridad, la seguridad de la base de datos mysql profesional es mucho mayor que otras bases de datos.

(2) El estilo de producción es simple, siempre que conozca el lenguaje HTML básico y ciertas técnicas de diseño, puede crear fácilmente un conjunto completo de su propio estilo de foro.

(3) Velocidad rápida, por supuesto, esto se verá afectado por muchos otros factores, no absolutos.

5 Realización del sistema de análisis de paquetes de red

En el proceso de realización del sistema, se selecciona la plataforma de desarrollo: Ubuntu (6.10) + Libpcap (0.8) + Apache (2.0) + Mysql + Php5, el editor usa Emacs, el compilador es gcc y la herramienta de depuración es gdb. Las herramientas seleccionadas, desde el sistema operativo hasta el kit de desarrollo y las herramientas de edición y compilación, son todas herramientas gratuitas y genuinas de código abierto, que brindan una garantía favorable para el desarrollo exitoso del sistema y reducen el costo de desarrollo al mismo tiempo. Esta es también una de las diferencias entre este sistema y otros sistemas.

5.1 Realización del módulo de control del sistema

Las ventajas del diseño modular se describen en el Capítulo 4, pero la forma de dividir los módulos sigue siendo un tema importante. Si la división del módulo no es razonable, ¡será muy problemático implementarlo! El sistema está dividido por funciones y tiene cuatro módulos: uno es la captura de paquetes de datos, el otro es el análisis de los paquetes de datos, el tercero es el análisis de la información capturada y el cuarto es mostrar la información de los paquetes de datos capturados. . El módulo de captura se implementa usando libpcap, el análisis y almacenamiento de paquetes de datos se usa en C y mysql, el análisis de información de paquetes de datos se usa en lenguaje C y la información de paquetes de datos se muestra en php. La relación de llamadas entre los cuatro módulos se muestra en la Figura 4.

La conexión entre módulos utiliza operaciones de subprocesos y varias variables globales importantes. El proceso de operación se muestra en la Figura 5.

El código central de la operación de subprocesos es el siguiente:

Abre un hilo y ejecuta el programa.

//Crear un hilo para ejecutar la función de captura de paquetes

void p_click (GtkWidget * widget, datos de gpointer)

{

   pthread_mutex_lock(&mutex);

   stop=1;//condición de captura

   pthread_mutex_unlock(&mutex);

  pthread_create(&p_thread,NULL,analyzer,NULL);//Crear hilo

}

//Establecer detener para detener la ejecución del subproceso especificado.

void pexit (GtkWidget * widget, datos de gpointer)

{

   pthread_mutex_lock(&mutex);

   stop=0;//condición de captura

   pthread_mutex_unlock(&mutex);}

5.2 Realización del módulo de captura de paquetes

La captura de paquetes se implementa mediante las funciones del kit de desarrollo de Libpcap, y las funciones utilizadas son las siguientes.

pcap_t *pcap_open_live(char *dispositivo, int snaplen, int promisc, int to_ms, char *ebuf)

Obtenga el descriptor de captura de paquetes utilizado para capturar paquetes de red. El parámetro del dispositivo es el nombre del dispositivo de red abierto especificado. El parámetro snaplen define el número máximo de bytes de datos capturados. promisc especifica si poner la interfaz de red en modo promiscuo. El parámetro to_ms especifica el tiempo de espera en milisegundos. El parámetro ebuf solo se usa para pasar un mensaje de error cuando la función pcap_open_live() devuelve NULL por error.  

char *pcap_lookupdev(char *errbuf)

Se utiliza para devolver el puntero del nombre del dispositivo de red que puede ser llamado por la función pcap_open_live() o pcap_lookupnet(). Si la función falla, devuelve NULL y almacena el mensaje de error relevante en errbuf.

int pcap_lookupnet(char *dispositivo, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf)

Obtenga el número de red y la máscara del dispositivo de red especificado. Tanto los parámetros netp como los parámetros maskp son punteros bpf_u_int32. Si la función falla, se devuelve -1 y el mensaje de error correspondiente se almacena en errbuf.  

int pcap_loop(pcap_t *p, int cnt,pcap_handler devolución de llamada, u_char *usuario)

La función es básicamente la misma que la función pcap_dispatch(), excepto que esta función regresa solo cuando se procesan los paquetes de datos cnt o se produce un error, pero el tiempo de espera de lectura no regresará. Y si especifica una configuración de tiempo de espera distinta de cero para la función pcap_open_live(), entonces llame  

int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimizar, bpf_u_int32 máscara de red)

Compile la cadena especificada por el parámetro str en el programa de filtro. fp es un puntero a una estructura bpf_program, que se asigna en la función pcap_compile(). El parámetro de optimización controla la optimización del código resultante. El parámetro netmask especifica la máscara de red de la red local. [4]

Captura el código del núcleo del paquete:

analizador vacío()

{

………………

  char *device=pcap_lookupdev(ebuf);//Obtener tarjeta de red

  void catch_packet(u_char *args,const struct pcap_pkthdr *header,u_char *packet);

  pcap_lookupnet(dispositivo,&localnet,&netmask,ebuf);//Leer información de la red

  ………………

  pcap_t *pd=pcap_open_live(dispositivo,BUFSIZ,0,1000,ebuf);//abrir dispositivo de red

  hora de inicio();

  mientras (detener == 1)

    {

      pcap_loop(pd,packet_number,catch_packet,NULL);//capturar paquete

    }

  hora de finalización();

  estructura pcap_stat stat;

  pcap_stats(pd,&stat);//Paquetes de captura de estadísticas

  ………………

  pcap_close(pd);

  devolver;}

La relación de llamada de función se muestra en la Figura 6.

5.3 Implementación del módulo de almacenamiento y análisis de paquetes de datos

El módulo de análisis y almacenamiento de datos utiliza lenguaje C para completar el análisis de los paquetes de datos y la conexión a la base de datos. Los encabezados de protocolo que se pueden analizar son: encabezado Ethernet, LLC, ARP/RARP, IP, TCP, UDP, DHCP, DNS, formatos de encabezado ICMP. Al mismo tiempo, el módulo de almacenamiento se conecta a la base de datos mysql y coloca los datos analizados en la base de datos. Desde el diseño de la base de datos hasta la creación de tablas.

El proceso básico del análisis completo del encabezado se muestra en la Figura 7.

Definición de la estructura de datos del encabezado DHCP:

estructura typedef _DHCPHdr

{

#si está definido(WORD_BIGENDIAN)

  U_int8_t saltos;

  U_int8_t hlen;

  u_int8_t htype;

  u_int8_top;

#demás

  U_int8_t op;

  u_int8_t htype;

  u_int8_t hlen;

  u_int8_t saltos;

#terminara si

  u_int32_txid;

  u_int16_t segundos;

  banderas u_int16_t;

  u_int32_t ciaddr;

  u_int32_t yiaddr;

  u_int32_t siaddr;

  u_int32_t giaddr;

  char sin firmar chaddr[16];

  char nombre[64];

  archivo char[128];

}DHCPHdr;

Declaraciones clave para conectarse a la base de datos mysql:

………………

MYSQL mysql;

  char cadena[1024];

     mysql_init(&mysql);//Inicializar la base de datos

  if(!(mysql_real_connect(&mysql,"localhost","root","159753","packet",0,NULL,0))) //Conectar a la base de datos

    printf("¡ERROR!\n");

………………

  if(mysql_query(&mysql,str)) printf("¡Error de inserción de DHCP!\n");

 //ejecutar declaración de inserción

  mysql_close(&mysql);

//Cerrar la base de datos

………………

5.4 Realización del módulo de análisis de información de paquetes

El módulo de análisis de información del paquete de datos realiza principalmente estadísticas y análisis de datos sobre la información del paquete de datos y compara las características de los métodos de intrusión comunes. Las características involucradas son: ataque terrestre, ataque TCP SYN, ataque Ping Of Death, ataque WinNuke, escaneo de puertos TCP/UDP, escaneo de puertos synscan, etc. El proceso de llamada de función se muestra en la Figura 8.

Código de función de consulta y comparación de datos básicos:

………………

/*El siguiente código es el código para conectarse a la base de datos y realizar la comparación de funciones. La función comparada es la función de escaneo de synscan*/

res = mysql_query(&mysql,"seleccione sourceip desde ip donde ");//生成mysql语句

  if(!(result = mysql_store_result(&mysql)))//resultado de la consulta de retorno

    {

      printf("error!\n");

    }

  Demás

    {

      numRecords=mysql_num_rows(resultado);

      for(count=0;count<numRecords;count++)//extraer datos de consulta

{

  fila=mysql_fetch_row(resultado);

  if(atoi(row[0])==39426&&atoi(row[1])==1028)//establecer condiciones características

    {

      n++;

    }

}

      fput("<br>",fp);

      si (n>0)

//Descripción del resultado del análisis de salida

fprintf(fp,"El host ha recibido un paquete synscan y puede ser escaneado por un puerto synscan!\n");

      demás

fprintf(fp,"¡El host recibió el paquete de datos y no encontró el escaneo del puerto synscan!\n");

………………

5.5 Realización del módulo de visualización de información de paquetes de datos

El módulo de visualización de información del paquete de datos se realiza mediante el uso de tecnología php. Hay catorce páginas en total, que muestran la información del paquete en un orden diferente. Son página de inicio, regla de análisis, resultado de análisis, visualización por orden de captura, visualización por origen de IP, visualización por destino de IP, visualización por puerto de origen TCP, visualización por puerto de destino TCP, visualización por puerto de origen UDP, visualización por puerto de destino UDP, Pantalla de información ICMP, pantalla de información ARP/RAPR, pantalla de información DNS, pantalla de información DHCP. El principio es mostrar información útil que los usuarios quieran ver tanto como sea posible.

Código de visualización principal:

/*El siguiente código es el código central para consultar datos y mostrar datos en un formulario*/

………………

<?php

$conn = new mysqli ('localhost', 'root', '159753', 'packet');//Conectarse a la base de datos

$conn->query ("ESTABLECER NOMBRES 'utf8'");

$query_str = "SELECCIONE número de paquete,cli_addr,y_addr,n_s_addr,r_a_addr,rou_addr,dns_addr,le_time,re_time,reb_time,cli_id FROM dhcp order by cli_addr";//设置查询语句

$resultado = $conn->consulta ($query_str);

    ………………

//Establecer el formato de salida

<tabla>

  <tr>

    <td>identificación del paquete</td>

    <td>Dirección del cliente</td>

    <td> Dirección Propia</td>

    <td>Siguiente dirección del servidor</td>

    <td>Dirección de proxy</td>

    <td>dirección del enrutador</td>

    <td>dirección DNS</td>

    <td>Tiempo de concesión de la dirección IP</td>

    <td>Hora de actualización</td>

    <td>Reenlazar tiempo</td>

    <td>ID de cliente</td>

 </tr>

MOE;

  while(($row_data=@$result->fetch_assoc())!==NULL)

{

echo <<<MOE

<tr>

<td>{$row_data['número de paquete']}</td>

<td> {$row_data['cli_addr']}</td>

<td> {$row_data['y_addr']}</td>

<td> {$row_data['n_s_addr']}</td>

<td> {$row_data['r_a_addr']}</td>

<td> {$row_data['rou_addr']}</td>

<td> {$row_data['dns_addr']}</td>

<td> {$row_data['le_time']}</td>

<td> {$row_data['re_time']}</td>

<td> {$row_data['reb_time']}</td>

<td> {$row_data['cli_id']}</td>

………………

6 Análisis de prueba del sistema de análisis de paquetes de red

6.1 Plan de prueba y entorno de prueba

El sistema de análisis de paquetes de datos de red diseñado y desarrollado en este tema incluye captura de paquetes de datos, análisis y almacenamiento de paquetes de datos, análisis estadístico de información de paquetes de datos y visualización de información de paquetes de datos. Con el objetivo de las funciones principales del sistema, el plan de prueba desarrollado es: prueba de captura de paquetes de datos, prueba de análisis y almacenamiento de paquetes de datos, prueba de análisis estadístico de información de paquetes de datos, prueba de visualización de información de paquetes de datos.

La prueba se lleva a cabo en el dormitorio de la red del campus.El sistema host es WindowsXP.El sistema operativo XP está equipado con VMWARE5.1 y utiliza el sistema operativo Unbuntu6.10.El sistema operativo XP es equivalente a una puerta de enlace.

Sistema de análisis de paquetes de red: Ubuntu6.10+libpcap0.8+mysql+apach2.0+php5.0

Entorno de red: red de campus 10M Ethernet.

Hardware de computadora: Tarjeta de red AMD1.6+512M+8G+100M.

6.2 Resultados de la prueba

6.2.1 Captura de paquetes

El propósito de la prueba es verificar si el sistema puede capturar los paquetes de datos que llegan a la tarjeta de red.

El requisito de prueba es abrir el sistema, realizar operaciones de red normales en el host para generar los paquetes de datos de red necesarios y observar los resultados de la captura.

Los resultados de la prueba encontraron que cuando el sistema muestra los datos capturados, todos los datos están conectados entre sí, lo que no es fácil de distinguir y ver. Después de la mejora, el símbolo de segmentación y la ID del paquete de datos se agregan delante de los datos para que los datos se vean muy claros. Después de la mejora, el sistema completa con éxito la captura de paquetes de datos y muestra los resultados capturados en el terminal como se muestra en la Figura 6-1.

6.2.2 Análisis y almacenamiento de paquetes

El propósito de la prueba es verificar si el sistema puede analizar los paquetes de datos capturados y almacenar la información de los datos analizados en la base de datos.

El requisito de prueba es abrir el sistema y realizar operaciones de red normales en el host para generar los paquetes de datos de red necesarios. En circunstancias normales, es posible que no sea posible generar múltiples tipos de paquetes de datos. En este momento, se requieren algunas operaciones especiales. para generar datos de diferentes protocolos.Bolsa. Observe los resultados de la captura en la terminal y abra la base de datos mysql para ver si hay algún dato. En la Figura 9 se muestra una captura de pantalla del análisis.

A través de las pruebas, se encontró que el sistema puede completar el análisis y el almacenamiento de los paquetes de datos de red más comunes.Actualmente, los paquetes de datos que se pueden resolver incluyen: encabezado de Ethernet, LLC, ARP/RARP, IP, TCP, UDP, DHCP, DNS, ICMP. El problema es que debido a mi conocimiento limitado, el sistema no puede analizar todos los encabezados de protocolo. Espero mejorar el sistema en el futuro a través de más estudios.

6.2.3 Análisis simple de la información del paquete de datos

El propósito de la prueba es verificar la corrección y racionalidad de los resultados del análisis.

El requisito de prueba es abrir el sistema, realizar operaciones de red normales en el host para generar los paquetes de datos de red necesarios, esperar a que se capturen los paquetes de datos, hacer clic para analizar la información del paquete de datos y el módulo de análisis generará un documento html en el directorio apach para mostrar los resultados. Luego vea los resultados del análisis de la información del paquete a través de la página web apachh+php.

A través de la prueba, se encuentra que el módulo de análisis de información de paquetes puede detectar ataques de red comunes. Las excepciones detectables incluyen ataque Land, ataque TCP SYN, ataque Ping Of Death, ataque WinNuke, escaneo de puerto TCP/UDP, escaneo de puerto synscan, etc. Sin embargo, estos juicios son relativamente simples y carecen de sensibilidad Al mismo tiempo, para los hosts que dependen del tipo de trabajo y el entorno del host, es necesario proporcionar datos de características de trabajo precisos en el estado normal del sistema. Los resultados del análisis se muestran en la Figura 10.

6.2.4 Visualización de información de paquetes de datos

El propósito de la prueba es observar si el módulo de visualización puede mostrar normal y razonablemente la información del paquete capturado y analizado, así como la visualización de los resultados del análisis.

El requisito de prueba es abrir el sistema, realizar operaciones de red normales en el host para generar los paquetes de datos de red necesarios, esperar a que se capturen los paquetes de datos, hacer clic para analizar la información del paquete de datos y ver la información de análisis y los resultados del análisis de la información del paquete de datos a través de la página web Catorce páginas.

La prueba encontró que las catorce páginas normalmente pueden mostrar la información después del análisis de paquetes de datos y los resultados del análisis de información.El principio de mostrar información es mostrar la información que los usuarios usan a menudo de la manera más razonable posible. Los datos mostrados no son toda la información en la base de datos, porque hay demasiada información en la base de datos, no todos los datos suelen ser útiles. La página solo muestra información que se ve con frecuencia. El resultado de la pantalla se muestra en la Figura 11.

en conclusión

Este documento presenta principalmente el diseño, la implementación y las pruebas de la herramienta de análisis de paquetes de datos de red. Además, este documento también introduce conocimientos teóricos relevantes y herramientas de desarrollo.

En primer lugar, este documento presenta el significado y la función del análisis de paquetes de datos de red; luego presenta la estructura básica del sistema de análisis de paquetes de datos de red y las tecnologías comúnmente utilizadas en el proceso de implementación, que incluyen principalmente libpcap, apach, mysql, php y otras tecnologías. .

En segundo lugar, el diseño e implementación del sistema central de esta tesis utiliza principalmente libpcap para capturar paquetes de datos, analiza los encabezados de protocolo etnernet, LLC, arp/rarp, ip, tcp, udp, icmp, dns, dhcp y convierte los datos en información del paquete. se almacena en la base de datos, y el módulo de análisis realiza el análisis estadístico de la información del paquete, y muestra los resultados del análisis en el módulo de visualización.Al mismo tiempo, el módulo de visualización proporciona la función de mostrar la información de análisis de paquetes capturados, lo que mejora la función del sistema. La plataforma de desarrollo del sistema es: Ubuntu (6.10) + Libpcap (0.8) + Apache (2.0) + Mysql + Php5, el editor usa Emacs, el compilador es gcc y la herramienta de depuración es gdb. Se puede ver que las herramientas y los kits de desarrollo seleccionados son todas herramientas de software libre o de código abierto, lo que no solo reduce los costos de desarrollo, sino que también evita problemas de derechos de autor. Esta es una de las características del sistema.

Finalmente, debido al nivel limitado del autor, los errores y las deficiencias son inevitables en la tesis, reflejados principalmente en: el módulo de captura de paquetes de datos utiliza captura de software, y el host con una velocidad de red rápida perderá paquetes y afectará la velocidad de la red. En el módulo de análisis, los protocolos que puede analizar este sistema son solo los protocolos más comunes, no todos los protocolos. Espero tener la oportunidad de perfeccionar este sistema en futuros estudios.

Con respecto a las deficiencias en el documento, espero sinceramente que todos los expertos y maestros me den correcciones y críticas, ¡y me gustaría expresar mi más sincero agradecimiento!

referencias

[1] Xie Xiren. Computer Network [M]. Beijing: Electronic Industry Press, 2005.8

[2] Han Donghai, análisis de ejemplos de sistemas de detección de intrusos [M], Beijing: Tsinghua University Press, 2002.5

[3] W. Richard Stevens [EE. UU.]. Explicación detallada de TCP/IP Volumen 1 [M]. Traducido por Fan Jianhua, Xu Guanghui, Zhang Tao. Beijing: Mechanical Industry Press, 2004.4

[4] Liu Wentao. Sistema de detección de intrusos en la red de Linux [M]. Beijing: Electronic Industry Press, 2004.10

[5] Vikram Vaswani [EE. UU.]. MySQL Complete Manual [M]. Xu Xiaoqing, traducido por Lu Xiaocun. Beijing: Electronic Industry Press, 2004.11

[6] StephenPrata [EE.UU.].C Primer Plus[M].Beijing: Traducido por Yundian Studio, 2005.2

[7] Gary R. Wright [EE. UU.], W. Richard Stevens. Explicación detallada de TCP/IP Volumen 2 [M] Beijing: Mechanical Industry Press, 2006.2

[8] Yu Zhihu. Programación en C bajo plataforma UNIX [M] Beijing: Tsinghua University Press, 2001.10

[9] Marc Wandscheider [EE. UU.]. PHP y MySQL Web Application Development Core Technology [M]. Ma Zhaohui, Wen Jiwen. Beijing: Machinery Industry Press, 2006.9

[10] Cao Tianjie, Zhang Yongping, Su Cheng. Seguridad del sistema informático [M]. Beijing: Higher Education Press, 2003.6

 

Atentos al blogger, el próximo artículo es más emocionante.

¡Tres en uno con un solo clic! ! !

¡Tres en uno con un solo clic! ! !

¡Tres en uno con un solo clic! ! !
¡Gracias por el triple de un clic! ! !

Supongo que te gusta

Origin blog.csdn.net/m0_56073435/article/details/131478209
Recomendado
Clasificación