web-dev-qa-db-fra.com

Création de Botnet C & C Server. Quelle architecture devrais-je utiliser? IRC? Http?

Je fais un projet relatif aux botnets et je dois créer une commande légère et un serveur de contrôle. Mais je suis coincé: devrais-je utiliser IRC ou un C & C HTTP?

Même je ne reçois aucune architecture ni analyse en profondeur d'aucun serveur C & C.

J'utilise le périphérique matériel pour connecter C & C, que dois-je avoir à garder à l'esprit?

4
tritiya

Pour un serveur C & C, vous souhaitez atteindre les caractéristiques suivantes:

  • Le système infecté doit pouvoir parler au C & C. Cela implique de sortir certaines données de la machine, à travers n'importe quel accès réseau. Le cas facieux est lorsque la machine dispose d'un accès Internet complet (éventuellement à travers une partie NAT ); Cependant, il existe des réseaux (en particulier dans les environnements d'affaires) où des machines n'ont que des adresses locales, il n'y a pas de NAT et les communications sortantes doivent passer par un proxy HTTP. Peut-être que le proxy aura besoin d'une authentification, pouvant être automatiquement fournie par le système d'exploitation (Windows ...) à condition que les bibliothèques du système d'exploitation soient utilisées pour le faire.

    Ainsi, HTTP augmente la probabilité de réussir à connecter un serveur externe, tandis que IRC ne peut pas vraiment gérer le cas "proxy uniquement".

    Du côté moins, http est un protocole axé sur le client, de sorte que la machine infectée doit "sonder" le serveur (demande régulièrement); Il ne peut pas simplement attendre une commande entrante. Cette activité régulière peut permettre une détection plus facile de l'infection et augmentera également les exigences de la bande passante pour le C & C, en particulier pour les gros botnets. IRC serait plus léger dans cette situation.

  • Vous voulez que les transferts de données soient non détectés par l'administrateur du réseau. De telles sysadmins ont tendance à réagir fermement à n'importe quelle activité de réseau utilisant les ports traditionnels pour IRC (par exemple freenode utilise 6665, 6666, 6667 et quelques autres personnes). Là encore , HTTP sera plus susceptible de "voler sous le radar".

    Les demandes HTTP simples peuvent être inspectées par des pare-feu Nosy. Https peut vous aider ici; Décrypter les demandes HTTPS nécessite l'installation et la maintenance d'une autorité de certification personnalisée qui produit des faux certificats à la volée pour des sites Web contactés. Il existe des appareils qui offrent ce type de service, mais cela n'est pas encore pleinement répandu.

  • Vous souhaitez masquer le vrai serveur C & C, où se trouve. Si vous avez un grand botnet, c'est une certitude que certains sysadmin, quelque part, remarqueront quelque chose de poisson et essaie de deviner où le C & C est. Les demandes HTTP exigent que le client connaisse l'adresse IP du serveur cible. D'autre part, avec IRC, l'hôte infecté se connecterait à un "honnête" situé à proximité IRC et, par la magie du flux de données entre IRC Serveurs, les données peuvent atteindre le C & C partout où elle se cache actuellement.

    Pour une solution plus complète, vous souhaitez que le C & C soit caché comme un service caché . Notez que la véritable adresse IP d'un service caché ne reste cachée que tant que les hypothèses de la théorie du réseau d'oignon détiennent, en particulier que les routeurs d'oignons "non corrompus" restent une grande majorité. Que cela soit vrai dans la pratique, c'est que quelqu'un devine.

Un botnet vraiment efficace serait structuré comme un réseau d'espionnage à l'ancienne, avec cellules décentralisées ; Les machines BotNet ne connaissaient pas l'adresse C & C, mais simplement comment parler aux autres machines de la cellule, ainsi que sur une ou deux machines d'autres cellules. Les messages seraient ensuite diffusés en sautant de la cellule à la cellule. Ce type de structure nécessite beaucoup plus de réflexion à la phase de conception, mais serait beaucoup plus résilient à démanteler les forces de l'application de la loi.

(Heureusement, des personnes mal intentionnées qui souhaitent courir des botnets ne sont pas moins paresseuses et incompétent que le reste du monde, des structures de botnet ainsi conçues restent une rareté.)

11
Thomas Pornin

Il y a beaucoup de raisons pour les deux d'entre eux. Les principales différences:

  • irc est un tunnel bidirectionnel. Ainsi, l'envoi de messages ou demandes de contact initiées par vous et vos bots serait beaucoup plus facile dans les deux sens, si au moins l'un d'entre eux sont derrière un pare-feu natting.
  • http est beaucoup plus fréquent, surtout si vous utilisez https. Si vos nœuds communiquent sur le bien-https paramétrisé, alors pas de trafic analyser/pare-feu de filtrage sera en mesure de dire que vous faites quelque chose qui est seulement permise dans un bac à sable, comme la recherche.
  • le protocole HTTP est apatride par la configuration principale, ce qui signifie que la communication complexe sera plus difficile à mettre en œuvre (vous devez faire une gestion de session). Sur irc, vous pouvez simplement ouvrir un fil pour vos clients et vous aurez une procédure, le flux de contrôle unique.
  • bien que irc peut être prolongée par ssl ainsi, il est pas si fréquent que dans le http. Vous aurez probablement à intégrer une bibliothèque de communication irc pour la tâche, la configuration à utiliser ssl sur une telle manière qu'il sera détectée sera plus difficile. En cas de http votre peut sélectionner un large éventail de différentes solutions savon/repos/rpc et des bibliothèques en les utilisant.

Comme je sais que, dans les cercles des réseaux de zombies en cours d'exécution le https est beaucoup plus fréquent, mais la plupart d'entre eux est un cauchemar d'un point de vue de programmeur.

Pour la recherche, j'utiliser irc non crypté (plus facile à programmer, pas besoin de cryptage).