Association Générale des Utilisateurs de logiciels libres en Côte-d'Or
Rubriques
Notre ami Tux en rodéo sur l'escargot de Bourgogne :-) |
De la reconnaissance de système d’exploitation à distance au camouflage
Les différents systèmes d’exploitation ont des caractèristiques particulières. La reconnaissance d’un système d’exploitation passe par la récolte d’information qui va nous permettre de déterminer le système d’exploitation distant. Dans la suite nous utiliseront deux machines (il est obligatoire d’avoir deux machines) : la première machine :
la deuxième machine :
Il n’y a aucun firewall sur aucune des machines. Les services Pour lister les services de la machine distante nous allons utiliser nmap [1] :
Nous auront par exemple : 80/tcp open http Apache httpd 2.0.50 ((YDL)) Nous savons alors que c’est une yellow dog ;) Certains services sont plus courant sur un système ou un autre (par exemple netbios est courant sous windows et moins sous unix). Pour se protéger, il faut limiter le nombre de service sur les machines. De plus, il est possible bien souvent de retirer les bannières des services. Les implémentations réseaux Il y a des différences dans les implémentations réseaux. Nous allons voir trois outils qui utilise cette technique :
Nmap est une boite à outil du scan. Il se sert principalement des paquets TCP (souvent mal formaté) pour déterminer une empreinte d’un système. # nmap -O 192.168.12.2 -p 22 -sS
Xprobe2 travaille surtout au niveau ICMP # xprobe2 -p tcp:22:open 192.168.12.2- p0f [3] Contrairement à nmap et Xprobe2 p0f ne se connecte à un serveur distant. Il attent qu’on se connecte à lui.
Sur l’autre machine :
Résultat : 192.168.0.2:1456 - Linux 2.4/2.6 <= 2.6.7 (up: 333 hrs)Exemple de particularité lié au système d’exploitation : le RTO Nous allons étudier le fonctionnement des sessions TCP. Pour établir une session, il faut procéder à trois étapes. La machine voulant établir une connexion envoi un paquet SYN avec un numéro de séquence. La machine distante répond par un paquet avec l’option ACK et le numéro de séquence + 1. Dans le même paquet, la machine distance demande si la machine est prête à ouvrir la session avec avec l’option SYN et un numéro de séquence. Enfin la première machine répond avec un paquet ACK avec les deux numéros de séquence + 1.
Suite à ce processus, comportant trois échanges, les deux machines sont synchronisées et la communication peut commencer. Le but du RTO (retransmission timeout) est d’envoyer un paquet SYN et de ne jamais renvoyer la réponse ACK. Suivant les systèmes d’exploitation, le comportement est différent. Voyons en pratique ce que cela donne : Nous envoyons un paquet (-c 1) de type SYN (-S) avec l’adresse source mystifié de 192.168.12.3 (machine qui n’existe pas) sur le port ouvert 22 :
Linux envoi une requête ARP pour connaître l’adresse MAC de la machine 192.168.12.3. Il nous faut mystifier une réponse ARP (voir Jouons avec ARP) :
Sous linux nous remarquons qu’il envoi 6 paquets avec un intervalle de plus en plus loin. Sous freeBSD 4.8 il n’y aurait eu que 4 paquets à intervalle régulier. N’ayant pas de RFC décrivant explicitant la marche à suivre, chaque système à une implémentation de façon différente. Contrer les détections Il n’y a pas de technique sûr pour contrer ce genre d’attaque. Nous pouvons jouer sur les options réseaux pour tromper les tests. Dans un premier test, nous allons limiter les réponses aux paquets mal-formatés. iptables -FAvec nmap (en ajoutant l’option -vv), nous voyons qu’il se trompe. En effet, seuls deux des sept tests fonctionnent. Device type: general purpose|media devicexprobe2 et p0f sont moins précis. Nous allons changer quelques options de la couche TCP pour essayer de tromper les outils : D’abord, nous allons augmenter la valeur de ttl (ttl représente le TimeToLive ou la durée de vie du paquet). De 64, nous passons à 128 :
Enfin nous allons désactiver deux options TCP : echo 0 > /proc/sys/net/ipv4/tcp_window_scalingp0f et xprobe2 seront ainsi trompé. Attention, changer les options de la couche TCP peut avoir des conséquence sur les performances réseaux. Article précédent : Installation et Configuration de sudo sur une Debian Testing
Article suivant : Installation et configuration du FireWall TDI FW
Forum | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||