# Recon & Enum

Les meilleurs outils de reconnaissance et d'énumération pour votre Red team.

# Windows / AD

# [Énumération] AD

## Introduction

L'énumération d'un envrionnement Active Directory est primordial pour trouver ses faibles.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/scaled-1680-/5X9image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/5X9image.png)

## Énumération distante

#### Scan réseau

Si vous avez un accès sur un sous-réseau et que vous cherchez les contrôleurs de domaine disponibles ou les serveurs Windows en général, vous allez pouvoir les identifier rapidement grâce à **CrackMapExec** :

```bash
cme smb <NET_IP/MASK>
```

<p class="callout success">Vous allez récupérer les versions de Windows ainsi que les noms des domaines associés à ces serveurs.</p>

#### Scan d'un contrôleur de domaine

Vous pouvez récupérer quelques informations utiles avec **CrackMapExec** :

```bash
cme smb <DC_IP|DC_FQDN>
```

#### Énumération des utilisateurs du domaine

Il est parfois possible de récupérer la liste des utilisateurs du domaine notamment avec **enum4linux** :

```bash
enum4linux -U <DC_IP>
```

Ou avec **kerbrute** :

```bash
kerbrute userenum --dc <DC_IP> -d <DOMAIN_FQDN> <USERLIST>
```

#### Énumération de la base de registre

```bash
reg.py <DOMAIN>/<USER>:<PASSWORD>@<IP> query -keyName "<REGISTRY_FOLDER>"
```

Voici un exemple pour lister les logiciels présent sur le poste :

```bash
reg.py <DOMAIN>/<USER>:<PASSWORD>@<IP> query -keyName "HKLM\\SOFTWARE"
```

#### Énumération des services

```bash
services.py <DOMAIN>/<USER>:<PASSWORD>@<IP> list
```

#### Récupérer les SID des utilisateurs  


```bash
lookupsid.py <DOMAIN>/<USER>:<PASSWORD>@<IP>
```

#### Récupérer les comptes de service

```bash
GetUserSPNs.py <DOMAIN>/<USER>:<PASSWORD>
```

<p class="callout info">On peut récupérer les TGS avec l'option **-request** à placer à la fin de la commande.</p>

#### Récupérer des jetons TGT  


Permet de récupérer les jetons TGT des comptes utilisateurs qui ont la pré-authentification Kerberos désactivée :

```bash
GetNPUsers.py <DOMAIN>/<USER>:<PASSWORD> -request
```

#### Récupérer des hashs de mots de passe  


Permet d'interroger le serveur pour récupérer les hashs de mots de passe qui pourraient se trouver dans le **ntds.dit**, ou autre :

```bash
secretsdump.py <DOMAIN>/<USER>:<PASSWORD>@<IP>
```

## Énumération locale

Ce petit mémo regroupe toutes les commandes pour énumérer des informations sur un domaine si vous avez un premier accès sur un poste du domaine.

#### Trouver le nom du domaine

```powershell
systeminfo | findstr Domain
```

#### Lister les utilisateurs du domaine

```powershell
Get-ADUser  -Filter *
```

Vous pouvez aussi ajouter un filtre pour lister tous les éléments d'un OU spécifique (ici **Users**) :

```powershell
Get-ADUser -Filter * -SearchBase "CN=Users,DC=<DC_DN>,DC=<DC_TLD>"
```

On peut aussi récupérer les utilisateurs à privilèges élevés :

```powershell
Get-ADUser -Filter * | select SamAccountName
```

#### Lister les logiciels anti-virus

```powershell
wmic /namespace:\\root\securitycenter2 path antivirusproduct
```

#### Afficher l'état de Windows Defender

```powershell
Get-Service WinDefend
```

Et pour afficher l'état des différents services de Windows Defender :

```powershell
Get-MpComputerStatus
```

#### Afficher l'état du pare-feu

```powershell
Get-NetFirewallProfile | Format-Table Name, Enabled
```

#### Afficher les règles du pare-feu

```powershell
Get-NetFirewallRule | select DisplayName, Enabled, Description
```

#### Désactiver le pare-feu

```powershell
Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled False
```

<p class="callout warning">Nécessite les droits administrateurs !  
</p>

#### Tester l'état d'un port

Dans un premier shell, se mettre en écoute :

```powershell
Test-NetConnection -ComputerName <IP> -Port <PORT>
```

Puis initiez une connexion :

```powershell
(New-Object System.Net.Sockets.TcpClient("<IP>", "<PORT>")).Connected
```

#### Afficher les sources de logs

```powershell
Get-EventLog -List
```

#### Afficher le processus Sysmon

S'il existe il sera affiché :

```powershell
Get-Process | Where-Object { $_.ProcessName -eq "Sysmon" }
```

#### Lister les applications installées

```powershell
wmic product get name,version
```

#### Afficher les dossiers et fichiers cachés

```powershell
Get-ChildItem -Hidden -Path <DIR_PATH>
```

#### Afficher les services en cours d'exécution

```powershell
net start
```

#### Afficher les informations d'un service

```powershell
wmic service where "name like '<SERVICE>'" get Name,PathName
```

#### Afficher les informations sur un processus

```powershell
Get-Process -Name <PROCESS>
```

#### Afficher les connexions en lien avec un processus

```powershell
netstat -noa |findstr "LISTENING" |findstr "<PID>"
```

#### Afficher la politique de mot de passe du domaine

```powershell
net accounts /domain
```

#### Afficher les informations d'un utilisateur du domaine

```powershell
Get-ADUser -Identity <USER> -Server <DC_FQDN> -Properties *
```

#### Afficher les informations d'un groupe du domaine

```powershell
Get-ADGroup -Identity <GROUP> -Server <FQDN_DC>
```

#### Afficher les membres d'un groupe du domaine

```powershell
Get-ADGroupMember -Identity <GROUP> -Server <FQDN_DC>
```

#### Afficher des informations génériques sur le domaine

```powershell
Get-ADDomain -Server <FQDN_DC>
```

#### Afficher les relations de confiance

```powershell
nltest /domain_trusts
```

## Bloodhound

#### Sharphound

Cet outil du framework va se charger de l'énumération du domaine.

Voici le lien du repos :

- [https://github.com/BloodHoundAD/SharpHound](https://github.com/BloodHoundAD/SharpHound)

Il doit être lancé depuis un compte utilisateur du domaine.

Cependant, il est détecté par les antivirus et EDR, c'est pourquoi il est recommandé d'utiliser notre propre machine Windows et lancer Sharphound dessus avec les droits de l'utilisateur grâce à **runas**.

Cet outil prend soit la forme d'un exécutable, soit d'un script Powershell et peut être lancé de la manière suivante :

```powershell
SharpHound.exe --CollectionMethods All --Domain <FQDN_DC> --ExcludeDCs
```

Normalement, une archive zip a été générée.

Nous pourrons la récupérer sur notre machine pour l'utiliser avec Bloodhound.

#### Bloodhound-python

Si vous n'avez pas de shell sur une machine du domaine, vous pouvez utiliser bloodhound-python ou rusthound pour remplacer le rôle de sharphound :

```bash
bloodhound-python -c DcOnly -u <USER> -p <PASSWORD> -d <DOMAIN_FQDN> -dc <DC_FQDN> -ns <DC_IP> --zip
```

#### Bloodhound GUI

Lancez la console neo4j (nécessaire au fonctionnement de l'outil) :

```bash
neo4j console
```

<p class="callout info">Selon les distributions, vous devrez mettre ou non le mot **start** à la fin de la commande.</p>

Puis dans un autre terminal, lancez bloodhound :

```bash
bloodhound --no-sandbox
```

<p class="callout info">Les identifiants par défaut sont **neo4j:neo4j**.   
</p>

# [Énumération] Enum4linux

## Introduction

L'outil **enum4linux** permet de collecter des informations sur un <span style="text-decoration: underline;">hôte windows</span> ou un <span style="text-decoration: underline;">contrôleur de domaine</span>.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/kWIimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/kWIimage.png)

## Manuel

#### Syntaxe globale

```bash
enum4linux [OPTIONS] <TARGET_IP>
```

#### Énumérer les utilisateurs

```bash
enum4linux -U <TARGET_IP>
```

#### Énumérer les groupes

```bash
enum4linux -G <TARGET_IP>
```

#### Lister les informations sur les groupes

```bash
enum4linux -M <TARGET_IP>
```

#### Énumérer les partages samba

```bash
enum4linux -S <TARGET_IP>
```

#### Lister les mots de passe

```bash
enum4linux -P <TARGET_IP>
```

# [Énumération] Windows

## Introduction

Cette page décrit les procédés pour énumérer un système Windows lorsque vous y avez accès.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/scaled-1680-/Gqfimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/Gqfimage.png)

## Manuel

#### Afficher les informations systèmes

```powershell
systeminfo
```

#### Afficher les mises à jour installées

```powershell
wmic qfe get Caption,Description
```

#### Afficher les services installés et démarrés

```powershell
net start
```

#### Afficher les applications installées

```powershell
wmic product get name,version,vendor
```

#### Afficher les privilèges de l'utilisateur actif

```powershell
whoami /priv
```

#### Afficher les groupes de l'utilisateur actif

```powershell
whoami /groups
```

#### Afficher les utilisateurs du système

```powershell
net user
```

#### Afficher le SID des utilisateurs du système

```powershell
wmic useraccount get name,sid
```

<p class="callout info">À noter que le dernier octet du SID représente le **RID** de l'utilisateur.</p>

#### Afficher les groupes du système

```powershell
net localgroup
```

#### Afficher les membre d'un groupe

```powershell
net localgroup <GROUP>
```

#### Afficher les configurations locales

```powershell
net accounts
```

#### Lister les tâches planifiées

```powershell
schtasks
```

Et pour afficher le détail d'une tâche planifiée :

```powershell
schtasks /query /tn <TASK_NAME> /fo list /v
```

# [Reconnaissance] NBTscan

## Introduction

L'outil **nbtscan** permet de scanner les hôtes windows présents sur un sous-réseau.

Ses utilisations sont variées et permettent de récupérer différentes informations utiles lors d'un pentest.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/U6eimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/U6eimage.png)

## Codes NetBios

<table border="1" id="bkmrk-codes-descriptions-0" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td class="align-center">**Codes**  
</td><td class="align-center">**Descriptions**  
</td></tr><tr><td class="align-center">00  
</td><td class="align-center">Workstation service  
</td></tr><tr><td class="align-center">03  
</td><td class="align-center">Messenger service  
</td></tr><tr><td class="align-center">20  
</td><td class="align-center">File Server service  
</td></tr><tr><td class="align-center">1B  
</td><td class="align-center">Domain Master Brower (contrôleur de domaine)</td></tr><tr><td class="align-center">1C  
</td><td class="align-center">Contrôleur de domaine  
</td></tr><tr><td class="align-center">2B  
</td><td class="align-center">Services d'annuaire  
</td></tr></tbody></table>

## Manuel

#### Syntaxe globale

```bash
nbtscan <SUBNET_ID/CIDR_MASK>
```

<span style="text-decoration: underline;">Exemple :</span>

```bash
nbtscan 192.168.1.0/24
```

#### Options

<table border="1" id="bkmrk-options-descriptions" style="border-collapse: collapse; width: 100%; height: 178.8px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">**Options**  
</td><td class="align-center" style="height: 29.8px;">**Descriptions**  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-v  
</td><td class="align-center" style="height: 29.8px;">Mode verbeux.</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-e  
</td><td class="align-center" style="height: 29.8px;">Affiche des informations d'extension (utilisateurs actifs etc).  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-m  
</td><td class="align-center" style="height: 29.8px;">Affiche les informations MAC des machines.  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-r &lt;RANGE&gt;  
</td><td class="align-center" style="height: 29.8px;">Scanner une plage d'IP spécifique.  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-f &lt;FILE&gt;  
</td><td class="align-center" style="height: 29.8px;">Scanner les adresses IP du fichier spécifié.</td></tr><tr><td class="align-center">-t &lt;DELAY&gt;  
</td><td class="align-center">Définit un délai d'attente personnalisé.  
</td></tr><tr><td class="align-center">-h  
</td><td class="align-center">Affiche la page d'aide  
</td></tr></tbody></table>

# [Énumération] RpcClient

## Introduction

**RpcClient** est un outil en ligne de commande permettant d'interagir avec les services **RPC** (*Remote Procedure Call*) dans les systèmes basés sur Windows ou Samba.

## Manuel

#### Syntaxe globale

```bash
rpcclient [OPTIONS] -U <USERNAME>%<PASSWORD> //<IP|HOSTNAME>
```

#### Exemples d'utilisation

- Connexion à un serveur :

```bash
rpcclient -U user%password //192.168.1.1
```

- Lister les partages accessibles :

```bash
rpcclient -U user%password -c "enumprinters" //192.168.1.1
```

- Exécuter des commandes spécifiques :

```bash
rpcclient -U user%password -c "querydispinfo" //192.168.1.1
```

Connexion anonyme :

```bash
rpcclient -N //192.168.1.1
```

## Options courantes

<table border="1" id="bkmrk-options-descriptions" style="border-collapse: collapse; width: 100%; height: 195.6px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">**Options**  
</td><td class="align-center" style="height: 29.8px;">**Descriptions**  
</td></tr><tr style="height: 46.6px;"><td class="align-center" style="height: 46.6px;">-U  
</td><td class="align-center" style="height: 46.6px;">Spécifie le nom d'utilisateur et le mot de passe pour l'authentification.</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-c  
</td><td class="align-center" style="height: 29.8px;">Exécute une commande spécifique après la connexion.</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-N  
</td><td class="align-center" style="height: 29.8px;">Spécifie un nom d'utilisateur mais n'effectue pas d'authentification (utilisé pour les connexions anonymes).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-W  
</td><td class="align-center" style="height: 29.8px;">Spécifie le domaine Windows à utiliser.</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-I  
</td><td class="align-center" style="height: 29.8px;">Spécifie l'adresse IP du serveur DNS.</td></tr></tbody></table>

# [Énumération] Samba

## Introduction

L'énumération des partages samba est cruciale pour les tests d'intrusions d'envrionnement Windows.

## Script nmap

#### Énumération globale de l'OS utilisé

```bash
nmap --script smb-os-discovery <IP>
```

#### Énumération des utilisateurs samba

```bash
nmap --script smb-enum-users <IP>
```

<p class="callout warning">Cette technique ne marche que si la session "**null**" est activée sur le poste cible (rare).</p>

## Smbmap

#### Utilisation avec un compte

Si vous possédez un compte pour faire l'énumération :

```bash
smbmap -u <USER> -p <PASSWORD> -H <IP>
```

<p class="callout success">Vous aurez un aperçu des droits de lecture et d'écriture que vous avez sur les partages.   
</p>

#### Utilisation de la session null

```bash
smbmap -u '' -p '' -H <IP>
```

#### Options

<table border="1" id="bkmrk-options-descriptions" style="border-collapse: collapse; width: 100%; height: 71.4px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 24.8px;"><td class="align-center" style="height: 24.8px;">**Options**  
</td><td class="align-center" style="height: 24.8px;">**Descriptions**  
</td></tr><tr style="height: 46.6px;"><td class="align-center" style="height: 46.6px;">-R  
</td><td class="align-center" style="height: 46.6px;">Active la récursivité pour afficher le contenu des dossiers (si vous possédez les droits de lecture).</td></tr></tbody></table>

## ShareEnum

#### Installation

Vous pouvez récupérer la dernière release sur le [github](https://github.com/CroweCybersecurity/shareenum) et lancer l'installation du paquet sur votre système :

```bash
dpkg -i <PACKAGE>.deb
```

#### Utilisation standard

```bash
shareenum <IP>
```

<p class="callout info">Si vous ne spécifiez pas d'utilisateur, la session **null** sera utilisée.</p>

#### Options

<table border="1" id="bkmrk-options-descriptions-1" style="border-collapse: collapse; width: 100%; height: 71.4px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 24.8px;"><td class="align-center" style="height: 24.8px;">**Options**  
</td><td class="align-center" style="height: 24.8px;">**Descriptions**  
</td></tr><tr style="height: 46.6px;"><td class="align-center" style="height: 46.6px;">-o &lt;FILE&gt;  
</td><td class="align-center" style="height: 46.6px;">Spécifie un fichier de sortie de la commande.   
</td></tr><tr><td class="align-center">-u &lt;USER&gt;  
</td><td class="align-center">Spécifie un nom d'utilisateur.  
</td></tr><tr><td class="align-center">-p &lt;PASSWORD&gt;  
</td><td class="align-center">Spécifie un mot de passe.  
</td></tr></tbody></table>

## SMBClient

On peut énumérer tous les fichiers d'un partage avec **smbclient** :

```bash
smbclient -N //<IP>/<SHARE>
```

# [Énumération] LDAP

## Introduction

**LDAP** pour Lightweight Directory Access Protocol, est un protocole d'annuire utilisé par des outils libres tels que **OpenLDAP**, mais aussi des solutions propriétaires comme **Active Directory**.

Quand il est utilisé au sein d'une organisation, il est une source d'information gigantesque pour un pirate qui arriverait à énumérer l'annuaire.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/piPimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/piPimage.png)

## Nmap

Un script est présent au sein de l'outil pour scanner les annuaires LDAP.

Pour cela, exécutez la commande suivante :

```bash
nmap -p 389 --script=ldap-search <IP>
```

# Web

# [Énumération/Web] Cheat-sheet

## Introduction

Des outils permettent l'énumération de serveur web comme **Gobuster**, **Dirbuster**, **Nikto** ou **WFuzz**.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/FLtimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/FLtimage.png)

## Gobuster

#### Files and directories

Voici comment utiliser gobuster pour trouver les **fichiers** et **répertoires** sur un serveur web :

```bash
gobuster dir -w <WORDLIST_PATH> -u <URL>
```

#### Subdomains

Voici comment utiliser gobuster pour trouver les **sous-domaines** sur un serveur web :

```bash
gobuster dns -w <WORDLIST_PATH> -u <URL>
```

#### Fuzzing

Voici comment utiliser gobuster pour tester des **paramètres** sur un serveur web :

```bash
gobuster dns -w <WORDLIST_PATH> -u <URL/<PAGE>.php?PARAMETER=FUZZ>
```

## Feroxbuster

- [https://github.com/epi052/feroxbuster](https://github.com/epi052/feroxbuster)

![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-06/scaled-1680-/JPhimage.png)

L'outil se veut être un clone de gobuster en allant plus vite et avec une interface plus agréable.

#### Directories

```bash
feroxbuster -w <WORDLIST> --url <URL>
```

#### Files

```bash
feroxbuster -w <WORDLIST> --url <URL> -x <EXT1> [EXT2]
```

<p class="callout info">Par exemple vous pouvez utiliser les options suivantes : **-x html php js txt** .</p>

<p class="callout warning">La wordlist sélectionnée doit correspondre à ce que vous cherchez (fichiers/dossiers).</p>

## WFuzz

Voici comment faire du fuzzing :

```bash
wfuzz -c -z file,<WORDLIST> --hc 404 <URL>
```

# [Énumération/Web] LFI - RFI

## Introduction

Les vulnérabilités **LFI** pour *Local File Inclusion* et **RFI** pour *Remote File Inclusion* sont très dangereuses puisqu'elles peuvent aboutir à des <span style="text-decoration: underline;">RCE</span> dans certains cas ou l'affichage de fichiers systèmes comme <span style="text-decoration: underline;">/etc/shadow</span> et <span style="text-decoration: underline;">/etc/passwd</span> .

Ces failles reposent sur la possibilité pour l'utilisateur d'un site web de pouvoir appeler un fichier dont il ne doit pas avoir accès initialement.

Là où la LFI se contente de pouvoir appeler des fichiers locaux au serveur web, la RFI permet d'ouvrir un fichier distant.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/S8Gimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/S8Gimage.png)

## LFI Finder Tool

Un outil très pratique qui permet d'énumérer les LFI disponibles d'une application web :

[https://github.com/capture0x/LFI-FINDER](https://github.com/capture0x/LFI-FINDER)

# Réseau

# [Énumération/Réseau] Nmap

## Introduction

**Nmap** est certainement le plus grand outil d'énumération réseau au monde.

Il permet de découvrir un réseau ou de scanner des ports et même de chercher des vulnérabilités.

Il est incontournable pour les professionnels de la cybersécurité.

## ![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/4nYimage.png)Manuel

#### Syntaxe globale

```bash
nmap [OPTIONS] <IP>
```

#### Découverte du réseau

```bash
nmap -sn <IP>/<MASK>
```

#### Scan d'un port

```bash
nmap -p <PORT> <IP>
```

#### Scan d'une plage de ports

```bash
nmap -p <FIRST_PORT>-<LAST_PORT> <IP>
```

#### Scan des 1000 ports les plus populaires 

```bash
nmap -F <IP>
```

#### Scan avancé

```bash
nmap -A <IP>
```

<p class="callout info">L'option -A regroupe les options -O, -sV et exécute certains scripts NSE pour chercher des services et des vulnérabilités.</p>

#### Scan UDP

```bash
nmap -sU <IP>
```

<p class="callout info">Vous pouvez aussi utiliser l'option -p pour ne scanner qu'un ou une plage de ports. </p>

#### Scan rapide

```bash
nmap -T4 <IP>
```

#### Scan discret

```bash
nmap -T1 <IP>
```

<p class="callout warning">Le scan sera beaucoup plus lent qu'un scan habituel.</p>

#### Autres options

<table border="1" id="bkmrk-options-fonctions--v" style="border-collapse: collapse; width: 100%; height: 208.578px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">**Options**</td><td class="align-center" style="height: 29.7969px;">**Fonctions**</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">-v</td><td class="align-center" style="height: 29.7969px;">Mode verbeux</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">-n</td><td class="align-center" style="height: 29.7969px;">Désactive la résolution DNS</td></tr><tr><td class="align-center">-g &lt;SRC\_PORT&gt;  
</td><td class="align-center">Permet de spécifier un port source de la connexion  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">-oN &lt;OUTPUT\_FILE&gt;</td><td class="align-center" style="height: 29.7969px;">Sauvegarde la sortie dans un fichier</td></tr><tr><td class="align-center">-oX &lt;OUTPUT\_FILE&gt;  
</td><td class="align-center">Sauvegarde la sortie dans un fichier au format XML  
</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">--exclude &lt;FILE&gt;</td><td class="align-center" style="height: 29.7969px;">Exclue les IP contenues dans le fichier lors du scan</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">--stats-every &lt;TIME&gt;</td><td class="align-center" style="height: 29.7969px;">Affiche les statistiques du scan en temps réel</td></tr><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">--script &lt;DEFAULT|SCRIPT&gt;</td><td class="align-center" style="height: 29.7969px;">Exécute le script spécifié ou tous les scripts si default est indiqué</td></tr></tbody></table>

#### Scripts

L'ensemble des scripts fournis par nmap sont disponibles dans le dossier **/usr/share/nmap/scripts** .

#### Projet dashboard grafana

Voici un projet que je trouve intéressant pour intégrer des graphiques de vos scans nmap dans vos rapports de pentest :

- [https://github.com/hackertarget/nmap-did-what](https://github.com/hackertarget/nmap-did-what)

Tout d'abord clonez le dépôt :

```bash
git clone https://github.com/hackertarget/nmap-did-what
```

Ensuite lancez votre scan nmap avec un fichier d'export au format XML avec l'option **-oX** :

```bash
nmap -sC -sV -Pn -n <IP> -oX scan.xml
```

Injectez les données récupérées dans la base de données du projet :

```bash
cd nmap-did-what && cp scan.xml /data/ && python3 nmap-to-sqlite.py scan.xml && cd ..
```

Lancez la stack docker :

```bash
cd grafana-docker/ && docker compose up -d && cd ..
```

Rendez-vous sur l'interface Grafana :

- [https://localhost:3000](https://localhost:3000)

Depuis le menu **Dashboard**, retrouvez ces graphiques préconfigurés :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-10/scaled-1680-/PrSimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-10/PrSimage.png)

# [Énumération/Réseau] SNMP

## Introduction

Le protocole **SNMP** pour *Simple Network Management Protocol* permet de gérer les ressources sur un réseau.

Il existe des <span style="text-decoration: underline;">agents</span> SNMP (installés sur les hôtes réseaux) et des <span style="text-decoration: underline;">managers</span> SNMP qui sont capables de récupérer des informations identifiées par un OID, sur les agents.

Par défaut, il utilise le port **161**.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/DwEimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/DwEimage.png)

## Composition de l'OID

Pour identifier les objets, on utilise ce qu'on appelle un **OID** qui est formé selon l'arbre ci-dessus.

Par exemple, pour obtenir l'OID de l'ip, on parcours l'arbre du haut vers le bas en mettant un point entre chaque numéro, ce qui donnerait : **1.3.6.1.1.1.4** .

## Les versions de SNMP

#### Communautés SNMP

Le terme de "communauté" fait référence à la méthode d'authentification utilisé dans les SNMPv1 et SNMPv2c.

Il existe deux types de communauté :

- **Communauté "publique" (public) :** Offre un accès en lecture seule aux informations de l'agent.
- **Communauté "privée" (private) :** Permet un accès en lecture et en écriture, permettant de modifier la configuration de l'agent.

#### SNMPv3

Contrairement aux anciennes versions du protocole, SNMPv3 introduit un modèle de sécurité plus avancé, offrant des fonctionnalités telles que l'authentification, la confidentialité et le contrôle d'accès de manière plus robuste. Il n'utilise pas de communautés, mais des mécanismes d'authentification et de chiffrement plus sophistiqués pour assurer la sécurité des données échangées entre le gestionnaire et les agents.

## SNMPget

#### Syntaxe globale

```bash
snmpget [OPTIONS] <TARGET_IP> <OID>
```

#### Exemples d'utilisation

- Interroger un agent pour obtenir une information spécifique :

```bash
snmpget -v2c -c community 192.168.1.1 1.3.6.1.2.1.1.1.0
```

- Utiliser SNMP v3 avec des informations d'identification :

```bash
snmpget -v3 -u username -l authPriv -a MD5 -A authpass -x DES -X privpass 192.168.1.1 1.3.6.1.2.1.1.1.0
```

- Récupérer des informations à partir d'une cible nommée plutôt que son IP :

```bash
snmpget -v2c -c public -n mytarget 1.3.6.1.2.1.1.1.0
```

#### Options courantes

<table border="1" id="bkmrk-options-descriptions" style="border-collapse: collapse; width: 100%; height: 314.8px;"><colgroup><col style="width: 50.0618%;"></col><col style="width: 50.0618%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">**Options**  
</td><td class="align-center" style="height: 29.8px;">**Descriptions**  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-v\[X\]  
</td><td class="align-center" style="height: 29.8px;">Spécifie la version SNMP (X peut être 1, 2c ou 3).</td></tr><tr style="height: 46.6px;"><td class="align-center" style="height: 46.6px;">-c  
</td><td class="align-center" style="height: 46.6px;">Spécifie la communauté SNMP (uniquement pour SNMP v1 et v2c).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-u  
</td><td class="align-center" style="height: 29.8px;">Spécifie l'identifiant d'utilisateur (uniquement pour SNMP v3).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-I  
</td><td class="align-center" style="height: 29.8px;">Spécifie le niveau de sécurité (SNMP v3).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-a  
</td><td class="align-center" style="height: 29.8px;">Spécifie l'algorithme d'authentification (SNMP v3)</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-x  
</td><td class="align-center" style="height: 29.8px;">Spécifie l'algorithme de chiffrement (SNMP v3).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-A  
</td><td class="align-center" style="height: 29.8px;">Spécifie le mot de passe d'authentification (SNMP v3).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-X  
</td><td class="align-center" style="height: 29.8px;">Spécifie le mot de passe de chiffrement (SNMP v3).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-n  
</td><td class="align-center" style="height: 29.8px;">Nomme la cible en utilisant un nom au lieu d'une adresse IP.</td></tr></tbody></table>

# [Énumération/Réseau] DNS

## Introduction

Il existe plusieurs outils qui permettent d'énumérer un serveur DNS car ce dernier est souvent le point d'entrée des attaquants et regorge d'informations utiles sur les sous-domaines, les serveurs de messageries ou les adresses IP utilisés par la cible.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/9Ljimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/9Ljimage.png)

## Dig

Certainement l'outil le plus connu pour énumérer les serveurs DNS, il est très puissant et possède de nombreuses options.

#### Utilisation standard

```bash
dig <FQDN>
```

#### Énumération des serveurs de messagerie

```bash
dig <FQDN> -t mx +short
```

## Host

Cette commande va énumérer tous les serveurs se trouvant derrière le nom de domaine indiqué :

```bash
host <FQDN>
```

## DNSenum

#### Installation

```bash
sudo apt install -y dnsenum
```

#### Manuel

```bash
dnsenum <FQDN>
```

<p class="callout info">Vous pouvez utiliser l'option **--noreverse** pour ne pas lancer la procédure de reverse lookup sur les IP trouvées.</p>

# [Énumération/Réseau] Zmap

## Introduction

**Zmap** est un outil qui permet de scanner très rapidement toute ou une partie de plage IPv4 d'Internet pour savoir lesquelles ont un ou plusieurs ports ouverts.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/MYEimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/MYEimage.png)

## Installation

```bash
sudo apt update && sudo apt install -y zmap
```

## Manuel

#### Syntaxe globale

```bash
sudo zmap -p <PORT> -o <FILE> <TARGET_IP>
```

#### Exemples d'utilisation

- Scanner tout internet sur le port 80 :

```bash
sudo zmap -p 80 -o scan_port_80_results.txt 0.0.0.0/0
```

- Balayer une plage d'IP sur plusieurs ports :

```bash
sudo zmap -p 22,80,443 -o scan_result.json 192.168.1.0/24
```

- Limiter l'utilisation de la bande passante :

```bash
sudo zmap -p 3389 -o rdp_results.csv -B 5M 10.0.0.0/16
```

#### Options courantes

<table border="1" id="bkmrk-options-descriptions" style="border-collapse: collapse; width: 100%; height: 225.4px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">**Options**  
</td><td class="align-center" style="height: 29.8px;">**Descriptions**  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-p &lt;PORT&gt;  
</td><td class="align-center" style="height: 29.8px;">Spécifie le numéro de port à balayer.</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-o &lt;FILE&gt;  
</td><td class="align-center" style="height: 29.8px;">Spécifie le fichier de sortie pour enregistrer les résultats.</td></tr><tr style="height: 46.6px;"><td class="align-center" style="height: 46.6px;">-B &lt;BYTES&gt;  
</td><td class="align-center" style="height: 46.6px;">Limite la bande passante utilisée (par exemple, "-B 10M" pour limiter à 10 Mbps).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-f &lt;FORMAT&gt;  
</td><td class="align-center" style="height: 29.8px;">Spécifie le format de sortie (par exemple, **json** ou **csv**).</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-q  
</td><td class="align-center" style="height: 29.8px;">Mode silencieux (supprime les avertissements)  
</td></tr><tr style="height: 29.8px;"><td class="align-center" style="height: 29.8px;">-N  
</td><td class="align-center" style="height: 29.8px;">Définit le nombre de threads à utiliser pour le balayage.</td></tr></tbody></table>

# Linux

# [Énumération/Linux] Cheat-sheet

## Introduction

Cette page va décrire différents procédés pour énumérer un système **Linux** qui pourraient vous servir.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/scaled-1680-/dxgimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/dxgimage.png)

## Manuel

#### Afficher la version de l'OS

```bash
ls /etc/*-release
```

Par exemple sur **CentOS** :

```bash
cat /etc/os-release 
```

#### Afficher les utilisateurs / groupes / mots de passe

```bash
cat /etc/passwd
```

```bash
cat /etc/groups
```

```bash
cat /etc/shadow
```

<p class="callout warning">Le fichier **shadow** est protégé en lecture par défaut et n'est pas accessible !</p>

#### Afficher les mails

```bash
ls -lh /var/mail/
```

#### Afficher la liste des paquets

Sur les systèmes basés sur **Debian** :

```bash
dpkg -l
```

Et pour les systèmes basés sur **RedHat** :

```bash
rpm -qa
```

#### Afficher les utilisateurs connectés

```bash
who
```

#### Afficher la commande en cours d'exécution des utilisateurs connectés

```bash
w
```

#### Afficher les dernières connexions d'utilisateurs

```
last
```

#### Afficher les connexions actives

```bash
lsof -i [:PORT]
```

#### Afficher l'arborescence des processus

```bash
ps axjf
```

# [Énumération/Linux] Git-dumper

## Introduction

Parfois, le site web que vous attaquez peut contenir un dépôt **Git**.

Dans ce cas, il peut être intéressant le récupérer pour accéder au code source voire aux fichiers de configurations qui pourraient contenir des mots de passe ou autre.

## Git-dumper

Vous pouvez trouver le github de l'outil à cette adresse :

- [https://github.com/arthaud/git-dumper](https://github.com/arthaud/git-dumper)

#### Manuel

```bash
git-dumper <URL>/.git <OUTPUT_FOLDER>
```