
Ratchedは、ペネトレーションテストを目的とした透過型Man-in-the-Middle TLSプロキシです。
ratched は TLS 接続を特別にインターセプトする Man-in-the-Middle (MitM) プロキシです。これは Linux の iptables REDIRECT ターゲットと組み合わせて使用することを意図しています。インターセプトすべきすべての接続は、ローカルの ratched ポートにリダイレクトできます。SO_ORIGINAL_DST ソケットオプションを通じて、ratched は意図された宛先(iptables によるパケット書き換え前)を特定し、元のターゲットへの接続を確立しようとします。
他の MitM ソフトウェアと異なる点は以下の通りです。
ratched は無差別にトラフィックをインターセプトしません。特に、最初に TLS クライアントが ClientHello を送信するのを待ち、ratched がそれを解析し、Server Name Indication (SNI) TLS 拡張によってターゲットをインターセプトすべきかどうかを判断します。これはバーチャルホスティング環境で、特定のホスト名への接続のみをインターセプトしたい場合に特に便利です。
ratched はパスワードのスニッフィングのみを目的とするのではなく、主にトラフィックを PCAPNG ファイルにダンプします。PCAPNG ファイル形式は、コメント付きで接続に注釈を付けられる(特に SNI 拡張で示されたホスト名)こと、またキャプチャファイルに名前解決情報を埋め込める(ターゲット IP アドレスを SNI 拡張のホスト名にマッピングするため)ことから選択されました。
ratched はインターセプトする SNI ごとに個別の設定を持ち、クライアント側とサーバー側のサポートされるグループ(旧称「サポートされる楕円曲線」)、暗号スイート、特定の TLS バージョンを含み、異なるインターセプトホストにカスタム証明書/鍵を指定できます。
ratched はクライアント証明書を広範にサポートし、クライアント証明書の自動偽造も提供します(反対方向の偽造サーバー証明書と同様)。
ratched は OCSP ステープリングをサポートし、クライアントがステータス要求 TLS 拡張を送信する場合に正の OCSP 応答を自動的に偽造できます。
ratched がルーティングマシン上で待機している場合(例ではポート 9999)、キャプチャしたいトラフィックを指定する iptables エントリを追加するだけです。たとえば、192.168.1.7 からポート 443 に到達しようとするすべてのトラフィックをインターセプトするには、以下を使用します。
# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.7 --dport 443 -j REDIRECT --to-ports 9999
443 へのすべてのトラフィックをインターセプトするには、単に以下を実行します。
# iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 9999
ルーターとして動作し、ローカルに到着するトラフィックをインターセプトしたい場合は、REDIRECT の代わりに DNAT ターゲットを使用します。例:
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to 192.168.123.1:9999
ここで、eth1 はトラフィックをインターセプトするインターフェースで、192.168.123.1 はローカルインターフェースの IP アドレスです。
ヘルプページはかなり自明でしょう。
usage: ratched [-c path] [-f hostname:port] [--single-shot] [--dump-certs]
[--keyspec keyspec] [--initial-read-timeout secs]
[--mark-forged-certificates] [--no-recalculate-keyids]
[--daemonize] [--logfile file] [--flush-logs] [--crl-uri uri]
[--ocsp-uri uri] [--write-memdumps-into-files]
[--use-ipv6-encapsulation] [-l hostname:port]
[-d key=value[,key=value,...]] [-i hostname[,key=value,...]]
[--pcap-comment comment] [-o filename] [-v]
ratched - TLS connection router that performs a man-in-the-middle attack