Idle Host Scan
Par 4n9e le 09-10-2005
Description du scan de type Idle Host, et son application pratique avec Nmap. Video incluse.
Sommaire :
I. Principe
II. Pratique
III. Nmap Idle Host Scan
IV. Conclusion
I. Principe
De nos jours, quel que soit le type de scan, tout bon firewall saura le bloquer
dans le meilleur des cas, ou au moins le noter dans son journal.
On peut donc considérer avec précaution les notions de scan "stealth",
invisible. Les plus courants sont par exemple les NULL scan, Xmas scan et
autres.
Mais chacun d'eux est un envoi de paquets avec l'ip de l'attaquant,
necessairement. Si le firewall detecte une activité suspecte, alors son
administrateur n'aura aucun mal a retrouver cette ip dans ses journaux
d'activité.
Il reste toutefois un autre type de scan, réellement invisible car totalement
passif vis a vis de la cible.
L'idlescan, puisque c'est de lui qu'il
s'agit, consiste a faire faire son scan par une autre machine, appellée
zombie. Ainsi, comme ce n'est
pas l'attaquant qui scanne, mais une machine zombie, ce scan est peut etre
detectable, mais impossible de savoir d'où il vient.
Du moins est il impossible de trouver l'origine de l'attaque tant que la cible
n'a pas le moyen de verifier les journaux du zombie...
Le principe va donc etre de se servir d'un host pour faire son scan a la place
de l'attaquant.
Dit comme ca, on peut penser dans un premier temps a utiliser un proxy.
Cependant, cette solution pose plusieurs problemes :
d'une part, un proxy agit au niveau applicatif, et ne va pas forcement relayer
tous les protocoles dont on a besoin lors d'un scan.
d'autre part, les proxies loggent quasi systématiquement l'activité sur leur
relais. Disons carrement systématiquement, par defaut, mieux vaut ne pas y faire
confiance.
enfin, les proxies vont le plus souvent rediriger le traffic via les ports 80,
3128, 8080 etc... bien connus de tous et donc tres facilement detectables par la
cible. Et comme en général ils ne veulent pas d'ennui, il y a un fort risque
qu'ils fournissent les logs sur demande de la cible lorsque cela est possible.
Le fait d'utiliser une machine standard sensible à la prediction de numero de
sequence TCP/IP (IPID number) a plusieurs interets :
- d'une part pouvoir envoyer quasiment tout paquet necessaire au scan
- d'autre part s'assurer d'envois lancés depuis des ports anodins
- de pouvoir aussi esperer moins de risques de logs sur le zombie que sur un
proxy officiel (attention, ceci n'est pas sur, notament dans le cas d'un zombie
derriere un firewall)
- enfin pouvoir imaginer contourner une regle de firewall mal definie qui
laisserait passer les requetes d'un zombie bien choisi au sein du reseau de la
cible, si par exemple celui-ci fait partie de la dmz.
II. Pratique
En pratique, on va utiliser le principe de base du spoofing :
Il va s'agir de déduire, d'apres les réactions du zombie, ce qui se passe sur la
cible.
L'idée est qu'un zombie utilisable est celui qui a un numéro de séquence IPID
prévisible. On va donc tout simplement lui parler, afin d'obtenir un numero de
séquence initial, puis parler à la cible en se faisant passer pour le zombie.
A ce moment là, la cible ( si elle répond
) va donc répondre non pas à l'attaquant, mais à celui qui, croit-elle, a envoyé
la demande (c'est à dire le zombie)
Ce zombie, qui n'avait rien demandé, va fermer la connexion. Ceci va modifier
son numero de séquence.
Il ne reste qu'à reparler au zombie afin de voir son nouveau numero de sequence
:
Comme on ne lui a parlé qu'une fois, si il n'a pas eu d'activité alors ce numero
ne devrait etre incrémenté que d'une unité (cette unité peut etre +1, +256, peu
importe).
Mais si entre temps il a eu une activité, son numero de sequence est incrémenté
de deux unités. On sait donc que la cible lui a répondu, indiquant ainsi qu'elle
est en activité.
Voici ceci sous la forme de shémas :
On envoie un paquet à notre zombie afin de...
...récupérer son numero de sequence IPID initial.
Puis on envoie une requete directement à la cible, en faisant croire que celle
ci vient du zombie.
Evidement, ainsi la cible ne nous répondra pas directement, puisqu'elle croit
que ca vient du zombie.
Si le port auquel est adressée cette requete est ouvert, alors la cible répond
comme prévu normalement lors de l'établissement d'une connexion,
mais au zombie.
Si le port est fermé, la cible ferme la tentative de connexion.
Si le port était ouvert, et que la cible a répondu au zombie, celui ci (qui
n'avait rien demandé) est surpris, et ferme la connexion.
ceci a pour effet d'augmenter son numero de
séquence.
Reste alors à l'attaquant a relever ses filets : on interroge encore une fois le
zombie, afin de récupérer son numero de sequence actuel.
Dans tous les cas, le zombie va répondre. Mais dans un cas, on constate que son
numero de sequence a augmenté anormalement, indiquant qu'il a bien discuté avec
la cible.
Dans l'autre, le numero de sequence est augmenté normalement, il ne s'est donc
rien passé avec la cible. On en deduit...
... Que dans un cas la cible à le port scanné ouvert, et dans l'autre que le
port en question est fermé.
III. Nmap Idle host scan
Nmap automatise grandement ce type de scan. L'argument utilisé est le suivant :
-sI <zombie(:port)> : permet un scan de
type TCP. Nmap effectue lui meme la comparaison des IPID sur le zombie et
l'envoi des paquets de tests spoofés sur la cible.
L'interet alternatif de cette méthode est aussi de voir comment différents
zombies percoivent la meme cible au sein d'un reseau.
Ainsi, en comparant les resultats, on peut en déduire certaines regles de
securité et de filtrage au sein de ce reseau. L'attaquant peut ainsi determiner
quelles sont les machines les plus utiles à son attaque future.
Le parametre de port, optionnel, permet de preciser suel port ecouter sur le
zombie pour predire les numeros de sequence.
L'étape la plus difficile est donc de trouver dans un premier temps les zombies
utilisables. Pour ca, pas de secrets, il faut chercher.
On lancera donc des scans classiques de type SYN scan sur un ensemble de cibles
potentielles, jusqu'a trouver des machines comme celle ci :
Comme le montre l'image ci dessus, un bon candidat est celui sur lequel tourne
un système d'exploitation a séquence facilement prévisible. C'est par exemple le
cas ici avec un serveur d'impression JetDirect.
La classification "Trivial Joke" signifie que Nmap ne fera qu'une bouchée de ce
zombie. Evidement, si il est classifié "Good Luck !", passez votre chemin (cas
des Win Xp Sp2 par exemple)...
IV. Conclusion
La vidéo suivante (4.07 Mo, Xvid) montre ce principe, et un scan idle effectué
avec Nmap.
Idlescan