Détection d'OS via le protocole ICMP
Date : 27 Juillet 2005
Détection d’OS via le protocole ICMP
Ce mois-ci, un débat a été initié sur la possibilité de détection du type de système d’exploitation, ceci à distance via des paquets ICMP (Internet Control Message Protocol – RFC 792). Cette identification ne constitue pas en elle-même une attaque, mais ces informations peuvent permettre à un utilisateur mal intentionné d’affiner les attaques qu’il pourra lancer contre une machine.
Deux méthodes ont été décrites afin d’identifier, pour la première, les systèmes Sun ou HP et pour la seconde, les systèmes Windows de Microsoft.
Identification des systèmes Sun ou HP :
Certains systèmes d’exploitation tels OpenVMS, Windows 9x, Solaris (Sun) et HP-UX (HP) ont la possibilité de répondre aux paquets ICMP de type 17 (type non présent dans la RFC - requête pour déterminer le masque de sous-réseau de la machine interrogée). Les autres systèmes ne proposent aucune réponse à ce type de requête.
Exemple de réponse standard :
12 bytes from 192.168.0.1: icmp_seq=0 ttl=254 mask=255.255.255.0
12 bytes from 192.168.0.1: icmp_seq=1 ttl=254 mask=255.255.255.0
12 bytes from 192.168.0.1: icmp_seq=2 ttl=254 mask=255.255.255.0
12 bytes from 192.168.0.1: icmp_seq=3 ttl=254 mask=255.255.255.0
--- 192.168.0.1 sing statistics ---
4 packets transmitted, 4 packets received, 0% packet los
Cependant, il est possible d’identifier plus précisément deux d’entre eux, Solaris ou HP-UX version 11.0, par le biais de la réponse non standard (Cf. ci-dessous) qu’ils fournissent à des paquets ICMP de type 17 fragmentés de manière spécifique.
Réponse non standard :
12 bytes from 192.168.0.1: icmp_seq=0 ttl=254 mask=0.0.0.0
12 bytes from 192.168.0.1: icmp_seq=1 ttl=254 mask=0.0.0.0
--- 192.168.0.1 sing statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
Ce phénomène a été testé par le CERT-IST sur plusieurs environnements.
Résultat :
- Solaris 2.6 : réponse non standard aux paquets ICMP spécifiques
- Windows 98 : réponse standard aux paquets ICMP spécifiques
- Linux : aucune réponse
- Windows NT : aucune réponse
Les tests ci-dessus auraient donné des résultats similaires sur HP ; ils n'ont pu être conduits par le CERT-IST, faute de matériel disponible. Tout résultat de test fait par un lecteur de ce bulletin peut être communiqué au CERT-IST qui en fera profiter la communauté.
Identification des systèmes Windows de Microsoft :
Les paquets ICMP peuvent également servir à synchroniser deux machines. Pour cela, le protocole ICMP propose des paquets ICMP de type 13 pour la requête et 14 pour la réponse. Le champ code de ces paquets quant à lui doit rester nul.
Une particularité des systèmes Windows est qu’ils répondent à ce type de paquet ayant un champ code nul, mais ne répondent jamais à un paquet ayant le champ code renseigné.
Conclusion :
La solution à ce problème serait de filtrer le protocole ICMP à l’entrée d’un réseau, mais son utilité reconnue n’encourage pas cette solution radicale. Cependant, certaines solutions de filtrage proposent de filtres du protocole ICMP basé sur le champ " type " de ces paquets.
Document :
- RFC 792 du protocole ICMP (Internet Control Message Protocol) : http://www.ietf.org/rfc/rfc0792.txt