martes, 29 de septiembre de 2015

Tarea 4

PARTE I

Comenzamos la unidad 2 abriendo wireshark para ver una captura de tráfico:

Enunciado: En esta tarea no vamos a realizar capturas en vivo de tráfico, sino que vamos a analizar trazas (capturas) ya realizadas con anterioridad y salvadas en archivos. En este caso, vamos a usar la traza telnet-raw.pcap, del repositorio de capturas disponible en Wireshark.

Preguntas:

  • ¿Qué usuario y contraseña se ha utilizado para acceder al servidor de Telnet?
  • ¿Qué sistema operativo corre en la máquina?
  • ¿Qué comandos se ejecutan en esta sesión?

Respuestas:

Lanzamos Wireshark, abrimos el fichero pcap que nos indican y filtramos por el tráfico telnet como se nos indica. Una vez hecho esto, clicamos con el boton derecho sobre ese tráfico y escogemos la opcion "Follow TCP Stream". Nos sale la siguiente pantalla:

Aqui podemos ver que el nombre de usuario parece ser "ffaakkee" y la contraseña "user". Como vemos abajo que un comando resulta ser "llss", que realmente se trata del comando "ls" de windows, nos damos cuenta de que aparecen las letras duplicadas y que "ffaakkee", realmente se trata del usuario "fake" y la contraseña "user".

En cuanto al sistema operativo vemos algo más abajo que se trata de un Open BSD.

Por ultimo, para ver los comandos lanzados tenemos que hacer un poco de scroll down:

...para ver que se lanzó un :

  • ls
  • ls -a
  • /sbin/ping www.yahoo.com
  • exit


PARTE II: Analizando SSL

Para la realización de este ejercicio, descarga esta traza con tráfico SSL y abrela con Wireshark.

    Preguntas:
  • ¿Puedes identificar en qué paquete de la trama el servidor envía el certificado?
  • ¿El certificado va en claro o está cifrado? ¿Puedes ver, por ejemplo, qué autoridad ha emitido el certificado?
  • ¿Qué asegura el certificado, la identidad del servidor o del cliente?

Respuestas:

Como vemos en esta imagen, es el propio Wireshark el que nos indica la respuesta a la primera pregunta. Vemos el segundo paquete que tiene como origen el servidor y del que Wireshark nos indica "Server Hello, Certificate, Server Hello Done". Ese es el paquete en cuestion:

Al extender la información, vemos el lugar exacto donde va el certificado dentro del paquete.

Para responder a la segunda pregunta, tenemos que hacer, igual que antes, click con el boton derecho sobre el paquete y escoger "Follow TCP Stream". Nos sale esta pantalla:

Como vemos, aqui no entendemos nada. Va casi todo cifrado. La parte azul de principio donde va algo en claro, ese es el certificado. Como vemos el usuario debio visitar www.microsoft.com o alguna web perteneciente a la MSN y propiedad de Microsoft (hotmail, outlook, etc). El certificado, como vemos es de Verisign.

Para la tercera pregunta no hace falta captura de pantalla. El certificado verifica la identidad de la página web, es decir, del servidor.



Parte III. Analizando SSH

Una alternativa a usar Telnet a la hora de conectarnos a máquinas remotas es SSH, que realiza una negociación previa al intercambio de datos de usuario. A partir de esta negociación, el tráfico viaja cifrado. Descarga esta traza con tráfico SSH y...

    Preguntas:
  • ¿Puedes ver a partir de qué paquete comienza el tráfico cifrado?
  • ¿Qué protocolos viajan cifrados, todos (IP, TCP...) o alguno en particular?
  • ¿Es posible ver alguna información de usuario como contraseñas de acceso?

Respuestas:

1.- Como vemos, tras filtrar por "ssh", el tráfico comienza a estar cifrado tras intercambiar los tipos de cifrado soportados, intercambiar las claves públicas y establecer una clave de cifrado para la comunicacion. Es decir, en el paquete 20 de la comunicacion:


2.- El protocolo que viaja cifrado es sólo SSH, de hecho, como vemos, seguimos pudiendo ver (y entender) los paquetes TCP (y dentro de ellos los datagramas IP), sobre los que va el SSH:

3.- No. No es posible, básicamente porque la clave nunca se envia, lo que se intercambian son valores de numeros primos. El proceso es el siguiente:

    SSHv2 Client: Key Exchange Init --> Negociación de algunos parámetros como la compresión o protocolo de cifrado
    SSHv2 Server: Key Exchange Init --> Respuesta al anterior paquete. El servidor indica que tipos de cifrado acepta
    SSHv2 Client: Diffie-Hellman GEX Request --> Negociación de los parametros del cifrado DH (cifrado, mac y compresion)
    SSHv2 Server: Diffie-Hellman GEX key exchange Reply --> Respuesta al anterior 
    SSHv2 Client: Diffie-Hellman GEX Init --> El cliente envia "e" al servidor 
    SSHv2 Server: Diffie-Hellman GEX Reply --> El otro extremo envia "f"
    SSHv2 Client: New Keys --> Posiblemente un ACK. No estoy seguro

Al recibir el mensaje DH_GEX_INIT (que contiene un numero muy largo "e"), el servidor genera su propio numero aleatorio "y", y calcula f = g^y mod p, y le envia "f" al cliente. También calcula k = e^y mod p, que será el valor de la clave secreta compartida. El cliente, al recibir "f" hace lo mismo, usando la formula k = f^x mod p. Si todo va bien, el cliente y el servidor tendrán el mismo valor de k. Con esta clave ambas partes establecen un canal seguro:

A partir de aqui, el tráfico viaja cifrado, y el proceso consiste en el intercambio de claves publicas entre cliente y servidor, la autenticación del usuario SSH, el establecimiento de los canales de datos, etc.

lunes, 28 de septiembre de 2015

Tarea 3

Para hacerlo más simple vamos a seguir los pasos que se indican en el MOOC, usando gpg2, pero hay muchas otras formas de hacerlo.

El primer paso es generar el par de claves publico privadas con

gpg2 --gen-key

Como vemos, nos pregunta el algoritmo de cifrado, el numero de bits de la clave y nos pide que introduzcamos caracteres aleatorios para que generar la clave. Finalmente nos informa de que la clave ha sido creada.

A continuación comprobamos si se ha creado con el comando

gpg2 --list-keys

...lo que nos saca el listado de claves publicas. También comprobamos el contenido de la clave pública, que claro, esta en binario.

A continuación importamos la clave pública del destinatario (que nos ha enviado por correo) con el comando.

gpg2 --import 

Una vez importado, ya deberíamos tener dos claves públicas (no se ve en la imagen), asi que creamos el mensaje (en verde) y lo ciframos (en azul). Como se ve, inicialmente me equivoqué porque hay que usar el nombre interno que vemos con una flecha azul.

Por ultimo comprobamos el fichero recien creado y vemos que esta cifrado:

Ahora ya solo hay que mandarlo al destinatario (eliviv) por correo electrónico.

sábado, 26 de septiembre de 2015

Tarea 2

ENUNCIADO: En esta tarea te proponemos que identifiques tres espacios web relacionados con la temática de este curso. Dos de ellos deben ser sitios que puedan ser considerados relevantes por la cantidad y calidad de recursos que ofrecen sobre Hacking. Pueden ser blogs personales, sitios web de organizaciones, empresas o grupos de usuarios de la red que comparten contenidos de calidad sobre Hacking.

RESPUESTA: Mirando entre mis contactos de Netvibes encuentro:

ENUNCIADO: El tercer sitio web debe ser un espacio de encuentro entre interesados en el Hacking, pueden ser foros, grupos o comunidades en redes sociales, un hashtag en Twitter, etc. en general un sitio donde sea posible interactuar con otros usuarios, hacer preguntas y participar de forma activa en conversaciones.

RESPUESTA: Mirando entre mis contactos de Netvibes encuentro:

Si tengo que escoger dos del primer grupo y otro del segundo, escogería:

Tarea 1

Comenzamos la primera tarea utilizando la herramienta Ping. Bien conocida desde hace mucho tiempo. Se nos pide hacer un ping a google y a euskalert.net. Estos son los resultados:

Vemos que www.google.com resulta ser la IP 216.58.211.67 y que el tiempo de respuesta es de unos 58ms. En cambio euskalert.net o bien no existe o bien no responde a ping, con la información que tenemos ahora no podemos distinguirlo.

A continuación se nos pide usar la herramienta whois. En mi maquina da la casualidad de que no la tengo instalada, asi que la instalo (mediante un apt-get install, no utilizo la direccion que proporciona el MOOC). A continuación lanzo un whois contra www.euskalert.net y me devuelve:

Es decir www.euskalert.net no lo encuentra en INTERNIC, que es de donde dependen los dominios .net.

Como en la tarea nos indica que lancemos whois "contra el dominio que estamos investigando", tomo la decisión de investigar el dominio "seat.com". Esta es la respuesta del whois:

Es decir, el contacto de administracion es un tal "Juan Jose Adrados Herrero" y el contacto técnico es una empresa llamada "T-Systems Iberia S.A.".

A continuacion se nos pide lanzar un nmap contra nuestro objetivo para conocer su sistema operativo. Lanzo un

nmap -sV www.seat.com

Y esto es lo que nos ha respondido:

Es decir, www.seat.com, con la IP 88.221.52.211, no me ha podido detectar la version del sistema operativo y sólo tiene los puertos 80 y 443 abiertos, en los que tiene colgando un AkamaiGHost.

Se trata de un balanceador de carga propietario (https://github.com/http2/http2-spec/wiki/Akamaighost).