Autor: Miguel Cobas Barcala
Buenas a todos. Después de un tiempo sin escribir por motivos laborales retomo poco a poco este hábito, para compartir y aprender conocimientos nuevos.
El tema de hoy va en relación con la situación que se nos puede dar, tanto en un entorno real como en un CTF, que tengamos que subir a la máquina objetivo Windows un archivo, script, payload o lo que necesitemos en nuestro test de intrusión para realizar acciones en el objetivo (tanto sea explotación como enumeración o post-explotación), que por vicisitudes varias podemos tener bloqueados o no disponibles los métodos que más usamos o conocemos.
Este recopilatorio es generado por la situación que se me dio en una máquina del laboratorio, en la que, me vi imposibilitado de usar una shell, meterpreter o powershell dada la configuración de esta, por lo que me hizo buscar otras alternativas (a base de palos uno aprende).
El fin, es mostrar de forma resumida (ya que opciones hay hasta donde la imaginación nos lleve), un abanico de posibilidades para que tengamos opciones y no quedemos estancados. Desgraciadamente el resultado final no ha sido tan resumido como esperaba y el post se ha dividido en varias entradas: Parte 2. Obtención de Recursos I (Herramientas, Servicios y Scripts) y Parte 3. Obtención de Recursos II (Herramientas, Servicios y Scripts)
Consideraciones Iniciales:
Para ello, dispondremos de los escenarios más comunes, varias plataformas con el sistema operativo Windows que por suerte disponemos de un gran abanico de versiones en el laboratorio.
Usaremos un netcat como método de shell, aunque los comandos también pueden ser portados a otros sistemas que realicen ejecución de las instrucciones en el sistema remoto.
La redbox se corresponde a una maquina kali2017.3 con las últimas revisiones y updates de la misma.
A veces, por configuración de la maquina objetivo, talvez esta no dispone de una ruta para alcanzar nuestra redbox, si probamos un ping ip_red_box y este no funciona, debemos comprobar la tabla de enrutamiento, para ello un route print y veremos si es ese el problema. En caso de que no disponga una ruta hacia ella, añadiremos la entrada a la tabla de enrutamiento con el comando:
- route -p add <red_redbox> mask <mascara_de_la_red> <puerta_enlace_hacia_red_redbox> METRIC 1
Cuando nos encontremos en la maquina objetivo, debemos trabajar en la carpeta temporal del usuario que tenemos, para ello usamos la variable de entorno %TEMP%, y así obtendremos directamente la ruta a la carpeta (cd %TEMP%)
– HTTP
Crea el servicio http de la carpeta en la que estemos en el puerto 8000. Para ello:
Si queremos especificar puerto añadimos el puerto al final:
– FTP
Para crear el servicio, usamos el módulo pyftpdlib de python, si no lo tenemos instalado:
Y para lanzarlo:
Si queremos especificar un puerto usamos el parámetro -p:
Es interesante mirar la ayuda por si queremos añadir más opciones como los passive ports u otros tweaks del servicio.
Tenemos la alternativa de usar Metasploit con sus módulos auxiliares. Lo más importante sería configurar nuestro path de la carpeta a compartir, con lo que quedaría así la configuración:
– TFTP
Para ello, tenemos la opción de Metasploit, que sin duda va muy bien para este tipo de servidor. Solo debemos de configurar el OUTHPATH y el TFTPROOT con la carpeta que queramos usar:
– SMB
Este servicio tiene lo suyo, configurar para que funcione correctamente Samba, de modo tradicional, en una maquina Linux se vuelve un suplicio, y perderemos tiempo de realizar otras acciones más “interesantes”. Por esos motivos es un método poco usado, pero la verdad, es un método excelente ya que con solo usar copy/move o ejecutar directamente gracias a las rutas UNC.
Gracias al proyecto Impacket https://github.com/CoreSecurity/impacket.git se vuelve fácil de configurar y lanzar, sin duda, uno de mis proyectos favoritos. Si tenéis tiempo, considerad sacaros 5 minutos para mirar los examples que tienen en la repo, no tienen desperdicio y son herramientas de un potencial espectacular.
Antes de nada, comencemos instalando el Impacket, para ello clonamos la repo:
una vez instalado, ya integra en el sistema los scripts, y los podemos invocar desde la consola directamente. Podemos comprobar qué ha instalado:
si queremos otro modulo, podemos acceder a la carpeta en la que clonamos el Impacket y añadirlo al sistema o ejecutarlo directamente invocándolo con python
para ejecutar nuestro servicio basta usar impacket-smbserver <nombre_recurso_compartido> <path_recurso_compartido>
para comprobar que todo salió correctamente probamos con smbclient para ver los recursos compartidos por SMB:
Como vemos nuestro PAYLOADS está preparado para ser “obtenido” desde nuestro Windows objetivo.
En las siguientes entradas hablaremos de la obtención de los recursos desde nuestro servidor objetivo.
Parte 2. Obtención de Recursos I (Herramientas, Servicios y Scripts) y Parte 3. Obtención de Recursos II (Herramientas, Servicios y Scripts)
Autor: Miguel Cobas Barcala