ブログ
次の結果を表示 
次の代わりに検索 
もしかして 

Juniper Sky Advanced Threat Prevention 対 Locky マルウェア

投稿者 J-Net_Japan_Blog_Team ‎10-19-2016 10:00 AM - 編集済み ‎11-08-2016 08:59 PM

はじめに

「Locky」は今年の 2 月 16 日に出現した新しいランサムウェア マルウェアです。ランサムウェアとはコンピューターに感染するマルウェアの 1 種のことで、何らかの方法でコンピューターまたはコンピューター上のファイルへのアクセスをブロックします。ランサムウェアの典型的な技法は、ドキュメントやその他の重要なファイルを暗号化することで、ファイルコンテンツへのアクセスを不可能にし、身代金の支払いを要求するというものです。通常、身代金の支払方法にはビットコインが使用されます。Locky の場合、ほとんどの人の支払いは 0.5 または 1 BTC(約 200~400 米ドル)でした。

 

このマルウェアに「Locky」という名前が付けられたのは、暗号化されたファイル名のすべてが拡張子「.locky」で書き換えられているためです。

 

以下の 2 つの悪意のあるファイルが Locky の一部として配信されています。

 

  1. システムを感染させるために使用される Microsoft Word ドキュメント
  • SHA-256:97b13680d6c6e5d8fff655fe99700486cbdd097cfa9250a066d247609f85b9b9
  • 長さ:66048 バイト
  1. ドロップされるランサムウェア実行ファイル:
  • SHA-256:17c3d74e3c0645edb4b5145335b342d2929c92dff856cca1a5e79fa5d935fec2
  • 長さ:184320 バイト

アンチウイルス対 Locky

従来のセキュリティ システムは Locky の Word ドキュメントをどのように対処したのでしょうか。

 

シグネチャ ベースのセキュリティ ソリューションが新しい脅威を検知できないことが多いのはよく知られています。しかし、この Word ドキュメントが初めて配信されたときには、ほとんどすべてのアンチウイルス ソリューションが検知に失敗したのです。最初の配信から丸一日経った時点でも、VirusTotal で利用可能なアンチウイルス ベンダー 54 社のうち、脅威を検知したのはわずか 3 社でした。

 

Sky ATP 対 Locky

Locky の Word ドキュメント

Sky ATP は Locky の Word ドキュメントをどのように捉えたのでしょうか。

 

Sky ATP は一連の解析エンジンを使用して、ファイルのオブジェクトが悪意のあるものかどうかを判別します。ジュニパー内で開発された 2 種類の技術は Locky を脅威として判別することに成功したので、私たちは両方の Locky ファイルに 10 点満点中 7 点(高い脅威レベル)を付けました。

 

具体的には、Word ドキュメントに対して以下を実行しました。

  1. Sky ATP のドキュメント解析システムは、この Word ドキュメントが悪意のあるものだと判別しました(これは当社システムがドキュメントの悪意性を判定するために最も重要な要素でした)。
  2. 当社の動的解析システムも Word ドキュメントに悪意があると判定しました。

Sky ATP には潜在的な悪意のあるファイル オブジェクトから情報を抽出する新しいさまざまな技法があります。私たちはドキュメントや実行可能ファイルの悪意の判定に使用する悪いドキュメントの属性を明らかにせずに、Locky の疑わしさを示し、この脅威の悪意の判別に使用可能なデータの豊富さを知ってもらいたいと思います。

 

当社は、マルウェア データベースから良いドキュメントと悪いドキュメントを幅広く収集し、Locky の特性を検証しました。以下では Locky にみられる特性、そしてそれらの特性が良い Word ドキュメントと悪いドキュメントに見られる頻度を紹介します。

良いドキュメント

悪いドキュメント

特性

0.9%

84.4%

ドキュメントにマクロがある

6.6%

50.2%

タイトルなし

7.5%

45.3%

単一パラグラフのドキュメント

0.1% 未満

39.6%

難読化機能の呼び出しが見つかったもの

可変

27.6%

Code Page 1251 Windows Cyrillic(スラブ語)

 

マクロが含まれるドキュメントを単純にすべてブロックすることはできません。マクロは良いドキュメントにも使用されることが多いからです(複雑なドキュメントやスプレッドシートにはさらによく使用されています)。しかし、Locky の場合、それは極めて悪い徴候です。同様に、Code Page 1251 が含まれるドキュメントもすべてブロックしてはいけません。ちなみに Locky は東ヨーロッパの国(少なくともシステム構成にキリル文字を使用している人)が発祥であることが確認されているようです。

 

それでは、コード トレースを実行して、マクロの動作を詳しくみてみましょう。

 

ランサムウェア Locky の感染は、Visual Basic マクロが含まれる Microsoft Word ドキュメントから始まります。デフォルトで、このようなマクロが無効化されていることがよくあります。ユーザーは、空白や書式が誤っているページが表示された場合、ページを適切に表示するためにマクロを有効化するよう指示されます。

 

1.png

ユーザーがこのドキュメントのマクロを有効化すると、埋め込まれた Visual Basic スクリプトが感染プロセスを開始します。これらのスクリプトはマクロの本当の意図を隠すために難読化のさまざまな技法を使用していますが、Sky ATP の静的および動的解析エンジンがこのような難読化の試行を検知します。

 

2.png

 

これにより最初の VBA ルーチンが呼び出されます。

これにより最初の VBA ルーチンが呼び出されます。

 

.png

 

UserForm1.Label1.Caption の値は、スラッシュで区切られた値から成る文字列です(これらがスクリプトの機能の難読化に使用される方法は後ですぐに説明します)。

 

4.png

 

Split 関数の実行後に、次の要素を持つ配列 DrinkSun が得られます。

 

5.png

 

実行は「ErrExit」ラベルにジャンプして継続されます。

 

6.png

 

これにより、http リクエストを作成する Microsoft.XMLHTTP オブジェクト KogdaGe_1、Adodb.Stream オブジェクト KogdaGe_2 が順に作成されます。GoTo ステートメントは、自動解析を妨害するためだけに存在している不要な(そして無効の)コードの大きなセクションを飛び越えます。

 

7.png

 

次に、スクリプトは Shell.Application オブジェクトと WScript.Shell オブジェクトを作成し、Wscript.Shell オブジェクトの「Process」環境変数を保存します。これには値が次のフォームで含まれています。

 

PROCESS:TEMP=C:\path\to\temp\dir

 

ここで参照される TEMP ディレクトリは、リモート サーバーからダウンロードされた悪意のあるバイナリの保存に後で使用されます。

 

8.png

 

 ここにも別の難読化が存在します。配列 KogdaGe_7 にはエンコードされた URL が含まれています(実際の URL と難読化されたアルゴリズムは、Locky のサンプルによって異なります)。この計算を Python で実行すると、次の結果が得られます。

 

9.png

 

このように、配列 KogdaGe_7 は、静的解析を妨害するためにエンコードされた悪意のあるバイナリの URL を表します。

 

10.png

 

そしてスクリプトは、先程デコードした悪意のある URL と HTTP 接続するために作成された Microsoft.XMLHTTP オブジェクト(「GET」)を使用します。

 

11.png

 

HTTP 接続は「http://www [DOT] jesusdenazaret [DOT] com [DOT] ve/34gf5y/r34f3345g [DOT] exe」のバイナリにリクエストを送信するために使用されます。

 

12.png

 

Process 環境変数の TEMP ディレクトリ値が抽出され、KogdaGe_4 として保存されます。

 15.png

 

次に、ダウンロード済みのバイナリを保存するフル パスを構成するために、TEMP ディレクトリとファイル名を連結します。この時点で、無害にみえるファイル名「ladybi.txt」が「ladybi.exe」に変換されることに注意してください。

 

large.png

 

ここでは難読化に用いられた「CallByName」ルーチンの最初の使用がみられます。この呼び出しは KogdaGe_2.Type = 1 に相当します。

 

17.png

 

上記で作成された Adodb.Stream オブジェクトが開かれます。

 

18.png

 

この CallByName 関数の呼び出しは rbp = KogdaGe_1.responseBody に相当します。

 

large (1).png

 

これは KogdaGe_2.write(KogdaGe_1.responseBody) に相当します。ダウンロードされたバイナリは Adodb.Stream に保存されます。

 

19.png

 

KogdaGe_2.savetofile("<temppath>\ladybi.exe", 2) に相当します。

 

20.png

 

そしてスクリプト実行の完了です。ladybi.exe として保存された悪意のあるプログラムが実行されます。

 

Locky の実行可能ファイル

Sky ATP は Word のマクロがドロップした実行可能ファイルを検知するために動作解析を使用します。この判別はやや複雑ですが、Locky の動作は多くのマルウェアと似ています。

 

良いアプリケーション

マルウェア

特性

21.8%

49.5%

ホストのファイルにアクセス

27.4%

50.4%

DNS 解決

43.6%

67.1%

sleep 呼び出しの数が過剰

0.2%

12.2%

多くのドメイン名の DNS 解決で多数のエラーが発生

2.4%

9.7%

新しいコードの生成(一般的にシェルコードの解凍や拡張)

1.7%

3.9%

データを Web サーバーに投稿

0.1% 未満

1.9%

Windows にすでに存在する名前を付けて PE ファイルを作成

0.2%

1.1%

システム プロセスがネットワークに接続

 

難点は Locky を良いソフトウェアから見分けることです。ご覧のとおり、多くの良いソフトウェアが同様の動作をします。良いソフトウェアの場合でも DNS ルックアップに失敗することがあります。したがって、この情報すべてをまとめる優れた意思決定システムを持つことが重要です。

 

ドキュメントの Visual Basic マクロが Locky の実行可能ファイルをダウンロードした後、暗号化と身代金のプロセスが開始されます。まず、マルウェアは自らを「svchost.exe」という名前で一時ディレクトリにコピーして再起動します。「svchost.exe」は、ダイナミックリンク ライブラリが実行するサービスをサポートする Windows の一部として配信される実行可能ファイルの名前です。そのためマルウェアはすでに疑わしい動作をしています

 

21.png

 

次に、コマンド アンド コントロール(C&C)サーバーと接続し、キー(各コンピューターに固有)を取得します。このキーを使用してユーザーのファイル(およびネットワーク ドライブ上のファイル)を暗号化し、値(および autostart キー)をレジストリに書き込みます。

 

C&C サーバーへの接続の一部として、Locky はさまざまなドメイン名の DNS ルックアップを実行します。ドメイン名の一部は配信時には存在していませんでした。

 

22.png

 

 

23.png

 

 

24.png

 

これが完了すると、ユーザーのファイルは暗号化されたバージョンに置き換えられます。

 

Sky ATP の内部では、この情報すべてを Sky ATP マシン ラーニング判定エンジンに投入し、悪意のあるコードの一部と解析対象のコードの動作を比較します。

 

マルウェア実行可能ファイルを解析した後で、判定エンジンは 10 点満点の 7 点の脅威スコアを付けます(7 以上のスコアは非常に高い脅威レベルとみなされます)。

 

25.png

 

身代金情報が含まれているテキスト ファイルがポップ アップ表示され、被害者に身代金の情報を表示します。

 

26.png

 

それでも不十分な場合、Locky は親切にも同じ指示が含まれた画像ファイルを開き、ユーザーのデスクトップの壁紙を変更してこの画像を表示します。

 

28.png

 

マシン ラーニング

Sky ATP のマシン ラーニング判定エンジンの実行内容をそのまま見せることはできません。結局は、これらの 2 個のファイルだけで、どれだけ多くの特性を検証し、最終的にどれだけ多くの特性をマルウェアの分類に活用しているかということです。

 

ファイル

検証される特性の数

Locky の Word ドキュメント

最大 216,000

Locky の実行可能ファイル

最大 20,000,000

 

明らかにこれらの特性をすべて表現するのは不可能です。しかし Sky ATP のマシン ラーニングの動作の概要を説明するために、Word ドキュメントの特性群を取り上げ、それを二次元にしました。

 

X 軸は分離超平面からの距離です。目盛は 0 から 1 までです。良いものと悪いものを区別する超平面からドキュメントの特性までの距離を示しています。

 

これらの特性を超平面に投影し、2 個のコンポーネントに分解します。1 番目のコンポーネントについて、0 から 1 までの間の尺度で示すと Y 軸が得られます。

 

1 番目のコンポーネントは分離超平面自体と強い相関関係があります。つまり、良いドキュメントと悪いドキュメントを水平に Y=0 で分割した場合、X=0 で水平に分離した場合とほぼ同じになります。

 

このグラフでは、赤い点は良いドキュメントの例で、青い点は悪いドキュメントの例です。

 

シェーディングはマルウェアであるドキュメントが当社のモデルに提供される確率を表しています。したがって、青いシェーディング エリアのものはマルウェアに分類される確率が 0 に近いのですが、赤いシェーディング エリアのものはマルウェアに分類される確率が 1 に近くなります。

 

黄色で示した Locky は、アルゴリズムがドキュメントの特性に基づいて良いドキュメントと悪いドキュメントを区別する方法を学習した後は、超平面の右側に落ち着いています。

 

29.gif

 

特筆すべきことは、このアルゴリズムは Locky を予め検知しませんでしたが、ドキュメントの特性に基づいて悪意があると判定できたということです。

 

謝辞

痕跡と動作のデータに関してご協力してくださったアッシャー・ラングトン氏、そしてこの記事で使用した追加広報を提供してくださったピーター・ゲール氏とローマン・シナエフ氏に謝辞を述べます。

 

関連資料

Locky の動作の概要をまとめた記事をご紹介します。