NECサイバーセキュリティ戦略統括部 セキュリティ技術センターの竹内です。
本稿では、竹内およびサイバーインテリジェンスグループの一員のNECインドのメンバーであるDr Sareena Karapoola 、Dr Manikantan Srinivasan による、マルウェア解析結果を紹介いたします。
This post is also available in: English(英語)
インテリジェンスグループでは日ごろから脅威情報の収集・分析を行い、分析結果を社内やお客様に展開しています。これらの活動の中で、MITRE ATT&CKで共有されていない新たな脅威を発見した場合、MITREへ情報提供しています。この活動の一環としてマルウェアの解析も行っています。本ブログではATT&CK v13で採用されたAndromedaマルウェアについて、追加の解析結果を紹介します。
Andromedaマルウェアはウクライナを狙う攻撃の中で観測されたドロッパータイプのマルウェアです。このマルウェアに感染すると、Andromedaボットネットを構成するコンピュータとなります。Mandiantのリサーチャーは、Turla攻撃者グループ(a.k.a UNC4210)がAndromedaマルウェアを使用して、KopiluwakとQuietcanaryを展開する活動について報告しています。[1]
Mandiantのレポートでは詳細な解析結果が記載されていないAndromedaについて、このブログでは紹介します。AndromedaのSoftware Packing・Process Hollowing・Masqueradingなどの耐解析機能を説明します。このブログは次のハッシュ値のAndromedaマルウェアを解析した結果です。
Andromeda Sample:9535a9bb1ae8f620d7cbd7d9f5c20336b0fd2c78d1a7d892d76e4652dd8b2be7 (SHA 256)
主要な所見:
- Andromedaマルウェアは複数のファイルを展開します。これらの中には2つの暗号化されたファイルがあります。
- Andromedaマルウェアはシステムライブラリの呼び出しの難読化、デバッガ検知、実行遅延といった3つの耐解析技術を採用しています。
- AndromedaはProcess Hollowingを使って悪性のコードをシステムプロセスに挿入します。
- システムプロセス(svchost.exe)に挿入された悪性のコードがC2サーバへの通信を行います。
- Windows7とWindows10の環境ではマルウェアの振る舞いに違いがあります。
1. 解析方法について
マルウェアへの理解を深めるため、複数のプラットフォームや環境で検体の解析をしています。この環境には、NECでセットアップしたもの以外に、JoeSandbox[2]やAny.run[3]を使用しています。JoeSandboxでの解析結果については[4]・[5]を参照してください。
今回の検体はNECで用意したWindows10の環境、サードパーティのWindows10のサンドボックス環境[4][5]の両方で動作しません。そのため、Windows7の環境で解析した結果を基に紹介します。Windows10との差異については4章で紹介します。
2. Andromedaマルウェアの動作
Andromedaマルウェアは悪性のコードを複数のファイルにわたってパックしており、実行時にそれらのファイルを展開します。今回調査した検体はNullsoft Scriptable Install System(NSIS)によってパッケージ化されたWindowsインストーラで配布されていたものです。これは「7z」を使うことで内部構造を明らかにし、ファイル抽出できるようになります。(図 1)この検体のタイムスタンプは2013年となっており、攻撃者は古いAndromedaの検体を再び採用していることが分かります。この検体には1つの実行ファイル「Sahofivizu.exe」、4つのDLLファイル「Gozekeneka.dll」「natigezeholi.dll」「xuxokuxoka.dll」「zojemilocan.dll」、そして暗号化されたバイナリファイル「yumicebivud.rih」が含まれていました。
最終的に、この検体は4つの実行ファイル、8個のDLLファイル、2つの暗号化されたデータ、拡張子が.batのファイル、3つのテキストファイル、用途不明のデータファイルを含む19個のファイルが展開されます。いくつかのファイルは検体の実行時にディスク上に展開されます。また、削除されるファイルや、メモリ上に展開され対象のプロセスに挿入されるファイルもあります。
図 2はWindows7の環境で検体を実行した際の、不審な振る舞いやC2サーバへ通信を行ったプロセスツリーです。
Andromedaの検体は図 2でHu25Vea8Dr.exe(PID 2948)となっているものです。プロセスツリー上の8つめのプロセス(msiexec.exe PID 2948)は悪性コードをsvchost.exeへ挿入します。そして、svchost.exeはC2サーバとの通信を行います。マルウェアがアクセスする通信先のIPアドレスとURLは表 1にまとめています。
2.1 動作概要
Andromedaの実行動作を図 3に示します。Andromedaの検体(Hu25VEa8Dr.exe, PID 2948)を実行すると、実行ファイルSahofivizu.exeが展開・実行されます。実行されたプロセス(Sahofivizu.exe, PID920)は、yumicebivud.rihファイルの読み取りと復号を行います。さらに、Hu25VEa8Dr.exeを実行し、yumicebivud.rihを復号した結果を挿入します。この実行したHu25VEa8Dr.exeは展開したDLLを読み込みます。これらのDLLはプロセスインジェクションを行う機能を持っています。
Zojemilocan.dllのfetomekiratu関数は、yumicebivud.rihファイルの中身をデコードします。最終的にNategazohli.dll内のbedevahateyu関数がデコードしたyumicebivud.rihファイルの内容をProcess Hollowingでプロセスインジェクションを行います。
その後に実行されるmsiexec.exeはNSISインストーラによるSFXアーカイブです。実行されると複数のファイルとDLL(Jahulocayedo.dll, rikayolehoofu.Xoc, yiduyevytog.dll, Lohonibuhod.exe, Firsozedkami.dll, naseropuxeq.dll)を展開します。Lohonibuhod.exeプロセスの作成、プロセスを停止、rikayolehofu.Xocの内容をメモリ上に書き込み、再開させます。その後、ドロップしたファイルの削除を行い、svchost.exeプロセスのスタートと停止、Process Hollowingを使用して悪意のあるコードを埋め込み、再度実行させます。
svchost.exeはmsoiruj.batファイルをドロップします。このファイルは.batの拡張子がついていますが、32ビットの実行ファイルです。このファイルはmsiexec.exeのコピーであり、永続化としてレジストリキーへの登録を行います。また、このファイルには隠しファイル属性が設定されています。何回か実行したところ、このドロップされるファイルは、msuqox.cmdやmsoiruj.batやmsvtym.batなどランダムに生成されます。ファイル名が”ms”から始まること、拡張子をcmdやbatとすることでWindowsの正規のファイルであるかのように偽装する目的があると考えられます。
また、svchost.exeは最初に3つの通信を行った後、C2先との通信を行います。
マルウェア実行時の通信
インターネット接続可否確認
マルウェアはインターネットへ接続可能かチェックする機能を持っています。この検体では、socket、getsockname、connect、close socketシステムコールを使用します。検体は「www.update.microsoft.com」へ通信を行うことでインターネットへの接続可否を確認します。また、これらのAPIは動的に呼び出され、静的解析では確認することはできませんでした。
DNSクエリ
また、マルウェアが実行されプロセスインジェクションが行われると、C2サーバへの通信を行います。Andromedaは8.8.4.4と8.8.8.8へのDNSクエリを送信します(図 4)。DNSのレスポンスは表1の通りです。
表 1 マルウェアの通信するドメインクエリ、VirusTotalでのドメインのレピュテーション結果(2024年6月時点)
ファイルダウンロード
プロセスインジェクションされたsvchost.exeはインターネットからファイルをダウンロードする機能を持っています。メモリトレースした結果、URLDownloadToFileWやGetTempPathW、GetTempFileNameWを使用していました。svchost.exeはダウンロードしたファイルを%TEMP%フォルダと C:\Users\<ユーザ名>\AppData\Local\Microsoft\Windows\Temporary Internet Files\へ保存します。
HTTP通信
svchost.exeが通信するURLを以下に記載しています。図 5と図 6はマルウェアによって発生したHTTPのGETとPOSTリクエストです。通信先のサーバのうち一つは図 8のようにシンクホール化されていました。それ以外のHTMLレスポンスは空でした。
メモリ上のURL
マルウェア実行時のプロセスメモリやProcess Hollowingされたデータを確認したところ、複数のURL(図 8)が確認できました。
図 9のURLはProcess Hollowingされる悪性コードの中には確認できておらず、Process Hollowing後に更なる暗号化の処理がされていると思われます。
また、FUN_1001430関数が呼び出されると、第一引数のURLへの通信を行います。通信時のパスとして、以下の様な32文字のランダムな文字列が使用されます。
http[://]pe[.]suckmycocklameavindustry[.]in/kyibnsbpivjxirbgrdsdmvblscjxkalm
3. 耐解析機能
Andromedaマルウェアは、複数の耐解析機能を備えています。それらの耐解析機能について本章で説明します。
システムライブラリ呼び出しの難読化
AndromedaマルウェアはシステムライブラリのAPIを難読化しています。CreateProcess、NtUnmapViewOfSection、VirtualAllocExといったプロセスインジェクションに使うAPIが難読化されており、実行時に動的に呼び出されます。
デバッガ検知
Andromedaマルウェアはデバッガが実行されているかを確認します。図11はシステム上でデバッガが実行されている際のトレース結果です。IsDebuggerPresent関数でデバッガがアタッチされているか確認し、アタッチされている場合TerminateProcess関数を呼び出し、プロセスを停止させます。
遅延の仕組み
マルウェアはsleep関数を呼び出し、デバッガの回避の目的と思われる実行時遅延を発生させます。また、sahofivisu.exeのコードにループがあることを確認しています。
4. Windows7とWindows10での動作結果
AndromedaはWindows7の64ビットの環境ではProcess Hollowingをしたsvchost.exeのプロセスがC2サーバとの通信を行います。一方Windows7の32ビットの環境ではAndromedaは悪性コードをwuauclt.exeにProcess Hollowingで挿入し、このプロセスがC2サーバと通信します。環境によってコードを挿入する対象のプロセスが異なります。
Windows10の環境ではマルウェアはアプリケーションエラーが発生によりクラッシュし、実行停止します。SahofivizuプロセスはReadConsoleInputWへアクセスする際に、アクセス違反のエラーが発生して停止します。この結果WindowsのエラーレポートとWerfault.exeが呼び出されます。この振る舞いはサードパーティの解析環境でも同様に発生しています。
まとめ
今回のブログではAndromedaマルウェアとAndromedaマルウェアが展開するペイロードについて解析しました。この攻撃では古いAndromedaの検体が再利用され、KopiluwakやQuietcanaryペイロードが攻撃対象の端末で実行されます。我々はAndromedaのドロッパーおよび使用されるバイナリを解析し、Andromedaマルウェアは静的解析を阻害する耐解析のテクニックやProcess Hollowingのテクニックを使用してシステムプロセスに悪性のコードをインジェクションするテクニックを確認しています。また、今回の解析で確認したテクニックのMITRE ATT&CKマトリクスへのマッピングおよびIoCをAppendixに共有します。
参考文献
[1] Mandiant Turla: A Galaxy of Opportunity
https://cloud.google.com/blog/topics/threat-intelligence/turla-galaxy-opportunity/
[2] Joe Sandbox
https://www.joesandbox.com/#windows
[3] Any.run
https://any.run/
[4] Joe Sandbox: Analysis of Andromeda Windows 10 64-bit environment
https://www.joesandbox.com/analysis/1317541/1/html
[5] Joe Sandbox: Analysis of Andromeda on Windows7 32-bit environment
https://www.joesandbox.com/analysis/1317431/0/html
Appendix
MITRE ATT&CK Mappings
(T1106)
(T1547.001)
Command and Control (C2).
- T1071.001: Application Layer Protocol: Web Protocols
AndromedaマルウェアはHTTPのGETとPOSTリクエストを使用します。 - T1105: Ingress tool transfer
svchost.exeのプロセスはHTTP経由でファイルをダウンロードします。
Privilege Escalation
- T1055: Process Injection
Andromedaマルウェアはリモートプロセスへのコードインジェクションの機能を持っています。(CreateProcessA, NtUnmapViewOfSection, VirtualAllocEx, WriteProcessMemory, SetThreadContext)
Execution
- T1106: Native API
GetProcAddress、GetModuleHandleA、LoadLibraryや暗号系のAPIを使用して、動的に呼び出すAPIを解決する機能を持っています。 - T1129: Shared Modules
Sahofivizu.exeは共通モジュール(CreateProcessやLoadLibraryなどのシステムDLLにある機能)を呼び出して、悪意のあるペイロードを実行します。
Persistence
- T1547.001: Registry Run Keys / Startup Folder
svchost.exeプロセスは次のキーとデータを作成します。
キー:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
データ:C:\PROGRA~3\LOCALS~1\Temp\<random string>.bat
Defense Evasion.
- T1036 Masquerading: Match Legitimate Name or Location
Andromedaはmsiexec.exeといったシステムファイルと似た名前のファイルを作成します。 - T1622: Debugger evasion
Andromedaはデバッガが実行されているかをチェックする機能を持っています。IsDebuggerPresent、GetCurrentProcess、TerminateProcessが使用し、デバッガが使用されている場合プロセスを停止します。 - T1027: Obfuscated files or information
Sahofiziu.exeはシステムDLLのオフセットを使用して、システムAPIを動的に呼び出すことで、コードおよびProcess Hollowingのコードの難読化をしています。 - T1027.002: Software Packing
Andromedaは複数のファイルをパックしています。yumicebivud.rihは暗号化/難読化されたフォーマットです。実行時にメモリ上に復号されます。 - T1055: Process Injection
Andromedaは悪性コードをリモートプロセスに挿入する機能を持っています。(CreateProcessA, NtUnmapViewOfSection, VirtualAllocEx, WriteProcessMemory, SetThreadContextが使用されます。)
Discovery.
- T1082: System Information Discovery
複数のプロセス(Sahofivizu.exe, msiexec.exe, Lohonibuhod.exe)でサポートされている言語、コンピュータ名、マシンGUIDなどのシステム情報をチェックします。 - T1124: System Time Discovery
AndromedaはGetTickCountで、ローカルシステム時間を確認する機能を持っています。 - T1622: Debugger evasion
Andromedaはデバッガが実行されているかをチェックする機能を持っています。IsDebuggerPresent、GetCurrentProcess、TerminateProcessを使用して、デバッガが使用されている場合、プロセスを終了します。 - T1057: System Process Discovery
Andromedaはプロセスを列挙する機能を持っています。Process32FirstW、Process32NextWを呼び出します。 - T1083: File and Directory Discovery
Andromeda contains functionality to query local drives (GetDriveTypeW), Check free disk space (GetDiskFreeSpace), and also reads INI files.
Andromedaはローカルドライブやディスクの空き容量の確認、INIファイルの読み込む機能を持っています。
IoCs
表 2. AndromedaマルウェアのIoCs
img[.]suckmycocklameavindustry[.]in
sc[.]suckmycocklameavindustry[.]in
xdqzpbcgrvkj[.]ru
anam0rph[.]su
orzdwjtvmein[.]in
ygiudewsqhct[.]in
bdcrqgonzmwuehky[.]nl
somicrososoft[.]ru
http[://]img[.]suckmycocklameavindustry[.]in/<random 32 string>
http[://]sc[.]suckmycocklameavindustry[.]in/<random 32 string>
http[://]xdqzpbcgrvkj[.]ru/in.php
http[://]anam0rph[.]su/in.php
http[://]orzdwjtvmein[.]in/in.php
http[://]ygiudewsqhct[.]in/in.php
http[://]bdcrqgonzmwuehky[.]nl/in.php
http[://]somicrososoft[.]ru/in.php
執筆者プロフィール
竹内 俊輝(たけうち としき)
セキュリティ技術センター リスクハンティング・アナリシスグループ
リスクハンティング・アナリシスグループにて脆弱性診断やペネトレーションテストを担当。趣味はマルウェア解析
SEC560メダル保持
情報処理安全確保支援士(登録番号014728号)
GIAC GPEN
Dr.Manikantan Srinivasan
NEC オープンネットワークソリューション・サービス (NOSS) デリバリーユニット, NEC Corporation India Pvt Ltd.
5GのAI/MLに関する研究、O-RAN allianceのアーキテクチャベースのセキュア5Gソリューション開発、テレコムセキュリティ、3GPP標準化、サイバースレットインテリジェンスに関する研究に取り組む。
O-RAN WG11 - Security Working GroupのNECの代表として、O-RANセキュリティの標準化に貢献。ネットワーク通信、携帯電話のネットワークとセキュリティに関する24年以上の経験を持つ。
2021年以降、MITRE ATT&CKに対して複数の脅威情報を提供し採用されている。
CISSPを保持。
Dr. Sareena Karapoola
デジタルプラットフォームデリバリーユニット(DPDU)、NEC Corporation India Pvt Ltd
マルウェア解析、マルウェア検知技術開発、サイバースレットインテリジェンスに関する研究に取り組む。
2022年にインド工科大学マドラス校でコンピュータサイエンスの博士号を取得、サイバーセキュリティを学ぶ。他の研究対象として、新しいAIベースの検知や軽減戦略、現実世界のテストベッドとセキュリティリサーチ用のラベル付きデータセットがある。
スマートカードリーダーやアクセスコントローラ端末などの組み込み製品とシステムソフトウェアに対する10年以上の経験を持つ。