Autor Tema: Tutorial Ethereal Version 1.0  (Leído 2492 veces)

Desconectado Leandros

  • Member
  • ***
  • Mensajes: 421
Tutorial Ethereal Version 1.0
« en: 25 de Junio de 2004, 02:24:32 pm »
Bien lo he demorado mucho, por culpa de mis estudios y creo que no debe esperar más. Como podeis ver, es la versión 1.0, esto quiere decir que no lo he terminado, voy a ir colocando cosas. Este será un post cerrado para que el tutorial quede limpio y sin lios de post, abriré otro para comentarios, dudas y sugerencias. Por lo menos yo lo veo mejor así ;)

Ya digo que el tutorial estará en constante cambio, un dia puede aparecer una cosa y al dia siguiente ser otra. Iré colocando el indice por puntos acabados...(esto no quiere decir que no se incluyan cosas y ayudas de otros usuarios y compañeros)

Bueno pues nada, iremos empezando a colocar todo el temita.

Saludetes a todos

Desconectado Leandros

  • Member
  • ***
  • Mensajes: 421
INDICE
« Respuesta #1 en: 25 de Junio de 2004, 02:28:59 pm »

INDICE ETHEREAL v1.0

1.   Prólogo.
2.   Interfaz y menús.
3.   Captura de paquetes.
             •   Evolución de la captura.
4.      Visualización de resultados.
5. Filtros de captura

Desconectado Leandros

  • Member
  • ***
  • Mensajes: 421
Tutorial Ethereal Version 1.0
« Respuesta #2 en: 25 de Junio de 2004, 02:44:04 pm »
1º- Prologo.

Quien de vosotros queridos internautas no conoce Ethereal, este programa no ha salido en las grandes super producciones de Hollywood como el Nmap con Matrix, pero digo yo…Hace alguna falta? Seguro que después de Matrix han aparecido millones de “Hackers” llamados Neo que cuentan por los Chat del IRC que tienen el Nmap. Una herramienta no por que sea más famosa que otra va a saber usarse, por eso mismo he hecho este tutorial, para que conozcais un poquito más esta util herramienta de auditoria. Si os habeis fijado en el titulo, esta es la versión 1.0, por lo que no es un tutorial acabado, se aceptan sugerencias para añadir, quitar o cambiar cosas, si lo hacemos entre todos conseguiremos un buen tutorial, hay muchos por la red, pero el nuestro tiene que ser el mejor ;)


2º- Interfaz y menús.

Bien comenzaremos a ver que es lo que vamos a encontrarnos cuando ejecutemos el ethereal. Esta que veis es la ventana principal, que se divide en tres partes de visualización y una zona inferior de trabajo con filtros.

Ventana principal del programa.

En la primera  sección, nos encontramos con toda la información obtenida de los paquetes más la gran cantidad de basura que captureis si no utilizais filtros, pero de filtros ya hablaremos más adelante. De aquí podemos sacar las direcciones IP y puertos que han estado en comunicación. Si seleccionamos un paquete en esta sección, obtendremos en los dos recuadros inferiores información mucho más detallada sobre el paquete.

La segunda sección nos muestra información de las cabeceras de los protocolos que ha usado el paquete para ir de una máquina a otra. Mediante los botoncitos que se encuentran a la izquierda (+) podemos desplegar cada apartado mostrando así mucha más información.


La tercera sección nos enseña el volcado hexadecimal del contenido del paquete. Si seleccionasemos cualquier campo en la segunda sección, nos mostraría la tercera sección los datos  reales que han circulado por la red.

En la barra inferior, aparecen cuatro componentes muy interesantes a la hora de hacer análisis de capturas: Creación de filtros (A), filtro actual (B), borrar filtro (C) y mensajes adicionales (D).

El Ethereal contiene en su menú las siguientes opciones:


 :arrow: File: Menú con los ítems para abrir, guardar ficheros de captura. Permite imprimir y salir de la aplicación.

 :arrow: Edit: Menú para encontrar tramas concretas, ir a una trama y marcar tramas. También tiene las opciones de preferencias, de captura y visualización de filtros y protocolos.

:arrow: View: Permite cambiar las opciones de visualización, coloreado de marcos, expandir todas las cajetillas de la sección 2 de la ventana principal o por el contrario cerrarlas todas. También te permite mostrar el contenido del paquete en una ventana nueva.

:arrow: Capture: Inicia o detiene la captura de paquetes, y podemos especificar que clase de filtro utilizar para la captura.
 
:arrow: Help: Aquí tenemos la ayuda del programa, los protocolos soportados, los plugins que hay instalados y como siempre te habla sobre la versión del ethereal, del winpcap y del Windows.


3º- Captura de paquetes.

Si queremos comenzar la captura de información solo debemos ir a CAPTURE en el menú y darle a START. Al seleccionar la opción aparecerá la caja de diálogo con las preferencias para la captura de los paquetes.




Las opciones que permite esta ventana son las siguientes:

1. Interface: Es el interface de captura que se va a emplear para la sesión, en algunos sistemas es equivalente a las conexiones de red de las que se dispone (PPP, Red, etc…). Cuando seleccionamos una opción y al darle a Ok vemos que no captura nada, eso quiere decir que nuestro interface seleccionado no es el correcto, logico verdad? Jejeje ;).

2. Limit each packet to: Marca la cantidad máxima de bytes de cada paquete que deseamos sean capturados.

3. Capture packets in promiscuous mode: En caso de seleccionarse esta opción, se capturarán todos los datos posibles que sean alcanzables por el host monitor. Si no se selecciona1, sólo se capturarán los paquetes que entren o salgan al host monitor.

4. Filter: Determina el filtro que deseamos que se aplique a la captura. La sintaxis de los filtros ya la explicaremos un poco más adelante.

5. File: Con este recuadro podemos conseguir volcar la captura en un archivo, solo debemos especificarlo aquí.

6. Display options: Te da la opción de actualizar la lista de paquetes capturados en tiempo real. Yo la verdad es que nunca lo tengo activado ya que te “chupa” mucha memoria. :S

7. Capture limits: Es el número de paquetes que deseamos que se capturen. En el caso de dejarse a 0, se capturarán todos los paquetes hasta que se detenga manualmente la sesión (o se sature el sistema).

8. Enable MAC name resolution: Este botón permite controlar si
Ethereal traduce o no los primeros tres octetos de las direcciones MAC al
nombre del fabricante a quien ese prefijo ha sido asignado por el IETF.

9. Enable network name resolution: Este botón permite que controlar si Ethereal traduce o no las direcciones IP a nombres del dominio del DNS. Activando esta opción, la lista de paquetes capturados tendrá información más útil, pero provocará las correspondientes peticiones de operaciones de búsqueda, que pueden influir en la captura.

10. Enable transport name resolution: Este botón permite
controlar si Ethereal traduce o no los números de puerto del protocolo.
Una vez configurada la ventana con las opciones que deseemos, al presionar el botón de OK, comenzará la captura de paquetes, si se presiona CANCEL, no se capturará ningún paquete y se regresará al estado anterior. Durante la captura, aparecerá la caja de diálogo que muestra la evolución.


Quiero aclarar que en el Ethereal, una casilla de verificación está seleccionada cuando tiene el botón bajado.


3.1- Evolución de la captura.



Esta es la ventana que te enseña el ethereal cuando está capturando datos de la red, dependiendo del tipo de datos que capture irá mostrandose en su debida fila. Como podeis comprobar, en el momento en que he hecho esto estaba desconectado, ya que no he capturado nada. Eso o me he equivocado al seleccionar el interface como bien explicaba antes.


4º- Visualización de resultados.

Cuando hayamos finalizado la captura de paquetes, toda la secuencia de estos paquetes aparecerá en los marcos de visualización. Ethereal proporciona una serie de herramientas que facilitan esta visualización.
La forma más directa de visualizar los resultados consiste en hacer clic en el paquete del que se desee obtener más información, dentro de la sección 1 de la ventana (Las secciones ya las diferencié al principio). Esta zona muestra los paquetes que han sido capturados. La ventana se divide en filas (una por paquete) y columnas que muestran la correspondiente información acerca de los paquetes.


Las columnas que debemos ver son las siguientes:




De izquierda a derecha y por orden de aparición:

1. No: Número de paquete.
2. Time: Información temporal de la captura del paquete (fecha, hora, etc.)
3. Source: Dirección fuente.
4. Destination: Dirección destino.
5. Protocol: Protocolo empleado por el paquete.
6. Info: Información adicional.

La información de estas columnas puede ser variada por medio de la opción de menú Edit /Preferences. Se pueden añadir o quitar columnas con información adicional o variar el orden en que éstas se muestran.
Si seleccionamos un paquete, la información de éste aparece en la ventana inferior dentro de la sección 2. Allí aparece con los campos que éste tiene y, por medio de un control tree-view, la información de éstos puede ser visualizada de forma organizada.



Como podeis comprobar he borrado ciertos datos para salvaguardar cierta información que no tenía intención de divulgar por la red. En esta sección obtenemos todos los datos del paquete y si aquí seleccionamos una fila, aparecerá el contenido de este en la sección 3 como una zona sombreada.. Se puede extender o contraer toda la información de la sección 2 por medio de las opciones de menú Display / Collapse All y Display / Expand All, respectivamente.
Si quisieramos visualizar un paquete por separado, para un mejor análisis del mismo, o compararlo con otro, se puede seleccionar y por medio de la opción de menú Display / Show packet in New Window. El paquete seleccionado aparecerá en una nueva ventana. También se puede acceder a este menú por medio del menú contextual que aparece al hacer clic con el botón derecho en el paquete seleccionado.
Otras herramientas útiles a la hora de trabajar con los paquetes visualizados son las de buscar o ir hacia un paquete con un número concreto. Esto se hace por medio de los menús Edit / Find frame, y Edit / Go to Frame. También se puede marcar un paquete por medio de la opción de menú Edit / Mark Frame (para desmarcarlo, se debe seleccionar el paquete marcado y volver a seleccionar la opción de menú Edit / Mark Frame).


5.- Filtros de captura.

Una opción muy aconsejable a la hora de capturar paquetes es saber filtrar la información que realmente te interesa, por que sino puedes perderte en un mar de basura. Ethereal te permite filtrar la información de los paquetes capturados, tanto en el momento de la captura de los mismos como en la visualización, para ello utilizaremos la misma sintaxis para la definición de filtros que la orden de Unix tcpdump.

Los filtros de captura están formados por un conjunto de expresiones conectadas mediante los operadores lógicos and/or y opcionalmente precedidos por not:

[not] expresion [and|or [not] expresion ...]

tcp port 23 and host XXXXXX
Captura tráfico telnet (puerto 23) desde y hacia el host XXXXX.

tcp port 23 and not host XXXXXXXX
Captura tráfico telnet no dirigido ni generado por el host XXXXX.

Una primitiva es una de las expresiones siguientes:

[src|dst] host <host>

Permite filtrar el tráfico generado (src) o recibido (dst) por un <host>, indicando su dirección IP o su nombre. Si no se especifica ni src ni dst, se seleccionan todos los paquetes cuya dirección origen o destino coincide con la del computador especificado.

ether [src|dst] host <ehost>
Permite filtrar basándose en la dirección física (Ethernet). Como antes, se puede indicar src o dst para capturar sólo el tráfico saliente o entrante.

gateway host <host>
Permite filtrar paquetes que usan al <host> como un gateway (router). Es decir, paquetes cuya dirección física (origen o destino) es la del host, pero las direcciones IP (origen o destino) no corresponden al host.

[src|dst] net <net> [{mask <mask>}|{len <len>}]
Permite seleccionar paquetes basándose en las direcciones de red. Adicionalmente, se puede especificar un máscara de red o el prefijo CIDR cuando sea diferente al de la propia máquina desde donde se realiza la captura.

[tcp|udp] [src|dst] port <port>
Permite un filtrado basado en los puertos TCP y/o UDP. Las opciones [tcp|udp] [src|dst] permiten restringir el filtrado sólo a los paquetes de un protocolo (TCP o UDP), o sólo a los que utilizan el puerto como origen o como destino.

less|greater <length>
Selecciona paquetes cuya longitud sea menor o igual (less) o mayor o igual (greater) que un valor dado <length>.

ip|ether proto <protocol>
Selecciona paquetes del protocolo especificado, bien al nivel Ethernet o al nivel IP.

ether|ip broadcast|multicast
Permite filtrar difusiones (broadcast) o multidifusiones (multicast) Ethernet o IP.

<expr> relop <expr>
Esta primitiva permite crear filtros complejos que seleccionan bytes o rangos de bytes en los paquetes. La primitiva se evalúa a True si se cumple la relación. relop es una de las siguientes: >, <, >=, <=, =, !=,(por orden de aparición: menor que, mayor que, menor o igual, mayor o igual, igual a, distinto a) y expr es una expresión aritmética compuesta por constantes enteras (expresadas en la sintaxis estándar de C), los operadores binarios [+, -, *, /, &, |], un operador de longitud, y funciones para acceder a los datos de un paquete.

Para acceder a datos en el interior de un paquete se utiliza la sintaxis siguiente:

proto [ expr : size ]
proto es uno de los siguientes ether, fddi, ip, arp, rarp, tcp, udp, or icmp. El offset en bytes referido al protocolo especificado, viene dado por expr. size es opcional e indica el número de bytes del campo de interés; puede ser 1, 2 ó 4, el defecto es 1. El operador de longitud, indicado por la palabra len, da la longitud del paquete.
 
Por ejemplo:

ether[0] & 1 != 0 captura todo el tráfico multicast
ip[0] & 0xf != 5 captura todos los paquetes IP con opciones
ip[6:2] & 0x1fff = 0 captura sólo datagramas no fragmentados y el primer fragmento de un datagrama.

Esta comprobación se aplica implícitamente a todas las operaciones tcp y udp indexadas. Por ejemplo, tcp[0] siempre significa el primer byte de la cabecera TCP, y no el primer byte de un fragmento tcp distinto del primero.

Veamos ahora unos pequeños ejemplos:

Para capturar todos los paquetes que llegan o salen sundown:

host sundown

Para capturar el tráfico entre xxxx y, o bien, ccc, o zzz:

host xxxx and ( ccc or zzz )

Para capturar todos los paquetes IP entre xxx y cualquier host excepto ZZZZ:

ip host xxxx and not ZZZZ

Para capturar todo el tráfico ftp a través del router snup:

gateway snup and (port ftp or ftp-data)

Para capturar los paquetes de establecimiento y cierre de cada conexión TCP (los paquetes SYN y FIN).

tcp[13] & 3 != 0

Para capturar datagramas IP mayores de 576 bytes

ip[2:2] > 576

Para capturar los datagramas IP de difusión o multidestino que no han sido enviados mediante una difusión o dirección multidestino Ethernet

ether[0] & 1 = 0 and ip[16] >= 224

Para capturar todos los paquetes ICMP, excepto las peticiones y respuestas de eco:

icmp[0] != 8 and icmp[0] != 0

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License