Andromedaマルウェアの解析

NECセキュリティブログ

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を展開する活動について報告しています。new window[1]

Mandiantのレポートでは詳細な解析結果が記載されていないAndromedaについて、このブログでは紹介します。AndromedaのSoftware Packing・Process Hollowing・Masqueradingなどの耐解析機能を説明します。このブログは次のハッシュ値のAndromedaマルウェアを解析した結果です。

Andromeda Sample:9535a9bb1ae8f620d7cbd7d9f5c20336b0fd2c78d1a7d892d76e4652dd8b2be7 (SHA 256)

主要な所見:

  1. Andromedaマルウェアは複数のファイルを展開します。これらの中には2つの暗号化されたファイルがあります。
  2. Andromedaマルウェアはシステムライブラリの呼び出しの難読化、デバッガ検知、実行遅延といった3つの耐解析技術を採用しています。
  3. AndromedaはProcess Hollowingを使って悪性のコードをシステムプロセスに挿入します。
  4. システムプロセス(svchost.exe)に挿入された悪性のコードがC2サーバへの通信を行います。
  5. Windows7とWindows10の環境ではマルウェアの振る舞いに違いがあります。

目次

1. 解析方法について

マルウェアへの理解を深めるため、複数のプラットフォームや環境で検体の解析をしています。この環境には、NECでセットアップしたもの以外に、JoeSandboxnew window[2]やAny.runnew window[3]を使用しています。JoeSandboxでの解析結果についてはnew window[4]new window[5]を参照してください。

今回の検体はNECで用意したWindows10の環境、サードパーティのWindows10のサンドボックス環境new window[4]new window[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個のファイルが展開されます。いくつかのファイルは検体の実行時にディスク上に展開されます。また、削除されるファイルや、メモリ上に展開され対象のプロセスに挿入されるファイルもあります。

zoom拡大する
図 1 Andromedaの検体に含まれていたファイルおよびタイムスタンプ

図 2はWindows7の環境で検体を実行した際の、不審な振る舞いやC2サーバへ通信を行ったプロセスツリーです。

zoom拡大する
図 2 Windows 7 64bit環境で確認できるプロセスツリーnew window[5]

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はプロセスインジェクションを行う機能を持っています。

図 3 Andromeda実行時に確認した動作

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の通りです。

zoom拡大する
図 4 Wiresharkで確認したAndromedaによるDNSリクエスト

表 1 マルウェアの通信するドメインクエリ、VirusTotalでのドメインのレピュテーション結果(2024年6月時点)

Domain queries Antivirus Detection
pe[.]suckmycocklameavindustry[.]in 6/93 detections
img[.]suckmycocklameavindustry[.]in 5/93 detections
sc[.]suckmycocklameavindustry[.]in 6/93 detections
xdqzpbcgrvkj[.]ru 12/93 detections
anam0rph[.]su 9/93 detections
orzdwjtvmein[.]in 6/93 detections
ygiudewsqhct[.]in 8/93 detections
bdcrqgonzmwuehky[.]nl 6/93 detections
somicrososoft[.]ru 13/93 detections

ファイルダウンロード

プロセスインジェクションされた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レスポンスは空でした。

zoom拡大する
図 5 AndromedaマルウェアによるGet通信
zoom拡大する
図 6 AndromedaマルウェアによるPOST通信
図 7 Wiresharkで確認したHTTPセッション
図 8 Kryptos Logic社によりシンクホール化されたドメイン

メモリ上のURL

マルウェア実行時のプロセスメモリやProcess Hollowingされたデータを確認したところ、複数のURL(図 8)が確認できました。

図 9 Andromeda実行時のメモリ上で確認した文字列
zoom拡大する
図 10 Process Hollowingされる悪性コード内で確認した通信先

図 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関数を呼び出し、プロセスを停止させます。

図 11 解析環境とJoe Sandboxでのデバッガ検知の確認

遅延の仕組み

マルウェアはsleep関数を呼び出し、デバッガの回避の目的と思われる実行時遅延を発生させます。また、sahofivisu.exeのコードにループがあることを確認しています。

図 12 実行時遅延でスリープを実行するコード

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に共有します。

参考文献

Appendix

MITRE ATT&CK Mappings

Execution Privilege Escalation Persistence Defense Evasion Discovery Command & Control (C2)
Shared Modules (T1129) Process Injection (T1055) Registry Run Keys/Startup Folder Masquerading: Match Legitimate Name or Location (T1036) System Network Connections Discovery (T1049) Application Layer Protocol (T1071)
Native API
(T1106)
Registry Run Keys/Startup Folder
(T1547.001)
  Debugger Evasion (T1622) System Information Discovery (T1082) Ingress Tool Transfer (T1105)
    Obfuscated Files or Information (T1027) Security Software Discovery (T1518.001)  
      Software Packing (T1027.002) Debugger Evasion (T1622)  
      Process Injection (T1055) Query Registry (T1012)  
      System Time Discovery (T1124)  

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
  IoCs
SHA256 9535a9bb1ae8f620d7cbd7d9f5c20336b0fd2c78d1a7d892d76e4652dd8b2be7
SHA1 c6858031315a50ec87e37966291ec69b64600efb
MD5 bc76bd7b332aa8f6aedbb8e11b7ba9b6
SSDEEP 3072:ugXdZt9P6D3XJ3TCM/vosUE2L/TLqtAyD2XXhtksIae31fXJHhKgzyJtdeV:ue34p/vr6yrC2sJe35ZBKg0dW
TLSH T16B14024364F582BFD6820432D5B92B79D77BCD8D438A7A470B447F21BA318D3C909E8A
Popular threat label on Virustotal trojan.gamarue/nsis
Domains pe[.]suckmycocklameavindustry[.]in
img[.]suckmycocklameavindustry[.]in
sc[.]suckmycocklameavindustry[.]in
xdqzpbcgrvkj[.]ru
anam0rph[.]su
orzdwjtvmein[.]in
ygiudewsqhct[.]in
bdcrqgonzmwuehky[.]nl
somicrososoft[.]ru
URLS http[://]pe[.]suckmycocklameavindustry[.]in/<random 32 string>
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年以上の経験を持つ。

アクセスランキング