本ブログ記事は、2022年1月6日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。
エグゼクティブサマリー
Emotetは、昨年初めに世界中の法執行機関がその活動を停止させる取り組みを行った後の 2021 年 11 月 15 日に、わずかな改造を加えて復帰しました。この脅威グループが悪意のある Microsoft® Word 文書やリンクを使ってスパムを送るという、ありふれた攻撃を始めるまでに時間はかかりませんでした。
この悪名高いマルウェアは、その再登場以来、Emotet のボットネット基盤を再構築するための目に見える活動として、インフォスティーラ(情報窃取型マルウェア)であるTrickbot マルウェアファミリーで投下されていることが確認されています。この 2 つのマルウェアファミリーの結託が見られたのは今回が初めてではありません。以前、Emotetが感染したマシンに Trickbot をインストールしていたことが確認されています。今回、Emotet は、約 1 年前に Emotet のグローバルボットネットネットワークを解体した警察行動で失われたものを取り戻すために、既存のビジネスパートナーに助けを求めたようです。
技術的解析
感染経路
Emotet グループは以前から、メールによる組織的攻撃に悪意のある Office 文書と URL を組み合わせて使用することで感染させてきました。その復活以降も、この種の文書を使って混乱を広めているという点では、あまり変わっていません。
以下の解析は、次のハッシュを持つ、悪意のある Word ファイルに基づくものです。
- f90da10a8fd9774683d270cb490f4d3a21395550beb6ca9e5e202c839e9a4883
このファイルを開くと、ユーザーに悪意のある VBA コードの実行を許可させようとする下図のようなメッセージが表示されます。
Emotet ローダー
Emotet は、これまでと同じようにモジュール型の設計になっています。ディスクに残すファイルは、追加のモジュールとマルウェアを読み込むためのローダーにすぎません。こうすることで、感染するマシンでのフットプリントを小さく抑え、また各マシンで実行する機能を動的に管理できるようにしています。
今のところ、新しいモジュールは展開されていません。すべての古いモジュールがまだ使用されています。以下のモジュールです。
Mail password view – 一般的なメールクライアントからパスワードを窃取します。
Web browser pass view – 一般的な Web ブラウザーに保存されているパスワードを窃取します。
Email stealer – リプライチェーンスパムに使用するために、Outlook® のメールデータを列挙して窃取します。
Generic spam emailer – 悪意のある添付ファイルやリンクが入った、一般的なスパムメールを送信します。
Reply chain spam emailer – リプライチェーンに窃取済みのメールを使うことで、悪意のあるメールの信憑性を高めます。
LAN spreader – 事前に用意されたパスワードリストを使ってネットワーク共有に総当たり攻撃を行い、ローカルネットワークに拡散させます。
今回の新しいバージョンの Emotet では、感染したマシンでプロセスを列挙する作業が別のモジュールにオフロードされています。これは、初期ローダーを小さくして、フットプリントをさらに削るために行われたのだと考えて間違いないでしょう。こうすることで、マルウェアの署名を使った従来のウイルス対策プログラムで発見することは困難になります。
また、以前の Emotet ではセッションキーの暗号化と署名の検証に RSA 鍵を使っていましたが、最新版では ECC(Elliptic Curve Cryptography - 楕円曲線暗号)に移行しています。脅威アクターらは、前回の閉鎖は暗号鍵が破られたためだと考えているため、さらに強力な暗号に移行する可能性があります。
耐リバースエンジニアリングと難読化の手法
Emotet ローダーは、以前のバージョンと同じように、リバースエンジニアリングと、従来のウイルス対策シグネチャによる検出を困難にする以下のような手法を組み合わせて使用しています。
ジャンク関数変数 – 引数としてランダムな整数が渡されますが、まったく使用されなかったり、関数の実行に影響しなかったりします。
関数引数のランダム化 – 異なるサンプルに同じ関数があっても、引数の順番がランダム化されています。たとえば、暗号化されたネットワークデータを含むバッファが、あるサンプルでは最初の引数に、別のサンプルでは 3 番目の引数になる、などです。
整数値の難読化 – 整数値が、一連のバイナリ演算(ADD、XOR、SHL など)を適用して所望の整数値を得るという方法で難読化されています。この手法は、ジャンク関数変数にも使用され、プログラムに不可欠な整数値がどれなのかを判別することがさらに困難になります。
例を以下の画像に示します:
動的なインポートの解決 – インポートを通常のプログラムのようには解決せず、ローダーがカスタムのハッシュ関数を使って動的に解決します。その目的は、ウイルススキャナーに意図を悟られないようにすることと、リバースエンジニアリングを困難にすることです。
文字列の難読化 – 一般的なウイルススキャナーによる検知から逃れるために文字列が難読化されています。
- コードフローの難読化 – Emotet は、通常のソフトウェアのように直線的なコードフローにはなっておらず、個別の関数内でのコード実行の順序をわかりにくくすることで、リバースエンジニアリングを遅らせ、シグネチャの作成を困難にしています。この手法は、個別のコードブロックの実行を制御するスイッチテーブルを使って実現されています。コードブロックの実行が終わると、制御変数を設定し、ジャンプテーブルに戻ります。そして、先ほど設定した制御変数で決まる条件ジャンプに当たるまでスイッチテーブルを実行することで、次に実行すべきコードブロックにたどり着きます。
この過程を下の 2 つの図に示します。1 つ目の図にジャンプテーブルを示します。ここでは、ハードコードされたランダムな値と ESI レジスタが比較されています。2 つ目の図に示すコードブロックの後では、ESI レジスタに次に使う制御変数が設定されています。
結論
マルウェアや、新たなマシンに感染するための手法に大きな変更はありませんが、Emotet は今後の活動に向けて準備を進めていると考えられます。この仮定に基づけば、Emotet の背後にいる脅威アクターは、今後数か月の間に、マルウェアの再構築に注力し、感染したマシンを集めてさらなるスパムキャンペーンに利用することで成長していくものと思われます。
今後 Emotet は、ランサムウェアやその他のマルウェアファミリーを管理下にある感染したマシンに展開する可能性もあります。
・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows
・BlackBerry Japan:https://www.blackberry.com/ja/jp