セキュリティ侵害に関するお問い合わせ

EvilQuest – ランサムウェアであり、スパイウェアであり、かつデータ泥棒

驚くようなことではないとは思いますが、ランサムウェア機能を持つ新しいmacOS攻撃が大きなニュースになっています。マルウェア研究者のDinesh Devadoss氏がこの脅威を発見してmacOSコミュニティに報告してからは、セキュリティ研究者が厳しい監視を続けています。そして研究者のScott Knight氏、Patrick Wardle氏、そしてSentinelLabsのチームなどがいくつかの優れた研究結果を発表しています。研究を続けるにつれ、この脅威は新しいランサムウェアだというだけではなく、今も開発が重ねられており、これまでに出没したMacプラットフォームを標的とする脅威の中で最も複雑なものであることがわかってきました。この投稿では、これまでに分かっている内容と、この脅威の最新バージョンについてご説明します。

EvilQuestの別名:ThiefQuest、MacRansom.K

Malwarebytesの研究者はこの脅威を最初「EvilQuest」と名付けましたが、数日後に「ThiefQuest」という名前に変更しました。これ以外にも名前があり、VTのエンジンはこれをMacRansom.Kと呼んでいます。

こういった複数の呼び名のせいで脅威自体とその機能の両方について混乱が生じています。

Mac.Ransom.Kという名称は広く使われている命名規則(プラットフォーム/タイプ/バリアント)に沿っているものの、この脅威に含まれるのはランサムウェアだけではない(かつ、ランサムウェアがメインではない)ため適切ではありません。マルウェア作成者はあらゆるプラットフォームでコードを再利用して複数の機能を盛り込むようになっているので、脅威の種類を用いた分類は意味をなさない場合もあります。

理想的なのは共通の特徴でグルーピングするマルウェア命名規則です。これまでのサンプルの中で一番よく見られた特徴は、__cstring の「toidievitceffe」です。これは、「rennur.c」(c.runner)などと同様に、単語を逆さ読みしたものです。

echo 'toidievitceffe' | rev
effectiveidiot

マルウェア開発者はまた、Xcodeプロジェクトの名前として「toidievitceffe」を使用しています。

他の逆さ言葉には、「naughtycuckoo」、「keylogger」、「filewatcher」などがあります。以下で詳述していますが、これらは脅威アクターの本当の目的を見破るヒントになります。

一部のサンプルでは、「effectiveidiot」の逆さ言葉が60回以上使われていました。セキュリティ研究者がこれにちなんで脅威に名前を付けるだろうと見込んで、マルウェア作成者がわざと使っているのかもしれません。弊社はネイティブ文字列ユーティリティの代わりに、高度なフロスツールを使用して文字列を抽出しています。

さらに、最近のサンプルでは文字列が難読化しています。属性を分かりにくくさせるために、開発者がわざと「drozdovsky」というユーザー名と「toidievitceffe」というビルド名を挿入していると考えられます。

マルウェアの命名規則はそれほど重要ではないという人もいますが、研究者や一般で議論や研究を行っている人々にとってはこれが役立ちます。この新しい脅威を「OSX.EffectiveIdiot」と呼ぶことには賛否両論ありますが、この命名上の混乱はもう正すことはできないでしょう。メディアで最初に広く使われた名前は「EvilQuest/ThiefQuest」であり、またニュースの見出しでは「泥棒」や「悪」という文字が好まれるので、これはこれからも使われ続けるでしょう。

不完全な暗号:ランサムウェアの機能は形だけ?

「EvilQuest/ThiefQuest」が注目を集めたのは新しいmacOSランサムウェアであったからです。まずこの観点から見てみましょう。ランサムウェアが主に荒らしているのはWindowsであり、macOSを狙って出回っていることが分かっているランサムウェアはこれが3つ目です。Macは多くの企業で、特に経営幹部や開発者という脅威アクターにとって魅力的なターゲットによく利用されている点を考慮すれば、3つだけなのは不思議なことです。そのため、Mac用ランサムウェアというのは新しいものでありながらも、ある意味では予想外なものではありません。

しかし「EvilQuest/ThiefQuest」は最終的に成功はしませんでした。まず、ファイルを暗号化して金銭を要求しようとするのであれば絶対に破られない暗号化が必要です。暗号化は難しいものです。これをできるだけの知識を持った人であればこう言うでしょうー「絶対にうまくいかないので自分で作ろうとしないほうがいい」。賢いランサムウェア攻撃者はこのアドバイスに従って、既に確立している暗号化アルゴリズムを使用します。この時、少なくとも一部のコンポーネントを非対称に、つまり、攻撃者だけが持つ秘密鍵を使うようにします。

「EffectiveIdiot」の開発者はこの通りにはせずに対称鍵暗号化を使ったため、ファイルの暗号化鍵と復号化が同じ鍵になってしまっています。さらに、SentinelLabsのリサーチリードのJason Reavesは以下の点に気づきました。

「…ファイル暗号化キーのエンコーディングに使用されるクリアテキストキーは、エンコードされたファイルの暗号化キーに付加されていました。完全に暗号化されたファイルを見てみると、データブロックがファイルに付加されていたのです。」

JasonとSentinelLabsチームはこれを用いて、このマルウェアの被害者が誰でも使えるパブリックデクリプターを作成しました。使い方はこちらのビデオをご覧ください。

EvilQuestランサムウェアのデクリプター

ランサムウェア攻撃者は通常、暗号を強固なものにすること、そして努力に見合った報酬を得ることを目的としています。しかし「EvilQuest/ThiefQuest」マルウェアにはおかしな点があり、その1つ目が身代金要求内容です。

まず、身代金の要求額が異常に少なく、そして攻撃者に連絡するためのメールなどの手段が書かれていないのです。例えばWindowsを狙う攻撃者は巧妙かつ効率的で、身代金を支払わせるコツを分かっています。こういったコツには、脅威と安心の両方をターゲットに感じさせること、また細やかなサポートをすることなどがあります。しかしこのランサムウェア攻撃ではそういうことは行われません。身代金要求文は、「お金を払ってください。また連絡します」だけで、支払いをしたとしてもその旨を連絡する手段が書かれていません。連絡先も聞かず、暗号化されたファイルのサンプルやその他の識別要素も求めてきません。「電話しないでください。こちらから電話します」と拒絶しているようなものです。

そのため当然ながら、脅威アクターは経済的利益を得ていません。これらのサンプルで共通して用いられていたビットコインアドレスでは、これまで一切金銭的取引がなされていません

SentinelLabsはこのランサムウェアコンポーネントの復号化ルーチン(uncarve_target)のコードには呼び出し元がないことを発見しました。つまりこれは機能が不完全であるか、そもそも復号するつもりがないことを表しています(この場合、コード内に復号化ルーチンが含まれてるのは、過去にテストしたときの名残だと考えられます)。

共有者は誰だ。共有フォルダ内のデータ泥棒

このような詳細が明らかになるにつれ、このマルウェアの他の機能、特に/Users/Sharedフォルダから3つのPythonスクリプトをダウンロードして実行する機能が注目されるようになってきました。このスクリプトは、特定の拡張子のファイルを検索して盗み出します。

スクリプト名はサンプルによって異なりますが、当初は以下のような短い名前が使用されていました。

/Users/Shared/.dr
/Users/Shared/.p
/Users/Shared/.gp

さらに、ユーザーのライブラリフォルダにデポジットされる非表示型Mach-Oバイナリ内のデータ窃盗機能には、それ以外にも機能があります。

暗号化された以下の文字列を見てください。

macOS研究者のScott Knight氏が開発したツールを用いて復号すると、以下のようなプレーンテキストが現れます。

bytearray(b'*id_rsa*/ix00')
bytearray(b'*.pem/ix00')
bytearray(b'*.ppk/ix00')
bytearray(b'known_hosts/ix00')
bytearray(b'*.ca-bundle/ix00')

このマルウェアは、リモートからログインし、Webブラウザを操作してサイトを信用させてセキュリティ警告を出させないようにするため、SSHキーと証明書を探していることがわかります。

他の研究者が指摘するように、キー押下などの低レベルのハードウェアイベントを狙ったAPI呼び出しが行われているので、キーロガー機能があることは明らかです。機能名の前半が逆さ読みになっていて、また「file」のタイプミスの「klgr_flie」になっていることに注目してください。

また、ワイパーマルウェアや他のプラットフォーム上のその他の攻撃的ランサムウェアの亜種とは違い、このランサムウェアのコンポーネントは、ユーザーのデバイス利用を妨げない点にも注目してください。このランサムウェアはosascriptで生成されたシンプルなアラートダイアログで、ユーザーに状況を説明します。

「OK」をクリックすればダイアログは閉じ、ユーザーはそのままマシンを使い続けることができるため、非常に使いやすいスパイウェアコンポーネントだと言えます。

新しい亜種はmacOS研究者に挑戦状を叩きつける

初期段階の技術的研究についてはmacOS研究者のPatrick Wardle氏が既に発表しているので、ここでそれらを繰り返し述べるつもりはありませんが、先週見つかったばかりの初期の「AppQuest」サンプルに関する彼の投稿についてはご紹介したいと思います。Wardle氏は、このマルウェアにウイルス機能があること、ユーザーのホームフォルダ内に既に存在する実行可能ファイルに感染することを指摘しています(ただしこの動作は弊社のテストでは再現されていません)。

初期の研究以降、ハードコードされた新しい文字列とパスを使った亜種が登場してきています。特に、暗号化された文字列の「Hello Patrick」を含む「react_ping」メソッドのWardle氏の研究については賛同が寄せられています。

最新バージョンでは、ハードコードされたC2アドレスが167.71.237.219から159.65.147.28にアップデートされており、またWardle氏が警告している「Knock Knock」レポートツールも含まれています。

その他の変更には、実行可能ラベルへの「abtpd」の使用などもあります。コードでは「.ab**d」というようにいくつかのパターンがある可能性も示唆されていますが本ブログの作成時点では確認できていません。永続的エージェントは、「AppQuest」という名前のフォルダではなく攻撃者が作成した「PrivateSync」というフォルダを指すようになります。

同様に初期のサンプルでは、​​43バイトの文字列を含む非表示のプレーンテキストファイルが「.ncspot」という名前で/var/root/ および /Users/User1/にドロップされます。最新のサンプルでは​​スポットファイルが同じロケーションにドロップされるものの、名前は「.aespot」に代わっています。

これまでの変化のスピードを考えると、こういった細かい点は早ければ数時間、そうでなくても数日で変化すると考えられます。

EvilQuest/ThiefQuest macOSマルウェアからの保護

SentinelOneプラットフォームは、EvilQuest / ThiefQuestへの防御に効果的です。

SentinelOneが提供する、EvilQuest macOSランサムウェア対応策

SentinelOneを利用されていない場合で、このマルウェアの被害にあった場合は、正常なバックアップを使って復元することを推奨します。またこのマルウェアにはキーロガーなどのスパイウェア機能があるため、パスワードの変更、SSHおよびサーティフィケートのリセットもお勧めします。

EvilQuestでファイルを暗号化されてしまった場合は、こちらのパブリック復号化ツールをご利用ください。

まとめ

「EffectiveIdiot」、「ThiefQuest」、または「EvilQuest」と様々な名前がありますが、このランサムウェア兼データ泥棒兼スパイウェアは大きな変化をもたらしました。これは多くのセキュリティツールの目をかいくぐるだけでなく、「暗号化されたファイルを復元する」という目先の問題の解決のために被害者が感染したマシンを使い続けているうちに、重要なデータを盗んでいきます。マルウェアに狙われているのは、もはやWindowsユーザーだけではないため、macOSユーザーも、適切なセキュリティ対策をしなければならないという警告をしっかりと受け止めなければなりません。

ハッシュサンプル

06974e23a3bf303f75c754156f36f57b960f0df79a38407dfdef9a1c55bf8bff Mach-O
d18daea336889f5d7c8bd16a4d6358ddb315766fa21751db7d41f0839081aee2 Mach-O
c5a77de3f55cacc3dc412e2325637ca7a2c36b1f4d75324be8833465fd1383d3 Mach-O

痕跡

/var/root/.aespot
~/.aespot
~/Library/LaunchAgents/com.apple.abtpd.plist
~/Library/PrivateSync/com.abtpd.questd
/Library/LaunchDaemons/com.apple.abtpd.plist
/Library/PrivateSync/com.abtpd.questd