Table des matières

Botnet

Un botnet est un ensemble de robots IRC qui sont reliés entre eux.

Être connectés en réseau leur permet de se donner mutuellement le statut d'opérateur de canal de manière sécurisée, de contrôler de manière efficace les attaques par flood ou autres. Le partage des listes d'utilisateurs, de bans, ainsi que de toute sorte d'informations, rend leur utilisation plus efficace.

Création d'un botnet

Pour créer un botnet, vous avez besoin au minimum de 2 eggdrops avec des ports d'écoute disponibles.

Pré-requis

Si vous comptez partager les informations de canaux (utilisateurs, bans, invites, …), vous devez:

Configuration des ports

Pour chaque port ouvert de l'eggdrop, vous devez spécifier le type d'utilisateur autorisé. La solution de facilité serait de choisir all mais ce n'est pas sécurisé.

Une méthode habituellement utilisée est de configurer un port global pour les utilisateurs normaux (users) et un port pour les robots (bots). Au cas où votre eggdrop serait un hub, il est conseillé d'affecter un port bots pour 2 ou 3 robots maximum, afin de ne pas saturer le port en question. Pour ma part, j'affecte un port à un robot, voici ce que donne la configuration de mon hub principal:

listen 3300 users
listen 3351 bots; # Artus
listen 3352 bots; # Brandelis

Excalibur s'attend donc à ce que les utilisateurs se connectent via le port 3300 et que des robots se connectent sur les ports 3351 et 3352.

Vous noterez que j'utilise un pas de 1 pour les ports sur le hub. La règle de l'écart d'au moins 5 ports est pour des eggdrops différents mais ne s'applique pas aux ports d'un même eggdrop. Voici maintenant la configuration d'un leaf (Artus dans notre cas):

listen 3500 users
listen 3401 bots

Artus attend des utilisateurs sur le port 3500 et des robots sur le port 3401. Et nous allons ajouter Brandelis comme un robot normal, c'est à dire sans lui donner de flag particulier:

listen 3510 users
listen 3411 bots

Notre but est donc de créer l'arborescence suivante:

Excalibur
   |-- Artus (leaf)
   `-- Brandelis

Si vous avez décidé de relier les eggdrops en utilisant un certificat ssl, il faut précéder le port d'un +

Ajout des robots

Nous partirons du principe que tous les eggdrops sont sur la même machine avec l'IP 127.0.0.1. Il faut, dans chaque robot, ajouter les robots auxquels il peut être relié. Pour cela nous utilisons la commande .+bot.

Seul le botnet-nick est obligatoire, vous pouvez ensuite modifier les autres valeurs par la commande .+host.

Excalibur

.+bot Artus 127.0.0.1 3401/3500
.botattr Artus +l
.+bot Brandelis
.+host Brandelis 127.0.0.1 3411/3510

Artus

.+bot Excalibur 127.0.0.1 3351/3300
.botattr Excalibur +h

Brandelis

.+bot Excalibur 127.0.0.1 3352/3300
.botattr Excalibur +h

Partage

A ce stade, Artus et Brandelis tentent automatiquement de se connecter à Excalibur et devraient y arriver. Mais des eggdrops reliés entre eux ne sert pas à grand chose s'ils ne partagent pas leurs informations.

Vous ne pouvez pas modifier les attributs d'un robot s'il est linké.

Il existe 3 sortes de partage:

Le type de partage n'est pas général mais spécifique au lien, c'est à dire qu'Excalibur pourrait avoir un partage agressif avec Artus et passif avec Brandelis. Par contre, il faut bien sûr qu'Artus ait un partage passif et Brandelis un partage agressif.

Nous pourrions ajouter un eggdrop (Lambda) connecté à Brandelis (Artus étant leaf, ce serait refusé par Excalibur) et faire un partage passif de Brandelis avec Lambda.

Le partage peut être global (tous les canaux, tous les utilisateurs) ou par canaux.

Ajout d'un partage

Excalibur étant un hub sur notre botnet, nous lui ferons centraliser les informations. Nous lui mettrons un partage global. Artus et Brandelis seront eux en partage agressif, sur certains canaux. Pensez bien à délinker les eggdrops avant de changer leurs attributs de partage.

Dans Excalibur

Nous voulons qu'Excalibur reçoive les fichiers indépendamment des canaux, nous allons donc définir le lien comme global:

.botattr Artus +g
.botattr Brandelis +g
Dans Artus

Artus va partager agressivement les informations du canal #eggdrops avec Excalibur:

.botattr Excalibur |+s #eggdrops
Dans Brandelis

Pour Brandelis, on va compliquer les choses: il partagera agressivement les données de #maison mais recevra les informations de #eggdrops (donc celles qu'Artus aura transmises à Excalibur):

.botattr Excalibur |+s #maison
.botattr Excalibur |+p #eggdrops

Infos complémentaires

Type de robot

Par défaut, les eggdrops déclarés comme faisant partie d'un botnet n'ont pas de status particulier, ils peuvent se connecter entre eux. Il existe tout de même deux flags particuliers:

Hub

Un hub est, dans notre cas, un eggdrop auquel seront connectés d'autres eggdrops. Si Excalibur est déclaré comme hub auprès des autres eggdrops du botnet, ceux-ci essayeront de se connecter à lui.

Leaf

A contrario, un robot déclaré leaf ne peut être connecté qu'à un seul eggdrop et sera éjecté du botnet s'il est déjà connecté à d'autres eggdrops.

Partage d'informations

Flags utiles

Il est recommandé de donner les Flags f (friend) et o (op) aux eggdrops qui sont reliés par botnet, essentiellement lorsqu'ils font du partage d'informations.