Vanilla connect()
est la méthode de connexion la plus basique et la plus fiable. L’appel système connect() essai d’ouvre une connexion entre ports sur un host distant. Si le port est ouvert, connect() réussira à s’y connecter, sinon le port est dit fermé ou sans réponse.
On considère qu’un port est ouvert sur la cible, lorsqu’on obtient ce schéma :
On considère qu’un port est fermé sur la cible, lorsqu’on obtient ce schéma :
On peut aussi ne rien recevoir si la cible l’a décidé où si un Firewall placé en avant l’interdit. Un port fermé peux alors aussi se représenter par un non réponse.
outils fonctionnant sur la méthode Vanilla connect()
nmap utilise cette méthode si on lui indique l’option -sT.
Sous Windows, le SuperScan de Foundstone est un très bon outil de scanning.
Example:
nmap -sT 192.168.1.201
Half-open SYN flag
En tant normal, comme vu juste au dessus, la connexion TCP s’effectue en 3 datagrammes.
Ici, nous allons envoyer un SYN, recevoir un SYN/ACK, mais au lieu de renvoyer un ACK, avec la méthode demi connexion SYN, nous allons envoyer un RST, ce qui va brutalement fermer la connexion. Si la machine cible n’a pas d’IDS (Système de Détection d’Intrusions) ou de firewall, cette « demi-connexion » ne sera pas enregistré (dans les logs) par la machine cible. Dans le cas contraire il y aura une trace comme quoi la connexion a été fermée brutalement et ce n’est donc pas normal. Il est peux être mieux d’être loggué comme session réussite que session échouée. L’administrateur distant sera attiré par les logs d’échec alors que la réussite sera noyé parmi les autres logs.
Si, après avoir envoyé un SYN, on reçoit un SYN/ACK, cela veut dire que le port est ouvert.
On renvoie donc un RST pour couper la connexion, dans l’espoir de ne pas être logué. Si le port est fermé, on recevra un RST/ACK et on s’arrête là.
outil fonctionnant sur la méthode Half-open SYN flag :
Nmap utilise cette méthode si on lui indique l’option -sS.
Exemple:
Inverse TCP flag
Les IDS et les firewalls sont désormais capables de loguer les scans SYN de toutes manières quelles qu’elles soient. La RFC 793 indique que si un port est fermé, alors il doit renvoyer un paquet RST/ACK pour fermer la connexion et s’il est ouvert, il ne renvoie pas de réponse.
L’attaquant envoie donc des paquets TCP forgés avec des flags divers de type FIN, URG, PSH etc, mais pas de SYN bien évidement pour ne pas être logué par le firewall. Le principe de cette méthode est de ne pas envoyer de SYN, mais un autre paquet comme FIN, URG, PSH et d’attendre comme toujours la réponse.
Conformément à la RFC, le schéma suivant montre que le port de la cible est fermé :
Le schéma suivant montre que le port de la cible est ouvert :
outil fonctionnant sur la méthode Inverse TCP flag :
Nmap utilise cette méthode si on lui indique les options -sF (FIN flag) ou -sN (NULL = pas de flag TCP)
Sous Windows, il y a VScan qui requiert les drivers WinPcap
Exemple:
ACK flag probe
Cette méthode exploite une vulnérabilité dans la pile TCP/IP. Elle a été découverte et publié dans le magazine Phrack #49. Pour cela, ll suffit d’envoyer un grand nombre d’ACK et d’analyser les réponses RST que nous recevrons :