トレンドマイクロでは、今年の7月に入ってすぐ、新しいマルウェア「ThiefQuest(別名:EvilQuest)」を確認しました。このマルウェアは、macOSデバイスを狙って、ファイルを暗号化し、影響を受けるコンピュータ内にキーロガーをインストールします。ThiefQuestは、一般的なファイル共有のためのトレントサイト上で共有されていた海賊版のmacOSから発見されています。このマルウェアの動向は、ウイルス対策ソフトを提供する「MalwareBytes」、コンピュータヘルプサイト「BleepingComputer」、およびセキュリティリサーチャであるDinesh Devadoss氏、Phil Stokes氏、Patrick Wardle氏、そしてThomas Reed氏によっても調査されています。また、Objective-See社も最新のマルウェア詳細調査を公表しています。これらの調査では、マルウェアを利用した身代金要求が主な攻撃方法ではなく、ファイルの抽出、C&C通信、キーロギングなどのその他の関数を偽装するための先手であるとしています。この推測は、最近確認された内容でも裏付けられています。
本記事では上述の調査を踏まえ、VirusTotalで確認された異常な挙動を含めて新旧バージョンにおけるマルウェアの違いなど、トレンドマイクロの独自調査からThiefQuestについて判明したことを解説します。さらに重要な点として、公開された調査からの最新情報にも言及します。この情報は、綿密な監視が必要であるThiefQuestが、深刻な影響を与える可能性のあるマルウェアの一例であることを示しています。
■「ThiefQuest」とその新たな亜種
- 新たな不正活動を示す「ファンクション(関数)」
トレンドマイクロは、複数のリサーチャによる調査で以前報告されたThiefQuestの亜種以外にも、これらの亜種と比較してより強力なファンクション(関数)を使用し、その他にも改変が施された亜種がいくつか確認されました。これらの新亜種は以前の亜種が確認されてから、わずか数日で出現したと見られています。特に注視すべき点として、ファイルの暗号化や身代金要求文書(ランサムノート)の作成など、以前に確認されているランサムウェアとしての挙動が削除されていることが挙げられます。新たな亜種では、これらの活動はマルウェアのメインコードでは呼び出されません。さらなる調査で、攻撃者は新しい関数のアドレスを計算して呼び出す新しい動作を実装していることが判明しました。新亜種の中には、マルウェアの調査をより困難なものとするために、関数名に難読化が施されているものもありました。
図1:メインコードの新しいアップデートを呼び出すために使用される関数 eisl_apply_function()
本記事では、以下の新しい関数によって実行される活動の内容について解説していきます。
- _react_updatesettings
- attach_payload
- compress_bundle
- compress_bundle
- decompress_bundle
- decompress_bundle
- ei_fcnc_pack_challenge
- ei_fcnc_unpack_challenge
- ei_getip
- ei_ptas
- ei_rfind_cnc
- eisl_add_function
- eisl_apply_function
- eisl_debugging_um
- eisl_get_function
- eisl_lazysleep
- eisl_ndebugging
- eisl_noop
- eisl_ntrace
- eisl_ntrace_sc
- eisl_ntrack_chk
- eisl_xtrace
- eisl_zzufff_init
- extract_payload
- fb_uniconf_* (other related functions)
- fb_uniconf_get_entry
- fb_uniconf_init
- fb_uniconf_load
- fb_uniconf_save
- fb_uniconf_set_entry
- run_audio
- run_image
- run_payload
- ペイロードの読み取りと添付
図2:ペイロードの読み取りと添付
extract_payload()関数は、符号化され埋め込まれたペイロードのデータを指定ファイルから読み込みます。データのオフセットと長さは、ファイルの最後に保存されます。データの読み取り後、eib_secure_decodeを呼び出してペイロードのデータをデコードします。
attach_payload()関数はextract_payload()とは逆の動作を行います。指定ファイル元からペイロードのデータを読み取って符号化し、符号化されたデータを指定のターゲットファイルに保存します。
- バンドル圧縮および解凍
図3:バンドルの圧縮と解凍
compress_bundle()関数は、バンドル内の各ファイルの内容を符号化し、指定ファイルに保存します。一方、decompress_bundle()関数もまた、compress_bundle()とは逆の動作を行います。このdecompress_bundle()関数は、指定ファイルからバンドルファイルの読み込みおよびデコードを行います。
- C&CとIPの生成
図4:C&CとIPの生成
ei_rfind_cnc()関数は、現在時刻を1000回カウントするループの乱数初期化のシードとして使用します。生成された乱数でIPアドレスを生成するためにei_getip()を呼び出し、http_request()経由で接続を試みます。この接続が到達可能な場合、C&Cサーバのアドレスとして用います。
- 向上した解析防止技術
is_virtual_mchn()関数では、コンピュータのMACアドレス、CPU数、および物理メモリの取得を含む状態確認が強化されています。
図5:状態確認
図6:解析確認
文字列を復号化するeip_str()関数には、解析防止の確認を行う関数も追加されています。これらの確認を担う関数の1つは、eisl_debugging_um()です。この関数は、task_get_exception_ports()を呼び出して現在のプロセスがデバッグされているかを確認する新しい関数です。ただし、この関数は現時点では常に0を返す状態であり、不完全な機能であるとみられています。
図7:現在のプロセスのデバッグの確認
トレンドマイクロではまた、解析防止に使用される複数の新しい関数も確認しました。しかし、確認された関数の一部は未だ空のままとなっています。トレンドマイクロの推測では、これらの関数は近いうちに実装されると考えています。
- eisl_xtrace
- eisl_ntrace
- eisl_ntrace_sc
- eisl_ntrace_chk
- C&Cの更新
トレンドマイクロの調査の結果から、_react_updatesettings()関数が追加されたことも判明しています。この関数は、C&Cサーバから更新された設定を取得するために使用されます。
- 画像ファイルと音声ファイルの実行機能
一方、run_audio関数およびrun_image関数は、非表示の.m4a形式の音声ファイルまたは.jpg形式の画像ファイル内にターゲットファイルを保存します。この2つの関数は、開かれた非表示の端末を利用して実行されます。マルウェアは、単に「open.filename.m4a」または「open.filename.jpg」を呼び出して、Music.appまたはPreview.appのいずれかに関連付けられた既定のアプリケーションでマルウェアを実行します。
これらの関数から、ThiefQuestの背後にいる攻撃者は、マルウェアに新機能を用意している可能性があります。攻撃者はおそらく、ドロップされた身代金要求文書を読み取るために、Text-to-Speech(テキスト読み上げ)を使用する以前のバージョンと類似の概念をThiefQuestに持たせようと計画しているとみられます。
以下の図8は、run_audio関数の分解を示しています。この関数は、対象が保存されるファイル名と、関数の分解を実行する暗号化された文字列を表示します。この文字列は、非表示の端末を起動するためのAppleScriptコマンドとして復号化されます。
図8:run_audio関数の分解
- セキュリティツールの強制終了
ThiefQuestは実行中のセキュリティツールを確認すると強制終了させる機能を持っています。@ Myrtus0x0によるツイートでは、ObjectiveSee社の対策製品「KnockKnock」が、強制終了の対象となるセキュリティツールの一覧に追加されたとされています。トレンドマイクロではこのツイートで挙げられた以外にも、新たなセキュリティツールが強制終了リストに追加されたのを確認しました。
- Avast
- Bitdefender
- Bullguard
- DrWeb
- Kaspersky
- KnockKnock
- Little Snitch
- McAfee
- Norton
- ReiKey
図9:強制終了の対象となるセキュリティツールを示すメモリダンプ
図10:強制終了対象となるセキュリティツールの例
(暗号化されたデータを複合したもの)
- ファイル名とサーバの変更
作成されたファイル名、持続化アイテムのPLISTファイル名、および以前の亜種と新しい亜種の両方の接続サーバのサブドメイン名も変更されていたことが判明しています。
アイテム | 以前の亜種 | 新亜種 |
プライマリ実行ファイルのパス | /Library/AppQuest/com.apple.questd | /Library/PrivateSync/com.apple.abtpd |
持続化アイテムのPLISTファイルパス | /Library/LaunchDaemons/com.apple.questd.plist | /Library/LaunchDaemons/com.apple.abtpd.plist |
サーバURL | hxxp://andrewka6[.]pythonanywhere[.]com/ret.txt | hxxp://lemareste[.]pythonanywhere[.]com/cfgr.txt |
■VirusTotalで取得した検体の解析
VirusTotalで最初に確認されたマルウェアに関するデータによると、ThiefQuestは2020年6月上旬から中旬にかけてすでに存在していたことが判明しています。以前確認された検体は、新しい検体ほど多くの機能を有していません。一方で、攻撃者が継続的にThiefQuestを改変しようとしていることわかる、いくつかの段階的な変更も見られました。
初期に確認されたバージョンで特筆すべき特徴のひとつは、ランサムウェアの機能を持たない点です。実際、ThiefQuestは当初、対象のユーザのホストファイル(/private/etc/hosts)を改変する機能を備えたバックドア型のマルウェアでした。effeeadfdc3caf523635fcb86581a807f719fa5e322872854499など、初期に確認された検体では、C&Cサーバにリダイレクトするために、特定のドメインにエントリを追加することがわかっています。以下は、ホストファイルを改変するエントリの一部です。
C&Cサーバ | ドメイン |
167[.]71[.]237[.]219 | localbitcoins[.]com |
167[.]71[.]237[.]219 | poloniex[.]com |
167[.]71[.]237[.]219 | digitalocean[.]com |
167[.]71[.]237[.]219 | cloud[.]digitalocean[.]com |
167[.]71[.]237[.]219 | hetzner[.]com |
VirusTotalに提出されたファイルパスには、/Users/user1と国別コード「RU(ロシア)」が含まれていました。他にも、国別コード「BG(ブルガリア)」とともに、提出名にcom.apple.questdが含まれている点は特筆すべきでしょう。
図11:初期に確認されたマルウェアに関連するVirusTotalへの合計提出回数その1
図12:初期に確認されたマルウェアに関連するVirusTotalへの合計提出回数その2
- 最初に確認されたランサムウェアのバージョン
トレンドマイクロは初めに、他の調査上で解析された検体ほど多くの関数を持たない、古い亜種を確認しました。この亜種に感染動作は見られず、特定のC&Cタスクにも機能するコードが存在しませんでした。ただし、ランサムウェアの挙動を行うことを確認しています。
図13: メインコード内にei_loader_main()関数を含む感染機能を持った亜種、攻撃の対象となるコンピュータ内のファイルに感染する
図14:メインコード内の最初に確認されたランサムウェアの亜種、
感染機能の呼び出しを備えていない
図15: null値を返すC&Cタスク「_react_keys()」を含む、
最初に確認されたランサムウェアの亜種
- 感染した検体からの発見
後続の検体による感染動作を考慮し、類似条件を用いてVirusTotal Intelligenceを確認し、多くの検体の検索結果を見つけました。
2020年6月29日から7月3日までの間に、VirusTotal上に提出された類似の新しい検体は3万件以上にのぼりました。そのほとんどは、国別コード「ZZ」からの同一のAPI送信から来ています。つまり、送信元の国は不明です。
図16:新しいバージョンのマルウェアに関連するVirusTotalへの提出
フォルダ「/Users/user1」は、以前確認された検体が使用したフォルダと同一のものです。このことは、新しいバージョンのマルウェアが、古い検体が確認された同一のコンピュータから拡散したということを示唆しています。推定5分間で、同じファイルパス「/Users/user1/Library/Google/GoogleSoftwareUpdate/GoogleSoftware.bundle/Contents/Helpers/crashpad_handler」が二度提出され、ファイルサイズが16.27MBから32.09MBに増加しました。トレンドマイクロの試験用コンピュータでは、ファイルのサイズはわずか499,264バイト、つまり500KB未満と表示されました。
図17:新しいバージョンのマルウェアに関する他のVirusTotalへの提出
以下は、ファイルサイズが32.09 MBの検体を解析した後に判明した調査結果の一部です。
- 検体を検索すると、ユニーク文字列「/toidievitceffe/libpersist/rennur.c」が366回表示される。このことは、ファイルが少なくとも366回この検体に繰り返し感染していることを意味する
- ファイル内の最後にある最後のMach-Oファイルをゴミ箱に移すと、このファイルがcrashpad_handler.exeであることが確認される。このファイルは、安全なコンピュータ内に存在するファイルと同一、つまり無害な正規ファイルである
- ファイル内に検体の不完全なコピーがいくつか存在していた。これは、同時に実行されていた複数の感染動作の不適切な処理、もしくはその他の潜在的な問題が原因と見られる
- このマルウェアは、不正コードによる複数の動作を1つのコンピュータ内で同時に実行する
- 感染した検体は再感染する可能性がある
- アプリバンドル内のMach-Oファイルへの感染を回避しても、マルウェアは引き続き、アプリバンドルフォルダに類似した~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/内のファイルに感染する
一般的に、経験豊富な攻撃者がファイル感染型マルウェアを作成する際、上述の過程は通常含まれていません。
- ThiefQuestの変遷
トレンドマイクロでは、弊社収集の感染した検体を元に、上述の改変を記録しました。以下は、マルウェアの進化の概要です。
変遷 | SHA256値 | 特筆すべき挙動 | 初回検出日 |
1 | 365a5c72f52de964b8dc134d2fc45f9c73ba045cebd9fd397b1e26fdb11bfec6 | この時点でバックドア機能が最初に実装される改変されたホストhxxp://andrewka6[.]pythonanywhere[.]com/ret[.]txtおよび 167[.]71[.]237[.]219 はどちらもブロックされ、C&C サーバとして分類 | 2020年6月4日 |
effeeeadfdc3caf523635fcb86581a807f719fa5e322872854499f5270bc0eba | 2020年6月19日 | ||
2 | eeac57f7ca9df9199f0346ed9097e9f5482c06214cddc162d1500d15d045b4ed | ランサムウェア機能が最初に実装されるファイル名は、 「/Library/LiveSupport/CrashReporter」 | 2020年7月2日 |
3 | 5a024ffabefa6082031dccdb1e74a7fec9f60f257cd0b1ab0f698ba2a5baca6b | ファイル感染機能が最初に実装されるファイル窃取機能が実装されるランサムウェア機能が存在する | 2020年7月26日 |
4 | f7efda39c80d68db168316732732d04a00fe6fb10f37d1013df1a8a4cde1f68a | ファイル窃取機能が存在するランサムウェア機能が外されるhxxp://lemareste[.]pythonanywhere[.]com/cfgr[.]txtはブロックされ、C&Cサーバとして分類 | 2020年7月3日 |
d18daea336889f5d7c8bd16a4d6358ddb315766fa21751db7d41f0839081aee2 | 2020年7月3日 | ||
851dfdbffd250523c5c7ff07b29778a04ebd44400b12f23d18a6ee5a3fcfbedc | 2020年7月4日 | ||
06974e23a3bf303f75c754156f36f57b960f0df79a38407dfdef9a1c55bf8bff | 2020年7月5日 | ||
7292004b57562223fed4ee122a956a8db38349c95d4dd8853b1ebc60ef7508b1 | 2020年7月6日 | ||
c5a77de3f55cacc3dc412e2325637ca7a2c36b1f4d75324be8833465fd1383d3 | 2020年7月6日 | ||
e69e9dc0d343165aa0f5df942d1b48ddd0337c8a79dcdf40f3c3b490d6e96a78 | 2020年7月6日 | ||
41036e1b78a122e57f2125526d673ffe3358d7323fc577703662740b3e651dcc | 2020年7月6日 | ||
92ad2b0220f6903fb5fa48ce411af44a60c06031fee3aa682bd28f3f3fde1eda | 2020年7月9日 | ||
bcdb0ca7c51e9de4cf6c5c346fd28a4ed28e692319177c8a94c86dc676ee8e48 | 2020年7月11日 |
■Pythonのダウンロード
このマルウェアは、Pythonの依存関係や、p.gifとpct.gifなどの2つの特定のファイルをダウンロードします。BleepingComputerは、このマルウェアに強い難読化が施されていることを示すp.gifのrawテキストをアップロードしました。
図18:p.gif
トレンドマイクロではこのことに基づいて、攻撃者はスクリプトを読みにくくするために、ツールから悪用およびネストされたLambda関数を使用したと想定しています。このネストされたLambdaの難読化形式の構造についてさらに調査したところ、Chelsea Vossが開発したツールと、Lambda関数を介して任意のPython2スクリプトを1行に変換するチームを確認しました。
攻撃者は、文字列にPython文字列の難読化を使用しました。たとえば、3行目には文字列「‘r%squ%ssts」が含まれ、28行目には「’r%squ%ssts” %(‘e’,’e’)」というパターンが使用されています。これを手動で難読化を解除することで、実際の文字列は「リクエスト」であることがわかります。10行目の別の同様の文字列は「’__b%s%slt%s%ss__’ % (‘u’, ‘i’, ‘i’, ‘n’)」として読み取られますが、難読化を解除すると「__builtins__」でという文字列であったことがわかります。
この理論をもとにファイルの難読化を解除したところ、p.gifが依存関係のインストールに用いられることを確認しました。
図19:文字列「リクエスト」
Bleeping Computerが以前のバージョンのpct.gifを取得したのに対して、トレンドマイクロの調査では、攻撃者がpct.gifを更新してネストされたLambdaの難読化を表示したのを同様に確認しました。
図20:トレンドマイクロの情報元から取得したpct.gif
トレンドマイクロで確認したものより新しいバージョンのpct.gifも、読み取り不能な暗号化された文字列が存在するため、文字列復号化の動作が実行されています。(※コードが解読され次第、本記述部分を更新します。)
図21:最新の情報元から取得したpct.gifの最新バージョン
■コア機能の追加入力
このマルウェア、特に以前確認されたバージョンのコアコンポーネントに関する調査の多くは、Objective-See社のPatrick Wardle氏の調査内容と一致していますが、トレンドマイクロではThiefQuestの仕組みに関する詳細を知るのに役立つ可能性のある、さらなる情報を紹介します。
- ファイルの暗号化
マルウェアの暗号化理論は、ターゲットファイルのサイズに応じて分岐します。
コア暗号化関数carve_target()には、3つの異なるブランチへの呼び出しがあります。
- 最初のブランチは、サイズが2MB未満のファイルを対象とする
- 2番目のブランチは、サイズが2MBから30MBのファイルを対象とする
- 3番目のブランチは、32MBを超えるサイズのファイルを対象とする
3つの呼び出しに使用されるパラメータはすべて同一のものですが、2番目と3番目の分岐には特定の違いがあります。たとえば、マルウェアは暗号化するファイルの数を3000件に制限し、2番目のブランチですでに3000件のファイルを暗号化している場合、3番目のブランチは省略されます。
ただし、その理論で不可解な点は、2番目のブランチがすでに2900件の検体を暗号化している場合、3番目のブランチのカウントは0から始まるということです。
図22:暗号化処理
- Mach-Oファイルの感染
append_ei()関数は、マルウェアの動作が実際の感染を実行する場所です。また、以下の図23からわかるように、感染したファイルの最後にオリジナル/ホストファイルのサイズとマジックナンバーを追加します。
図23: append_ei ()関数
一方、pack_trailer()関数は、感染用のホストファイルのファイルサイズなどのトレーラデータを準備するために使用されます。
図24:関数pack_trailer()
図25:元のファイル(左)と感染したファイル(右)の比較
図20の元のファイルと感染したファイルを比較すると、追加されたデータが表示されます。 元のマルウェアの検体は、感染したMach-Oファイルの上に追加されます。
このマルウェアには、元の不正な検体であるか、感染したファイルであるかによって、動作にいくつかの差異が見られました。これらの2種類の検体間では、以下のような違いがあります。
- 一部の解析防止確認処理(__is_debugging, _prevent_trace,_ kill_unwanted)は感染した検体で実行されなかった
- マルウェアがバックグラウンドで不正動作を実行している間、オリジナル/ホストコードを非表示のファイルとして作成する感染した検体の動作は、感染した実行ファイルが影響を受けていないとユーザが考えるように、ユーザを騙す可能性がある
- 感染した検体が実行されると、作成されたファイル「.<filename>1」は実行後に削除されない
図26-28の画像からわかることは、次のプロセスを示す逆アセンブリについてです。
- unpack_trailerを呼び出す
- 同じディレクトリから接尾辞「1」を付けて抽出し、それを非表示のファイルとして保存する
- また、感染した検体と通常のファイルと想定される、作成された非表示のファイルも表示する
図26:unpack_trailerを呼び出す不正コードその1
図27:unpack_trailerを呼び出す不正コードその2
図28:unpack_trailerを呼び出す不正コードその3
図29:作成された非表示のファイル
感染した検体と通常のファイルと想定される
- 持続化
バイナリのmain()関数は、最初にpersist_executable_frombundle()関数、ei_persistence_main関数、およびinstall_daemon()関数を使用して自動実行/持続化機能をインストールし、マルウェアの起動時に実行されるようにします。
図30:持続化に使用される暗号化された文字列の一部を示す、
main()関数から逆コンパイルされたコード
図31:持続性をインストールするために
ei_persistence_main()内で逆コンパイルされたコード
コードの該当部分を実行すると、マルウェアが起動エージェント(~Library/LaunchAgents)をインストールし、デーモン(Library/LaunchDaemons)をcom.apple.questd.plistとして起動します。この動作は、特定の条件が満たされた場合、マルウェアバイナリcom.apple.questd.plistの別のコピーを対象とします。
図32:インストールされたLaunchAgentとそのターゲット
com.apple.questdのコンテンツ
記号「~」は、コンピュータが現在ログイン中のユーザフォルダを示す
- ファイル窃取
lfsc_dirlist()関数はメインの引き出し関数であるei_forensic_thread()によって呼び出され、/Usersフォルダ下の全ファイルを1つの長い文字列に連結します。この文字列の長さがまず確認されます。文字列が10,240文字より長い場合、文字列は10,240文字サイズのブロックに分割され、1つずつサーバに送信されます。
送信後、ネットワーク負荷が過度に高くならないように、10秒間スリープします。また、この10秒のスリープ動作は、マルウェアが漏えいしたデータをサーバに送信する毎に監視されます。
図33:lfsc_dirlist()関数
- C&C通信の動作
このマルウェアに関する調査では、C&Cサーバの存在と機能の一部にのみ言及しているため、ここでは、特に以下の関数について解説します。
- _react_exec
- _react_start
- _react_save
- _react_keys
- _react_ping
- _react_host
- _react_scmd
図34:C&Cの関数
- _react_exec()
_react_exec()は、C&Cサーバの関数の1つにあたります。マルウェアが攻撃者から_react_execコマンドを受信すると、データをデコードし、メモリからこれを読み込みまたは実行しようとします。
図35:_react_execコマンド
失敗した場合、ファイルは非表示ファイル「.xookc」に書き込まれ、AppleScriptを介して昇格された権限で実行します。
図36:非表示ファイル「.xookc」にファイルを書き込む
図37:AppleScriptを介して昇格された権限で実行
- _react_save()
_react_save関数によるコマンドの場合、この検体はeib_decode()関数を使用して、サーバから受信したデータをファイル内にデコードします。このファイルは、サーバから受信したエンコードされたデータにも含まれているファイル名で保存されます。
図38: _react_save()関数を呼び出すeib_decode()関数の逆アセンブリ
eib_decode()の内部にはeib_unpack_iと呼ばれる最後の関数があり、これはデコードされたファイルをメモリに設定し、ファイルとして保存するために使用されます。
図39:eib_unpack_i関数
- _react_ping()
_react_pingは、サーバから受信した文字列を復号化するために使用されるコマンドです。マルウェアが正常に解読されると、この検体はサーバにメッセージを送信します。このメッセージは、サーバが機能していることと、サーバからコマンドを受信する準備が万端であることを知らせるためのものである可能性があります。
図40:確認に使用される暗号化された文字列「Hi there」を表示する_react_ping()の逆アセンブリ
- _react_keys()
対象のバイナリは、C&Cサーバからの応答を待ちます。受信したコマンドに応じて、_react_keys()を介してキーロガーを実行する可能性があります。
まず、呼び出されたランサムウェアバイナリのユーザIDやHOME変数の環境パスなどのユーザ情報を収集します。そして、キーロガー関数を含むeilf_rglk_watch_routine()関数のスレッドを作成します。
図41:_react_keys()
対象のスレッドにおけるこの動作は、CGEventTapCreate()関数を使用してキー入力をログに記録及び出力します。そのパラメータの1つであるprocess_event()関数は、キー入力を文字列に変換して出力するためのコールバック関数です。
図42:CGEventTapCreate()
kconvert()関数は、キー入力を文字列に形式変更します。音量調節/消音およびファンクションキーを含むボタンを押したと見られる形跡がすべて見つかりました。ただし、ログに記録されたキー入力はコンソールからのみ出力されます。
図43-45:kconvert()
トレンドマイクロの見解では、不審なキーロガーの痕跡とnull関数を考慮すると、マルウェアにはC&C関連タスクの機能が足りていないと考えています。したがって、攻撃者はこの部分以外にも、後続の亜種でファイルの暗号化や感染動作をより強力に改変していくと推測しています。
■MITRE TTP Matrix
以前のバージョンと新しいものの両方を調査して得られた情報に基づいて、MITREのTTP(戦術、技術、および手順)を使用したマルウェアの攻撃範囲を以下にまとめました。オレンジ色のエントリは確認および実装された動作、黄色のエントリは動作の確認はされたが未完全な状態で実装されているコードを表しています。
図46:MITER ATT&CKナビゲータを使用したTTPマトリックスその1
図47:MITER ATT&CKナビゲータを使用したTTPマトリックスその2
■まとめ
一部のThiefQuestの亜種はランサムウェア機能を備えていますが、macOS向けランサムウェア自体が少ないことを考え合わせると、注目に値することと言えます。 ThiefQuestの出現は、サイバー犯罪者がThiefQuestのような攻撃を利用してmacOSを狙う手だてを探していること意味するか、またはOS全体あるいはおそらく両方に関連して攻撃の対象として関心が高まっていると言えるでしょう。
macOSはマルウェアから保護されているという誤解が持たれることがあります。しかしながら、サイバー犯罪者は、多くの人々が使用するソフトウェアを攻撃の対象としています。macOSは、この観点から、攻撃の対象から除外されているとは言えません。たとえば、ランサムウェア以外にも、macOSを対象とする様々な種類の攻撃があります。昨年、これらのうち最も検出されたのは、アドウェアや迷惑なアプリケーションを拡散するバンキングトロジャン「Shlayer」でした。
これからも、より多くの機能を備えたThiefQuestの新亜種が登場するでしょう。ThiefQuestの調査から、攻撃者はこのマルウェアをさらに強力に改変していく計画があると想定できます。潜在的に、攻撃者はマルウェアをさらに悪質な脅威になるように準備している可能性があります。いずれにせよ、ThiefQuestの攻撃者は、計画の内容に関係なく迅速に行動することは確かでしょう。セキュリティリサーチャはこのことに留意し、ThiefQuestの亜種を継続的に検出してブロックすることで、マルウェアのさらなる改変に追いつくように努めましょう。
■被害に遭わないためには
本記事で紹介したThiefQuestの背後にいる攻撃者は、このマルウェアを絶え間なく迅速に更新しています。したがって、セキュリティチームとユーザは、このマルウェアの攻撃によって起こり得る想定外の影響に注意する必要があります。このためには、以下のベストプラクティスを行うことを推奨します。
- 公式のアプリケーションストアやダウンロードセンターなど、信頼できる提供元からのみアプリケーションをダウンロードする
- 信頼できない送信元からのメールに記載されている添付ファイルのダウンロードやリンクをクリックしない
- ソフトウェアにパッチを適用して更新し、脆弱性の影響を確実に防ぐ
■トレンドマイクロの対策
「Trend Micro XDR」のセキュリティサービスは、Managed XDRチームによる24時間年中無休の監視と専門家による分析を提供することで、セキュリティを強化します。これには、メール、エンドポイント、サーバ、クラウドワークロード、およびネットワークが含まれます。
「Trend Micro Apex One™」は、さまざまな脅威検出機能を採用しています。「ふるまい検知」は、ファイルレス活動に関連する不正スクリプトやインジェクション、ランサムウェアやメモリ、さらにはWebブラウザからの脅威にも対策を講じることができます。
■侵入の痕跡(Indicators of Compromise、IoCs)
侵入の痕跡(Indicators of Compromise、IoCs)はこちらを参照してください。
参考記事:
- 「Updates on ThiefQuest, the Quickly-Evolving macOS Malware」
By Steven Du, Gabrielle Mabutas, and Luis Magisa
翻訳: 下舘 紗耶加(Core Technology Marketing, Trend Micro™ Research)