MBSD® MBSD®

国内企業を騙る日本語ランサムウェアの解析

日本時間202189日の19時頃、国内企業を騙った以下のファイル名を持つランサムウェアがVirusTotal上にアップロードされたことを弊社の調査により確認しました。

  • NTT総合システムチェックソフトウェア(Ver1.0).exe

該当ファイルは以下の図の通り、アイコン情報を持たないEXEファイルとして作成されています。

01.png

図 1 国内企業を装ったファイル名を持つランサムウェアの検体

VirusTotalへアップロードされた際のアップロード元はJPとなっており、日本国内からであると考えられます。

02.png

図 2 日本国内からアップロードされたことがわかる様子

本検体のプロパティ情報には、デジタル署名は付与されておらず、以下のようにランサムウェアであることを示す「Rasomware2.0」(nが抜けている)という文字列が含まれています。(※以下の画像の通りransomwareではなくrasomwareとnが抜けている文字列が使用されています)

03.png

図 3 検体のプロパティ情報

本検体の開発言語はC#であり、コードの難読化は施されていません。

04.png

図 4 C#で開発されたことを示す解析情報

以降で、本検体の挙動について解説していきます。

■検体の挙動

本検体は実行の際に管理者権限が必要となるよう開発されており、実行ファイルをダブルクリックすると以下の図のようにUACが表示されます。

05.png

図 5 検体を実行すると表示されるUAC

上記UACで「はい」を選択すると本検体が動作を開始し、まもなく以下のような日本語の警告メッセージが掲載されたウインドウが表示されます。

後ほど触れますが、このウインドウは警告メッセージの文字量とウインドウサイズが釣り合わずGUIのサイズが固定化されてしまっているため、以下のように警告メッセージが一部表示できていないことがわかります。

06.png

図 6 実行すると表示されるウインドウ(一部が表示できていない)

上記の脅迫文の内容は、国内の実在する企業を騙りコンピュータ上のファイルを暗号化しコンピュータの使用をブロックしたとするもので、解決するには問題解決専用ヘルプセンターと称するメールアドレスへ問い合わせパスワードを入手するよう誘導する内容になっていますが、誘導先のメールアドレスはダークWebでよく使用される匿名性が高いProtonMailが指定されているものの上記の図のように攻撃者がメールアドレスの一部を書き間違えており、結果的にユーザーがこの警告文に記載されたメールアドレスに連絡を試みたとしても攻撃者と連絡を取ることは困難であると考えられます。

■主な挙動の一覧

この検体は、上記の警告文が掲載されたウインドウを表示すると同時に、裏で以下の不正挙動を行います。

  • キーボードおよびマウス入力を無効化(感染端末を操作不能とさせる)
  • タスクマネージャの起動を不可能に設定
  • 壁紙の設定を削除
  • OS再起動後のログオン時にエクスプローラーが起動しないように設定を改ざん(これにより端末上の操作を不可能とさせる)
  • 一部のファイルを削除(隠しファイル属性を持つファイルおよびiniファイル)
  • ユーザファイルの暗号化(サブディレクトリを含む)

- デスクトップ配下の全ての種類のファイル

- %userprofile%\Downloads配下の全ての種類のファイル

以下は、上記の主な挙動に関わるコードの一部です。

07.png

図7 主な挙動に関わるコードの一部

■本来用意されたウインドウとファイルを復号する手順

なお、本検体はプログラムとしてみた場合においても作りが非常に雑であり、前述の通りGUIのウインドウサイズが固定化されているためにウインドウの一部が表示しきれていません。そのため、逆コンパイルによる解析でウインドウサイズを強制的に変更したバイナリに書き換えた結果、実際には以下のようなウインドウを持つことがわかりました。

08.png

図8 本ランサムウェアが持つ本来のウインドウを強制的に表示させた様子

このウインドウを見ると、実在する企業のロゴ画像に加えブロック解除締め切りまでのカウントダウン情報、および暗号化されたファイルを復号するためのパスワードの入力欄とボタンが配置されていることがわかります。

今回の解析により、上記で求められる復号パスワードは以下の文字列であることが判明しました。

  • NttHukugen001

なお、実際の感染時においては、前述の通りGUIの一部が隠れてしまうためパスワードの入力欄やボタンが見えず、上記パスワードの入力が困難となります。ただし、以下の復号手順に従って操作することで入力することが可能です。

復号手順1)上記パスワードをクリップボードにコピーしておく

復号手順2)警告文が表示されたウインドウをマウスで一度クリックし選択状態にする

復号手順3)キーボードのCTRL+Vを押す(見えないがこれでパスワードを貼り付けられる)

復号手順4)キーボードのTABを押す(見えないがこれで「ブロックを解除」ボタンにフォーカスが映る)

復号手順5)キーボードのENTERキーを押す(見えないがこれで「ブロックを解除」ボタンが押される)

上記手順の結果、パスワードの入力が成功すると「UNLOCKED」というウインドウタイトルと「The key is correct」と記載されたダイアログメッセージが表示され、禁止されていたタスクマネージャの設定や、OS再起動後のログオン時の設定などのレジストリ値が元に戻されるとともに、暗号化済みのファイルが復号されます。

■ファイルの暗号化挙動

09.png

図9 復号パスワードを入力した際の挙動

本ランサムウェアがファイルを暗号化する際、共通鍵暗号方式であるAES暗号のCBCモード(鍵長は256ビット)を使用し、鍵には先ほど記載した文字列である「NttHukugen001」という文字列のSHA256ハッシュ値を使用します。

以下は、ファイルを暗号化する際の処理であり、上記の文字列をハッシュ値の生成に使用しています。

10.png

図10 共通鍵暗号方式であるAES暗号で暗号化を行う関数の処理

続いて以下は、暗号化されたファイルを復号する際の処理ですが、同じパスワード文字列が確認できます。

11.png

図11 暗号化されたファイルを復号する関数の処理

暗号化されたファイルは、暗号化後も元のファイル名と同じままとなりファイルの中身だけが書き換えられ、暗号化対象のファイルは特定の拡張子などではなくすべてのファイルの種類が対象となります。

12.png

12 暗号化される前後のファイルの中身を比較した様子

■その他の挙動

このランサムウェアは、その他の挙動として、以下のプロセスの存在を一定間隔(300ms)ごとにチェックし、存在する場合は該当プロセスのウインドウを「非表示」にする機能があります。

強制終了するのではなく非表示にするというこの挙動は、一般のマルウェアやランサムウェアと比較すると珍しい手法と言えるでしょう。

  • cmd
  • regedit
  • Processhacker
  • sdclt

以下は、実際にウインドウハンドルに対しShowWindow関数を用いて0の引数を渡すことでウインドウを非表示します。

13.png

図13 特定のプロセスのウインドウを非表示にする処理

ただし、ProcessHackerの実際のプロセス名は「ProcessHacker.exe」であり、攻撃者は上記の通り小文字の文字列で指定してしまっているため、結果的にProcessHackerはこの処理の影響を受けません。

14.png

図14 Process Hackerの実際のプロセス名は大文字が含まれる

本ランサムウェアは感染後1時間が経過するとOSを強制的に再起動するように作成されていますが、OSが再起動するのは「Ransomware2.0.exe」というプロセスが存在している場合に限ります。再起動を行う場合、同時にプロセス名が「Ransomware2.0.exe」であるプロセスの強制終了を行う挙動も存在します。この「Ransomware2.0.exe」というプロセス名は、冒頭でも触れた通り本検体のプロパティ情報に含まれていた「元のファイル名」欄にあるファイル名と類似しているため、本来は自身を終了する処理を想定した機能と考えられますが、VirusTotalにアップロードされたファイル名である「NTT総合システムチェックソフトウェア(Ver1.0).exe」とは機能上乖離があり不可解な点として残ります。(ただし後述の通り、攻撃者が他のコードを流用したと思われる形跡があり、本攻撃者がこの点を変更するのを忘れて(または気づかずに)残してしまったミスであると想定されます)

一方で、プロセス名が今回のファイル名「NTT総合システムチェックソフトウェア(Ver1.0).exe」である場合、ファイルの削除や暗号化など他の操作は行われますが、OSの再起動は発生しません。

15.png

図15 強制的にOSを再起動しつつ特定のプロセスを強制終了させる処理

なおOSの再起動後は、前述の通りシステム設定を変更されているため、ログオン後に何も表示されず操作が行えない状況になります。

16.png

図 16 再起動後にログインすると操作不能になる端末の様子

■その他の補足情報

なお、本検体はプログラムコードの中に「Thawouse」という名前の関数が存在します。この関数はキーボードおよびマウス入力をブロックする関数「FreezeMouse」と対をなす動作をもつ関数で、ユーザの入力を再度受け入れる状態に戻す処理を行う処理が記載されています。

17.png

17-2.png

17 FreezeMouse関数とThawouse関数

Thawouse」という綴から一見すると中国語である可能性も疑いましたが、その後の調査の結果、プログラマーのサンプルコードや知見を共有し合うコミュニティーサイト「stackoverflow」のとあるスレッドで、以下の類似するコードが存在することがわかりました。以下のサンプルコードと上記のコードを見比べてみると、「Thawouse」という関数は「ThawMouse」という文字列であった可能性があります。そのため、本処理の作成者が単純に以下のサイトなどからコードを書き写した際に、「M」の文字を書き漏らしたものであるという想定が成り立ちます。

18.png

図 18 stackoverflowで発見された本検体の処理に類似するサンプルコード

■本検体のバグ

本検体は、実行時の状況によっては検体を実行してまもなく以下のエラーが表示されます。

これは意図的なエラー表示ではなく、デスクトップなどのユーザーフォルダに検体のEXEを配置し実行した際に誤って自分自身を暗号化しようとして失敗する際のエラーであり、このようにファイルのアクセス拒否に対しても一切のエラーハンドリングを施しておらず、プログラムとしての完成度は低いと言えます。

19.png

図19 自分自身のEXEを暗号化しようとして失敗するエラー

■開発者環境の情報

本ランサムウェアは以下の開発環境で開発されたことがわかっており、開発者のユーザー名は「ANONMIME」であることがわかります。

  • C:\Users\ANONMIME\Documents\Ransomware_source_code-master\Ransomware_visual_items\Rasomware2.0\Rasomware2.0\obj\Release\Rasomware2.0.pdb
    (※以下の画像の通り、ransomwareではなくrasomwareとnが抜けている文字列が一部で使用されています)

20.png

図20 バイナリに埋め込まれたランサムウェア開発者の開発環境を示す文字列

■結論と考察

本検体は、金額要求こそ提示していないものの、ユーザのファイルを暗号化し5日間以内に解除をしない場合二度とコンピュータを使用できなくなる旨の脅迫を行っていること、また、正しいパスワードを入力すると暗号化されたファイルを復号できる復号処理も備え付けていることなどから、ランサムウェアの一種であるといえます。

一方で、共通鍵暗号方式のみを採用し復号のための鍵が検体自体に埋め込まれていることから、攻撃者とコンタクトをとらずとも復元が可能なレベルの検体であり、昨今のサイバー攻撃で見られる検体と比較してもランサムウェアとしては高度な部類には該当しません。

ただし、昨今の攻撃においてはランサムウェアを実行する前にすでに情報の窃取を行っており、ランサムウェア自体は目くらましや調査を阻害するために使用されるケースも中にはあることから、ランサムウェア自体の機能やレベル感だけで安全か危険かを語ることは難しくなっているともいえます。

■類似検体の情報について

なおその後の調査で、Github上に本検体と非常に類似する研究用ランサムウェアのコードが存在することを確認しており、今回の攻撃者は該当のGitHubのリポジトリからソースコード一式をダウンロードし、自身で日本語の警告文と企業アイコンおよび企業ロゴを埋め込むことでオリジナルな日本語のランサムウェアに作り直したものと推測されます。

21.png

図21 GitHub上に存在する類似検体と今回の検体のGUIの比較

■ハッシュ値

今回の検体のハッシュ値:22160e471495c0453f311687b4e99ae552d2b6df3c6bfdc351558cb01f25cef4

末尾で触れた類似検体のハッシュ値:df7a7545740cb004efb243a6b99eb19a82c06dd49e5cd40f498a2c3ef9cf1d11

コンサルティングサービス事業本部
サイバーインテリジェンスグループ

吉川孝志、菅原圭

シェアする ツイートする