LISEZMOI
Cette application résout le problème des attaques LAN et du reniflage de données. Il peut effectuer des attaques point à point sur n'importe quel terminal cible du réseau local pour détecter les données Internet en amont et en aval du terminal cible. Visant l'hétérogénéité multi-sources et la nature en temps réel des données réseau, un moteur de détection et de surveillance ciblé est conçu en combinaison avec les caractéristiques NoSQL naturelles 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. Configuration de l'environnement
1) macOS
Téléchargements et installations de logiciels requis
- Java (ne sélectionnez pas 64 bits) : téléchargement Java
- MongoDB (vous devez choisir 3.4.24) : Téléchargement de MongoDB
- WinPcap le plus récent : WinPcap Télécharger
- Wireshark : Télécharger Wireshark
- Maven, NodeJS
Configurations requises
- Activez le transfert IP :
sudo sysctl -w net.inet.ip.forwarding=1
. Vérifiez si le transfert IP est activé (doit être 1) : sudo sysctl -a | grep net.inet.ip.forwarding
. Après le redémarrage du système, le transfert IP reviendra à l'état désactivé par défaut, il doit donc être réactivé ; sinon, la cible attaquée ne pourra pas accéder normalement à Internet. - Ajoutez le chemin absolu du répertoire bin dans le répertoire d'installation de MongoDB au chemin de la variable d'environnement pour démarrer le service MongoDB à partir de la ligne de commande.
- Copiez
libjpcap.jnilib
dans /Library/Java/Extensions/
. - Assurez-vous que le serveur exécutant ce programme et le téléphone mobile cible sont connectés au même routeur via Wi-Fi.
- Accédez au répertoire racine du code dans la ligne de commande, compilez et empaquetez à l'aide de Maven :
mvn package -Dmaven.test.skip=true
, copiez jpcap-mitm.jar
dans n'importe quel répertoire en tant que répertoire de travail et créez un data/db
dossier dans ce répertoire de travail en tant que dossier de données MongoDB. - Ouvrez le package Wireshark dmg téléchargé, vous verrez un package
Install ChmodBPF.pkg
, double-cliquez pour installer ce package logiciel.
Étapes de démarrage
- Ouvrez le terminal, accédez au répertoire de travail spécifié et exécutez
mongod --dbpath=data/db
. Après quelques secondes, attendez que le service MongoDB s'exécute avec succès et imprimez un journal similaire à : *** en attente de connexions sur le port 27017. - Cliquez sur le bouton Démarrer de Windows en bas à gauche, tapez
cmd
, puis cliquez avec le bouton droit pour exécuter la ligne de commande en tant qu'administrateur. Accédez à D:mitm
dans la ligne de commande, puis exécutez java -jar jpcap-mitm.jar
. Attendez que le service s'exécute avec succès et imprimez un journal similaire à : *** Application démarrée en ** secondes. - Ouvrez le navigateur Chrome et accédez à
http://localhost:8888
, ou accédez au programme à distance depuis un autre appareil via http://<local IP>:8888
. - Après avoir ouvert avec succès le site de gestion de ce programme, sélectionnez la bonne carte réseau dans
Select interface
, définissez l'IP et le MAC locaux, l'IP et le MAC mobiles cibles, l'IP et le MAC de la passerelle (routeur). Notez qu’il s’agit toutes d’adresses IP de réseau interne et qu’elles doivent se trouver sur le même sous-réseau. - L'IP et le MAC du téléphone mobile cible peuvent être consultés dans les informations de connexion Wi-Fi sur le téléphone. Si vous ne connaissez pas l'adresse IP et le MAC locaux ou l'adresse IP et le MAC du routeur, entrez
ifconfig
dans le terminal pour rechercher l'adresse IPv4, l'adresse physique et la passerelle par défaut. Exécutez arp -a
pour trouver le MAC de la passerelle. - Après avoir défini les informations ci-dessus, cliquez sur le bouton de configuration, l'application établira alors la connexion correspondante. À chaque démarrage du programme, vous pouvez réinitialiser la connexion, mais une fois définie, elle ne peut plus être modifiée. Pour réinitialiser, fermez le processus
jpcap-mitm.jar
dans la fenêtre de ligne de commande en appuyant sur control+c
, puis redémarrez le programme. - Avant de lancer l'attaque, essayez d'utiliser le téléphone mobile cible pour accéder à des sites Web ou à des applications. Assurez-vous que le téléphone peut accéder normalement à Internet sans lancer l’attaque.
- Après avoir cliqué sur démarrer l'attaque, attendez quelques secondes que l'attaque prenne effet et affichez la barre dynamique. Vérifiez les données sur le panneau de statistiques en temps réel ci-dessous et utilisez le téléphone mobile cible pour accéder à des sites Web ou à des applications afin de voir les mises à jour du panneau de données.
- Après avoir terminé les fonctions du site Web ou de l'application, cliquez sur Arrêter l'attaque. L'attaque s'arrêtera immédiatement, mais le serveur a capturé un grand nombre de paquets qui doivent être stockés séquentiellement, de sorte que les données du panneau de statistiques en temps réel peuvent continuer à augmenter lentement pendant quelques minutes avant de s'arrêter.
- Après avoir arrêté l'attaque, attendez quelques secondes le message indiquant que l'analyse des paquets est terminée. Vous pouvez ensuite sélectionner l'ID de lot (dernier ID) de cette attaque sur les pages d'analyse, de statistiques et de vidage pour afficher le contenu et les graphiques détaillés.
Remarques
- Si une invite d'erreur Web apparaît, vérifiez si le package jar de ligne de commande s'est fermé anormalement. Le programme est peut-être tombé en panne. Essayez de redémarrer le pot. Faites attention au journal de ligne de commande du programme. Si des erreurs sont continuellement générées, le programme peut ne pas être en mesure de détecter les paquets normalement. Essayez de redémarrer le pot.
- Si la liaison IP/MAC statique est activée sur le routeur, DHCP désactivé ou des modules de défense contre les attaques ARP, le programme peut intercepter uniquement les paquets en amont et non les paquets en aval. Si les paramètres du routeur ne peuvent pas être configurés, passez à un autre équipement et attaquez à nouveau. Si le périphérique passerelle est très puissant, l’attaque risque de ne pas réussir complètement.
- Après avoir lancé l'attaque, si la cible peut accéder à Internet normalement mais qu'aucun paquet n'est détecté dans la page de gestion du programme, ou si la cible ne peut pas accéder à Internet, vérifiez si le transfert IP est activé sur le système, vérifiez soigneusement l'adresse IP et le MAC de tous. appareils configurés sur le Web, vérifiez si l'interface de la carte réseau sélectionnée est correcte, vérifiez si le serveur et le téléphone mobile cible sont connectés au même routeur, vérifiez si l'adresse IP du téléphone mobile cible a changé (peut être une adresse IP fixe), vérifiez si la fenêtre de ligne de commande exécutant le pot est exécutée en tant que administrateur, essayez de redémarrer l'ordinateur et attendez plusieurs minutes avant de réessayer.
- L'attaque ne doit pas durer trop longtemps, quelques dizaines de secondes sont optimales. Après le test, arrêtez l'attaque pour éviter des attaques continues sur la cible et la passerelle provoquant une tempête de données dans le réseau local, ce qui pourrait surcharger la passerelle et provoquer le crash de l'ensemble du réseau local.
2) Fenêtres
Téléchargements et installations de logiciels requis
- Java (ne sélectionnez pas 64 bits) : téléchargement Java
- MongoDB (vous devez choisir 3.4.24) : Téléchargement de MongoDB
- WinPcap le plus récent : WinPcap Télécharger
- Maven, NodeJS
Configurations requises
- Activer le transfert IP : cliquez sur le bouton Démarrer de Windows en bas à gauche, tapez
regedit
, puis sélectionnez l'éditeur de registre. Cliquez avec le bouton droit pour exécuter l'éditeur de registre en tant qu'administrateur. Accédez à la clé de registre HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
, sélectionnez l'élément IPEnableRouter
et modifiez la valeur sur 1. - Ajoutez le chemin absolu du répertoire bin dans le répertoire d'installation de MongoDB au chemin de la variable d'environnement pour démarrer le service MongoDB à partir de la ligne de commande.
- Créez un répertoire de travail pour ce programme. Par exemple, créez le dossier
D:mitm
comme répertoire de travail. Dans le même répertoire racine que le répertoire de travail, créez le dossier de données MongoDB data/db
. Par exemple, si le répertoire racine est D
, créez le dossier D:datadb
. - Assurez-vous que le serveur exécutant ce programme et le téléphone mobile cible sont connectés au même routeur via Wi-Fi.
- Accédez au répertoire racine du code dans la ligne de commande, compilez et empaquetez à l'aide de Maven :
mvn package -Dmaven.test.skip=true
, copiez jpcap-mitm.jar
et Jpcap.dll
dans le répertoire de travail et créez un data/db
dans ce répertoire de travail en tant que dossier de données MongoDB.
Étapes de démarrage
- Cliquez sur le bouton Démarrer de Windows en bas à gauche, tapez
cmd
, puis cliquez avec le bouton droit pour exécuter la ligne de commande en tant qu'administrateur. Accédez à D:
, puis exécutez mongod
. Après quelques secondes, attendez que le service MongoDB s'exécute avec succès et imprimez un journal similaire à : *** en attente de connexions sur le port 27017. N'utilisez pas le bouton gauche de la souris pour sélectionner un contenu dans la fenêtre de ligne de commande. L'état sélectionné entraînera la suspension du service. - Cliquez sur le bouton Démarrer de Windows en bas à gauche, tapez
cmd
, puis cliquez avec le bouton droit pour exécuter la ligne de commande en tant qu'administrateur. Accédez à D:mitm
dans la ligne de commande, puis exécutez java -jar jpcap-mitm.jar
. Attendez que le service s'exécute avec succès et imprimez un journal similaire à : *** Application démarrée en ** secondes. - Ouvrez le navigateur Chrome et accédez à
http://localhost:8888
, ou accédez au programme à distance depuis un autre appareil via http://<local IP>:8888
. - Après avoir ouvert avec succès le site de gestion de ce programme, sélectionnez la bonne carte réseau dans
Select interface
, définissez l'IP et le MAC locaux, l'IP et le MAC mobiles cibles, l'IP et le MAC de la passerelle (routeur). Notez qu’il s’agit toutes d’adresses IP de réseau interne et qu’elles doivent se trouver sur le même sous-réseau. - L'IP et le MAC du téléphone mobile cible peuvent être consultés dans les informations de connexion Wi-Fi sur le téléphone. Si vous ne connaissez pas l'IP et le MAC locaux ou l'IP et le MAC du routeur, cliquez sur le bouton Démarrer de Windows en bas à gauche, tapez
cmd
, puis cliquez avec le bouton droit pour exécuter la ligne de commande en tant qu'administrateur. Entrez ipconfig /all
dans la ligne de commande pour rechercher la section Wi-Fi de l'adaptateur LAN sans fil, recherchez l'adresse IPv4, l'adresse physique et la passerelle par défaut. Exécutez arp -a
pour trouver le MAC de la passerelle. - Après avoir défini les informations ci-dessus, cliquez sur le bouton de configuration, l'application établira alors la connexion correspondante. À chaque démarrage du programme, vous pouvez réinitialiser la connexion, mais une fois définie, elle ne peut plus être modifiée. Pour réinitialiser, fermez le processus
jpcap-mitm.jar
dans la fenêtre de ligne de commande en appuyant sur control+c
, puis redémarrez le programme. - Avant de lancer l'attaque, essayez d'utiliser le téléphone mobile cible pour accéder à des sites Web ou à des applications. Assurez-vous que le téléphone peut accéder normalement à Internet sans lancer l’attaque.
- Après avoir cliqué sur démarrer l'attaque, attendez quelques secondes que l'attaque prenne effet et affichez la barre dynamique. Vérifiez les données sur le panneau de statistiques en temps réel ci-dessous et utilisez le téléphone mobile cible pour accéder à des sites Web ou à des applications afin de voir les mises à jour du panneau de données.
- Après avoir terminé les fonctions du site Web ou de l'application, cliquez sur Arrêter l'attaque. L'attaque s'arrêtera immédiatement, mais le serveur a capturé un grand nombre de paquets qui doivent être stockés séquentiellement, de sorte que les données du panneau de statistiques en temps réel peuvent continuer à augmenter lentement pendant quelques minutes avant de s'arrêter.
- Après avoir arrêté l'attaque, attendez quelques secondes le message indiquant que l'analyse des paquets est terminée. Vous pouvez ensuite sélectionner l'ID de lot (dernier ID) de cette attaque sur les pages d'analyse, de statistiques et de vidage pour afficher le contenu et les graphiques détaillés.
Remarques
- Si une invite d'erreur Web apparaît, vérifiez si le package jar de ligne de commande s'est fermé anormalement. Le programme est peut-être tombé en panne. Essayez de redémarrer le pot. Faites attention au journal de ligne de commande du programme. Si des erreurs sont continuellement générées, le programme peut ne pas être en mesure de détecter les paquets normalement. Essayez de redémarrer le pot.
- Si la liaison IP/MAC statique est activée sur le routeur, DHCP désactivé ou des modules de défense contre les attaques ARP, le programme peut intercepter uniquement les paquets en amont et non les paquets en aval. Si les paramètres du routeur ne peuvent pas être configurés, passez à un autre équipement et attaquez à nouveau. Si le périphérique passerelle est très puissant, l’attaque risque de ne pas réussir complètement.
- Après avoir lancé l'attaque, si la cible peut accéder à Internet normalement mais qu'aucun paquet n'est détecté dans la page de gestion du programme, ou si la cible ne peut pas accéder à Internet, vérifiez si le transfert IP est activé sur le système, vérifiez soigneusement l'adresse IP et le MAC de tous. appareils configurés sur le Web, vérifiez si l'interface de la carte réseau sélectionnée est correcte, vérifiez si le serveur et le téléphone mobile cible sont connectés au même routeur, vérifiez si l'adresse IP du téléphone mobile cible a changé (peut être une adresse IP fixe), vérifiez si la fenêtre de ligne de commande exécutant le pot est exécutée en tant que administrateur, essayez de redémarrer l'ordinateur et attendez plusieurs minutes avant de réessayer.
- Si la dénomination dans la liste des interfaces de la carte réseau ne permet pas de déterminer laquelle sélectionner, ouvrez l'éditeur de registre et vérifiez la clé de registre
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfaces{*}
. Cette liste correspond à la liste des interfaces. Vérifiez chaque élément d'interface tour à tour et voyez quelle configuration correspond à l'adresse IP actuelle du serveur, en indiquant l'interface que nous devons sélectionner. - L'attaque ne doit pas durer trop longtemps, quelques dizaines de secondes sont optimales. Après le test, arrêtez l'attaque pour éviter des attaques continues sur la cible et la passerelle provoquant une tempête de données dans le réseau local, ce qui pourrait surcharger la passerelle et provoquer le crash de l'ensemble du réseau local.
2. Description du programme
L'interface frontale de ce projet est la suivante
Page d'attaque LAN
- Dans cette interface, définissez la carte réseau ainsi que l'IP et le MAC de la machine/cible/passerelle locale, définissez la liste des domaines surveillés (un domaine ou plusieurs domaines séparés par des virgules), puis contrôlez le démarrage ou l'arrêt de l'attaque.
- La première étape consiste à effectuer les réglages nécessaires. Ces réglages ne peuvent être effectués qu'après chaque nouveau démarrage du programme. Les informations seront enregistrées dans la base de données et le programme lira automatiquement ces informations lors de son prochain démarrage. Lorsque le programme est démarré pour la première fois, il lira automatiquement l'adresse IP et le MAC locales. Cela doit être soigneusement confirmé pour être exact. La carte réseau doit sélectionner le périphérique de carte réseau utilisé pour l'accès Internet normal. La cible fait référence au téléphone mobile ou à d’autres appareils que nous devons surveiller. La passerelle fait généralement référence au routeur ou à d'autres appareils de passerelle auxquels nous sommes connectés via Wi-Fi. Toutes les informations ci-dessus doivent être strictement configurées correctement, sinon le programme ne pourra pas fonctionner normalement. L'interface de configuration est illustrée dans la figure ci-dessous :
- L'adresse IP et le MAC de la passerelle peuvent être visualisés sur le périphérique de passerelle, ou ils peuvent également être visualisés à partir de la table de routage locale, comme indiqué dans la figure ci-dessous :
- Lorsque nous aurons terminé la configuration et sauvegardé ou lancé l'attaque, la liste d'adresses de noms de domaine à surveiller sera résolue par DNS et la liste IP correspondante sera mise à jour vers MongoDB, puis l'attaque LAN et le reniflage de données commenceront officiellement. L'interface affichera l'état de l'attaque, comme le montre la figure ci-dessous :
- À ce stade, vous pouvez faire glisser la page vers la partie inférieure pour afficher les statistiques de détection de paquets. La partie statistiques est principalement divisée en deux types : en amont et en aval, qui sont ensuite divisés en quatre types TCP/UDP/ICMP/ARP. En amont signifie les paquets envoyés depuis la cible et en aval signifie les paquets reçus par la cible. Si la cible ne parcourt pas la liste de domaines spécifiée à ce moment-là, toutes les statistiques seront toujours 0. Si elle commence à parcourir la liste de domaines spécifiée, vous pouvez voir que les statistiques commencent à contenir des données, comme le montre la figure ci-dessous :
- Lorsque nous arrêtons l'attaque, une analyse détaillée des paquets de cette attaque démarre automatiquement. Une fois l'attaque terminée, une invite contextuelle s'affichera également, comme le montre la figure ci-dessous :
Page d'analyse des paquets
- Dans cette interface, il indiquera d'abord si le processus d'analyse des paquets est en cours. S'il est toujours en cours d'analyse, vous devez attendre la fin de l'analyse avant de visualiser les résultats. Une fois l'analyse terminée, le statut passera automatiquement à terminé et vous pourrez afficher les résultats de l'analyse.
- Tout d’abord, nous pouvons choisir un filtre de paquets : ID de lot d’attaque/amont ou aval/protocole/contenu. Chaque élément de filtre peut être sélectionné plusieurs fois ou laissé vide, ce qui signifie que tous les types correspondent. Après avoir cliqué sur filtre, le premier tableau ci-dessous affichera tous les paquets correspondants après analyse. Notez que les paquets ici sont différents de ceux de l'interface d'attaque. Les paquets ici sont tous des paquets combinés, tandis que ceux de l'interface d'attaque sont des trames originales. Par conséquent, le nombre de paquets ici est beaucoup plus petit qu’auparavant. Dans le premier tableau, nous pouvons voir tous les champs importants des paquets, y compris certains champs après analyse (comme en-tête HTTP/corps HTTP/MÉTHODE, etc.), comme le montre la figure ci-dessous :
- Après avoir cliqué sur n'importe quelle ligne du premier tableau, consultez le deuxième tableau ci-dessous pour voir quelles trames de données d'origine correspondent à ce paquet. Nous pouvons voir ici quelques champs de trame de base de ces paquets, comme le montre la figure ci-dessous :
Page Statistiques des paquets
- De même, dans cette interface, il indiquera d'abord si le processus d'analyse des paquets est en cours. S'il est toujours en cours d'analyse, vous devez attendre la fin de l'analyse avant de visualiser les résultats. Une fois l'analyse terminée, le statut passera automatiquement à terminé et vous pourrez afficher les résultats de l'analyse.
- Tout d'abord, nous pouvons filtrer en fonction du lot d'attaques, qui peut être multi-sélectionné ou laissé vide, ce qui signifie que tous les lots d'attaques correspondent, comme le montre la figure ci-dessous :
- Après avoir cliqué sur filtre, vous pouvez d'abord voir les statistiques de paquets de divers types de protocoles détaillés, principalement divisés en deux catégories : en amont et en aval, chacune étant divisée en types de protocole HTTP/HTTPS/TCP/UDP/ICMP/ARP. Notez que TCP fait ici référence à d'autres types de protocoles TCP, à l'exception de HTTP et HTTPS, tandis que HTTP et HTTPS sont spécialement et couramment analysés et comptés séparément. L'interface de statistiques est présentée dans la figure ci-dessous :
- En continuant à regarder vers le bas, vous pouvez également voir des diagrammes circulaires de chaque type de protocole, divisés en deux catégories : en amont et en aval, comme le montre la figure ci-dessous :
- De même, vous pouvez également voir des diagrammes circulaires de chaque type de contenu, divisés en deux catégories : en amont et en aval, où
other
fait référence à d'autres paquets TCP à l'exception de HTTP/HTTPS et aux paquets d'autres protocoles qui ne peuvent pas être analysés. Étant donné que le contenu réel de ces paquets ne peut pas être analysé, ils sont uniformément classés comme other
, comme le montre la figure ci-dessous : - Nous pouvons également voir la distribution des différents contenus des paquets en fonction de la chronologie. Le graphique multiligne en bas montre les changements de tendance des différents contenus de paquets, tandis que le graphique circulaire en haut interagit avec la souris. Lorsque la souris se déplace sur l'axe des X du graphique multiligne, le diagramme circulaire affiche les statistiques et les proportions des différents contenus de paquets à l'heure actuelle sur l'axe des X en temps réel, comme le montre la figure ci-dessous :
- De même, le graphique chronologique est également divisé en amont et en aval, comme le montre la figure ci-dessous, qui montre les données en aval :
Page Entrepôt de paquets
- Dans cette page, nous pouvons voir les données de base de chaque attaque, telles que l'ID d'attaque/le temps d'attaque/le nombre de trames de données en amont/le nombre de trames de données en aval, etc. Nous pouvons également opérer sur chaque processus d'attaque, réanalyser ou supprimer tous paquets associés et résultats d’analyse, comme le montre la figure ci-dessous :
Contribution