マンションのLAN内のゲートウェイが中間者攻撃してくるお話

  • 185
    いいね
  • 8
    コメント

来歴

私は去年、とある賃貸マンションへ入居した。
インターネットは無料で利用可能、壁の端子にLANケーブルを挿すだけ。

ただ、この物件のインターネット回線がおかしい。1日に1回くらい、Webサイトを閲覧しようとしたときに、マンションの管理会社のホームページへリダイレクトされる現象が起きる。

イメージとしてはこんな感じ。

redirect.png

東京の天気が表示されるべきなのに、入居者用Webページのログイン画面へリダイレクトされる。

腹が立ったので今年の5月くらいに現象を調べ、原因がわかったことで満足していたが、重い腰を上げて結果を以下の記事にして公開する。改めてGoogle先生に聞いたら、同じことで悩んでいる人がいた。

自動リダイレクトの回避方法について。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10165027165

 
 

なお、後述の図には、いらすとやさんの素材を使用させていただきました。
http://www.irasutoya.com/

何が起きている?

宅内からインターネット側へのHTTPリクエストに対して、 稀に どこかのルータ、L3スイッチ or ゲートウェイがマンションの管理会社のHPへ飛ばすようなHTTPレスポンスを返してくる。なお、レスポンスを返している箇所は特定できなかった。

※稀に:
  ブラウザでの画面遷移100回に1回くらい。正確に計った訳ではない。
 

もうちょい詳しく

パケットキャプチャで分かった流れを書く。
今回のリダイレクトは、財務省のHP http://www.mof.go.jp へアクセス時に発生した。

(1) http://www.mof.go.jp へアクセスしようとしたところ、成りすましレスポンスにより http://172.254.99.231:10080 へリダイレクトされた。

(2) http://172.254.99.231:10080/ へアクセスすると、今度は http://myd-room.jp/users/home へリダイレクトされた。

(3) http://myd-room.jp/users/home では、 https://nyukyo.myd-room.jp/users/home へリダイレクトされる

(4) 冒頭の入居者用ホームページが表示される。

(2), (3), (4) は特に問題無い。
今回、問題なのは (1) だ。私のリクエストに対して財務省のホームページではなく、通信経路上の何かが成りすましてHTTPレスポンスをしている。

図示するとこんな感じ。

access_redirected.png

 

通常のレスポンスを見てみる

まずは http://www.mof.go.jp/ へアクセスした際の通常のレスポンスを見てみ
よう。

response:
HTTP/1.1 200 OK
Date: Sat, 21 May 2016 17:38:42 GMT
Server: Apache
Last-Modified: Sat, 21 May 2016 15:01:04 GMT
ETag: "6886-5335b79f910f5"
Accept-Ranges: bytes
Connection: close
Content-Type: text/html
Content-Language: ja
X-Pad: avoid browser bug
X-Iinfo: 8-78509226-78604082 NNNN CT(17 -1 0) RT(1463852029081 293431)
q(0 0 0 -1) r(0 0) U5
X-CDN: Incapsula
Content-Encoding: gzip
Transfer-Encoding: chunked

(HTMLはgzip圧縮されている)

AkamaiかどこかのCDN使ってるはず。特に言うことはない。

図示してもこんな感じ。フツーのHTTPリクエストとレスポンスである。
access_normal.png

成りすましされた際のレスポンスを見てみる

次に、(2) のレスポンスを見てみよう。http://172.254.99.231:10080/ にリダイレクトされる。

response:
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Cache-Control: post-check=0, pre-check=0
Content-Length: 828
Connection: close
Content-Type: text/html; charset=EUC-JP

<?xml version="1.0" encoding="EUC-JP" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<meta http-equiv="refresh" content="0;
URL='http://172.254.99.231:10080/'" />
<title>
</title>
</head>
<body>
<form id="redirect" method="post" action="http://172.254.99.231:10080/">
<script type="text/javascript">
.document.getElementById("redirect").submit();.</script>
<noscript>
<div style="text-align:center">
<br /><br />
<input type='submit' name="button" value='' />
</div>
</noscript>
</form>
</body>
</html>

HTTPレスポンスヘッダからして明らかに違う。そして 172.254.99.231:10080 には何が居るのか?

 

172.254.99.231:10080 で動いているサービス

172.254.99.231は、恐らくLANからインターネット側へ出る際のゲートウェイであるが、HTTPサーバが動いている。単純に、HTTPレスポンス 302を返してくるので、アクセスした者は http://myd-room.jp/users/home へ遷移させられる。特殊なプロトコルを使っている訳でもないし、これ自体は問題無いので、リクエストとレスポンスだけ載せる。

request:
GET / HTTP/1.1
Host: 172.254.99.231:10080
User-Agent: Mozilla/5.0 (Windows NT 5.1; WOW64; rv:46.0) Gecko/20100101
Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

response:
HTTP/1.1 302 Found
Cache-Control: no-store, no-cache, must-revalidate
Content-Length: 0
Pragma: no-cache
Location: http://myd-room.jp/users/home
Connection: close
Content-Type: text/html; charset=EUC-JP

後は入居者用ホームページに遷移するだけなので省略する。

何故、中間者攻撃を行う?

これは立派な中間者攻撃です。リダイレクト先がまだ入居者用Webサイトなのでいいけど、マルウェアの配布サイトにリダイレクトさせることもできる。こっそり広告を突っ込むこともできる。

D.U‐NETさん、何でこんなことするんだろうか。さっぱり理解できない。

 

平文で通信する私が悪い?
全くその通りなので、もう全部HTTPSで通信しますうー。