Cisco Japan Blog

Lokibot の感染チェーンの詳細

1 min read



ニュースの概要

  • Lokibot は現在最も有名な情報窃盗型マルウェアの 1 つです。この記事では、最新の Lokibot キャンペーンの技術的な分析結果をご紹介します。
  • Talos は、ドロッパーの第 3 ステージをアンパックする新しいスクリプトも作成しました。
  • 多くの Lokibot 攻撃では、複数のログイン情報やその他の機密情報が攻撃者に流出します。今回発見された最新のキャンペーンでは、被害者のマシン上で Lokibot を実行するために、マルチステージ型かつマルチレイヤ型の複雑なドロッパーが使用されています。

最新情報

今回分析したサンプルは、ドキュメント内の画像をぼかす一般的な手法を使用して、マクロの有効化をユーザに促します。実に単純ですが極めて一般的な手法であり、多くのユーザに対して効果的です。この記事では Lokibot の最新の感染手口をリバースエンジニアリングし、その結果について詳しく説明します。

仕組み

Lokibot 攻撃は、まず悪意のある XLS 添付ファイルをフィッシングメールで送り付けます。添付ファイルに含まれる難読化済みのマクロが実行されると、高度にパック処理された第 2 ステージ用のダウンローダがダウンロードされます。第 2 ステージでは暗号化された第 3 ステージが取得され、3 層構造の暗号化された Lokibot がダウンロードされます。第 3 ステージでは、権限昇格が発生した後に Lokibot が展開されます。次の図に、この攻撃の感染チェーンを示します。

影響

防御側は警戒を怠らず、ネットワーク内のシステムの動作を常に監視する必要があります。この記事では、Lokibot の感染チェーンの複雑さについて詳しく説明します。また、最新 OS の一般的なセキュリティ機能やセキュリティツールを迂回するための手法についても詳しく説明します。

第 1 ステージの分析

ユーザがフィッシングメールを開くと、スペイン語のソーシャル エンジニアリング メッセージ(「お支払いについて:添付ファイル内のお支払予定日をご確認ください」)が表示されます。次の図は、Talos が確認した電子メールのスクリーンショットです。

この Excel シートでは、別のソーシャルエンジニアリング手法も使用されていて、「ドキュメントのサイズを変更しています。しばらくお待ちください」というスペイン語のテキストを含むテーブルのぼかし画像が表示されます。画像がはっきり見えるようになるかもしれないと思ってユーザが [コンテンツの有効化(Enable Content)] ボタンをうっかりクリックすると、悪意のあるマクロが実行されます。

マクロは、long 型の 16 進数の変数名を使用して難読化されています。以下のスクリーンショットは、このマクロの「Workbook_Open」関数の一部です。

難読化解除済みのマクロを以下に示します。

マクロは、ハードコードされたバイトから第 2 ステージ用の URL を復号し、「Templates」フォルダに保存して実行します。マクロから生成されるトラフィックは以下のとおりです。

第 2 ステージの分析

第 2 ステージの実行可能ファイルは、Delphi ベースのパッカーを使用してパック処理されています。

パッカーの分析

パッカーの「Form_main」内に「xvv」というタイマーがあり、これによってペイロードがアンパックされます。タイマーとハンドラコードを以下に示します。

アンパック機能は、次の手順を実行します。

  1. 「T__6541957882」という名前の画像リソースをメモリにロードします。
  2. アンカー「WWEX」を検索し、後続のデータを新しいバッファにコピーします。
  3. コピーしたバイトに「0xEE」を追加して DLL を復号化します。
  4. 復号化された DLL をメモリに反射的にロードし、実行します。

次の図は、エンコードされた実行可能ファイルを含むリソース画像です。

次の図は、アンカー「WWEX」の後に埋め込まれた実行可能ファイルの場所を示しています。

次のコードは、コードと復号化された DLL を示しています。

アンパックされた DLL の分析

アンパックされた DLL も Delphi で記述されています。DLL は、ハードコードされた URL から第 3 ステージのペイロードを取得します。
次に示すように、DLL はタイマーを設定して、ダウンローダ機能を定期的に実行します。

「Download3rdStage」は、最初に「https://discord.com」を復号化して接続を試みます。その後、以下のコードに示すように、時間ベースのデバッグ対策チェックを実行します。これらのチェックのいずれかに失敗すると、DLL は第 3 ステージのダウンロードを実行しません。

チェックに成功すると、DLL は以下のコードに示すように、ハードコードされた第 3 ステージの URL を復号して HTTP リクエストを送信します。

サーバは、以下に示すように、リクエストへの応答として約 618 KB の 16 進文字列を送信します。 

DLL は、16 進文字列を次の手順で復号化します。

  1. 16 進文字列を反転します。
  2. 16 進数をバイトに変換します(unhexlify 処理)。
  3. ハードコードされたキー「ZKkz8PH0」を使用して XOR 復号化を実行します。

Talos は、第 3 ステージを復号するために、短い Python スクリプトpopup_iconを作成しました。ハードコードされたコマンド & コントロール(C2)の復号にも同じ手法が使用されていました。その結果として得られるファイルも DLL であり、第 2 ステージで反射的にロードされます。

第 3 ステージの分析

第 3 ステージも Delphi で記述されています。最初に、「DVCLAL」という名前の大きなバイナリリソースがメモリにロードされます。次に、ハードコードされたバイトから「7x21zoom8675309」というキーが生成されます。このキーは、独自の暗号化アルゴリズムを使用してリソースデータを復号する際に利用されます。その後、マルウェアは復号されたリソースデータから設定構造体を復元します。構造体の各フィールドは、「*()%@5YT!@#G__T@#$%^&*()__#@$#57$#!@」という文字列で区切られています。

復号アルゴリズムは次のとおりです。

以下の 16 進ダンプでは、区切り文字で区切られた構造体フィールドを強調表示しています。

設定構造体のレイアウトを以下に示します。

Notepad.exe への悪意のある DLL の挿入

次に、マルウェアは「InjectDLLToNotepadFlag」が設定されているかどうかを確認し、「reverse_str(FileName)+ “.url”」(mheX.url)ファイルが C:\Users\<username>\AppData\Local\ に存在していないことを確認します。これらのチェックに合格した場合、マルウェアは次の手順で悪意のある DLL を Notepad.exe に挿入します。

  1. exe を一時停止状態(dwCreationFlag = CREATE_SUSPENDED)で起動します。
  2. インポートされた DLL 名を悪意のある DLL のインポートテーブルから取得し(最初の DLL は「dll」)、一時停止状態のプロセスに書き込みます。
  3. 次のように kernel32 のアドレスを含む 12 バイトの構造体(LoadLibrary、sleep、および DLL 文字列)を書き込みます。

  1. 210 バイトのシェルコードをexe に書き込みます。

  1. 「CreateRemoteThread」を使用してexe でシェルコードを実行し、上記の 12 バイトの構造体にポインタを渡します。シェルコードは DLL(「kernel32.dll」)をロードすると、無限スリープループに入ります。
  2. DLL(「dll」)文字列を再度 notepad.exe に書き込みます。
  3. 重要な API へのポインタと 2 つの文字列(インポートされた DLL 名とインポートされた API 名)を含む 20 バイトの構造体をexe に書き込みます。
  4. 144 バイトのシェルコードをexe に書き込みます。

  1. 「CreateRemoteThread」を使用してexe でシェルコードを実行し、手順 7 の 20 バイトの構造体へのポインタをパラメータとして渡します。シェルコードは、手順 7 の構造体の最後の変数によって指定されたインポートを解決した後、 「RtlExistUserThread」を使用して終了します。
  2. 悪意のある DLL のインポートテーブルにインポートされたすべての DLL と関数に対して、手順 2 〜 9 を繰り返します。
  3. exe に悪意のある DLL を書き込みます。
  4. 悪意のある DLL のベースアドレスとエントリポイントを含む 8 バイトの構造体をexe に書き込みます。
  5. exe に 122 バイトのシェルコードを書き込みます。

  1. 「CreateRemoteThread」を使用して、手順 12 の構造体へのポインタをパラメータとして渡し、exe でシェルコードを実行します。シェルコードは、悪意のある DLL のエントリポイントを呼び出します。

挿入される DLL の分析(2 つの手法による UAC のバイパス)

DLL は「C:\Windows\Finex」が存在するかどうかを確認します。存在しない場合は、「C:\Users\Public\cde.bat」に次のファイルをドロップします。

次に、以下の内容を含む C:\Users\Public\x.bat をドロップします。

次に、C:\Users\Public\x.vbs をドロップします。

次に、C:\Users\Public\Natso.bat をドロップします。

その後、「Natso.bat」を実行します。これは James Forshawpopup_icon 氏が発見した「ファイルレス」型の UAC バイパス手法です。詳細については、こちらをご覧ください。popup_icon

(UAC バイパスに失敗して)C:\Windows\Finex がまだ存在しない場合は、Nasto.bat を更新し、以下に示すコードを使用して Nasto.bat を実行します。

これは上記の手口とは異なる UAC バイパス手法で、fodhelper.exe を利用します。詳細については、こちらをご覧ください。popup_iconTalos のテストマシンでは後者のバイパスが成功し、「C:\Windows\Finex」の作成に成功しました。その後、DLL はドロップしたファイルを削除して終了します。

Lokibot の復号と実行

第 3 ステージの DLL は UAC バイパスを試みた後、「AutoRunKeyFlag」が設定されているかどうかを確認します。この DLL に対しては設定されていません。次に、設定構造体の復号キーを使用して Lokibot 実行可能ファイルを復号するコードにジャンプします。「DecryptionKeyA」と「DecryptionKeyB」を使用して最初の 2 つのレイヤを復号し、すべてのデータを反転します。その後、第 3 ステージの開始時にリソースデータを復号するのと同じ手法で最終レイヤを復号します。

DLL には、PE ファイルを実行するための方法が複数含まれています。実行方法は ExecutionFlag A、B、C の値に基づいて決定されます。現在の設定の場合、これらの値に基づいて次のコードが使用されます。このコードは、DecryptionKeyB を使用して設定からシェルコードを復号します。また、3 つのパラメータ(復号された Lokibot.exe へのポインタ、文字列配列へのポインタ、および現在のコマンドラインへのポインタ)を渡します。

シェルコードは、3 番目に挙げたパラメータをコマンドラインコマンドとして使用して一時停止状態のプロセスを作成します。さらに、プロセスの空洞化popup_iconを使用して、作成したプロセスに Lokibot を挿入します。

まとめ

攻撃者たちは最終的なペイロードの隠蔽手法をますます巧妙化させています。このドロッパーは、最終的なペイロードを隠蔽するために 3 つのステージと 3 つの暗号化レイヤを使用します。また、一時停止状態のプロセスにコードを挿入して UAC をバイパスし、プロセスの空洞化を使用して最終的なペイロードを実行します。Lokibot に限らず、他の大半のマルウェアも同様に進化しています。ユーザを欺いて悪意のある添付ファイルを開かせたり悪意のあるコードを実行させたりするソーシャルエンジニアリングの手口は、絶えず巧妙化しています。また、この記事で説明したように、マルウェアのコードと感染の手法も絶えず進化しています。攻撃者は、マルウェアの検出を困難にするために巧妙な手口をいくつも組み合わせて使用します。この種の攻撃を検出するためには、マルチレイヤのセキュリティアーキテクチャの導入がこれまで以上に重要です。一部のセキュリティ対策をバイパスすることはできるかもしれませんが、すべてをバイパスするのは極めて困難です。今回のような攻撃と攻撃手口の進化は、今後もしばらく続くものと予想されます。

カバレッジ

今回の脅威は、以下の製品で検出してブロックすることが可能です。

Advanced Malware ProtectionAMP)は、この記事で説明したマルウェアの実行を阻止するのに最適です。次のスクリーンショットは、AMP がこの脅威からお客様を保護する様子を示しています。こちらpopup_iconから AMP を無料でお試しいただけます。
Cisco クラウド Web セキュリティCWS)または Web セキュリティアプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述の攻撃で使用されるマルウェアを検出します。
次世代ファイアウォールNGFW)、次世代侵入防御システム(NGIPS)、および Meraki MXpopup_icon などのネットワーク セキュリティ アプライアンスは、今回の脅威に関連する悪意のあるアクティビティを検出します。

Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。

Umbrellapopup_icon(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

特定の環境および脅威データに対する追加の保護機能は、Firepower Management Center から入手できます。

オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.orgpopup_icon で購入可能な最新のルールパックをダウンロードすると、最新状態を維持できます。今回の脅威を検出する目的でリリースされた SID は、56578 と 56577 です。

IOC

ハッシュ

d5a68a111c359a22965206e7ac7d602d92789dd1aa3f0e0c8d89412fc84e24a5(第 1 ステージの XLS ファイル)
6b53ba14172f0094a00edfef96887aab01e8b1c49bdc6b1f34d7f2e32f88d172(第 2 ステージのダウンローダ)
b36d914ae8e43c6001483dfc206b08dd1b0fbc5299082ea2fba154df35e7d649(第 2 ステージでアンパックされた DLL)
93ec3c23149c3d5245adf5d8a38c85e32cda24e23f8c4df2e19e1423739908b7(第 3 ステージの DLL)
21e23350b05a4b84cdf5c93044d780558e6baf81b2148fdda4583930ab7cb836(UAC バイパスに使用された DLL)
c9038e31f798119d9e93e7eafbdd3e0f215e24ee2200fcd2a3ba460d549894ab(Lokibot)

URL

hxxp://millsmiltinon[.]com/ojHYhkfkmofwendkfptktnbjgmfkgtdeitobregvdgetyhsk/Xehmigm.exe

ドメイン

Millsmiltinon.com(第 2 および第 3 ステージをホスト)

IP

104.223.143[.]132(Lokibot C2)

 

本稿は 2021 年 01 月 06 日に Talos Grouppopup_icon のブログに投稿された「A Deep Dive into Lokibot Infection Chainpopup_icon」の抄訳です。

 

コメントを書く