Home / Informatique / Securité / Mise en place d’un honeypot avec Cowrie

Mise en place d’un honeypot avec Cowrie

Aujourd’hui, je vais vous parler des honeypots et plus particulièrement de comment en mettre un en place. Avant de commencer, pour répondre à ceux qui vont dire « oui mais honeypot ça veut dire pot de miel, pourquoi tu parles de ça ? », nous allons définir ce qu’est exactement un honeypot.

Un honeypot est un environnement configuré pour avoir l’air légitime et qui est ou semble volontairement vulnérable. L’objectif est que ce dernier soit pris pour cible par des pirates. Cela peut avoir plusieurs objectifs. On peut par exemple vouloir détecter des attaques dans un réseau d’entreprise ou encore étudier le comportement des pirates. Toutes les actions effectuées sur le honeypot sont loggées et il est donc possible de savoir exactement ce qui a été fait dessus.

Nous allons donc voir comment mettre en place Cowrie, un honeypot qui simule un serveur SSH vulnérable. Ce dernier, basé sur Kippo propose un certain nombre d’options intéressantes comme la possibilité de choisir quels mots de passe vont fonctionner pour s’identifier, la simulation d’un système de fichiers ou encore l’enregistrement des fichiers, des commandes tapées par un éventuel attaquant et des couples identifiants / mots de passe utilisés pour tenter de s’identifier.

Pour des raisons évidentes de sécurité, je vous conseille très fortement de faire l’installation sur un système isolé de votre ordinateur / réseau / serveur ou que sais-je. Pour ces raisons et pour des raisons pratiques, je loue personnellement un vps chez scaleway (pour environ 3€ par mois, ce qui est assez rentable). Comme c’est important, je vais reprendre les avertissements sur le wiki du projet:

Kippo has not had any real security audit done on it, and it’s definitely vulnerable to some DoS attacks, as there are no limits on how many people can connect to it, or how many files they can download. Running a server that’s available to the Internet – especially a honeypot such as Kippo – is not to be taken lightly. Even though Kippo is very easy to set up, if you don’t understand 100% what is going on, honeypots are NOT for you. By running kippo, you’re virtually mooning the attackers. Just like in real life, doing something like that, you better know really well how to defend yourself!

Configuration du système

Dans un premier temps, nous allons avoir besoin de faire plusieurs choses sur le système (j’utiliserai ici Debian Jessie) afin de permettre le fonctionnement de Cowrie. Nous allons tout d’abord changer le port du serveur SSH installé sur le serveur. Pourquoi ? Parce-que les bots (parce-que oui, c’est des bots qui vont essayer de se connecter au serveur 😛 ) vont utiliser le port SSH standard 22 et nous, nous voulons que quand ils l’utilisent, ils arrivent sur Cowrie. Pour cela, nous allons modifier le fichier de configuration SSH et replacer le port par défaut par autre-chose. Par  exemple, 4040.

nano /etc/ssh/sshd_config
systemctl restart ssh

Par défaut, Cowrie utilise le port 2222. Pour qu’il utilise le port 22, il faudrait le lancer en root (c’est mal !) ou bien faire des manipulations en plus, c’est chiant. A la place, on va utiliser iptables pour router les ports.

iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222

On va ensuite créer l’utilisateur qui va servir à lancer le honeypot. Les options sur la commande sont ici car nous ne prévoyons pas de permettre à cet utilisateur de s’identifier sur le système.

adduser --disabled-password --disabled-login cowrie

Installation de Cowrie

Nous allons à présent installer le honeypot. Pour cela, plusieurs paquets vont être nécessaires.

1
2
3
4
5
6
7
apt-get install python-twisted python-crypto python-pyasn1 python-gmpy2 python-mysqldb python-zope.interface python-dev python3-dev libffi-dev libssl-dev openssl libgmp3-dev git libmpfr-dev libmpfr-doc libmpfr4 virtualenv libmpfr4-dbg mp libmpc-dev
pip install twisted cryptography pyopenssl gmpy2
su cowrie
cd
git clone http://github.com/micheloosterhof/cowrie
cd cowrie
cp cowrie.cfg.dist cowrie.cfg

Configuration de Cowrie

Maintenant que tout est installé, il ne reste plus qu’à faire un peu de configuration. Pour cela, nous allons changer le fichier cowrie.cfg.

  • Nom de l’host : il est possible de changer l’hostname en modifiant la ligne du même nom. Sachant que les bots peuvent intégrer des contres-mesures pour ne pas attaquer les honeypots, je n’ai changé. Au cas où.
  • Taille maximum des téléchargements : il est possible de faire en sorte de limiter la taille des téléchargements en changeant la ligne download_limit_size. Par défaut, la taille est illimitée.
  • Gestion de l’authentification : par défaut, auth_class est assigné à UserDB. Le fichier data/userdb.txt contient donc les utilisateurs qui peuvent s’identifier. Dans celui par défaut, root peut s’identifier avec tout sauf « root » et « 123456 ». Personnellement, j’ai juste mis « root:x:123456 » dedans. Il est aussi possible de sélectionner « auth_class_parameters » comme type pour autoriser l’identification au bout d’un nombre aléatoire d’essais.
  • Logging : Cowrie offre la possibilité de logger les évènements sous plusieurs formats. J’ai choisi MySQL mais il est possible de les avoir en json, utiliser SQLite ou encore Elastic Search.

Notez que cette liste n’est pas exhaustive et que plus d’options sont détaillées dans ce même fichier de configuration. Maintenant que tout est configuré, je vous conseille de faire un snapshot et de régulièrement revenir à cette version, au cas où. Il est également possible d’installer monit pour surveiller la charge processeur et réseau. Pour finir, vous pouvez également mettre en place d’autres types de sécurité (selon ce que vous voulez faire), comme par exemple bloquer tous les ports sauf les ports SSH.

Une fois que tout est configuré, il ne reste qu’à lancer Cowrie. Le script lancera automatiquement le processus en tâche de fond.

./start.sh

Les réultats

Vous pourrez être surpris de voir à quel point il sera rapide de commencer à être attaqué une fois le logiciel lancé. Vous verrez que les logs peuvent être intéressant tant par rapport aux utilisateurs qu’aux mots de passe qui sont utilisés pour tenter de s’authentifier. Vous verrez aussi que les combinaisons qui sont les plus testées sont aussi souvent les plus évidentes. Dans l’image qui suit, je vous ai mis les combinaisons les plus essayées (en 24 heures environ).

Honeypot: 5 combinaisons id plus fréquentes

Vous verrez que quand les bots arrivent à s’identifier, effectuent souvent les mêmes actions. Dans un article qui paraîtra dans peu de temps (j’espère  😆 ), j’analyserai pour vous ce que font exactement les bots sur le serveur, d’où viennent les attaques, …

Laisser un commentaire