El Formato de Exploit de Metasploit
De www.metasploit-es.com.ar
Contenido |
El Formato de Exploit de Metasploit
El formato de un Exploit en Metasploit es similar al de un Auxiliar pero tiene mas campos.
- Siempre hay un bloque de informacion Payload. Un exploit sin un Payload es simplemente un modulo Auxiliar.
- El esquema incluye un listado de objetivos disponibles.
- En lugar de definir run(), se utilizan exploit() y check().
Esqueleto de un Exploit
class Metasploit3 < Msf::Exploit::Remote
include Msf::Exploit::Remote::TCP
def initialize
super(
'Name' => 'Modulo Exploit Simplificado',
'Description' => 'Este modulo envia un payload',
'Author' => 'Mi nombre aqui',
'Payload' => {'Space' => 1024, 'BadChars' => “\x00”},
'Targets' => [ ['Automatic', {} ] ],
'Platform' => 'win',
)
register_options( [
Opt::RPORT(12345)
], self.class)
end
# Conecta al puerto, envia el payload, manejalo, desconecta
def exploit
connect()
sock.put(payload.encoded)
handler()
disconnect()
end
end
Definiendo Pruebas de Vulnerabilidad
Aunque se ejecute raramente, se deberia definir un metodo llamado check() en tus modulos exploit siempre que sea posible.
- El metodo check() verifica todas las opciones excepto los payloads.
- El proposito de realizar el chequeo es determinar si el objetivo es vulnerable o no.
- Devuelve un valor Check definido.
Los valores de retorno para check() son:
CheckCode::Safe - no explotable
CheckCode::Detected - servicio detectado
CheckCode::Appears - version vulnerable
CheckCode::Vulnerable - confirmado
CheckCode::Unsupported - este modulo no soporta check
Metodo check() de ejemplo
def check
# conecta para obtener el banner FTP
connect
# desconecta ya que ha sido cacheado como self.banner
disconnect
case banner
when /Serv-U FTP Server v4\.1/
print_status('Encontrada version 4.1.0.3, explotable')
return Exploit::CheckCode::Vulnerable
when /Serv-U FTP Server/
print_status('Encontrada una version desconocida, pruebala!');
return Exploit::CheckCode::Detected
else
print_status('No hemos podido reconocer el banner del servidor')
return Exploit::CheckCode::Safe
end
return Exploit::CheckCode::Safe
end
© Offensive Security 2009
Original de www.offensive-security.com Traducido por cbk999