En muchas ocasiones un pentester se encuentra durante un test de intrusión con un servicio vulnerable y con el exploit en el framework de Metasploit . Ante esta situación tan favorable el pentester se frota las manos, prepara su Metasploit, configura los parametros propios del exploit y lanza el ataque. De manera inesperada, el pentester se encuentra que el resultado no es el deseado pese a que todo parecía pronosticar que así iba a ser.
Cuando se ejecuta un exploit sobre sistemas Microsoft Windows este comportamiento puede venir derivado porque el exploit haya sido realizado para atacar una versión determinada de Microsoft Windows, con un determinado lenguaje, como por ejemplo podría estar preparado para "Microsoft Windows XP SP0 English". Si el pentester lanza el exploit sobre un sistema con "Microsoft Windows XP SP3 Spanish", el exploit no será igual de efectivo que en la versión "English".
Para poder entender bien cómo personalizar nuestros exploits vamos a utilizar el material referenciado en el documento wiki de Metasploit. No nos centraremos en la escritura del exploit, para eso lo mejor es mirar el documento, sino que cogeremos la aplicación warftpd y adaptaremos el exploit (modules/exploits/windows/ftp/warftpd_165_user.rb) para que funcione sobre un "Windows XP SP3 Spanish", target no soportado por defecto por el exploit.
Si visualizamos el contenido del exploit veremos como existe un apartado donde trata los targets y donde nos encontraremos entradas como esta:
Si visualizamos el contenido del exploit veremos como existe un apartado donde trata los targets y donde nos encontraremos entradas como esta:
------------------------------------------------------------------------------
# Target 1 [ 'Windows XP SP0-SP1 English',
{ 'Ret' => 0x71ab1d54 # push esp, ret } ]
......
buf[485, 4] = [ target.ret ].pack('V')
------------------------------------------------------------------------------
A la vista del código queda claro que es necesario modificar la dirección de retorno para adaptarlo a nuestro idioma y Service Pack. Como bien indica el comentario deberemos buscar una dirección de memoria que contenga primero un push esp y después un ret (para entender cómo funciona la pila, los buffers overflows y hacerse una idea de por qué es "push esp, ret" lo que necesita, ver este tutorial; quedando fuera del alcance de este post explicarlo).
Ahora deberemos buscar la dirección de memoria que nos interesa y para ello utilizaremos Ollydbg:
1. Arrancamos la aplicación warftpd:
2. Nos "attacheamos" (perdonar el palabro) al proceso warftpd.exe:
3. Buscamos en la memoria (Letra M de Ollydbg) los opcodes que se corresponden con "push esp, ret", que son "54 3C":
Como se puede ver en la imagen encontramos que en la dirección de memoria 0x71a32b53 existe un "push esp, ret".
4. Añadimos la entrada en el exploit:
# Target 2
[
'Windows XP SP3 Spanish',
{
'Ret' => 0x71a32b53# push esp, ret
}
]
5. Pasamos a ejecutar el exploit
Parametrización del exploit
Lanzamiento del exploit
Observamos la lista de procesos de la máquina con Windows XP SP3 Spanish:
Espero que os sea de utilidad y podáis obtener esa shell que tanto nos gusta.
Fuente: http://www.pentester.es/
aver, no me quedo algo claro che, ose esta re bien explicadso , pero esto es para shell de que? cmd?
ResponderEliminarMetasploit se destaca por tener shell propia, de esa shell estamos hablando. Te recomiendo instales metasploit en tu pc (en win o linux (mejor linux XD)) y empiezes a jugar con él si es que te interesa esto del mundo del hacking... salu2
ResponderEliminarP.D: aqui hay harta info de metasploit: http://blackploit.blogspot.com/search/label/Metasploit
y si en vez de un .exe fuera un ejecutable?
ResponderEliminarperdon, quice decir que si en vez de un exe fuera una dll?
ResponderEliminar@Anónimo
ResponderEliminarA que te refires ?? en ninguna parte hay un exe
Estás equivocado, la dirección de retorno push esp que hay que modificar es la que usaría el sistema a comprometer, ya que si usas la que funciona en tu SO, y tu SO es diferente al que vas a comprometer, obviamente no va a funcionar.
ResponderEliminarPara esos casos y si mal no recuerdo, más de una vez me ha tocado usar un push esp (en realidad yo usaba jmp esp) universal.