/epgrec/へのWebアクセスは何がしたいのかを探る

www.morihi-soc.netさんの「ハニーポット観察記」を見ていたら、EPGrecへのアクセスの話が出てきていた(http://www.morihi-soc.net/?p=66)。

[14/Oct/2013:00:48:49 +0900] "GET /epgrec/LICENSE.txt HTTP/1.1" 200 7637 "-"
[14/Oct/2013:00:48:57 +0900] "GET /epgrec/LICENSE.txt HTTP/1.1" 200 7637 "-"

ちょうどうちのハニーポットもどきApacheにもこの/egprec/アクセスが来ていたので、せっかくだからこのアクセスをしている人たちは何をしようとしているのか、観察記をまとめてみる。

EPGrecとは何か

EPGrecの公式サイトは http://www.mda.or.jp/epgrec/ で、これはPCでテレビ録画をやっている方々には有名な、Linux向けの録画予約システムである。自宅でLinuxマシンを使っている人が、Web画面から録画予約をしたり、動画ファイルを管理したりする録画サーバに仕立てたい……という用途に使われている。

特にこのEPGrec、一時期話題となった地デジ録画可能なキャプチャーカード「PT2」との合わせ技が強力で、今も一部で根強い人気を誇っている。が、過去には任意のファイルがアップロード可能な脆弱性があり、これでphpファイルをアップロードしてサーバサイドで実行、という手法で狙われていたらしい。

しかし、epgrecは日本発のソフトで、利用しているユーザもほぼ日本人のみ。2013年現在ではもはやマイナーなソフトと言って良い。では、なぜそんなローカルなソフトがまだ狙われるのかというと……って辺りのお話も合わせて以下に。

アクセスログ

ちょうど10月14日に、さくらのVPSに立ててるハニーポットもどきApacheにこんなん来てたので紹介してみる。なお細かい画像ファイル取得などのアクセスログは見づらいだけなので削りました。

第一弾 (存在スキャン)
88.191.227.21 - - [14/Oct/2013:00:48:49 +0900] "GET /epgrec/LICENSE.txt HTTP/1.1" 200 7637 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; http://nmap.org/book/nse.html)"
88.191.227.21 - - [14/Oct/2013:00:48:57 +0900] "GET /epgrec/LICENSE.txt HTTP/1.1" 200 7637 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; http://nmap.org/book/nse.html)"
第二弾 (Safariでアクセス?)
86.24.70.204 - - [14/Oct/2013:00:58:49 +0900] "GET /epgrec HTTP/1.1" 301 335 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:00:58:49 +0900] "GET /epgrec/ HTTP/1.1" 200 24161 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:00:58:50 +0900] "GET /epgrec/js/jquery-1.3.2.min.js HTTP/1.1" 200 57254 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:00:58:58 +0900] "GET /epgrec/ HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:00:58:58 +0900] "GET /epgrec/js/jquery-1.3.2.min.js HTTP/1.1" 304 - "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:01:00:09 +0900] "GET /epgrec/recordedTable.php HTTP/1.1" 404 311 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:01:00:14 +0900] "GET /epgrec/reservationTable.php HTTP/1.1" 404 314 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:01:00:17 +0900] "GET /epgrec/programTable.php HTTP/1.1" 404 310 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:01:00:22 +0900] "GET /epgrec/envSetting.php HTTP/1.1" 404 308 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
86.24.70.204 - - [14/Oct/2013:01:00:28 +0900] "GET /epgrec/video HTTP/1.1" 404 299 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
第三弾 (Chromeでアクセス?)
87.211.57.234 - - [14/Oct/2013:00:59:48 +0900] "GET /epgrec/ HTTP/1.1" 200 24161 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:00:59:49 +0900] "GET /epgrec/start/jquery-ui-1.7.2.custom.css HTTP/1.1" 404 326 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:00:59:49 +0900] "GET /epgrec/js/jquery-1.3.2.min.js HTTP/1.1" 200 57254 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:01:00:55 +0900] "GET /epgrec/recordedTable.php HTTP/1.1" 404 311 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:01:00:58 +0900] "GET /epgrec/start/jquery-ui-1.7.2.custom.css HTTP/1.1" 404 326 "http://www24314ue.sakura.ne.jp/epgrec/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:01:03:56 +0900] "POST /epgrec/%7B$post_to%7D HTTP/1.1" 404 304 "http://www24314ue.sakura.ne.jp/epgrec/systemSetting.php" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:01:04:04 +0900] "GET /epgrec/postsettings.php HTTP/1.1" 404 310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
87.211.57.234 - - [14/Oct/2013:01:04:09 +0900] "GET /epgrec/thumbs HTTP/1.1" 404 300 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

アクセス観察

見てみると分かる通り、まず最初に存在スキャンが88.191.227.21から来て、その10分後に何やらお客さんが二人(86.24.70.204と87.211.57.234)訪れた。これらスキャンのアドレスと実際のアクセスのIPアドレスは以下の通りである。

IPアドレス 逆引き AS 国名
88.191.227.21 88-191-227-21.rev.poneytelecom.eu AS12322 PROXAD Free SAS フランス
86.24.70.204 cpc11-nfds13-2-0-cust715.8-2.cable.virginmedia.com AS5089 Virgin Media Limited イギリス
87.211.57.234 ip234-57-211-87.adsl2.static.versatel.nl AS13127 Versatel Tele 2 Nederland B.V. オランダ

存在スキャンはUserAgentがnmapになっていた。

そして10分後に来た2つのアクセスだが、これはどうやらツールによる攻撃ではないような気がする。アクセスログの時間を見ていると、一つのページを開いて次のページへ数秒から数十秒単位のインターバルを置いて遷移しており、どうも人間が普通にWebブラウザで見ているかのような動きだ。UserAgentに残っていた通り、本当にSafariChromeで見ていたと推察される。

また、一箇所だけ以下のようなPOSTリクエストがあることに気がつかれたろうか。

"POST /epgrec/%7B$post_to%7D HTTP/1.1"

なぜこんな変なPOSTかというと、手抜きして初期設定画面のHTMLテンプレートに値を代入しないまま応答を返していたため、こんなタグになっていたからである。

<form id="system_setting" method="post" action="{$post_to}">

見ての通り、本来ならPHPのテンプレート機能でこのactionは置き換わるのだが、どうやらそのままクリックしたようだ。POSTされた中身もダンプしたが、やはりテンプレートの中身ほぼそのままであった。

(見やすくするため適宜改行を入れた)
db_host=asd
&db_user={$settings->db_user}
&db_pass={$settings->db_pass}
&db_name={$settings->db_name}
&tbl_prefix={$settings->tbl_prefix}
&install_url={$settings->install_url}&spool={$settings->spool}
&use_thumbs=0&ffmpeg={$settings->ffmpeg}&thumbs={$settings->thumbs}
&temp_data={$settings->temp_data}&temp_xml={$settings->temp_xml}
&epgdump={$settings->epgdump}&at={$settings->at}
&atrm={$settings->atrm}&sleep={$settings->sleep}

最初のdb_hostに"asd"という値が入っているが、この初期設定画面はたくさんテキストボックスがあってそこに値を入れるようになっているのだ。

きっと試しに何か値を入れてみたのだろう。

目的はなんなのか

さて、先に書いた通り、EPGrecの昔の版は脆弱性があり、任意のPHPファイルを置いて実行できたようだ。特に、実際にepgrecをインストールしてみると分かるのだが、/epgrec/video/ や /epgrec/settings のパーミッションを777にするよう指示してくる(!)ので、/video/辺りにphpスクリプトを仕込んで……という攻撃が一時期流行ったらしい。

が、それは既に過去のこと。任意のPHPをインジェクションするために、わざわざこんなローカルなものを今狙う悪い人はほとんどいないと思う。2013年現在、まだしつこく/epgrec/を狙っている人は、どうやら別の目的があるように見える。
それは……もうこれは推測と妄想でしかないけど、今回のアクセスの観察からも「日本人が録画したものを見たい人」が探し回っているのだろう。もっとピンポイントではっきり言えば、「日本のアニメが見たい海外のオタクが狙っている」。かなり合っていると思う。

間接的な証拠……というほどではないけど、以前、2ちゃんねるの書き込みでこんなのを見たことがある。

893:login:Penguin:2011/06/10(金) 15:47:29.55 id:RrXSr5Hr
2chの皆様、epgrecのハッカーです。その不正アクセスは私のせいでした。epgrecの録画を見たいので、誰かのepgrecにアクセスしたい。不正アクセスで本当に申し訳ありません。よろしくお願い致します。

うーん、ネタの書き込みかもしれないけど、これは本当に海外の方が頑張って慣れない日本語で書いたんじゃないかなぁ (^^;。
まぁ真相はこれ以上分からないので、このお話はこの辺でオチも無く終わります。

epgrecアクセスの誘い込み方

最後におまけ。/epgrec/のアタックする人を呼び込む、ハニーポットもどきの作成メモ。

アーカイブ展開

公式ページから拾ってきてDocumentRootに展開すれば良いが、サーバにはPHPをインストールしないでおこう。何かしらの脆弱性があった時に本当に攻撃を食らってしまうからだ。

また、アクセスログを見れば分かるように、EPGrecを探す人は /epgrec/LICENSE.txt を確認して存在スキャンをしていることが多い。というわけで、このファイルの設置は必須である。アーカイブ展開した後に要らないからと消さないようにしよう。

epgrecが入っているフリをする

epgrecはSmartyを使っているので、HTMLテンプレートファイルが/epgrec/templates/内に入っている。アクセスされたら、この中身をそれっぽく返すと良いだろう。つまり、Apacheでこんな感じでReWriteしてやればよい。

<LocationMatch "^/epgrec/systemSetting.php">
  RewriteEngine on
  RewriteRule /epgrec/systemSetting.php /epgrec/systemSetting.html [L]
</LocationMatch>

またindex.phpはindex.htmlからそれっぽい値を入れて作ってみよう。時間のある人は、番組表(programTable.html)もそれっぽく作って置いてみれば、侵入者はうまくダマされてくれるかもしれないぞ。

追記 (2014-1-18)

どうやら、私の「日本のアニメが見たい海外のオタクが狙っている」という妄想は結構当たっていたようです。

BitTorrentで出回っているアニメとして、epgrecへの不正アクセスでダウンロードされたものが確認されたようです。ただ、どうやら攻撃者は私の予想より一歩進んで、勝手に自分で録画設定までしてダウンロードしていたようですね。