主なポイント
- Emotetは、2022年7月に活動休止に入っていましたが、11月上旬にメールによる攻撃を再開しました。この攻撃グループは、Proofpointが観測している中で最も配信する攻撃メールの量が多い攻撃グループの1つで、1日あたり数十万通のメールを配信していることが再び確認されました。
- プルーフポイントは、使用されるルアー(おとりテーマ)、Emotetモジュール、ローダー、パッカーへの変更など、Emotetおよびそのペイロードへの複数の変更を観測しました。
- 今回の観測の中では、Emotetは感染後に別のマルウェアであるIcedIDをダウンロードすることが確認されました。
- この新しい活動は、Emotetが主要なマルウェア・ファミリーの配信ネットワークとして機能するよう、完全な機能を取り戻しつつあることを示唆しています。
- このボットネットには、以前の展開とは異なる重要な点がいくつかあるため、新しいオペレーターや管理者が関与している可能性があります。
概要
Emotetマルウェアを配布する攻撃グループであるTA542は、悪意のある電子メールを配信するための長い休暇から再び戻ってきました。この攻撃グループは、2022年7月13日に目撃されたのを最後に、2022年11月2日に活動を再開するまで、約4カ月間姿を現していませんでした。プルーフポイントは、配信方法、地域別の標的を追跡し、EmotetマルウェアおよびIcedIDローダーペイロードの分析を行いました。
全体として、今回の活動は7月の攻撃キャンペーンと類似しており、以前に観察された多くの戦術は変わりませんが、新たな変化や改善は以下のとおりです。
- Excelの添付ファイルを用いた新しいルアー(おとり文書)
- Emotetバイナリの変更
- EmotetがダウンロードしたIcedIDローダーは不必要な機能が落とされた軽い新しいバージョンのもの
- IcedID に加えて Bumblebee がダウンロードされたとの報告もあり
Emotetを配信するTA542のメール攻撃キャンペーンは、再び、そのメール送信量でトップグループに躍り出ました。プルーフポイントは、すでに毎日約十万通以上のメッセージをブロックしています。
プルーフポイントは、TA542は今後も進化を続け、メール送信量が増加し、より多くの地域が標的とされ、添付またはリンクされた脅威の新しい亜種や手法の出現が予想されると考えています。さらに、Emotet バイナリに変化が見られることから、今後もEmotetは変化に適応し続ける可能性があります。
攻撃キャンペーン
Emotet送信ボットが毎日配信しようとするメールの量は、約十万通以上にのぼります。この数字は、過去の平均値と同等です。したがって、Emotet ボットネットは、稼働停止の期間中にスパム送信能力を失ったとは思えません。なお、Proofpoint が観測した過去の最高値は一日あたり数百万通であり、最後に急増したのは 2022 年 4 月でした。以下のグラフは、過去5年間の電子メールの量を指数化したものです。グラフの右下にあるスパイクは、2022年11月のアクティビティを表しています。
図1:EmotetおよびTA542のシグネチャペイロードを含む電子メールメッセージ量のインデックス
(2017年4月19日~2022年11月10日まで)
配信
Proofpointは、電子メールにおけるスレッドハイジャックと言語のローカライズが施された大量のEmotetメールを、今回の復活後も確認しています。この攻撃グループは、一般的なルアーを使用し続けています。Emotetは、11月8日にIRS(米国 内国歳入庁)をテーマにしたルアーを短期間使用しましたが、これは米国に拠点を置く企業の四半期ごとの納税要件に対応するものであると思われます。他の時事問題や祝祭日をテーマにしたルアーはまだ観測されていませんが、近いうちに使われる可能性が高いと考えられます。
本ブログの稿執筆時点では、プルーフポイントは11月2日以降のほぼすべての平日、より具体的には以下の日程でキャンペーンを観測しています。2022年11月2日、11月3日、11月4日、11月7日、11月8日、11月9日、11月10日、および11月11日です。しかし、1週間以上毎日活動した後、Emotetの活動は停止しました。11月15日現在、まだ活動はいったん停止はしていますが、プルーフポイントはTA542の攻撃がすぐに再び戻ってくると予想しています。
対象地域
Emotetの攻撃グループは、以前、活動停止前に標的とされていた国々と同様の国々を引き続き標的にしています。プルーフポイントは、以下の国々を標的とし、大量の電子メールを送信していることを一貫して確認しています。米国、英国、日本、ドイツ、イタリア、フランス、スペイン、メキシコ、ブラジル(これは完全なリストではありません)。これらの例では、受信者の所在地だけでなく、メール本文、件名、ファイル名で現地の言語が適切に使用されていることも確認されました。
特筆すべき点として、プルーフポイントは、「τιμολόγιο.xls」、「έγραφο.xls 」、「τραπεζικούς λογαριασμούς.xls 」といった添付ファイル名でギリシャを標的にしていることを確認しました。ギリシャは、これまでTA542の一般的な攻撃の対象国ではありませんでした。
図2:米国をターゲットとした英語メールと、ドイツをターゲットとしたドイツ語メール
図3:イタリアをターゲットとしたイタリア語メールとメキシコをターゲットとしたスペイン語メール
図4:フランスを対象としたフランス語のメールとブラジルを対象としたポルトガル語のメール
図5:日本をターゲットにした日本語メール
添付ファイル
11月2日の復帰以降、TA542が送信したメールに含まれる悪質なコンテンツは、通常、Excelの添付ファイル、またはExcelファイルを内部に含むパスワードで保護されたZIPの添付ファイルです。ExcelファイルにはXL4マクロが含まれており、複数の(通常は4つの)組み込みURLからEmotetペイロードをダウンロードします。
これらは、2022年7月の活動停止期間前に攻撃者が使用していたマクロ付きExcelシートと同じタイプのものです。しかし、今回新しい点は、ターゲットにされた標的が、ファイルをMicrosoft Office Templateの場所にコピーし、代わりにそこから実行するようにとの指示が、Excelファイルに含まれるようになったことです。このフォルダはオペレーティングシステム(OS)にとって信頼できる場所として定義されているため、このフォルダにある文書を開く場合、警告やユーザーによる操作を必要とせずに、マクロが即座に実行することができます。しかし、ファイルをテンプレートの場所に移動する際、オペレーティングシステムはユーザーに確認を求め、そのような移動を行うには管理者権限が必要であることを確認します。
この技術がどの程度有効なのかは、まだ不明です。マクロを有効にするためにクリックする必要はなくなりましたが、ファイルの移動の際にダイアログが表示され、管理者権限が必要になります。
図6:テンプレートフォルダへのファイル移動時にユーザーに表示されるダイアログ
図7:11月2日以降に観測された典型的なExcel添付ファイルのスクリーンショット
図8:11月9日以降、加えられたExcelルアーの変化
攻撃者は若干の変更を加え、「Relaunch Required」の四角形には黄色の代わりに緑色の背景が使用されるようになりました。
マルウェア分析
XMRig
前述のとおり、TA542 は、2022年7月13日に悪意のある電子メールを送信していたのを最後に、4 か月近く姿を消しました。しかし、この活動休止期間中にも、TA542のメンバーの誰か、または他のグループがボットネットの改変に取り組んでいたことを示すいくつかの重要なイベントがありました。9月16日、最も一般的なMonero(XMR)仮想通貨マイナーであるXMRigが、モジュールをロードするためだけのコマンド 2を使用してEmotetによってインストールされました。このサンプルは、他のEmotetモジュールと同じ方法でパックされていました。したがって、実質的には他のEmotetモジュールと同じように動作しますが、XMRigをドロップして実行しました。一般的に、これは開発チームがモジュールを長期的に提供することをコミットする場合にのみ行われます (クレジットカード泥棒のように)。XMRigには、マイニングプールとウォレットアドレスを指定するコンフィギュレーションが含まれています。ボットネットからは、2つの特定のウォレットIDが使用されていました。これらは以下で確認することができます。
図 9: XMRig コンフィグ 1
図 10: XMRig コンフィグ 2
ハードウェアモジュール
2022年9月の時点では、ボットネットからのスパムメールの配信はまだありませんでしたが、24時間ごとにボットネットに対してモジュールが送信されていました。これらのモジュールは、標準的な情報スティーラーやメールスティーラーでした。そして、10月10日、モジュールID 2381がすべてのE4ボットに配信されました。この新しいモジュールは、最終的に実際のEmotetローダーに組み込まれることになる、いくつかの新機能を示していました。このモジュールは、ホストからハードウェア情報を収集し、それをコマンド&コントロール(C2)サーバーの専用リストに送信します。以下のフィールドが、指定された順序でパケットに含まれて送信されます。
- Hostname / ホスト名
- Username / ユーザー名
- Process name / プロセス名
- OS (Operating System) information / OS(オペレーティング システム)情報
- Session ID / セッション ID
- CPU identifier / CPUアイデンティファイアー
- Total size of memory / メモリーの合計サイズ
- Used memory / 使用しているメモリサイズ
このパケットの最後には、本物のボットと偽物のボットを選別するための値が設定されています。このモジュールのメイン関数内には、それぞれが4バイトの整数を返す64種類の関数に対応するテーブルがあります。モジュールがボットに送信される際、そのモジュールとボットに固有のIDであるジョブIDも一緒に送信されます。このジョブIDから0〜63の値を計算し、整数を返す関数を1つ選択します。その整数をパケットの最後に配置する必要があります。この値が抜けていたり、期待した結果と違っていたりすると、オペレーターはそのボットが偽物であることを掴み、そのボットはボットネットから登録削除(BAN)されることになります。現在までのところ、これはボットネットがリサーチャーの分析を阻止するために実装した最も困難な回避技術となっています。
図11:64個のコールバックを含む関数表
これらの値を抽出することをさらに難しくするために、整数値はハードコードされた値を返すだけでなく、動的に計算されるようになっています。以下のスクリーンショットでは、最終的に返される値は0x523EC8となります。
図12:定数値を返すための難読化のための演算
Emotet ローダーのアップデート
7月中旬以来、Emotetのローダーには更新がなかったため、Emotetが復活した際には、ボットネットに以下のようなかなりの違いがありました。
- 新規のコマンド
- 新しいコミュニケーションループの実装
- 新しいチェックインパケットフォーマット
- 新しいパッカーの使用
Emotetは、様々なコマンドに対応しています。2021年11月に復帰した当初は、1~7の値で示される全7種類のコマンドがありました。やがて2022年11月の復帰まで、コマンド4以降が削除されました。現在、Emotetがサポートしているコマンドは以下の5つです。
- 1 – Update bot / ボットの更新
- 2 - Load module / モジュールのロード
- 3 - Load executable / 実行ファイルのロード
- 4 - Load executable via regsvr32.exe / regsvr32.exeを用いた実行ファイルのロード (新規追加)
- 16343 – invoke rundll32.exe with a random named DLL and the export PluginInit / ランダムな名前のDLLでrundll32.exeを起動し、PluginInit /をエクスポート (新規追加)
このボットネットの最新バージョンでは、コマンド4と16343が追加されました。16343は、コマンドのパターンが他とは違う(1,2,3,4,5と続いていない)ことと、特定のエクスポートを持つことから、他とは違う特徴を持っています。このエクスポートは、IcedID感染によく使用されるものです。注目すべきは、Proofpointが、最近のキャンペーンでEmotetがIcedIDをセカンドステージのペイロードとして配信しているのを確認していることです。
Emotetのオリジナルのパケットフォーマットには、2つのバージョン番号と思われるものが含まれていました。1つはローダーに固有のもので、もう1つはプロトコルに固有のものです。これらの値は、パケット内で、最新のリターンで4000に設定された単一のバージョン番号に置き換えられています。
解凍されたローダー自体に加えられた最も大きな変更の1つは、コミュニケーションループの再実装です。旧バージョンでは、C2サーバへのリクエストの頻度を決定するためにスリープを使用していました。新しいバージョンでは、WindowsのAPIであるCreateTimerQueueExを利用しています。このAPIはコールバック関数を受け取り、最初の持続時間の後、そしてループの中で設定された期間の後に呼び出されます。これは、ボットの応答解析に変更が加えられたことも意味します。ボットが C2 から 12 バイトの値を受け取った場合、ボットは最後の 4 バイトを読み取り、それを整数に変換して 250 を掛け、それがスリープするミリ秒数となります。長いスリープの場合、Emotetのデフォルトは150秒で、短いスリープの場合は30秒か7.5秒になります。
最後に、ローダーで使用されるパッカーが更新されました。11月2日以前は、パックされたサンプルは、サンプル内のランダムな平文文字列とXOR復号化される暗号化されたリソースを含んでいました。この新しいパッカーは、暗号化されたペイロードを .data セクションのオフセット 20 付近に格納しています。ペイロードがサンプル内で見つかると、ランダムな平文文字列を見つけるのと同じプロセスで復号化され、XOR復号化され、解凍されたサンプルを得ることができます。
コマンド&コントロールの誤操作
これまでに、Emotetはボットネット(E4とE5)ごとに3つの主要なC2プールを持っていました。これらのプールは、ローダー、汎用モジュール、そしてスパムモジュールです。これらのプールは重複しておらず、一般的に、汎用プールにあるモジュールは、他のモジュールにあるものと完全に一致していました。つまり、プロセス・リスト・モジュールに6つのC2があれば、メール・スティーラー・モジュールにもまったく同じ6つのC2があることになります。この構成が、今回は以前のEmotetのバージョンとは違っています。現在では、いくつかのモジュールから IP が欠落しており、開発者が有効な C2 の一部として localhost を残しているケースがあります。以下のグラフは、モジュールとその ID を緑のノード、C2 を赤のノードとして示しています。モジュール 1444 では、C2 テーブル内に localhost を残しているようです。
図 13: C2 にリンクされた一般的な Emotet モジュール (緑)
スパムC2については、他のモジュールには存在しないC2が存在していますが、過去にはこのような違いは見られませんでした。一般的に、グループに属するすべてのモジュールには、C2リストにあるすべてのC2が含まれまていました。
図 14: C2 にリンクされたスパム Emotet モジュール (緑)
このような構成のミスは、ボットネットが新たな組織や人間の管理下に置かれた可能性や、インフラを構築するために新たなオペレータが採用された可能性があることを示唆しています。
感染後の活動
Emotetボットに配信された最初のペイロードの1つは、IcedID loaderの新しい亜種でした。この亜種は、正規のPDBパスを含んでいるため、真新しいものであるか、あるいはまだ開発中のものであると考えられます。
図15:「anubis」PDBパスを持つIcedIDペイロード
2022年2月にRaaS(Ransomware as a Service)の組織であるContiの内部にアクセスできる研究者がサイバー犯罪組織のデータの流出を開始したConti Leaksについて行われた分析から、AnubisがIcedIDとこのIcedIDローダーの新しい亜種の内部名称であることが判明しました。
IcedIDは、2つのステージを持つマルウェアです。第1段階はローダーで、第2段階(ボット)をダウンロードするためのリクエストを作成します。マルスパムで配信される標準的なIcedIDは、ローダーC2へのリクエストに含まれるCookieを通じてシステム情報を流出させます。そして、C2はその情報を使って、ローダーがIcedIDボットのペイロードを受け取るかどうかを決定します。生成されたシステム情報により、C2サーバーはサンドボックスを容易に特定することができ、これがほとんどのサンドボックスがIcedIDの第2ステージを検知できない理由となっています。
しかし、今回見つかった新しいローダーは、こうしたシステム情報の送信をおこないません。これは、ローダーがすでに感染したマシンに配信されているため、システムプロファイルをチェックする必要がないためだと、プルーフポイントのリサーチャーは考えています。ローダーは、適切に実行するために必要なAPIを解決することから始まり、次に暗号化された次のステージをダウンロードするために最大2つのHTTPリクエストを行います。
図16:Emotetからドロップされるローダーの主な機能(C2復号とレスポンス解析)
図17:この新しいローダーが、ポート443経由でHTTPSを経由し、ポート80でHTTPを経由してボットをダウンロードしようとしているコード
この場合、マルウェアはハードコードされたURIとドメインを持ち、それらを連結して完全なペイロードパスである bayernbadabum[.]com/botpack.dat が作成されます。標準のIcedIDローダーとは異なり、このローダーはまずHTTPS上のポート443で試行し、それが失敗すると標準のHTTP上のポート80で再度試行します。もしレスポンスが0x400バイト以上であれば、loaderは第二ステージのペイロードを解凍し、インジェクションしようとします。セカンドステージは以下のPythonコードで復号化することができます。
図18:ボット全体で一貫して使用されているIcedIDの復号化ルーチン
botpackが復号された状態では、malspam IcedID ローダーが取得するGZIPレスポンスと同様のフォーマットになっています。その形式は以下の通りです。
図19 IcedIDで使用されるbotpack形式の構造定義
復号化されたデータは、バージョンである可能性が高い”2”から始まる必要があります。次にブーリアン値ですが、これはローダーがエクスポート名で起動されるのか、それとも単に#1という序数で起動されるのかを決定するものです。さらに、平文のカスタムボットのローダーと、暗号化されたボットに関連する2つのサイズが続きます。ボット自体は暗号化されているので、botpack.datを復号したのと同じ方法で復号する必要があります。
図20:botpackの復号とDLLローダーと暗号化されたbotの解析
コード的には、ここにあるIcedIDボットは、IcedIDマルスパムキャンペーンに配信される標準ボットと全く同じですが、ボットの初期化方法に若干の違いがあります。標準のIcedIDがC2からコマンドを取得するとき、それはリストになっています。Emotetに感染したホストに配信されるIcedIDを見ると、これらのコマンドは異なっているのが分かります。
図 21: IcedID の標準コマンド
レスポンスに含まれる整数は、ボット内のコマンドに対応します。つまり、上記のレスポンスに対して、ボットは以下のコマンドを特定の順番で実行することになります。
- 54897577 – update C2 list / C2リストの更新
- 36609609 – start beaconing / ビーコンの開始
- 61593029 – get desktop info / デスクトップ情報の取得
- 46731293 – get running processes / 起動しているプロセス情報の取得
- 24258075 – get system information / システム情報の取得
- 45055027 – get browser cookies / ブラウザクッキーの取得
- 95350285 – get stored browser credentials / ブラウザに保存されている認証情報の取得
Emotetに感染したマシンに送られたボットは、上記のコマンドの他に、以下のコマンドを取得します。
- 58139018 – send internal IcedID log / 内部のIcedIDのログの送信
- 13707473 – read a file and send contents to C2 / ファイルの読み込みとC2へのコンテンツの送信
- 72842329 – search for file and send contents to C2 / ファイルの検索とC2へのコンテンツの送信
これは、Emotetマシン上で動作するIcedIDボットにより多くの優先順位が置かれていること、あるいは、マルスパムのIcedIDボットを管理するグループが、Emotetから供給されるボットを管理するグループとは異なることを示している可能性があります。
展望とまとめ
全体として、クライアントに加えられたこれらの修正は、マルウェアの開発者がリサーチャーを阻止し、ボットネット内に存在する偽またはキャプティブボット(リサーチャーの観察対象となっているボット)の数を減らそうとしていることを表しています。IcedIDに関連するコマンドの追加や、新しいIcedIDローダーの広範なドロップは、所有者の変更、あるいは少なくともIcedIDとEmotetの関係の始まりを意味するかもしれません。
EmotetがIcedIDをドロップしたことは、他のマルウェア・ファミリーの配信ネットワークとして機能することで、Emotetが再び完全な機能を発揮することを示すものです。Emotetは、The Trick(TrickBot)とQbotの配布が観測された2021年以来、完全な機能と一貫した後続ペイロードの配信(Cobalt Strikeではない)を示していません。TA542の再起とIcedIDの配信が重なったことは、懸念すべきことです。IcedIDは以前、Emotet感染の後にドロップされる後続ペイロードとして観測されています。多くの場合、これらの感染はランサムウェアにつながる可能性があります。
Indicator |
詳細 |
最初の観測日 |
05a3a84096bcdc2a5cf87d07ede96aff7fd5037679f9585fee9a227c0d9cbf51 |
IcedID SHA256 Observed on Emotet E4 |
2022年11月3日 |
Bayernbadabum[.]com |
IcedID domain containing the encrypted bot |
2022年11月3日 |
99580385a4fef0ebba70134a3d0cb143ebe0946df148d84f9e43334ec506e301 |
XMRig module SHA256 delivered to E4 |
2022年9月13日 |