
Firecat は、侵害されたネットワークからリバース TCP トンネルを張り出すことを可能にするペネトレーションテストツールです。
詳細については、以下を参照してください:
http://www.bishopfox.com/resources/tools/other-free-tools/firecat/
Firecat は、侵害されたネットワークからリバース TCP トンネルを外部に開通させることができるペネトレーションテストツールです。トンネルが確立されると、外部ホストから、侵害されたネットワーク内の任意のシステムの任意のポートに接続できるようになります。ネットワークが NAT ゲートウェイや厳格なファイアウォールの背後にある場合でも同様です。これは、侵害された Web サーバーの NAT 化された内部ネットワーク IP アドレス(例:192.168.1.10)へのリモートデスクトップアクセスを獲得するなど、さまざまな目的に役立ちます。
Firecat は C で書かれており、Linux、Solaris、iOS、Mac OS X、Windows XP/Vista/2k/2k3/2k8 でテストされています。
MinGW を使用して Windows でコンパイルする場合:
gcc –o firecat.exe firecat.c –lwsock32
Unix でコンパイルする場合:
gcc –o firecat firecat.c
10年ほど前に思いを馳せると、インターネットから適切に(あるいはまったく)ファイアウォールで保護されていないホストが一般的だったことを思い出すでしょう。ホストを侵害し、ポートに bind shellcode を仕込み、netcat や他のツールを使用して、ターゲットの対話型コマンドライン制御を獲得できたものです。
現在は事情が異なります。ホスト宛ての TCP/IP パケットが、イングレスファイアウォールルールによって厳格にフィルタリングされることがよくあります。さらに、ターゲットホストが NAT ゲートウェイの背後に配置されていることで、事態はさらに複雑になることが多いのです:
厳格なファイアウォールルールはターゲット環境の攻撃対象領域を減らしますが、SQL インジェクションなどの攻撃は、最も厳重にファイアウォールで保護されたサーバーであっても、任意のコードを実行することを依然として可能にします。しかし、コンサルタントがファイアウォールも制御してルールセットを変更できるのでない限り、ファイアウォールで許可されたものを除き、内部ネットワークサービスへの直接接続は不可能です。
そこで Firecat の登場です。DMZ 内のホストでコマンドを実行でき、さらにそのホストがコンサルタントのコンピュータへの外向きの TCP/IP 接続を開始できると仮定すると、Firecat はコンサルタントがターゲットホストの任意のポート、多くの場合 DMZ 内の任意のホストの任意のポートに接続することを可能にします。これは、ファイアウォールを通過するリバース TCP トンネルを作成し、そのトンネルを利用してコンサルタントとターゲット環境内のホストとの間の任意の TCP 接続を仲介することで実現されます。DMZ ネットワークへの任意の TCP/IP トンネルの作成に加えて、侵害された DMZ ホスト(Web サーバーや SQL サーバーなど)からコネクトバックシェルを呼び出すためにも使用できます。
これは、ターゲットシステム側がコンサルタントへの TCP 接続を開始するからです(その逆ではありません)。Firecat はターゲット上では「ターゲット」モードで、コンサルタントのシステム上では「コンサルタント」モードで実行され、2つのエンドポイント間にトンネルを効果的に作成します。トンネルが確立されると、コンサルタントはローカルの Firecat デーモンに接続し、そのデーモンがリモートの Firecat デーモンに、ファイアウォールの背後にある目的のホスト/ポートへの接続開始を指示します。その後、2つの Firecat デーモンはコンサルタントとターゲットの間でデータをトンネリングし、2つのシステム間にシームレスで透過的なブリッジを作り出します。これにより、ファイアウォールルールを完全に迂回します。Firecat は NAT ファイアウォールの背後にあるホストでも機能します。
論理的なステップに分解し、図の IP アドレスを用いると、プロセスは次のように動作します: