(https://antrax-labs.org/wp-content/uploads/2019/01/malware-xbash-windows-640x393-2-750x350.jpg)
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 routerAl 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.
(https://antrax-labs.org/wp-content/uploads/2019/01/1.png)
Encontrar la IP de la VMPara 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(https://antrax-labs.org/wp-content/uploads/2019/01/2.png)
Como se puede ver en el screenshot, la IP de la maquina virtual es: 192.168.1.100
Fortalezas del sistema
pingUna 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.
(https://antrax-labs.org/wp-content/uploads/2019/01/3.png)
FTPOtra 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.
(https://antrax-labs.org/wp-content/uploads/2019/01/4.png)
UsuariosLos 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.
(https://antrax-labs.org/wp-content/uploads/2019/01/5.png)
Recolección de información - enumeración de puertos y serviciosEl 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.100Con el cual obtuve la siguiente información:
(https://antrax-labs.org/wp-content/uploads/2019/01/6.png)
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.
WebsiteAl ingresar a http://192.168.1.100 me topé con el sitio web de la máquina virtual.
(https://antrax-labs.org/wp-content/uploads/2019/01/7.png)
Además noté que tiene algunas secciones más como las siguientes:
http://192.168.1.100/level.php
(https://antrax-labs.org/wp-content/uploads/2019/01/8.png)
http://192.168.1.100/copyright.txt
(https://antrax-labs.org/wp-content/uploads/2019/01/9.png)
http://192.168.1.100/index2.php
(https://antrax-labs.org/wp-content/uploads/2019/01/10.png)
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
SSHAl tener el puerto del SSH abierto, se puede intentar ingresar por ese medio
(https://antrax-labs.org/wp-content/uploads/2019/01/12.png)
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.
(https://antrax-labs.org/wp-content/uploads/2019/01/13.png)
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.100En el archivo pass.txt tengo el listado o diccionario que cree con las combinaciones mencionadas anteriormente.
(https://antrax-labs.org/wp-content/uploads/2019/01/14.png)
Después de unos minutos, la herramienta arrojó usuario y contraseña.
User: bbanter
Pass: bbanterAl probarlo con el SSH de la maquina virtual, podemos ver que logramos ingresar.
(https://antrax-labs.org/wp-content/uploads/2019/01/15.png)
Si volvemos a la maquina virtual y probamos las mismas credenciales, podremos ver que también podremos ingresar
(https://antrax-labs.org/wp-content/uploads/2019/01/16.png)
Al intentar entrar a la carpeta FTP, me topé con que el usuario bbanter no tiene permisos
(https://antrax-labs.org/wp-content/uploads/2019/01/17.png)
Por lo que intentaré loguearme como
root colocando
sudo su(https://antrax-labs.org/wp-content/uploads/2019/01/18.png)
Tampoco me deja entrar al /etc/shadow
(https://antrax-labs.org/wp-content/uploads/2019/01/19.png)
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 privilegiosPara 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(https://antrax-labs.org/wp-content/uploads/2019/01/20.png)
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.
(https://antrax-labs.org/wp-content/uploads/2019/01/21.png)
root:$1$TOi0HE5n$j3obHaAlUdMbHQnJ4Y5Dq0:13553:0:::::Romper pass de rootUtilizando 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(https://antrax-labs.org/wp-content/uploads/2019/01/22.png)
Con esto hemos obtenido el user y pass de root
Usuario: root
Pass: tarotAhora si probaremos elevar privilegios. Para ello colocamos
su nuevamente con el usuario
aadams y ponemos la password que hemos obtenido.
(https://antrax-labs.org/wp-content/uploads/2019/01/23.png)
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.
(https://antrax-labs.org/wp-content/uploads/2019/01/24.png)
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.txtEsto 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:
(https://antrax-labs.org/wp-content/uploads/2019/01/25.png)
Como se puede ver en la imagen, se han obtenido los salarios de varias personas a pesar de haber estado encriptado.
WebsiteAdemás de esto, la página web también puede ser editada o eliminada.
(https://antrax-labs.org/wp-content/uploads/2019/01/26.png)
Espero que les guste y les sirva para practicar!
ANTRAX