Al realizar trabajos repetitivos se viene la necesidad de hacer uso de todas las funcionalidades de una herramienta, en esta ocación veremos MSFRPC un servicio de control remoto que tiene Metasploit Framework.
Metasploit Framework se puede ejecutar como un servicio para poder utilizarlo de forma remota. La principal ventaja de ejecutarlo de esta forma es que puedes controlarlo desde cualquier parte del mundo y desde cualquier dispositivo.
Para poder interactuar con el servicio MSFRPC se tiene distintos clientes en ruby, python, node y también nos dan la oportunidad de poder hacer uso de la API y crear nuestro propio cliente.
Correr Metasploit como servicio:
Las opciones de msfrpcd
Iniciamos msfrpc
Haremos uso de python-msfrpc este módulo está diseñado para la interacción con Metasploit, y poder hacer uso de los recursos que nos provee Metasploit. Adicional al modulo tambien es necesario ver el funcionamiento de la API de Metasploit Framewor. metasploit-rpc-api-guide
https://github.com/SpiderLabs/msfrpc/tree/master/python-msfrpc
El siguiente script realiza una conexion al servidor msfrpcd y ejecuta instrucciones de metasploit.
#!/usr/bin/env python
import msfrpc
import time
client = msfrpc.Msfrpc({})
# Usar las credenciales asignadas cuando se configuro el servidor.
# client.login(user='msf',password='password')
client.login('msf','password')
response = client.call('console.create')
console_id = response['id']
rhosts = "set rhosts testhtml5.vulnweb.com testphp.vulnweb.com testasp.vulnweb.com testaspnet.vulnweb.com \n"
request = client.call('console.write', [console_id, "use auxiliary/scanner/http/title \n"])
time.sleep(1)
request = client.call('console.write', [console_id, rhosts])
time.sleep(1)
request = client.call('console.write', [console_id, "set RPORT 80 \n"])
time.sleep(1)
request = client.call('console.write', [console_id, "run \n"])
time.sleep(1)
while True:
data = client.call('console.read', [console_id])
if len(data['data']) > 1:
print data['data'],
if data['busy'] == True:
time.sleep(2)
continue
break
clean = client.call('console.destroy', [console_id])
print "cleanup result: %s" %clean['result']
El resultado al ejecutar el Script sera el siguiente:
Este fue un post muy sencillo para mostrar un poco de lo poderoso que es Metasploit Framework, hay muchos usos para este modulo y se pueden usar para optimizar procesos y aprovechar ese tiempo en otras tareas.
Happy Hacking