Hay muchos otros tipos de archivos que podemos encontrar en un sistema local o en unidades compartidas de red que pueden contener credenciales o información adicional que se puede utilizar para escalar privilegios. En un entorno de Active Directory, podemos utilizar una herramienta como para rastrear unidades compartidas de red en busca de extensiones de archivo interesantes como .kdbx, .vmdk, .vdhx, .ppk, etc. Podemos encontrar un disco duro virtual que podemos montar y del que podemos extraer hashes de contraseñas de administrador local, una clave privada SSH que se puede utilizar para acceder a otros sistemas o instancias de usuarios que almacenan contraseñas en documentos de Excel/Word, libros de trabajo de OneNote o incluso el archivo clásico passwords.txt.
He realizado muchas pruebas de penetración en las que una contraseña encontrada en una unidad compartida o una unidad local condujo al acceso inicial o a la escalada de privilegios. Muchas empresas proporcionan a cada empleado una carpeta en un recurso compartido de archivos asignada a su ID de usuario, es decir, la carpeta bjones en el recurso compartido users en un servidor llamado FILE01 con permisos flexibles aplicados (es decir, todos los usuarios del dominio con acceso de lectura a todas las carpetas de usuario). A menudo encontramos usuarios que guardan datos personales confidenciales en estas carpetas, sin saber que son accesibles para todos en la red y no solo a nivel local en su estación de trabajo.
Búsqueda manual de credenciales en el sistema de archivos
Podemos buscar en el sistema de archivos o compartir unidades manualmente usando los siguientes comandos de .
Buscar contenido de archivo por cadena (Ejemplo 1)
La gente suele usar la aplicación StickyNotes en las estaciones de trabajo de Windows para guardar contraseñas y otra información, sin darse cuenta de que es un archivo de base de datos. Este archivo se encuentra en la siguiente ruta y siempre vale la pena buscarlo y examinarlo:
PS C:\htb> ls
Directory: C:\Users\htb-student\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/25/2021 11:59 AM 20480 15cbbc93e90a4d56bf8d9a29305b8981.storage.session
-a---- 5/25/2021 11:59 AM 982 Ecs.dat
-a---- 5/25/2021 11:59 AM 4096 plum.sqlite
-a---- 5/25/2021 11:59 AM 32768 plum.sqlite-shm
-a---- 5/25/2021 12:00 PM 197792 plum.sqlite-wal
Visualización de datos de StickyNotes mediante PowerShell
PS C:\htb> Set-ExecutionPolicy Bypass -Scope Process
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
PS C:\htb> cd .\PSSQLite\
PS C:\htb> Import-Module .\PSSQLite.psd1
PS C:\htb> $db = 'C:\Users\htb-student\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite'
PS C:\htb> Invoke-SqliteQuery -Database $db -Query "SELECT Text FROM Note" | ft -wrap
Text
----
\id=de368df0-6939-4579-8d38-0fda521c9bc4 vCenter
\id=e4adae4c-a40b-48b4-93a5-900247852f96
\id=1a44a631-6fff-4961-a4df-27898e9e1e65 root:Vc3nt3R_adm1n!
\id=c450fc5f-dc51-4412-b4ac-321fd41c522a Thycotic demo tomorrow at 10am
Strings para visualizar el contenido de un archivo de base de datos
También podemos copiarlos a nuestra máquina de atacante y buscar en los datos usando el comando strings, lo que puede ser menos eficiente dependiendo del tamaño de la base de datos.
Algunos de los scripts de enumeración de escalada de privilegios enumerados anteriormente en este módulo buscan la mayoría, si no todos, los archivos o extensiones mencionados en esta sección. Sin embargo, debemos entender cómo buscarlos manualmente y no confiar únicamente en herramientas. Además, podemos encontrar archivos interesantes que los scripts de enumeración no buscan y desear modificar los scripts para incluirlos.
Caso práctico
Objetivo: 10.129.43.44 (ACADEMY-WINLPE-SRV01)
RDP con el usuario "htb-student" y contraseña "HTB_@cademy_stdnt!"
Pregunta 1
Utilizando las técnicas que se muestran en esta sección, busque la contraseña de texto sin formato para el usuario bob_adm en el sistema de destino.
No tenemos Powershell como administrador, así que seguiremos como el usuario sin privilegios.
Podemos copiar los tres archivos plum.sqlite* a nuestro sistema y abrirlos con una herramienta como y ver la columna Text en la tabla Note con la consulta select Text from Note;.
imagen
Esto también se puede hacer con PowerShell usando el . Primero, importe el módulo, apunte a una fuente de datos (en este caso, el archivo de base de datos SQLite usado por la aplicación StickNotes) y, finalmente, consulte la Notetabla y busque datos interesantes. Esto también se puede hacer desde nuestra máquina de ataque después de descargar el .sqlitearchivo o de forma remota a través de WinRM.