Guide technique des protocoles utilisés par NetMapper
- Vue d'ensemble
- Protocoles de découverte
- Protocoles de scan
- Protocoles applicatifs
- Ports standards
- Sécurité et bonnes pratiques
NetMapper utilise plusieurs protocoles réseau pour découvrir et identifier les appareils sur un réseau local. Chaque protocole a un rôle spécifique et fournit des informations complémentaires.
graph TB
subgraph "NetMapper - Protocoles"
L2["Couche 2 (Liaison)"] --> ARP
L3["Couche 3 (Réseau)"] --> ICMP & IP
L4["Couche 4 (Transport)"] --> TCP & UDP
L7["Couche 7 (Application)"] --> mDNS & UPnP & SNMP & HTTP & SSH
end
ARP (Address Resolution Protocol) est un protocole de couche 2 qui permet de faire correspondre une adresse IP à une adresse MAC (Media Access Control) sur un réseau local.
| Paramètre | Valeur |
|---|---|
| Couche OSI | 2 (Liaison de données) |
| Type | Broadcast / Unicast |
| Fichier système | /proc/net/arp |
NetMapper lit la table ARP du système Android pour enrichir les informations des appareils découverts :
IP address HW type Flags HW address Mask Device
192.168.1.1 0x1 0x2 aa:bb:cc:dd:ee:ff * wlan0
- Adresse MAC : Identifiant unique de l'interface réseau
- Fabricant : Déduit des 3 premiers octets (OUI - Organizationally Unique Identifier)
- Fonctionne uniquement sur le réseau local (même sous-réseau)
- La table ARP peut être incomplète si aucune communication récente n'a eu lieu
- Nécessite que l'appareil ait répondu à une requête réseau
ICMP est un protocole de couche 3 utilisé pour le diagnostic et le signalement d'erreurs réseau. La commande ping utilise ICMP Echo Request/Reply.
| Paramètre | Valeur |
|---|---|
| Couche OSI | 3 (Réseau) |
| Protocole IP | 1 |
| Types utilisés | 8 (Echo Request), 0 (Echo Reply) |
sequenceDiagram
participant S as Scanner
participant H as Hôte
S->>H: ICMP Echo Request (Type 8)
H-->>S: ICMP Echo Reply (Type 0)
- Disponibilité : L'hôte est-il joignable ?
- Latence (RTT) : Temps aller-retour en millisecondes
- TTL : Time To Live, indicateur potentiel du système d'exploitation
- Certains pare-feu bloquent ICMP
- Android utilise
InetAddress.isReachable()qui peut utiliser TCP si ICMP échoue - Pas d'information sur les services disponibles
mDNS (Multicast DNS) est un protocole de résolution de noms sans serveur DNS central. Il permet aux appareils de s'annoncer et de découvrir des services sur le réseau local. Bonjour est l'implémentation Apple de mDNS/DNS-SD.
| Paramètre | Valeur |
|---|---|
| Couche OSI | 7 (Application) |
| Transport | UDP |
| Port | 5353 |
| Adresse multicast IPv4 | 224.0.0.251 |
| Adresse multicast IPv6 | ff02::fb |
| Domaine | .local |
NetMapper envoie des requêtes DNS-SD (Service Discovery) pour découvrir les services annoncés :
sequenceDiagram
participant S as Scanner
participant R as Réseau Local
S->>R: DNS Query (PTR) to 224.0.0.251:5353
R-->>S: DNS Response (PTR, SRV, TXT)
| Service | Description | Appareils typiques |
|---|---|---|
_http._tcp |
Serveur HTTP | NAS, routeurs, imprimantes |
_https._tcp |
Serveur HTTPS sécurisé | NAS, serveurs web |
_ssh._tcp |
Accès SSH | Serveurs, Raspberry Pi |
_sftp-ssh._tcp |
Transfert SFTP | Serveurs de fichiers |
_smb._tcp |
Partage Windows/Samba | NAS, PC Windows |
_afpovertcp._tcp |
Apple Filing Protocol | Mac, Time Capsule |
_nfs._tcp |
Network File System | Serveurs Unix/Linux |
_ftp._tcp |
Transfert FTP | Serveurs FTP |
_ipp._tcp |
Internet Printing Protocol | Imprimantes réseau |
_printer._tcp |
Imprimante générique | Imprimantes |
_airplay._tcp |
Apple AirPlay | Apple TV, HomePod |
_raop._tcp |
Remote Audio Output | AirPlay audio |
_googlecast._tcp |
Google Cast | Chromecast, Android TV |
_spotify-connect._tcp |
Spotify Connect | Enceintes connectées |
_homekit._tcp |
Apple HomeKit | Domotique Apple |
_hap._tcp |
HomeKit Accessory Protocol | Accessoires HomeKit |
_workstation._tcp |
Station de travail | Ordinateurs |
_device-info._tcp |
Informations appareil | Divers |
graph TD
subgraph "Structure requête mDNS"
H[Header]
H --> TID["Transaction ID: 0x0000"]
H --> FL["Flags: Standard Query"]
H --> Q["Questions: 1"]
H --> ANS["Answer RRs: 0"]
H --> AUTH["Authority RRs: 0"]
H --> ADD["Additional RRs: 0"]
QS[Question Section]
QS --> QN["QNAME: _http._tcp.local"]
QS --> QT["QTYPE: PTR (12)"]
QS --> QC["QCLASS: IN (1)"]
end
- Services disponibles : HTTP, SSH, AirPlay, Chromecast, etc.
- Nom d'hôte : Nom convivial de l'appareil
- Port du service : Via enregistrement SRV
- Métadonnées : Via enregistrement TXT
- Découverte d'Apple TV et HomePod (AirPlay)
- Détection de Chromecast et Android TV (Google Cast)
- Identification d'imprimantes réseau (IPP)
- Localisation de NAS Synology/QNAP (SMB, AFP)
UPnP (Universal Plug and Play) est un ensemble de protocoles permettant aux appareils de se découvrir et d'interagir automatiquement. SSDP (Simple Service Discovery Protocol) est le protocole de découverte utilisé par UPnP.
| Paramètre | Valeur |
|---|---|
| Couche OSI | 7 (Application) |
| Transport | UDP (découverte), TCP (contrôle) |
| Port | 1900 |
| Adresse multicast IPv4 | 239.255.255.250 |
| Adresse multicast IPv6 | ff02::c, ff05::c |
NetMapper envoie une requête M-SEARCH pour découvrir les appareils UPnP :
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 2
ST: ssdp:all
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
ST: urn:schemas-upnp-org:device:MediaServer:1
USN: uuid:12345678-1234-1234-1234-123456789abc::...
LOCATION: http://192.168.1.100:8080/description.xml
SERVER: Linux/4.4 UPnP/1.0 MiniDLNA/1.2.1
| Type | Description | Exemples |
|---|---|---|
InternetGatewayDevice |
Routeur/Box internet | Freebox, Livebox |
MediaServer |
Serveur multimédia DLNA | NAS, Plex, Kodi |
MediaRenderer |
Lecteur multimédia | TV connectée, Sonos |
WANDevice |
Connexion WAN | Modems |
WANConnectionDevice |
Gestion connexion | NAT, Firewall |
Basic |
Appareil basique | Divers IoT |
- Type d'appareil : MediaServer, Gateway, etc.
- Fabricant et modèle : Via header SERVER
- UUID : Identifiant unique de l'appareil
- URL de description : Pour plus de détails (XML)
- Détection de box internet (Freebox, Livebox, SFR Box)
- Découverte de serveurs DLNA/UPnP (Plex, Emby, Jellyfin)
- Identification de téléviseurs connectés
- Localisation d'enceintes Sonos
SNMP (Simple Network Management Protocol) est un protocole de gestion de réseau permettant de collecter des informations sur les équipements réseau et de les administrer à distance.
| Paramètre | Valeur |
|---|---|
| Couche OSI | 7 (Application) |
| Transport | UDP |
| Port | 161 (agent), 162 (traps) |
| Versions | v1, v2c, v3 |
| Version | Authentification | Chiffrement | Usage |
|---|---|---|---|
| SNMPv1 | Community string | Non | Legacy |
| SNMPv2c | Community string | Non | Courant |
| SNMPv3 | Utilisateur/mot de passe | Oui (optionnel) | Sécurisé |
NetMapper utilise SNMPv1 avec les community strings standards :
sequenceDiagram
participant S as Scanner
participant A as Agent SNMP
S->>A: SNMP GET Request (UDP:161)
Note over S,A: Community: "public"<br/>OID: 1.3.6.1.2.1.1.1.0
A-->>S: SNMP GET Response
| OID | Nom | Description |
|---|---|---|
| 1.3.6.1.2.1.1.1.0 | sysDescr | Description du système |
| 1.3.6.1.2.1.1.5.0 | sysName | Nom du système |
| 1.3.6.1.2.1.1.3.0 | sysUpTime | Temps de fonctionnement |
| 1.3.6.1.2.1.1.4.0 | sysContact | Contact administrateur |
| 1.3.6.1.2.1.1.6.0 | sysLocation | Emplacement physique |
graph TD
subgraph "Structure paquet SNMP"
MSG["SEQUENCE (Message)"]
MSG --> VER["INTEGER: Version (0 = SNMPv1)"]
MSG --> COM["OCTET STRING: Community ('public')"]
MSG --> PDU["GetRequest-PDU (0xA0)"]
PDU --> RID["INTEGER: Request ID"]
PDU --> ERR["INTEGER: Error Status (0)"]
PDU --> IDX["INTEGER: Error Index (0)"]
PDU --> VB["SEQUENCE: Variable Bindings"]
VB --> VB1["SEQUENCE: VarBind"]
VB1 --> OID["OID: 1.3.6.1.2.1.1.5.0"]
VB1 --> NUL["NULL"]
end
| Community | Description |
|---|---|
public |
Lecture seule (standard) |
private |
Lecture/écriture (standard) |
- Nom du système : Hostname configuré
- Description : OS, version, fabricant
- Uptime : Temps depuis le dernier redémarrage
- Contact/Location : Métadonnées administratives
- Identification de routeurs et switches managés
- Collecte d'informations sur les imprimantes réseau
- Détection de NAS et serveurs
- Inventaire d'équipements réseau
- Nécessite que SNMP soit activé sur l'appareil
- Community string doit être connue (souvent "public")
- SNMPv1/v2c transmettent en clair (non sécurisé)
Le scan TCP Connect établit une connexion TCP complète (three-way handshake) pour déterminer si un port est ouvert.
| Paramètre | Valeur |
|---|---|
| Couche OSI | 4 (Transport) |
| Protocole | TCP |
| Timeout | 500ms (configurable) |
sequenceDiagram
participant S as Scanner
participant H as Hôte
rect rgb(200, 255, 200)
Note over S,H: Port ouvert
S->>H: SYN
H-->>S: SYN-ACK
S->>H: ACK
Note over S,H: Connexion établie
end
rect rgb(255, 200, 200)
Note over S,H: Port fermé
S->>H: SYN
H-->>S: RST
end
Profil Ping (0 ports)
- Utilise uniquement ICMP/ARP
- Le plus rapide
Profil Quick (6 ports)
| Port | Service | Description |
|---|---|---|
| 22 | SSH | Accès shell sécurisé |
| 80 | HTTP | Serveur web |
| 443 | HTTPS | Serveur web sécurisé |
| 445 | SMB | Partage de fichiers Windows |
| 3389 | RDP | Bureau à distance Windows |
| 8080 | HTTP-Alt | Serveur web alternatif |
Profil Full (23 ports)
| Port | Service | Description |
|---|---|---|
| 21 | FTP | Transfert de fichiers |
| 22 | SSH | Shell sécurisé |
| 23 | Telnet | Shell non sécurisé |
| 25 | SMTP | Envoi d'emails |
| 53 | DNS | Résolution de noms |
| 80 | HTTP | Web |
| 110 | POP3 | Réception d'emails |
| 139 | NetBIOS | Services Windows |
| 143 | IMAP | Emails IMAP |
| 443 | HTTPS | Web sécurisé |
| 445 | SMB | Partage Windows |
| 993 | IMAPS | IMAP sécurisé |
| 995 | POP3S | POP3 sécurisé |
| 1433 | MSSQL | SQL Server |
| 3306 | MySQL | Base de données MySQL |
| 3389 | RDP | Bureau à distance |
| 5432 | PostgreSQL | Base de données PostgreSQL |
| 5900 | VNC | Bureau à distance VNC |
| 6379 | Redis | Cache Redis |
| 8080 | HTTP-Alt | Web alternatif |
| 8443 | HTTPS-Alt | HTTPS alternatif |
| 8888 | HTTP-Proxy | Proxy HTTP |
| 27017 | MongoDB | Base de données MongoDB |
Le Banner Grabbing consiste à récupérer la bannière d'identification envoyée par un service lors de la connexion.
| Protocole | Port | Méthode |
|---|---|---|
| HTTP | 80, 8080, 8888 | Requête GET / |
| SSH | 22 | Lecture passive |
| FTP | 21 | Lecture passive |
| SMTP | 25 | Lecture passive |
HTTP:
Server: nginx/1.18.0
Server: Apache/2.4.41 (Ubuntu)
Server: Microsoft-IIS/10.0
SSH:
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
SSH-2.0-OpenSSH_7.9p1 Raspbian-10+deb10u2
FTP:
220 ProFTPD 1.3.6 Server ready.
220 vsftpd 3.0.3
SMTP:
220 mail.example.com ESMTP Postfix
- Logiciel serveur : nginx, Apache, OpenSSH, etc.
- Version : Numéro de version précis
- Système d'exploitation : Souvent inclus dans la bannière
Wake-on-LAN (WoL) permet de démarrer un ordinateur à distance en envoyant un "magic packet" sur le réseau.
| Paramètre | Valeur |
|---|---|
| Transport | UDP |
| Port | 9 (standard), 7 (alternatif) |
| Destination | Broadcast (x.x.x.255) |
graph LR
subgraph "Magic Packet (102 octets)"
SYNC["6x 0xFF<br/>(synchronisation)"]
MAC["16x MAC cible<br/>(AA:BB:CC:DD:EE:FF)"]
SYNC --> MAC
end
Taille totale: 6 + (6 x 16) = 102 octets
- L'appareil doit supporter Wake-on-LAN
- WoL doit être activé dans le BIOS/UEFI
- Le pilote réseau doit être configuré pour WoL
- L'appareil doit être connecté en Ethernet (ou WiFi avec support WoWLAN)
NetMapper extrait les informations des certificats SSL/TLS pour identifier les services HTTPS.
| Paramètre | Valeur |
|---|---|
| Ports scannés | 443, 8443 |
| Versions supportées | TLS 1.0 - 1.3 |
- Common Name (CN) : Nom de domaine du certificat
- Organisation : Entité propriétaire
- Validité : Dates de début et fin
- Émetteur : Autorité de certification
| Port | Protocole | Service | Description |
|---|---|---|---|
| 21 | TCP | FTP | File Transfer Protocol |
| 22 | TCP | SSH | Secure Shell |
| 23 | TCP | Telnet | Terminal distant (non sécurisé) |
| 25 | TCP | SMTP | Simple Mail Transfer Protocol |
| 53 | TCP/UDP | DNS | Domain Name System |
| 80 | TCP | HTTP | HyperText Transfer Protocol |
| 110 | TCP | POP3 | Post Office Protocol v3 |
| 139 | TCP | NetBIOS | Windows Network Basic I/O |
| 143 | TCP | IMAP | Internet Message Access Protocol |
| 161 | UDP | SNMP | Simple Network Management Protocol |
| 443 | TCP | HTTPS | HTTP Secure (TLS) |
| 445 | TCP | SMB | Server Message Block |
| 993 | TCP | IMAPS | IMAP over TLS |
| 995 | TCP | POP3S | POP3 over TLS |
| 1433 | TCP | MSSQL | Microsoft SQL Server |
| 1900 | UDP | SSDP | Simple Service Discovery Protocol |
| 3306 | TCP | MySQL | Base de données MySQL |
| 3389 | TCP | RDP | Remote Desktop Protocol |
| 5353 | UDP | mDNS | Multicast DNS |
| 5432 | TCP | PostgreSQL | Base de données PostgreSQL |
| 5900 | TCP | VNC | Virtual Network Computing |
| 6379 | TCP | Redis | Base de données Redis |
| 8080 | TCP | HTTP-Alt | HTTP alternatif |
| 8443 | TCP | HTTPS-Alt | HTTPS alternatif |
| 27017 | TCP | MongoDB | Base de données MongoDB |
NetMapper est un outil de diagnostic réseau. Son utilisation doit respecter ces principes :
-
Autorisation : N'utilisez NetMapper que sur des réseaux dont vous êtes propriétaire ou administrateur, ou pour lesquels vous avez une autorisation explicite.
-
Légalité : Le scan de réseaux sans autorisation peut être illégal dans votre juridiction.
-
Éthique : Ne pas utiliser les informations collectées à des fins malveillantes.
Les protocoles utilisés peuvent révéler des informations sensibles :
| Protocole | Risque | Mitigation |
|---|---|---|
| SNMP v1/v2c | Community string en clair | Utiliser SNMPv3 |
| mDNS | Exposition des services | Firewall sur port 5353 |
| UPnP | Exposition des appareils IoT | Désactiver UPnP si non nécessaire |
| Banner Grabbing | Version des logiciels | Masquer les bannières |
- Réseau local uniquement : NetMapper est conçu pour les réseaux locaux
- Pare-feu : Un pare-feu bien configuré limitera les informations exposées
- Mises à jour : Maintenez vos équipements à jour pour corriger les vulnérabilités
- Segmentation : Séparez les appareils IoT du réseau principal
- RFC 826 - ARP
- RFC 792 - ICMP
- RFC 6762 - mDNS
- RFC 6763 - DNS-SD
- UPnP Device Architecture
- RFC 1157 - SNMPv1
- RFC 3411 - SNMPv3
Documentation générée pour NetMapper v1.0