
Firecat is a penetration testing tool that allows you to punch reverse TCP tunnels out of a compromised network.
Pour plus d'informations, voir :
http://www.bishopfox.com/resources/tools/other-free-tools/firecat/
Firecat est un outil de test de pénétration qui vous permet d'ouvrir des tunnels TCP inversés à travers un réseau compromis. Une fois le tunnel établi, vous pouvez vous connecter depuis un hôte externe à n'importe quel port de n'importe quel système du réseau compromis, même si ce réseau se trouve derrière une passerelle NAT et/ou un pare-feu strict. Cela peut être utile à de nombreuses fins, notamment pour obtenir un accès Bureau à distance à l'adresse IP NATée du réseau interne (par exemple 192.168.1.10) d'un serveur web compromis.
Firecat est écrit en C et a été testé sur Linux, Solaris, iOS, Mac OS X et Windows XP/Vista/2k/2k3/2k8.
Pour compiler sous Windows avec MinGW :
gcc –o firecat.exe firecat.c –lwsock32
Pour compiler sous Unix :
gcc –o firecat firecat.c
Faites un retour en arrière d'une dizaine d'années et vous vous souviendrez qu'il était courant de trouver des hôtes qui n'étaient pas correctement protégés par un pare-feu (ou pas du tout) vis-à-vis d'Internet. Vous pouviez compromettre un hôte, lier un shellcode à un port, puis utiliser netcat ou un autre outil pour prendre le contrôle interactif en ligne de commande de la cible.
De nos jours, les choses sont différentes. Il arrive souvent que les paquets TCP/IP destinés à un hôte soient strictement filtrés par les règles de pare-feu entrantes. La situation est souvent encore compliquée par le fait que l'hôte cible se trouve derrière une passerelle NAT :
Des règles de pare-feu strictes réduisent la surface d'attaque de l'environnement cible, mais des attaques telles que l'injection SQL permettent toujours d'exécuter du code arbitraire sur les serveurs les plus strictement protégés par pare-feu. Cependant, à moins que le consultant ne puisse également prendre le contrôle du pare-feu et modifier les règles, il est impossible de se connecter directement aux services du réseau interne autres que ceux autorisés par le pare-feu.
C'est là que Firecat entre en jeu. En supposant que vous puissiez exécuter des commandes sur un hôte situé dans une DMZ et qu'en outre cet hôte puisse initier des connexions TCP/IP sortantes vers l'ordinateur du consultant, Firecat permet au consultant de se connecter à n'importe quel port de l'hôte cible, et souvent à n'importe quel port de n'importe quel hôte de la DMZ. Pour ce faire, il crée un tunnel TCP inversé à travers le pare-feu et utilise ce tunnel pour acheminer des connexions TCP arbitraires entre le consultant et les hôtes de l'environnement cible. En plus de créer des tunnels TCP/IP arbitraires vers les réseaux de la DMZ, il peut également être utilisé pour faire émerger des shells de rappel (connect-back) depuis des hôtes DMZ compromis tels que des serveurs web ou SQL.
Cela fonctionne parce que le système cible est celui qui initie la connexion TCP vers le consultant, et non l'inverse. Firecat s'exécute en mode « target » sur la cible et en mode « consultant » sur le système du consultant, créant ainsi un tunnel entre les deux points de terminaison. Une fois le tunnel établi, le consultant se connecte à son démon Firecat local, qui ordonne au démon Firecat distant d'initier une connexion vers l'hôte/le port souhaité derrière le pare-feu. Les deux démons Firecat acheminent ensuite les données entre le consultant et la cible, créant ainsi un pont transparent et sans interruption entre les deux systèmes, contournant complètement les règles du pare-feu. Firecat fonctionne même sur les hôtes situés derrière des pare-feu NAT.
Décomposé en étapes logiques, et en utilisant les adresses IP des schémas, le processus fonctionne comme suit :