Utilizar Debug.exe para Transferir Archivos hacia un Sistema Comprometido

  • Posted on: 10 August 2016
  • By: ReYDeS

Otro método común empleado para transferir archivos hacia sistemas operativos Windows es utilizando la utilidad “debug.exe”. El programa “debug.exe” puede ser utilizado para probar y depurar archivos ejecutables MS-DOS. Actuando como un ensamblador, desensamblador, y herramienta para realizar volcados hexadecimales.

El concepto detrás de la utilización de “debug.exe” para transferir archivos, es similar a la utilización de lenguajes de scripting como VBScript o PowerShell. Se utilizan comandos “echo” no interactivos para escribir el archivo binario en sus valores hexadecimales equivalentes, luego se utiliza el comando “debug.exe” para ensamblar el archivo de texto escrito en un archivo binario. Existe un límite respecto al tamaño de 64K para los archivos a ser creados por debug.exe.

Para la siguiente demostración, se tiene acceso previo en modo shell de comandos hacia un sistema Windows. Se intentará transferir la herramienta netcat desde Kali Linux hacia la máquina Windows comprometido.

Se copia el archivo “nc.exe” hacia el directorio temporal. Notar el tamaño del archivo es de aproximadamente 59K, lo cual está es inferior al limite de 64K mencionado.

# cp /usr/share/windows-binaries/nc.exe /tmp/

Es factible sin embargo reducir el tamaño del archivo binario utilizando una herramienta PE de compresión como “upx”. UPX (Ultimate Packet for eXecutables) o Último empaquetador para ejecutables, alcanza un excelente ratio de compresión y ofrece una veloz descompresión. La opción “-9” define el nivel de compresión a la mejor disponible.

# upx -9 /tmp/nc.exe

La herramienta “upx” ha optimizado el tamaño del archivo “nc.exe”, disminuyéndolo en aproximadamente 50%. El archivo Windows PE sigue siendo funcional, y puede ser ejecutado normalmente. Ahora el archivo está optimizado y listo para ser transferido. Se convierte el archivo “nc.exe” hacia un archivo de texto el cual será utilizado por “debug.exe” sobre la máquina victima, para reconstruir el archivo desde el texto volviéndolo un ejecutable. Esto se hace con una herramienta de nombre “exe2bat.exe”, el cual permite el proceso de conversión.

Se copia el archivo de nombre “exe2bat.exe” hacia el directorio temporal “/tmp/”.

# cp /usr/share/windows-binaries/exe2bat.exe /tmp/

Utilizando “Wine” se ejecuta la herramienta “exe2bat.exe”, definiendo el nombre del archivo ejecutable a convertir, y el nombre del archivo destino donde residirá el resultado de la conversión.

# cd /tmp/
# wine exe2bat.exe nc.exe nc.txt

Se visualiza la parte inicial del archivo “nc.txt”, resultado de la conversión.

# head nc.txt

El contenido del archivo de nombre “nc.txt”, puede ser sencillamente copiado y pegado en la shell remota.

C:\> echo e e900 >>123.hex
C:\> echo >>123.hex
C:\> echo r cx >>123.hex
C:\> echo e800 >>123.hex
C:\> echo w >>123.hex
C:\> echo q >>123.hex
C:\> debug<123.hex
C:\> copy 1.dll nc.exe

Anotar como cada comando ejecutado no es interactivo, y simplemente hacen eco de un puñado de cadenas en hexadecimal dentro de un archivo. Casi al final del archivo de nombre “nc.txt”, se pueden visualizar los comandos necesarios para reconstruir el archivo ejecutable “nc.exe” sobre la máquina objetivo.

Si todo ha sido realizado correctamente, el archivo de nombre “nc.exe” ha sido creado satisfactoriamente en el sistema comprometido. Pudiendo utilizarlo para acciones posteriores a la explotación.

Fuentes:

https://technet.microsoft.com/en-us/library/bb491040.aspx
http://upx.sourceforge.net/
https://www.winehq.org/

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense