Annotation of embedaddon/hping2/docs/french/SPOOFED_SCAN.txt, revision 1.1.1.1
1.1 misho 1: Ce qui suit est le postage original (ndt : du moins sa traduction) à bugtraq
2: à propos de la méthode de scan usurpée/passive/indirecte. Voir le fichier
3: HPING2-HOWTO pour plus d'informations.
4:
5: antirez
6:
7: ---
8:
9: Salut,
10:
11: J'ai découvert une nouvelle méthode de scan de ports TCP. Au
12: contraire de toutes les autres elle vous permet de scanner en
13: utilisant des paquets usurpés (ndt : dont l'adresse IP source est
14: usurpée), ainsi les systèmes scannés ne peuvent pas voir votre
15: adresse réelle. Afin de réaliser cela j'utilise trois particularités
16: bien connues des mises en oeuvre TCP/IP de la plupart des OS.
17:
18: (1) * les systèmes répondent SYN|ACK à SYN si le port TCP cible
19: est ouvert, et RST|ACK si le port TCP cible est fermé.
20:
21: (2) * Vous pouvez connaître le nombre de paquets que les systèmes
22: envoient en utilisant le champ id de l'entête IP. Voir mes
23: précédents postages 'à propos de l'entête IP' dans cette mailing
24: liste.
25:
26: (3) * les systèmes répondent RST à SYN|ACK, ne répondent rien à
27: RST.
28:
29:
30: Les joueurs:
31:
32: système A - le système malfaisant, l'attaquant.
33: système B - le système silencieux.
34: système C - le système victime.
35:
36: A est votre système.
37: B est un système particulier : il ne doit envoyer aucun paquet
38: pendant que vous scannez C. Il y a énormément de systèmes à 'trafic
39: nul' sur Internet, spécialement la nuit :)
40: C est la victime, il doit être vulnérable aux scans SYN.
41:
42: J'ai appelé cette méthode de scan 'scan du système muet' (ndt :
43: l'autre traduction de 'dumb' est bête) en référence aux
44: caractéristiques du système B.
45:
46:
47: Comment elle fonctionne :
48:
49: Le système A surveille le nombre de paquets sortants depuis B en
50: utilisant le champ id de l'entête IP. Vous pouvez faire ceci
51: simplement en utilisant hping :
52:
53: #hping B -r
54: HPING B (eth0 xxx.yyy.zzz.jjj): no flags are set, 40 data bytes
55: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms
56: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms
57: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms
58: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms
59: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms
60: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms
61: -cut-
62: ..
63: .
64:
65: Comme vous pouvez le voir, les incréments du champ id sont toujours
66: de 1. Ainsi ce système a la caractéristique requise pour jouer le
67: rôle de B.
68:
69: Maintenant le système A envoie des paquets SYN au port X de C en
70: usurpant l'adresse source de B.
71: (avec hping => 0.67 c'est très facile, http://www.kyuzz.org/antirez)
72: si le port X de C est ouvert, le système C enverra SYN|ACK à B (oui,
73: le système C ne sait pas que le véritable expéditeur est A). Dans ce
74: cas le système B répond au SYN|ACK avec un RST.
75: Si nous envoyons au système C quelques paquets SYN il répondra à B
76: quelques paquet SYN|ACK, ainsi B répondra à C quelques RST... ainsi
77: nous verrons que le système B est en train d'envoyer des paquets !
78:
79: .
80: ..
81: -cut-
82: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms
83: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms
84: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms
85: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms
86: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms
87: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms
88: -cut-
89: ..
90: .
91:
92: Le port est ouvert !
93:
94: Par contre, si le port X de C est fermé alors en envoyant à C
95: quelques paquets SYN avec l'adresse usurpée de B, il répondra avec
96: des paquets RST à B, et B ne répondra pas (voir 3). Ainsi nous
97: verrons que le système B n'est en train d'envoyer aucun paquet :
98:
99: .
100: ..
101: -cut-
102: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms
103: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms
104: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms
105: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms
106: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms
107: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms
108: -cut-
109: ..
110: .
111:
112: Le port est fermé.
113:
114: Tout ceci peut paraître compliqué à réaliser, mais utiliser deux
115: sessions de hping dans des consoles virtuelles Linux ou sous X rend
116: cela plus simple.
117: La première session surveille le système B : hping B -r
118: La seconde session envoie des paquets SYN spoofés : hping C -a B -S
119:
120: Désolé si mon anglais n'est pas clair.
121: Cependant ce postage n'est pas adéquat pour décrire exhaustivement
122: cette méthode de scan, ainsi je vais écrire un article à ce sujet,
123: en particulier comment mettre en oeuvre ceci dans un scanner de
124: ports (i.e. nmap), et à propos des caractéristiques des joueurs et
125: des OS utilisés.
126:
127: bonne nouvelle année,
128: antirez
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>