Firewalk

Firewalkの使い方。

Firewalkは、主に対象となるネットワークに対する予備調査に使われます。

ターゲット手前のゲートウェイが、どのレイヤー4プロトコルを通すのか調査できます。


実際の動作は二段階に分かれます。

Ramping Phase

  • tracerouteと同じような動作をすることにより、ターゲットまでのホップ数を数える。

Scanning Phase

  • Ramping Phaseで入手したホップ数を利用して、TTLを設定したTCP/UDPパケットを送信。ターゲットからのICMP_TIME_EXCEEDEDメッセージを分析し、ターゲットのゲートウェイがどのようなフィルタリングを設定しているのか推測する。


オプション

Firewalk 5.0 [gateway ACL scanner]
Usage : firewalk [options] target_gateway metric
[-d 0 - 65535] destination port to use (ramping phase)
[-h] program help
[-i device] interface
[-n] do not resolve IP addresses into hostnames
[-p TCP | UDP] firewalk protocol
[-r] strict RFC adherence
[-S x - y, z] port range to scan
[-s 0 - 65535] source port
[-T 1 - 1000] packet read timeout in ms
[-t 1 - 25] IP time to live
[-v] program version
[-x 1 - 8] expire vector

実際に使ってみたいのですが、ちょっとテスト環境がないのでサンプル的な結果を表示します。
対象ポートを53と80に設定して、TCPパケットを指定しています。

bt ~ # firewalk -n -S53,80 -pTCP Gateway_IP_address Target_IP_address
Firewalk 5.0 [gateway ACL scanner]
Firewalk state initialization completed successfully.
TCP-based scan.
Ramping phase source port: 53, destination port: 33434
Hotfoot through Gateway_IP_address using Target_IP_address as a metric.
Ramping Phase:
1 (TTL 1): expired [192.168.**.1]
2 (TTL 2): expired [*.*.*.*]
3 (TTL 3): expired [*.*.*.*]
4 (TTL 4): expired [*.*.*.*]
5 (TTL 5): expired [Gateway_IP_address]
Binding host reached.
Scan bound at 5 hops.
Scanning Phase:
port 53: A! open (port not listen) [Target_IP_address]
port 80: A! open (port listen) [Target_IP_address]

Scan completed successfully.

Total packets sent: 6
Total packet errors: 0
Total packets caught 6
Total packets caught of interest 6
Total ports scanned 2
Total ports open: 2
Total ports unknown: 0

ゲートウェイとターゲット用のグローバルアドレスがあって、色々設定いじれるファイアーウォールがあるとテストできそうですね。

自分の環境以外に対して使うのは絶対に避けてください。

Firewalkのサイトに資料があるので参考にどうぞ。

ちょっと古いですが、作者の書いたBuilding Open Source Network Security Tools: Components and Techniquesも参考にするといいかもしれません。