El siguiente laboratorio tiene como objetivo aprender como generar los certificados digitales propios con la herramienta opnessl, en un servidor en debian implementando el CMS Joomla
1. Universidad Tecnológica de Panamá
Facultad de Ingeniería de Sistemas Computacionales
Maestría en Seguridad Informática
Sistemas de Seguridad II
Laboratorio #3 – CIFRADO CRIPTOGRAFÍA
Profesor: Leandro Espinoza
Integrantes:
Montenegro, Jesús / Céd.: 8-843-89
Moreno, José / Céd.: 8-794-402
Muñoz, Andrea / Céd.: 8-850-2239
Rodríguez, Carlos / Céd.: 8-814-1930
Viernes, 18 de septiembre de 2015
2. Desarrollo del laboratorio
A continuación detallamos los pasos para el desarrollo del laboratorio:
1 – Instalación de DEBIAN 8 (32 bits)
Se coloca en el virtual box la siguiente configuración para entonces comenzar con la
instalación de los componentes de DEBIAN 8.
Nombre de la máquina DEBIANHTTPS
Memoria Asignada 1024 MB
Tamaño 8 GB
Consumo de procesador 75%
Red (adaptador 1) Adaptador Puente (wlan0)
3. Figura # 01 – Configuración para instalar DEBIAN 8
Durante la instalación de DEBIAN 8 los datos de la máquina son los siguientes:
Hostname debian
Domain name (en blanco)
Root password *********
User Name Carlos Manuel Rodriguez
Account user name carlos
Account user password ****************
Uso de Partición Usar todo el volumen lógico
Software Selection • Web Server
• SSH Server
• Standar System Utilities
Figura #02 – Selección de Software a instalar
Para el laboratorio solo era necesario el Servidor SSH para ejecutar comandos desde la
terminal de nuestra máquina física o putty si fuese el caso de Windows.
También el servidor web que es lo necesario para el alojamiento de nuestra página y para la
4. prueba con Caín y Abel.
A continuación se procede a la máquina virtual DEBIAN para ingresar y realizar algunas
configuraciones iniciales.
2 – Preparación del servidor web DEBIAN
Lo primero es ingresar con el usuario que creamos en la instalación anterior. Seguido se
ingresa como superusuario.
Figura # 03 – Ingreso al servidor DEBIAN
5. Figura # 04 – Verificación del IP del servidor con el comando ifconfig
Ahora nos conectamos por medio de SSH al servidor desde una terminal de nuestra maquina
física con el comando ssh carlos@192.168.0.230 . Luego se ingresa como superusuario.
IP: 192.168.0.230
6. Figura # 05 – Conexión al servidor por SSH
Lo siguiente es actualizar DEBIAN, pero para prevenir errores durante la actualización hay
que editar un archivo de configuración en la ruta /etc/apt/sources.list. Las 2 primeras
lineas donde se ve la palabra mirror y las 2 siguientes donde se ve la palabra security.
Entramos introduciendo: vi /etc/apt/sources.list
Figura # 06 – Edición del archivo sources.list (Editor vi)
Luego de haber hecho esto, podemos proceder con la actualización. Para actualizar
escribimos el comando:
apt-get update
seguido del comando apt-get upgrade
Figura # 07 – Actualización de DEBIAN
Figura # 08 – Actualización de los componentes de DEBIAN
3 – Instalación de aplicaciones necesarias en el servidor DEBIAN
Ahora procedemos a la instalación de las aplicaciones que necesitamos para tener una
7. pagina web conectada a una base de datos.
3.1 – Instalación de los paquetes de Apache 2
Se instalan con la siguiente instrucción: apt-get install apache2
3.2 – Instalación de MySQL server
Para instalar MySQL desde el terminal por conexión ssh, debemos escribir la siguiente
instrucción, para que se descarguen e instalen los paquetes de MySQL:
apt-get install mysql-server
Figura # 09 – Instalación de paquetes MySQL.
3.3 – Instalación de PHP
Ahora se procede a instalar de los paquetes php a través de SSH, con la siguiente
instrucción:
apt-get install php5 php-pear libapache2-mod-php5
Y los módulos de PHP se instalan con la siguiente instrucción:
apt-get install php5-mysql php5-gd
8. Figura # 10 – Instalación de php
Con estos elementos instalados podemos verificar aprovechando que tenemos la terminal
abierta, la versión de OpenSSL del servidor, con la instrucción openSSL version.
Figura # 11 – Versión de openSSL instaladas en el servidor
Ahora necesitamos desconectar la terminal del servidor, colocando el comando exit para salir
de sesión superusuario y nuevamente exit para salir de la sesión del usuario
(desconectar).
Figura # 12 – Desconexión SSH del servidor
3.4 – Descomprimir los paquetes Joomla en el servidor
Estos paquetes son necesarios para la pagina web que construimos, así que para que el
servidor le de uso, los pasaremos por sftp para luego descomprimirlos. A continuación
mostramos los pasos.
9. A – Abrir la conexión SFTP con el comando: sftp carlos@192.168.0.230
B – Pasar el archivo que esta en el escritorio de nuestra maquina física a la carpeta home del
servidor con el comando: put /home/crodriguez/Escritorio/Joomla_3.4.4-Stable-
Full_Package.zip /home/carlos.
Figura # 13 – Paso de paquetes Joomla por SFTP.
Salimos del SFT con el comando exit y procedemos a abrir nuevamente una conexión SSH
para escribir comandos al servidor con el comando ssh carlos@192.168.0.230.
Figura # 14 – Salir de SFTP y conectarse al server por SSH
Luego ingresamos como superusuario y copiamos el archivo transferido anteriormente a la
carpeta /var/www/html con el comando:
10. cp Joomla_3.4.4-Stable-Full_Package.zip /var/www/html
Figura # 15 – Copiando los paquetes Joomla
En esta carpeta el dominio de estos archivos lo tiene el usuario actual (root), y necesitamos
que el usuario de los paquetes web (www-data) se encargue de estos paquetes ahora, por lo
que escribimos el siguiente comando para que eso suceda:
chown www-data:www-data /var/www/html
Figura # 16 – Cambiar el dominio de la carpeta /var/www/html del usuario root a www-data
3.5 – Crear una base de datos de uso para nuestro sitio web
Para crear una base de datos por medio de comandos se sigue las siguientes instrucciones:
a-Ingresar a MySQL con: mysql -uroot -pcarrod1904mysql
b-Crear una base de datos con el comando: create database seguridad2;
c-Salir de MySQL con: exit.
d-Eliminamos el archivo index.html para descartar errores al generar la pagina web con:
rm -rf-index.html
Figura # 17 – Creación de una base de datos para la pagina web
11. 3.6 – Configuración de la página web
Ahora colocando la dirección IP del servidor en la barra de búsqueda accedemos a la
configuración Joomla de nuestra página, donde hay 4 pestañas que debemos llenar.
Figura # 18 – Configuración Joomla
Luego que llenamos todo, al final nos generara un pequeño codigo en un cuadro de texto que
debemos copiar:
12. Figura # 19 – En la parte baja de esta pagina debe estar el código a copiar.
Lo que sigue es, volver al terminal, reiniciar los servicios de apache y editar el archivo de
configuración pegando el texto generado de la configuración de página web anterior:
Reiniciar apache: service apache2 restart
Abrir archivo de configuración y pegar texto copiado: vi configuration.php
Eliminar archivo de instalación para descartar errores: rm -rf installation
Figura # 20 – Edición del archivo de configuración.
Figura # 21 – Edición y pegado de archivo de configuración.
Hecho los pasos descritos anteriormente podemos recargar la pagina web y tendrá el
13. aspecto que tenemos en la Figura # 22.
Figura # 22 – Joomla Configurado
4 – Generación de llave pública
Para la generación de la llave pública necesitamos estar en la terminal e ingresar con el
superusuario root. Y ahora escribimos lo siguiente en el terminal:
openssl genrsa -out 192.168.0.230.key 4096
Figura # 23 – Generación de la llave del certificado
4.1 – Generación del certificados
Luego de la generación de la llave ahora se necesita generar el certificado, lo cual podemos
hacer escribiendo el siguiente comando en la terminal:
openssl req -new -key 192.168.0.230.key -out 192.168.0.230.csr
14. Luego de escribir esta linea en la terminal, se requiere que llenemos ciertos parámetros
concernientes al certificado, como se muestra a continuación:
Parámetro Valor
Código de País (2 letras) PA
Provincia Panamá
Ciudad Panamá
Nombre de organización Maestría Seguridad
Unidad Organizacional CSO
Nombre de Servidor (IP) 192.168.0.230
Correo Electrónico crodriguez@seguridad2.com
Contraseña *************
Figura # 24 – Configuración del certificado
Es importante remarcar que varios de estos parámetros deben coincidir con los que
15. colocamos en la configuración de nuestra página web, para que la información sea
congruente y evitar la confusión con las configuraciones realizadas.
4.2 - Generación de las huellas digitales del certificados
Para aplicar la firma al certificado, se debe aplicar la siguiente linea en la terminal
openssl x509 -req -days 365 -in 192.168.0.230.csr -signkey
192.168.0.230.key -out 192.168.0.230.crt
Figura # 25 – Firma del certificado
4.3 – Aplicación de la configuración SSL a Apache
Para ello debemos mover los archivos recién creados de la llave, el certificado y la firma.
Luego se activa el modulo SSL de Apache y se reinicia los servicios de Apache. Esto lo
logramos aplicando las siguientes lineas en la terminal.
mv 192.168.0.230.csr /etc/ssl/certs
mv 192.168.0.230.key /etc/ssl/certs
mv 192.168.0.230.crt /etc/ssl/private
a2enmod ssl
a2ensite default-ssl
service apache2 restart
16. Figura # 26 – Aplicación de configuración SSL a apache
4.4 – Configuración del archivo default-ssl.conf
Recordando que las carpetas Linux de la distribución que estemos usando viene con
elementos 'default', aun falta mas cosas que configurar para que la página web funcione
correctamente con el certificado creado. Se abre el archivo con la siguiente instrucción:
vi /etc/apache2/sites-enabled/default-ssl.conf
Hay que configurar el archivo defaul-ssl.conf dividiendo el archivo en párrafos y líneas lo que
hay que editar es lo siguiente (campos azules):
- Párrafo 1, línea 2 – 5
<VirtualHost 192.168.0.230:443>
ServerAdmin crodriguez@seguridad2.com
ServerName 192.168.0.230:443
DocumentReboot /var/www/html
- Párrafo 6, líneas 6-7
SSLCertificateFile /etc/ssl/certs/192.168.0.230.crt
SSLCertificateKeyFile /etc/ssl/private/192.168.0.230.key
17. Figura # 27 – Modificación de archivo default-ssl.conf
Luego debemos recargar y reiniciar APACHE con:
service apache reload
service apache restart
Con esta configuración nuestra página web es capaz de responder por HTTP o HTTPS, si
embargo por default, seguirá respondiendo por HTTP.
A continuación haremos que la página web sólo responda por HTTPS modificando el archivo
htaccess.txt
18. Figura # 28 – Agregar certificado a nuestra página web
El archivo htaccess.txt se encuentra en la siguiente ruta:
vi /var/www/html/htaccess.txt
Si embargo lo que tenemos que hacer es copiar este archivo como contenido a un archivo
que nombraremos .htaccess.
El archivo htaccess.txt está dominado por el usuario www-data, sin embargo cuando
copiamos el archivo a .htaccess el nuevo usuario dominante del archivo es root.
Figura # 29 – Copia del archivo htaccess.txt y sus usuarios apoderados
Debemos editar el archivo .htaccess, pero antes editamos otro archivo con un cambio simple.
Ese archivo es el configuration.php, que obtuvimos luego de llenar los parámetros al llenar la
web con la configuración Joomla. Usamos el comando:
vi configuration.php
Se busca la linea que dice $live_site y llenar de la siguiente manera:
19. var $live_site = 'https://192.168.0.230';
Figura # 30 – Editando el archivo configuration.php
Seguido editamos el .htaccess con: vi .htaccess
Tenemos que editar las siguientes líneas para que la pagina responda con HTTPS.
RewriteEngine On
RewriteCond %{HTTPS} OFF
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Figura # 31 – Edición del archivo .htaccess
A continuación nos vamos a nuestra página web para hacer unas configuraciones dentro de
la administración de la página.
Para ello nos vamos al menú del sistemas y elegimos la opción “Configuración Global”
20. Figura # 32 – Edición de configuración de la pagina web
Figura # 33 – Principales configuraciones de la página
Ahora podemos recargar la página y verificar la carga por HTTPS y ver el certificado
generado.
21. Figura # 34 – Certificado de nuestra página
5 – Ataque con Cain y Abel
Similar al laboratorio anterior, vamos a preparar un ataque a nuestra web HTTPS con Cain y
Abel y continuación describimos las IP de los equipos que se sniffean como muestra la figura
a continuación:
Las IP 192.168.0.230 y 192.168.0.241 son ambos servidores de una pagina https
configuradas de manera similar por maquinas virtuales en diferentes maquinas físicas, los
cuales son los servidores de prueba para atacar con Caín y Abel.
La maquina virtual con Windows 7 que tiene Cain y Abel es la 192.168.0.105 y el resto
pertenece al router y maquinas físicas.
Figura # 35 – Máquinas virtuales preparadas para la prueba
A continuación elegimos las maquinas atacante (192.168.0.105) y el servidor atacado
(192.168.0.230)
22. Figura # 36 – Eligiendo máquinas para la prueba
Luego de elegidas las maquinas, se procede a presionar el botón de ARP Poisoning para
empezar el ataque. Es aquí donde estamos a la espera de que se consulte la página web.
Figura # 37 – ARP poisoning a la espera para atacar
Copiamos la dirección IP del servidor en la barra de búsqueda del navegador y se nos
despliega la siguiente pantalla:
23. Figura # 38 – Página web afectada por Cain y Abel
Luego de ver esta pantalla, procedemos a clickear donde dice “I Understand the Risk” (para
la prueba), y se nos despliega la pagina web aparentemente normal como se ve a
continuación:
Figura # 39 – Página web se recarga aparentemente bien
Sin embargo si nos fijamos en el certificado vemos lo que aparece en las imágenes a
continuación:
Figura # 40-A y 40-B – Cifrado cambio de RSA a AES y la Firma digital cambio
24. Por otro lado en el Cain y Abel atrapó la información cuando hicimos el click en “I Understand
the Risk”, como se muestra a continuación:
Figura # 41 – Caín y Abel Atrapan la modificación al certificado y la web
Ahora en el momento que se haga login a esta pagina web, esta información sera capturada
por Caín y Abel, como se ve a continuación:
Figura # 42 – En la Pestaña de contraseñas, se ha capturado el usuario y contraseñas
Fin del Laboratorio.