Charles leifer, un botnet simple, écrit en Python

Un botnet est un ensemble d'ordinateurs infectés ou des bots qui ont été prises en charge par les pirates (également connu sous le nom des éleveurs de bots) et sont utilisés pour effectuer des tâches ou des fonctions malveillantes. Un botnet effectue des actions de l'ordinateur client alors que l'opérateur qu'il contrôle à distance via IRC.

Ce que j'ai écrit vraiment correspond à la deuxième moitié de cette définition, comme je l'ai pas essayé d'écrire du code que des machines « de » ou tentative infecte de se reproduire. Mon projet vous permet simplement de contrôler un nombre arbitraire de machines via des commandes simples IRC. Les ouvriers distants communiquent avec et de faire rapport au programme de contrôle via un IRC backchannel, tandis que l'opérateur des problèmes de botnets commandes directement au programme de contrôle.

Charles leifer, un botnet simple, écrit en Python

Comment ça marche

Il est pas très compliqué! Je connaissais déjà quelques rudiments du protocole IRC de piratage sur une simple bibliothèque bot IRC. Les pièces que je devais comprendre étaient les suivants:

  • capacité à suivre lorsque les travailleurs sont venus sur / hors ligne afin qu'ils puissent être envoyés emplois
  • passer facilement les données de l'opérateur -> travailleurs et retour

Enregistrement des travailleurs

Le diagramme ci-dessous montre le processus ou l'enregistrement qui se produit lorsqu'un travailleur est en ligne. Les travailleurs doivent savoir à l'avance le pseudo du programme de commande (ou un moyen de trouver dehors) - ils envoient alors un message privé au programme de commande indiquant leur présence. Le programme de commande reconnaît cela, ajoute nick au registre des travailleurs disponibles du travailleur, et envoie le travailleur l'emplacement du canal de commande. Le travailleur rejoint ensuite le canal et est en mesure de commencer à exécuter les tâches de l'opérateur.

Charles leifer, un botnet simple, écrit en Python

Dans le cas où un travailleur est en ligne et ne peut pas atteindre le programme de commande, il continuera à essayer toutes les 30 secondes jusqu'à ce qu'il reçoive un accusé de réception. De plus, toutes les deux minutes, le programme de commande pings les travailleurs, en supprimant les morts de la liste.

exécution de la tâche

Les tâches sont d'abord analysés par le programme de commande, puis envoyés aux travailleurs via le canal de commande. L'opérateur peut spécifier un nombre de travailleurs à se mettre au travail sur une tâche spécifique. La syntaxe est simple:

Voici un schéma du flux de travail de base:

Charles leifer, un botnet simple, écrit en Python

tâches des travailleurs sont analysés par le bot des travailleurs et peuvent accepter un certain nombre d'arguments arbitraires, qui sont extraits par un regex défini par l'opérateur. Voici un exemple de la façon dont la commande « run » regarde (qui exécute une commande sur la machine hôte):

mort simple! Les tâches peuvent retourner tout texte arbitraire qui est ensuite analysé par le coureur de la tâche du travailleur et renvoyé au programme de commande. A tout moment, l'opérateur peut demander les données pour une tâche donnée.

Une note sur la sécurité

L'opérateur doit authentifier avec le programme de commande pour émettre des commandes - le mot de passe est dans le BotnetBot hardcoded. De même, les travailleurs acceptent uniquement les commandes du programme de commande.

exemple séance

Voici une séance d'échantillon. La première étape consiste à authentifier auprès du bot:

Exécuter une commande sur l'un des travailleurs:

Imprimer les données renvoyées par la dernière commande exécutée:

Trouver les ports ouverts sur les hôtes des travailleurs:

Devenir un bot Herder

Si vous souhaitez essayer vous-même, ne hésitez pas à saisir une caisse de la source, disponible sur GitHub. Le travailleur est programmé avec les commandes suivantes:

exécute le programme donné
  • Le téléchargement va télécharger le fichier à l'adresse donnée et enregistrez-le sur la machine hôte
  • information renvoie des informations sur le système d'exploitation de la machine hôte
  • ports ne port-scan rapide des ports du système 20-1025
  • send_file flux du fichier sur l'ordinateur hôte à l'hôte donné: port
  • état retourne la taille de la file d'attente des tâches du travailleur
  • Vous pouvez ajouter vos propres commandes est vraiment facile, mais - il suffit de les ajouter à tuple retourné par la méthode get_task_patterns, qui ressemble à ceci:

    Maintenant, définir votre rappel, qui exécutera toutes les tâches que vous le souhaitez et éventuellement renvoyer une chaîne. Les données renvoyées seront envoyées au programme de commande et mis à la disposition de l'opérateur.

    Voici comment vous pouvez appeler cette commande:

    Les bots sont extensibles de sorte que vous pouvez écrire vos propres commandes si vous voulez prendre bot-grégaire - cet outil pourrait être utilisé pour redémarrer les nœuds web, checkouts mise à jour, rapport sur l'état, quoi que ce soit vraiment car il peut être utilisé pour exécuter des commandes arbitraires .

    • Vous pouvez consulter le code source sur GitHub
    • Informations sur l'exécution du botnet se trouve dans le README
    • protocole IRC. RFC 1459

    Jason - Je viens d'ajouter un script setup.py à la bibliothèque irc donc vous devriez être en mesure de « pip installer » à la fois la bibliothèque irc et gevent. Effectuez les opérations suivantes:

    après il suffit de suivre les instructions du README du projet

    Je ne parviens pas à obtenir commencé avec ce code. Je pense qu'il semble vraiment intéressant, mais je ne peux pas installer correctement gevent et il semble que votre logiciel exige.

    Un guide étape par étape de configuration serait très apprécié.

    Articles Liés