
Scripts client/serveur conçus pour tester les règles de pare-feu sortantes (egress).
Scripts client/serveur conçus pour tester les règles de pare-feu sortantes (egress).
Egresser est un outil permettant d'énumérer les règles de pare-feu sortantes, conçu pour les testeurs d'intrusion afin d'évaluer si le filtrage egress est adéquat depuis un réseau d'entreprise. En sondant chaque port TCP tour à tour, le serveur Egresser répond avec l'adresse IP source et le port du client, permettant au client de déterminer si le port sortant est autorisé ou non (à la fois en IPv4 et en IPv6) et d'évaluer si une traversée de NAT est susceptible de se produire.
Comment ça marche
Le script côté serveur fonctionne en combinaison avec Iptables - redirigeant tout le trafic TCP vers le port 8080 où se trouve le « vrai » serveur. Le script côté serveur est écrit en Perl et est un serveur pre-fork utilisant Net::Server::Prefork, écoutant à la fois sur IPv4 et IPv6 si disponible. Toute connexion TCP aboutit à une réponse simple contenant une chaîne terminée par un caractère nul, composée de l'IP et du port du client qui se connecte. N'hésitez pas à utiliser Telnet pour interagir avec le service si vous êtes dans un environnement restreint sans accès au client Egresser (notre serveur Egresser se trouve à l'adresse egresser.labs.cyberis.co.uk, que vous êtes libre d'utiliser à des fins légitimes).
Le client est également écrit en Perl et utilise le multithreading pour la vitesse. Par défaut, il scanne les ports TCP 1-1024, bien que cela soit configurable dans le script. Il est possible de forcer IPv4 avec l'argument de ligne de commande « -4 », ou IPv6 avec « -6 » ; par défaut, il choisira le protocole préféré par votre système d'exploitation. Si vous souhaitez lister explicitement tous les ports ouverts/fermés, spécifiez l'option verbose (-v), car la sortie normale est un résumé concis des seuls ports autorisés.
Pourquoi ?
Il est recommandé de restreindre les règles de pare-feu sortantes dans les environnements d'entreprise afin de garantir que les contrôles périmétriques ne soient pas facilement contournés. Par exemple, un filtrage egress inadéquat au sein d'une organisation permettrait à un utilisateur malveillant de contourner trivialement un proxy web assurant le filtrage/antivirus/journalisation en modifiant simplement les paramètres de connexion d'un navigateur. De nombreux autres exemples existent également - de nombreux vers se propagent via les protocoles SMB, les logiciels malveillants peuvent utiliser de nombreux canaux pour exfiltrer des données, et des logiciels potentiellement non autorisés (par exemple le partage de fichiers torrent/P2P) peuvent opérer librement, gaspillant les ressources de l'entreprise et augmentant considérablement la probabilité que du code malveillant soit introduit dans l'environnement.
De manière générale, il est recommandé de restreindre tous les protocoles sortants, en autorisant des exceptions pour des hôtes spécifiques au cas par cas. La navigation Web devrait être effectuée uniquement via des proxies Web dédiés, toute tentative de connexion directe étant journalisée par le pare-feu périmétrique et examinée si nécessaire. Egresser est un outil simple à utiliser qui permet à un testeur d'intrusion d'énumérer rapidement les ports autorisés dans un environnement d'entreprise.
iptables 1.4.17 ou supérieur, et un noyau 3.7+ est requis pour le support du NAT IPv6.
Les modules Perl suivants sont requis pour le client :
Thread::Queue ;
IO::Socket::IP;
Getopt::Long;
Les modules Perl suivants sont requis pour le serveur :
Net::Server::PreFork
Veuillez signaler tous les problèmes via https://github.com/cyberisltd/Egresser/issues