L’attaque (Suite)
Le scan de ports
Les méthodes de scan de ports sont constamment en évolution, avec l’objectif de devenir indétectable par l’hôte. Au travers des années, elles sont devenues pleines ressources et plus fiables. Cependant du à la constante évolution des technologies, même les méthodes les plus ingénieuses d’hier, sont facilement découvertes.
La théorie derrière un scan de port est basée sur la tentative d’ouverture de connexions sur tous les ports TCP et UDP qui puisse offrir un service au client distant. En examinant la réponse de chaque tentative, nous avons la capacité de déterminer si un service est actif (Port ouvert).
Le connect scan
Si un paquet SYN est envoyé sur un port fermé, la réponse SYN, ACK ne sera pas envoyée. En revanche, la cible répondra par RST, ACK (Rest, Acknowledge) indiquant que le port est fermé.
Exemple :
Port Ouvert
172.16.1.1 : 1234 → SYN → 172.16.1.2 : 80
Le client envoie un SYN au serveur sur le port 80
172.16.1.2 : 80 → SYN, ACK → 172.16.1.1 : 1234
Le serveur répond par SYN, ACK
Ce qui indique qu’un démon écoute sur ce port
172.16.1.1 : 1234 → ACK → 172.16.1.2 : 80
Le client répond par un ACK
Port Fermé
172.16.1.1 : 1234 → SYN → 172.16.1.2 : 80
Le client envoie un SYN au serveur sur le port 80
172.16.1.2 : 80 → RST, ACK → 172.16.1.1 : 1234
Le serveur répond par RST, ACK
Ce qui indique qu’aucun démon n’écoute sur ce port
172.16.1.1 : 1234 → ACK → 172.16.1.2 : 80
Le client répond par un ACK
Cet exemple permet de montrer les requêtes et les réponses attendues lors d’une connexion sur un port TCP. Les échanges de requêtes positives seront enregistrés par l’attaquant comme des ports ouverts.
Le SYN scan
Le concept est de dissimuler le fait qu’une connexion est entrain de s’établir depuis le système d’exploitation distant, ce qui est réalisé en ne complétant jamais la connexion TCP active en 3 temps.
Exemple :
Port Ouvert
172.16.1.1 : 1234 → SYN → 172.16.1.2 : 80
Le client envoie un SYN au serveur sur le port 80
172.16.1.2 : 80 → SYN, ACK → 172.16.1.1 : 1234
Le serveur répond par SYN, ACK
Ce qui indique qu’un démon écoute sur ce port
172.16.1.1 : 1234 → RST → 172.16.1.2 : 80
Le client répond par un RST
Ce qui invalide l’établissement de la connexion TCP
Port Fermé
172.16.1.1 : 1234 → SYN → 172.16.1.2 : 80
Le client envoie un SYN au serveur sur le port 80
172.16.1.2 : 80 → RST, ACK → 172.16.1.1 : 1234
Le serveur répond par RST, ACK
Ce qui indique qu’aucun démon n’écoute sur ce port
Comme il a été démontré dans l’exemple précédent l’attaquant n’envoie jamais le ACK final. A la place, il envoie un RST pour notifier à la cible que la connexion a été anormalement rompue. Ce procédé n’était pas détecté par les anciens systèmes d’exploitation, mais les systèmes modernes les révèlent puis les enregistrent dans leurs journaux.
Le non SYN scan
Les scans qui n’envoient pas de paquets SYN sont semblables. Bien qu’ils puissent être décrits comme furtifs, les systèmes modernes les détectent.
Voici les points négatifs des non SYN scan :
- Comme ils ne reposent uniquement sur les réponses des ports non ouverts, nous pouvons conclure avec un grand nombre de faux positifs si les ports sont filtrés.
- Ils supposent que le système distant se conforme aux standards RFC
Le Null scan
Le concept est d’envoyer un paquet avec un flag invalide. Dans notre cas, aucun flag n’est paramétré. Quand la cible reçoit un tel paquet, soit elle le supprimera, soit elle y répondra par un RST, ce qui dépend évidemment de l’état du port de destination (ouvert ou fermé).
Exemple :
Port Ouvert
172.16.1.1 : 1234 → 172.16.1.2 : 80
Le client envoie un paquet sans flag au serveur sur le port 80
– Pas de réponse –
Si aucune réponse n’est reçue, le paquet a été supprimé
Le port peut donc être considéré comme ouvert
Port Fermé
172.16.1.1 : 1234 → 172.16.1.2 : 80
Le client envoie un paquet sans flag au serveur sur le port 80
172.16.1.2 : 80 → RST, ACK → 172.16.1.1 : 1234
Le serveur répond par RST, ACK
Ce qui indique qu’aucun démon n’écoute sur ce port
Le Xmas scan
Semblable au « Null scan », il est basé sur l’idée d’envoyer des paquets avec un paramétrage de flag invalide. Tandis que le « Null scan » envoie un paquet sans options, le « Xmas scan » utilise le URG PSH & FIN (Urgent, Push & Finish) flag. Une fois encore si le port est fermé, un RST sera renvoyé à l’attaquant et si le port est ouvert, le paquet sera détruit.
Exemple :
Port Ouvert
172.16.1.1 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
Le client envoie un paquet avec un flag invalide au serveur sur le port 80
– Pas de réponse –
Si aucune réponse n’est reçue, le paquet a été supprimé
Le port peut donc être considéré comme ouvert
Port Fermé
172.16.1.1 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
Le client envoie un paquet avec un flag invalide au serveur sur le port 80
172.16.1.2 : 80 → RST, ACK → 172.16.1.1 : 1234
Le serveur répond par RST, ACK
Ce qui indique qu’aucun démon n’écoute sur ce port
Le Decoy scan
L’utilisation de leurres est une méthode dont le but est de dissimuler l’identité de l’attaquant à la cible. Des paquets de scans sont envoyés à la cible avec à la fois des adresses sources factices et valides. La cible répondra alors à tous les paquets leurres de la même façon qu’à l’attaquant. Ce procédé complexifie la phase d’identification du réel attaquant.
Exemple :
Port Ouvert
172.16.1.1 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
Le vrai client envoie un paquet avec un flag invalide au serveur sur le port 80
– Pas de réponse –
Si aucune réponse n’est reçue, le paquet a été supprimé
Le port peut donc être considéré comme ouvert
10.0.0.1 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
10.1.0.34 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
10.23.44.9 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
Des paquets avec des adresses leurres sont envoyés
Ils semblent provenir d’autres hôtes du réseau
Port Fermé
172.16.1.1 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
Le vrai client envoie un paquet avec un flag invalide au serveur sur le port 80
172.16.1.2 : 80 → RST, ACK → 172.16.1.1 : 1234
Le serveur répond par RST, ACK Ce qui indique qu’aucun démon n’écoute sur ce port
10.0.0.1 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
10.1.0.34 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
10.23.44.9 : 1234 → URG, PSH, FIN → 172.16.1.2 : 80
Des paquets avec des adresses leurres sont envoyés
Ils semblent provenir d’autres hôtes du réseau
Quand le port est fermé, des réponses RST, ACK sont envoyées aux leurres ainsi qu’au véritable attaquant.