トップナビゲーションをスキップ
BlackBerry ThreatVector ブログ

【温故知新シリーズ】脅威のスポットライト:Andromedaボットネット

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

 

エグゼクティブサマリー

Andromedaボットネットは、GamarueまたはWauchosとも呼ばれ、2011年に初めて公開されました。これまでの期間、大量のマルウェアを配布するのに使用されました。Microsoftによると[1]、Andromedaボットネットはランサムウェア、ワームなど80を超えるマルウェアファミリーの拡散に使用されていました。

Andromedaはモジュール式のマルウェアです。つまり、追加コンポーネントを購入し、機能を加えることができます。Andromedaの標準キットは約300~500ドルで販売されていますが、ビルダーのバージョンと購入した追加モジュールにより価格は変わります。ビルダーには、2.06、2.07、2.08、2.09、2.10の5つのバージョンがあります。2.06より前のバージョンに関する情報はあまりありません。 

本ブログ記事では、バージョン2.06のビルダー(OldWarriorがクラックしたバージョン)に重点を置いて分析を行います。

 

技術的分析

Andromedaは非常に大規模なボットネットでした。しかし、分析したところ、他のボットネット構築キットと比較して、Andromedaのインフラストラクチャのビルドにはほとんど労力を要しないことがわかりました。インフラストラクチャのビルドに使用される各コンポーネントの構成を以下に示します(図1を参照)。

図1:Andromedaボットネットビルダーの内容

Scan For Securityによると[2]、オリジナルのAndromedaビルダーはこれまでリリースされていませんでした。Andromedaのトロイの木馬バージョンは、オリジナルのプロジェクトに関わっていない匿名の人物であるOldWarriorが作成したとされていました。これはインターネット上で流通しているビルダーであり、さまざまなソースから無料でダウンロードできます。このビルダーは作成者がOldWarriorとなっているため、簡単に識別できます。

 

分析したファイルとAndromeda Webパネル

Config.php 

Config.php は以下の主要な構成情報を含んでおり、Andromedaの中核部となっています。

図2:config.phpの内容

脅威アクターは始めに、このファイルの設定を編集するかもしれません。現在の設定では、ログイン認証情報は、MD5がadmin : admin 文字列 に対応するハッシュ値に一致しており、非常にユニークなものであることがわかります。

config.phpの内容は、後でパネルビルダーファイル(index.php)や他のコンポーネントまたはスクリプトで使用されます。すべての通信はRC4アルゴリズムを使用するため、RC4キーがconfig.php内のキーと一致しない場合は、通信は確立されません。

 

index.php(管理者向けAndromedaボットWebパネル)

このWebパネルは、phpとMySQLで記述されています。パネルのインストールは、まずMySQLのデータベースの構築から始まります。このデータベースはボットネットとリンクされ、ボットネットに関するすべての情報を保存します。パネルをインストールするため、脅威アクターはブラウザーで <hosting_server >_<folder>_index.php?act=install と入力し、図3に示すウインドウでインストールを行います。

図3:AndromedaボットWebパネルのインストール

このファイルは、base64でエンコードされ、さらにgzipで圧縮されています。この難読化されたphpスクリプトをデコードすると、人間が読み取れる内容になり、Andromeda用Webパネルのインストールにindex.phpが使用されることがわかります。このパネルを使うことで、脅威アクターはMENUの4つのテーブルを操作できます。MENUには4つの選択項目、BotsBlack listTasksServicesがあります。

1.      Botsテーブルには以下の情報が含まれます。

  • Bot ID – 図4に示すような、8文字のID(例:2445FDB3)です。

図4:Bot ID

  • Build ID - 図5に示すような、ボットのビルド時に生成された8桁の数字(例:12345678)です。

図5:Build ID

  • IP Address - 図6に示すような、NAT IPアドレスです。

図6:NAT IP address

ip2long() 関数はIPアドレスの取得に使用されます。32ビット版phpでは整数は符号付きであるため、負の整数(IPアドレス)を返します。符号なしIPアドレスを取得するには、ip2long()関数が必要です。図7に示すように、"(ip2long( string $ip_address ) : int)"は、たとえば、1.0.0.0で16777216を返します。

  • Country – 国と地域のコードから成るリストを含む geoIPCountryWhois.csv.gz ドキュメントを呼び出します(例:AL-アルバニア、LT-リトアニア、EU-ヨーロッパなど)。このドキュメントのサンプルを図7に示します。最初の2つのカラムは、NAT IPアドレスです。3番目と4番目のカラムは、IPアドレスを表します(ip2long関数を使用)。5番目のカラムは国コードで、最後のカラムは国名です。

図7:geoIPCountryWhois.csv.gzドキュメントを解凍した内容の抜粋

以下に示すBotsテーブルの例では、国コードのみが必要です。

図8:国コード

  • Install date - 図9に示すような、インストール日時です。

図9: Install date

  • Last response - 図10に示すような、直近にレスポンスがあった時刻です。

図10: Last response

  • Task – 図11に示すような、ボットコマンドです(例:9はボットを強制終了)。

図11:ボットコマンド

  • Bot version – 図12に示すような、バージョン番号です(02.06など)。

 図12:Bot version

  • OS version  システムOS(Win2000、WinXP、Win2003、WinVista、Win7など)、およびアカウント種別(adminまたはuser)(例:Win7 x86 (A))。 

 

図13:OS version

  • Status – 図14に示すような、現在のボットステータス(online(稼働中)またはdead(停止中))です。

 

図14:Bot status - onlineまたはdead

このページから、脅威アクターは以下の情報を見ることもできます。

  • ボットに関する一般統計データ(総数、稼働中ボット、1時間あたりの稼働、1日あたりの稼働、1週あたりの稼働、最終日の新規ボット、停止中ボットなど)。この情報を図15に示します。

 

図15:一般的なボット統計データ

  • 国に関する統計データ、および最も感染が多い国のリスト

  • 図16に示すような、OSバージョンの統計データ

図16:OS統計データ

  • 感染したシステム数に関するX86/x64の統計データ

  • Build ID 別の統計データ。この情報により、ボットネットの管理者はどのビルドのボットが配備されているのかを容易に追跡できます。

  • 管理者は、onlineステータスやNAT(実際のIPのみ)を選択する、あるいは表示しないようにすることで、レコードをフィルタリングすることもできます(上限30)。例については図17を参照してください。

図17:レコードフィルター

含まれるレコードの例については、図18を参照してください。        

 図18:レコード値

2. Blacklist

このテーブルはブラックリストに登録されているボットから構成されており、アクセス禁止、削除、アクセス禁止の解除、およびアクセス禁止の全解除を行うオプションを備えています。

このアクセス禁止テーブルには、Bot ID、Build ID、IP address (NAT)、Country、Install date、Last response、Task、Bot version、OS version、およびStatus (online/offline)が表示されます。

3. Tasks

Taskは、図19に示すような再作成されたフォームレイアウトを備え、追加/編集/削除を行う機能があります

図19:Tasks

4. Service

Serviceフォームには、以下の機能が用意されています。

  • optimize - Bots、Tasks、Blacklistのデータベーステーブルを最適化します。
  • deldead (delete dead) - 休止中のボットを削除します。
  • delall (delete all) - すべての統計データを削除します。
  • logindata - 新しいログインデータを保存します。
  • limits - 休止中のボットの制限値を更新します。
  • RC4key - RC4keyを更新します。

図20のServiceフォームは、JavaScriptとHTMLの<form>要素を使って作成されたものです(スクリプトはindex.phpから使用されます)。

図20:Service

 

メールが届いています!

Andromedaの主な感染ベクトル1つが、図21に示すように、悪意のあるドキュメントが添付されたスパムメールによるものです。

図21:悪意のあるドキュメントが添付されたメール

被害者は、すぐに対応する必要のある未払い金があることを知らせるメールを受け取ります。多くの場合、ユーザーは添付ドキュメント"img-9625769378672-pdf.zip"をうっかりクリックし、展開します。展開されると、ドキュメント"img-1504632071008-pdf.pdf.exe"がユーザーに提示されますが、これはAndromedaのバックドアです。

SHA256

MD5

SHA256: C85E6C218E4591D48D19FAE9B12DB30856DA245A28BAFC9735E4404B794CA263
MD5: 2DCC2CB2D491404D914478655E1850E1

タイプ

Win32実行ファイル

サイズ

167,424バイト

ITW名

img-1504632071008-pdf.pdf.exe 
Payments_CLI_09_06.png.exe  
0003_.b64.zip-1.exe  
factura(copia)06.2016.jpeg.exe  
msnjqqoc.exe  
mssbuskm.exe


Andromedaの実行チェーンを図22に示します。

図22:Andromedaバックドア実行チェーン

マルウェアは自身のコピーをC:\Users\[name]\AppData\Local\Tempに作成します。ファイルサイズは167,424バイトです。この新しいファイルは、親が作成した子にあたります。

Andromeda は、SetErrorMode 関数によりエラーメッセージを無効にします。次にマルウェアは、LdrLoadDll関数によりDLLをプロセスに読み込みます。読み込まれるDLLは以下のとおりです。

  • ws2_32.dll - ネットワーク操作/接続処理に使用されます。
  • advapi32.dll - セキュリティおよびレジストリ関連の呼び出しを処理します。
  • gdi32.dll - GDI(グラフィックデバイスインタフェース)ライブラリです。
  • imm32.dll - インプットメソッドマネージャーライブラリです。
  • user32.dll - Windowsユーザーインタフェース関連の機能を処理します。
  • shell32.dll - Webページ/ファイルのオープンに関連した機能を処理します。
    • calls LdrGetDllHandle to rpcrt4.dll - リモートプロシージャコールAPIです。
  • ole32.dll - OLE関数ライブラリを含みます。
  • winhttp.dll - インターネットからファイルをダウンロードする際に使用します。
  • crypt32.dll - 証明書や暗号化機能を利用します。
  • dnsapi.dll - DNSクライアントAPI

プロセスハロウイング

プロセスハロウイングは、子プロセスによりmsiexec.exeに対して実行されます。この処理では最終的なペイロードのインジェクションを行うNTDLLのAPIが使用されます。

永続性

永続性を実現するため、Andromedaは以下の変更を行いレジストリキーを修正し、起動時に自動で実行されるようにします。

パス:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
キー:
 1160803084
値:%ALLUSERSPROFILE%\
msswjjumg.exe

この値は3~9個のランダムな小文字になります。次の例を参照してください。
C:\ProgramData\ms{3-9 random-lower-case-letters}.exe”.

マルウェアはまた、以下のレジストリにあるUAC(ユーザーアクセスコントロール)を無効にします。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA

Andromedaはさらに、以下の修正を行うことで、エクスプローラーの設定を変更し、隠しファイルが表示されないようにします。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden

現在の時刻を取得するため、マルウェアはポート123番の複数のNTPドメインについて名前解決を行います。以下のドメインが対象です。

  • pool.ntp[.]org
  • oceania.pool.ntp[.]org
  • south-america.pool.ntp[.]org
  • africa.pool.ntp[.]org
  • europe.pool.ntp[.]org
  • asia.pool.ntp[.]org

コマンドアンドコントロール(C2)へ送信されるPOSTリクエストの例を以下に示します。

  • gainsgul[.]com/love.[]php
  • darylruth[.]com/freedom[.]php

図23:POSTリクエスト

Andromedaはスナップショットを作成して、プロセスにロードされるモジュールを列挙します。Virus Bulletin[3]によると、マルウェアは、Andromedaボットが使用する3つのプラグインエクスポートの1つである、aReport を探しています。このエクスポートとは、aStart、aUpdate、aReportです。

 

まとめ

BlackBerry® Protectをご利用中のお客様であれば、弊社の機械学習モデルによってすでにこの攻撃から防御されています。たとえば、従業員がメールに添付された感染ファイルを誤って開き、次の警告ポップアップが表示されたとします(図24)。

図24:セキュリティ警告

ユーザーが[Run]をクリックすると、BlackBerry Protectはすぐさま脅威をブロックします(図25)。

図25:BlackBerry Protectが脅威を隔離

 

付録

侵入の痕跡(IOC)

  • ハッシュs

ビルダー(圧縮) - 9e4a69b542b2ac512511e1738c614964f7e806ec9d60f0fd5fb61dca735f02c1
メール - fac4eaeafb31fa6de4977bda2efb236a7d1e84442d452c5219ec096293835aef
バックドア - C85E6C218E4591D48D19FAE9B12DB30856DA245A28BAFC9735E4404B794CA263

  • ファイル名

img-1504632071008-pdf.pdf.exe 
Payments_CLI_09_06.png.exe 
Payments CLI_09_06.png.exe 
0003_.b64.zip-1.exe   
factura(copia)06.2016.jpeg.exe

  • C2/IP

gainsgul[.]com/love[.]php 
darylruth[.]com/freedom[.]php

 

ファイル情報    

SHA256

9e4a69b542b2ac512511e1738c614964f7e806ec9d60f0fd5fb61dca735f02c1

タイプ

RAR

サイズ

2849616 バイト

ITW names

Andromeda v2.06.rar
Andromeda+v2.06.rar
 


参考文献

[1] https://www.microsoft.com/security/blog/2017/12/04/microsoft-teams-up-with-law-enforcement-and-other-partners-to-disrupt-gamarue-andromeda/
[2] https://www.scanforsecurity.com/news/sergei-yarets-free-revelations-andromeda-botnet-operator-ar3s.html
[3] https://www.virusbulletin.com/virusbulletin/2018/02/review-evolution-andromeda-over-years-we-say-goodbye/

 

Ieva Rutkovska

About Ieva Rutkovska

Ieva Rutkovska は、BSc Honours IT Managementコースの一環で、脅威リサーチのインターンとして、2018年にBlackBerryに入社しました。彼女は成功裏にインターンシップを終えて、1年後にフルタイムの脅威リサーチャーとして採用されました。Ievaはラトビア語、ロシア語、英語の3つの言語を話すことができ、このことがマルウェアと戦う現在の役割に役立っています。


The BlackBerry Research and Intelligence Team

About The BlackBerry Research and Intelligence Team

BlackBerry の Research and Intelligence Team は、新たに生じている脅威と持続的な脅威を検証し、セキュリティ担当者とその所属企業のために、インテリジェンス解析を提供しています。