1 Funcionamiento servidor web – cifrado SSL

El protocolo usado clasicamente para conectarse atraves de la red y del puerto 80 y toda la información pasa por él sin cifrar. Mientras que por el puerto 443 pasa el trafico Https Una vez se establece una conexión, en el primer procedimiento de handshake la comunicación se cifra con de forma asimétrica, para establecer no solo herramientas de cifrado, sino una específica sesión compartiendo una misma clave.

En esta práctica, se quiere recrear una sesión que se establece entre el servidor donde se aloja un servicio web y el cliente, que pide ese servicio atraves de un navegador.

Veremos como un tercer actor no autorizado, vé el tráfico y veremos las diferencias con un protocolo y con otro.

1.1 Instalo servidor Web

En la máquina Servidor, procedo a instalar apache2, listo el archivo de configuración de apache para comprobar que existe

Compruebo además que esta activo viendo el estado con systemctl

systemclt status apache2

1.2 Creación de las páginas web

Creo las dos páginas dentro de los directorios /var/www/html/webinsegura y en /var/www/html/websegura, dentro de cada uno creo un index.html

1.3 Configuro los sites

Me posiciono en el directorio /etc/apache2/sites-available

Visulalizo los ficheros 000-default.conf lo copio, cambiandole el nombre a webinsegura.conf y el archivo default-ssl.conf lo copio en websegura.conf

Modifico el fichero webinsegura.conf para que escuche por el puerto 80

Le pongo en el ServerName el valor de www.webinsegura.edu y cambio la ruta

Modifico el fichero websegura.conf para que escuche por el puerto 443

Le pongo el el ServerName el valor de www.websegura.edu

1.4 Activo los sites

Habilito el servidor apache para que la webinsegura funcione.  Me dice el propio sistema que tengo que reiniciar con systemctl


1.5 Verifico los puertos

En el directorio /etc/apache2/ miro el archivo de configuración ports.conf verifico que esta escuchando por el puerto 80 y 443 por defecto

1.6 Modificación del /etc/hosts

Entro a editar el /etc/hosts y apunto estas dos direcciones para que me redirija a ellas

1.7 Genero certificado SSL

Antes de poder levantar el servidor apache en relacion a la websegura que estamos creando, hay que generar los certificados, si no no funcionara, ya que todo el quit de la practica que estamos haciendo, reside en esto mismo, qué al usar SSL estamos empleando una capa más de seguridad. Utilizaremos Openssl herramienta que viene instalada por defecto, aun asi lo comprobamos haciendo un sudo apt install openssl, y nos devuelve un mensaje diciendo que ya se encuentra instalado en la última versión.

Instalalo openssl

Creamos unas carpetas dentro de las cuales se guardara el certificado generado.

Le damos permisos de ejecucion y escritura a root

Volvemos a levantar el servidor web apache

Volvemos a levantar los sitios web creados

1.8 Visito la web desde máquina cliente

Desde un navegador accedo a la weninsegura, vemos que el mismo navegador nos indica que no va cifrada como muestra el dibujo del candado tachado.

1.9 Snifar trafico con Wireshark

Desde la máquina atacante, en mi caso parrot, que está en la misma red que el servidor y que la maquina cliente, comienzo a snifar el trafico que genera la víctima por el puerto 80

pero no veo nada, es mas compruebo haciendole un nmap y en efecto veo que tengo el puerto 80 de la maquina victima cerrado

He revisado en el /etc/hosts y veo que lo tengo en escucha, solo puede ser el firewall

Hago la regla persistente

1.10 Capturo trafico con Wireshark

Abro una captura para ver el detalle

Repito el mismo ejercicio , mismos pasos con la web segura

Puedo ver desde el navegador de la mauina cliente, la web segura.

Intento capturar con wireshark

Veo el detalle de la captura, a parte de que se esta usando el puerto 443 destinado a https, es decir secure http (con un a capa extra seguridad gracias al certificado ssl que usa)

Conclusión

las diferencias de usar una web con protocolo inseguro en relación con una web que usa certificados, no significa que estemos seguros, sólo que proviene de una fuente legitima.

2 Descifrado de SSL

2.1 Desencriptado de paquetes TLS

Procedemos a abrir un web browser y abrimos websegura.edu, como hemos visto antes ha cifrado, utiliza una llaves TLS, en cada nueva sesión, se generan nuevas llaves TLS y las guarda en local en un archivo para las claves TSL.

Ya que el trafico que más usado a dia de hoy va cifrado con el protocolo TLS/SSL, para poder desencriptar el tráfico entre dos equipos, por ejemplo en un Man in the middle attack, deberiamos de desencriptar lo que capturemos. Necesitamos los paquetes y el keylog generado para esa conversación específica.

Para ello necesitaremos importar el SSLKEYLOGFILE mientras se produce el hadshake y guardarlo en local. Con el objetivo de tener acceso a ellas y poder desencriptar el trafico que se intercambia en la sesión.

Visito desde el browser una web que funciona con https, puede ser cualquiera. • Comienzo a capturar el tráfico con wireshark

Veo que se ha establecido una conexión y se procede un hadshake

En Transmision control protocol veo que esta conexión se hace por el puerto 443. Despligo el Transport Layer Security y veo los detalles de lo que está pasando

en el Hadshake Protocol, depliego el Indication extension y veo en texto claro la direccion a la que me estoy conectando.

En este punto no pedemos ver nada por que todo va cifrado, tenemos que conseguir las claves TLS.

Inicio del hadshake

Desde mi terminal de Parrot exporto el archivo keylog y me lo guardo en local

Listo las variables de sistema para comprobar que existe

En preferencias, elijo protocolo TLS

subo el keylog que me he descargado en mi máquina

Ahora ya puedo ver el contenido descifrado gracias al Keylogfile en la imagen vemos que he seleccionado el paquete que inicia la transferencia, mandando un mensaje de ‘Hello’, y debajo veo en texto claro lo que antes solo se veia cifrado.

Categorías: Sistemas