LÉAME
Esta aplicación resuelve el problema de los ataques LAN y el rastreo de datos. Puede realizar ataques punto a punto en cualquier terminal objetivo en la LAN para rastrear los datos de Internet ascendentes y descendentes del terminal objetivo. Con el objetivo de abordar la heterogeneidad de múltiples fuentes y la naturaleza en tiempo real de los datos de la red, se diseña un motor de detección y monitoreo dirigido en combinación con las características naturales NoSQL de MongoDB.
1. Server: The core technology used in the backend is SpringBoot. The core technologies used for network attacks include winpcap, jpcap, ARP Spoofing (ARP deception), MITM (Man-in-the-Middle Attack), and network packet grouping/degrouping, decompression, and restoration.
2. Client: The core technologies used in the frontend include Angular6, ECharts, etc.
3. Packaging and Deployment: The front-end and back-end are packaged into the same jar file using Maven.
1. Configuración del entorno
1) MacOS
Descargas e instalaciones de software necesarias
- Java (no seleccione 64 bits): Descarga de Java
- MongoDB (debe elegir 3.4.24): Descarga de MongoDB
- WinPcap más reciente: Descarga de WinPcap
- Wireshark: Descarga de Wireshark
- Maven, NodeJS
Configuraciones requeridas
- Habilite el reenvío de IP:
sudo sysctl -w net.inet.ip.forwarding=1
. Compruebe si el reenvío de IP está habilitado (debe ser 1): sudo sysctl -a | grep net.inet.ip.forwarding
. Después de reiniciar el sistema, el reenvío de IP volverá al estado desactivado predeterminado, por lo que se debe volver a habilitar; de lo contrario, el objetivo atacado no podrá acceder a Internet normalmente. - Agregue la ruta absoluta del directorio bin en el directorio de instalación de MongoDB a la ruta de la variable de entorno para iniciar el servicio MongoDB desde la línea de comando.
- Copie
libjpcap.jnilib
a /Library/Java/Extensions/
. - Asegúrese de que el servidor que ejecuta este programa y el teléfono móvil de destino estén conectados al mismo enrutador a través de Wi-Fi.
- Navegue hasta el directorio raíz del código en la línea de comando, compile y empaquete usando Maven:
mvn package -Dmaven.test.skip=true
, copie jpcap-mitm.jar
a cualquier directorio como directorio de trabajo y cree un data/db
carpeta en este directorio de trabajo como la carpeta de datos de MongoDB. - Abra el paquete Wireshark dmg descargado, verá un paquete
Install ChmodBPF.pkg
, haga doble clic para instalar este paquete de software.
Pasos de inicio
- Abra Terminal, navegue hasta el directorio de trabajo especificado y ejecute
mongod --dbpath=data/db
. Después de unos segundos, espere a que el servicio MongoDB se ejecute correctamente e imprima un registro similar a: *** esperando conexiones en el puerto 27017. - Haga clic en el botón de inicio de Windows en la parte inferior izquierda, escriba
cmd
y luego haga clic derecho para ejecutar la línea de comando como administrador. Navegue hasta D:mitm
en la línea de comando, luego ejecute java -jar jpcap-mitm.jar
. Espere a que el servicio se ejecute correctamente e imprima un registro similar a: *** Aplicación iniciada en ** segundos. - Abra el navegador Chrome y navegue hasta
http://localhost:8888
, o acceda al programa de forma remota desde otro dispositivo a través de http://<local IP>:8888
. - Después de abrir con éxito el sitio de administración de este programa, seleccione la tarjeta de red correcta en
Select interface
, configure la IP y MAC locales, la IP y MAC móvil de destino, la IP y MAC de la puerta de enlace (enrutador). Tenga en cuenta que todas estas son IP de red interna y deben estar en la misma subred. - La IP y la MAC del teléfono móvil de destino se pueden ver en la información de conexión Wi-Fi del teléfono. Si no conoce la IP y MAC locales o la IP y MAC del enrutador, ingrese
ifconfig
en la Terminal para encontrar la dirección IPv4, la dirección física y la puerta de enlace predeterminada. Ejecute arp -a
para encontrar la MAC de la puerta de enlace. - Después de configurar la información anterior, haga clic en el botón de configuración, luego la aplicación establecerá la conexión correspondiente. Cada vez que se inicia el programa, puedes restablecer la conexión, pero una vez configurada, no se puede modificar. Para restablecer, cierre el proceso
jpcap-mitm.jar
en la ventana de la línea de comando presionando control+c
, luego reinicie el programa. - Antes de iniciar el ataque, intente utilizar el teléfono móvil objetivo para acceder a sitios web o aplicaciones. Asegúrese de que el teléfono pueda acceder a Internet normalmente sin iniciar el ataque.
- Después de hacer clic en iniciar ataque, espere unos segundos hasta que el ataque surta efecto y muestre la barra dinámica. Verifique los datos en el panel de estadísticas en tiempo real a continuación y use el teléfono móvil de destino para acceder a sitios web o aplicaciones para ver las actualizaciones del panel de datos.
- Después de completar las funciones del sitio web o la aplicación, haga clic en detener ataque. El ataque se detendrá inmediatamente, pero el servidor capturó una gran cantidad de paquetes que deben almacenarse secuencialmente, por lo que los datos del panel de estadísticas en tiempo real pueden continuar aumentando lentamente durante unos minutos antes de detenerse.
- Después de detener el ataque, espere unos segundos hasta que aparezca el mensaje de que se completó el análisis de paquetes. Luego puede seleccionar el ID de lote (ID más reciente) de este ataque en las páginas de análisis, estadísticas y volcado para ver gráficos y contenido detallado.
Notas
- Si aparece un mensaje de error web, verifique si el paquete jar de la línea de comando se cerró de manera anormal. Es posible que el programa haya fallado. Intente reiniciar el frasco. Preste atención al registro de la línea de comando del programa. Si se generan errores continuamente, es posible que el programa no pueda detectar paquetes normalmente. Intente reiniciar el frasco.
- Si el enrutador tiene habilitado el enlace IP/MAC estático, DHCP deshabilitado o módulos de defensa contra ataques ARP, puede hacer que el programa solo intercepte paquetes ascendentes y no paquetes descendentes. Si no se pueden configurar los ajustes del enrutador, cambie a un equipo diferente y ataque nuevamente. Si el dispositivo de puerta de enlace es muy potente, es posible que el ataque no sea completamente exitoso.
- Después de iniciar el ataque, si el objetivo puede acceder a Internet normalmente pero no se rastrean paquetes en la página de administración del programa, o el objetivo no puede acceder a Internet, verifique si el reenvío de IP está habilitado en el sistema, verifique cuidadosamente la IP y MAC de todos. dispositivos configurados en la web, verifique si la interfaz de la tarjeta de red seleccionada es correcta, verifique si el servidor y el teléfono móvil de destino están conectados al mismo enrutador, verifique si la IP del teléfono móvil de destino ha cambiado (puede ser IP fija), verifique si la ventana de línea de comando que ejecuta el jar es ejecútelo como administrador, intente reiniciar la computadora y espere varios minutos antes de volver a intentarlo.
- El ataque no debería durar demasiado, lo óptimo es unas pocas docenas de segundos. Después de la prueba, detenga el ataque para evitar ataques continuos al objetivo y a la puerta de enlace que provoquen una tormenta de datos en la LAN, lo que puede sobrecargar la puerta de enlace y provocar que toda la LAN colapse.
2) ventanas
Descargas e instalaciones de software necesarias
- Java (no seleccione 64 bits): Descarga de Java
- MongoDB (debe elegir 3.4.24): Descarga de MongoDB
- WinPcap más reciente: Descarga de WinPcap
- Maven, NodeJS
Configuraciones requeridas
- Habilite el reenvío de IP: haga clic en el botón de inicio de Windows en la parte inferior izquierda, escriba
regedit
y luego seleccione el editor de registro. Haga clic derecho para ejecutar el editor de registro como administrador. Navegue hasta la clave de registro HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
, seleccione el elemento IPEnableRouter
y cambie el valor a 1. - Agregue la ruta absoluta del directorio bin en el directorio de instalación de MongoDB a la ruta de la variable de entorno para iniciar el servicio MongoDB desde la línea de comando.
- Cree un directorio de trabajo para este programa. Por ejemplo, cree la carpeta
D:mitm
como directorio de trabajo. En el mismo directorio raíz que el directorio de trabajo, cree la carpeta de datos de MongoDB data/db
. Por ejemplo, si el directorio raíz es D
, cree la carpeta D:datadb
. - Asegúrese de que el servidor que ejecuta este programa y el teléfono móvil de destino estén conectados al mismo enrutador a través de Wi-Fi.
- Navegue hasta el directorio raíz del código en la línea de comando, compile y empaquete usando Maven:
mvn package -Dmaven.test.skip=true
, copie jpcap-mitm.jar
y Jpcap.dll
al directorio de trabajo y cree un data/db
carpeta data/db
en este directorio de trabajo como la carpeta de datos de MongoDB.
Pasos de inicio
- Haga clic en el botón de inicio de Windows en la parte inferior izquierda, escriba
cmd
y luego haga clic derecho para ejecutar la línea de comando como administrador. Navegue hasta D:
y luego ejecute mongod
. Después de unos segundos, espere a que el servicio MongoDB se ejecute correctamente e imprima un registro similar a: *** esperando conexiones en el puerto 27017. No use el botón izquierdo del mouse para seleccionar ningún contenido en la ventana de línea de comando. El estado seleccionado provocará la suspensión del servicio. - Haga clic en el botón de inicio de Windows en la parte inferior izquierda, escriba
cmd
y luego haga clic derecho para ejecutar la línea de comando como administrador. Navegue hasta D:mitm
en la línea de comando, luego ejecute java -jar jpcap-mitm.jar
. Espere a que el servicio se ejecute correctamente e imprima un registro similar a: *** Aplicación iniciada en ** segundos. - Abra el navegador Chrome y navegue hasta
http://localhost:8888
, o acceda al programa de forma remota desde otro dispositivo a través de http://<local IP>:8888
. - Después de abrir con éxito el sitio de administración de este programa, seleccione la tarjeta de red correcta en
Select interface
, configure la IP y MAC locales, la IP y MAC móvil de destino, la IP y MAC de la puerta de enlace (enrutador). Tenga en cuenta que todas estas son IP de red interna y deben estar en la misma subred. - La IP y la MAC del teléfono móvil de destino se pueden ver en la información de conexión Wi-Fi del teléfono. Si no conoce la IP y MAC locales o la IP y MAC del enrutador, haga clic en el botón de inicio de Windows en la parte inferior izquierda, escriba
cmd
y luego haga clic derecho para ejecutar la línea de comando como administrador. Ingrese ipconfig /all
en la línea de comando para buscar la sección Wi-Fi del adaptador de LAN inalámbrica, busque la dirección IPv4, la dirección física y la puerta de enlace predeterminada. Ejecute arp -a
para encontrar la MAC de la puerta de enlace. - Después de configurar la información anterior, haga clic en el botón de configuración, luego la aplicación establecerá la conexión correspondiente. Cada vez que se inicia el programa, puedes restablecer la conexión, pero una vez configurada, no se puede modificar. Para restablecer, cierre el proceso
jpcap-mitm.jar
en la ventana de la línea de comando presionando control+c
, luego reinicie el programa. - Antes de iniciar el ataque, intente utilizar el teléfono móvil objetivo para acceder a sitios web o aplicaciones. Asegúrese de que el teléfono pueda acceder a Internet normalmente sin iniciar el ataque.
- Después de hacer clic en iniciar ataque, espere unos segundos hasta que el ataque surta efecto y muestre la barra dinámica. Verifique los datos en el panel de estadísticas en tiempo real a continuación y use el teléfono móvil de destino para acceder a sitios web o aplicaciones para ver las actualizaciones del panel de datos.
- Después de completar las funciones del sitio web o la aplicación, haga clic en detener ataque. El ataque se detendrá inmediatamente, pero el servidor capturó una gran cantidad de paquetes que deben almacenarse secuencialmente, por lo que los datos del panel de estadísticas en tiempo real pueden continuar aumentando lentamente durante unos minutos antes de detenerse.
- Después de detener el ataque, espere unos segundos hasta que aparezca el mensaje de que se completó el análisis de paquetes. Luego puede seleccionar el ID de lote (ID más reciente) de este ataque en las páginas de análisis, estadísticas y volcado para ver gráficos y contenido detallado.
Notas
- Si aparece un mensaje de error web, verifique si el paquete jar de la línea de comando se cerró de manera anormal. Es posible que el programa haya fallado. Intente reiniciar el frasco. Preste atención al registro de la línea de comando del programa. Si se generan errores continuamente, es posible que el programa no pueda detectar paquetes normalmente. Intente reiniciar el frasco.
- Si el enrutador tiene habilitado el enlace IP/MAC estático, DHCP deshabilitado o módulos de defensa contra ataques ARP, puede hacer que el programa solo intercepte paquetes ascendentes y no paquetes descendentes. Si no se pueden configurar los ajustes del enrutador, cambie a un equipo diferente y ataque nuevamente. Si el dispositivo de puerta de enlace es muy potente, es posible que el ataque no sea completamente exitoso.
- Después de iniciar el ataque, si el objetivo puede acceder a Internet normalmente pero no se rastrean paquetes en la página de administración del programa, o el objetivo no puede acceder a Internet, verifique si el reenvío de IP está habilitado en el sistema, verifique cuidadosamente la IP y MAC de todos. dispositivos configurados en la web, verifique si la interfaz de la tarjeta de red seleccionada es correcta, verifique si el servidor y el teléfono móvil de destino están conectados al mismo enrutador, verifique si la IP del teléfono móvil de destino ha cambiado (puede ser IP fija), verifique si la ventana de línea de comando que ejecuta el jar es ejecútelo como administrador, intente reiniciar la computadora y espere varios minutos antes de volver a intentarlo.
- Si el nombre en la lista de interfaces de la tarjeta de red no puede determinar cuál seleccionar, abra el editor de registro y verifique la clave de registro
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfaces{*}
. Esta lista corresponde a la lista de interfaces. Verifique cada elemento de la interfaz por turno y vea qué configuración coincide con la IP actual del servidor, indicando la interfaz que debemos seleccionar. - El ataque no debería durar demasiado, lo óptimo es unas pocas docenas de segundos. Después de la prueba, detenga el ataque para evitar ataques continuos al objetivo y a la puerta de enlace que provoquen una tormenta de datos en la LAN, lo que puede sobrecargar la puerta de enlace y provocar que toda la LAN colapse.
2. Descripción del programa
La interfaz front-end de este proyecto es la siguiente
Página de ataque LAN
- En esta interfaz, configure la tarjeta de red y la IP y MAC de la máquina/objetivo/puerta de enlace local, configure la lista de dominios monitoreados (un dominio o varios dominios separados por comas) y luego controle el inicio o la parada del ataque.
- El primer paso es realizar los ajustes necesarios. Estos ajustes sólo se pueden realizar después de que el programa se inicie nuevamente cada vez. La información se guardará en la base de datos y el programa la leerá automáticamente la próxima vez que se inicie. Cuando el programa se inicia por primera vez, leerá automáticamente la IP y MAC locales. Es necesario confirmar cuidadosamente que esto es correcto. La tarjeta de red debe seleccionar el dispositivo de tarjeta de red utilizado para el acceso normal a Internet. El objetivo se refiere al teléfono móvil u otros dispositivos que necesitamos monitorear. La puerta de enlace generalmente se refiere al enrutador u otros dispositivos de puerta de enlace a los que estamos conectados mediante Wi-Fi. Toda la información anterior debe configurarse estrictamente correctamente; de lo contrario, el programa no podrá ejecutarse normalmente. La interfaz de configuración se muestra en la siguiente figura:
- La IP y MAC de la puerta de enlace se pueden ver en el dispositivo de puerta de enlace, o también se pueden ver desde la tabla de enrutamiento local, como se muestra en la siguiente figura:
- Cuando terminemos la configuración y guardemos o iniciemos el ataque, la lista de direcciones de nombres de dominio a monitorear será resuelta por DNS y la lista de IP correspondiente se actualizará a MongoDB, y luego comenzará oficialmente el ataque LAN y el rastreo de datos. La interfaz mostrará el estado del ataque, como se muestra en la siguiente figura:
- En este momento, puede arrastrar la página a la parte inferior para ver las estadísticas de rastreo de paquetes. La parte de estadísticas se divide principalmente en dos tipos: ascendente y descendente, que a su vez se dividen en cuatro tipos TCP/UDP/ICMP/ARP. Upstream significa los paquetes enviados desde el objetivo y downstream significa los paquetes recibidos por el objetivo. Si el objetivo no está navegando por la lista de dominios especificada en este momento, todas las estadísticas siempre serán 0. Si comienza a explorar la lista de dominios especificada, puede ver que las estadísticas comienzan a tener datos, como se muestra en la siguiente figura:
- Cuando detengamos el ataque, automáticamente se iniciará un análisis detallado de los paquetes de este ataque. Una vez completado el ataque, también aparecerá un mensaje emergente, como se muestra en la siguiente figura:
Página de análisis de paquetes
- En esta interfaz, primero mostrará si el proceso de análisis de paquetes está en progreso. Si todavía se está analizando, deberá esperar a que se complete el análisis antes de ver los resultados. Una vez completado el análisis, el estado cambiará automáticamente a completado y podrá ver los resultados del análisis.
- Primero, podemos elegir un filtro de paquetes: ID de lote de ataque/ascendente o descendente/protocolo/contenido. Cada elemento de filtro se puede seleccionar varias veces o dejar en blanco, lo que significa que todos los tipos coinciden. Después de hacer clic en filtrar, la primera tabla a continuación mostrará todos los paquetes coincidentes después del análisis. Tenga en cuenta que los paquetes aquí son diferentes de los de la interfaz de ataque. Los paquetes aquí son todos paquetes combinados, mientras que los de la interfaz de ataque son tramas originales. Por lo tanto, la cantidad de paquetes aquí es mucho menor que antes. En la primera tabla, podemos ver todos los campos importantes del paquete, incluidos algunos campos después del análisis (como encabezado HTTP/cuerpo HTTP/MÉTODO, etc.), como se muestra en la siguiente figura:
- Después de hacer clic en cualquier fila de la primera tabla, consulte la segunda tabla a continuación para ver qué marcos de datos originales corresponden a este paquete. Podemos ver algunos campos de trama básicos de estos paquetes aquí, como se muestra en la siguiente figura:
Página de estadísticas de paquetes
- De manera similar, en esta interfaz, primero mostrará si el proceso de análisis de paquetes está en progreso. Si todavía se está analizando, deberá esperar a que se complete el análisis antes de ver los resultados. Una vez completado el análisis, el estado cambiará automáticamente a completado y podrá ver los resultados del análisis.
- Primero, podemos filtrar según el lote de ataque, que puede seleccionarse de forma múltiple o dejarse en blanco, lo que significa que todos los lotes de ataque coinciden, como se muestra en la siguiente figura:
- Después de hacer clic en filtrar, primero puede ver las estadísticas de paquetes de varios tipos de protocolos detallados, divididos principalmente en dos categorías: ascendente y descendente, cada una de las cuales se divide en tipos de protocolo HTTP/HTTPS/TCP/UDP/ICMP/ARP. Tenga en cuenta que aquí TCP se refiere a otros tipos de protocolos TCP, excepto HTTP y HTTPS, mientras que HTTP y HTTPS se analizan y cuentan de forma especial y común por separado. La interfaz de estadísticas se muestra en la siguiente figura:
- Si continúa mirando hacia abajo, también puede ver gráficos circulares de cada tipo de protocolo, divididos en dos categorías: ascendente y descendente, como se muestra en la siguiente figura:
- De manera similar, también puede ver gráficos circulares de cada tipo de contenido, divididos en dos categorías: upstream y downstream, donde
other
se refiere a otros paquetes TCP excepto HTTP/HTTPS y paquetes de otros protocolos que no se pueden analizar. Dado que el contenido real de dichos paquetes no se puede analizar, se clasifican uniformemente como other
, como se muestra en la siguiente figura: - También podemos ver la distribución de diferentes contenidos de paquetes según la línea de tiempo. El gráfico de varias líneas en la parte inferior muestra los cambios de tendencia de varios contenidos de paquetes, mientras que el gráfico circular en la parte superior interactúa con el mouse. Cuando el mouse se mueve sobre el eje x del gráfico de múltiples líneas, el gráfico circular mostrará las estadísticas y proporciones de varios contenidos de paquetes en el momento actual en el eje x en tiempo real, como se muestra en la siguiente figura:
- De manera similar, el gráfico de línea de tiempo también se divide en aguas arriba y aguas abajo, como se muestra en la siguiente figura, que muestra los datos aguas abajo:
Página de almacén de paquetes
- En esta página, podemos ver los datos básicos de cada ataque, como ID de ataque/tiempo de ataque/número de tramas de datos ascendentes/número de tramas de datos descendentes, etc. También podemos operar en cada proceso de ataque, volver a analizar o eliminar todos. paquetes relacionados y resultados de análisis, como se muestra en la siguiente figura:
Contribución