Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/mandiant/flare-fakenet-ng
Sniffing et Analyse de PaquetsAnalyse Dynamique (Sandboxing)Sécurité RéseauAnalyse de MalwareTests d'Intrusion
GitHubmandiant/flare-fakenet-ng

flare-fakenet-ng

FakeNet-NG - Outil d'analyse dynamique de réseau de nouvelle génération

Voir le dépôt
2.2k376il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

root@kitploit:~
|  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
| |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __
|  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
|_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|

       D   O   C   U   M   E   N   T   A   T   I   O   N

FakeNet-NG 3.5 est un outil d'analyse réseau dynamique de nouvelle génération pour les analystes de logiciels malveillants et les testeurs d'intrusion. Il est open source et conçu pour les dernières versions de Windows (et Linux, pour certains modes de fonctionnement). FakeNet-NG est basé sur l'excellent outil Fakenet développé par Andrew Honig et Michael Sikorski.

L'outil vous permet d'intercepter et de rediriger tout ou partie du trafic réseau tout en simulant des services réseau légitimes. En utilisant FakeNet-NG, les analystes de logiciels malveillants peuvent rapidement identifier la fonctionnalité des malwares et capturer des signatures réseau. Les testeurs d'intrusion et les chasseurs de bugs trouveront le moteur d'interception configurable et le cadre modulaire de FakeNet-NG très utiles lors des tests de fonctionnalités spécifiques d'applications et du prototypage de PoCs.

Installation

Vous pouvez installer FakeNet-NG de plusieurs façons. Notez que les processus d'installation suivants récupèreront des bibliothèques open-source tierces utilisées par FakeNet-NG sur votre système. Ces bibliothèques seront chargées dynamiquement au moment de l'exécution, et certaines de ces bibliothèques peuvent être sous licence LGPL.

Exécutable autonome

Il est plus simple de télécharger la version compilée qui peut être obtenue depuis la page des versions :

root@kitploit:~
https://github.com/mandiant/flare-fakenet-ng/releases

Exécutez FakeNet-NG en lançant 'fakenet.exe'.

C'est la méthode préférée pour utiliser FakeNet-NG sur Windows car elle ne nécessite pas l'installation de modules supplémentaires, ce qui est idéal pour une machine d'analyse de logiciels malveillants.

REMARQUE : FakeNet-NG peut être signalé comme malveillant par les solutions Antivirus (AV) et de Détection et Réponse des Points d'Accès (EDR) (par exemple, Windows Defender, Navigation sécurisée de Chrome). Cela est probablement dû à sa capacité à modifier le trafic réseau et à simuler des services réseau, en plus de l'utilisation de PyInstaller pour construire les exécutables de version. Les binaires de version officiels sont sûrs et ces détections doivent être considérées comme des faux positifs. Pour rappel, FakeNet-NG est conçu et fortement recommandé pour une utilisation dans un environnement contrôlé et isolé, tel qu'une Machine Virtuelle (VM), où il peut modifier en toute sécurité les paramètres réseau du système.

Installation du module

  1. Installez Python 3.10.11 et la dernière version de pip pour Windows/Linux.

  2. Sur Windows, téléchargez et installez Visual C++ build tools.

    L'installation sur Linux nécessite les dépendances suivantes :

    • Gestionnaire de paquets Python pip (par exemple python-pip pour Ubuntu).
    • Fichiers de développement Python (par exemple python-dev pour Ubuntu).
    • Fichiers de développement OpenSSL (par exemple libssl-dev pour Ubuntu).
    • Fichiers de développement libffi (par exemple libffi-dev pour Ubuntu).
    • Fichiers de développement libnetfilterqueue (par exemple libnetfilter-queue-dev pour Ubuntu).

    Installez ces dépendances en utilisant la commande suivante :

    root@kitploit:~
     sudo apt-get install build-essential python3.10-dev libnetfilter-queue-dev
    
  3. Installez FakeNet-NG en tant que module Python en utilisant pip :

    root@kitploit:~
     python -m pip install https://github.com/mandiant/flare-fakenet-ng/zipball/master
    

    Ou en obtenant le dernier code source et en l'installant manuellement :

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng/
    
  4. Installez les dépendances Python en exécutant les commandes suivantes avec des privilèges d'administrateur :

    Sous Linux (testé sur Ubuntu 24.04.2 LTS), exécutez les commandes suivantes avant d'exécuter setup.py :

    root@kitploit:~
     python -m pip install --upgrade setuptools
     
     # build wheel for python 3.10
     python -m pip install --force-reinstall netifaces
     
     # Observed "ModuleNotFoundError: No module named '_cffi_backend'" error while testing
     # This will get the required version of cffi packages for cryptography
     python -m pip install --upgrade cryptography
    

Aucune installation

Enfin, si vous souhaitez éviter d'installer FakeNet-NG et simplement l'exécuter tel quel (par exemple pour le développement), vous devez obtenir le code source et installer les dépendances comme suit :

  1. Installez Python 3.10.11 64 bits ou 32 bits pour les versions 64 bits ou 32 bits de Windows/Linux respectivement.

  2. Sous Windows, installez les dépendances Python en exécutant les commandes suivantes avec des privilèges d'administrateur :

    root@kitploit:~
     python -m pip install pydivert dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
    

    REMARQUE : pydivert téléchargera et installera également la bibliothèque et le pilote WinDivert dans le répertoire %PYTHONHOME%\DLLs. FakeNet-NG intègre ces fichiers, ils ne sont donc pas nécessaires pour une utilisation normale.

    Sous Linux, installez les dépendances Python en exécutant les commandes suivantes avec des privilèges d'administrateur :

    root@kitploit:~
     python -m pip install --upgrade setuptools
     
     # build wheel for python 3.10
     python -m pip install --force-reinstall netifaces
     
     # Observed "ModuleNotFoundError: No module named '_cffi_backend'" error while testing
     # This will get the required version of cffi packages for cryptography
     python -m pip install --upgrade cryptography
    
     python -m pip install netfilterqueue dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
    

    Vous pouvez éventuellement installer le module suivant utilisé pour les tests :

    root@kitploit:~
     python -m pip install requests
    
  3. Téléchargez le code source de FakeNet-NG :

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng
    
  4. Sous Linux, libérez le port 53 pour l'écoute DNS :

Utilisation

La façon la plus simple d'exécuter FakeNet-NG est d'exécuter simplement l'exécutable fourni en tant qu'Administrateur. Vous pouvez fournir le paramètre de ligne de commande --help pour obtenir une aide simple :

root@kitploit:~
C:\tools\fakenet-ng>fakenet.exe --help
______      _  ________ _   _ ______ _______     _   _  _____
|  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
| |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __
|  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
|_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|

                        Version 3.5
_____________________________________________________________
                Developed by FLARE Team
    Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
_____________________________________________________________

Usage: python -m fakenet.fakenet [options]:

Options:
-h, --help            show this help message and exit
-c FILE, --config-file=FILE
                    configuration filename
-v, --verbose       print more verbose messages (default: False)
-l LOG_FILE, --log-file=LOG_FILE
-s, --log-syslog    Log to syslog via /dev/log  (default: False)
-f STOP_FLAG, --stop-flag=STOP_FLAG
                    terminate if stop flag file is created
-p, --no-pause      disable pause for confirmation before closing the console 
                    (default: pause)
-n, --no-console-output
                    Suppress console output (for testing on Linux)

Comme vous pouvez le voir dans l'aide simple ci-dessus, il est possible de configurer le fichier de configuration utilisé pour démarrer FakeNet-NG. Par défaut, l'outil utilise configs\default.ini ; cependant, il peut être modifié avec le paramètre -c. Il existe plusieurs exemples de fichiers de configuration dans le répertoire configs. En raison du grand nombre de paramètres différents, FakeNet-NG s'appuie sur les fichiers de configuration pour contrôler sa fonctionnalité.

REMARQUE : FakeNet-NG tentera de localiser le fichier de configuration spécifié, d'abord en utilisant le chemin absolu ou relatif fourni au cas où vous souhaiteriez stocker toutes vos configurations. Si le fichier de configuration spécifié n'est pas trouvé, il essaiera alors de chercher dans son répertoire configs.

Les autres options de ligne de commande vous permettent de contrôler la quantité de sortie de journalisation affichée ainsi que de la rediriger vers un fichier plutôt que de l'afficher à l'écran.

Exécution simple

Avant de plonger et d'exécuter FakeNet-NG, passons en revue quelques concepts de base. L'outil est composé de plusieurs modules travaillant ensemble. L'un de ces modules importants est le Diverter, qui est responsable de la redirection du trafic vers une collection d'écouteurs. Le Diverter force les applications à interagir avec FakeNet-NG plutôt qu'avec de véritables serveurs. Les écouteurs sont des services individuels gérant les connexions entrantes et nous permettant d'examiner le trafic de l'application (par exemple, les signatures de logiciels malveillants).

Lançons FakeNet-NG avec les paramètres par défaut en exécutant la commande suivante :

root@kitploit:~
C:\tools\fakenet-ng>fakenet.exe

Ci-dessous se trouve le journal de sortie annoté illustrant une requête DNS interceptée et une connexion HTTP :

root@kitploit:~
  ______      _  ________ _   _ ______ _______     _   _  _____
 |  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
 | |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __
 |  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
 | | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
 |_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|

                         Version  3.5
  _____________________________________________________________
                   Developed by FLARE Team
    Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
  _____________________________________________________________

07/06/16 10:20:52 PM [           FakeNet] Loaded configuration file: configs/default.ini
                                                                        /
                                            default configuration file /

07/06/16 10:20:52 PM [          Diverter] Capturing traffic to packets_20160706_222052.pcap
                                                                        /
                                                      PCAP output file /

07/06/16 10:20:52 PM [           FakeNet] Anonymous Forwarder listener on TCP port 8080...
                                    \
                                     \ Anonymous Listener rule

07/06/16 10:20:52 PM [    RawTCPListener] Starting...
07/06/16 10:20:52 PM [    RawUDPListener] Starting...
07/06/16 10:20:52 PM [  FilteredListener] Starting...
07/06/16 10:20:52 PM [        DNS Server] Starting...
07/06/16 10:20:52 PM [    HTTPListener80] Starting...
07/06/16 10:20:52 PM [   HTTPListener443] Starting...
07/06/16 10:20:52 PM [      SMTPListener] Starting...
07/06/16 10:20:52 PM [          Diverter] Starting...
                                       \
                                        \ Listeners starting up

07/06/16 10:20:52 PM [          Diverter] Diverting ports:
07/06/16 10:20:52 PM [          Diverter] TCP: 1337, 80, 443, 25
07/06/16 10:20:52 PM [          Diverter] UDP: 1337, 53
                                          /
               Summary of diverted ports /

07/06/16 10:21:03 PM [          Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [          Diverter]   from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [          Diverter]   to:   192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [          Diverter]   pid:  456 name: malware.exe
                                                            /
    Intercepted traffic to the DNS server from malware.exe /

07/06/16 10:21:03 PM [        DNS Server] Received A request for domain 'evil.com'.
                                       \
                                        \ Fake DNS Listener handling the above request

07/06/16 10:21:04 PM [          Diverter] Modifying outbound external TCP request packet:
07/06/16 10:21:04 PM [          Diverter]   from: 192.168.250.140:2179 -> 192.0.2.123:80
07/06/16 10:21:04 PM [          Diverter]   to:   192.168.250.140:2179 -> 192.168.250.140:80
07/06/16 10:21:04 PM [          Diverter]   pid:  456 name: malware.exe
                                                            /
    Intercepted traffic to the web server from malware.exe /

07/06/16 10:21:08 PM [    HTTPListener80] Received a GET request.
07/06/16 10:21:08 PM [    HTTPListener80] --------------------------------------------------------------------------------
07/06/16 10:21:08 PM [    HTTPListener80] GET / HTTP/1.0
07/06/16 10:21:08 PM [    HTTPListener80]
07/06/16 10:21:08 PM [    HTTPListener80] --------------------------------------------------------------------------------
                                       \
                                        \ Fake HTTP Listener handling the above request

Remarquez que chaque ligne de journal a le nom du module FakeNet-NG actuellement en cours d'exécution. Par exemple, lorsqu'il détourne le trafic, les journaux seront préfixés avec l'étiquette Diverter :

root@kitploit:~
07/06/16 10:21:03 PM [          Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [          Diverter]   from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [          Diverter]   to:   192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [          Diverter]   pid:  456 name: malware.exe

Parallèlement, lorsque des écouteurs individuels gèrent le trafic détourné, les journaux seront étiquetés avec le nom défini dans le fichier de configuration :

root@kitploit:~
07/06/16 10:21:03 PM [        DNS Server] Received A request for domain 'evil.com'.

Pour arrêter FakeNet-NG et enregistrer le fichier PCAP et le rapport HTML générés sur le disque, appuyez simplement sur CTRL-C :

root@kitploit:~
07/06/16 10:21:41 PM [           FakeNet] Stopping...
07/06/16 10:21:42 PM [    HTTPListener80] Stopping...
07/06/16 10:21:42 PM [   HTTPListener443] Stopping...
07/06/16 10:21:42 PM [      SMTPListener] Stopping...
07/06/16 10:21:43 PM [          Diverter] Stopping...
07/06/16 10:21:43 PM [          Diverter] Generated new HTML report: report_20160607_102143.html
[Press Enter to exit]

Attendez que le PCAP et le rapport soient générés, puis appuyez sur Entrée pour quitter. La fenêtre de console restera ouverte jusqu'à ce que vous le fassiez ; cela peut être désactivé (par exemple, dans les scripts) avec l'option --no-pause.

Interface utilisateur

Avec chaque session de FakeNet-NG, un rapport HTML contenant les Indicateurs Basés sur le Réseau (NBI) capturés tout au long de la session est généré. Lors de l'arrêt de FakeNet en appuyant sur CTRL-C, ce fichier HTML sera enregistré dans le répertoire racine de FakeNet. Un utilisateur peut consulter les NBI en visualisant ce fichier HTML dans un navigateur tel que Chrome ou Firefox.

Le rapport HTML sert d'Interface Graphique Utilisateur (GUI) interactive qui présente le résumé des NBI de manière conviviale. Il comprend diverses fonctionnalités pour sélectionner, filtrer et copier les NBI, ce qui facilite l'analyse réseau. L'interface organise tous les NBI en fonction de leurs informations de processus, puis les catégorise davantage par le protocole de couche application ou de couche transport qu'ils utilisent.

Tableau récapitulatif des NBI

Les informations dans le tableau récapitulatif des NBI sont présentées sous forme tabulaire et incluent les détails suivants :

  • Select : Cliquer sur la case à cocher sélectionne le NBI correspondant. Vous pouvez sélectionner plusieurs NBI dans différents protocoles ou dans le même protocole. La ligne entière peut également être sélectionnée en cliquant n'importe où dans la ligne. Les NBI sélectionnés peuvent être copiés à l'aide du bouton "Copier les NBI sélectionnés".

  • NBI : Cette cellule représente le NBI réellement capturé. Elle inclut les commandes, paramètres, URI et autres activités significatives générées par le client vers l'écouteur. Cette cellule résume le comportement du malware pour une meilleure compréhension.

  • Informations supplémentaires : Cette cellule fournit des informations supplémentaires sur chaque requête NBI, telles que le protocole de couche transport utilisé, l'IP de destination, le port, et le chiffrement SSL.

  • Actions : Cette cellule vous permet d'effectuer des actions sur des NBI individuels. Actuellement, seule la copie est prise en charge. Cliquer sur le bouton de copie copie les données de la cellule NBI spécifique dans un format markdown adapté à la création de rapports.

Fonctionnalités interactives

L'interface comprend également diverses fonctionnalités interactives :

  • Sélection par case à cocher : Des cases à cocher sont disponibles avant chaque bloc de processus et de protocole. Cochez une case pour sélectionner tous les NBI sous ce processus ou protocole. Cela est utile lorsque vous souhaitez sélectionner tous les NBI d'un processus ou d'un protocole particulier. Vous pouvez ensuite utiliser le bouton Copier les NBI sélectionnés pour copier les données sélectionnées.

  • Barre de recherche : La barre de recherche vous permet de saisir des mots-clés, et seules les lignes contenant ces mots-clés dans le nom du processus, le NBI ou les informations supplémentaires seront affichées dans la page HTML. Vous pouvez ensuite utiliser le bouton "Copier les données filtrées" pour copier les données affichées au format markdown. Effacer la requête de recherche restaure la vue du tableau d'origine.

  • Boutons de copie :

    • Copier les données sélectionnées : Copie tous les NBI sélectionnés au format markdown. Vous pouvez sélectionner des NBI individuels ou tous les NBI sous un processus en cochant les cases.
    • Copier les données filtrées : Copie les données des NBI filtrés au format markdown. Si aucune requête de recherche n'est utilisée, ce bouton copie l'ensemble des données.
    • Copier tous les NBI : Copie tous les NBI au format markdown présents dans la page HTML. Même si un filtre est appliqué, cliquer sur ce bouton copie tous les NBI.
  • Bouton d'avertissement : Affiche l'avertissement, qui souligne les faits importants que l'utilisateur doit prendre en compte avant de faire des hypothèses sur le résumé des NBI affiché.

  • Bouton Aller en haut : Apparaît lorsque le contenu de la page dépasse la zone visible. Cliquer sur ce bouton vous amène en haut de la page, où vous pouvez accéder aux boutons importants tels que Copier les NBI sélectionnés, Copier tous les NBI, , et la barre de recherche.

Configuration

Pour tirer pleinement parti des capacités de FakeNet-NG, nous devons comprendre sa structure de fichier de configuration et ses paramètres. Voici un exemple de fichier de configuration :

root@kitploit:~
###############################################################################
# Fakenet Configuration

[FakeNet]

DivertTraffic: Yes

###############################################################################
# Diverter Configuration

[Diverter]

NetworkMode:            Auto

LinuxRedirectNonlocal:  *
LinuxFlushIptables:     Yes
LinuxFlushDNSCommand:   service dns-clean restart

DumpPackets:            Yes
DumpPacketsFilePrefix:  packets

ModifyLocalDNS:         No
StopDNSService:         Yes

RedirectAllTraffic:     Yes
DefaultTCPListener:     RawTCPListener
DefaultUDPListener:     RawUDPListener

###############################################################################
# Listener Configuration

[DNS Server]
Enabled:     True
Port:        53
Protocol:    UDP
Listener:    DNSListener
DNSResponse: 192.0.2.123
NXDomains:   0
Hidden:      False

[RawTCPListener]
Enabled:     True
Port:        1337
Protocol:    TCP
Listener:    RawListener
UseSSL:      No
Timeout:     10
Hidden:      False

Le fichier de configuration est divisé en plusieurs sections.* [FakeNet] - Contrôle le comportement de l'application elle-même. La seule option valide à ce stade est DivertTraffic. Lorsqu'elle est activée, elle ordonne à l'outil de lancer le plugin Diverter approprié et d'intercepter le trafic. Si cette option est désactivée, FakeNet-NG lancera quand même les écouteurs, mais comptera sur une autre méthode pour diriger le trafic vers eux (par exemple, modifier manuellement le serveur DNS).

  • [Diverter] - Paramètres pour rediriger le trafic. Décrits en détail ci-dessous.

  • [Nom de l'écouteur] - Un ensemble de configurations d'écouteur. Chaque écouteur possède un ensemble de paramètres par défaut (par exemple, port, protocole) ainsi que des configurations spécifiques à l'écouteur (par exemple, DumpHTTPPosts pour HTTPListener).

Configuration du Diverter

En supposant que vous ayez activé le paramètre DivertTraffic dans le bloc de configuration [FakeNet], l'outil activera son moteur de redirection de trafic que nous appellerons Diverter à partir de maintenant, en référence à l'excellente bibliothèque WinDivert utilisée pour effectuer la magie en coulisse sur les plateformes Windows (l'implémentation Linux du Diverter utilise python-netfilterqueue).

Le Diverter examinera tous les paquets sortants et les comparera à une liste de protocoles et de ports des écouteurs activés. S'il existe un écouteur à l'écoute sur le port et le protocole du paquet, l'adresse de destination sera changée en l'adresse IP de la machine locale où l'écouteur traitera la requête. En même temps, les réponses provenant de l'écouteur seront modifiées de sorte que l'adresse IP source apparaisse comme si le paquet provenait de l'hôte initialement demandé.

Vous pouvez éventuellement activer le paramètre DumpPackets pour stocker tout le trafic observé par FakeNet-NG (redirigé ou transmis) dans un fichier PCAP. Il est possible de déchiffrer le trafic SSL entre une application interceptée et l'un des écouteurs prenant en charge SSL. Utilisez les instructions à la page suivante :

root@kitploit:~
https://wiki.wireshark.org/TLS

Les clés privkey.pem et server.pem utilisées par les serveurs de FakeNet-NG se trouvent dans le répertoire racine de l'application.

  • NetworkMode - Spécifiez le mode réseau dans lequel exécuter FakeNet-NG.
    • Les valeurs valides sont :
      • SingleHost : manipule le trafic des processus locaux.
      • MultiHost : manipule le trafic d'autres systèmes.
      • Auto : utilise le NetworkMode le plus fonctionnel sur la plateforme actuelle.
    • Toutes les plateformes ne supportent pas actuellement tous les paramètres NetworkMode. Voici l'état actuel du support :
      • Windows ne supporte que SingleHost
      • Linux supporte MultiHost et supporte expérimentalement le mode SingleHost (fonctionne à l'exception des listes noires et blanches de processus, ports et hôtes).
    • Pour l'instant, laissez ce paramètre sur Auto pour obtenir le mode SingleHost sous Windows et le mode MultiHost sous Linux.

Le Diverter supporte généralement le paramètre suivant lié au DNS :

  • ModifyLocalDNS - pointe le service DNS de la machine locale vers l'écouteur DNS de FakeNet-NG.

L'implémentation Windows du Diverter supporte le paramètre suivant lié au DNS :

  • StopDNSService - arrête le service client DNS Windows (Dnscache). Cela permet à FakeNet-NG de voir les processus réels qui résolvent les domaines plutôt que le processus générique 'svchost.exe'.

L'implémentation Linux du Diverter supporte les paramètres suivants :

  • LinuxRedirectNonlocal - Lors de l'utilisation de FakeNet-NG pour simuler la connectivité Internet pour un hôte différent, cela spécifie quelles interfaces réseau externes doivent être redirigées vers FakeNet-NG.

  • LinuxFlushIptables - Vide toutes les règles iptables avant d'ajouter des règles pour FakeNet-NG. Le Diverter Linux restaurera les anciennes règles tant que sa séquence de terminaison n'est pas interrompue.

  • LinuxFlushDnsCommand - Spécifiez la commande correcte pour votre distribution Linux pour vider le cache du résolveur DNS si applicable.

  • DebugLevel - Spécifiez les événements de débogage fins à afficher. Référez-vous à fakenet/diverters/linutil.py pour les étiquettes valides.

Rediriger tout le trafic

Par défaut, le Diverter n'intercepte que le trafic pour lequel un écouteur dédié a été créé. Cependant, en activant le paramètre RedirectAllTraffic et en configurant les gestionnaires TCP et UDP par défaut avec les paramètres DefaultTCPListener et DefaultUDPListener, il est possible de gérer dynamiquement le trafic vers des ports non explicitement définis dans l'un des écouteurs. Par exemple, regardons une configuration type qui redirige tout le trafic vers les écouteurs TCP et UDP locaux sur les ports 1234 :

root@kitploit:~
RedirectAllTraffic: Yes
DefaultTCPListener: TCPListener1234
DefaultUDPListener: UDPListener1234

NOTE : Nous anticipons un peu avec les définitions d'écouteurs, mais considérez simplement que TCPListener1234 et UDPListener1234 seront définis dans la section ci-dessous.

Avec le paramètre RedirectAllTraffic, FakeNet-NG modifiera non seulement l'adresse de destination, mais aussi le port de destination afin qu'il puisse être pris en charge par l'un des écouteurs par défaut. Voici un exemple de journal du trafic destiné à l'adresse IP externe 1.1.1.1 sur le port 4444 qui a été redirigé vers l'écouteur par défaut sur le port 1234 à la place :

root@kitploit:~
07/06/16 01:13:47 AM [          Diverter] Modifying outbound external TCP request packet:
07/06/16 01:13:47 AM [          Diverter]   from: 192.168.66.129:1650 -> 1.1.1.1:4444
07/06/16 01:13:47 AM [          Diverter]   to:   192.168.66.129:1650 -> 192.168.66.129:1234
07/06/16 01:13:47 AM [          Diverter]   pid:  3716 name: malware.exe

Il est important de noter que le trafic destiné au port de l'un des écouteurs explicitement définis sera toujours traité par cet écouteur et non par l'écouteur par défaut. Par exemple, l'écouteur UDP par défaut ne traitera pas le trafic DNS si un écouteur DNS séparé sur le port UDP 53 est défini.

Un problème lors de l'activation de l'option RedirectAllTraffic est que vous voudrez peut-être encore laisser passer une partie du trafic pour assurer le fonctionnement normal de la machine. Considérez un scénario où vous essayez d'analyser une application qui doit encore se connecter à un serveur DNS externe. Vous pouvez utiliser les paramètres BlackListPortsTCP et BlackListPortsUDP pour définir une liste de ports pour lesquels le trafic sera ignoré et transmis sans modification, ou BlackListIDsICMP (Windows uniquement) pour définir une liste d'ID ICMP à filtrer et ignorer :

root@kitploit:~
BlackListPortsUDP: 53

Parmi les autres paramètres du Diverter que vous pourriez considérer, citons ProcessBlackList et HostBlackList qui permettent au Diverter d'ignorer et de transmettre le trafic provenant d'un nom de processus spécifique ou destiné à un hôte spécifique respectivement.

Configurations des écouteurs

Les configurations des écouteurs définissent le comportement des écouteurs individuels. Regardons un exemple de configuration d'écouteur :

root@kitploit:~
[TCPListener1234]
Enabled:     True
Port:        1234
Protocol:    TCP
Listener:    RawListener
UseSSL:      Yes
Timeout:     10
Hidden:      False

La configuration ci-dessus se compose du nom d'écouteur TCPListener1234. Il sera utilisé à des fins de journalisation afin que vous puissiez distinguer les différents écouteurs gérant les connexions même s'ils traitent le même protocole.

Les paramètres suivants sont génériques pour tous les écouteurs :

  • Enabled - spécifie si l'écouteur est activé ou non.
  • Port - port TCP ou UDP sur lequel écouter.
  • Protocol - TCP ou UDP
  • Listener - Nom de l'écouteur pour gérer le trafic.
  • ProcessWhiteList - Seul le trafic provenant de ces processus sera modifié et le reste sera simplement transmis.
  • ProcessBlackList - Le trafic provenant de tous les processus sauf ceux-ci sera simplement transmis et le reste sera modifié si nécessaire.
  • HostWhiteList - Seul le trafic vers ces hôtes sera modifié et le reste sera simplement transmis.
  • HostBlackList - Le trafic vers ces hôtes sera simplement transmis et le reste sera modifié si nécessaire.
  • ExecuteCmd - Exécute une commande sur le premier paquet de connexion. Cette fonctionnalité est utile pour étendre les fonctionnalités de FakeNet-NG (par exemple, lancer un débogueur sur le pid connecté pour aider au dépaquetage et au décodage).
  • Hidden - N'autorise pas le trafic à être dirigé vers cet écouteur sans passer par le proxy qui déterminera le protocole en fonction du contenu du paquet.

Les paramètres Port et Protocol sont nécessaires pour que les écouteurs sachent sur quels ports se lier et, s'ils supportent plusieurs protocoles (par exemple RawListener), décident quel protocole utiliser. Ils sont également utilisés par le Diverter pour déterminer quels ports et protocoles rediriger.

Le paramètre Listener définit l'un des plugins d'écouteur disponibles pour gérer le trafic redirigé. La version actuelle de FakeNet-NG est livrée avec les écouteurs suivants :

  • DNSListener - prend en charge le protocole DNS et répond aux enregistrements A avec soit l'adresse IP de la machine locale, soit une adresse configurable dans le paramètre DNSResponse. Vous pouvez également définir l'attribut NXDomains sur le nombre de requêtes que l'écouteur doit ignorer. De cette façon, vous pourrez peut-être amener le malware à demander tous les noms de ses serveurs C2 de secours. L'écouteur prend en charge les protocoles TCP et UDP.
  • RawListener - prend en charge les protocoles binaires de base TCP et UDP. Le comportement par défaut consiste simplement à renvoyer les paquets reçus au client. Prend en charge les connexions SSL.
  • HTTPListener - prend en charge les protocoles HTTP et HTTPS. Répond avec différents fichiers dans le répertoire Webroot configurable en fonction de l'extension de fichier demandée. Optionnellement, vide les requêtes POST dans un fichier configurable qui peut être spécifié à l'aide des paramètres DumpHTTPPosts et DumpHTTPPostsFilePrefix.
  • SMTPListener - prend en charge le protocole SMTP.
  • ProxyListener- Détecte le protocole en fonction du contenu du paquet et redirige les paquets en conséquence.

NOTE : FakeNet-NG tentera de localiser le répertoire webroot, d'abord en utilisant les chemins absolus ou relatifs fournis. Si le chemin webroot spécifié n'est pas trouvé, il essaiera de chercher dans son répertoire defaultFiles.

Cas particulier : l'implémentation Windows du Diverter répond automatiquement à toutes les requêtes ICMP pendant son exécution. Ainsi, si un malware tente de ping un hôte pour tester la connectivité, il obtiendra une réponse valide. Le Diverter Linux journalise et transmet tous les paquets ICMP à localhost.

NOTE : Certains écouteurs peuvent gérer les téléchargements de fichiers (par exemple, TFTPListener et BITSListener). Tous les fichiers téléchargés seront stockés dans le répertoire de travail actuel avec un préfixe configurable (par exemple, "tftp_" pour les téléchargements TFTP).

Filtrage des écouteurs

FakeNet-NG prend en charge plusieurs règles de filtrage composées de listes noires et blanches de processus et d'hôtes. Les listes blanches sont traitées comme les règles qui autorisent les connexions aux écouteurs, tandis que les listes noires sont utilisées pour ignorer les connexions entrantes et les laisser simplement être transmises.

Par exemple, considérez la configuration ci-dessous avec des filtres de processus et d'hôtes :

root@kitploit:~
[FilteredListener]
Enabled:     True
Port:        31337
Protocol:    TCP
Listener:    RawListener
UseSSL:      No
Timeout:     10
ProcessWhiteList: malware.exe, ncat.exe
HostBlackList: 5.5.5.5

Le FilteredListener ci-dessus ne traitera que les connexions provenant des processus malware.exe et ncat.exe, mais ignorera toutes les connexions destinées à l'hôte 5.5.5.5. Cela signifie que si un processus appelé test.exe tentait de se connecter sur le port 31337, il ne sera pas redirigé vers l'écouteur et sera transmis là où il était initialement destiné si la route est disponible.

En même temps, si le processus malware.exe tentait de se connecter au port 31337 sur un hôte autre que 5.5.5.5, il sera redirigé vers le FilteredListener. Toute connexion du processus malware.exe destinée à 5.5.5.5 serait autorisée à passer.

Exécution de commandes sur les écouteurs

Un autre paramètre de configuration puissant est ExecuteCmd. Il vous permet essentiellement d'exécuter une commande arbitraire sur le premier paquet détecté de la connexion. La valeur de ExecuteCmd peut utiliser plusieurs variables de chaîne de format :

  • {pid} - identifiant du processus
  • {procname} - nom de l'exécutable du processus
  • {src_addr} - adresse source
  • {src_port} - port source
  • {dst_addr} - adresse de destination
  • {dst_port} - port de destination

Considérez un scénario d'un échantillon de malware empaqueté qui se connecte à un serveur C2 configuré sur le port 8443 (utilisez RedirectAllTraffic si le port n'est pas connu). Dans de nombreux cas, le malware se dépaqueterait au moment où il établit la connexion, ce qui rend ce point d'exécution idéal pour s'attacher au processus avec un débogueur et vider une version dépaquetée pour une analyse plus approfondie.

Voyons comment cela peut être utilisé pour lancer automatiquement un débogueur sur la première connexion :

root@kitploit:~
[C2Listener]
Enabled:     True
Port:        8443
Protocol:    TCP
Listener:    RawListener
UseSSL:      Yes
Timeout:     300
ProcessWhiteList: malware.exe
ExecuteCmd:  C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe -p {pid}

Une fois que FakeNet-NG détecte une nouvelle connexion provenant du processus autorisé malware.exe (ce paramètre est facultatif), il lancera automatiquement windbg et l'attachera au processus connecté.

NOTE : Vous voudrez peut-être prolonger le paramètre normal Timeout au cas où le malware aurait besoin d'interagir davantage avec l'écouteur.

Écouteur anonyme

Il existe un cas d'utilisation spécial où vous pouvez créer une nouvelle configuration d'écouteur sans définir l'écouteur réel pour le gérer :

root@kitploit:~
[Forwarder]
Enabled:     True
Port:        8080
Protocol:    TCP
ProcessWhiteList: chrome.exe

Sans écouteur défini, FakeNet-NG déviera toujours le trafic vers la machine locale, mais un écouteur séparé doit être lancé par l'utilisateur. Par exemple, vous pourriez avoir un proxy HTTP à l'écoute des connexions sur le port 8080 et laisser FakeNet-NG intercepter tout le trafic des applications qui n'utilisent pas les paramètres du serveur proxy du système ou qui utilisent des adresses IP codées en dur. En utilisant des écouteurs anonymes, vous pouvez apporter les capacités avancées de filtrage du trafic et des processus de FakeNet-NG aux outils tiers.

Vous pouvez également activer le paramètre ProcessBlackList du Diverter pour permettre à l'outil externe de communiquer vers Internet. Par exemple, pour permettre à un proxy HTTP de transmettre le trafic proxyé, ajoutez son nom de processus à la liste noire des processus. Par exemple, ajoutez le processus suivant pour laisser Burp Proxy communiquer vers Internet :

root@kitploit:~
ProcessBlackList: java.exe

Dans le scénario où l'application communique sur un port inconnu, mais que vous voulez toujours la rediriger vers l'écouteur anonyme sur le port 8080, vous pouvez définir l'écouteur par défaut comme suit :

root@kitploit:~
RedirectAllTraffic: Yes
DefaultTCPListener: ForwarderTCP
DefaultUDPListener: RawUDPListener

Enfin, pour permettre au trafic DNS de continuer à aller vers le serveur DNS par défaut sur Internet, tout en redirigeant tout autre trafic, ajoutez le port 53 à la liste noire des ports UDP du Diverter comme suit :

root@kitploit:~
BlackListPortsUDP:

Écouteur proxy

La dernière version de FakeNet-NG implémente un nouvel écouteur proxy capable de détecter dynamiquement le protocole de communication (y compris le trafic SSL) et de rediriger la connexion vers un écouteur approprié.

Vous pouvez configurer l'écouteur proxy pour qu'il fonctionne sur un port spécifique comme illustré dans la configuration ci-dessous :

root@kitploit:~
[ProxyTCPListener]
Enabled:    True
Protocol:   TCP
Listener:   ProxyListener
Port:       38926
Listeners:  HTTPListener, RawListener, FTPListener, DNSListener, POPListener, SMTPListener, TFTPListener, IRCListener, BITSListener
Hidden:     False

Notez le nouveau paramètre Listeners qui définit une liste de gestionnaires de protocole potentiels à essayer pour toutes les connexions entrantes.

Il est également recommandé de définir un écouteur proxy comme gestionnaire par défaut en mettant à jour les configurations de diverter suivantes :

root@kitploit:~
RedirectAllTraffic:    Yes
DefaultTCPListener:    ProxyTCPListener
DefaultUDPListener:    ProxyUDPListener

Avec l'écouteur par défaut pointant vers l'écouteur proxy, toutes les connexions inconnues seront correctement traitées. Vous pouvez toujours attribuer des écouteurs spécifiques à des ports pour imposer un protocole spécifique (par exemple, toujours utiliser l'écouteur HTTP pour le port 80).

Le proxy détermine le protocole des paquets en interrogeant tous les écouteurs disponibles avec la fonction taste(). Chaque écouteur qui implémente taste() répondra avec un score indiquant la probabilité que le protocole géré par cet écouteur corresponde au contenu du paquet. Le proxy transmettra le paquet à l'écouteur qui a renvoyé le score le plus élevé. Le RawListener renverra toujours un score de 1, il sera donc choisi dans le cas où tous les autres écouteurs renvoient 0, servant ainsi de valeur par défaut.

Les utilisateurs peuvent modifier le paramètre de configuration 'Hidden' dans la configuration de chaque écouteur. Si 'Hidden' est 'False', l'écouteur sera lié à un port spécifique et recevra automatiquement tout le trafic sur ce port. Avec 'Hidden' défini sur 'True', l'écouteur ne peut recevoir que le trafic redirigé via le proxy.

Développement

FakeNet-NG est développé en Python, ce qui vous permet de développer rapidement de nouveaux plugins et d'étendre les fonctionnalités existantes. Pour plus de détails, consultez Développer pour FakeNet-NG.

Problèmes connus

[WinError 87] Le paramètre est incorrect

Au moment de cette rédaction, la taille de tampon par défaut dans pydivert est de 1500. Si FakeNet-NG rencontre un paquet plus grand que la taille de tampon par défaut, vous pouvez observer cette erreur. Une solution de contournement consiste à spécifier la taille de tampon souhaitée dans self.handle.recv(bufsize=<votre_bufsize>) dans fakenet/diverters/windows. Voir ici

Ne fonctionne pas sur VMWare avec le mode hôte seul activé

Voir "N'intercepte pas le trafic" ci-dessous.

N'intercepte pas le trafic

Pour que FakeNet-NG intercepte et modifie le paquet, il doit exister une route réseau valide pour que le paquet atteigne sa destination.

Il existe un moyen simple de vérifier si vous avez correctement configuré les routes. Sans l'outil en cours d'exécution, essayez de pinguer l'hôte de destination. Vous devriez observer soit une réponse valide, soit un message de délai d'attente. Si vous recevez une erreur de destination inaccessible à la place, alors vous n'avez pas de route valide.

Ceci est généralement causé par une passerelle non définie ou inaccessible. Par exemple, sur une machine VMWare en mode hôte seul, votre machine n'aura pas la passerelle configurée, empêchant ainsi FakeNet-NG de voir le trafic.

Pour corriger ce problème, configurez manuellement votre interface principale sur la passerelle dans le même sous-réseau. Vérifiez d'abord le nom de l'interface :

root@kitploit:~
C:\>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Connected      Dedicated        Local Area Connection

Dans ce cas, le nom de l'interface est "Local Area Connection", nous allons donc l'utiliser pour le reste des commandes.Configurez manuellement l'adresse IP et la passerelle de l'interface comme suit :

root@kitploit:~
C:\>netsh interface ip set address name="Local Area Connection" static 192.168.249.123 255.255.255.0 192.168.249.254

Définissez manuellement l'adresse IP du serveur DNS

root@kitploit:~
C:\>netsh interface ip set dns name="Local Area Connection" static 4.2.2.2

Si vous rencontrez toujours un problème, assurez-vous que l'adresse IP de la passerelle elle-même est routable.

DNS ne résout pas les noms

Assurez-vous que l'écouteur DNS s'est correctement lié à son port. Des erreurs comme celles-ci indiquent que l'écouteur DNS ne s'est pas lié correctement :``` 05/01/17 11:11:16 AM [ FakeNet] Error starting DNSListener listener: 05/01/17 11:11:16 AM [ FakeNet] [Errno 98] Address already in use

root@kitploit:~
Utilisez `netstat`, `tcpview`, ou d'autres outils pour découvrir quelle application est liée au port, puis consultez la documentation du système d'exploitation ou de l'application correspondante pour désactiver le service.

Il peut être judicieux de prendre un instantané de la VM avant d'entreprendre la reconfiguration.

Par exemple, Ubuntu active couramment le service `dnsmasq` dans `/etc/NetworkManager/NetworkManager.conf` avec la ligne `dns=dnsmasq`. Désactiver ce service (par exemple en le commentant) et redémarrer le service `network-manager` (p. ex. `service network-manager restart`) est suffisant pour libérer le port avant de relancer FakeNet-NG.

Dans les versions plus récentes d'Ubuntu ou dans d'autres distributions, l'utilisation de `lsof -i` peut révéler que `systemd-resolved` est utilisé à la place. Dans ces cas, vous pouvez essayer ces étapes adaptées depuis <https://askubuntu.com/questions/907246/how-to-disable-systemd-resolved-in-ubuntu>:```
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Ensuite, dans /etc/NetworkManager/NetworkManager.conf sous la section [main], ajoutez une ligne spécifiant :``` dns=default

root@kitploit:~
Supprimez le lien symbolique `/etc/resolv.conf`, c'est-à-dire `rm /etc/resolv.conf`.

Enfin, redémarrez `NetworkManager` :```
sudo systemctl restart NetworkManager

Erreur : Impossible de localiser la DLL WinDivert ou l'un de ses composants

Veuillez vous assurer que FakeNet-NG est extrait sur le disque local C: pour garantir que le pilote WinDivert soit chargé correctement.

Erreur : L'application n'a pas pu démarrer car sa configuration côte à côte est incorrecte.

Cette erreur peut survenir lors de l'exécution d'une version exécutable autonome de Fakenet. Veuillez télécharger et installer l'exécutable du runtime Visual C++ 2008.

Limitations

  • Seul Windows Vista+ est pris en charge pour le mode SingleHost. Veuillez utiliser le Fakenet original pour les systèmes d'exploitation Windows XP/2003.

  • Seul Linux est pris en charge pour le mode MultiHost.

  • Les anciennes versions de python-netfilterqueue peuvent provoquer une erreur de segmentation dans python. Si vous rencontrez ce problème, vérifiez que vous utilisez la version la plus récente de python-netfilterqueue.

  • En raison de la taille de tampon codée en dur utilisée par python-netfilterqueue, le Diverter Linux ne gère pas correctement les paquets de taille supérieure à 4 016 octets. En pratique, cela n'affecte pas le mode MultiHost Linux pour les interfaces configurées avec l'unité de transmission maximale (MTU) conventionnelle de 1 500 octets. Si l'interface Linux que vous utilisez avec FakeNet-NG prend en charge une MTU supérieure à 4 016, vous devrez recompiler python-netfilterqueue pour prendre en charge une taille de tampon de <votre_mtu> + 80 (python-netfilterqueue consacre 80 octets du tampon aux frais généraux).

  • Le trafic local uniquement n'est pas intercepté sur Windows (par exemple, si vous essayez de vous connecter directement à l'un des écouteurs).

  • Seul le trafic utilisant les protocoles TCP, UDP et ICMP est intercepté.

Crédits

  • FakeNet-NG a été conçu et développé par Peter Kacherginsky.
  • Remerciements spéciaux à Andrew Honig, Michael Sikorski et d'autres pour le FakeNet original qui a inspiré le développement de cet outil.
  • Le Diverter Linux a été conçu et développé par Michael Bailey.
  • Merci à Matthew Haigh pour avoir développé la fonctionnalité de détection automatique du protocole proxy.
  • Merci à Cody Pierce et Antony Saba pour avoir signalé et corrigé une vulnérabilité de traversée de système de fichiers.

Contact

Pour les bogues, plantages ou autres commentaires, veuillez contacter [email protected].

Abonnez-vous à la liste de diffusion FLARE pour les annonces de la communauté ! Envoyez « subscribe » à [email protected].

Télécharger l’outil

Si vous installez manuellement, changez de répertoire vers le dossier flare-fakenet-ng téléchargé et exécutez la commande suivante avec des privilèges d'administrateur :

root@kitploit:~
 python setup.py install
  • Sous Linux, libérez le port 53 pour l'écoute DNS :

    root@kitploit:~
     sudo systemctl stop systemd-resolved
    

    Exécutez FakeNet-NG en lançant 'fakenet' depuis n'importe quel répertoire dans un shell avec privilèges.

  • root@kitploit:~
     sudo systemctl stop systemd-resolved
    

    Exécutez FakeNet-NG en le lançant avec un interpréteur Python dans un shell avec privilèges :

    root@kitploit:~
     python -m fakenet.fakenet
    
    Copier les NBI filtrés