Utilizando IRB desde Meterpreter, Explorando RailGun
Railgun es una extensión de Metepreter diseñada específicamente para maquinas comprometidas bajo plataformas windows y permite realizar invocaciones directas a la API de windows así como cargar librerías DDL a la maquina comprometida y ejecutar posteriormente el código contenido en ellas. El uso de Railgun facilita mucho algunas actividades que con Meterpreter por si solo pueden ser un poco complejas o requerir privilegios de administrador, con Railgun muchos de los scripts ejecutados no necesitan que se cuente con privilegios administrativos sobre la maquina comprometida.
Ahora bien, los beneficios de utilizar RailGun saltan a la vista, es posible invocar la API de windows remotamente, lo que conlleva a que se puede acceder directamente a los dispositivos disponibles en la maquina remota, leer y escribir arbitrariamente sectores del disco e inclusive, mapear dispositivos de bloque remoto a local, vale la pena utilizar y aprender esta API, no es así?
NOTA1: Para poder utilizar Railgun correctamente, es necesario ver la API de las funciones que se encuentran las DLL de windows, para mayor información ver:
http://msdn.microsoft.com/en-us/library/aa383749
NOTA2: Muchas de las funciones en windows que funcionan con Strings tienen una versión para cadenas regulares y otra versión para cadenas unicode, las primeras terminan con la letra “A” y las segundas con “W” por ejemplo la función CreateFile tiene dos versiones CreateFileA y CreateFileW
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} |
Por otro lado, tambien es posible cargar librerías que no se encuentren incluidas por defecto empleando la funcion add_ddl, por ejemplo:
| >>client.railgun.add_dll(‘nombre_dll’) |
A continuación se incluyen algunos ejemplos de ejecución de funciones en la maquina remota utilizando RailGun
| >> client.railgun.kernel32.GetCurrentProcessId => {“GetLastError”=>0, “return”=>996} |
Como se puede apreciar en el ejemplo anterior, la función GetCurrentProcessId se encuentra definida en la librería kernel32.dll de Windows y el resultado de su ejecución cuenta con dos valores, el primero indicando si ha existido algún error en la llamada y el segundo el resultado propiamente dicho, en este caso concreto, el identificador del proceso actual (que indica el proceso en el cual se encuentra ejecutándose meterpreter)
| >> client.railgun.kernel32.CopyFileA(“C:\\boot.ini”,”C:\\boot_copy.ini”,FALSE) => {“GetLastError”=>0, “return”=>true} |
Se invoca a la funcion “CopyFile” donde el primer parámetro indica el fichero existente, el segundo el fichero que se creará con el contenido del fichero existente y el tercer parámetro quiere decir que si el fichero ya existe (boot_copy.ini) este debe de ser sobre-escrito y no fallar, si el valor fuera TRUE y el fichero ya existe, la función fallará.
| >> client.railgun.kernel32.CreateFileA(“C:\\ficherTexto.txt”,”GENERIC_WRITE|GENERIC_READ”,”FILE_SHARE_READ|FILE_SHARE_WRITE”,nil,”CREATE_ALWAYS”,0,0) => {“GetLastError”=>183, “return”=>488}
>>client.railgun.kernel32.GetFileSize(488,nil) => {“GetLastError”=>0, “return”=>0} >> client.railgun.kernel32.WriteFile(488,”Texto claro”,11,4,nil) => {“lpNumberOfBytesWritten”=>11, “GetLastError”=>0, “return”=>true} >> attr = client.railgun.kernel32.GetFileAttributesA(“C:\\ficherTexto.txt”) => {“GetLastError”=>0, “return”=>32} >> printf(“ATTR: %s, IN FILE”,attr['return']) ATTR: 32, IN FILE >> client.railgun.kernel32.CloseHandle(488) => {“GetLastError”=>0, “return”=>true} |
En el caso anterior se ha creado un fichero en la maquina remota utilizando la función CreateFileA y posteriormente se realizan una serie de manipulaciones sobre dicho fichero, tales como consultar y acto seguido escribir en él.
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 |
Establecer el modo inactivo en la maquina remota, ponerla a “dormir”
| >> client.railgun.kernel32.SetThreadExecutionState(“ES_CONTINUOUS | ES_SYSTEM_REQUIRED”)
=> {“GetLastError”=>0, “return”=>2147483648} |
Activar el bloqueo de la estacion de trabajo (WIN + L) similar al comando anterior
| >> client.railgun.user32.LockWorkStation() => {“GetLastError”=>0, “return”=>true} |
Retornar el nombre del host remoto
| >>client.railgun.kernel32.GetComputerNameA(260,260) => {“nSize”=>15, “lpBuffer”=>”JDAANIAL-6825E7″, “GetLastError”=>203, “return”=>true} |
Número de Visitas:
Twitter Adastra
- @trufae interesante presentación. Muy buen trabajo. saludos. 21 hours ago
- @jdelgadopin me alegra que te gusten... :) tengo pensado publicar más cosillas sobre TOR y redes anónimas, en cuanto pueda... 6 days ago
- WEB HACKING – Atacando DOJO InsecureWebApp – Enumeración - Parte XXX wp.me/p1nWCG-CL 6 days ago
- RT @BorjaMerino: Stealing User Certificates with Meterpreter Mimikatz Extension darkoperator.com/blog/2013/6/12… 1 week ago
- @MrInsustancial @Genko JAJAJAJAJA... Ahí le has dado! 1 week ago
- RT @SecurityTube: [Video] Intro To Mutillidae, Burp Suite And Injection Jeremy Druin securitytube.net/video/7702 2 weeks ago
- RT @SecurityTube: Open Security Training Video series on SecurityTube: securitytube.net/tags/OpenSecur… 2 weeks ago
Entradas recientes
- WEB HACKING – Atacando DOJO InsecureWebApp – Enumeración – Parte XXX
- WEB HACKING – Atacando DOJO Hackme Casino – Sesiones inseguras en Ruby On Rails – Parte XXIX
- WEB HACKING – Atacando DOJO Hacme Casino – Controladores inseguros en Ruby OnRails – Parte XXVIII
- WEB HACKING – Atacando DOJO Hacme Casino – Otras Vulnerabilidades Parte XXVII
- WEB HACKING – Atacando DOJO Hacme Casino – Vulnerabilidad CSRF Parte XXVI
- Pasando de Netcat a Cryptcat
- WEB HACKING – Atacando DOJO Vulnerabilidades SQL Injection en Hacme Casino Parte XXV
- WEB HACKING – Atacando DOJO Enumeración Hacme Casino Parte XXIV
- WEB HACKING – Vulnerabilidades en XAMPP (Continuación) – Parte XXIII
- WEB HACKING – Vulnerabilidades en XAMPP – Parte XXII
- 2 años
- W3AFRemote r01 Liberado…
- WEB HACKING – Atacando servidores web vulnerables Tomcat – Parte XXI
- WEB HACKING – Algunos Ataques directos contra servidores web Apache – Parte XX
- WEB HACKING – Ataques directos contra servidores web – Parte XIX
Entradas
Calendario de Entradas
Sobre Adastra:
Soy un entusiasta de la tecnología y la seguridad informática, me siento atraído principalmente por la cultura y los fundamentos del Gray Hat Hacking.
Soy una persona afortunada de poder dedicar mi tiempo y energía en hacer lo que me apasiona, aprendiendo y compartiendo lo aprendido, he comenzado a editar entradas en este blog dado que he llegado a un punto en el que considero que mis conocimientos también pueden favorecer a otros que tengan las ganas de adquirirlos del mismo modo que lo hago yo. Así que con bastante frecuencia iré publicando entradas relacionadas con estudios y técnicas que he ido asimilando a lo largo de mis investigaciones, todas enfocadas con diferentes facetas de la informática con un énfasis especial en la seguridad.
Citando a Galileo:
"Nunca he encontrado una persona tan ignorante de la que no pueda aprender algo."
"No se puede enseñar nada a un hombre; sólo se le puede ayudar a encontrar la respuesta dentro de sí mismo".
Happy Hack!
Blogroll
Blogs Interesantes
Mensajes y Páginas Populares
- Hydra, Ataques de Fuerza Bruta
- Wireless Hacking – Descubriendo APs con SSID ocultos y evadiendo Mac Filters – Parte IV
- Payloads Basicos en MetaSploit FrameWork
- WEB HACKING - Ataques directos contra servidores web - Parte XIX
- Uso practico de John The Ripper
- Creando un "Fake" Access Point Inalámbrico
- Preservando el Anonimato y Extendiendo su Uso – Conceptos Esenciales de TOR – Parte I
- Instalación y Configuración básica de Snort IDS con BASE (Basic Analysis and Security Engine)
- WEB HACKING – Medidas de seguridad en servidores web Apache – Instalación, Configuración y Conceptos Básicos – Parte IV
- Intentando evadir mecanismos y restricciones de Seguridad – Escaneo con NMAP evadiendo Firewalls – Parte VII
