sslsplit使い方
sslsplitはSSL/TLSのMan In The Middleテストを行う際に用いるツールである。有名なmitmproxyに比べ、HTTPSだけでなく、あらゆるX over SSL/TLSに用いることができる。しかし、日本語の情報が圧倒的に不足しているので紹介
sslsplitとは
中間者攻撃を行い、テスト対象機器が正しく証明書を検証しているか確認するツール。 昨今はスマートフォン向けアプリなどで証明書検証不備が多数報告されている。 有名なmitmproxyは、プロトコルをHTTP前提としているが、sslsplitはX over SSL/TLSに幅広く使える。
(正確にはmitmproxyでも証明書の交換手順に関してテストすることは可能であるが、 証明書が交換されたあとの通信をうまく扱うことができない)
インストール
Kali Linuxはインストール済み。Ubuntuはapt経由でインストール可能。 Debianはstretchとbusterで提供されているが、手元の環境では正常に動作しなかった。
$ sudo aptitude install sslsplit
使い方
環境
Kali Linux on Virtual Boxで行った。 Kali Linuxをルーター化済み。
準備
証明局証明書の作成。manに書いてあるとおり。
$cat >x509v3ca.cnf <<'EOF'
[ req ]
distinguished_name = reqdn
[ reqdn ]
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
EOF
$ openssl genrsa -out ca.key 2048
$ openssl req -new -nodes -x509 -sha256 -out ca.crt -key ca.key \
-config x509v3ca.cnf -extensions v3_ca \
-subj '/O=SSLsplit Root CA/CN=SSLsplit Root CA/' \
-set_serial 0 -days 3650
HTTPとHTTPSの例
# iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10080
# iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 10443
$ sslsplit -D -k ca.key -c ca.crt -l connect.log -L sample.log https 0.0.0.0 10443 http 0.0.0.0 10080
これは、
$ mitmproxy -e -T -p 10443
と同等。
SMTPの例
# iptables -t nat -A PREROUTING -p tcp --destination-port 465 -j REDIRECT --to-ports 10465
$ sslsplit -D -k ca.key -c ca.crt -l connect.log -L sample.log ssl 0.0.0.0 10456
テスト環境動作確認を行うには以下
$ openssl s_client -connect smtp.gmail.com:465 -showcerts
間違い、ご意見などなどありましたら、twitterでお寄せください。