本ブログは米国で2019年03月26日に公開されたUnit 42ブログ「Born This Way? Origins of LockerGoga」の日本語翻訳です。

header image


このUnit 42ブログでは、LockerGogaと呼ばれるランサムウェア攻撃について考察します。


LockerGogaは、1月にBleeping Computerが最初に報告したランサムウェアです。同社は報告のなかで当該マルウェアをフランスのエンジニアリング会社Altran Technologiesに対する攻撃と結びつけました。その後はいくつかの亜種がインターネット上で発見されており、それらはノルウェーのアルミニウム製造業者Norsk Hydroのほか、2つの化学系企業Hexicon、Momentiveに対する攻撃で使用されていました。

Unit 42でこれらの攻撃で利用されたマルウェアサンプルをレビューしたところ、脅威名の由来に疑問を抱くエビデンスが見つかりました。Bleeping Computerは「この脅威名はMalwareHunterTeamの発見したソースコードのパスに由来する」と報告していたのですが「LockerGoga」という文字列はAltran Technologiesへの最初の攻撃で使用されたコードのどこにも存在していなかったのです。
 

X:\work\Projects\LockerGoga\cl-src-last\cryptopp\src\rijndael_simd.cpp for SHA-256 bdf36127817413f625d2625d3133760af724d6ad2410bea7297ddc116abc268f

しかしながら、Symantecが報告したRansom.GoGalockerという名前で識別される古いランサムウェアの亜種で、この文字列が参照されていることが分かりました。ただしこの亜種はBleeping Computerの報告に記載されているサンプルには含まれていません。混乱を避けるため、私たちは初期の亜種とその亜種の祖先をLockerGogaの呼称で引き続き参照することにします。

弊社では動作とコードが最初の亜種と類似している31個のランサムウェアのサンプルを確認しています。本稿では、これらのサンプルの起源をさかのぼり、その進化について議論した後、その内部的な機能と、問題点について明らかにしていきたいと思います。
 

最初のLockerGogaサンプル

私たちが見つけた最も古い既知のLockerGogaのサンプル(SHA-256:bdf36127817413f625d2625d3133760af724d6ad2410bea7297ddc116abc268f)は2019年1月24日にVirusTotalに提出されていました。私たちは、このサンプルがAltran Technologiesへの攻撃に使用されたものだと考えています。ランサムウェアがどのようにしてAltran Technologiesのネットワークに感染したのか、感染後内部で拡散したのかどうかについてはわかっていません。
 

拡散

現在のLockerGogaは、標的ネットワーク上のべつのホストに感染することで自己増殖をしていくワームとしての機能はサポートしていません。 LockerGogaがSMBプロトコルを介してネットワーク上を移動する様子は観測されていることから、攻撃者は単純に手動でファイルをコンピュータからコンピュータにコピーしたことが示唆されます。
 

LockerGogaの特徴

このサンプルを正常に実行するには管理者特権が必要です。ただし、初期コードを実行するための具体的なメカニズムは分かっていません。実行されると、LockerGogaは感染したコンピュータと接続されているすべてのハードドライブ上のファイルを暗号化しようとします。すべての実行が終わると、ユーザのデスクトップに身代金メモを残します。この身代金メモには電子メールアドレスがふくまれており、これはおそらく復号化と支払いのオプションを連絡するためのものと思われます。

最初のサンプルはC++プログラミング言語で書かれており、Boost、Cryptopp、regexなどのパブリックに利用可能なライブラリを使用しています。このサンプルには、次のファイルとディレクトリを暗号化から除外するためのブラックリストが含まれています。

  • readme-now.txt
  • ntsuserまたはusrclassで始まるファイル
  • ファイル拡張子が.dll, .lnk, .sys, .locked のもの
  • Microsoft\Windows\burn
  • dat
  • log

このマルウェアは、ネットワーク上の他のホストに感染するための自己増殖型コードをサポートしておらず、MIKL LIMITEDという名前で発行された証明書で署名されていますが、この証明書はすでに無効化されています。次のコマンドライン引数もサポートされています。

コマンドライン 説明
-w Work:これはデフォルトのコマンドラインパラメータで、ホスト上のすべてのファイルを暗号化します。また、c:\wipe というファイルを作成し、ドライブ上の使用可能な空き容量を同じサイズのランダムデータでいっぱいにして空き容量をすべて消去します。その後ファイルは削除されます。このパラメータは単一ファイルの暗号化にも使用できます。例:-w filename.exe
-r Dry Run:  ホスト上のファイルは暗号化されません。
-l Log:ルートドライブ上にcl.logという名前のログファイルを作成します。
-f File:単一のファイルを暗号化するために使用されます。

   表1 サポートされているコマンドライン引数
 

暗号化

LockerGogaはCryptoppライブラリを使用してRSAを実装しています。RSAを最初から実装するのは非常に時間がかかり、エラーが発生しやすいためです。ファイルを暗号化するために、(強いRSAである)RSA-OAEP MGF1(SHA-1)が使用されています。このサンプルにあるRSA公開鍵は次のとおりです。


00000000   4D 49 47 64 4D 41 30 47  43 53 71 47 53 49 62 33   MIGdMA0GCSqGSIb3
00000016   44 51 45 42 41 51 55 41  41 34 47 4C 41 44 43 42   DQEBAQUAA4GLADCB
00000032   68 77 4B 42 67 51 43 46  66 33 43 54 59 79 41 79   hwKBgQCFf3CTYyAy
00000048   6F 79 5A 71 52 33 6E 48  63 4C 4A 2B 49 2F 71 69   oyZqR3nHcLJ+I/qi
00000064   2F 50 57 77 57 54 75 6C  20 6C 4D 69 4E 32 54 47   /PWwWTul lMiN2TG
00000080   4D 41 4D 62 34 39 75 58  51 32 79 43 34 4D 5A 76   MAMb49uXQ2yC4MZv
00000096   5A 76 4B 53 50 55 44 6F  33 61 4D 67 5A 4A 71 30   ZvKSPUDo3aMgZJq0
00000112   78 75 52 53 42 34 58 6F  73 6D 73 30 5A 39 51 4B   xuRSB4Xosms0Z9QK
00000128   70 76 47 6C 6A 4E 48 36  79 34 50 59 4E 39 38 2F   pvGljNH6y4PYN98/
00000144   76 20 79 31 7A 4F 6B 34  70 45 69 53 68 43 32 49   v y1zOk4pEiShC2I
00000160   47 46 50 4A 32 47 71 33  4F 63 2B 41 78 4F 37 57   GFPJ2Gq3Oc+AxO7W
00000176   6F 2F 62 42 76 35 34 32  52 51 30 67 50 55 77 7A   o/bBv542RQ0gPUwz
00000192   79 54 53 66 71 6A 44 47  35 33 35 73 38 57 73 76   yTSfqjDG535s8Wsv
00000208   4B 73 79 77 49 42 45 51  3D 3D                     KsywIBEQ==

表2 初期のLockerGogaサンプルで見つかったRSA公開鍵


RSA-OAEP MGF1にはより暗号化を安全にするための機能がありますが、計算時オーバーヘッドが増えるためその分暗号化に時間がかかり、大きなファイルを扱うのが困難です。これを軽減するため、開発者は並行して動作する複数の子プロセスを生成して暗号化速度を最大化しています。また、サイズの大きいファイルにかかる時間を短くするため、80,000バイトごとにファイルのチャンクを暗号化し、ファイルの次の80,000バイトをスキップすることになっていました。例:

図1 80,000バイトのチャンクで暗号化されたデータ

このため、復号化キーがなくても、大きなファイルの部分的なリカバリは可能になる場合があります。

開発者はファイルとディレクトリのブラックリストを使用してスキップしようとしていますが、Windowsオペレーティングシステムのコアファイルも暗号化されるため、オペレーティングシステムが不安定になり、クラッシュします。この様子はWindows 2012を搭載したコンピュータでランサムウェアを実行しているときに観測されました。


初期の開発

私たちは分析結果からこの亜種がLockerGogaランサムウェアの初期にリリースされたものと考えています。開発者は、マルウェアを暗号化せずに実行することを可能にする-rなどのコマンドラインパラメータを残していました。これを-l(log)と組み合わせて使用すると、ランサムウェアの動作をテストできます。これらのパラメータは両方とも、初期ビルド、つまりテストビルドであることを示唆しています。とくに後の亜種には-rは見られませんでした。

Bleeping Computerの報告によれば、ランサムウェアは次の特定のファイル拡張子のみを暗号化しているようです。doc|dot|wbk|docx|dotx|docb|xlm|xlsx|xltx|xlsb|xlw|ppt|pot|pps|pptx|potx|ppsx|sldx|pdf

また分析からは、このマルウェアが特定のファイル拡張子をチェックするコードブロックを使用しておらず、ブラックリストにあるファイル以外のすべてのファイルを暗号化することを確認しました。またこのマルウェアはサイズの大きいファイルについても問題を抱えていました。ただしこれは後の亜種では修正されています。
 

開発サイクル

他のアクティブなソフトウェアプロジェクト同様、LockerGogaランサムウェアの開発も継続的に行われており、新しい亜種が開発されては被害者の攻撃に使用されています。これらの亜種はすべて共通する特性を有しており、商用プロジェクトでの開発同様に、各リリースには改善点や新機能が含まれています。

この継続する開発サイクルに対抗するため、セキュリティリサーチャーは新しい亜種の識別に集中する必要があります。

そのため、1月のマルウェアの出現以降に見られた進化の変化のいくつかについてここで強調しておきたいと思います。

  • -rと-fのコマンドライン引数が削除された
  • ログファイル名がcl.logから.logに変更された
  • ランサムウェアの身代金要求メモはバイナリでエンコードされなくなった
  • ランサムウェアの身代金要求メモがREADME_NOW.txtからREADME_LOCKED.TXTに改名された
  • 次のコマンドラインパラメータが追加された
パラメータ 説明
-i プロセス間通信(IPC)
-s スレーブ(子プロセス)
-m マスタープロセス
  • プロセス間通信用のプロセスを識別するためmutex(例:SM-zzbdrimp)の使用を開始した
  • プロセス名としてsvch0st[数値].exeを使用するのをやめ、サンプルごとに異なるハードコードされた名前を使用し始めた
  • 文書化されていないWindows API呼び出しを利用する(NtQuerySectionなど)
  • 管理者パスワードをHuHuHUHoHo283283@dJDに変更する
  • 空き領域を消去するためのワイプファイルの作成を中止し、代わりにWindows cipher.exeをコマンドパラメータ/ wと共に使用してホスト上の空き領域をワイプする
  • WS2_32.dllのインポートを追加、ネットワーク通信をサポートするためか
  • ログファイルに記録されるデータの形式と収集内容を変更
  • ファイルとディレクトリの暗号化を更新ホスト上のすべてのファイルを暗号化するかわりに特定のファイル拡張子とディレクトリを標的にする
  • Windows Restart Managerセッションを呼び出す。トークン昇格で信頼されたインストーラファイルを上書きすることを狙ったものか
  • 次のデジタル署名者を使用する
    • ALISA LTD
    • KITTY'S LTD
    • MIKL LIMITED
  • 現在のユーザーをログオフする
  • バイナリファイルと暗号化ファイルに「Goga」という単語が含まれる
     

結論

LockerGogaの開発者は機能を絶えず追加して新しい攻撃を開始しています。WS2_32.dllの追加、文書化されていないWindows API呼び出しの使用は、典型的なランサムウェア開発者のレベルを超えた高度な技能を示すものです。WS2_32.dllの追加はC2通信や自動拡散を最終的に含めるためという可能性がありますし、文書化されていないWindows API呼び出しの使用はWindowsの内部に関するある程度の実用的な知識を必要とします。

一般的にランサムウェアはさほど高度なマルウェアではないことが多いので、こうした機能の追加が見られるという事実は、攻撃者の意図についてのさらなる疑問を生じさせます。動機が時間の経過とともに変わったのでしょうか。開発者はなぜ、部分的にファイルを暗号化するためだけにそれほどまの努力を費やすのでしょうか。なぜ彼らは電子メールアドレスを含めるだけで、より頻繁に使われる暗号通貨での支払いを求めないのでしょうか。

被害者のいずれかが身代金を支払い、データを正常に取得できたかどうかはわかりません。ただし、このランサムウェアが重大な被害をもたらしたことはわかっています。攻撃者がこのランサムウェアを改良し続ければ、被害はより甚大なものになる可能性があります。Unit 42は引き続きLockerGogaを監視し、新しい活動について報告します。

WildFireは、本稿に記載したすべてのマルウェアサンプルを悪意のあるものとして正しく識別します。TrapsはLockerGogaサンプルの実行を防止し、AutoFocusをお使いのお客様はLockerGogaサンプルをLockerGogaタグで追跡できます。

パロアルトネットワークスは本稿で見つかったファイルサンプルや侵害の兆候などをふくむ調査結果をCyber Threat Alliance(CTA サイバー脅威アライアンス)のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使用して、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害することができます。Cyber Threat Allianceの詳細については、次のWebサイトをご覧ください: www.cyberthreatalliance.org
 

IOC

LockerGogaのサンプル

ae7e9839b7fb750128147a9227d3733dde2faacd13c478e8f4d8d6c6c2fc1a55
f474a8c0f66dee3d504fff1e49342ee70dd6f402c3fa0687b15ea9d0dd15613a
ffab69deafa647e2b54d8daf8c740b559a7982c3c7c1506ac6efc8de30c37fd5
c1670e190409619b5a541706976e5a649bef75c75b4b82caf00e9d85afc91881
65d5dd067e5550867b532f4e52af47b320bd31bc906d7bf5db889d0ff3f73041
31fdce53ee34dbc8e7a9f57b30a0fbb416ab1b3e0c145edd28b65bd6794047c1
32d959169ab8ad7e9d4bd046cdb585036c71380d9c45e7bb9513935cd1e225b5
e00a36f4295bb3ba17d36d75ee27f7d2c20646b6e0352e6d765b7ac738ebe5ee
6d8f1a20dc0b67eb1c3393c6c7fc859f99a12abbca9c45dcbc0efd4dc712fb7c
79c11575f0495a3daaf93392bc8134c652360c5561e6f32d002209bc41471a07
050b4028b76cd907aabce3d07ebd9f38e56c48c991378d1c65442f9f5628aa9e
1f9b5fa30fd8835815270f7951f624698529332931725c1e17c41fd3dd040afe
276104ba67006897630a7bdaa22343944983d9397a538504935f2ec7ac10b534
88d149f3e47dc337695d76da52b25660e3a454768af0d7e59c913995af496a0f
c97d9bbc80b573bdeeda3812f4d00e5183493dd0d5805e2508728f65977dda15
06e3924a863f12f57e903ae565052271740c4096bd4b47c38a9604951383bcd1
a845c34b0f675827444d6c502c0c461ed4445a00d83b31d5769646b88d7bbedf
7bcd69b3085126f7e97406889f78ab74e87230c11812b79406d723a80c08dd26
ba15c27f26265f4b063b65654e9d7c248d0d651919fafb68cb4765d1e057f93f
eda26a1cd80aac1c42cdbba9af813d9c4bc81f6052080bc33435d1e076e75aa0
7852b47e7a9e3f792755395584c64dd81b68ab3cbcdf82f60e50dc5fa7385125
14e8a8095426245633cd6c3440afc5b29d0c8cd4acefd10e16f82eb3295077ca
47f5a231f7cd0e36508ca6ff8c21c08a7248f0f2bd79c1e772b73443597b09b4
f3c58f6de17d2ef3e894c09bc68c0afcce23254916c182e44056db3cad710192
9128e1c56463b3ce7d4578ef14ccdfdba15ccc2d73545cb541ea3e80344b173c
c3d334cb7f6007c9ebee1a68c4f3f72eac9b3c102461d39f2a0a4b32a053843a
6e69548b1ae61d951452b65db15716a5ee2f9373be05011e897c61118c239a77
8cfbd38855d2d6033847142fdfa74710b796daf465ab94216fbbbe85971aee29
bdf36127817413f625d2625d3133760af724d6ad2410bea7297ddc116abc268f
5b0b972713cd8611b04e4673676cdff70345ac7301b2c23173cdfeaff564225c
c7a69dcfb6a3fe433a52a71d85a7e90df25b1db1bc843a541eb08ea2fd1052a4


付録

LockerGogaの最新の亜種は、プロセス間通信にメモリマップファイルを使用します。これを説明するために、子プロセスによって作成されたセクションのメモリをキャプチャしました。

00000000   02 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00
00000016   D0 02 01 00 CC 02 01 00  C8 02 01 00 30 00 00 00   Р  Ì   È   0  
00000032   80 02 01 00 F8 FF 0F 00  00 00 00 00 00 00 00 00   €   øÿ         
00000048   FF FF FF FF 00 00 00 00  01 00 00 00 24 00 00 00   ÿÿÿÿ        $  
00000064   20 00 00 00 1C 00 00 00  00 00 00 00 01 00 00 00                  
00000080   FC FF FF FF F8 FF FF FF  F4 FF 01 00 0B 20 00 C0   üÿÿÿøÿÿÿôÿ     À
00000096   DE FF FF FF 01 00 00 00  01 00 00 00 38 00 01 00   Þÿÿÿ        8  
00000112   01 00 04 21 10 01 00 00  00 00 00 00 00 7A 70 63      !         zpc
00000128   55 48 4A 76 5A 33 4A 68  62 53 42 47 61 57 78 6C   UHJvZ3JhbSBGaWxl
00000144   63 31 78 57 54 58 64 68  63 6D 56 63 56 6B 31 33   c1xWTXdhcmVcVk13
00000160   59 58 4A 6C 49 46 52 76  62 32 78 7A 58 47 64 73   YXJlIFRvb2xzXGds
00000176   61 57 49 74 4D 69 34 77  4C 6D 52 73 62 41 3D 3D   aWItMi4wLmRsbA==
00000192   64 48 42 6A 63 48 4D 75  5A 47 78 73 63 6D 56 7A   dHBjcHMuZGxscmVz
00000208   65 43 35 6B 62 47 77 75  62 58 56 70 4E 46 39 66   eC5kbGwubXVpNF9f
00000224   4F 48 64 6C 61 33 6C 69  4D 32 51 34 59 6D 4A 33   OHdla3liM2Q4YmJ3
00000240   5A 54 68 68 5A 44 46 68  4E 7A 51 77 4C 54 52 68   ZThhZDFhNzQwLTRh
00000256   4E 32 59 74 4E 47 45 78  59 53 30 35 4F 54 45 78   N2YtNGExYS05OTEx
00000272   4C 54 51 79 4D 57 51 30  4D 6A 49 34 4D 7A 52 6C   LTQyMWQ0MjI4MzRl
00000288   5A 46 78 42 63 33 4E 6C  64 48 4E 63 55 6D 56 7A   ZFxBc3NldHNcUmVz
00000304   62 33 56 79 59 32 56 7A  58 46 4A 6C 63 58 56 70   b3VyY2VzXFJlcXVp
00000320   63 6D 56 6B 55 48 4A 70  62 6E 52 44 59 58 42 68   cmVkUHJpbnRDYXBh
00000336   59 6D 6C 73 61 58 52 70  5A 58 4D 75 65 47 31 73   YmlsaXRpZXMueG1s
00000352   65 6D 55 74 4E 44 68 66  59 57 78 30 5A 6D 39 79   emUtNDhfYWx0Zm9y
00000368   62 53 31 31 62 6E 42 73  59 58 52 6C 5A 43 35 77   bS11bnBsYXRlZC5w
00000384   62 6D 63 3D 62 53 31 31  62 6E 42 73 59 58 52 6C   bmc=bS11bnBsYXRl
00000400   5A 43 35 77 62 6D 63 3D  00 00 00 00 00 00 00 00   ZC5wbmc=       

表3 子プロセスのメモリマップファイル
 

1バイト目(02)は、マスタープロセスに以下のデータを処理するように指示しています。データはbase64で3つの部分にエンコードされ、次のようにデコードされます。

パート1:

Unknown value

パート2:

tpcps.dllresx.dll.mui4__8wekyb3d8bbwe8ad1a740-4a7f-4a1a-9911-421d422834ed\Assets\Resources\RequiredPrintCapabilities.xmlze-48_altform-unplated.png

パート3:

m-unplated.png

ホスト上で実行されているLockerGogaの初期亜種のサンプル:

図2 実行中の初期LockerGoga

初期LockerGogaの身代金メモ:

Greetings!
 
There was a significant flaw in the security system of your company.
You should be thankful that the flaw was exploited by serious people and not some rookies.
They would have damaged all of your data by mistake or for fun.
 
Your files are encrypted with the strongest military algorithms RSA4096 and AES-256.
Without our special decoder it is impossible to restore the data.
Attempts to restore your data with third party software as Photorec, RannohDecryptor etc.
will lead to irreversible destruction of your data.
 
To confirm our honest intentions.
Send us 2-3 different random files and you will get them decrypted.
It can be from different computers on your network to be sure that our decoder decrypts everything.
Sample files we unlock for free (files should not be related to any kind of backups).
 
We exclusively have decryption software for your situation
 
DO NOT RESET OR SHUTDOWN – files may be damaged.
DO NOT RENAME the encrypted files.
DO NOT MOVE the encrypted files.
This may lead to the impossibility of recovery of the certain files.
 
To get information on the price of the decoder contact us at:
CottleAkela@protonmail.com;QyavauZehyco1994@o2.pl
The payment has to be made in Bitcoins.
The final price depends on how fast you contact us.
As soon as we receive the payment you will get the decryption tool and
instructions on how to improve your systems security

図3 初期LockerGogaの身代金メモ

 

最新版LockerGogaの身代金メモ:

Greetings!

There was a significant flaw in the security system of your company.
You should be thankful that the flaw was exploited by serious people and not some rookies.
They would have damaged all of your data by mistake or for fun.
 
Your files are encrypted with the strongest military algorithms RSA4096 and AES-256.
Without our special decoder it is impossible to restore the data.
Attempts to restore your data with third party software as Photorec, RannohDecryptor etc.
will lead to irreversible destruction of your data.
 
To confirm our honest intentions.
Send us 2-3 different random files and you will get them decrypted.
It can be from different computers on your network to be sure that our decoder decrypts everything.
Sample files we unlock for free (files should not be related to any kind of backups).
 
We exclusively have decryption software for your situation
 
DO NOT RESET OR SHUTDOWN – files may be damaged.
DO NOT RENAME the encrypted files.
DO NOT MOVE the encrypted files.
This may lead to the impossibility of recovery of the certain files.
 
The payment has to be made in Bitcoins.
The final price depends on how fast you contact us.
As soon as we receive the payment you will get the decryption tool and
instructions on how to improve your systems security
 
To get information on the price of the decoder contact us at:
 
MayarChenot@protonmail.com
QicifomuEjijika@o2.pl

図4 最新版LockerGogaの身代金メモ