- この 9 ~ 12 ヵ月の間、コロナ禍などに便乗して、情報窃取型のウイルス「Astaroth」がブラジル国民を狙っています。今回の記事では、Astaroth について詳しく解説します。
- Astaroth が実装している難読化、分析回避、検出回避の技法は複雑に入り組んでいて、検出と分析を阻んでいます。
- YouTube チャンネルの説明欄を巧妙に利用し、符号化と暗号化を施したコマンドアンドコントロール通信(C2)を実装しています。
最新情報
- Astaroth が実装している一連の分析回避と検出回避の技法は、最近目にした中で最も抜かりのないものです。
- 検出回避が効果的な形で構築され、ブラジル国内のシステムのみを標的にしているようです。サンドボックスや研究者のシステムを回避する機能も備えています。
- 一般的なサービスを一般的なポートで利用し、YouTube のチャンネルを今までにない手口で C2 に活用して、検出の回避を図っているのが特徴です。
動作の仕組み
- ユーザは、巧妙な誘い込みのメールを受信します。メールはすべてポルトガル語であり、ブラジル国内のユーザを標的としています。
- ユーザがメール内のリンクをクリックすると、攻撃者の所有するサーバに誘導されます。
- Google のインフラストラクチャから、最初のペイロード(LNK ファイルを収めた ZIP ファイル)がダウンロードされます。
- LoLBin(ExtExport または Bitsadmin)を利用して感染を拡げる前に、多層構造の難読化が施されます。
- 分析と検出を回避するための広範なチェックが実行された後、Astaroth のペイロードが配信されます。
- YouTube チャンネルの説明欄から、符号化と暗号化の施された C2 ドメインが取得されます。
Astaroth の正体
- Astaroth は、高度な水準に達したクライムウェアの一例です。
- ブラジル以外にも感染を拡げる可能性が高いため、分析回避や検出回避の水準がこれほど高いことには注意が必要です。
- 回避策が組み込まれている Astaroth のような巧妙な情報窃取型マルウェアに備えて、高度な攻撃への防御態勢を整えることが不可欠です。
- Astaroth は、COVID-19 をキャンペーンに利用する一例です。多くの攻撃者が、COVID-19 を利用することで成果を挙げています。
エグゼクティブサマリー
多種多様なマルウェアファミリが、企業と個人に絶え間なく押し寄せているのが脅威の現状です。大半のマルウェアファミリに共通しているのは、金銭の獲得を目的としていることです。つまり、さまざまな形で収益化できるエンドシステム内のデータを狙っているのです。利益を最大限に高めるためであれば、どのような労も惜しまずに検出回避を試みるマルウェア作成者や配信者も存在しています。特に、マルウェア対策を講じられかねない、自動化された分析環境やマルウェアアナリストを迂回しようとします。今回取り上げる Astaroth キャンペーンは、この種の検出回避の技法が実践された典型例となっています。
Astaroth キャンペーンの攻撃者は検出回避への関心が非常に強いため、1 つや 2 つではなく、十数種もの分析回避チェックを導入しています。その中には、ごく一般的なマルウェアではほとんど見受けられないチェックもあります。近年、金銭を狙う攻撃者の一部がきわめて高度な手法を実践していますが、このキャンペーンはその水準の高さを明確に示すものです。Astaroth キャンペーンの標的はブラジルのみであり、COVID-19 や納税者番号など、ブラジル国民に狙いを定めた誘い込みが仕込まれています。ドロッパーでは、悪意のある最終的なペイロードの配信前であっても、高度な技法や、何層もの難読化と検出回避策が利用されます。また、ペイロードの配信後には一連のチェックが実行されます。その目的は、研究者のシステムや、サンドボックスなどの何らかのセキュリティテクノロジーではなく、ブラジル国内のシステムでのみペイロードが実行されるよう万全を期すことです。さらに、YouTube を介したコマンドアンドコントロールの更新における今までにない技法をはじめ、おびただしい数の新旧の技法や手口が駆使されています。
今回のブログでは、Astaroth マルウェアファミリを綿密に分析し、この 9 ~ 12 ヵ月の間に Cisco Talos が確認した一連のキャンペーンを詳しく取り上げます。最初のスパムメッセージに含まれている攻撃の難読化解除から、ドロッパーのメカニズム、Astaroth に実装されている検出回避のあらゆる技法まで、順を追って解説していきます。目標は、研究者の方々を対象として、Astaroth を各自の環境で分析するための手立てと知識をお届けすることです。Astaroth は全容をつかみにくく、当面の間、ユーザと防御担当者の双方にとって頭痛の種であり続けるでしょう。標的が南米とブラジルからそれ以外へと拡大した場合、特に悩ましい問題になります。
技術詳細
Astaroth の特徴は、多くの段階に分けてマルウェアを取得し、実行するという感染のプロセスです。感染のプロセスは、概ね以下のようになります。プロセスの個々のステップについては、以降のセクションで詳しく説明します。
デリバリ段階
通例、Astaroth キャンペーンの出発点は、悪意のあるメールです。2019 年半ば以降、Cisco Talos は分析の過程で、Astaroth を拡散するキャンペーンに関連するメールを何千通も確認してきました。その圧倒的多数はポルトガル語で記述されていて、特にブラジルを標的としているようです。この 6 ~ 8 ヵ月は、攻撃者はさまざまなキャンペーンを展開し、複数の誘い込みを利用しています。よく見かけるのは、次のようなものです。
このキャンペーンは、請求明細書が支払い期限切れになっていると称し、ユーザにリンクをクリックさせようとしていました。攻撃者の典型的な手口です。メールにあるハイパーリンクは、ユーザに表示されるものとは別の URL をポイントしています。ユーザは、ブラジルのレンタカー Web サイトであると思い込んでリンクをクリックします。しかし、実際にクリックしているのは、以下のファイルへのリンクです。
hxxp://wer371ioy8[.]winningeleven3[.]re/CSVS00A1V53I0QH9KUH87UNC03A1S/Arquivo.2809.PDF
初期のキャンペーンは、攻撃者の所有するドメインを、サブドメイン(上記の wer371ioy8)と併用していた点が特徴となっています。大量の一意サブドメインと URL から見てとれるのは、URL がランダムに生成され、サーバはその URL に対応するよう構築されていた可能性が高いことです。
感染の追跡に着手したところ、マルウェアの実際の取得元が判明しました。リンクをクリックしたユーザは、ダウンロード元となる Google ドライブにリダイレクトされます。この場所に、以降のセクションで分析する実際の不正 ZIP ファイルがあります。攻撃者による Web リダイレクションの手口は数多く存在していて、よく見受けられるのは 302 Cushioning といった技法です。しかし、これらの攻撃者が使用していたのは、かつて目にすることが多かった iframe の手法でした。
注目すべき点として、この iframe では相対的な表示位置設定が採用されていて、画面の上部および左側に iframe が生成されます。これは、エクスプロイトキットでよく見受けられる形式です。Google のインフラストラクチャに誘導する今回の初期リダイレクションでは、感染の経路に SSL も導入され、中間のリクエストが暗号化されています。このトラフィックは、以下に示すとおり、Google でホストされている ZIP ファイルへのクリアテキストリクエストになります。
Astaroth キャンペーンでは、COVID-19 を含め、他にもいくつかの興味深い誘い込みが利用されています。下記のメールで攻撃者が送信しているのは、ブラジル保健省を装ったメッセージです。同省は、COVID-19 の爆発的感染への対抗策に関して、ブラジル国民に最新情報を提供しています。
この告知は、COVID-19 患者の治療に不可欠な人工呼吸器の国内流通に関するもので、PDF としてリンク先からダウンロードできる一連の推奨事項が示されています。しかし、そのリンクは攻撃者が所有するサーバをポイントしていて、前述のプロセスが再開されます。これは、攻撃者が COVID-19 を利用してエンドシステムにマルウェアを仕込む手口の一例です。COVID-19 は今後も利用されると思われます。
Cisco Talos は最近、Astaroth の拡散を続ける攻撃者の手口が進化していることを確認しました。請求明細書と請求書に関連した誘い込みは今なお利用されていますが、書式が変更され、一部のインフラストラクチャが撤去されています。
このメールは、債権回収の関連文書を根拠として、ブラジルのユーザをリンクのクリックに誘い込もうとするものです。ただし、受信者の納税者番号(CPF)の状態について脅迫する別の誘い込みも追加されています。CPF は、米国の社会保障番号(SSN)と似たブラジルの重要書類です。この書類はすべての国民および納税する滞在者に提供され、自動車運転免許の取得や、銀行口座の開設、携帯電話プランの契約に至るまで、あらゆる場面で利用されます。CPF が効力停止となった場合、生活に重大な影響が及ぶおそれがあり、出費が大きいため、効果的な誘い込みになり得ます。
基盤の URL は、Google によってホストされている ZIP ファイルを直接ポイントするものとなっています。したがって、マルウェアの作成者は、インフラストラクチャの一部の層を撤去したようです。URL の例を以下に示します。
hxxp://48.173.95[.]34.bc[.]googleusercontent[.]com/assets/vendor/aos/download.php
これらは前掲の URL と似ていますが、攻撃者の所有するサーバとのやりとりが不要になっています。現在はどちらの種類のキャンペーンも並行して実施されていて、両方の手口が引き続き利用されています。最初のドロッパーがシステムに到達すると、LNK ファイルによって複雑な感染プロセスが開始されます。
感染の第 1 段階
前述の ZIP アーカイブには、感染プロセスの第 1 段階を実行するための不正な Microsoft Windows ショートカット(LNK)ファイルが収められています。このファイルは、悪意のある追加コンテンツの初期ダウンロードを実行して、感染プロセスを開始するために使用されます。
文字列に基づく基本的な分析を回避することを狙い、難読化が施されています。LNK ファイルの一例を以下に示します。
LNK が実行されると、埋め込まれているバッチコマンドによって JScript ファイルが作成され、「C:\Users\Public\Documents\」に保存された後、実行されます。
この JScript は、感染プロセスの次の段階を取得することを目的として、攻撃者の管理する Web サーバへの HTTP GET リクエストを生成します。
攻撃者の管理する Web サーバから受信される応答データには、難読化が施された追加段階の JScript が含まれています。この JScript は感染システム上のプロセスによって直接実行され、ファイルシステムには書き込まれません。攻撃者の管理する配信サーバの第 1 層から命令をさらに取得するために使用される URL の構造は、キャンペーンによって異なります。ただし、以下の例では一貫しています。
以下に、ネットワークトラフィックを捕捉して得られたスクリプトの一例を示します。
取得された JScript が実行されると、感染プロセスの次の段階が開始されます。
感染の第 2 段階
感染プロセスの初期段階の一環として仕込まれた JScript は、各種の難読化を駆使して、分析を困難にしていることが特徴です。スクリプト全体で使用されている CharCode 置換では、ASCII 文字が 10 進表現で置き換えられています。一例として、難読化された JScript の抜粋を以下に示します。
このスクリプトは、ASCII 文字の 10 進表現を効果的に取得し、変換した後、その結果を連結して、Windows コマンドプロセッサでの実行に必要なコマンドライン構文が含まれた文字列を生成します。
これらの数値を取得し、このようなテキストコンバータで相互参照すると、人間が判読可能な形式のデータを復元できます。
CharCode の変換に加えて、変数宣言も使用され、処理内容の読み取りと解釈がさらに困難となるよう、コマンドライン構文が分割されています。
前の例の変数宣言を一歩進める形で、10 進表現を変換して ASCII 文字を復元すると、宣言されている変数の内容を取得して置換し、呼び出されるコマンドライン構文を再構築できます。
全体の難読化を解除した JScript から現れるのは、第 3 段階のマルウェアペイロードを取得して実行するための堅牢なダウンローダです。このダウンローダは、以下のプロセスの実行を担っています。
- 最初に、第 3 段階のマルウェアペイロードがシステムにすでに存在しているかどうかが確認されます。
- 存在していない場合は、第 3 段階のペイロードの保存先となるランダム生成のディレクトリ構造が作成されます。
- 次に、配信サーバのドメインと URL 構造がランダムに選択され、Windows ユーティリティ Bitsadmin を使用して第 3 段階のマルウェアペイロードの取得が試みられます。
- この処理が成功した場合、取得されたダイナミック リンク ライブラリ(DLL)が保存され、ExtExport LoLbin を使用して、DLL の読み込みと第 3 段階のマルウェアペイロードの実行が試みられます。
第 2 段階のダウンローダの分析
Astaroth キャンペーンで使用されるダウンローダは、興味深い機能を備えています。これらの機能は、多くの組織が採用している URL ブロックやドメインベースのブロックに対して、配信インフラストラクチャの回復力を強める目的で実装されている可能性があります。
注:変数名、関数名、パラメータ名については、可読性と分析プロセスの効率を高めるため、難読化されたダウンローダを分析する過程で、ランダムに生成された当初の値から変更しています。
最初に、第 3 段階のマルウェアペイロードがシステムに配信されているかどうかを判定する手段として、以下のディレクトリ位置にファイルが存在するかどうかがチェックされます。
C:\Users\Public\h
ファイルが存在する場合は、その内容が読み取られます。このファイルには、第 3 段階のペイロードのディレクトリ位置が記述されているためです。
第 3 段階のペイロードの位置を記述したファイルが感染システムに存在しない場合は、第 3 段階のペイロードの保存先となるディレクトリ構造が作成されて、攻撃者の管理する配信サーバからのペイロード取得後に使用されます。マルウェアが使用するディレクトリ構造は、%APPDATA% のサブディレクトリに保存されます。
上記のコードには多少の変更を加えていますが(可読性を上げるために [A-Z] を追加)、65 ~ 90 の範囲でランダムに選択された CharCode 値を使用して、JScript に含まれているランダム化関数が呼び出されます。この値は、以後の変換で ASCII に戻されます。この CharCode 範囲は、「A」から「Z」までのすべての ASCII 文字の CharCode であることを表しています。
次に、当初にクエリされたファイルに値が書き込まれます。おそらくは、以後の実行の試行中、マルウェアで位置を特定できるようにすることが目的です。その後、残りの読み込みプロセスを円滑に進めるために、このディレクトリ構造が作成されます。
次に、当該のディレクトリ位置に「sqlite3.dll」という名前の第 3 段階のマルウェアペイロードが存在しているかどうかがチェックされます。存在している場合は、ファイルのサイズがチェックされます。10 バイト未満であればファイルが削除され、読み込みのプロセスが続行されます。
DLL の位置が適切に特定され、サイズが 10 バイトを超えている場合は、読み込みが試みられます。最初に位置の特定と呼び出しが試みられるのは、ExtExport.exe LoLbin です。ExtExport.exe バイナリの位置を特定できない場合は、regsvr32 にフェールバックされます。
第 3 段階の DLL の位置を特定できない場合は、DLL を取得して実行するため、一連の配信サーバへの HTTP 通信が開始されます。このプロセスを円滑に進めるため、Web リクエストで以後の DLL の取得に使用される URL パスが最初に生成されます。これは、URL を複数の要素に分割し、個々の要素を表す値をランダム化関数で生成した後、各要素を連結して URL パターン全体を構築するという形で実行されます。
使用される配信サーバドメインは、さらに別の関数を呼び出して生成されます。この関数は、0 ~ 19 の値をランダムに選択した後、配信サーバドメインのリストと照合して比較します。一致している値は、前掲のスクリーンショットで使用されている変数に格納されます。
これらの情報は、すべて生成されると組み立てられ、関数に渡されます。関数は、Windows ユーティリティの Bitsadmin を使用してペイロードを取得し、マルウェアの作業ディレクトリに保存します。
ペイロードが正常に取得されると、前述のプロセスを使用して ExtExport.exe の位置が特定されます。位置を特定できない場合は、regsvr32 を使用して DLL が読み込まれ、マルウェアペイロード自体の実行が開始されます。
4,000 秒(66 分)のタイムアウトカウンタも併せて設定され、このタイムアウトを過ぎると処理が終了します。
第 3 段階の一環として直接実行される追加のバイナリコンテンツも、他の 2 つの配信サーバから取得されます。
結果として生成される HTTP GET リクエストは、下のスクリーンショットで確認できます。
これらのキャンペーンで 2 つのモジュールとともに配信されるペイロードが、メインの Astaroth DLL です。Astaroth はモジュール型のマルウェアファミリであり、感染システムで実行されているさまざまなアプリケーションから、機密情報を窃取するために使用されます。
Astaroth の分析
第 2 段階で取得された 3 つのペイロードは、結合して Astaroth の DLL を再構築するためのバイナリコンポーネントです。結合後に DLL が実行され、感染プロセスの最終段階が開始されます。DLL が備えている機能を詳しく分析したところ、DLL のオペレーションに関して、いくつかの興味深い特性が判明しました。これらの特性について、以後のセクションで説明します。
分析回避とサンドボックス対策のメカニズム
Astaroth には、感染プロセスを続行するかどうかの判断を目的として、分析回避およびサンドボックス対策のための一連の堅牢なメカニズムが導入されています。下の図は、それらのチェックの概略です。個々のチェックについては、このセクションでさらに詳しく解説します。
これらのキャンペーンに関連している Astaroth サンプルの特徴は、実行場所が仮想環境または分析環境であるかどうかを識別するために、一連の広範な環境チェックが実行されることです。いずれかのチェックで不合格となった場合は、以下のコマンドライン構文によってシステムが強制的に再起動されます。
"cmd.exe /c shutdown -r -t 3 -f"
以下に、これらの分析回避メカニズムに関連するコード実行フローの概略図を示します。
Astaroth は、システムにインストールされている可能性のある仮想マシンを対象として、ゲストの追加を CreateToolhelp32Snapshot を利用して識別します。具体的には、VirtualBox と VMware に関連している仮想マシンがないかどうかを確認します。
また、仮想マシンでよく利用されるハードウェアデバイスが存在しているかどうかも確認します。
さらに、Windows レジストリ(HKLM\HARDWARE\DESCRIPTIONS\System\SystemBios\Date)に格納されている SystemBiosDate の値もチェックして、値が「06/23/99」と一致するかどうかを特定します。これは、VirtualBox の仮想マシンで使用されているデフォルト値です。
次に、感染システム上で実行されているプログラムを EnumChildWindows でチェックして、実行されている可能性のある一般的な分析ツール、デバッグツール、サンドボックス化ツールを識別します。
識別の対象は、マルウェア分析で一般的に利用されている以下のアプリケーションです。
- OllyDbg
- ImmunityDebugger
- WinDbg
- IDA Pro
- Process Explorer
- Process Monitor
- RegMon
- FileMon
- TCPView
- Autoruns
- Wireshark
- Dumpcap
- Process Hacker
- SysAnalyzer
- HookExplorer
- SysInspector
- ImportREC
- PETools
- LordPE
- Joebox
- Sandbox
- x32dbg
また、SbieDll.dll の GetModuleHandleA を使用して、システムに Sandboxie が存在しているかどうかもチェックします。
Sandboxie のチェックと同様に、Microsoft 社から無償で提供されている Debugging Tools for Windows に含まれる「dbghelp.dll」の有無もチェックします。
次に、Windows レジストリの以下の位置に格納されている値をチェックします。
HKLM\Software\Microsoft\Windows\CurrentVersion\ProductId
検索するのは、具体的には以下の値です。
- 76487-644-3177037-23510
- 55274-640-2673064-23950
これらの値が存在している場合は、ホスト環境がそれぞれ CWSandbox と JoeBox であることを示します。
次に、Astaroth は自身の実行アカウントに関連付けられているユーザ名を列挙します。これは、ユーザ名が「CURRENTUSER」と一致するかどうかを確認するためです。
次に、仮想デバイス「\\\.\\SICE」と「\\\.\\NTICE」を起動することを試みます。これらは、DOS および Windows 向けのカーネルモードデバッガである SoftICE に関連するものです。
さらに、サンプルがデバッガ内で実行されているのかどうかを IsDebuggerPresent の呼び出しを利用して特定します。標準的な手法で関数をインポートするのではなく、動的に読み込むことで、サンプルの静的分析が行われている間、このような処理が発生することを隠蔽するのです。
その後、デバッガの有無をチェックする追加的な手段として、プロセス環境ブロック(PEB)も手動でチェックします。
続いて、自身が WINE 環境で実行されているかの特定を試みます。その手法は、ntdll.dll を読み込み、関数「wine_get_version」と「wine_net_to_unix_file_name」の有無をチェックするというものです。
また、GetModuleHandleA の呼び出しを利用して、サンドボックス環境で一般的に使用されているその他いくつかの DLL の有無をチェックします。以下の DLL の位置特定が試みられます。
- dll
- dll
- dll
- dll
- dll
- dll
これらの DLL は、VMware、SunBelt Sandbox、VirtualPC、WPE Pro を含むさまざまなサンドボックス プラットフォームで採用されています。
最後に、QEMU Guest Agent に関係する「qemu-ga.exe」の有無がチェックされ、QEMU を使用したエミュレート環境で実行されているのかどうかの特定が試みられます。
前述のとおり、以上のチェックのいずれかで不合格となった場合はマルウェアの実行が終了し、システムが強制的に再起動されます。これが、分析を回避し、マルウェアサンプルの分析で一般的に使用される各種のプラットフォームを迂回するために Astaroth が実行している処理の内容です。
さらに、VerLanguageNameA に続いて GetSystemDefaultLangID を利用し、感染システムの言語セットを特定します。言語名の値を部分文字列「portu」と比較すると、システムがポルトガル語を使用するように設定されているのかどうかがわかります。言語セットがポルトガル語のものでない場合は、ExitProcess を介してマルウェアの実行が終了します。
次に、「pazuzupan0155」というタイトルのウィンドウが開かれているかどうかをチェックするループを開始します。このウィンドウが存在していない場合は、WSAStartup を呼び出します。続いて、以下の例と似た URL パターンを使用し、攻撃者の管理するサーバから悪意のある追加ペイロードをダウンロードする処理に進みます。
hxxp[:]//15uaer[.]coragem[.]cf/?17475461717677867
ここで取得されるペイロードは、DLL ではなく PE EXE です。次に、この EXE が「プロセスの空洞化」と呼ばれる手口で実行されます。今回の場合、空洞化の標的となるプロセスは「userinit.exe」であり、ここで説明しているものと同一のプロセスが使用されます。
「pazuzupan0155」という名前のウィンドウが実際に開かれていた場合、DLL はスリープ関数を呼び出し、その後ループが繰り返されます。このようなアプローチが採用されているのは、感染システム上で Astaroth を永続的に実行する手段を得るためでしょう。実行可能ファイルが削除されている場合は、ループの次回実行時に実行可能ファイルが置き換えられます。これは、マルウェアのバージョンが更新された際、配信サーバから最新のバージョンを確実に取得するための手法としても機能しています。
モジュールの分析
Astaroth のバージョンを追跡するには、通例、サンプル全体で使用されている関数名に含まれた文字列値を確認します。今回の最新のキャンペーンに関連しているバージョンは、「gomorytrol」と呼ばれています。Astaroth のこれまでのバージョンと同じく、悪魔信仰が名前の由来であり、今回の場合は悪魔「Gomory」です。
これらの関数は、以前に発表した分析の際と同じく、さまざまなタイマ、フォーム、スレッドで使用されています。Astaroth の「gomorytrol」バージョンの内部名は、バージョン 157 です。以下に、最近のその他のバージョンを示します。
「masihaddajjal」(バージョン 152) 「forneus」(バージョン 153) 「mammonsys」(バージョン 154) 「pazuzupan」(バージョン 155) 「lechiesxkw」(バージョン 156) 「gomorytrol」(バージョン 157)
重要な点として、バージョン番号は Astaroth の分析中も幾度となく変化していて、この脅威が急速に進化していることが示唆されます。
Astaroth のメインペイロードが実行されると、以下の位置に代替データストリーム(ADS)を使用してファイルが保存されているかどうかがチェックされます。
sqlite3.dll:MllkguwbwyshtY6767TGuddhyfyoomrifk
ファイルが見つからない場合、ADS を介して追加ペイロードをダウンロードし、保存します。
追加ペイロードは復号され、メモリに読み込まれて実行されます。このペイロードは、一連の分析回避チェックを実行します。チェックの内容は、感染プロセスのこれ以前の段階で説明したものと同一です。また、各種の分析環境およびサンドボックス環境と関連のある文字列のリストを作成した後、GetModuleFilenameA および GetComputerNameA を使用してシステムのホスト名とプロセスファイルパスをチェックし、文字列値が一致する場合は実行を終了します。
さらに、システムの言語設定を追加のチェックで特定します。感染のこれまでの段階で見受けられた手口を用いるほかに、英語の言語セットの有無もチェックして、英語の言語セットが存在している場合は自身の実行を終了します。
最新の Astaroth は、以下の新しい作業ディレクトリを使用しています。
"%USERPROFILE%\Public\Libraries\jakator"
このマルウェアによって実行される情報窃取の中核的な機能の多くは、以前にこちらで公開した分析の時点から変化していません。最近のキャンペーンに関係しているサンプルからわかるのは、Banco de Brasil の顧客について、銀行取引情報を取得することに主眼を置いている点です。
コマンドアンドコントロール(C2)
前回の分析の際と同じく、Astaroth は、第 1 次と第 2 次の C2 インフラストラクチャを備えた冗長な C2 メカニズムを採用しています。Astaroth が C2 サーバと通信する第 1 次の手段は、YouTube チャンネルの説明欄を利用して C2 ドメインを取得するというものです。攻撃者は、一連の YouTube チャンネルを開設したうえで、チャンネルの説明欄を利用して C2 ドメインのリストを構築し、伝達しています。これらのドメインは、ボットネットに属するノードで追加の命令と更新を取得するために使用されます。
以下に、Astaroth に関連している YouTube チャンネルの例をいくつか示します。
hxxps://www.youtube[.]com/channel/UC48obBfnUnI8i9bH2BmDGBg/about hxxps://www.youtube[.]com/channel/UC1XqzXRrROkMrIUbSxhATcQ/about hxxps://www.youtube[.]com/channel/UC2N4Ej53G7pKYJlA7lOj0SQ/about hxxps://www.youtube[.]com/channel/UC3YzBxaeuGNBFQRS4bfV8XA/about hxxps://www.youtube[.]com/channel/UCfgh5rFgl267MHRxkFttVLg/about hxxps://www.youtube[.]com/channel/UC96ziVgeQrKVPp1hofl1dsA/about hxxps://www.youtube[.]com/channel/UCbbq2Jm2Swj95AVFoHPMdRg/about hxxps://www.youtube[.]com/channel/UC76P-6J1BP39fjNGkudw1Jw/about hxxps://www.youtube[.]com/channel/UC-XIp1YC9eZPnNO9VBJTCLw/about hxxps://www.youtube[.]com/channel/UCA87kfgVEB8yshwYxUdSYLA/about hxxps://www.youtube[.]com/channel/UCbnDU85fizL0EWdZiwTYonA/about hxxps://www.youtube[.]com/channel/UCc2nVj0SBkr99-lFO1LCV-A/about
Astaroth の以前のバージョンと同様に、デリミタ「|||」で囲まれている情報は、暗号化され Base64 エンコードされた C2 ドメインのリストです。この例を以下に示します。
チャンネルの説明欄にあるデータについては、分析の進行中も定期的に変更されていることを確認しました。つまり、企業環境で一般的に許可されているプラットフォームを利用して、C2 インフラストラクチャを必要に応じて循環させるという興味深い手法を実現しているのです。
YouTube でデータを伝達できない場合に備えた、フェールバック C2 のメカニズムも採用されています。分析したサンプルでは、以下の URL をフェールバック C2 チャンネルとして使用するように設定されていました。
hxxps://sombrio[.]xxapocalipsexx[.]space/amem//dir1/?4481829444804=184448294448&1=<Base64 encoded C2 message>
感染システムからの初期ビーコンには、環境とユーザに関するさまざまな情報が保持されています。形式は以下のとおりです。
Astaroth で使用されている C2 ドメインを分析してわかるのは、DNS 解決の処理が、ほぼブラジル国内のみで実行されているように見えることです。この点は、マルウェア拡散キャンペーン、Astaroth によって実行される包括的なチェック、Astaroth の標的となる顧客の金融機関でいずれも一致しています。
総論としては、ドメイン生成アルゴリズム(DGA)の実装および感染システムへの C2 更新の伝達に関して、Astaroth は一般的なものとは異なるアプローチを採用しています。複数の冗長な C2 メカニズムを導入することによって、インフラストラクチャが遮断された場合の回復力を大幅に高めているのです。
まとめ
Astaroth の作成者は、マルウェア対策の回避を成功させるため、あらゆる策を弄しています。分析回避策やマルウェア対策のチェックを複雑に組み込むことで、検出や分析を阻止します。出発点となっているのは、効果的かつ印象的な誘い込みです。悪質な意図が決して表に現れることのないよう、何層もの難読化が施されます。最終段階では、研究者やサンドボックステクノロジーによって利用されているツールや技法が存在していないかどうかを調べる、一連の厳密なチェックを実施していきます。つまり、分析が困難になるようにはじめから計画的に作成されているのです。高度な処理の最後の層として、YouTube などの広く普及している無害のサービスを利用し、暗号化と Base64 エンコードを施したストリームの中に、自身のコマンド アンド コントロール インフラストラクチャを隠蔽することまで行っています。
さらに、このマルウェアファミリは驚くべきペースで更新と修正が進められていて、今なお活発に改良を続けていることが窺われます。インフラストラクチャの移動と循環も迅速です。ほぼ毎週の入れ替えによって、俊敏性を維持し、防御側の機先を制しています。Astaroth が攻撃対象国の網を拡げると、この複雑な脅威に備えることを余儀なくされる防御担当者は、ますます増加するでしょう。
金銭を目的とする脅威は、高度化を続けています。膨大な額の金銭や収益を得るための新たな手口が日々生み出されています。Astaroth はその一例にすぎません。検出や分析の回避策は、マルウェアファミリが今後最も重視するものなのです。その影響を最小限に抑えるとともに、感染した場合は迅速に検出して修復するためにも、組織は複層構造のテクノロジーやコントロールを導入することが不可欠です。エンドポイント、ドメイン、Web、ネットワークなどを対象とするセキュリティテクノロジーが必要となります。このようなテクノロジーを採用することで、Astaroth などの捕捉が困難で複雑なマルウェアを検出できる可能性が高まります。
カバレッジ
お客様がこの脅威を検出してブロックするための方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者がマルウェアを実行できないようにするための最適な方法です。AMP 内に存在するエクスプロイト防止機能は、このような未知の攻撃からお客様を自動的に保護するように設計されています。
Cisco クラウド Web セキュリティ(CWS)または Web セキュリティアプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述の攻撃で使用されるマルウェアを検出します。
Cisco AMP ユーザは、Orbital Advanced Search を使用して複雑な osquery を実行し、エンドポイントが MedusaLocker などの脅威に感染しているかどうかを確認できます。類似の脅威に対応する osquery の具体例については、こちらをクリックしてください。
E メールセキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。
次世代ファイアウォール(NGFW)、次世代侵入防御システム(NGIPS)、Cisco ISR、Meraki MX などのネットワーク セキュリティ アプライアンス。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすると、最新状態を維持できます。この脅威を検出する目的でリリースされた SID は、53861 です。
侵入の痕跡(IOC)
以下の侵入の痕跡は、今回のブログで説明した Astaroth のキャンペーンに関連していることが確認されています。
ドメイン
使用されているドメインのリストについては、こちらをご覧ください。サブドメインはランダムに生成されているため、コアドメインのみを示しています。
LNK のハッシュ(SHA256)
これらのキャンペーンで使用されている LNK ファイルのハッシュのリストについては、こちらをご覧ください。
JScript のハッシュ(SHA256)
これらのキャンペーンで使用されている JScript ファイルのハッシュのリストについては、こちらをご覧ください。
バイナリのハッシュ(SHA256)
これらのキャンペーンに関連する悪意のあるペイロードのハッシュのリストについては、こちらをご覧ください。
本稿は 2020年5月11日に Talos Group のブログに投稿された「Threat Spotlight: Astaroth — Maze of obfuscation and evasion reveals dark stealer」の抄訳です。