Hola a todos! En esta ocasión vamos a ver como solucionar el CTF ICE s1-100 desde cero y paso a paso.
Requesitos Previos a configurar en el CTF
Configuración del router
Al iniciar con el CTF, me topé con el problema, el cual me demandó mucho tiempo investigar. El mismo fue que la VM tenia una IP fija, la cual es 192.168.1.100 y mi router estaba configurado para asignar IPs con el rango 192.168.0.X, por lo que me tocó configurar previamente el router con el rango 192.168.1.X para que le asignara la IP correcta a la maquina virtual.
Encontrar la IP de la VM
Para poder encontrar la IP de la máquina virtual, utilicé NMAP y así poder mapear toda la red.
El parámetro que utilicé fue: nmap -sP 192.168.1.1-255
Como se puede ver en el screenshot, la IP de la maquina virtual es: 192.168.1.100
Fortalezas del sistema
ping
Una de las fortalezas de esta máquina virtual, es que no resuelve los ping que se hagan a la IP 192.168.1.100, lo cual permite despistar a los atacantes, e incluso detener algunos tipos de DoS del tipo ICMP que se hagan a la maquina virtual.
FTP
Otra fortaleza de la plataforma, es que a pesar de estar abierto el puerto 21 del FTP, este no es vulnerable, por lo cual no se puede acceder por ese medio ni explotarlo.
Usuarios
Los usuarios no tiene privilegios de root. Además genera un reporte con el incidente al intentar elevar privilegio con un usuario que no tiene permisos para ello.
Recolección de información
enumeración de puertos y servicios
El primer paso para resolver el CTF, fue recolectar información de los puertos abiertos, servicios corriendo en cada puerto y sus versiones. Para ello utilicé NMAP con los siguientes parámetros:
nmap -sV -O 192.168.1.100
Con el cual obtuve la siguiente información:
Vi puertos que se podrían explotar como el 21 de FTP, 22 con el SSH y vi que el puerto 80 estaba abierto, el cual me sirvió para saber si tiene página web.
Website
Al ingresar a http://192.168.1.100 me topé con el sitio web de la máquina virtual.
Además noté que tiene algunas secciones más como las siguientes:
http://192.168.1.100/copyright.txt
http://192.168.1.100/index2.php
Esta última me llamó la atención ya que poseía varios mails y nombres de personas. En la mayoría de los casos, se pueden utilizar esos mismos nombres o mails como credenciales para ingresar al ssh o ftp en este caso, ya que los puertos de esos servicios estaban abiertos.
Pentesting
SSH
Al tener el puerto del SSH abierto, se puede intentar ingresar por ese medio
Solo resta averiguar usuarios y contraseñas. Para ello, crearé un diccionario con los nombres y correos electrónicos que aparecen en la página web y también combinaré sus nombres y apellidos intentando lograr credenciales válidas.
En total logré 71 combinaciones utilizando nombres, apellidos y mail. El paso siguiente es hacer un bruteforce usando esta lista para obtener el usuario y contraseña del SSH.
Para realizar el ataque, utilizare la herramienta ncrack, la cual es una tool desarrollada por la misma empresa que el NMAP.
ncrack -p 22 -U pass.txt -P pass.txt 192.168.1.100
En el archivo pass.txt tengo el listado o diccionario que cree con las combinaciones mencionadas anteriormente.
Después de unos minutos, la herramienta arrojó usuario y contraseña.
User: bbanter
Pass: bbanter
Al probarlo con el SSH de la maquina virtual, podemos ver que logramos ingresar.
Si volvemos a la maquina virtual y probamos las mismas credenciales, podremos ver que también podremos ingresar
Al intentar entrar a la carpeta FTP, me topé con que el usuario bbanter no tiene permisos
Por lo que intentaré loguearme como root colocando sudo su
Tampoco me deja entrar al /etc/shadow
Al no dejarme, voy a intentar romper alguno de los otros usuarios (aadams – ccoffee) para ver si alguno de ellos tiene mas privilegios.
Elevación de privilegios
Para ello volveré a usar ncrack, pero esta vez utilizando otro diccionario más extenso, ya que la última vez no salió. El diccionario que utilizaré será el famoso rockyou.txt
(http://scrapmaker.com/data/wordlists/dictionaries/rockyou.txt)
ncrack -p 22 –user ccoffee -P rockyou.txt 192.168.1.100
ncrack -p 22 –user aadams -P rockyou.txt 192.168.1.100
Como se puede ver en la captura, se pudo obtener la contraseña del usuario aadams. Nuevamente procederemos a probar si este usuario tiene privilegios en la plataforma.
Al probarla en el servidor, no tiene privilegios de root, pero si puede entrar al fichero /etc/shadow en donde se encontraba el usuario root con la contraseña hasheada.
root:$1$TOi0HE5n$j3obHaAlUdMbHQnJ4Y5Dq0:13553:0:::::
Romper pass de root
Utilizando John The Ripper y un diccionario, podemos probar si se puede obtener la password. Utilizaré el mismo diccionario rockyou.txt para hacer la prueba.
john.exe -wordlist:..\..\rockyou.txt ..\..\root.txt
Con esto hemos obtenido el user y pass de root
Usuario: root
Pass: tarot
Ahora si probaremos elevar privilegios. Para ello colocamos su nuevamente con el usuario aadams y ponemos la password que hemos obtenido.
Desencriptar CSV (CTF)
Al ingresar ahora a la carpeta /home/ftp me he topado con un archivo de salarios encriptado. Para poderlo descargar, simplemente puedo copiarlo al directorio del sitio web /var/www/htdocs y descargarlo con el navegador.
Una vez descargado, trataremos de romper el cifrado. Existen muchos tipos de cifrado, y tras probar con varios, logré dar con el correcto, el cual es aes128.
En una consola tecleamos openssl y dentro colocamos lo siguiente
enc -d -aes128 -in salary_dec2003.csv.enc -pass pass:tarot -out salario.txt
Esto generará un archivo llamado salario.txt con toda la información de ese CSV. Ahora solo resta abrirlo con exel para ver la información obtenida:
Como se puede ver en la imagen, se han obtenido los salarios de varias personas a pesar de haber estado encriptado.
Website
Además de esto, la página web también puede ser editada o eliminada.
Espero que les guste y que visiten el resto de los post de este blog.
Autor: ANTRAX