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

ARPスプーフィングをやってみた

Pocket

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

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

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

ARPスプーフィングとは

Wiki先生によると、「ARPプロトコルの応答を偽装することにより、LAN上で通信機器のなりすましを行なう技法である。」とのことです。
※ちなみにARPとは、「Address Resolution Protocol」のことで、IPアドレスからMACアドレスを解決するためのプロトコルです。

簡単に言うと、オレオレ詐欺みたいにターゲットに対して、本人と偽わり、本人になりすますみたいな感じですかね。
そのような攻撃を中間者攻撃(man-in-the-middle attack)と言います。
PCとPCの間に入って通信を盗む攻撃なので、そう言われています。

それでは実際にやってみましょう。
※公共の場や、会社では迷惑がかかるので自宅の環境で行ってください!

環境

・ターゲット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とルータ間の通信をARPスプーフィングによって、通信を盗み見ます。

ARPスプーフィングの手順

攻撃者用PC(Kali Linux)から以下の操作を行います。

  1. アプリケーション>「09-Sniffing & Spoofing」>「Ettercap」
  2. 「Sniff」>「Unified sniffing」>Network interfaceを選択する>OK
  3. 「Hosts」>「Scan for hosts」を選択
  4. 「Hosts」>「Hosts list」を選択
  5. listの中から、ルータのIPアドレス(192.168.89.2)を選択>「Add  to Taget 1」を選択
  6. 次にターゲットPCルータのIPアドレス(192.168.89.157)を選択>「Add  to Taget 2」を選択
  7. 「Targets」>「Current targets」を選択し、5,6で選択したターゲットが表示されていることを確認します
  8. 「Mitm」>「ARP poisoning」を選択>「Sniff remote connections.」を選択>「OK」
  9. これでARPスプーフィングが始まります

詳細な手順は動画を確認してみてください。

ARPスプーフィングされるとどうなるのか

ARPスプーフィングされると、ターゲットPCのARPテーブルが書き換えられてしまいます。
今回の場合は、ターゲットPCのARPテーブルのにある、ルータ宛のMACアドレスが、攻撃者のMACアドレスに書き換わっています。

攻撃前と攻撃後のARPテーブルは以下のようになっています。
上のほうが、書き換わる前で、下が書き換わった後です。

ターゲットPCのARPテーブルが書き換わっているところと、ARPスプーフィングされた直後のパケットキャプチャを取得してみましので、そちらも動画で確認してみてください。

この攻撃の後、ターゲットPCの通信は攻撃者PCを経由するので、通信がすべて見えてしまいますね。

以上です。ありがとうございました。

ちなみに、ターゲットのPCには、アンチウイルスソフトが入っていたのですが、ARPスプーフィングは検知しませんでした。
最近流行っている、次世代型アンチウイルスソフト(EDR)とかなら検知できるのかな?

企業だと、Ciscoとかその他のスイッチで防止する機能があるみたいですが、個人だとスイッチなんて買わないので、ARPを静的に書くとかしかないんですかね。。

余談ですが、最近セキュリティの勉強のため、サイバーセキュリティテストという本で、サイバーセキュリティについて学習しています。
興味ある方は、見てみてください。それでは。

Pocket