# 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>