« 医療費通知に偽装した攻撃(Backdoor.Emdivi) その後 | メイン | 「Scanbox」が日本を偵察中 »

2015年3月11日 (水)

マルウェア解析奮闘記 ~難読化JScriptを解析せよ~

先日、あるマルウェアを入手しました。フィッシングメールの添付ファイルとして配送されていたもので、拡張子「.js」のJScriptファイルでした。中身は難読化処理が施されておりました。その解読手法および解析した結果を記します。

■JScriptとは

JScriptはスクリプト言語であり、ファイルをダブルクリックした場合はWindows Script Hostがその実行エンジンとなります。そのため、Windows環境は標準でJScriptファイルを実行する事ができます。厳密にはJavaScriptと異なるのですが、JavaScriptが読める方であれば、何をしているかはきっと理解できます。

アイコンは以下の通りです。

Icno

図1、JScriptのアイコン

■検体の調査

検体をテキストエディタで開くと以下の通りとなっておりました。

Original

図2、検体のソースコードの一部

一見すると解析を諦めたくなるような綺麗な模様ですが、まずは整形をします。改行、インデントを追加します。

Pretty

図3、整形後のソースコード

関数(function)はたくさんありますがやっていることは単純です。「evl」変数に文字列を追加し、異なる関数を呼び出す処理がおよそ200回弱繰り返されていました。

Graph



図4、処理のイメージ

調べていくと、ある関数のみ異なることがわかります。

Eval

図5、特殊な関数

関数 hf (赤枠)はeval関数を実行しています。

eval関数は組み込み関数(事前に定義されて用意されている関数)で、受け取った文字列を命令として実行するというものです。上記の例では、evl変数に含まれる文字列が命令として実行されます。

全体像としては下図の通りとなります。

Whole_2

図6、全体像

■悪質なスクリプトの抽出

全体像が掴めたので、組み立てられる「悪質なスクリプト」を調査しました。

eval関数を、標準出力(WScript.Echo)に置き換えます。

Fix

図7、関数hfの改造

その結果得られたevl変数に含まれていたスクリプトが以下になります。

Final図8、最終的に得られたスクリプト(整形済み)

JScriptでファイルをダウンロードして、実行するというものです。

26行目~30行目にあるのがダウンロード用のURLおよびダウンロード後のファイル名になります。見ての通り、実行ファイルをダウンロードしようとしています。

つまり、このJScriptはダウンローダであることが分かりました。

■最後の検体の調査

さらにそれぞれのURLから実行ファイルをダウンロードすると、3つとも異なる検体でしたが、すべてトロイの木馬でした。

わざわざ3つダウンロードさせている理由として、仮に1つのみがウィルス対策製品で検出されても、その他のマルウェアが残り続けることを犯人が狙ったと考えられます。その場合、ユーザおよび管理者はウィルスが駆除できていると思い込んでしまい、他のマルウェアがそのまま放置されてしまうでしょう。

■まとめ

難読化という手法は、ブラウザの脆弱性を突くようなJavaScript/VBScript、PHPなどで作られたWebShellなど様々なところで利用されており、パターンファイルによる検知はますます困難になっています。

サンドボックスやエンドポイント上で動作する振る舞いで検知するタイプのソリューションが必要になります。

« 医療費通知に偽装した攻撃(Backdoor.Emdivi) その後 | メイン | 「Scanbox」が日本を偵察中 »

Macnica Networks Corp.
セキュリティ研究センター

サイバーセキュリティに特化した研究を行うことを目的に2013年4月に開設。

■ミッション

・Threat Research

・Solution Research

・Education
 

小林 靖幸
マルウェアの動的解析と培養を担当。温和な見た目とは裏腹に、休日は鋭い眼光でサイバー空間の監視を行う一人SOCで活動中。好きなデバッガーはx64dbg。

竹内 寛
リバースエンジニアリング(マルウェア解析)を担当。彼の手に渡ったマルウェアはまさに“まな板の上の鯉”と同じ。あとは解析されるがまま。最近の楽しみは、ハイボールを片手に海外ドラマを鑑賞するか、マントノン侯爵夫人に会うこと。好きなマシン語は、EB FE。

柳下 元
リバースエンジニアリング(マルウェア解析)を担当。動的解析では動いてくれないマルウェアの皮を一枚一枚剥がしていく職人技が持ち味。

凌 翔太
CTF、IoTハッキング、マルウェアペンテストツールの開発を担当。Black Hat/DEF CONにてツールを発表。セキュリティキャンプ講師、SECCON実行委員。

政本 憲蔵
インフラ分析とOSINT分析を担当。
Back Orifice/NetBusの時代からRATに興味を持ち現在に至る。好きなことはMaltego Transformの開発とレゴブロック。

BlackHat