
送信(エグレス)ファイアウォールルールをテストするために設計されたクライアント/サーバースクリプト。
アウトバウンド(外向き)ファイアウォールルールをテストするために設計されたクライアント/サーバースクリプト。
Egresser は、アウトバウンドファイアウォールルールを列挙するツールであり、ペネトレーションテスターが企業ネットワーク内から外向き(egress)フィルタリングが適切かどうかを評価するために設計されています。各 TCP ポートを順に調べると、Egresser サーバーはクライアントの送信元 IP アドレスとポートを返信します。これにより、クライアントはアウトバウンドポートが許可されているかどうか(IPv4 と IPv6 の両方)を判断し、NAT トラバーサルが発生している可能性があるかどうかを評価できます。
仕組み
サーバー側スクリプトは Iptables と連携し、すべての TCP トラフィックを「実際の」サーバーが存在するポート 8080 にリダイレクトします。サーバー側スクリプトは Perl で書かれており、Net::Server::Prefork を利用したプリフォーク型サーバーで、利用可能な場合は IPv4 と IPv6 の両方で待ち受けます。任意の TCP 接続に対して、接続元クライアントの IP とポートで構成される null 終端文字列を含む単純なレスポンスを返します。Egresser クライアントにアクセスできない制限された環境では、Telnet を使用してサービスとやり取りしても構いません(当社の Egresser サーバーは egresser.labs.cyberis.co.uk にあり、正当な目的であれば自由に使用できます)。
クライアントも Perl で書かれており、高速化のためにスレッド化されています。デフォルトでは TCP ポート 1〜1024 をスキャンしますが、これはスクリプト内で設定可能です。コマンドライン引数 ‘-4’ で IPv4 を、‘-6’ で IPv6 を強制できます。デフォルトでは、お使いの OS が優先するプロトコルを選択します。開いている/閉じているポートをすべて明示的に一覧表示するには、詳細フラグ (-v) を指定してください。通常の出力は、許可されたポートのみの簡潔な要約です。
なぜ?
企業環境では、境界制御が簡単に回避されないように、アウトバウンドファイアウォールルールを制限することが推奨されます。例えば、組織内の外向きフィルタリングが不十分だと、悪意のあるユーザーがブラウザの接続設定を変更するだけで、フィルタリング/アンチウイルス/ログ記録を提供する Web プロキシを簡単に迂回できます。他にも多くの例があります。多くのワームは SMB プロトコルを介して拡散し、マルウェアはデータを外部に持ち出すために多数のチャネルを利用でき、未承認のソフトウェア(例: torrent/P2P ファイル共有)が自由に動作して、企業リソースを浪費し、環境内に悪意のあるコードが持ち込まれる可能性を大幅に高めます。
一般に、すべてのアウトバウンドプロトコルを制限し、特定のホストからの例外をケースバイケースで許可することが推奨されます。Web ブラウジングは専用の Web プロキシ経由でのみ行うべきであり、直接接続の試みは境界ファイアウォールでログに記録し、必要に応じて調査する必要があります。
Egresser は、ペネトレーションテスターが企業環境内で許可されたポートをすばやく列挙できるようにする、シンプルで使いやすいツールです。
ipv6 nat サポートには、iptables 1.4.17 以上とカーネル 3.7+ が必要です。
クライアントには以下の Perl モジュールが必要です:
Thread::Queue ;
IO::Socket::IP;
Getopt::Long;
サーバーには以下の Perl モジュールが必要です:
Net::Server::PreFork
すべての問題は https://github.com/cyberisltd/Egresser/issues から報告してください。