ayashiipage

関連記事: リンク押したときに関係無い怪しげなページが開く


最近まとめサイトなどを開くと広告ページに飛ばされる問題について調べてみたメモです
(2017/10/15: 別パターンも見つけたので追記修正してます)

個人的に発現率が高いと感じてる2サイト

○ カオスちゃんねる(http://chaos2ch.com) さん
○ オレ的ゲーム速報@刃(http://jin115.com) さん

を対象に調べました

http://chaos2ch.com/ (トップページ) で飛ばされたときのログの情報から、どういう風な流れで飛ばされるかを書いてます
http://jin115.com の方では開始点となる広告が別物だったので、開始点になる広告は色々あるようです

最終的な飛ばされる原因

読み込んだ iframe 内の JavaScript で URL 書き換えられることが原因です

iframe で↓のページが読み込まれます
https://csdc.tech/index.html?camp_id=164&h=971ae97261&ip=0.0.0.0&carrier=&gaid=&idfa=&appname=&appid={APP_ID}&site=113551&sitename=chaos2ch.com&bundle=&bidid=20171012195647_92_ge-jp-02_8cci1gCX_pmp
URL に私の IP アドレスが含まれてたのでとりあえず 0.0.0.0 に置き換えてます

header
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Thu, 12 Oct 2017 11:56:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: data=20171012195648_164_c84ZIWU2; expires=Fri, 13-Oct-2017 10:10:08 GMT; Max-Age=80000; path=/
Content-Length: 608

body
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script type="text/javascript">
top.location.href ="http://aff.chaopengz.cc/?utm_medium=518a20c7a23efc6f2650a0872f30552a8cd8f8f6&utm_campaign=JP_win&clickID=20171012195648_164_c84ZIWU2"</script></head>
<body style="margin: 0;"><a target="_blank" href='https://play.google.com/store/apps/details?id=com.lazada.android&referrer=utm_source%3D42lazada.com%26utm_medium%3Dapi'><img src=https://csdc.tech/img/lazada72890.jpg></a></body></html>

scirpt タグの top.location.href に代入している部分、ここで広告のページに飛ばされています

ブラウザの戻るが使えないので location.replace のはず!と思ってたのに違ってました
href なのになんで戻れないんだろう?
メインフレームの準備ができる前に iframe の方で移動してしまうから履歴に残す前に移動してるとか?

またこの URL をもう一度開いてみると、 head タグがなくて body タグは同じでした
まれにリダイレクトさせるコード入りの head を追加してときどき広告に飛ばすようにしているようです
どこが原因かをわかりにくくするのと審査を通すためかな

このファイルが読み込まれるまで

原因のファイルが特定できたので今度はこのファイルをどうやって読み込んだかを辿っていきます

csdc という文字で検索してでてきたのが

http://medi8.genieesspv.jp/yie/ld/jsk?zoneid=1055197&cb=35941077557&charset=UTF-8&loc=http%3A%2F%2Fchaos2ch.com%2F&referer=http%3A%2F%2Fchaos2ch.com%2Farchives%2F4844017.html&topframe=1

という JavaScript ファイル

中身は

gen_tag = "%3cscript%20type%3d%27text%2fjavascript%27%3e(略
のように % がいっぱいです

JavaScript で、この文字列をデコードして document.write で出力してるようです
デコードした文字列は

<script type='text/javascript'>window.__genieeCommon = (略)
</script>

と script タグを作っています

広告表示するコードみたいで最後の部分はこうなっていました

    var json_banner_data = {
"prepend_code": "",
"0": "<iframe src=\"https:\/\/csdc.tech\/index.html(略)",
"append_code": "<script type=\"text\/javascript\">(function(略"
};
gpb_1055197.init(json_banner_data);
gpb_1055197.run();

json のデータ部分が固定じゃなくてアクセスごと、もしくはクエリの zoneid などに応じて違っていそうな予感がします

試しにもう一度この URL にアクセスしてみると 0 のところの値が別になっていました
クエリによらず毎回ランダムってことでしょうか

ここで運悪く csdc.tech の迷惑広告が選ばれると変なところに飛ばされてしまう、と



ではこの medi8.genieesspv.jp はどこから読み込まれてるの?となるのですけど、ここ見つけるのはすごーく大変でした
トップページへのアクセスからこのファイルが読み込まれてるまでのどのファイルにも medi8.genieesspv.jp を読み込むコードがありません
通信してれば絶対このリストにあるはずなのに・・・

そんな中、探してる途中で偶然 http://js.medi-8.net/t/055/197/a1055197.js というのが http://chaos2ch.com/ の HTML 自体に含まれてるのを発見しました

似てる、これは怪しい

と思って、この URL にアクセスしてみると

var di={zi:1055197,vd:"medi8.genieesspv.jp",ra:0,ri:"{$netId}"};

というコードを発見!
この JavaScript ファイルからアクセスされてるようです


実行されてるのにどうして一覧に出ないんだろう・・・
あれこれ考えて、ブラウザにキャッシュされてそうと閃いたので Chrome の開発者ツールでみてみると

(from memory cache)

と書かれていました
外部ツールで調査するとこういうところ辛いですね・・・

とりあえず開始点は http://chaos2ch.com/

<script type="text/javascript" src="http://js.medi-8.net/t/055/197/a1055197.js"></script>

というコードだとわかりました


じゃあ今回の問題起きてるページは全部この広告がロードされてるのか、というとそんなことはありませんでした
今回の調査対象のもう一方、 http://jin115.com/ のソースを見ても medi-8 のスクリプトはロードしていません


ブログ作る側の原因となるコードは1つではないようです


もし Amazon や Google の広告でも起きるならもっと大勢が影響してるはずです
それに Amazon や Google 広告は、まとめ系以外のオフィシャルサイト系でも使われてるのにそういったサイトでは一度も起きていません
あと、まとめはあんまり見てない友人に聞いてみたら、そういう現象あるの初めて聞いたよって言っていました

ということで Amazon と Google の可能性は低そう

http://jin115.com/ のソースからそれらを除いた script タグで広告を探すと

http//api.unthem.com/

http://cast.ads.jlisting.jp/

というのが読み込まれてました
これらも問題の広告をロードしてる可能性がありそうです



http://jin115.com/ の方でも発生したので調べてみると

http//api.unthem.com/http://js.medi-8.net/t/080/937/a1080937.js というファイルを読み込ませていました
数字部分は違いますが、同じように広告を読み込ませていて、 csdc のページの JavaScript で広告ページに飛ばされていました

まとめ

JS: http://api.unthem.com/

=====
JS: http://js.medi-8.net/

JS: http://medi8.genieesspv.jp/

iframe: https://csdc.tech/


http://medi8.genieesspv.jp/ で選ばれた広告が https://csdc.tech/ だと広告ページへ飛ばされます

今のところ http://medi8.genieesspv.jp/ の広告のみですが、 http://medi8.genieesspv.jp/ を内部で呼び出している広告サイトは複数あるようです

とりあえず https://csdc.tech/ をブロックすればだいじょぶそう
だけどこの手の広告って同じ内容のを別サイトにも作ってる可能性があるので根本的な解決とは言えないかも
今はなくてもみんなにブロックされたら URL 変えようってなってもおかしくないですからね



ところで

今回は外部ツールで通信監視とかしてみましたが、すごく大変です

こんな

fiddler-image

ところから1つずつ中身見て調べていくなんて気が遠くなりそうです

今回はまだ検索機能でいい感じに引っかかってくれたので全部見ずに済んだので助かりました

でも、セキュリティを調べてる人とかでこういうのを普段から見てる人ってすごいですよねー
私はできればもうこんなことしたくない・・・