Jugant amb paquets tcp/ip: paketto keiretsu

En Dan Kaminsky, de DoxPara Research, desenvolupa fa temps unes utilitats amb el nom de paketto keiretsu. A continuació intentarem veure que són i per a que serveixen.

Paketto keiretsu està compossat per 5 utilitats: scanrand, paratrace, lc, minewt i phentropy. En aquest article en parlarem de les dues primeres. Les altres tres les deixarem per a un possible futur article.

Scanrand
Aquesta utilitat implementa extrema, ràpida i eficientment l’escaneig de ports, hosts i xarxes, segons els seu autor. Per tal de fer tot això, empra dos processos completament separats l’un de l’altre. Un d’aquests processos es dedica a enviar peticions sense parar, i l’altre es dedica a rebre les respostes. El primer que ens parem a pensar al llegir això és que ambdòs processos s’han de comunicar d’alguna forma per tal de saber quins paquets i a on s’han enviat, i veure si tornen els que han de tornar, per tal d’assegurar-nos que ningú ens està jugant una mala passada enviant-nos paquets de resposta falsos per xafar els resultats. Doncs no, els processos de fet son tan independents que estàn pensats per a poder-se executar en màquines diferents. Aquest mètode, escala increiblement bé; si amb threads podríem arribar a atendre unes 100 peticions per segon, amb aquest disseny en podem atendre del nivell d’uns quants milers.
En quant a la comprovació dels paquets retornants, la solució resulta ser ben senzilla: criptografía. Als paquets sortints se’ls hi fica una signatura criptogràfica que es comprova en la recepció.

La utilització d’aquesta comanda és simple:
scanrand [opcions] rang‐direccions[:rang‐ports]

és a dir, per exemple, scanrand 192.168.0.1-254:1-80 ens diría els ports entre l’1 i el 80 que estiguin oberts als hosts de la xarxa 192.168.0.0/24.
També, encara que pot resultar excesiu, es poden posar rangs a altres parts de la direcció ip: scanrand 192.168.0-255.1-254:1-80, escanejant així tota la xarxa 192.168.0.0/16.
Altres opcions respecte als ports, en comptes de possar un rang, són:
quick (80,443,445,53,20‐23,25,135,139,8080,110,111,143,1025,5000,465,993,31337,79,8010,8000,6667,2049,3306)

squick (80,443,139,21,22,23)
known (tots els que surten a la llista de la IANA de ports TCP i alguns més que també mira l’nmap)
all (0-65535, si, el 0 també és un port)

A banda, té alguna altra opció interessant, com la “-b” per limitar el consum d’ample de banda, important sobretot perquè sinò ens la pot colapsar durant el temps que estigui escanejant.

Paratrace
Una interessant utilitat que ver a fer el mateix que el mític traceroute però amb uns petits matissos, que son els que el fan interessant. Paratrace, en comptes d’iterar els TTL (TimeToLive o Temps De Vida) de paquets UDP, ICMP o inclús TCP SYN, el que fà es “acoplar-se” a paquets completament normals de fluxos TCP que passin el firewall. És a dir, aprofitant qualsevol conexió vàlida entre nosaltres i el destí, com pot ser una sessió http; sense haver de malformar cap paquet.
El funcionament bàsic és molt senzill:
paratrace destí

i mentres espera a donar els resultats, simplement hem d’anar al nostre navegador, o programa d’ftp, o irc, o cualsevol que ens permeti una conexió amb la màquina destí vàlida i fer cualsevol petició legítima. En aquest moment paratrace es possarà a treballar i ens donarà els resultats.

Exemple:

modest:/home/sergi# paratrace www.gplurv.org
Waiting to detect attachable TCP connection to host/net: www.gplurv.org
(aquí amb el navegador web hem anat a la plana de gplurv.org)
193.147.217.51:80/32 1-16
001 =        10.3.64.1|80    [01]   8.499s(     62.57.27.37 -> 193.147.217.51  )
002 =       10.0.9.177|80    [02]   8.504s(     62.57.27.37 -> 193.147.217.51  )
003 =     10.61.169.66|80    [03]   8.509s(     62.57.27.37 -> 193.147.217.51  )
004 =     10.61.169.97|80    [04]   8.513s(     62.57.27.37 -> 193.147.217.51  )
005 =     10.61.169.81|80    [05]   8.518s(     62.57.27.37 -> 193.147.217.51  )
006 =      62.100.97.5|80    [10]   8.523s(     62.57.27.37 -> 193.147.217.51  )
008 =      10.127.3.38|80    [10]   8.533s(     62.57.27.37 -> 193.147.217.51  )
009 =      213.234.0.2|80    [10]   8.537s(     62.57.27.37 -> 193.147.217.51  )
010 =   193.147.232.30|80    [10]   8.544s(     62.57.27.37 -> 193.147.217.51  )
011 =  192.168.170.135|80    [11]   8.549s(     62.57.27.37 -> 193.147.217.51  )
  UP:   193.147.217.51:80    [12]   8.556s

Com podeu veure, un cop establerta la conexió amb la màquina destí (prop del 8.499s), els resultats han sigut imediats.

Si voleu saber més al respecte de paketto keiretsu, us recomano que us el baixeu i hi trobareu a dins la transcripció d’una conferència força interessant i aclaridora que va fer el seu desenvolupador (Dan Kaminsky) a la Umeet 2002 (també està al paquet de Debian, codename “paketto”).
Autor: sergi

This entry was posted in Internet. Bookmark the permalink.

One Response to Jugant amb paquets tcp/ip: paketto keiretsu

  1. marble says:

    Escuche hablar de paketto keiretsu en la Umeet 2002 tal y como dices y me pareció bastante interesante, plantea una forma de realizar acciones muy corrientes pero desde un punto de vista innovador y diferente. Me alegro que haya surgido este articulo de la mano de Sergi y me deja impaciente por ver una futura segunda parte sobre el resto de utilidades 🙂

Leave a Reply