Buenas a todos. En el post de hoy seguiremos jugando con la herramienta Remote Shellcode Injector que os subimos a nuestra cuenta de Github recientemente:
Hoy veremos como crear shellcodes con Msfvenom para ejecutar una aplicación de Windows, aprovechando un sistema que ya ha sido interceptado por nuestra tool. Por ejemplo, lanzaremos una calculadora, pero obviamente podréis lanzar desde una consola a un wannacry, en función del objetivo del pentest.
Cómo de Msfvenom os hemos hablado largo y tendido en Flu Project :), simplemente os indicaré a continuación los parámetros que podríamos utilizar:
Options:
-p, --payload <payload> Payload to use. Specify a '-' or stdin to use custom payloads
--payload-options List the payload's standard options
-l, --list [type] List a module type. Options are: payloads, encoders, nops, all
-n, --nopsled <length> Prepend a nopsled of [length] size on to the payload
-f, --format <format> Output format (use --help-formats for a list)
--help-formats List available formats
-e, --encoder <encoder> The encoder to use
-a, --arch <arch> The architecture to use
--platform <platform> The platform of the payload
--help-platforms List available platforms
-s, --space <length> The maximum size of the resulting payload
--encoder-space <length> The maximum size of the encoded payload (defaults to the -s value)
-b, --bad-chars <list> The list of characters to avoid example: '\x00\xff'
-i, --iterations <count> The number of times to encode the payload
-c, --add-code <path> Specify an additional win32 shellcode file to include
-x, --template <path> Specify a custom executable file to use as a template
-k, --keep Preserve the template behavior and inject the payload as a new thread
-o, --out <path> Save the payload
-v, --var-name <name> Specify a custom variable name to use for certain output formats
--smallest Generate the smallest possible payload
-h, --help Show this message
Yo trabajaré con una máquina Virtual Box y una Kali. Por lo que al principio levantaré un Apache para intercambiar de forma sencilla las shellcodes entre la máquina Kali y el Windows hospedador donde se encuentra Codeblocks (para recompilar el cliente, cómo ya vimos AQUÍ):
A continuación generaremos una shellcode de ejemplo con Msfvenom para x86 que lance la calculadora. Podréis sustituir el ejecutable por el que queráis.
Guardaremos la salida del comando en un fichero, y nos lo llevaremos al servidor web para compartirlo con nuestra máquina Windows:
Ahora sustituiremos la shellcode de la variable "sc" y volveremos a construir el ejecutable:
Si ahora lanzásemos una conexión con nuestro cliente-servidor en la máquina que estamos controlando, veremos como se ejecuta la calculadora con los permisos del usuario que tenga iniciado el sistema operativo.
Si sustituyésemos el binario enlazado desde msfvenom por algún malware, podríamos infectar de forma sencilla tanto esa máquina, como las que se encontrasen accesibles desde su red:
Obviamente, no os vamos a poner ningún enlace a muestras de malware que puedan acabar descontroladas :P, pero Remote Shellcode Injector os proporciona muchas capacidades de intrusión, con un binario que ocupa muy pocos bytes. Ideal para pentests (y siempre bajo autorización del propietario del sistema).
Saludos!