Audit des Systèmes Windows : Guide Pratique de Sécurité
=======================================================
L'audit de sécurité est essentiel pour protéger les systèmes informatiques contre les intrusions et les logiciels malveillants. Les systèmes Windows, largement utilisés dans les environnements professionnels, nécessitent une surveillance régulière pour détecter les anomalies, comprendre l'origine des incidents et appliquer rapidement des mesures correctives.
## Surveillance des Journaux d'Événements avec PowerShell
La surveillance des journaux Windows est cruciale pour identifier et réagir aux menaces de sécurité. PowerShell offre des commandes puissantes pour extraire et filtrer les informations pertinentes des journaux de sécurité, système et application. Voici quelques commandes utiles :
**Obtenir les derniers événements d'ouverture de session réussie :**
```powershell
Get-WinEvent -LogName Security -MaxEvents 1000 | Where-Object {$_.Id -eq 4624} | Format-List
```
**Obtenir les derniers événements de connexion échouée :**
```powershell
Get-WinEvent -LogName Security -MaxEvents 1000 | Where-Object {$_.Id -eq 4625} | Format-List
```
**Obtenir les derniers événements de verrouillage de compte :**
```powershell
Get-WinEvent -LogName Security -MaxEvents 1000 | Where-Object {$_.Id -eq 4740} | Format-List
```
**Filtrer les événements de modification des groupes de sécurité :**
```powershell
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4732 -or $_.Id -eq 4733} | Format-List
```
**Afficher les événements d'alerte du journal Système :**
```powershell
Get-WinEvent -LogName System -MaxEvents 1000 | Where-Object {$_.LevelDisplayName -eq "Warning"} | Format-List
```
Utilisation des Requêtes EventLog
---------------------------------
Les requêtes XML permettent de cibler des événements spécifiques avec précision. Par exemple, pour filtrer les événements de connexion échouée (ID 4625), utilisez
- **Connexions échouées (ID 4625)** :
```
<QueryList>
<Query Id="0" Path="Security">
<Select>*[System[EventID=4625]]</Select>
</Query>
</QueryList>
```
**Requête XML pour filtrer les événements de connexion échouée (ID 4625) :**
```xml
<QueryList><Query Id="0" Path="Security"><Select>*[System[EventID=4625]]</Select></Query></QueryList>
```
**Requête XML pour les erreurs critiques dans le journal Système :**
```xml
<QueryList><Query Id="0" Path="System"><Select>*[System[Level=1]]</Select></Query></QueryList>
```
**Requête XML pour les événements d'avertissement dans le journal Application :**
```xml
<QueryList><Query Id="0" Path="Application"><Select>*[System[Level=2]]</Select></Query></QueryList>
```
Configuration et Utilisation d'AuditPol
---------------------------------------
`AuditPol` est un outil essentiel pour configurer les politiques d'audit sur les systèmes Windows. La bonne configuration des politiques d'audit est cruciale pour capturer des données d'audit pertinentes et garantir la conformité aux politiques de sécurité de l'entreprise.
Par exemple, pour voir les sous-catégories d'audit activées pour les ouvertures/fermetures de session
```
auditpol /get /category:"Logon/Logoff"
```
**Lister les sous-catégories d'audit activées pour les ouvertures/fermetures de session :**
```bash
auditpol /get /category:"Logon/Logoff"
```
**Lister les sous-catégories d'audit pour la gestion des comptes :**
```bash
auditpol /get /category:"Account Logon"
```
**Afficher la configuration d'audit des accès aux objets :**
```bash
auditpol /get /category:"Object Access"
```
**Afficher les politiques d'audit pour les modifications des stratégies de sécurité :**
```bash
auditpol /get /category:"Policy Change"
```
## Sysinternals Tools
Les outils Sysinternals, et notamment `Procmon`, offrent des fonctionnalités avancées pour l'audit des processus en cours. Ces outils permettent une analyse détaillée des activités en temps réel et peuvent être utilisés pour des audits approfondis, souvent nécessaires après une alerte de sécurité.
**Utiliser Sysinternals `Procmon` pour filtrer les événements de processus :**
```bash
procmon /filter
```
## Évènements Système
Afficher les événements d'erreur du journal Système :
```bash
Get-WinEvent -LogName System -MaxEvents 1000 | Where-Object {$_.LevelDisplayName -eq "Error"} | Format-List
Afficher les événements d'avertissement du journal Application :
```
```bash
Get-WinEvent -LogName Application -MaxEvents 1000 | Where-Object {$_.LevelDisplayName -eq "Warning"} | Format-List
Afficher les événements critiques du journal Sécurité :
```
```bash
Get-WinEvent -LogName Security -MaxEvents 1000 | Where-Object {$_.LevelDisplayName -eq "Critical"} | Format-List
```
---
# Cheatsheet Windows
 
## Informations système
### Version et Patches info
```
wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic computersystem LIST full #Get PC info
wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic qfe list brief #Updates
hostname
DRIVERQUERY #3rd party driver vulnerable?
```
### Environnement
```
set #List all environment variables
```
Quelques variables env à mettre en évidence:
- **COMPUTERNAME**: Nom de l'ordinateur
- **TEMP/TMP: TEMPS** Dossier temp
- **NOM D'UTILISATEUR:** Votre nom d'utilisateur
- **HOMEPATH/USERPROFIL: ACCUEIL** Accueil répertoire
- **windir: windir:** C:\\Windows
- **OS**:Windos OS
- **LOGONSERVER**: Nom du contrôleur de domaine
- **USERDNSDOMAIN**: Nom de domaine à utiliser avec DNS
- **USERDOMAIN**: Nom du domaine
### Commandes utiles pour auditer un Système Windows
Analyse d'un système Windows via l'invite de commandes
| Commande | Description |
| --- | --- |
| `systeminfo` | Affiche des informations détaillées sur la configuration du système. |
| `tasklist` | Liste tous les processus en cours d'exécution. |
| `sfc /scannow` | Vérifie l'intégrité de tous les fichiers système protégés et répare les fichiers endommagés. |
| `chkdsk` | Vérifie l'intégrité du système de fichiers d'un disque. |
| `dism /Online /Cleanup-Image /RestoreHealth` | Répare l'image du système d'exploitation Windows. |
| `ipconfig /all` | Affiche la configuration IP complète de tous les adaptateurs. |
| `netstat -ano` | Affiche toutes les connexions réseau actives et les ports d'écoute. |
| `wmic` | Outil polyvalent pour obtenir des informations détaillées sur divers composants du système. |
| `powercfg /energy` | Génère un rapport détaillé sur l'utilisation de l'énergie du système. |
| `eventvwr` | Ouvre le Visualiseur d'événements pour examiner les journaux système. |
| `msinfo32` | Affiche des informations système détaillées dans une interface graphique. |
| `gpresult /r` | Affiche les stratégies de groupe appliquées à l'utilisateur et à l'ordinateur. |
| `whoami` | Affiche le nom de l'utilisateur courant et ses informations de domaine. |
| `systeminfo` | Affiche des informations détaillées sur la configuration du système. |
| `tasklist` | Liste tous les processus en cours d'exécution. |
| `sfc /scannow` | Vérifie l'intégrité de tous les fichiers système protégés et répare les fichiers endommagés. |
| `chkdsk` | Vérifie l'intégrité du système de fichiers d'un disque. |
| `dism /Online /Cleanup-Image /RestoreHealth` | Répare l'image du système d'exploitation Windows. |
| `ipconfig /all` | Affiche la configuration IP complète de tous les adaptateurs. |
| `netstat -ano` | Affiche toutes les connexions réseau actives et les ports d'écoute. |
| `wmic` | Outil polyvalent pour obtenir des informations détaillées sur divers composants du système. |
| `powercfg /energy` | Génère un rapport détaillé sur l'utilisation de l'énergie du système. |
| `eventvwr` | Ouvre le Visualiseur d'événements pour examiner les journaux système. |
| `msinfo32` | Affiche des informations système détaillées dans une interface graphique. |
| `gpresult /r` | Affiche les stratégies de groupe appliquées à l'utilisateur et à l'ordinateur. |
| `schtasks` | Gère les tâches planifiées sur un ordinateur local ou distant. |
| `shutdown /s /f /t [secondes]` | Éteint l'ordinateur après un délai spécifié. |
| `gpupdate /force` | Applique immédiatement les paramètres de stratégie de groupe. |
### Navigation dans le Système de Fichiers
| Commande | Description |
|-------------------|--------------------------------------------------|
| `dir` | Liste les fichiers et dossiers dans le répertoire courant. |
| `cd [chemin]` | Change le répertoire courant. |
| `cls` | Efface l'écran de l'invite de commandes. |
| `tree` | Affiche la structure des dossiers en forme d'arborescence. |
| `attrib` | Affiche ou modifie les attributs de fichiers. |
### Informations Système
| Commande | Description |
|-------------------|--------------------------------------------------|
| `systeminfo` | Affiche les informations détaillées sur le système. |
| `hostname` | Affiche le nom de l'ordinateur. |
| `ver` | Affiche la version de Windows. |
| `set` | Affiche les variables d'environnement. |
| `echo %USERNAME%` | Affiche le nom de l'utilisateur courant. |
### Commandes de Fichiers
| Commande | Description |
|---------------------------|--------------------------------------------------|
| `copy [source] [destination]` | Copie des fichiers. |
| `move [source] [destination]` | Déplace des fichiers. |
| `del [fichier]` | Supprime un fichier. |
| `rename [ancien_nom] [nouveau_nom]` | Renomme un fichier. |
| `type [fichier]` | Affiche le contenu d'un fichier texte. |
### Commandes de Dossiers
| Commande | Description |
|---------------------------|--------------------------------------------------|
| `mkdir [nom_du_dossier]` | Crée un nouveau dossier. |
| `rmdir [nom_du_dossier]` | Supprime un dossier vide. |
| `rmdir /s [nom_du_dossier]` | Supprime un dossier et son contenu. |
| `cd ..` | Revient au répertoire parent. |
| `pushd [chemin]` | Change de répertoire tout en sauvegardant le répertoire courant. |
| `popd` | Revient au répertoire sauvegardé par `pushd`. |
### Gestion des Utilisateurs
| Commande | Description |
|----------------------------------------------|--------------------------------------------------|
| `net user` | Affiche la liste des utilisateurs du système. |
| `net user [nom_utilisateur] [mot_de_passe] /add` | Ajoute un nouvel utilisateur. |
| `net localgroup [nom_groupe] [nom_utilisateur] /add` | Ajoute un utilisateur à un groupe. |
| `net user [nom_utilisateur] /delete` | Supprime un utilisateur. |
| `net accounts` | Affiche les paramètres de compte. |
### Informations sur les Disques
| Commande | Description |
|-------------------|--------------------------------------------------|
| `diskpart` | Lance l'outil de gestion des disques. |
| `list disk` | Liste tous les disques. |
| `list volume` | Liste toutes les partitions. |
| `detail disk` | Affiche des détails sur un disque sélectionné. |
| `detail volume` | Affiche des détails sur un volume sélectionné. |
### Vérification et Réparation
| Commande | Description |
|---------------------------|--------------------------------------------------|
| `chkdsk [lettre_du_disque]: /f` | Vérifie et répare les erreurs sur le disque. |
| `sfc /scannow` | Analyse et répare les fichiers système corrompus. |
| `dism /Online /Cleanup-Image /RestoreHealth` | Répare l'image du système d'exploitation Windows. |
| `fsutil` | Outils divers de gestion des fichiers et systèmes de fichiers. |
| `diskpart /s [script]` | Exécute un script DiskPart. |
### Informations Réseau
| Commande | Description |
|-------------------|--------------------------------------------------|
| `ipconfig` | Affiche les informations de configuration IP. |
| `ping [adresse]` | Teste la connectivité réseau avec une adresse. |
| `netstat -an` | Affiche toutes les connexions réseau actives. |
| `tracert [adresse]` | Trace le chemin des paquets jusqu'à une adresse cible. |
| `nslookup [nom_de_domaine]` | Affiche les informations DNS pour un nom de domaine. |
### Gestion Réseau
| Commande | Description |
|---------------------------------------------|--------------------------------------------------|
| `netsh` | Configure les paramètres réseau. |
| `netsh wlan show profiles` | Affiche les profils Wi-Fi enregistrés. |
| `netsh advfirewall set allprofiles state off` | Désactive le pare-feu Windows. |
| `net use [lecteur]: [chemin]` | Connecte un lecteur réseau. |
| `net share [nom_ressource]` | Partage un dossier. |
### Gestion des Processus
| Commande | Description |
|---------------------------------------------|--------------------------------------------------|
| `tasklist` | Affiche la liste des processus en cours. |
| `taskkill /PID [ID_du_processus] /F` | Termine un processus. |
| `start [application]` | Démarre une application. |
| `taskkill /IM [nom_du_processus] /F` | Termine un processus par son nom. |
| `get-process` | Liste les processus en cours (PowerShell). |
### Gestion des Services
| Commande | Description |
|-----------------------------|--------------------------------------------------|
| `sc query` | Affiche l'état des services. |
| `net start [nom_du_service]`| Démarre un service. |
| `net stop [nom_du_service]` | Arrête un service. |
| `sc config [nom_du_service] start= [type_démarrage]` | Configure le type de démarrage d'un service. |
| `get-service` | Affiche l'état des services (PowerShell). |
## Outils de Diagnostic et de Réparation
### Outils Intégrés
| Commande | Description |
|-------------------|--------------------------------------------------|
| `msconfig` | Ouvre l'outil de configuration système. |
| `eventvwr` | Ouvre le Visualiseur d'événements. |
| `dxdiag` | Ouvre l'outil de diagnostic DirectX. |
| `perfmon` | Ouvre l'outil de surveillance des performances. |
| `resmon` | Ouvre l'outil de surveillance des ressources. |
| `winver` | Affiche la version de Windows. |
### Outils de Diagnostic PowerShell
| Commande | Description |
|-----------------------------------------|--------------------------------------------------|
| `Get-EventLog -LogName System` | Affiche les entrées du journal des événements système. |
| `Get-WinEvent -LogName Security` | Affiche les entrées du journal des événements de sécurité. |
| `Get-Process` | Liste tous les processus en cours. |
| `Get-Service` | Affiche l'état des services. |
| `Get-NetIPAddress` | Affiche les informations de configuration IP. |
| `Test-Connection -ComputerName google.com` | Teste la connectivité réseau avec une adresse. |
---
@cyberhunter