TD - Mise en place d`un honeypot

Transcription

TD - Mise en place d`un honeypot
Université Bordeaux I
année 2009-2010
Master CSI/Master Info.
Sécurité des réseaux
TD - Mise en place d’un honeypot
Le but de ce TP est de mettre en place un honeypot. Ce mécanisme sera mis en place en
utilisant le logiciel honeyd.
La topologie réseau à utiliser peut être obtenue en lançant le script UML /net/stockage/aguermou/SR/TP/5/demo-gterm. De plus, il vous est demandé au préalable de désarchiver le fichier tar
/net/stockage/aguermou/SR/images/archive tp5.tgz dans /tmp/AR-UML.
Le honeypot doit être mis en place sur nile.
Remarque : il est nécessaire de tester à chaque étape le bon fonctionnement du filtre à paquets.
1. Tout d’abord il vous est demandé d’installer les paquets debian disponibles dans le répertoire
/net/stockage/aguermou/deb/honey.
2. Pour mettre en place le honeypot sur nile, il est nécessaire que cette dernière intercepte le
trafic vers le réseau “simulé”. Pour ce faire, nous allons utiliser le démon farpd qui va faire
en sorte que nile va répondre à toutes les requêtes ARP vers notre réseau cible. De plus, il
sera nécessaire de modifier les tables de routage de certaines machines pour que le trafic vers
notre réseau cible (10.0.0.0/8) soit envoyé a nile.
3. Il vous est tout d’abord demandé de modifier le fichier /etc/default/honeyd pour spécifier
le réseau virtuel qui sera géré par votre honeypot.
4. Nous allons commencer par configurer le démon honeyd pour le cas simple d’une configuration
à deux machines (une machine windows et une machine linux). Nous intéresserons par la
suite à la simulation d’un réseau plus complexe. Le contenu du fichier (/etc/honeypot/honeyd.conf) de configuration de honeyd devra contenir la description des hôtes simulés.
Par exemple :
create default
set default default tcp action block
set default default udp action block
set default default icmp action block
# Example of a simple host suse80 and its binding
create suse80
set suse80 personality "Linux 2.4.7 (X86)"
set suse80 default tcp action reset
set suse80 default udp action block
set suse80 default icmp action open
set suse80 uptime 79239
set suse80 droprate in 4
add suse80 tcp port 21 "sh /usr/share/honeyd/scripts/unix/linux/suse8.0/proftpd.sh \
$ipsrc $sport $ipdst $dport"
add suse80 tcp port 22 "sh /usr/share/honeyd/scripts/unix/linux/suse8.0/ssh.sh \
$ipsrc $sport $ipdst $dport"
add suse80 tcp port 80 "sh /usr/share/honeyd/scripts/unix/linux/suse8.0/apache.sh \
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 23 "sh scripts/unix/linux/suse8.0/telnetd.sh \
#
$ipsrc $sport $ipdst $dport"
1
#add suse80 tcp port 25 "sh scripts/unix/linux/suse8.0/sendmail.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 79 "sh scripts/unix/linux/suse8.0/fingerd.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 110 "sh scripts/unix/linux/suse8.0/qpop.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 143 "sh scripts/unix/linux/suse8.0/cyrus-imapd.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 515 "sh scripts/unix/linux/suse8.0/lpd.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 3128 "sh scripts/unix/linux/suse8.0/squid.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 8080 "sh scripts/unix/linux/suse8.0/squid.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 tcp port 8081 "sh scripts/unix/linux/suse8.0/squid.sh \
#
$ipsrc $sport $ipdst $dport"
#add suse80 udp port 53 proxy 24.35.0.12:53
bind 10.0.0.1 suse80
# Example of a simple host WIN and its binding
create WIN
set WIN personality "Microsoft Windows XP SP1"
set WIN uptime 1728650
set WIN maxfds 35
add WIN tcp port 80 "sh /usr/share/honeyd/scripts/win32/web.sh"
add WIN tcp port 22 "/usr/share/honeyd/scripts/test.sh $ipsrc $dport"
set WIN default tcp action reset
bind 10.0.0.2 WIN
En plus, de la déclaration des deux hôtes, nous pouvons lancer des services simulés sur
chacune des machines par le biais de scripts. Ces derniers sont fournis par les développeurs
du logiciel et servent à générer les réponse nécessaire à leurrer un attaquant. Nous pouvons
voir au niveau des lignes bind les adresses IP des deux hôtes.
Une fois la configuration achevée, vous pouvez lancer honeyd (soit en ligne de commande,
ou en le lançant en tant que démon (i.e. /etc/init.d/honeyd start).
5. Testez cette configuration en essayant de scaner, de déterminer le système d’exploitation,
ou encore de se connecter a des services disponibles sur nos des deux hôtes simulés. Vous
pourrez trouver des traces sur ce qui se passe dans le dossier /var/log/honeypot.
Remarque : Pour la détermination du système d’exploitation, nous pourrons en plus de nmap
utiliser la commande xprobe2 qui est spécifiquement conçue à cet effet.
6. Nous allons passer maintenant à une configuration plus complexe dans laquelle nous allons
simulé le réseau suivant :
10.0.0.1
10.3.0.1
routeur
10.2.0.0/24
10.3.1.1
10.3.0.0/24
10.3.1.0/24
2
Le fichier de configuration correspondant sera alors :
# Routing description
route entry 10.0.0.1
route 10.0.0.1 link 10.2.0.0/24
route 10.0.0.1 add net 10.3.0.0/16 10.3.0.1 latency 8ms bandwidth 10Mbps
route 10.3.0.1 link 10.3.0.0/24
route 10.3.0.1 add net 10.3.1.0/24 10.3.1.1 latency 7ms loss 0.5
route 10.3.1.1 link 10.3.1.0/24
# Example of a simple host template and its binding
create template
set template personality "Sun Solaris 9"
set template uptime 1728650
set template maxfds 35
# For a complex IIS server
add template tcp port 80 "sh /usr/share/honeyd/scripts/win32/web.sh"
add template tcp port 21 "sh /usr/share/honeyd/scripts/unix/linux/suse8.0/proftpd.sh \
$ipsrc $sport $ipdst $dport"
add template tcp port 23 proxy $ipsrc:23
add template udp port 53 proxy 141.211.92.141:53
set template default tcp action reset
# default behaviour
create default
set default default
set default default
set default default
for the hosts
tcp action block
udp action block
icmp action block
# router description
create router
set router personality
set router default tcp
add router tcp port 22
add router tcp port 23
"Cisco 1601R router running IOS 12.1(5)"
action reset
"/usr/share/honeyd/scripts/test.sh"
"/usr/share/honeyd/scripts/router-telnet.pl"
# host/network address correspondance
bind 10.3.0.1 router
bind 10.3.1.1 router
bind 10.3.1.12 template
bind 10.3.1.11 template
bind 10.3.1.10 template
# host type
set 10.3.1.11 personality "Microsoft Windows XP Professional SP1"
set 10.3.1.10 personality "IBM AIX 4.2"
set 10.3.1.12 personality "Linux 2.0.39"
Contrairement au premier cas, nous pouvons voir qu’on doit décrire le réseau en commençant
par spécifié le point d’entrée de ce dernier (à l’aide de la directive route entry). Puis la
topologie du réseau est spécifiée dans les directives suivant la déclaration du/des point(s)
d’entrée.
3
7. Une cette configuration validée essayer de découvrir la topologie réseau du point de vue d’un
attaquant à l’aide de traceroute par exemple. Dans un deuxième temps il vous est demandé
de répéter l’opération précédente en commentant la directive :
set router default tcp action reset
Qu’observez-vous ?
8. Vérifiez que les hôtes du réseau sont accessibles et que les services disponibles sont bien ceux
spécifiés lors de la configuration.
9. Essayez de mettre en place une topologie à vous. :-)
Remarque : La liste des types d’hôtes supportés par honeyd est spécifiée dans le fichier
/etc/honeypot/nmap.prints.
4