※ 本ブログは、2022年1月14日にHP WOLF SECURITY BLOGにポストされたHow Attackers Use XLL Malware to Infect Systemsの日本語訳です。
ここ数ヶ月、悪質なMicrosoft Excelアドイン(XLL)ファイルを使用してシステムに感染するマルウェアキャンペーンが増加しています。この手法は、MITRE ATT&CKにおいてT1137.006として分類されています。このようなアドインは、高性能な関数を含みアプリケーション・プログラミング・インターフェース(API)を介してExcelワークシートから呼び出すことができるということがポイントです。マルチスレッドなどの機能をサポートしているため、VBA(Visual Basic for Applications)などの他のスクリプティングインターフェースと比較して、ユーザーはExcelの機能をより強力に拡張することができます。しかしながら、攻撃者がこれらの機能を利用して悪意ある目的を達成することも可能です。
攻撃者は通常、xlAutoOpen関数内にコードを配置するので、コードはアドインが起動すると直ちに実行されます。この手法が危険なのは、ユーザーがMicrosoft Officeの「保護ビュー」を無効にしてマクロコンテンツを有効にする必要があるVBAマクロとは異なり、マルウェアの実行に必要なのは1回のクリックだけであることです。しかしながら、XLLファイルは、多くのメールゲートウェイが既にブロックしているダイナミックリンクライブラリ(DLL)の形式に従ったPortable Executables(実行ファイル)です。このため、以下の緩和策を検討することをお勧めします。
XLL攻撃の増加を受けて、私たちはこのファイル形式を使用するツールやサービスの人気度を測るために、アンダーグラウンドのフォーラムを検索しました。その中には、XLLドロッパーを作成するためのビルダーを販売していると主張する、ある脅威アクターの広告が何度も登場しました。
ユーザーは、実行ファイルまたはそのリンクを指定し、おとりの文書を追加します。出力としてXLLファイルが生成され、これを攻撃に利用することができます。
私たちが分析したほとんどのXLLサンプルは、同じ構造を持っています。本質的にはXLLファイルは、xlAutoOpenと呼ばれるエクスポートされた関数を含むDLLです。悪意のあるXLLファイルで最もよく見られるのは、Excel-DNA と呼ばれる正規のソフトウェアプロジェクトを使用して生成されたものです。このような構造を持つXLLマルウェアのサンプルの内部を見ると、いくつかの大きなリソースが含まれていることがわかります。(図4)
これには、Excel-DNAプロジェクトのコンポーネントだけでなく、アドインも含まれており、この場合はマルウェアのドロッパーとなります。リソース名や、リソースセクションに格納されているXML定義ファイルを見れば、Excelアドインのコードを含むファイルを特定することができます。
このサンプルでは、悪意のあるコードを含むアドインは.NETで開発されており、MODDNAリソースに配置されています。コードを検査するには、まずこのリソースをディスクに保存し、Lempel-Ziv-Markov chain algorithm(LZMA)アルゴリズムを使用して解凍する必要があります。このアドインは.NETアプリケーションなので、逆コンパイルしてソースコードを取り出し、さらに分析することができます。図6は、分析したマルウェアのダウンローダーとして動作するXLLアドインのStart関数を示しています。
Excel-DNAプロジェクトで作成したXLLファイルは、プロジェクトが提供するスクリプトを使って自動的に解凍することもできます。このスクリプトは、XLLファイルのパスを引数として受け取り、リソースを抽出、解凍してフォルダに保存します。
また、最近では、アドインの生成にExcel-DNAを使用しない他のタイプのXLLマルウェアも見られました。これらのサンプルの1つであるダウンローダーは、4.5KBという小さなサイズであったため、特に興味深いものでした。他のXLLファイルと同様に、このファイルにはxlAutoOpen関数がエクスポートされています。アプリケーションの制御フローを偽装するために、多くの連続したjmp命令が実行されています。
その仕組みを理解するために、jmp命令を削除し、適切な命令のみを解析しました。その結果、ファイルの実行コードの直後に暗号化されたデータが配置されていることに気づきました。このデータは、まずデータの位置とサイズを決定し、XOR演算を用いて難読化を解除するループで復号化されます。8バイトごとに鍵が乗算され、2つの異なる定数に加えられます。
解読されたデータには、3つのDLL名、5つのAPI関数名、ペイロードのURL、ペイロードを格納するローカルファイルへのパスが含まれています。復号化されたDLL名により、マルウェアはまずプロセス環境ブロック(PEB)を介してInLoadOrderModuleListをトラバースすることでベースアドレスを正しく解決し、それを使用して呼び出したいAPI関数のアドレスを見つけます。
その後、マルウェアは解決されたAPI関数を使用して、Webサーバーからペイロードをダウンロードし、ローカルに保存した後に実行します。この例では、分析したマルウェアは以下のようなAPIコールを行っていました。
カスタム生成のXLLマルウェアは、以下のYARAルールを使って追跡することができます。
rule xll_custom_builder
{
meta:
description = "XLL Custom Builder"
author = "patrick.schlapfer@hp.com"
date = "2022-01-07"
strings:
$str1 = "xlAutoOpen"
$str2 = "test"
$op1 = { 4D 6B C9 00 }
$op2 = { 4D 31 0E }
$op3 = { 49 83 C6 08 }
$op4 = { 49 39 C6 }
condition:
uint16(0) == 0x5A4D and all of ($str*) and all of ($op*) and filesize < 10KB
}
Microsoft Excelには、Excel4マクロ、DDE(Dynamic Data Exchange)、VBAなど、コードを実行するための正規の方法が数多く用意されていますが、これらは攻撃者に広く悪用されています。ここ数カ月の間に、Dridex、Agent Tesla、Raccoon Stealer、Formbookなどのマルウェアファミリーが、システムへの初期感染時にXLLファイルを利用して配信されていることが確認されています。これらのファイルを作成するために、攻撃者は、図1のフォーラムで宣伝されているようなビルダーを使用している可能性が高いです。悪意のあるアドインの多くはExcel-DNAを用いて生成されることが分かっていますが、分析したXLLマルウェアの中には、機能を偽装するために暗号化を多用したカスタムメイドのものもありました。ここ数カ月の間にXLLを利用した攻撃が増加していることから、攻撃者はこの手法の探求に興味を持っており、今後数カ月の間に、他の実行方法ではなくXLLを利用する攻撃者が増える可能性があります。
EXCEL-DNA生成のXLLアドイン
380f15a57aee6d2e6f48ed36dd077be29aa3a3eb05bfb15a1a82b26cfedf6160
カスタム生成のXLLアドイン
c314c7feeb98de6391da83678e1639aade3fbe9c95846b8c2f2590ea3d34dd4f
その他のXLLハッシュについては、GitHubリポジトリをご覧ください。
Author : Patrick Schläpfer
監訳:日本HP