27 nov 2012

Meterpreter Scripting: Mixins e interacción remota

En Flu Project hemos empezado a destripar, mediante una introducción, el desarrollo de scripts para Meterpreter. Es realmente interesante ser capaces de entender como se realizan estos scripts, para aumentar las tareas disponibles y poder personalizar éstas, en caso de necesitarlo en un test de intrusión. En este artículo vamos a presentar el concepto de Mixins, los cuales facilitan la interacción con el agente remoto (que inyecta en memoria meterpreter en la máquina remota).

Mixins

Los Mixins son una serie de llamadas que representan las tareas más comunes y más utilizadas en el desarrollo de scripts en Meterpreter. De esta manera se simplifica, y mucho, la interacción con el agente remoto. Existe un gran número de Mixins, aunque en el artículo de hoy se utilizará uno de los más básicos y utilizados, cmd_exec. Este mixin ejecuta en una cmd una orden en concreto que se especificará, de este modo se ejecutará una cmd en la máquina vulnerada y el resultado será mostrado en la máquina del atacante.

Código de hoy:

#Autor: Pablo Gonzalez#Windows Mensaje cmd remotoopts = Rex::Parser::Arguments.new("-h" => [false, "Help menu."],"-s" => [true, "Mostrar mensaje en remoto"])opts.parse(args) { |opt, idx, val|print_line "val: #{val}"print_line "idx: #{idx}"print_line "opt: #{opt}"case optwhen "-h"print_line "Ayuda de mi script de Meterpreter"print_line "Meterpreter RuLeZ"print_line(opts.usage)raise Rex::Script::Completedwhen "-s"if val != nilcmd_exec('cmd /c',"msg * #{val}")endend}if client.platform !~ /win32|win64/print_line "No compatible"raise Rex::Script::Completedelseprint_status("Hecho")end

Los parámetros que recibe este script son -h y -s, con -h se muestra un menú de ayuda informando de las posibilidades de dicho script. El parámetro -s se utiliza para recibir un mensaje el cual será lanzado, mediante la utilización de un mixin en remoto en la máquina vulnerada. El mixin que se utiliza es cmd_exec, el cual permite lanzar órdenes en una cmd en la máquina remota. La sintaxis del mixin cmd_exec es sencilla, el primer parámetro indica que aplicación o proceso se lanzará, y el segundo parámetro indica la orden que se ejecutará en la aplicación.

when "-s"if val != nilcmd_exec('cmd /c',"msg * #{val}")endend}
El resto de sentencias que se pueden leer en el script fueron analizadas en el post anterior de la serie de desarrollo de scripts para Meterpreter.Prueba de script

A continuación se puede visualizar la salida que provoca la ejecución del script mediante la instrucción run <ruta script>. Se puede visualizar la ayuda del script en la siguiente imagen. Se puede visualizar como el parámetro -s requiere la inserción de un string, el cual será mostrado en la máquina remota a modo de pop up.

 En la siguiente imagen se puede visualizar la ejecución de la orden con el parámetro -s.

Y tras la ejecución del script con el mensaje requerido obtenemos:

En los próximos artículos veremos más opciones interesantes y seguiremos destripando el desarrollo de scripts para Meterpreter. Además, analizaremos otros scripts que vienen por defecto, y que pueden resultar importantes a la hora de aprender este interesante mundo.

 *****************************************************Meterpreter scripts: Encenciendo el horno (Introducción) Por cierto, vengo a hablar de mi libro... Metasploit para pentesters, el libro que más orgullo y satisfacción me ha provocado :D

1 comentario: