← retour aux outils back to tools

# Firewalk

Outil de reconnaissance active qui utilise le sondage basé sur le TTL pour déterminer quels protocoles et ports de couche 4 une ACL de passerelle ou un firewall laisse passer. Active reconnaissance tool that uses TTL-based probing to determine which layer-4 protocols and ports a gateway ACL or firewall will pass through.

↗ https://github.com/emonti/firewalk

## Overview

Firewalk maps firewall/ACL rulesets without needing direct visibility of the rules themselves. It works by sending packets with a TTL set to expire exactly one hop past the firewall — if the packet is allowed through, the host beyond it generates an ICMP TTL-exceeded response; if blocked, no response comes back. Iterating this across ports reveals which protocols/ports the firewall passes, useful for mapping filtering policy during network penetration tests.

## Common Usage

Basic firewalk against a target behind a known gateway

    firewalk -i eth0 -p tcp <gateway_ip> <target_ip>

Scan a specific port range

    firewalk -i eth0 -p tcp -S 20-1024 <gateway_ip> <target_ip>

UDP protocol scan

    firewalk -i eth0 -p udp <gateway_ip> <target_ip>

Manually set the initial TTL to the gateway (auto-detected by default)

    firewalk -i eth0 -T 8 -p tcp <gateway_ip> <target_ip>

## Notes

- Requires knowing (or discovering via traceroute) the IP of the gateway/firewall immediately in front of the target
- Findings indicate implied firewall rules — combine with a full port scan behind the firewall to cross-check reachable services
- Results can be noisy behind stateful firewalls, load balancers, or when ICMP is filtered outbound from the target network — verify results manually where possible

Help / Man page

    firewalk [options] <gateway_ip> <target_ip>

      -i IFACE       interface to send/receive packets on
      -p PROTO       protocol to probe: tcp | udp
      -S PORTRANGE   port range to scan (e.g. 20-1024)
      -T TTL         initial TTL (default: auto-detect hop count to gateway)
      -n             skip DNS resolution
      -v             verbose output
      -d N           inter-packet delay in seconds

## Vue d’ensemble

Firewalk cartographie des jeux de règles firewall/ACL sans avoir besoin d’une visibilité directe sur les règles elles-mêmes. Il fonctionne en envoyant des paquets avec un TTL réglé pour expirer exactement un saut après le firewall : si le paquet passe, l’hôte situé derrière génère une réponse ICMP TTL-exceeded ; s’il est bloqué, aucune réponse ne revient. En itérant ce processus sur les ports, on révèle quels protocoles/ports le firewall laisse passer, ce qui est utile pour cartographier la politique de filtrage lors de tests d’intrusion réseau.

## Utilisation courante

    # Firewalk basique contre une cible derrière une passerelle connue
    firewalk -i eth0 -p tcp <gateway_ip> <target_ip>

    # Scanner une plage de ports spécifique
    firewalk -i eth0 -p tcp -S 20-1024 <gateway_ip> <target_ip>

    # Scan de protocole UDP
    firewalk -i eth0 -p udp <gateway_ip> <target_ip>

    # Régler manuellement le TTL initial vers la passerelle (auto-détecté par défaut)
    firewalk -i eth0 -T 8 -p tcp <gateway_ip> <target_ip>

## Notes

- Nécessite de connaître (ou de découvrir via traceroute) l’IP de la passerelle/du firewall situé juste devant la cible
- Les résultats indiquent des règles firewall implicites : combiner avec un scan de ports complet derrière le firewall pour recouper les services réellement accessibles
- Les résultats peuvent être bruités derrière des firewalls avec état, des load balancers, ou lorsque l’ICMP sortant est filtré depuis le réseau cible : vérifier les résultats manuellement quand c’est possible

Aide / Page de manuel

    firewalk [options] <gateway_ip> <target_ip>

      -i IFACE       interface to send/receive packets on
      -p PROTO       protocol to probe: tcp | udp
      -S PORTRANGE   port range to scan (e.g. 20-1024)
      -T TTL         initial TTL (default: auto-detect hop count to gateway)
      -n             skip DNS resolution
      -v             verbose output
      -d N           inter-packet delay in seconds