"MANIPULANDO DLL'S"
"HERRAMIENTA RAILGUN"
"POST-EXPLOTACION"
una de las cuestiones mas importantes a la hora de ejecutar una post-explotación es tener en cuenta hasta donde tendremos pensado llegar como por ejemplo hasta que subred o segmento de la red queremos llegar, en caso de que nos encontremos con una subred o algún firewall, honeypot o vlan tendremos que tener en cuenta estas medidas y planificar diferentes estrategias si no queremos tener serios problemas en realidad.
una vez ya hemos llegado a penetrar el sistema que ya hemos encontrado los fallos de seguridad y explotarlos por cuenta propia ya sea con ayuda manual de algun exploit que hayamos programado o de forma automatizada mediante la base de datos exploit.db y con la herramienta metasploit.
metasploit empezo como un proyecto privativo pero pronto alcanzo una popularidad en la decada pasada y desde entonces se ha convertido en un estandar defacto de los investigadores en seguridad cibernetica y los pentesters y hackers eticos, la comunidad la adora ya que se pueden ejecutar diversos modulos no solo para hacer hacking etico si no tambien para todas sus fases como reconocimiento de informacion, escaneo de informacion, obtener acceso , mantener el acceso y limpiar las huellas.
cada una de las anteriores fases con su unica particularidad establecida, tambien otra cosa que hay que quedar claro es que deberemos desarollar en algunas ocasiones nuestros mismos modulos por ejemplo metasploit admite modulos de scripts compilados directamente en el lenguaje de programacion ruby, pero antes de tener esto en cuenta deberemos de asegurarnos de mantener la estructura de programcaicon correcta para que metasploit lo detecte y guardar nuestros modulos y scripts personalizados dentro de la carpeta de metasploit correspondiente.
ejemplo de programacion de un script en ruby para Metasploit:
require 'msf/core' require 'socket' class MetasploitModule < Msf::auxiliary include Msf::Exploit::Capture include Msf::Exploit::Remote::Tcp include Msf::Exploit::EXE def initialize(info={}) super update_info(info, 'name' => 'ejemplo-modulo-personalizado', 'Description' => 'hola mundo en modulo personalizado', 'License' => 'Msf License' )) register_options( Opt::RPORT (6000), ], self.class) deregister_options('RHOST') end
para explicar el anterior codigo lo primero que deberemos comentar es que estamos incluyendo las librerias algunas nativas ya del propio lenguaje de ruby y otra de metasploit , por ejemplo la libreria de socket es nativa del lenguaje mientras que msf/core incluye todas las clases y metodos propios de metasploit para poder desarollar nuestro propio modulo en cualquier fase del hacking etico.
vemos que hacemos heredar las clases y metodos con < e include y que mandamos llamar varios de sus metodos predeterminados de la libreria de metasploit , vemos tambien que requerimos que el nos den como parametro un puerto que en este caso es obligatorio como lo hemos personalizado y es el puerto 6000, no he puesto todo el código ya que queda para otro articulo . tenemos que guardar el script personalizado en la siguiente ruta.
una vez realizado lo anterior lo otro es buscar mediante los comandos que ya conocemos a nuestro script y procedeer a nuestra configuracion.
lo que nos queda ahora es explicar como es que funciona un secuestro de librerias dinamicas de windows o mejor conocido como DLL, el secuestro de librerias es algo de hace algunas decadas desde el nacimiento desde los primeros sistemas operativos ya que su eficacia ronda un porcentaje muy alto dentro del entorno de los ciberatacantes, una de las tecnicas es inyectar codigo en una libreria que llama obligatoriamente al sistema operativo es por ello que es un metodo de post-explotacion es decir despues de la explotacion ya que esta tecnica requiere privilegios elevados de administracion del sistema.
por ejemplo si tenemos una x.dll y esta se encarga de mandar llamar al proceso de inicio de sesion o del explorador de windows si o si se tiene que ejecutar cada cierto tiempo o siempre continuamente para que el sistema operatuvo tenga funcional la barra de tareas entonces el codigo malicioso inyectado inicia procesos pegados en conjunto con la x.dll y modifica un poco su codigo asi teniendo una persistencia en el ataque es practicamente lo que realiza la herramienta railgun, desde aqui estamos hablando de mantener acceso uno de los pasos del ethical hacking.
Utilizar Railgun es sencillo, sin embargo es necesario conocer las funciones y las DLL incluidas en windows para poder ejecutarlas adecuadamente con sus parámetros correspondientes, desde IRB de meterpreter la sintaxis básica para utilizar Railgun es:
client . railgun . NOMBRE_DDL . FUNCION . {PARAMETROS_FUNCION} >>client.railgun.add_dll(‘nombre_dll’) >> client.railgun.kernel32.GetCurrentProcessId => {“GetLastError”=>0, “return”=>996} La API de windows es muy extensa y es imposible abarcar la cantidad de invocaciones que se puede llevar a cabo desde Railgun, sin embargo se intentará indicar el uso de algunas que son muy útiles Determinando si el usuario actual tiene privilegios de administrador. >> status = client.railgun.shell32.IsUserAnAdmin() => {“GetLastError”=>0, “return”=>true} >> ?> printf (“El usuario es admin? %s”,status[‘return’]) El usuario es admin? true
lo anteior estamos invicando a una dll que de antemano deberiamos conocer su funcionamiento y conocer al lenguaje de programacion ruby para poder invicar dll y sus propios metodos ademas de sus funciones nativas para saber exactamente donde realmente estamos inyectando nuestro codigo en el sistema.
con el interprete interactivo de ruby el IRB podemos hacer muchas cosas interesantes como desactivar el firewall el defender de windows y otros muchos detallitos que nos pueden hacer mantener el acceso mediante largos periodos de tiempo en el lugar atacado.
sin mas me despido y que tengan una linda semana.
happy hacking.
:)
the pentester
REFERENCIAS, ENLACES TECNICOS Y LIBROS RECOMENDADOS:
Libro sobre metasploit recomendado en la que se aborda distintas herramientas comandos y utilidades de metasploit.
0 comments:
Publicar un comentario