脅威のスポットライト:ポリモーフィック型ランサムウェアVirlock

By The Cylance Threat Research Team

本ブログ記事は、2019年7月15日に米国で公開された抄訳版です。原文はこちらからご覧頂けます。

はじめに

2014年に初めて発見されたVirlockは、ポリモーフィックな(多様な形態を持つ)ファイル感染型のランサムウェアです。2016年にはVirlockの新たな機能、すなわち共有アプリケーションやクラウドストレージを介して拡散することが明らかになりました。実行されたVirlockは、それ自体の3つのインスタンスをドロップします。インスタンスの1つはウイルスをファイルに感染させ、1つはマシンをロックし、もう1つはサービスとして登録することで永続化メカニズムを構築します。攻撃者は、システムのロック解除を求める被害者に対してビットコンの支払いを要求します。

Virlockはポリモーフィックな性質を持ち、どのインスタンスもヒューリスティックの観点から見て異なります。つまり、シグネチャベースのアンチウイルス(AV)ソリューションを巧みに回避する戦術を持っているということです。例えば、Virlcokは攻撃の第1段階において自身のインスタンスを3つドロップし、各インスタンスは別々の難読化メカニズムと永続化メカニズムを実装しています。Virlockは、各インスタンスが実装する機能に変化を与えることで、3つのインスタンスすべてがシグネチャベースの検知システムを確実に回避できるようにしています。

技術的な解析

Virlockが感染していないマシンで最初に実行されるときには、Virlockは元のルアー(罠)ファイルを復号して実行します。すでに感染しているマシンで実行されるときには、身代金が支払い済みであるかどうかをチェックします。身代金が支払われているマシンの場合、Virlockはホストファイルを復号しますが、悪意のあるアクションはそれ以上実行しません。身代金が支払われていないマシンの場合は、ホストファイルを復号せずに悪意のあるアクションを実行します(図1)。


 
図1:実行フロー

このマルウェアファイルは高度に難読化されており、解析を困難にするアンチデバッグ手法を備えていました。調査時には、第2段階のペイロードのデコードと起動が確認されました。



図2: decode_run_second_stage へのジャンプ

復号ルーチンでは、インクリメンタルなxorループを使用して第2段階が復号されます。このルーチンでは、ファイルが完全に復号されていることが検証されてから、第2段階が呼び出されます。



図3:復号ループと第2段階の呼び出し

次に第2段階では、第3段階のスタブ関数によって仮想的に実行される命令のデータを復号します。復号された命令バイト列は“execute_opcode”関数のRVA 0x1032と0x103Bの間に注入されます(図4を参照)。



図4:“inc edx”に続けてNOPの連続がスタブ関数に注入されている

ペイロードの実行

ランサムウェアは、実行時にそれ自体の3つのインスタンスを3つの異なる場所にドロップします。

インスタンス1:

ファイルパス:%AllUsersProfile%\<ランダムなフォルダー名>\<ランダムなファイル名>.exe



図5:元のファイルによってドロップされた最初のインスタンス

インスタンス2:

ファイルパス:%UserProfile%\<ランダムなフォルダー名>\<ランダムなファイル名>.exe



図6:元のファイルによってドロップされた2番目のインスタンス

インスタンス3:

ファイルパス:%AllUsersProfile%\<ランダムなフォルダー名>\<ランダムなファイル名>.exe


図7:元のファイルによってドロップされた3番目のインスタンス

永続化

Virlockはシステムレジストリを変更して、感染したシステムでの永続性を維持します。ランダムに命名されたそれ自体の2つのインスタンスに対して、2つのレジストリ値を “CurrentVersion\Run” レジストリキーで設定します。それらの設定に基づいて、ユーザーがログオンするたびに以下のプログラムが実行されます。



図8:レジストリの変更による永続化

Virlockは、ユーザーのログオン時に実行するWinLogonプログラムを指定するレジストリキーを変更します。



図9:レジストリの変更による永続化

Virlockによるレジストリキーの変更:



図10:レジストリの変更による永続化

3番目のインスタンスは、ランダムに命名されたサービスの値を設定します。



図11:新しいサービスの登録による永続化

ファイル感染

自身の3つのインスタンスをドロップしたVirlockは、感染させる特定のタイプのファイルが存在するかどうかをチェックします。このマルウェアは標的となるファイルが見つかると、それを暗号化します。そしてウイルスのコードのコピーに、暗号化されたファイルの内容を付け加え、それを元のファイルと置き換えます。

  Targeted File Types:

  .exe

  .doc

  .xls

  .pdf

  .ppt

  .mdb

  .zip

  .rar

  .mp3

  .mpg

  .wma

  .png

  .gif

  .bmp

  .jpg

  .jpeg

  .psd

  .p12

  .cer

  .crt

  .p7b

  .pfx

  .pem

 

Virlockは、感染したすべてのファイルにファイル拡張子「.exe」を追加し、レジストリを変更してこの拡張子を隠します。ユーザーをだまして、感染したホストファイルを実行させようとしているのです。



図12:ファイル拡張子を非表示にするためのレジストリの変更

Notepad++実行可能ファイルにおける感染前と感染後の例を以下に示します。

図13:感染前と感染後

ロックされた画面

Virlockがファイル感染ルーチンを実行すると同時に、2番目のスレッドが被害者のマシンの画面をロックします。この処理中に、Virlockはexplorer.exeプロセスとタスクマネージャーもシャットダウンします。レジストリを検索してデバイスの地理位置情報を確認し、被害者の場所に応じてメッセージを表示します。画面ロックのメッセージは、ビットコンで身代金を支払うように被害者に要求するものです。



図14:マシンのレジストリ地理位置情報の確認



図15:ロック画面のメッセージ

Virlockの重大性と懸念すべき理由

Virlockが初めて発見されたのは2014年ですが、2016年と2017年にも再び出現しています。Virlockが出現するたびにそれまでにはなかった機能を備えているということは、サイバー犯罪者がこのマルウェアの開発と更新に積極的に取り組んでいることを示しています。Virlockは3つのインスタンスから成る巧みな攻撃戦略を展開し、場所に応じた身代金要求画面を表示して、従わない場合は法的手段に訴えると偽ってユーザーを脅します。ランサムウェア攻撃で組織が被る損失額がインシデントあたり約13,000ドルであることを考えると、Virlockは企業にとって見過ごすことのできない脅威です。

BlackBerry CylanceがVirlockを阻止

BlackBerry Cylanceが使用する人工知能(AI)に基づくエージェントは、何百万もの安全なファイルと安全でないファイルによる脅威検知のトレーニングを積んでいます。そのため、特定のファイルシグネチャではなく、無数のファイル属性に基づいて脅威を発見できます。Virlockは自身のコードを変更できるポリモーフィック型の脅威ですが、AIを活用した弊社のセキュリティエージェントは、Virlockといえども回避することはできません。このソリューションは、特定のファイルシグネチャではなく、何百万もの脅威の特徴に基づいて脅威を分析し、判定を下します。ゼロデイ脅威に対する予測優位性をもたらすBlackBerry Cylanceは、新旧両方のサイバー攻撃に対するトレーニングを重ねて効果を上げています。

Tags: