https://www.roe.ch/sslsplit
SSLSPlitは、SSL/TLS暗号化されたネットワーク接続に対する中間攻撃のためのツールです。これは、ネットワークフォレンジック、アプリケーションセキュリティ分析、浸透テストに役立つことを目的としています。
SSLSPlitは、ネットワークアドレス翻訳エンジンを使用してそれにリダイレクトされる接続を透過的に終了するように設計されています。 SSLSplitは、SSL/TLSを終了し、元の宛先アドレスへの新しいSSL/TLS接続を開始し、送信されたすべてのデータを記録します。 NATベースの操作に加えて、SSLSPlitは静的な宛先と上流の宛先としてSNIで示されるサーバー名を使用しています。 SSLSplitは純粋に透明なプロキシであり、ブラウザで構成されたHTTPまたはSocksプロキシとして機能することはできません。
SSLSPLITは、IPv4とIPv6の両方でプレーンTCP、プレーンSSL、HTTP、およびHTTPS接続をサポートしています。また、SMTP startTLと同様のアップグレードメカニズムを一般的にサポートするために、プレーンTCPをSSLに動的にアップグレードする機能もあります。 SSLSPlitはサーバー名表示(SNI)を完全にサポートし、RSA、DSA、ECDSAキー、DHEおよびECDHEスイートと連携できます。 SSLSplitがSSL 3.0、TLS 1.0、TLS 1.1およびTLS 1.2、およびオプションでSSL 2.0も同様に構築したOpenSSLのバージョンに応じて、
SSLおよびHTTPS接続の場合、SSLSplitは、FRYでX509V3証明書を発生および署名し、元のサーバー証明書の主題DN、SubjectAltName拡張機能およびその他の特性を模倣します。 SSLSPlitには、偽造されたキーを生成する代わりに、秘密鍵が利用可能な既存の証明書を使用する機能があります。 SSLSPLITは、NULL-PREFIX CN証明書をサポートしていますが、SSL/TLSスタックの特定の証明書検証の脆弱性に対するエクスプロイトを実装しません。
SSLSplitは、通常、MITM攻撃を防止したり、それらをより困難にしたりするメカニズムに対する多くの防御を実装しています。 sslsplitは、一般的な方法でOCSPリクエストを拒否できます。 HTTPおよびHTTPS接続の場合、SSLSPLITはヘッダーをマングルしてサーバーにインストールされた公開キーピン留め(HPKP)を防ぎ、厳格な輸送セキュリティ制限(HST)を回避し、証明書の透明性の実施(PECTOM-CT)を回避し、QUIC/SPDY、http/2またはWebScokets(Upgrade(Upgrade)への切り替えを防ぎます。 HTTP圧縮、エンコーディング、キープアライブが無効になって、ログをより読みやすくします。
ロギングオプションには、従来のSSLSPlit Connectおよびコンテンツログファイル、PCAPファイル、ネットワークインターフェイスへの復号化されたトラフィックをミラーリングすることが含まれます。さらに、証明書、マスターシークレット、ローカルプロセス情報を記録できます。
SSLSPlitの使用とさまざまなNATエンジンのセットアップの詳細については、マニュアルページSSLSPLIT(1)を参照してください。
sslsplitは、デフォルトでは、openssl、libevent 2.x、libpcap、libnet 1.1.xライブラリに依存します。ミラーリング機能が省略されていれば、libpcapとlibnetは必要ありません。ビルドは、GNUメイクとPATH環境に依存します。利用可能な場合、PKG-Configは依存関係を見つけて構成するために使用されます。オプションのユニットテストは、チェックライブラリによって異なります。
SSLSplitは現在、次のオペレーティングシステムとNATメカニズムをサポートしています。
現在、ローカルプロセス情報( -i )のサポートは、Mac OS XおよびFreeBSDで利用できます。
SSL/TLS機能と互換性は、リンクされたOpenSSLのバージョンに大きく依存します。最適な結果を得るには、OpenSSLまたはLibresslの最近のリリースを使用してください。
上記の要件を使用できると、実行してください。
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
依存関係は、pkg-configを使用して自動確認されます。依存関係がピックアップされていない場合、 PKG_CONFIG_PATH修正が役に立たない場合は、 OPENSSL_BASE 、 LIBEVENT_BASE 、 LIBPCAP_BASE 、 LIBNET_BASE 、および/またはCHECK_BASEそれぞれのプレフィックスに設定することにより、それぞれの場所を手動で指定できます。
PREFIXを設定することにより、デフォルトのインストールプレフィックス( /usr/local )をオーバーライドできます。その他のビルドオプションとビルドタイムのデフォルトについては、 GNUmakefileとdefaults.h参照してください。
ユーザードキュメントについては、マニュアルページsslsplit(1)およびsslsplit.conf(5)参照してください。リリースメモについては、リリースとSECURITY.mdの間の大幅な変更をリストするNEWS.mdノートについては、セキュリティの脆弱性の開示に関する情報を参照してください。
SSLSPLITは、2節BSDライセンスの下で提供されます。 SSLSPlitには、MITおよびAPSLライセンスの下でライセンスされたコンポーネントが含まれています。詳細については、 LICENSE 、 LICENSE.contrib 、およびLICENSE.third .を参照してください。
貢献者のリストについては、 AUTHORS.md参照してください。
SSLSplitは、Claes M. NybergとsslsniffのMoxie Marlinspikeによるmitm-sslに触発されましたが、ソースコードを共有していません。