
Outil d'empreinte active qui identifie 16 piles TCP/IP embarquées sur des périphériques réseau en utilisant des techniques de sondage ICMP, TCP, HTTP, SSH et FTP pour l'évaluation des vulnérabilités.
L'outil project-memoria-detector vise à déterminer si un périphérique réseau cible exécute une pile TCP/IP embarquée spécifique.
Actuellement, l'outil prend en charge les empreintes de 16 piles TCP/IP embarquées (et leurs variantes) :
Plusieurs des piles ci-dessus ont été jugées vulnérables lors des recherches du Project Memoria.
Le script identifie l'utilisation des 16 piles TCP/IP sur un périphérique cible via les méthodes d'empreinte active suivantes :
Bien que le script ait été testé dans un environnement de laboratoire, nous ne pouvons pas garantir que son utilisation soit sûre pour tous les appareils possibles. Les paquets ICMP malformés, par exemple, pourraient faire planter un appareil exécutant une pile différente. PAR CONSÉQUENT, NOUS NE RECOMMANDONS PAS SON UTILISATION DIRECTE SUR DES ENVIRONNEMENTS EN PRODUCTION AVEC DES ÉQUIPEMENTS CRITIQUES (COMME LES HÔPITAUX AVEC DES DISPOSITIFS CONNECTÉS AUX PATIENTS OU LES SYSTÈMES DE CONTRÔLE INDUSTRIEL À SÉCURITÉ CRITIQUE). Une approche idéale consiste à tester les appareils dans un environnement de laboratoire ou pendant une fenêtre de maintenance.
Veuillez noter que l'outil a été testé uniquement dans un environnement de test Linux (toute distribution Linux moderne devrait fonctionner). Il est supposé que l'environnement de test utilise iptables (https://linux.die.net/man/8/iptables) comme pare-feu de base.
L'outil nécessite une version récente de Python 3.x (voir https://www.python.org/, version >= 3.7.7 de préférence), ainsi que Scapy (voir https://scapy.net/, version >= 2.4.3 de préférence).
Pour installer Scapy avec Python et pour le dépannage général, veuillez suivre la documentation ici : https://scapy.readthedocs.io/en/latest/installation.html
Si Python est déjà installé sur votre machine, pour installer les dépendances requises, vous pouvez utiliser pip et le fichier requirements.txt fourni :
$ pip install -r requirements.txt
Comme Scapy nécessite des privilèges root pour s'exécuter, l'outil doit être lancé avec sudo, par exemple :
$ sudo python project-memoria-detector.py [options]
Pour voir les options disponibles pour exécuter le script, lancez-le avec l'option -h :
$ python project-memoria-detector.py -h
En général, le script nécessite au moins une seule adresse IP du périphérique cible (ce paramètre peut être explicitement spécifié avec -ip_dst)
$ sudo python project-memoria-detector.py 192.168.3.1
Le script prend en charge l'analyse de plages d'adresses IP. Vous pouvez soit spécifier un sous-réseau à analyser à l'aide de la notation CIDR, soit fournir un fichier .txt avec un ensemble d'adresses IP à analyser.
La notation CIDR peut être utilisée comme suit (pour cet exemple, les adresses IP de 192.168.3.1 à 192.168.3.254 seront scannées) :
$ sudo python project-memoria-detector.py 192.168.3.0/24
Vous pouvez également utiliser un fichier .txt pour spécifier les adresses IP d'intérêt : chaque adresse IP dans ce fichier doit commencer sur une nouvelle ligne. Par exemple, nous pouvons créer un fichier appelé input.txt avec le contenu suivant :
$ cat input.txt
192.168.1.8
192.168.1.9
192.168.3.1
192.168.2.14
Nous pouvons ensuite exécuter le script comme suit :
$ sudo python project-memoria-detector.py --in-file input.txt
Le script utilise des valeurs par défaut pour les ports afin d'identifier différents protocoles tels que SSH (22), FTP (21) et HTTP (80). Afin de remplacer ces valeurs par défaut, vous pouvez le faire en définissant les paramètres comme :
$ sudo python project-memoria-detector.py -ip_dst 192.168.212.42 --tcp-port 80 --http-port 80 --ssh-port 22 --ftp-port 21 -i eth1
Le script affichera les correspondances avec les empreintes individuelles ainsi que le degré de certitude entre parenthèses :
$ sudo python project-memoria-detector.py 192.168.6.42
192.168.6.42 is alive
ICMP => uIP/Contiki (High)
TCP => uIP/Contiki (Medium)
HTTP => uIP/Contiki (High)
SSH => Unknown (No match)
FTP => Unknown (No reply)
Le degré de certitude d'une empreinte particulière peut être High, Medium, ou Low. No match signifie qu'il n'y a pas de correspondance avec une empreinte connue, et No reply signifie qu'un port/service spécifique est indisponible.
Copyright (C) 2020 Forescout Technologies, Inc.
Licence du Programme
"Le Programme" désigne toute œuvre protégée par le droit d'auteur concédée sous cette Licence. Chaque licencié est désigné par "vous".
Tous les droits accordés en vertu de cette Licence sont concédés pour la durée du droit d'auteur sur le Programme et sont irrévocables à condition que les conditions énoncées soient remplies. Cette Licence affirme explicitement votre autorisation illimitée d'exécuter le Programme non modifié à des fins personnelles, gouvernementales, commerciales ou à but non lucratif. Il vous est interdit d'utiliser le Programme dans des œuvres dérivées à des fins commerciales. Il vous est interdit de modifier le Programme pour l'utiliser dans un produit ou service commercial, seul ou en conjonction avec d'autres codes, qu'il soit téléchargeable ou accessible en tant que service. Par "œuvres dérivées", on entend toute œuvre, qu'elle soit sous forme source ou objet, qui est basée sur (ou dérivée du) Programme et pour laquelle les révisions éditoriales, annotations, élaborations ou autres modifications représentent, dans leur ensemble, une œuvre originale de paternité.
Vous pouvez transmettre des copies conformes du code source du Programme tel que vous le recevez, sur tout support, à condition que vous publiiez de manière visible et appropriée sur chaque copie un avis de droit d'auteur approprié ; que vous conserviez intactes toutes les notices indiquant que cette Licence s'applique au code ; que vous conserviez intactes toutes les notices d'absence de toute garantie ; que vous donniez à tous les destinataires une copie de cette Licence en même temps que le Programme ; et que vous ne tiriez pas un bénéfice financier de la vente ou autre cession du Programme, seul ou en conjonction avec d'autres codes, téléchargé ou accessible en tant que service.
LE LOGICIEL EST FOURNI "EN L'ÉTAT", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DU DROIT D'AUTEUR NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU SON UTILISATION OU TOUTE AUTRE INTERACTION AVEC LE LOGICIEL.
Cette Licence n'accorde pas la permission d'utiliser les noms commerciaux, marques de commerce, marques de service ou noms de produits du Concédant, sauf dans la mesure nécessaire pour une utilisation raisonnable et coutumière dans la description de l'origine du Programme et la reproduction du contenu de l'avis de droit d'auteur.