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