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.