Comment piéger vos attaquants avec un honeypot ?

By | November 3, 2017

Un honeypot est un système fake ou vulnérable intentionnellement conçu pour piéger les potentiels attaquants. Ce type de système fournit un bon moyen aux administrateurs d’observer les attaquants en action afin de mieux protéger leurs systèmes.

Il existe plusieurs types de honeypots. Dans ce guide, nous nous intéresserons à un simple honeypot SSH et plus particulièrement à Cowrie.
Cowrie est un honeypot SSH et Telnet qui peut servir à enregistrer les attaques par brute force et toutes les actions d’un attaquant s’il arrive à avoir accès au système.

Ci-dessous quelques caractéristiques de Cowrie:
_ Cowrie comprend un système de fichier fake avec la capacité d’ajouter et de retirer des fichiers, d’exécuter des commandes (ls, cat, wget, ifconfig, etc.),
_ Possibilité de voir les mots de passe utilisés durant les attaques par brute force,
_ Possibilité d’ajouter du contenu fake pour piéger encore plus un attaquant,
_ Les logs sont sauvegardés au format UML,
_ Cowrie sauvegarde les fichiers téléchargés avec wget ou curl et les fichiers uploadés avec SCP/SFTP pour des inspections ultérieures.

Dans ce guide, nous verrons comment installer le honeypot Cowrie sur un système Ubuntu 16.04.
NB: Pour ce test, j’utilise un VPS hébergé chez Scaleway.

Avant tout, mettez à jour votre système.

# apt-get update && sudo apt-get upgrade -y

Ensuite changez le port utilisé par le serveur SSH dans le fichier de configuration du démon. Choisissez un port autre que le port 22. L’objectif étant de rendre accessible le honeypot sur le port par défaut du protocole SSH.

Puis reloadez le service:

# service sshd reload

NB: Votre serveur ssh original sera accessible désormais sur le port que vous aurez choisi. Par précaution, avant de quitter votre session SSH active, démarrez une autre connexion SSH sur le nouveau port d’écoute configuré.

Installez toutes les dépendances réquises :

# apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal

L’étape suivante consiste à créer un compte utilisateur.
Par mésure de précaution, il est recommandé d’installer Cowrie sous un autre utilisateur n’ayant aucun aucun privilège.

# adduser –disabled-password cowrie

Accédez au nouveau compte d’utilisateur créé, puis téléchargez Cowrie:

# su -l cowrie
$ git clone http://github.com/micheloosterhof/cowrie.git

 

Déployez ensuite votre environnement virtuel à l’aide de virtualenv:

$ cd cowrie

$ virtualenv cowrie-env

Activez cet environnement, puis installez les packages requis pour le fonctionnement de Cowrie:

$ source cowrie-env/bin/activate

$ pip install -r requirements.txt

La configuration de Cowrie est stockée dans le fichier cowrie.cfg.dist et cowrie.cfg. Les deux fichiers sont lus et les entrées de cowrie.cfg ont une précédence. Pour cette expérience, nous ne ferons aucune modification dans ces fichiers.

Ajoutez la variable d’environnement suivante:

$ export PYTHONPATH=/home/cowrie/cowrie

Exécutez le script cowrie situé dans le dossier cowrie/bin pour démarrer le honeypot.

$ bin/cowrie start

Cowrie fonctionne par défaut sur le port 2222. Configurons alors un Port Forwarding afin que toutes les tentatives de connexion sur le port par défaut du protocole SSH soient redirigées vers le port 2222 utilisé par Cowrie.

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

Cowrie vous permet de définir les combinaisons d’utilisateur/mot de passe qui accéderont au serveur fake. Pour ce faire, entrez dans le dossier cowrie/data, puis ouvrez le fichier userdb.txt.

Pour autoriser tous les mots de passes d’un utilisateur précis, ajoutez le symbole * au compte d’utilisateur.
Pour interdire un mot de passe précis, ajoutez le symbole ! près du mot de passe. Et pour autoriser une combinaison nom d’utilisateur/mot de passe, ajoutez cette combinaison comme dans l’image ci-dessous.

Le fichier cowrie.log situé dans le dossier cowrie/log contient toutes les entrées SSH.

Dans l’image ci-dessous, nous constatons qu’un attaquant a tenté des combinaisons root/xdr56tfc, root/7heaven et root/valentin1 pour se connecter à notre serveur.

Et nous constatons ici une connexion réussie. Les lignes qui suivent montrent toutes les commandes exécutées par notre attaquant.

Dans un prochain article, nous reviendrons en détail sur le log de Cowrie et verrons quels enseignements en tirer.

Enjoy !

mdestroy

3 thoughts on “Comment piéger vos attaquants avec un honeypot ?

  1. Olm

    Merci pour cet article. Il permettra à chacun de mettre en place cowrie facilement. La documentation officielle pêche un peu. J’attends la suite avec impatience.
    En effet, j’ai mis en place cowrie depuis 3 semaines pour mes étudiants et je suis très agréablement surpris de l’efficacité de cet outil.
    J’ai mis en place une exploitation des journaux au format json en les injectant dans une base elasticsearch via filebeat et logstash : le résultat est bluffant (usrname/password, URL utilisées pour récupérer du code malveillant, …) !
    J’espère que tu sauras synthétiser ce type d’informations pour ton prochain article.

    Reply
      1. Olm

        Si besoin je peux fournir mes confs logstash et filebeat (celles proposées sur le site de cowrie n’étaient pas tout à fait fonctionnelles)… J’ai aussi trouvé trois recherches utiles à importer dans kibana.

        Reply

Leave a Reply

Your email address will not be published.