Manipulacion avanzada de paquetes tcp/ip con scapy I

download Manipulacion avanzada de paquetes tcp/ip con scapy I

of 14

description

Manipulacion avanzada de paquetes tcp/ip con scapy

Transcript of Manipulacion avanzada de paquetes tcp/ip con scapy I

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00t~.crack.-.,ck)(c~ock-esww_ho

    Manipulaci6n avanzada depaquetes TCP/IP con Scapy

    - Parte IEn este articulo voy a introducirlos en el manejo de paquetes TCP/IP conuna herramienta lIamada Scapy. Como primer practlca vamos a realizar

    el hijacking 0"robo" de una sesi6n TCP/IP ya establecida.

    11ntroducci6n

    Toda la Internet esta basada en el continuointercambio de paquetes entre los distintosnodes de la red, con el objetivo de establecercomunicaciones. AI nivel mas primitivo, estespaquetes son una serie de pulsos digitales biendefinidos que viajan en cables de cobrealrededor del mundo. Adernas, la arquitecturade Internet es tal que todos estamos conectadoscon todos, con el objetivo de maximizar laeficiencia a la hora establecer comunicaciones.Es evidente que una red en la que hay queestablecer nuevas conexiones ffsicas cada vezque se quiera utilizar alqun servicio va a sermuchfsimo mas lenta que una red en la que estatodo conectado de antemano.Para evitar que la red sea un completo caos,nace el concepto de conexlon virtual quepermite que una comunlcadon entre dos nodesno sea escuchada por otras personas ajenas a laconversacion. En otras palabras, con elprotocolo TCP/IP de por medio, se puede aislaruna conversaclon entre dos nodes de la redevitando que terceras personas ilegftimas

    participen en laconversaclon.Pero como en este mundo nada funciona comodeberfa, trabajando en un nivel adecuado sepueden modificar paquetes correspondientes auna conversaclon ajena y hasta inyectar datosmaliciosos en dicha conversaclon. En estearticulo se cubren tecnlcas que involucran laconstrucclon y manlpuladon de paquetes para"controlar" la red y alterar su normalfuncionamiento. Para eso, vamos a introduciruna herramienta muy poderosa lIamada Scapy.Antes de empezar, voy a listar los conocimientosbaslcos que deberla tener un posible lector,

    1. Conocimiento sobre el protocolo TCPy UDP:Basicarnente, este articulo se trata de larnanlpulaclon de paquetes TCP/IP0 UDP/IP paralIevar a cabo un determinado objetivo. Por 1 0tanto, es esencial que el lector conozca loslineamientos baslcos de estes protocol os decornunlcaclon, De todas formas, a modo derepaso se explican la mayorfa de los conceptosutilizados.2. Proqrarnaclcn en general: Como veremos,

    www.ha(K.X(raeK.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-esww_ho

    Scapy esta basado en el lnterprete de Python y a1 0 largo del articulo se presentan algunosconceptos relacionados con dicho lenguaje.Adernas vamos a utilizar conceptos deproqrarnacion como variables, enteros, cadenasde texto, etc. No se requieren conocimientosprevios de Python, sin embargo supongo quecuando estes tan emocionado con el temacomo 1 0 estoy yo, querras aprenderinmediatamente. Personalmente, 1 0 que mas megusta de Python es que puedes escribircualquier cosa que crees que deberfa funcionary FUNCIONA.Finalmente, para motivarlos a que lean elarticulo, enumero las cosas que podrfan hacerusando Scapy:1.Creary manipular factlmente paquetes TCP/IP.2. Reproducir en muy pocas Ifneas con un gradode dificultad muy bajo, herramientas como:traceroute, tcptraceroute, arpspoof, dnsspoof,alqun escaner de puertos, etc. EI objetivo deesto no es "reinventar la polvora" sinocomprender a fonda el funcionamiento dedichas aplicaciones, que muchos de nosotros enalqun momenta las utilizamos como "cajasnegras" y personalizarlas para lIevar a cabotareas muy particulares.3.Crear qraflcos 2Dy 3Dde traceroutes.

    4. Reproducir en muy pocas Ifneas un snnifer ymodificar paquetes TCP/IPen tiempo real.S. Scapy es una herramienta muy facll de usarque puede ayudar a una persona a comprendera fonda el protocolo TCP/IPy otros protocolos anivel de apllcacion,6. Infinitas cosas mas, limitadas solo por lalrnaqlnacion y el grado de conocimiento delusuario.

    Para descargar Scapy, en la paqlna webhttp://www.secdev.org/projects/scapy haybastante informacion sobre la lnstalaclon de laversion mas reciente. En la mayorfa de lossistema operativos basados en Debian,simplemente basta hacer "sudo apt-get installscapy". La herramienta esta pensada paraentornos de tipo Unix, pero tambien se la puedeinstalar enWindows.2 LPorque crear paquetespersonalizados?Un paquete es una unidad de informacion bienordenada que se encuentra agrupada con unadeterminada estructura (son unos y ceros quetienen alqun "significado"). En cierta forma,comparte los atributos de una carta que seenvfa por correo postal. Contiene informacionsobre el origen y el destino del paquete, laprioridad del paquete, la ruta que debe seguirpara lIegar a su destino y, por supuesto, elcontenido que debe ser entregado aldestinatario.En resumen, un paquete (independientementedel protocolo utilizado) contiene los datosnecesarios para que pueda ser transmitidocorrectamente y el "payload", que es elcontenido que debe ser entregado. Toda estainformacion es procesada por funcionesautomatizadas que seadhieren a estrictas reglasque son conocidas publicamente. Aquf esdonde la creaclon de paquetes personalizadosjuega un rol importante: no importa donde nicomo se qenero un paquete, si este se adhiere alas normas preestablecidas, una rnaqulna 1 0 va aprocesar si recibe 1 0 que estaba esperando. Paravisualizar esto, veamos dos ejemplos queedemas nos van a ayudar a familizarizarnos conScapyy con su Ifneade comandos interactiva.

    3 www.ha(K.X(raeK.es

    http://www.secdev.org/projects/scapyhttp://www.secdev.org/projects/scapy
  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack o= 0CJ 0 CJ~ G::) .,= - ''= crac....-kxcrock_es2.1 Creaci6n de un paquete UDPEI escenario en este simple ejemplo se muestraen la figura 1. Hay dos maqulnas, una con IP192.168.0.100 (maqulna A) y otra con IP192.168.0.106 (rnaquina B) que tiene el puerto1024 UDPabierto y a la escucha (LISTENING)conel netcat (con la opci6n "-u" , que indica modoUDP).Por 10 tanto, la rnaqulna 192.168.0.106 estaesperando un paquete UDP por el puerto 1024.A continuaci6n, vamos a armar un paquete UDParbritario en la maquina A con Scapy y se 10mandamos a la rnaquina B. En la figura 2 semuestran los comandos ejecutados que acontinuaci6n pasamosa explicar.Baslcarnente, en Scapy se contruye un paquetepor capas. Es decir, por un lade construimos lacapa IP con los parametros que deseamos(direcci6n IP de destino y de origen, Time toLive, Protocolo, etc.) y por otro lade construimosla capa UDP con los puertos de destino y origeny la capa de aplicaci6n donde esta el"payload" 0los datos que queremos enviar. Tarnbien sepuede personalizar la capa Ethernet si se deseatrabajar a niveles bajos.Una vez que tenemos todas las capas armadas,las "juntamos" con el operador "/" armando elpaquete final a ser enviado. Finalmente,enviamos el paquete con el comando sendO yautomatlcamente se completan todos loscampos que no modificamos con valores pordefecto del sistema operatlvo 0 que dependendel paquete (el checksum, por ejemplo).Bastante simple, ino? A continuaci6n vamos aexplicar los comandos que se muestran en lafigura 2:>ls(lP()): Este comando lista todos los camposde la clase IPOque pueden ser personalizados. EIcomando Is(lP())nos muestra cuatros columnas:

    la primera el nombre de cada campo, lasegunda el tipo de dato de cada campo, latercera los valores por defecto al iniciar Scapy yla ultima son los valores actuales de cada uno delos atributos (como no modificamos nadatodavla, son iguales a los de la tercera columna).>capa_IP=IP(dst="192.168.0.106"): Estecomando hace dos cosas y voy a tratar deexplicarlas sin usar un lenguaje espedfico dePython. Primero establece un valor de192.168.0.106 al campo dst de la clase IPO.Segundo "iguala" la "variable" capa_IPa la claseIPO con este valor modificado. Es decir, ahoracapa_IP tiene las mismas propiedades que laclase IPO(lP de origen, IP de destino, TIL, etc)pero con el campo dst igual a 192.168.0.106,que evidentemente representa la IP de destlno.Por ejemplo, si ahora ejecutamos el comandoIs(capa_IP),obtendremos una salida parecida alItem anterior, s610que en la cuarta columna enla fila correspondiente el campo dst aparece laIPque seteamos nosotros.>capa_IP: Este comando muestra en pantallalos campos que fueron modificados por elusuario (distintos a los que vienen por default).>ls(UDP()): Este comando lista los distintosatributos de la claseUDP.>capa_UDP=UDP(dport=1024 , sport=5025):Este comando modifica los valores por defectode la clase UDPy "setea" los puertos de origen ydestino al 5025 y 1024 respectivamente. EIpuerto 1024 es en el que esta escuchando larnaqulna 192.168.0.106 Y el puerto de origen5025 es un nurnero cualquiera de 16bits.>capa_UDP: De vuelta, se muestra en pantallalos campos que fueron modificados por elusuario (distintos a los que vienen por default).>payload="Mandamos un paquete UDP :-)\n":

    4 www.ha(k.xcrack.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    www_ho

    0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-eshack( )

    PCIP =192.168.0.100

    PCIP =192.168.0.106Puerto UDP 1024ABIERTO

    Figura 1. Escenario simple en una red interna. A la izquierda se encuentra lamaquina A que inicio una sesion en Scapy y a la derecha se encuentra la maquina B ,que tiene el n e t c a t a la escucha en el puerto 1924.

    Figura 2. Sesion interactiva en Scapy para la creacion de un paquete UDP.

    5 www.ha(K.X(raeK.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-esww_ho

    Aca simplemente inicializamos una variable detipo "string" que representa el payload que vaadjunto al paquete UDP/IP. En otras palabras,representa la capa de apltcaclon donde seincluyen los comandos que deberfa entender laapllcacion que esta escuchando en el puertoUDP.>paquete=capa_IP/capa_UDP/payload:Finalmente juntamos las tres capas utilizando eloperador "/" y asi armamos un paquete quetiene toda la informacion que ingresamosanteriormente. Si hacemos Is(paquete} seimprime en pantalla los valores de los camposde cadacapa del paquete.>send(paquete): Una vez armado el paquete, 1 0enviamos con el comando sendf), Los camposque no completamos en la capa IP y UDP(checksum, version, protocolo de la capaanterior, longitud, etc.) se "lIenan"automatlcarnente con valores que puedendepender del paquete 0 del sistema operativo.Ademas, en ninqun momento modificamos niarmamos una capa Ethernet pero igual elpaquete se pudo enviar correctamente a lamaqulna 192.168.0.106 (como puede verse a laderecha de la figura 2). Esto se debe a que lafunclon sendO trabaja en la capa 3 (capa IP). Siquieren personalizar la capa de enlance hay queusar la funclon sendpO,que trabaja en lacapa2.Como vemos, Scapy es una apllcacion muyversatll y facll de utilizar. A continuaclon,complicamos un poco mas el escenario parademostrar el alcance de esta poderosaherramienta.2.2 Inyeccion de paquetes UDPen unaconversacion externaEn este nuevo escenario, que se muestra en lafigura 3 hay tres maqulnas en una red interna: lamaqulna A con IP 192.168.0.100, la maquina B

    con IP 192.168.0.106 con el puerto UDP 1024 ala escucha y la rnaqulna ( con IP 192.168.0.107que intercambia paquetes UDP con la Butilizando el puerto 49392 de origen. Adernas, lamaquina ( envlo un paquete UDP a la rnaquinaB con un payload que contiene la cadena:"HOLA 106, soy 107".Como se muestra en la figura 3, la maqulna A dealguna forma comprometlo el segmento de redentre B y ( Y tiene conocimiento de todos losdetalles de la conversaclon UDP que se estalIevando a cabo. Es decir, sabe que la IP192.168.0.107 envfa paquetes UDP del puerto49392 al puerto 1024 de la rnaquina con IP192.168.0.106 (esto se puede lograr mediante latecnlca de ARPSpoofing, la cual explicaremosmasadelante).En resumen, el atacante en la maqulna A sabe

    PC

    , ,~,~'"".o,o~!AtacanteMAQUINA A

    IP ~ 192.168.0,106-; Puerto UDP 1024 ABIERTO

    MAQUINA B

    PC

    IP ~ 192.168,0.107-'1 Puerto UDP de origen 49392

    MAQUINA C

    F i g u r a 3 . E s c e n a r i o s i m p l e d o n d e l am a q u i n a B i n t e r c a m b i a p a q u e t e s U D P c o n

    l a m a q u i n a C . E l a t a c a n t e , e n l a m a q u i n aA , l o g r a c o m p r o m e t e r e l s e g m e n t o d e r e d

    e n t r e B y C e i n y e c t a p a q u e t e si l e g i t i m o s e n l a c o n v e r s a c i 6 n " U D P ' ' .

    6 www.ha(k.x(rBek.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-esww_ho

    que la maqulna B va a recibir y procesarcorrectamente paquetes UDP que provengande la IP 192.168.0.107 con puerto de origen49392, independientemente de como y dondese creen. Los unlcos cuatro parametros quedefinen unfvocamente la conversaclon entre ByCson:1.IPde lamaqulna B:192.168.0.1062. IPde lamaqulna C:192.168.0.1073. Puerto UDPde lamaqulna B:10244. Puerto UDPde lamaqulna C:49392Con alqun objetivo malicioso, el atacante en lamaqulna A busca suplantar la identidad de lamaqulna C inyectando paquetes ilegftimos en laconversacion. Para eso, lIeva a cabo una seslon

    interactiva en Scapy que se muestra en la figura4, e inyecta un paquete UDP que tiene comopayload la cadena "HOLA 106, soy 100 pero meestoy haciendo pasar por 107\n". Acontlnuaclon, pasamos a detallar los comandosejecutados para realizar dicha accion:>capa_IP=IP(src="192.168.0.107",dst="192.168.0.106"): De forma analoqa al casoanterior, establecemos la IP de origen delpaquete como la 192.168.0.107 (maqulna C,quees la que el atacante quiere suplantar) y la IP dedestino como 192.168.0.106(rnaquina B).>capa_IP: Imprimimos en pantalla los cambiosque realizamos sobre los valores por defecto.>capa_UDP=UDP(sport=49392, dport=1024):Configuramos los puertos de origen y destinodel paquete.

    F i g u r a 4 . S e s i o n i n t e r a c t i v a e n S c a p y , d o n d e e 1 a t a c a n t e ( c o n I P 1 9 2 . 1 6 8 . 9 . 1 9 9 )s u p 1 a n t a 1 a i d e n t i d a d d e 1 a m a q u i n a C ( c o n I P 1 9 2 . 1 6 8 . 9 . 1 9 7 ) e n u n a " c o n v e r s a c i o n "

    U D P e n v i a n d o u n p a q u e t e p e r s o n a 1 i z a d o c o n S c a p y .

    7 www.ha(K.X(raeK.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-esww_ho

    >capa_UDP: De vuelta, imprimimos los cambiosrealizados para controlar que todo este bien.>payload="HOLA 106, soy 100 pero me estoyhaciendo pasar por 107\n": Inicializamos unacadena de caracteres que se utlllzara comopayload del paquete UDP.>paquete=capa_IP/capa_UDP/payload:Finalmente armamos el paquete que vamos aenviar.>paquete: Verificamos el paquete por ultimavez, para asegurarnos de que todos losparametres "seteados" sean correctos.>str(paquete): Realiza una "disecclon" delpaquete y 1 0 imprime en pantalla como unaserie de caracteres hexadecimales.>send(paquete): Enviamos el paquete y, comose puede observar en la consola superiorderecha de la figura 4, lIego a la rnaquina B.EI escenario anterior muestra con que facilidadpodemos suplantar la identidad de un host enuna "conversaclon" de tipo UDP. Aunque elejemplo anterior parezca un poco tonto ycarente de sentido no esta muy lejos de ser, porejemplo, una respuesta DNS de un servidor denombres de dominio a un determinado cliente.EI caso anterior general mente se da cuando seintercambian datos utilizando un protocolo noorientado a conexion (UDP). En ese caso, la capade transporte no tiene implementado ni unmecanismo que identifique el flujo deinformacion y que evite que terceros "inyecten"paquetes deliberadamente en la conversaclon(aunque se podrfa implementar uno en la capade apllcacion, como el caso del protocolo DNS).

    \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ - - - - - - - - - - - - - - - - - - - - - - - - - =

    3 Hijacking de una sesi6n TCP/IPComplicamos aun mas el escenario anterior. Envista de 1 0 que sucedio anteriormente en laconversaclon UDP, las rnaqulnas B y C decidenque es mas conveniente intercambiar lospaquetes mediante una conexlon TCP. Comosabemos, el protocolo TCP es orientado aconexlon e implementa un mecanismo en lacapa de transporte para el control del flujo deinformacion y la creaclon de un par de circuitosvirtuales (cada uno en una dlrecclon). Estopermite que solo los dos sistemas finalessincronizados puedan usar la conexlon (en estecaso, By C).Las conexiones TCP se componen de treseta pas: establecimiento de conexron,transferencia de datos y fin de la conexlon, Paraestablecer la conexlon se usa el procedimientolIamado neqociacion en tres pasos (3-wayhandshake) y para la desconexlon se utiliza unaneqociaclon en cuatro pasos (4-way handshake).Durante el establecimiento de la conexlon,algunos parametres como el numero desecuencia (SEQ) son configurados para asegurarla entrega ordenada de los datos y la robustezde la comunlcaclon.EI escenario de este ejemplo es similar alanterior y se muestra en la figura 5. Hay unarnaqulna B con IP 192.168.0.106 con el puertoTCP 5678 abierto y una rnaqulna C con IP192.168.0 107 que utiliza el puerto 35434 deorigen para establecer una conexlon TCP con larnaqulna B. EI atacante en la rnaqulna A con IP192.168.0.100 cornprornetlo el segmento de redentre B y C utilizando la conocida (y pocosigilosa) tecnica de ARPSpoofing, ejecutando loscomandos que se muestran en la figura 5.EI principio del ARPSpoofing es enviar mensajesARP falsos (falsificados, 0 spoofed) a la Ethernet.La finalidad de esta tecnlca es asociar la

    8 www.ha(K.X(raeK.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    tr-ee ~ 35434 [SVN, ACKJ 5e 680033741 ACK 672267299 Win 5792 Len J MSS 1460 TSV 7(35434 :> r-r-ec [,,i;CK] Seq-672267299 Ack-680033742 Wn-1B3 Len-O TSV-:;.4389 TSER-7070635434 > rrac [i==SH,ACK] Seq=672267299 Ack=680033742 Wn=1B3 Len=1B TSV=B3381 TSER=r r ac > 35434 [ACK] Seq=6B0033742 Ack=672267317 Wn=1B1 Len=O TSV=;'9706 TSER=B3381rrac ~ 35434 [i==SH,ACKJ S~11=6B0033742Ack=672267317 W.irl=lB1 L"n=lB TSV=102728 TSEF35434 > t-r-ee [.!lCK] seq=672267317 Ack=680033760 Wn=183 Len--OTSV=B6404 TSER=10272!:35434 >- r-t-ac [i==SH,ACK] seq=672267317 Ack=680033760 Wn=183 Len=3? TSV=91298 TSER=rrac :> 35434 [t.CK] Seq=6B0033760 Ack=672267354 Wn=lBl Len=O TSV=107624 TSER=9129!:

    hack0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-esww_ho

    Source Destination20.001923 192.168.0.10630.005902 192.168.0.1074 115.974927 192. 168.0.1075 115.976737 192. 168.0.1066 128.065274 192. 168.0.1067128.066744 192.168.0.1078 147.641887 192. 168.0.1079 147.643734 192. 168.0.106

    192.168.0.107192. 16B.0.106192. 16B.0.106192. 16B. 0.107192.168.0.107192.168.0.106192.168.0.106192. 16B.0.107

    Infoo, .

    raot@Lany: ~rootatar ry: * Cl p cpoor :_ \/lClIO t 1Cl2. 16Z.0. 10"7 19' :: :. 168.0. 10

    IP = 192.168.0.106Puerto TCP 5678 ABIERTO

    MAQUINA B

    ~@~~root:fLdrry: '* a p spoo f "_ \"Jla 10 t 19'::::.163.0.1061':12.163.0.10, IprocJsys/net/ipv4/ip_forward". Una tecnlca unpoco mas sutil seria usar IPTABLESpara evitarque la rnaqulna C vuelva a establecer unaconexi6n con el puerto 5678 de la maqulna B.De cualquier forma, si la rnaqulna C lograraestablecer nuevamente una conexi6n con B, nopasarla nada con la sesi6n robada por larnaquina A ya que C utilizaria otro puerto deorigen y otros nurneros de secuencia.

    F i g u r a 7 .protocolo TCP (los numerosmuestran en la figura 5).Como se puede ver en la figura 8, la sesi6n denetcat en la rnaquina C se cierraautornatlcarnente luego de que A envia elpaquete RESET.La explicaci6n de los comandosutilizados es analoqa al caso anterior, con launlca diferencia de que ahora el campo flags dela clase capa_TCPes 'R'.Con respecto al numerode secuencia utilizado, antes de que la rnaquinaA inyectara el paquete ilegitimo en laconversaci6n, el ultimo paquete que la rnaquinaB envi6 a la rnaquina C es un paquete ACK,connurnero de secuencia igual a 680033760. Por 1 0tanto, este debe ser el nurnero de secuencia delpaquete RESETque tiene que crear el atacante. Lo que si es esencial tener en cuenta es que, una

    vez robada la sesi6n, el atacante A debe dejar de

    12 www.ha(K.xcraeK.es

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00. ' - = crack-. --.,ck)(c~ock-esww_ho

    No.

    CPro >4 115.974927 192.168. 0.107 192.168.0.106 ro >5 115.976737 192.168. 0.106 192.168.0.107 ro >6 128.065274 192.168. 0.106 192.168.0.107 ro >7 128.066744 192.168. 0.107 192.168.0.106 ro >B 147.641887 192.168. 0.107 192.168.0.106 ro >9 147.643734 192.168. 0.106 192.168.0.107 ro >11 753.258484 192.168. 0.106 192.168.0.107 ro >

    35434 ~ r-r-ac

    r-r-ac >- 35434 [ACK] Seq=680033760 Ack=672267409 Wn=lBl Len-.O TSV=259058 TSER=9129E

    35434 >- rrac PSH, AeK Seq=672267409 Ac =680033760 Wn=8192 Len=42r-r-ec > 35434 [ACK] Seq=680033760 Ack=672267451 Wn=lBl t.eneo TSV=663572 TSER=9129E

    F i g u r a 8 . E 1 a t a c a n t e e n 1 a m a q u i n a A l o g r a s u p 1 a n t a r 1 a i d e n t i d a d d e 1 a m a q u i n a Cc o n t i n u a n d o 1 a c o n v e r s a c i o n T C P c o n 1 a m a q u i n a B .

    redireccionar los paquetes de la maqulna B a la (sesiones HTTP, FTP, POP3, SMTP, etc) de unaC. En caso contra rio, sequman lIegando forma tan rustlca como 1 0 hicimos nosotros. Espaquetes a C de una conexi6n que ya fue evidente que hay que "automatizar" las distintascerrada 1 0 cual es SOSPECHOSOy tarnbien tareas y coordinar adecuadamente elprovocarfa una rafaga de paquetes RESETde la ARPSpoofing, el monitoreo del traflco y lamaqulna C a la B, que podrfan causar que el inyecci6n de paquetes.atacante pierda la conexi6n robada. Finalmente,en la figura 8 se muestra una sesi6n de Scapydonde el atacante continua la "conversaclon"con la rnaquina B suplantando la identidad de lamaqulna C.Paraconcluir, notamos que todo 1 0 expuesto eneste artfculo tiene solamente un lnteresacademlco. Los parametros y las variables acontrolar en un proceso de hijacking de unasesi6n TCP/IP son muchos y hacen que seaimposible aplicarlo en una situaci6n real

    Afortunadamente, la aplicaci6n Scapy junto conel entorno de programaci6n de Python hacenposible la construcci6n de una herramientapractlca de hijacking. Scapy puede trabajar en lacapa de enlace realizando ARPSpoofing, puedemonitorear los paquetes que pasan a traves denuestra maqulna y obtener los nurneros desecuencia y de acusede recibo para "colarse" enuna conexi6n TCP/IP de terceros. Todas esastareas concurrentes se pueden "administrar"correctamente usando la programaci6n de

    13 WWW,h a(K .x c ra e K .~ !

  • 5/13/2018 Manipulacion avanzada de paquetes tcp/ip con scapy I

    hack0, = ac::J 00.' .. crack-. -_ .ckxcrack.esww.ha

    threadings en Python. Para no alargar mas esteartfculo, dejamos todos esos temas para otraocasi6n.4 ConclusionLa conclusi6n (bastante obvia) que podemosobtener de esta practlca es que lascomputadoras son ESTOPIDAS.Nosotros somoseres INTELIGENTESy podemos aprovecharnosde elias. Nunca perdamos de vista que los nodosde una red se comunican con "unos" y "ceros"que viajan a traves del "ciberespacio" enestructuras bien definidas (y conocidaspubllcarnente) lIamadas PAQUETES. Unacomputadora va a procesar los "unos" y "ceros"que reciba si tienen alqun sentido,independientemente de donde se armaron y decomo lIegaron. Por 1 0 tanto, si una computadorarecibe un paquete que estaba esperando, 1 0 va atratar correctamente acatando las normas 0reglascon lascualesfue programada.

    14 www,ha(k.xc rae k.as