This post is also available in: English (英語)
概要
先日、Palo Alto Networksの脅威インテリジェンスチームUnit 42は、中東の複数の政府機関が、これまで見たことのないランサムウェア ファミリを使った攻撃を受けているのを目撃しました。このマルウェア内に埋め込まれている文字列に基づき、私たちはこのマルウェアを「RanRan」と命名しました。マルウェアが提供する身代金要求文が標的型の類であること、およびこのマルウェア ファミリのサンプルのセットが小規模であることから、私たちはこの攻撃が本質的に標的型であったと信じています。私たちの分析では、この攻撃と最近のShamoon 2攻撃との間に何の関係も見られません。
身代金要求文は、具体的には、被害者にパブリックなサブドメインを強制的に作成させることで、政治的な声明を強要しようとします。その際、サブドメインには中東の政治指導者に対する暴力を主張し鼓舞するような名称が付けられます。
マルウェア自体は極めて初歩レベルのものであり、ファイルの暗号化処理において多数のミスがあります。これにより、Unit 42は、RanRanが暗号化した一部のファイルを復号化できるスクリプトを作成することができました。
RanRanの分析
マルウェアの作成者はこのペイロードに「Ran」と命名しました。この名前は、バイナリ内部にある下記のデバッグ パスの中に現れています。
C:\Users\pc\Desktop\Ran\Ran\Release\Services.pdb
このマルウェアは初めて実行された場合、下記のミューテックスを作成します。
- Services1.0
このミューテックスが既に存在している場合、RanRanは終了します。これにより、RanRanのインスタンスが一時に1個しか実行しないことが保証されます。
RanRanは、「C:\services.exe」として自身のコピーを作成することで、システム上に自身をインストールします。このコピーは下記のbase64エンコード文字列を含んでおり、この文字列を使ってAutorunキーをシステム上に作成し、システムがブートする度に自身を起動します。
TlFRICJVWFBIXEZCU0dKTkVSXFp2cGViZmJzZ1xKdmFxYmpmIEFHXFBoZWVyYWdJcmVmdmJhXEp2YXFiamYiIC9zIC9pIFlibnEgL2cgRVJUX0ZNIC9xIA==
ペイロードはこのbase64文字列をデコードし、各アルファベットの文字に対して13を加算または減算するルーチンを適用します。私たちはこの文字列をデコードするスクリプトを作成しました。これによる出力は以下のようになります。
![](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2017/82259/targeted-ransomware-attacks-01.png)
RanRanはこの文字列を使ってレジストリ キーを作成します。レジストリ キーは、下記のレジストリ クエリ内に確認することができます。
![](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2017/82259/targeted-ransomware-attacks-02.png)
このキーは、システムが起動するたびに「C:\services.exe」を実行することを意味します。
ウイルス駆除への対策およびシステム使用の制限
RanRanは、システムから駆除するためにRanRanを除去することが難しくなるようにします。そのために、「task manager (タスク マネージャー)」というタイトルのウィンドウを絶えず監視し、見つけては閉じます。この結果、ペイロードのプロセスをkillすることが困難になります。
さらに、マルウェアは以下のサービスおよびプロセスを絶えず監視し、周期的にこれらを停止します。
- MSSQLSERVER
- SQLWriter
- MSSQL$CONTOSO1
- SQLServerAgent
- MSSQL$SQLEXPRESS
- Microsoft Exchange Information Store
- OracleASMService+ASM
- OracleCSService
- OracleServiceORCL
- OracleOraDb10g_home1TNSListener
- usermanager
- outlook
- exchange
- sql
作成者がこれらのサービスおよびプロセスを停止することにしたのは、関連するデータベース ファイルのオープン状態のハンドラをできる限り制限することで、これらのファイルを適切に暗号化できる機会を増やすためだった可能性が高いと、私たちは信じています。
主要機能
RanRanの主要目的は、システム上のファイルを暗号化し、ファイルを復元するための身代金を被害者に要求することです。このツールは、下記ファイル拡張子に基づき、幅広い種類のファイルを集めて暗号化します。
|
|
|
RanRanが検索するファイルには、Microsoft Officeファイル、Adobe Acrobatファイル、画像、Webページ、SQLクエリ、アーカイブおよびバックアップ ファイルが含まれています(しかし、これらに限定されません)。
RanRanは、攻撃者がRSA公開鍵をC:\pubkeyという場所に置くのを待ちます。公開鍵が提供されない場合、RanRanはMD5ハッシュ文字列“aaoy09aaqqq@#433dd56fdfdf$Fss45*ss”を使ってファイルを暗号化します。
さもなければ、ランダム生成した文字列を「C:\WINDOWS\pass」という名前のファイルに書き込みます。この文字のMD5は、RC4パスワードとして使われます。新しいパスワードが、下記サイズのファイルのグループ用に生成されます。
- 0 – 5 MB
- 5 – 30 MB
- 30 – 100 MB
- 100 – 300 MB
- 300 – 700 MB
- 700 – 2000 MB
- 2000 – 3000 MB
- 3000 MB以上
暗号化を行うたびに、特定のグループで使用される鍵は、指定のRSA公開鍵を使用して暗号化され、指定のファイルに次の表記で書き込まれます。
VictemKey_[lower_bound]_[upper_bound]
ここで、[lower_bound]は特定のグループにおけるファイル サイズの下限を、[upper_bound]は特定のグループにおけるファイル サイズの上限を表します。その結果、すべての暗号化を行った後で、次のファイルが書き込まれます。
- VictemKey_0_5
- VictemKey_5_30
- VictemKey_30_100
- VictemKey_100_300
- VictemKey_300_700
- VictemKey_700_2000
- VictemKey_2000_3000
- VictemKey_3000
暗号化を行う際には、新しいファイル拡張子「zXz」を追加することで、暗号化の対象ファイルの名前が変更されます。ファイルを暗号化した後、ペイロードは、ファイル名「zXz.html」を示したランサム メッセージを表示します。また、そのファイルを復号化するための指示も示します。以下のスクリーンショットは、ランサム メッセージを示しています。
![図1 RanRanランサム ノート](https://www.paloaltonetworks.jp/content/dam/pan/ja_JP/Images/blog/2017/82259/targeted-ransomware-attacks-03.png)
上記のランサム ノートは、いくつかの興味深い点を明らかにしています。その他の広く知られているランサムウェア ファミリとは異なり、RanRanは直接的には支払いを求めませんが、支払いに関するネゴシエーションを行う前に、政治的に物議をかもすような名前のサブドメインを作成するよう被害者を強制するとともに、このサブドメイン上にRansomware.txtファイルを配置します。このファイルには、「ハッキングされた」旨を示す文と、電子メール アドレスを含める必要があります。これらのアクションを実行することにより、被害者である中東の政府機関は、その国の指導者に対して、政治的な声明を出す必要に迫られることになります。また、Ransomware.txtファイルを配置することにより、ハッキングされた事実を公に認めるよう被害者を強制します。
前述のとおり、RanRanは、暗号化の発生時にいくつかのミスをしています。まず、再使用される鍵の付いた対称暗号(RC4)を使用していることです。また、暗号化したいくつかのファイルの元のファイルを削除していないことです。これにはいくつかの理由がありますが、そのうちの1つが、暗号化の対象であるシステム ファイルなどが、プロセスを実行することによって開かれていることです。元のファイル、暗号化されたファイルが存在し、その他の暗号化されたファイルでもRC4鍵が再使用されるため、いくつかのデータは復号化することができます。
これは、以下の条件を満たす、特定の状況にのみ当てはまります。
- 暗号化されたファイルと暗号化されていないファイルは、特定のファイル サイズ グループ(0-5MB、5-30MBなど)に区分けしておく必要があります。これら2つのファイルを使用することで、RC4ストリーム暗号を取得できます。
- 残りの暗号化されたファイルは、これまでに取得したストリーム暗号サイズよりも少ない必要があります。ファイルのサイズがこれよりも大きい場合は、部分的にしか復号化できません。
上記の条件を満たすファイルを復号化するための2つのスクリプトについては、ここをクリックしてください。これらのスクリプトは元のPython形式だけでなく、PyInstallerでコンパイルしたWindowsバイナリとして提供されています。
暗号化の調査によって、RanRanが次のコードを使用して暗号化機能を実行していることが明らかになりました。
https://github.com/eugenekolo/Charlie-2/blob/master/Hookcrypt/test/EncryptFile.cpp
公開ソース コードが再使用されていること、また前述のミスは、この脅威が比較的スキルの低い攻撃者によって引き起こされていることを示唆しています。
結論
全体的に見て、RanRanはランサムウェアの戦略の転換を示す興味深い展開です。この攻撃者は、純粋に金銭的な動機で動く代わりに、自国の指導者に対する消極的な声明を出すよう中東の政府機関に求めるという、ハッカーのアプローチを取ります。
マルウェア自体はそれほど高度ではなく、対称の暗号と公開コードを使用しています。マルウェア内にあるデバッグ文などのその他の兆候は、このことのさらなる裏付けになっています。
Palo Alto Networksのお客様は、次の方法で脅威から保護されています。
- WildFireがすべてのRanRanサンプルを有害であると正確に検出します。
- AutoFocusタグを使用してこの脅威を追跡できます。