viZardSaludos a todos, esta es la última presentación de esta primera jornada de apertura de umeet 2002
viZardY, para cerrar está dan kaminsky
viZardél trabajó dos años como ingeniero de seguridad para cisco
viZardhoy, estará presentando algunas herrmientas de redes llamadas paketto keiretsu
viZardasí que seas bienvenido dan :)
viZardHola a todos
viZardComo Seth ha mencionado, recientemente he liberado un paquete de herramientas que he bautizado como Paketto Keiretsu
viZardsi lo están buscaando, pueden ser encontrado en  http://www.doxpara.com/paketto/paketto-1.0.tar.gz
viZardclaro que la versión 1.01 deberá salir pronto, en cuanto resuelva un problemilla de compilación
viZardEscencialmente, he estado investigando acerca de la siguiente cuestión:
viZardSi yo tomo control directo de una red -- fabrico mis propios paquetes, construyo mi propia pila sin ningún respeto por los campos de datos originales...
viZardqué podría yo hacer?
viZardRomper máquinas no es algo interesante para mí
viZardal menos, no aún ;)
viZardpero existen muchas funcionalidades interesantes que las redes aún no proveen
viZardBuen, no pude triunfar en todo lo que he intentado construir (ej.: aún no existe manera de escanear rápidamente los puertos UDP)
viZard*pero* sí encontré unos potenciales datos acerca de las redes TCP/IP
viZardy es de eso lo que hablaremos hoy
viZardProbablente los más útil de  Keiretsu es el scanrand.
viZardscanrand. es un escanner con la capacidad secundaria de descubrir rutas así como puntos finales (endpoints)
viZardPuede fácilmente averiguar información detallada acerca de hosts, puertos y hops
viZardDebido a su característica de infraestructura "Muy rápida" sólo toma un segundo implantando un nuevo significado para ésto
viZarddurante las pruebas, scanrand fue configurado para examinar la red clase B de una corporación multinacional.
viZardEsto fue hecho con su total consentimiento, claro está ;)
viZard65K hosts recibieron una prueba contra sus puertos HTTP
viZard8300 respondieron afirmativamente, muchos más no
viZardeste escaneo tomó aproximandamente 4 segundos
viZardla arquitectura de scanrand es muy simple
viZardAhora, un problema con el tipo de arquitectura es que no estamos dando seguimiento con quien nos comunicamos
viZardalguien puede decir "heh, este tío está escaneandonos sin idea de a quien está escaneando... enviémosle respuestas falsas".
viZardAhora, esto es una mera indisposición en el mejor de los casos, pero dependiendo de qué pueda ser creado usando scanrand
viZard(particularmente con bases de datos), esto puede ser el canal para serios problemas de seguridad
viZardYo tengo algo de experiencia en seguridad (he hecho algo para OpenSSH), así que esto es inaceptable :-)
viZardAsí que la solución es usar lo que llamo Inverse SYN Cookies
viZardIn TCP, cuando se envía un SYN para hacer una petición de conexión,
viZardse recibe a la vez un SYN|ACK(el puertom está arriba) o un RST|ACK(el puerto está abajo)
viZardAmbos  tienen más que solo arriba o abajo... entre otras cosas, contienen toda la información de direcciones que necesitamos para determinar a quien enviamos
viZarduna petición y a qué puerto estamos mirando.
viZardPero además
viZardtambién contienen número de 32 bits de que hayamos elegido desde el SEQ#er
viZarddesde el SYN
viZardeste número es conocido como el Número Secuencial, o SEQ#
viZardy este es *reflejado* en el Número de "Conocimiento?", o ACK#,
viZardde cualquier SYN|ACK or RST|ACK válido
viZard32 bits es suficiente para incluir variablres criptográficas fuertes que enlacen
viZarduna respuesta válida de un escaneo
viZardEn términos técnicos
Aradorusamos SHA-1 en el HMAC, o Codigo de Autentificacion de Mensaje Haseado
Aradorcontruccion para crear un valor de 160 bits corresponiendo a la combinacion de (IP orign, puerto origen, ip destino, puerto destino)
Aradorentonces los primeros 32 bits son quitados y lanzados en el SEQ#
Aradorcuando el SYN|ACK o RST|ACK vielven, invertimos el proceso ( y decrementamos el ACK# por uno, porque la reflfection se incrementa) para ver si este host recibio un escaneo de nosotros
AradorHMAC envuelve un valor secreto sabido solo por el escaner
Aradorpor lo tanto esto deja un host con una opcion -- responder con la valida informacion, o no responder -- porque cualquier cosa invalida puede ser facilmente ignorada
Aradorhttp://www.doxpara.com/read.php/docs/scanrand_logs.html
AradorAhi encontrareis logs de scanrand siendo usao
Aradorcomo podeis ver en el escaneo local -- 254*20 puertos son escaneados en mi LAN local de 100 Mbit, y los resultados son cotejados en 0.182 segundos
Aradorde nota es la capacidad de hacer una estimacion pasica de hopcounts
Aradores una tecnica simple, pero sorprendentemente efectiva
AradorSimplemente asume que los host remotos empezaron a enviar paquetes en algun valor modulo 32 --64, 128, 255
Aradorpor lo tanto cuando escanee Slashdot, parece estar a 12 hops
Aradorbien, vamos a verificar eso -- pero por supuesto, soy yo, asique vamos a verificarlo sin estados ;)
Aradorel traceroute sin estados de scanrand toma la ventaja de un hecho ignorado
Aradorlos errores ICMP contienen mas que simplemente "algo desajustado"
Aradortambien contienen una copia de la cabecera IP infractora e los primeros 8 bytes de la4 capa contenida dentro
AradorTCP/UDP/ICMP
Aradorasique traceroute funciona asi:
Aradorexiste un valor llamado TTL en la IP
Arador(tiempo para expirar)
AradorTTL se SUPONE que se refiere a segundos, pero ha evolucionado a ser los hops (saltos) al que el paquete se le permite saltar antes de ser descartado
Aradorasique si TTL es 5, saltara cuatro hops y morira
Aradormandando de vuelta un mensaje ICMP de tipo Time Exceeded Mensage (tiempo de mensaje excedido) (que tiene la ip y la cabecera TCP)
Aradorasique traceroute simplemente manda todas las iteraciones a la vez -- en el caso del ejemplo, se mandan de la 1 a la 13
Aradorcuando las respuestas llegan, miramos las cabeceras IP y TCP contenidas dentro para averiguar a quien estamos intentando escanear
Aradoren este caso, todo el tiempo estabamos mirando a 66.35.250.150
Aradoral final del escaneo vemos que nuestra estimacion de 12 hops (saltos) estaba un poco mal -- de hecho estaba a 13
Aradorpero comoveremos mas tarde, la estimacion resulta muy util
Aradorlos ejemplos de despues demuestran los modos mas avanzados de scanrand
Aradorla resolucion DNS es presentemente sincrona, asique enlentece la operacion...idealmente, usarias una herramienta que tomara los los HTTP con sus ips y las reemplazas con sus nombres DNS
Aradorhay bastante por ahi, si recuerdo bien
Aradoruna de las cosas mas interesantes sobre un escaner de puertos combinado con traceroute es que lo podemos hacer a la vez
Aradoresto se muestra en la proxima entrada en los logs de scanread (otra vez: http://www.doxpara.com/read.php/docs/scanrand_logs.html )
Aradorlos retornos estan fuera de orden, pero como podeis ver, mientras los primeros hops (saltos) son todos identicos, cuanto mas nos alejamos, mas divergente se vuelve nuestro escaneo ;)
Aradoresto es lo que esperamos por supuesto
Aradorversiones futuras e scanrand van a soportar explicitamente descubrimiento "mesh" (engranaje?)
Aradoresto va a implicar al origen del ruteo a n hops (saltos) de distancia, poniendo TTL a n+1, y entonces intentando llegar a varias direcciones que se esperan que esten las unas de otras tan lejos como sea posible en las tablas de rute remoto
Aradorla velocidad de la aproximacion sin estados deberia desgarrar ka mayoria de las redes traceables en muy poco tiempo
Aradorpero ya veremos :-)
Aradoruna cosa de notar es el hecho que es factible dividir los procesos de escaneado y recibimiento en varias maquinas
Aradorasique por ejemplo, un sistema podria ser diseñado como el colector de escaneos, mientras que todo los los demas ha mandado los resultados a traves de el
viZardalguien más que ayude a traducir?
Aradoresto es casi un modo alternativo de "source routing" (fuente de ruteo?)
Aradory se demuestra en la entrada final del log
Aradorlo proximo es paratrace, un fork de scanrand
Aradordividido porque realmente hace algo diferente
Aradorahi : http://www.doxpara.com/read.php/docs/paratrace_logs.html
Aradormientras scanrand inicia nuevas conexiones para buscar redes, paratrace usa las conexiones existentes
Aradoresta es la unica forma egectiva de monitorizar las "policy routes" (reglas de ruteo?), y puede tembien penetrar a traves de "stateful firewalls"
Aradorla idea des simple: traceroute es enteramente una actividad de la capa 3 -- iterar el TTL, observar la respuesta ICMP Time Exceeded (tiempo excedido)
Aradorno import a lo que tengamos en la capa 4
Aradorasique si la capa 4 es trafico tcp valido, a traceroute no le importa
Aradorahora bien, TCP tiene la capacidad de soportar paquetes redundantes -- es lo que se espera como resultado de la red IP "no de fiar" que ofrece
Aradorde hecho, esta caracteristica es usada para un tipo de ping TCP "en session" "tcp keealive"
AradorEsencialmente, paratrace usa keepalives (permanecer vivo literalmente)  como transporte del traceroute IP
Aradorlos resultados son los que e ven en los logs
Aradorla estimacion pasiva de hopcounts (numero de saltos) se usa para averiguar como esta de lejos el traceroute parasito
Aradorcambiamos y hablamos de Minwt
Aradorcomo mencione, el objetivo original del diseño de Paketto era examinar que podia hacerse directamente manipulanto el cable
AradorMinewt es una puerta de enlace NAT que poera enteramente en software, manipulando directamente el cable para "instanciarse" a si mismo
Aradorno usa recursos del kernel, guarda la conectividad de la red "raw" que se permite a traves de la manipulacion de sockets y bpf de libnet/libpacp
AradorBPF?
Aradorsin duda, nisiquiera la direccion MAC es compartida con el kernel -- literalmente parece como un nuevo dispositivo en el cable
Aradorlinux hace PPF? Creo que tenia netlinkk o algo similar en lugar de bpf...
AradorBPF es en Filtro de Paquetes de Berkeley, una interfaz estandarizada para pedir el trafico que coincide con una forma determinada
Aradorcomo sarnold apunta, dbf en si mismo no esta implementato en todos los kernels
AradorLibpcap implementa de este modo bfp en espacio de usuario cuando se necesite -- aunque creo que tiene su propia interfaz de kernel para linux
Aradorel principal punto es que Paketto en general esta bastante aislado de las "vagaries" de las dioversas interfaces de red de los kernels; simplemente da estructuras, Yo hago el resto :_)
Aradorvagaries= extrañezas
C-Qazentonces, buscando los log de minewt en http://www.doxpara.com/read.php/docs/minewt_logs.html
C-Qazesto es lo que sucede
C-Qaz./minewt -ii 10.0.1.180 -I 10.0.1.190 -r 10.0.1.254 -v
C-Qaz-i  10.0.1.180 == las sip a las que mi maquinas deberian comunicarse
C-Qazes 10.0.1.190
C-Qaz-r 10.0.1.254 == la ip de lado de afuera que estan a la escucha de 10.0.1.190
C-Qaz-v es la opcion de mostrar todo lo que sucede
C-Qazahora, lo nuevo es que minewt comienza rapidamente  a recoger y manipular con NAT el trafico
C-Qazminewt es unn ´programa muy estable
C-Qazpero muy flexible en los paquetes salientes  SYN, TCP Keepalive. contienen lo necesario  para comenzar la session
C-Qazentonces, entre esto, y el hecho de que minewt controla sus propias direcciones de MAC
C-Qazactualemente es posible comenzar uhja session de minewt en una maquina
C-Qazluego matarla, comenzar una nueva session en otra pc
C-Qaztodo esto sin perder la conexion con el host
C-Qazminewt es un poco mas rapido - sub-ms delay
viZardFreeBSD es probablemente la plataforma más rápida
viZardpero he tenido mis vueltillas por otro lado
viZardEn términos de identificación queso/xprobe, minewt solo ofrece un servicio:
viZardICMP Echo -> ICMP Echo Reply
viZardUsa ping de entrada para construir el ping respuesta de salida, así que espero que haya alguna forma de ping que *solo* minewt pueda generar
viZardaún no he probado esto.
viZardUna recibido un ping, minewt tira la tabla de estado presente -- esto se nota al final de los logs.
viZardMinew tiene dos características que son moderadamente interesantes
viZardPrmero, Minew implementa lo que yo llamo Traducción de Direcciones MAC.
viZardesto realmente viene como parte de la infraestructura.
viZardDebido a que no uso el kernel, no puedo tomar ventaja de ninguna de sus facilidades como el cache ARP
viZardel ARP existe para mapear L3(IP) a L2(MAC)
viZardAhora, aquí está lo interesante
viZardla manera en que el NAT funciona es que mapea los puertos locales sobre una conexión de salida a la dirección interna que lo solicitó
viZardefectivamente
viZardNAT mapea L4(Port) a L3(IP)
viZardy ARP map L3(IP) a L2(MAC)
viZardasí que transitoriamente, podemos tener NAT mapeando L4(port) a la combinación de L3(IP) y L2(MAC)
viZardy ya que no tenemos acceso al cache ARP del kernel, tenemos que hacerlo de esta manera
viZardEste es un efecto lateral interesante
viZardNo nos importa cuales direcciones de respaldo usen los clientes
viZardsi queremos usar 10.*, no hay problema
viZardsi quieren usar una dirección pública -- La *verdadera* dirección IP -- no hay problema tampoco
viZardsi 10 de ellos quieren usar direcciones públicas, no hay problema
viZardporque todas sus MACs son distintas
viZardesto quiere decir, en una limitada gama de circunstancias que la integridad de paquetes puede ser mantenida
viZardUna pregunta interesante ha sido planteada:
Arador<Zanshin> de manera que con minewt corriendo puedes esconderte detras este router virtual y no ser traceaado? Desde que sales el router se acaba...o hay algun traceo mas?
Aradorminewt es tan efectivo como cambiar tu direccion MAC e IP. Si esto Evade algunas funcionalidades de traceado, lo ahra winwt
Aradorcasi siempre estaras traceabel en tu subred, desde que minewt necesita rutearse en aglo
Aradorotra caracteristica interesante es que Minewt
Aradorsoporta Multicast Guerilla
Aradoresto sera mucho mas profundamente explorado en la proxima revision mayor de Paketto
AradorPero la idea basica es conseguir uno de mis mas mayores enfados con las redes actuales: Un paquete, un destino
AradorQuiero enviar un paquete, a muchos destinos, con internet tal como es hoy
Aradoren el caso de que no lo hayas notado, Internet no soporta multicast(envio a varios destinatarios) muy bien
Aradorcon lo cual lo digo todo :-)
AradorInternet -- el universo de ip ruteables -- esta sin duda anclada en el unicast (envio a un destinatario?)
Aradorpero no conectamos directamente la la capa de IP -- tendemos a usar ethernet con interfaz con IP, y ARP resuelve las direcciones MAC de ethernet en IPs de Internet
AradorEthernet soporta broadcast y multicasting (envio a todas los miembros de la red y envio a algunos mienbros de la red) bien -- MAC de  FF:FF:FF:FF:FF:FF o 01:00:5E:??:??:??, respectivamente
Aradorahora, recuerdemos como usamos ARP para enlazar MACs con IP?
AradorVamos a usar ARP para enlazar una IP *unicast*, perfecto para internet, a una direccion IP *Broadcast/Multicast*, perfecto para nuestra LAN
Aradorde esa manera, cuando el router quiera devolver paquetes, haran ARP, veran BC/MC, y enviaran eso al switch -- que por supuesto dividira el trozo para cada parte
Arador<sarnold> oooh :)
Aradorasi es, hay poco que podemos hacer con mas alla de esnifar todo el trafico que salga de Minewt. Trabajo MUCHO mas interesante con esta tecnica viene en futuras versiones
Aradorla comunidad Helix esta esperando conseguir bastante
AradorUna IP  en una LAN sera designada la IP unicast mediante la cual todas las demas transmisiones compartidas estan ruteadas
AradorY cada vliente compartira la carga de responder paquetes -- UDP si es necesario, TCP cuando se necesite
AradorPero eso es 1.1/2.0 de la charla :-D
AradorHay muchas, muchas cosas posibles con redes en "raw"
Aradorbastantes de las cuales espero no tener que escribir
AradorMientras C tiene un gran soporte para conectar directamente al cable, otros lenguajes no. Me gustaria doblar a los programadores de esos lenguajes
Aradorese es el proposito de Linkcat, o lc
Aradorlc es basicamente netcat en capa2 -- dame daatos, los pongo en el cable
Aradornetcat los lanza en una session TCP
Aradorlinkcat linteralmente los lanza en el ethernet
Aradorhttp://www.doxpara.com/read.php/docs/lc_logs.html
AradorEsto muestra logs de linkcat permitiendome cortar y pegar un ICMP Echo
Aradorel modo texto de ethereal me prueba que estamos mandando un paquete valido
Aradorlinkcat soporta ambos, un paquetes en modo cerca del "raw" basado en libpcap (puedes lanzar logs de tcdump en linkcat para retransmitirlos, aunque tcpreplay es una herramienta mejor para eso)
Aradory el modo ASCII visto en los logs
AradorDe alguna nota es el soporte de HMACs en los Trailers de Ethernet
AradorIP tiene un campo de longitud fija que dice cuanto preocuparse
Aradorpero Ethernet te permite lanzar mas, hasta la unidad maxima de transmision (MTU)
Aradorasique podemos lanzar algunos datos extras ahi -- incluyendo una criptovariable opcional que autentifica los datos!
Aradorasique si quieres firmar tus ARPs
Aradoresta es la manera de hacerlo :-)
Aradormucho mas trabajo sera hecho usando Trailers Ethernet en futuras versiones -- esto es una prueba del concepto
Aradorlinkcat firmara trozos arbitrarios usando un secreto compartido, como es
Aradoral final, pero no por ello con menos importancia
Aradordibujos bonitos!
Aradorhttp://www.doxpara.com/pics/index.php?album=phentropy/
Aradorbasados en la excelente investigacion e Michel Zalewski  (http://razor.bindview.com/publish/papers/tcpseq.html), phentropy provee una visualizacion tridimensional de la arbitrariedad de los conjuntos de datos arbitrarios
Aradorel uso es simple
Aradorphentropy datos
Aradorsi estan en formato ascii
Aradorphentropy  -a datos
Aradorla salida es bastante interesante
Aradorbash_rand1 es probablemente el mas directamente util -- es un plotting de la variable de bash $RAND
Aradorbash_rand2 muestra el conjunto de datos rotado
Aradorla herramienta usada para hacer estos renders es muy rapida. liberado en SIGGRAPH 2002 y disponible en openqvis.sourceforge.net, OpenQVIS rederiza conjuntos de datos tridimensionales *arbitrarios* en tiempo real, usando el hardware "pixel Shader" encontrado en tarjetas 3d avanzadas
Aradores bueno hacer mas con el hardware 3d que cosas volatiles :)
AradorIntencionalmente la entrada no aleatoria se renderiza *realmente* muy interesante
viZardEl kernel BSD luce como akin a un Cubo Borg.
viZardEl trasfondo por defecto  de Windows XP termina pareciendo como una serie de 3 triángulos.
viZardUna comparación del canal izquierdo y el canal derecho de una música que escribí hace un tiempo, resultó de lo más interesante ---  se convirtió en un pipe
viZardcon un aura en su interior (vea stereo_r_vs_l_8)
viZardLincat tiene un modo -- -o m-n -- para emitar data que encaje con phentropia para visualizarse
viZardSerá muy interesante dentro de unos meses ver de lo que estén hechos Phentropy/openqvis
viZardEn términos de lo que Phentropy representa... tome 4 valores de datos: a, b, c, d. Entre esos 4 hay 3 deltas -- b-a, c-b, d-c
viZardhagan de esos 3 unos puntos X, Y, Z i emplotenlo
viZardEso es lo que cada punto es.
viZardAhora, el conjunto de todos esos puntos puede ser básicamente interpretado como un comportamiento de cluster -- estas son secciones donde las deltas, sin importar como estén distribuidas a través del total del rango de valores,
viZardterminan siempre siendo similares
viZardData realmente aleatoria no tiene clusters
viZardmucha data no aleatoria (como los comentarios de slashdot) deberían enfocarse en solo un pequeño grupo de zonas
viZardAsí que esto es todo amigos!
viZardMucho más de Paketto vendrá en el 2003
viZardpero esto es todo lo que tenemos hasta ahora.
viZardLas preguntas ya están hechas, esta traducción se atrasó, y creo que sólo quedamos los traductores despiertos
viZard:)
Arador:)
viZardnadie respondió, creo que así es :)
Aradorcasi 2 horas de traduccion simultanea

Generated by irclog2html.pl by Jeff Waugh - find it at freshmeat.net!