Unidad 5.
Ingeniería reversa y Metasploit
Introducción a la unidad – Concepto
Caracterización
Metasploit
Introducción y conceptos generales
Metasploit y sus componentes
Instalación. Requerimientos y recomendaciones
Consolas
Meterpreter
Funcionalidades y comandos
Privilegios y accesos. Laboratorio
Referencias
Página 1 de 11
Introducción a la unidad – Concepto
La ingeniería reversa es algo que se viene realizando hace muchos años y que es anterior al
hardware y software que estamos pensando.
Básicamente, se trata de saber cómo llega a funcionar algo a partir del entendimiento del
producto terminado. Tomemos el ejemplo de una casa: consiste en averiguar cómo está
construida una casa que ya ha sido terminada; la parte difícil es hacerlo sin contar con los
planos, pues solo podemos observar la estructura. Entonces, intentaremos realizar el
desmontaje pieza a pieza. Recordemos un jueguito clásico que utilizaban los niños en el
siglo pasado, el mecano, en el que se debían ir desarmando cada una de las partecitas de
la estructura para luego entender su funcionamiento.
En la actualidad, esta técnica se ha hecho muy común para analizar un software: la casa ya está construida,
pero interesa saber cómo fue hecha para intentar replicarlo.
Claro que tenemos que introducir otro actor en este juego, llamado propiedad intelectual. No podemos hacer
una copia de algo y replicar su funcionamiento sin tener que ver las condiciones establecidas en la
propiedad intelectual de ese producto o sistema. La historia nos muestra muchos ejemplos. A los
interesados les recomiendo el libro Software and Intellectual Property Protection de Bernard Galler (1995),
que relata el caso de Phoenix Technologies; y a aquellos que quieren entender un poco más respecto de
cómo funciona y cómo se deben manejar con la propiedad intelectual, les recomiendo que lean el artículo
“Protección legal del software en las tecnologías de la información por medio de la propiedad intelectual” de
Raisha Alejandra Gamba Segovia y Camilo Alfonso Escobar Mora (2013).
C O NT I NU A R
Página 2 de 11
Caracterización
La ingeniería reversa puede tener distintos objetivos o motivaciones. Recién mencionamos los aspectos
relacionados a la propiedad intelectual. Es decir, que alguien ve un producto y por medio del reversing intenta
saber cómo funciona para poder replicarlo. En el caso del software, podríamos hacer reversing de un
ejecutable (que es un código compilado y del que solo se dispone el archivo .exe o similar).
Lea el capítulo 1, “Introducción a la Ingeniería inversa”, del libro Reversing, ingeniería inversa, Teoría y
aplicación (Garrote García y Antonio García Tome, 2017). Verá entonces que las motivaciones son variadas.
En la historia, también, tenemos varios ejemplos de esto. Podemos hacer mención de lo ocurrido en la
segunda guerra mundial: entonces encontramos el caso de la maquina enigma, que era el dispositivo que
utilizaban los alemanes para encriptar todas las comunicaciones. Los aliados buscaron durante mucho
tiempo conseguir ese dispositivo para poder hacer ingeniería inversa y generar el modelo matemático; de
esta forma, con el algoritmo de encripción, podían hacer las pruebas para quebrar el algoritmo. En la
actualidad, esto mismo se sigue haciendo, pero es menos común verlo sobre el hardware, y es mucho más
frecuente sobre el software.
C O NT I NU A R
Página 3 de 11
Metasploit
“Metasploit es un proyecto de código abierto para la seguridad informática, que proporciona información
acerca de vulnerabilidades de seguridad y ayuda en test de intrusión y el desarrollo de firmas para sistemas
de detección de intrusos” (Hackingint, s. f., https://bit.ly/3lNMXQK). Metasploit fue adquirido por Rapid7.
Desde su adquisición, se establecieron dos versiones (una es open source, es decir, de código abierto),
llamadas Metasploit Express y Metasploit Pro. Ambas son multiplataformas, lo que significa que pueden ser
operadas desde Linux, Mac OS y Windows.
C O NT I NU A R
Página 4 de 11
Introducción y conceptos generales
El proyecto Metasploit se encuentra disponible en este sitio. Allí encontrará básicamente dos versiones, una
open source y la otra con soporte. Le recomiendo que inicie con la versión open source, luego de hacer la
descarga correspondiente a su sistema operativo acá.
Para interpretar adecuadamente los conceptos de términos utilizados, a continuación, le presentamos una
breve descripción de ellos:
Vulnerabilidad Fallo de seguridad
Código que aprovecha esa
Exploit
vulnerabilidad.
Carga útil; el conjunto de
datos transmitidos. Se
refiere a la parte del
Payload malware que realiza la
acción maliciosa después
de haber realizado una
penetración exitosa.
Conjunto de instrucciones
utilizadas, como un
Shellcode
payload o carga útil cuando
ocurre la explotación.
Pieza de software que puede
Módulo ser utilizada por Metasploit
Framework.
Componente dentro de
Metasploit que espera por una
Listener
conexión entrante de algún
tipo.
Metasploit Framework incluye
Base de datos soporte para el sistema de
bases de datos PostgreSQL.
C O NT I NU A R
Página 5 de 11
Metasploit y sus componentes
El Metasploit Framework o MSF está compuesto de módulos de diversos tipos que pueden guardar
información en una base de datos Postgres. Dicha base se incluye en el MSF; la primera vez que se inicia el
programa de setup, este crea la estructura de tablas requeridas.
Meterpreter: es un payload bastante más conocido y su nombre proviene de las palabras “meta” e
“interpreter”.
Es multifacética y se ejecuta en memoria a bajo nivel, es decir, que aporta una indetectabilidad
bastante considerable, ya que los sistemas de protección se encuentran varias capas por
encima. Es una de las shell por defecto de Metasploit Framework y tiene muchas opciones y
comandos propios, por lo que resulta una muy buena herramienta para auditores de seguridad
informática. (Rizaldos, 2018, https://bit.ly/3160yuN)
MSFConsole: probablemente, la interfaz de software más popular de Metasploit Framework. Acceder
haciendo clic acá.
C O NT I NU A R
Página 6 de 11
Instalación. Requerimientos y recomendaciones
Ya hemos mencionado qué es un framework multiplataforma, por lo que según el SO en donde usted prefiera
utilizarlo, deberá tener las siguientes consideraciones de instalación:
Instalación manual de Linux
–
Los paquetes de Linux se crean todas las noches para sistemas .deb (i386, amd64, armhf, arm64) y .rpm
(x86 de 64 bits). Los paquetes Debian/Ubuntu están disponibles acá y los paquetes CentOS/Redhat/Fedora
se encuentran acá.
Instalación anual de macOS
–
El último paquete de instalación de OS X también se puede descargar directamente aquí:, con las últimas
diez compilaciones archivadas acá. Simplemente descargue y ejecute el instalador para instalar Metaploit
Framework con todas sus dependencias.
Instalación de Metasploit en Windows
–
Descargue el instalador de Windows más reciente o vea versiones anteriores. Para instalar, simplemente
descargue el paquete .msi, ajuste su antivirus según sea necesario para ignorar c: \ metasploit-framework,
haga doble clic y disfrute. El comando MSFconsole y todas las herramientas relacionadas se agregarán a la
variable de entorno del sistema% PATH%.
C O NT I NU A R
Página 7 de 11
Consolas
MSFcli: “proporciona una poderosa interfaz en línea de comando para el framework. Esto permite fácilmente
añadir exploits de Metasploit dentro de cualquier script (guiones), los cuales pueden ser creados” (Caballero,
2016, https://bit.ly/3nMEEWV).
En el mes de junio del año 2015 msfcli fue retirado. Se pueden obtener funcionalidades similares a través de
MSFconsole utilizando la opción “-x”.
MSFconsole:
es probablemente la interfaz más popular de Metasploit Framework. Proporciona una
consola centralizada “todo en uno”, lo cual permite un acceso eficiente hacia virtualmente
todas las opciones disponibles en el Framework. Podría resultar intimidatorio al inicio, pero
una vez aprendida la sintaxis de los comandos se apreciará su poder. (Caballero, 2016,
https://bit.ly/3nMEEWV)
C O NT I NU A R
Página 8 de 11
Meterpreter
Ya hemos realizado varios comentarios de Meterpreter. Ahora vamos a ampliar un poco:
[Meterpreter] permite obtener una gran cantidad de información sobre un objetivo
comprometido, así como también manipular procesos del sistema y/o terminarlos.
Básicamente, es un intérprete de comandos que permite de una forma segura y simple
interactuar con la máquina objetivo ganando por una parte la flexibilidad de un stagers
(ejecución de múltiples comandos en un payload) y, por otra parte, la fiabilidad de que no
será detectado fácilmente por un antivirus, firewall o IDS, ya que se ejecuta como un
proceso en el sistema operativo y no escribe ningún fichero al sistema remoto. (Adastra,
2011, https://bit.ly/3jTq0ed)
De los creadores de Metasploit Framework, consiste en una familia de plugins avanzados y se utiliza sobre
sistemas Windows que se encuentran comprometidos. Su característica esencial es que todo se carga en
la memoria del sistema sin crear proceso adicional alguno ni dejar rastros, lo cual permite la inyección
dinámica de las DLL (típicas librerías de Windows) o la migración entre procesos del intérprete.
C O NT I NU A R
Página 9 de 11
Funcionalidades y comandos
Es sencillo añadir funcionalidades a Meterpreter, y existen desarrolladores que publican sus DLL en Internet
y proporcionan más funcionalidades interesantes. Tomemos como ejemplo que con el comando "Load”
permite cargar en memoria librerías que amplían las funcionalidades que este payload nos aporta. Para
mencionar algo básico, utilizaremos la librería sessiondump, la cual nos proporcionará funciones como
getHashes o getwDigest. Ahora que tenemos la DLL disponible, debemos añadirla a la carpeta
“data/meterpreter”. Simplemente, nos vale con copiar la DLL en dicha carpeta y, al utilizar un Meterpreter,
podremos utilizar el comando “Load” o “Use” en la sesión para cargar la funcionalidad.
A continuación, vamos a detallar comandos de Meterpreter:
help – Abrir uso ayuda Meterpreter
run scriptname – Ejecutar Meterpreter-basado en scripts, para obtener una lista completa
de scripts/meterpreter en el directorio.
sysinfo – Mostrar la información del sistema en el destino remoto.
ls – Lista de archivos y carpetas en el objetivo.
use priv – Cargue el privilegio de la extensión para extender la librería delMeterpreter.
ps – Mostrar todos los procesos en ejecución y que las cuentas estén asociadas con
cada proceso.
migrate PID – Migrar específicamente el proceso de ID (PID es el objetivo del proceso ID
ganado desde el comando PS).
use incognito – Cargar funciones incógnitas. (Se utiliza para robar fichas y suplantación de
una máquina de destino)
list_tokens -u –Lista fichas disponibles en el objetivo por el usuario.
list_tokens -g – Lista fichas disponibles en el objetivo por el grupo.
impersonate_token DOMAIN_NAME\\USERNAME – Hacerse pasar por una ficha
disponible en el objetivo.
steal_token PID – Robar las fichas disponibles para un determinado proceso y hacerse
pasar por esa señal.
drop_token – Deje de hacerse pasar por el token actual.
getsystem – Intento de elevar los permisos de acceso a nivel de sistema a través de
múltiples vectores de ataque.
shell – Caer en un shell interactivo con todas las fichas disponibles.
execute -f cmd.exe -i – Ejecuta rcmd.exe e interactuar con él.
execute -f cmd.exe -i -t – Ejecutar cmd.exe con todas las fichas disponibles.
execute -f cmd.exe -i -H -t – Ejecutar cmd.exe con todas las fichas disponibles y
convertirlo en un proceso oculto.
rev2self – Volver al usuario original que utilizó para poner en peligro el objetivo.
reg command – Interactuar, crear, eliminar, consultar, set, y mucho más en el registro del
destino.
setdesktop number – Cambiar a una pantalla diferente en función de quién está
conectado.
screenshot – Tome una captura de pantalla de la pantalla del destino.
upload file – Subir un archivo a la objetivo.
download file – Descargar los archivos desde el objetivo.
keyscan_start – detecte las pulsaciones de teclado en el destino remoto.
keyscan_dump – Volcar las teclas remotas capturados en el objetivo.
keyscan_stop – Deje de detectar las pulsaciones de teclado en el destino remoto.
getprivs – Obtener tantos privilegios como sea posible en el objetivo.
uictl enable keyboard/mouse –Toma el control del teclado y/o ratón.
background – Ejecute su shell actualMeterpreter en el fondo.
hashdump – Volcar todos los hashes en el objetivo.
use sniffer – Cargue el módulo sniffer.
sniffer_interfaces – Lista de interfaces disponibles al objetivo.
sniffer_dump interface ID pcapname – Comience sniffer en el destino remoto.
sniffer_start interfaceID packet-buffer – Comience sniffer con una gama específica para
un buffer de paquetes.
sniffer_stats interface ID – Coge la información de estadística de la interfaz que está en
sniffer.
sniffer_stop interface ID – Detenga el sniffer D:
add_user username password -h ip – Agregar un usuario en el destino remoto.
add_group_user “Domain Admins” username -h ip – Añadir un nombre de usuario al grupo
Administradores de dominio en el destino remoto.
clearev – Borrar el registro de eventos en el equipo de destino.
timestomp – Cambiar atributos de archivo, como fecha de creación (antiforensics
medida).
reboot – Reinicia el equipo de destino. (Creandopag, 2018, https://bit.ly/3nP28uG)
C O NT I NU A R
Página 10 de 11
Privilegios y accesos. Laboratorio
Es muy importante que para hacer las primeras prácticas se utilice un entorno totalmente controlado; de esa
forma nos aseguramos de que no estamos corriendo riesgos al usar esta herramienta en entornos en los
que no tenemos los permisos de acceso y ejecución.
Para poder avanzar en el portal de Rapid7, puede hacer la descarga de una máquina para realizar las
prácticas. Se trata de Metasploitable3, que la puede descargar acá.
Para profundizar en los elementos abordados en la unidad, deberá dirigirse a:
Santo Orcero, D. (2018) Kali Linux. ES: RA-MA.
Extensión: capítulo 8. Metasploit.
Enlace: https://elibro.net/es/lc/biblioues21/titulos/106508
Asimismo, para profundizar en los elementos abordados en la unidad, sugerimos dirigirse a
las siguientes fuentes:
Garrote García, R. (2017). Reversing, ingeniería inversa. Teoría y aplicación. Editorial RA-MA
Extensión: Capítulo 1 – “Introducción a la ingeniería inversa”
Kapfer, P. (2018). Internal Hacking - Contramedidas en entorno Windows (2.da.ed.).
Ediciones Eni.
Extensión: Tomar el control remotamente - Tomar el control mediante vulnerabilidades del
sistema operativo o de las aplicaciones.
C O NT I NU A R
Página 11 de 11
Referencias
Adastra, A. (2011). Conceptos Básicos de Meterpreter – MetaSploit Framework. Recuperado de
https://thehackerway.com/2011/04/26/conceptos-basicos-de-meterpreter-metasploit-framework/
Caballero, A. (2016). Webinar Gratuito: Metasploit Framework [SlideShare]. Recuperado de
https://es.slideshare.net/reydes/webinar-gratuito-metasploit-framework
Creandopag (2018). Comandos de Meterpreter EN KALI LINUX. Recuperado de
https://www.creadpag.com/2018/05/comandos-de-meterpreter-en-kali-linux.html
Galler, B. (1995). Software and Intellectual Property Protection. Editorial Praeger
Gamba Segovia, R. A.; y Escobar Mora, C. A. (2013). Protección legal del software en las tecnologías de la
información por medio de la propiedad intelectual. En Revista de Derecho, Comunicaciones y Nuevas
Tecnologías, 9.
Garrote García, R. (2017). Reversing, Ingeniería Inversa, Teoría y aplicación. Editorial RA-MA
Hackingint (s. f.). Herramientas De Hacking Metasploit. Recuperado de
https://hackingint.wordpress.com/herramientas-de-hacking/
Kapfer, P. (2018). Internal Hacking - Contramedidas en entorno Windows (2.da.ed.). Ediciones Eni
Rizaldos, H. (2018). Qué es un Payload. Recuperado de https://openwebinars.net/blog/que-es-payload/
C O NT I NU A R