Mais au faite qu’est ce qu’un honeypot ?


Un de nos amis qui suit activement les débuts d’OverSimple nous a fait remarquer qu’il manquait une définition du Honeypot.

Un honeypot peut aussi être défini comme un pot de miel. Les honeypots sont notamment connus dans le monde de la sécurité informatique. Ils ont pour but de faire croire à l’attaquant que l’ordinateur est vulnérable afin de le piéger et de l’attirer.

Cela permettra à l’administrateur :

  • D’étudier les différentes attaques possibles contre son propre réseau
  • De surveiller les attaques contre son Honeypot afin de s’en prémunir
  • D’étudier de nouvelles attaques possibles qui ne sont pour l’instant pas reconnu

 

On peut déduire deux types d’honeypots :

  • Le premier est basé sur les serveurs actuellement mis en production (notamment pour une entreprise)
  • Le second est utilisé afin d’étudier de nouveaux types d’attaques.

De plus, il existe des honeypots à faible, moyenne et forte interaction.

Pour les honeypots à faible interaction, cela peut être représenté par la commande netcat. A part l’identification des machines sur le réseau, l’honeypot n’est pas capable d’interagir comme pour un vrai système.

Les honeypots à moyenne intéraction représente la limite entre deux types d’honeypots: les honeypots à faible intéractions qui permettent juste de simuler une machine et les honeypots à forte interaction où on peut interagir comme un vrai système.

Enfin, les honeypots à forte interaction permettent de simuler quasiment un vrai système.

Bien sûr, en terme de sécurité, ils sont tous différents. Plus il y a de possibilités pour un attaquant, plus la machine est non fiable.

Les honeypots peuvent intervenir sur plusieurs services notamment :

SSH, HTTP, SMB, SMTP, IMAP, FTP, HTTPS, KERBEROS, MS-SQL, DNS, WEBMIN …

 

Et plein d’autres honeypots présents sur différents protocoles !

Mise en place d’un Honeypot SSH à domicile (kippo)

L’Honeypot SSH qui a été mis en place est Kippo.

Pourquoi choisir kippo ?

  • écrit en python
  • moyenne interaction avec l’attaquant.
  • possibilité d’ajouter des fonctions pour encore plus d’interaction !
  • une petite communauté derrière assez sympa !

Le Système hôte est mon serveur personnel; celui-ci est basé sur OpenBSD. Pour mes épreuves de BTS, j’avais déjà mis en place un Honeypot. Celui-ci avait tourné plus de 2mois. Après une nouvelle configuration sur mon serveur, je n’avais pas remis en place l’Honeypot. Cependant, je gardais les IP bannis soit 1379 en 10 mois, pour un serveur personnel n’hébergeant rien de particulier je trouve ça assez conséquent.

Installation des dépendances :

pkg_add -i subversion apr-util cyrus-sasl py-twisted-core py-twisted-conch py-asn1 py-twisted-web py-mysql

Une fois les dépendances installées, on récupère Kippo.

svn checkout http://kippo.googlecode.com/svn/trunk/ honeypots/

Kippo n’étant pas configuré au départ, il faut renommer son fichier de configuration :

mv kippo.cfg.dist kippo.cfg

Pour l’instant, dans ce fichier nous changeons le nom de la machine visible par l’attaquant. (hostname = simple)

De plus, on peut changer le port de l’honeypot, par défaut, port 2222.

Si on désire mettre le port 22, qui est le port SSH par défaut, il faut exécuter kippo en root… ou simplement rediriger le port 22 vers le port 2222 avec packet-filter. C’est cette option que nous allons adopter pour son élégance.

Éditons le fichier de configuration packet-filter :

pass in quick on $ext proto tcp from any to ($ext) port 22 rdr-to ($ext) port 2222

$ext correspond a mon interface réseau.

Après cette étape, si on désire on peut déja rendre disponible Kippo :

start.sh

Cependant, nous allons mettre en place une base de données MySQL afin de réaliser des statistiques sur les différentes attaques.

create database kippo;

use kippo;

source honeypot/doc/sql/mysql.sql

Créer l’utilisateur avec le minimum de droit (SELECT, INSERT, UPDATE) :

GRANT SELECT, INSERT, UPDATE ON kippo.* TO ‘kippo’@’localhost’ IDENTIFIED BY ‘mot de passe’;

La base de données étant configurée, modifier les lignes dans le fichier de configuration de Kippo afin que celui-ci utilise la base MySQL.

 [database_mysql]

host = IP Du Serveur MySQL

database = kippo

username = kippo

password = mot de passe

De plus, on peut modifier le fichier de configuration :

sensor_name=serveurMaison

Afin que dans la base de données, on puisse apercevoir le nom de l’honeypot utilisé. Cela peut être utile, si un jour on décide d’ajouter un autre kippo sur un autre serveur SSH. Il faudra juste configurer la base de données !

Démarrons Kippo est attendons les attaques !

$ tail -f log/kippo.log
2012-05-05 17:54:11+0200 [-] Log opened.
2012-05-05 17:54:11+0200 [-] twistd 11.0.0 (/usr/local/bin/python2.7 2.7.1) starting up.
2012-05-05 17:54:11+0200 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2012-05-05 17:54:11+0200 [-] kippo.core.honeypot.HoneyPotSSHFactory starting on 2222
2012-05-05 17:54:11+0200 [-] Starting factory <kippo.core.honeypot.HoneyPotSSHFactory instance at 0x84e3e46c>

En attendant voici un aperçu des différents répertoires de kippo :

  • dl : Fichiers téléchargés par les attaquants (wget).
  • log/kippo.log : Permet de debugger en cas de problème ou de voir en direct les attaques.
  • log/tty : Répertoire contenant les différentes sessions des attaquants. Possible de le visionner avec : utils/playlog.py
  • honeyfs : Contient les différents fichiers pour le fakesystem !

 

It’s over simple, isn’t it?