Llamadas API utiles
De www.metasploit-es.com.ar
Usando completamente las llamadas API de sistema
Vamos a cubrir algunas llamadas a la API común para los scriprt de la Meterpreter y escribir un script utilizando algunas de estas llamadas a las API. Para más llamadas a la API y ejemplos, ver el código de comandos y la documentación Dispacher REX que se mencionó anteriormente.
Para ello, es más fácil para nosotros utilizar el intérprete irb que puede ser utilizado para ejecutar llamadas a la API directamente y ver lo que es devuelto por la llamada. Nos metemos en el IRB ejecutando el "irb 'comando desde el shell Meterpreter.
meterpreter > irb [*] Starting IRB shell [*] The 'client' variable holds the meterpreter client >>
Vamos a empezar con la recoleccion de información sobre el objetivo. Vamos a obtener el nombre de la máquina del host de destino. La llamada a la API para esto es "client.sys.config.sysinfo '
>> client.sys.config.sysinfo
=> {"OS"=>"Windows XP (Build 2600, Service Pack 3).", "Computer"=>"WINXPVM01"}
>>
Como podemos ver en irb, una serie de valores fueron devueltos. Si queremos saber el tipo de valores devueltos, se puede utilizar el objeto CLASS para ver lo que se devuelve:
>> client.sys.config.sysinfo.class => Hash >>
Podemos ver que tenemos un hash, por lo que podemos llamar a los elementos de este hash a través de su clave. Digamos que queremos ver únicamente la versión del sistema operativo:
>> client.sys.config.sysinfo['OS'] => "Windows XP (Build 2600, Service Pack 3)." >>
Ahora vamos a obtener las credenciales en las que la carga útil se está ejecutando. Para ello, usamos el 'client.sys.config.getuid "llamada a la API:
>> client.sys.config.getuid => "WINXPVM01\labuser" >>
Para obtener el ID del proceso en virtud del cual la sesión se está ejecutando, se utiliza el client.sys.process.getpid "llamada a la que se puede utilizar para determinar qué proceso de la sesión se esta ejecutando internamente:
>> client.sys.process.getpid => 684
Podemos utilizar llamadas a la API en "client.sys.net" para recoger información sobre la configuración de red y el ambiente en el host de destino. Para obtener una lista de las interfaces y su configuración se utiliza la llamada a la API "client.net.config.interfaces ':
>> client.net.config.interfaces => [#, #] >> client.net.config.interfaces.class => Array
Como se puede ver que devuelve un array de objetos que son de tipo Rex:: Post:: Meterpreter:: Extensiones:: Stdapi:: Net:: Interfaz que representa cada una de las interfaces. Podemos iterar a través de este conjunto de objetos y obtener lo que se llama una salida bastante de cada una de las interfaces de esta manera:
>> interfaces = client.net.config.interfaces => [#, #] >> interfaces.each do |i| ?> puts i.pretty >> end MS TCP Loopback interface Hardware MAC: 00:00:00:00:00:00 IP Address : 127.0.0.1 Netmask : 255.0.0.0 AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport Hardware MAC: 00:0c:29:dc:aa:e4 IP Address : 192.168.1.104 Netmask : 255.255.255.0
© Offensive Security 2009
Original by www.offensive-security.com/metasploit-unleashed/ Traslated by tundervirld