Image

Base de connaissances → Émulation de ports ouverts sous Linux Debian 12 via PortSpoof

[Serveurs virtuels]
Date de publication: 17.11.2024

L'émulation de ports consiste à ouvrir un port spécifique auquel on peut se connecter, mais qui n'est pas un véritable service et ne fournit pas la fonctionnalité principale, se contentant d'imiter un service avec un message d'accueil similaire ou identique lors de la connexion.

L'émulation de ports est souvent utilisée par les grandes entreprises pour protéger l'infrastructure réseau contre la recherche de services et de vulnérabilités. En termes simples, elle trompe les scanners de ports et provoque souvent leur blocage lors des tentatives de scan.

Dans ce guide, nous installerons le service PortSpoof et configurerons l'émulation pour tous les ports, sauf ceux réellement utilisés par des services (22, 80, 443).

Lorsqu'il n'y a que trois ports ouverts et que les autres sont fermés, un scan complet des ports ne prend que quelques secondes, et n'importe qui peut identifier les services disponibles en scannant les ports à l'aide de l'adresse IP du serveur.

Cependant, si nous émulerons l'état de tous les ports, en les faisant apparaître comme ouverts sur toute la plage de 1 à 65535, le scan prendrait environ 65 535 secondes, soit environ 18 heures. Les informations obtenues n'auraient que peu de valeur, ce qui complique considérablement la recherche de vulnérabilités.

1. Installation de PortSpoof

apt install git cmake build-essential autoconf automake libtool nano
git clone https://github.com/drk1wi/portspoof.git
cd portspoof
chmod +x configure
./configure --sysconfdir=/etc/
make -j$(nproc)
make install

1.1 Création d'un fichier de journalisation

mkdir -p /var/log/portspoof
touch /var/log/portspoof/alerts.log
chmod 644 /var/log/portspoof/alerts.log

1.2 Création d'un fichier de service

nano /etc/systemd/system/portspoof.service

Avec le contenu suivant :

[Unit]
Description=Portspoof Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/portspoof \
  -c /etc/portspoof.conf \
  -p 4444 \
  -s /etc/portspoof_signatures \
  -d \
  -l /var/log/portspoof/alerts.log
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

1.3 Vérification du chemin vers le binaire PortSpoof

which portspoof

Assurez-vous qu'il correspond au chemin dans le fichier de service.

1.4 Démarrage du service

systemctl daemon-reexec
systemctl daemon-reload
systemctl enable portspoof
systemctl start portspoof

Pour vérifier l'état :

systemctl status portspoof

1.5 Test de la configuration

telnet <adresse-IP> 4444
Trying 89.xx.187.xx...
Connected to 89.xx.187.xx.
Escape character is '^]'.

Cela indique une connexion réussie. Configurez maintenant le pare-feu pour rediriger les ports restants.

2. Installation d'iptables avec des règles persistantes

apt install iptables iptables-persistent

Appuyez sur "Oui" dans la fenêtre interactive pour IPv4 et IPv6.

2.1 Configuration des règles

Nous avons créé plusieurs règles pour exclure nos services (22, 80, 443). Ajustez-les selon vos services.

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 1:21 -j REDIRECT --to-ports 4444
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 23:79 -j REDIRECT --to-ports 4444
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 81:442 -j REDIRECT --to-ports 4444
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 444:65535 -j REDIRECT --to-ports 4444

Ajoutez des règles pour autoriser nos services :

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Enregistrez les règles pour qu'elles persistent après un redémarrage du serveur :

netfilter-persistent save

Ou :

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Terminé ! Vous pouvez maintenant essayer de vous connecter à n'importe quel port de la plage et vérifier sa sortie. Nous avons utilisé un outil gratuit de scan de ports pour Windows, Advanced Port Scanner.

Comme on peut le voir, les ports répondent avec des messages d'accueil basés sur deux fichiers de configuration :

  • portspoof.conf - Liste les ports spécifiques et leurs réponses. Vous pouvez ajouter un port et une réponse, ou pour une réponse vide, spécifier le numéro de port et "".
  • portspoof_signatures - Contient les informations de signatures pour tous les ports non listés dans le fichier de configuration.

Les réponses (bannières) sont tirées de ces deux fichiers de configuration.

Après avoir modifié les fichiers, redémarrez simplement le service :

systemctl restart portspoof

Chaque port a sa propre réponse. Si le scan n'est pas arrêté à temps, le programme peut se bloquer en raison du grand nombre de ports.

Les réponses de ports spécifiques peuvent masquer le système d'exploitation, amenant les scanners à confondre le serveur avec un routeur ou même une imprimante.

3. Étapes supplémentaires

Pour désactiver les messages d'accueil des ports, remplacez le fichier de signatures par un fichier vide :

mv /etc/portspoof_signatures /etc/portspoof_signatures_orig
touch /etc/portspoof_signatures

Ajoutez une nouvelle ligne avant EOF, sinon le service ne démarrera pas :

printf "\n" > /etc/portspoof_signatures

Redémarrez le service :

systemctl restart portspoof

Maintenant, les ports non spécifiés explicitement dans portspoof.conf renverront une réponse vide. Pour que cela s'applique à tous les ports, commentez les lignes pertinentes dans portspoof.conf et redémarrez le service.

Une réponse vide pour un grand nombre de ports est une meilleure solution, car elle évite de révéler quel service a répondu.

Cependant, si votre objectif est de simuler un appareil, les réponses des ports sont importantes, mais les appliquer à tous les ports est trop évident.

Après une connexion réussie, la connexion est interrompue. Pour scanner une large plage de ports, il est préférable d'utiliser l'utilitaire nmap.

4. Scan de ports avec nmap

apt install nmap

4.1 Scan de base

nmap -p 1-65535 <adresse-IP>

4.2 Scan plus rapide

nmap -p 1-65535 -T4 <adresse-IP>

4.3 Avec affichage des informations sur les services

nmap -p 1-65535 -sV <adresse-IP>

4.4 Enregistrement des résultats dans un fichier

nmap -p 1-65535 -oN result.txt <adresse-IP>




Aucun commentaire pour l'instant