脅威のスポットライト: 情報搾取型マルウェアAZORultの解析

By Masaki Kasuya

本ブログ記事は、2019年6月4日に米国で公開された抄訳版です。原文はこちらからご覧頂けます。

AZORult は2016年に出現した情報搾取型のマルウェアであり[1]、ウェブブラウザの閲覧履歴、Cookie、ウェブブラウザに保存されたID / パスワード、仮想通貨に関連する情報を被害者のコンピュータから抜き取り、コマンド & コントロール (C2) サーバに送信します。AZORult はC2サーバから配信される設定情報に基づいて他のマルウェアファミリーを配信する基盤としても用いられます。本記事ではAZORult v3.2、及びv3.3[2],[3]に関して分析を行っています。ANY.RUN の統計データによるとAZORult は2018年10月から2018年12月においてトップ10にランクインしており、活発なマルウェアであることが分かります[4]

主な感染経路はエクスプロイトキットやフィッシングメールです。RamnitやEmotetといった他のマルウェアファミリーもAZORult を感染させます。本記事ではAZORultの技術的な詳細を解説します。

技術的解説

AZORult は情報搾取型のマルウェアであり図1の挙動を示します。被害者のコンピュータに感染すると、コンピュータに保存してある様々な情報をC2サーバに送信します。まずはじめに、被害者のコンピュータの情報からIDを生成し、それを XOR マスクして得られたデータをC2サーバに送信します。

C2サーバから得られるレスポンスデータはAZORult の挙動を決定する設定情報となります。この中身はウェブブラウザの名前や、それに関連するパス情報、API の名前、sqlite3のクエリ、正規のDLLファイルなどが含まれています。この設定情報に基づいて、AZORult は被害者のコンピュータから様々な情報を取得します。こうして収集された情報にはXORマスクが施され、C2サーバに送信されます。また設定情報の内容次第では、リモートサーバから追加のファイルをダウンロードして他のマルウェアファミリーを実行する場合もあります。今回調査を行ったサンプルに関しては解析を妨害するコードは存在しなかったことが判明しています。

図1: AZORult の攻撃サイクル

IDの生成

AZORult は下記の情報に基づいて、一意なIDを作成します(図2を参照):

  • マシン GUID
  • プロダクト名
  • ユーザ名
  • コンピュータ名
  • 上記の4つのデータをひとまとめにしたデータ

図 2: ID の生成

上記の各データはWin32 API や レジストリから取得します。取得したデータは下に示すID 生成関数により各々4バイトの値に変換されます。

def IDgeneration(plaintext, key):
bytetext = bytearray(plaintext.encode('ascii'))
length = len(bytetext)
tmp = 0
for i in range(0, length):
xoredValue = bytetext[i] ^ key
xoredValue += tmp
xoredValue &= 0xFFFFFFFF
tmp1 = xoredValue >> 19
tmp2 = (xoredValue << 13) & 0xFFFFFFFF
tmp = xoredValue - (tmp1 | tmp2) & 0xFFFFFFFF
return tmp


その際、AZORultに埋め込まれている4バイトのデータを鍵として用いて変換を行います (0x6521458A)。この4バイトのデータは v3.2 から v3.3まで同一であることが確認できています。こうして5つの4バイトデータを取得した後、それらはハイフンで連結されます。これにより得られた文字列は2つの目的で利用されます:

  • ミューテックスの作成
  • To provide a unique id for the C2 communication

コマンド & コントロール (C2) 通信

AZORult は上記で生成したIDを以下のように変換します:

  • プレフィックスの付与:"G" (AZORult v3.2), 3-byte XOR key for AZORult v3.3
  • URL エンコード
  • XOR マスク

変換されたIDはC2通信の開始時に利用されます。C2サーバが被害者のコンピュータからのリクエストを正常なものと判断すると、C2サーバは被害者のコンピュータに設定情報を送信します。図3はC2サーバから受信した設定情報のフォーマットを示しています。

図 3: 設定情報のフォーマット (v3.3)

設定情報は3種類の情報に分類することができます:

1. ウェブブラウザ、Eメールクライアントのソフトウェアに関するパス情報、ハードコードされたsqlite3のクエリなどの情報
図4はパス情報を含む設定情報の抜粋です。
AZORultはこれらを利用して被害者のコンピュータ上に存在する情報を取得してC2サーバに送信します。

図 4: パス情報に関する設定情報の抜粋

2. C2サーバからのコマンド
AZORultへの動作を指示するコマンドも設定情報に含まれています。図5はコマンドの例を示しています。 なお、各コマンドの意味は下記の通りです。

-F
指定されたディレクトリ配下にあるファイルをアップロード
-I
被害者コンピュータの IP アドレスに関する地理情報を送信
-L
追加のファイルのダウンロードと実行

図 5: コマンドの例

3. 正規のDLLファイル
被害者コンピュータから情報を収集するために利用します。

  • api-ms-win-core-console-l1-1-0.dll
  • api-ms-win-core-datetime-l1-1-0.dll
  • api-ms-win-core-debug-l1-1-0.dll
  • api-ms-win-core-errorhandling-l1-1-0.dll
  • api-ms-win-core-file-l1-1-0.dll
  • api-ms-win-core-file-l1-2-0.dll
  • api-ms-win-core-file-l2-1-0.dll
  • api-ms-win-core-handle-l1-1-0.dll
  • api-ms-win-core-heap-l1-1-0.dll
  • api-ms-win-core-interlocked-l1-1-0.dll
  • api-ms-win-core-libraryloader-l1-1-0.dll
  • api-ms-win-core-localization-l1-2-0.dll
  • api-ms-win-core-memory-l1-1-0.dll
  • api-ms-win-core-namedpipe-l1-1-0.dll
  • api-ms-win-core-processenvironment-l1-1-0.dll
  • api-ms-win-core-processthreads-l1-1-0.dll
  • api-ms-win-core-processthreads-l1-1-1.dll
  • api-ms-win-core-profile-l1-1-0.dll
  • api-ms-win-core-rtlsupport-l1-1-0.dll
  • api-ms-win-core-string-l1-1-0.dll
  • api-ms-win-core-synch-l1-1-0.dll
  • api-ms-win-core-synch-l1-2-0.dll
  • api-ms-win-core-sysinfo-l1-1-0.dll
  • api-ms-win-core-timezone-l1-1-0.dll
  • api-ms-win-core-util-l1-1-0.dll
  • api-ms-win-crt-conio-l1-1-0.dll
  • api-ms-win-crt-convert-l1-1-0.dll
  • api-ms-win-crt-environment-l1-1-0.dll
  • api-ms-win-crt-filesystem-l1-1-0.dll
  • api-ms-win-crt-heap-l1-1-0.dll
  • api-ms-win-crt-locale-l1-1-0.dll
  • api-ms-win-crt-math-l1-1-0.dll
  • api-ms-win-crt-multibyte-l1-1-0.dll
  • api-ms-win-crt-private-l1-1-0.dll
  • api-ms-win-crt-process-l1-1-0.dll
  • api-ms-win-crt-runtime-l1-1-0.dll
  • api-ms-win-crt-stdio-l1-1-0.dll
  • api-ms-win-crt-string-l1-1-0.dll
  • api-ms-win-crt-time-l1-1-0.dll
  • api-ms-win-crt-utility-l1-1-0.dll
  • freebl3.dll
  • mozglue.dll
  • msvcp140.dll
  • nss3.dll
  • nssdbm3.dll
  • softokn3.dll
  • ucrtbase.dll
  • vcruntime140.dll

被害者のコンピュータから情報を取得する方法

AZORult はパスワードなどの情報を取得するために被害者のコンピュータをスキャンします。本項では例としてGoogle Chromeウェブブラウザに保存されたパスワードを取得するまでのステップを解説します。

1. 対象となるファイルの探査
IGoogle Chrome に保存されているパスワード情報は下記のパスに存在します。このパスは設定情報に含まれている情報を用いて探し出します。%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data.

2. “Login Data” ファイルを %TEMP% 配下に保存
ファイルをコピーする際、図6のようにGetTickCount()QueryPerformanceCounter()の結果から得られた数値がファイル名として採用されます。

図 6: コピーした “Login Data” の一時ファイル

3. sqlite3 クエリの実行
“Login Data” はSQLite 3のデータベースファイルです。このデータベースファイルから情報を取得するために、AZORultは設定情報に含まれていた nss3.dllを用いてsqlite3に関するAPIのアドレスを解決して設定情報に含まれているsqlite3クエリを実行します。図7はAZORultが取得したパスワード情報を保存する際のフォーマットを示しています。

図7: AZORult が取得したパスワードの保存フォーマット

4. %TEMP% に保存した ”Login Data” の消去
調査の結果、AZORult は下記のソフトウェアに関する情報を収集します。

  • ウェブブラウザ:
    o Google Chrome
    o Comodo Dragon
    o Amigo
    o Orbitum
    o Bromium
    o Chromium
    o Nichrome
    o RockMelt
    o Vivaldi
    o Go Browser
    o Sputnik
    o Kometa
    o Uran
    o QIP Surf
    o Epic Privacy Browser
    o Brave
    o Cent Browser
    o CocCoc
    o 7 Star
    o Elements Browser
    o Safer Technologies
    o Mustang
    o Superbird
    o Chedot
    o Torch
    o Firefox
    o Waterfox
    o IceDragon
    o Cyberfox
    o PaleMoon
    o InternetExplorer
    o Microsoft Edge
    o Opera
    o Xpom
    o YandexBrowser
    o 360Browser
    o TorBro
    o Suhba
  • Eメールクライアント:
    o Outlook
    o Thunderbird

  • 仮想通貨:
    o Electrum
    o Electrum-LTC
    o ElectrumG
    o Electrum-btcp
    o Jaxx
    o MultiBitHD
    o Monero
    o Bitcoin
    o BitcoinGold
    o BitCore
    o Litecoin
    o BitcoinABC
    o Exodus
    o Exodus Eden
    o Ethereum
  • その他:
    o Filezilla
    o PSI+
    o WinScp
    o Skype
    o Telegram
    o Steam

C2サーバにデータを送信する際のフォーマット

AZORultが被害者のコンピュータから情報を収集した後、C2サーバにその情報を送信します。調査の結果、下記の情報を送信することが判明しています。

  • OS バージョンなど被害者のコンピュータに関する基本的な情報
  • ウェブブラウザに保存されたパスワード情報
  • ウェブブラウザでアクセスしたドメインの一覧
  • オートコンプリート、Cookie、ウェブブラウザの閲覧履歴
  • C2コマンドの結果
  • 感染したコンピュータのIPアドレスの地理情報
  • スクリーンショット
  • 詳細なシステム情報
    o ディスプレイの解像度
    o 実行中のプロセス一覧
    o インストールしたプログラムの一覧
    o その他

上記の情報はAZORultにハードコードされた区切り用の文字列とともに図8のように一纏めにされます。このデータはC2サーバに送信前にXORマスクされます。なおハードコードされた区切り用の文字列はバージョン3.2、3.3でそれぞれ異なります。

図 8: パックした情報の例 (区切り用文字列はグレーアウト)

図8にあるZip で圧縮した詳細データには、図9に示すファイルやフォルダが含まれています。

図 9: Zipファイルに含まれているファイルやフォルダ

ダウンローダとしての機能

設定情報内にURLが記入されている場合、AZORult は追加のペイロードをダウンロードし、それを実行します。追加ペイロードは %TEMP% もしくは %ProgramFiles% で指定されるディレクトリに保存されます。ダウンロードしたファイルの拡張子が “.exe” の場合、そのファイルは図10で示すように CreateProcessW()設定情報内にURLが記入されている場合、AZORult は追加のペイロードをダウンロードし、それを実行します。追加ペイロードは %TEMP% もしくは %ProgramFiles% で指定されるディレクトリに保存されます。ダウンロードしたファイルの拡張子が “.exe” の場合、そのファイルは図10で示すようにShellExecuteW() を使います。解析を行っている際、Cylance は hXXp://cindysonam[.]org/putty[.]exe を設定情報に含む AZORult を発見しました。そのファイルはデジタル署名が施された、正規のputty.exev0.68でした。しかしながら、以前は同一のURLでPanda Banker [5,6]と呼ばれる金融機関を狙うマルウェアを感染させていました

図10: AZORult はダウンロードしたファイルの拡張子に応じて CreateProcessW もしくは ShellExecuteW を使う

管理者用パネル

Blackberry Cylance はAZORult の管理者用ウェブアプリケーションとそのビルダーサイトを発見しました。ビルダーサイトの説明にはウェブアプリケーションの特徴に関する情報がロシア語で記述されていました。

図11: AZORult ビルダーサイトのスクリーンショット

管理者用のウェブアプリケーションはAZORult を使って収集した情報を表示するために実装されています。このトップページでは取得した情報に関する統計や、AZORultに感染したコンピュータの地域を表示します。

図12: 管理者用パネルのトップページ

管理者はAZORult に送信する設定情報をこのアプリケーションを使って編集できます。ここで編集した情報に基づいてAZORult はC2サーバから設定情報を受け取ります。

図13: AZORult の設定情報編集メニュー

Blackberry Cylance はAZORult を阻止します

攻撃者はAZORultを利用してシステム情報、ウェブブラウザの閲覧履歴やそれに保存されているID / パスワード情報、仮想通貨関連の情報など様々な情報をC2サーバに送信します。現時点ではAZORultは解析妨害のためのコードを含んでいません。しかしながら、将来的に解析妨害のためのコードを実装する可能性があります。

Blackberry CylanceのAIは、百万を超えるファイルの脅威の特徴に基づいて様々な脅威を特定できるようトレーニングされています。Blackberry Cylanceのセキュリティエージェントは、マルウェアのDNAに基づいて脅威を特定し、防御します。予測防御により既知及び未知の脅威から保護する Blacyberry Cylanceはあらゆるマルウェアから様々な特徴を学習し、AZORult を検出することができています。

IOCs

  • AZORult のペイロード

494EDDDC91292A5B25681C985F52850518AC9F9F5634232866F8D821B1B645C0: AZORult v3.2

E022B5AFC18C2E5E9E74307CD27B0ADD7A5A0CE7BE41678223CEEA76DBED6F26: AZORult v3.2

12B6A633B470216952DB405356C9B565EE58C6DCB27D57ED6492DFAF51D22E61: AZORult v3.3

748C94BFDB94B322C876114FCF55A6043F1CD612766E8AF1635218A747F45FB9: AZORult v3.3

  • C2 サーバ

o hXXp://nagoyashi[.]chimkent[.]su/index[.]php

o hXXp://ivanoffol3[.]temp[.]swtest[.]ru/index[.]php

o hXXp://mockerton[.]top/index[.]php

o hXXp://www[.]jma-go[.]jp/java/java9356/index[.]php

o hXXp://cindysonam[.]org/putty[.]exe

  • ミューテックス

o A{Generated ID by AZORult}

参考資料

1. https://www.proofpoint.com/us/threat-insight/post/threat-actors-using-legitimate-paypal-accounts-to-distribute-chthonic-banking-trojan
2. https://www.proofpoint.com/us/threat-insight/post/new-version-azorult-stealer-improves-loading-features-spreads-alongside
3. https://research.checkpoint.com/the-emergence-of-the-new-azorult-3-3/
4. https://twitter.com/anyrun_app
5. https://urlhaus.abuse.ch/url/72898/
6. https://threatvector.cylance.com/en_us/home/threat-spotlight-panda-banker-trojan-targets-the-us-canada-and-japan.html

著者について

 

Tags: