This post is also available in: English (英語)
概要
Unit 42のリサーチャーは、ビジネスメール詐欺(BEC: Business Email Compromise)フィッシングメールを介してインフォスティーラー(情報窃取型マルウェア)のLokiBotを配信しているマルウェア配信キャンペーンを発見しました。このマルウェアは被害者のシステムからパスワードや銀行情報などの機微情報を盗み出すように設計されています。
本稿は、攻撃者がどのように無害に見える電子メールを使って被害者を罠にかけ、添付ファイルを開かせるかを説明します。この添付ファイルにはLokiBotというインフォスティーラーが含まれていました。
このLokiBotのサンプルがどのように難読化・永続化のしくみを使って検出を回避するか、その技術的詳細を解説し、さらに、C2(コマンド&コントロール)チャネルの通信についても説明します。また、同マルウェアがデータ窃取の対象とするアプリケーションをリストアップします。
さらに、本稿の付録では、HTTPベースのC2通信における各データバイトについて、その具体的な目的を詳しく説明します。この付録では、データ バイトの構造がどのようになっているかを把握できます。
パロアルトネットワークスのお客様は、以下の方法でLokiBotの情報窃取用C2通信からの保護と緩和を受けることができます。
- 脅威防御を有効にした次世代ファイアウォールは脅威ID 85304 および 21630 でLokiBotマルウェアを識別してブロックできます。
- 高度な脅威防御を有効にした次世代ファイアウォールは機械学習ソリューションを使ってLokiBotの通信のバリエーションを特定してブロックできます。
- WildFireとCortex XDRは本稿で紹介した添付ファイルを識別してブロックできます。
関連するUnit 42のトピック | LokiBot |
はじめに
LokiBot (Loki-bot、Loki PWSとも呼ばれる)は、悪名高いインフォスティーラー(情報窃取型マルウェア)で、Webブラウザや電子メールクライアント、FTPサーバー、暗号ウォレットから機微データを収集し、攻撃者がコントロールするマシンにHTTP POST経由で情報をアップロードします。
またこのマルウェアは、感染ホストにバックドアを作成し、攻撃者が追加で悪意のあるソフトウェアをインストールできるようにする場合もあります。LokiBotは2015年に初めて確認され、その後複数のセキュリティ侵害で利用されていますが、つねに進化していることから封じ込めや防御の難しいマルウェアです。
2022年末の休暇シーズン、私たちUnit 42リサーチャーは、自社の機械学習ベースのC2検出ソリューションが、特定のHTTPペイロードを「malicious (悪意がある)」と識別したことに気づきました。そのトラフィック パターンを分析したところ、LokiBot感染に由来することがわかりました。
このマルウェアを配信した攻撃ベクトルとネットワーク トラフィック アクティビティをさらに調べた結果、もとになった電子メールが見つかりました。このメールにはZIPファイルが1つ添付されていて、そのなかに、あるISOファイルが含まれていました。最終ペイロードはこのISOファイルのなかに入っていました。
今回のLokiBotマルウェア配信試行は、あるBECキャンペーンと強い結びつきがあることがわかりました。BECでは電子メールへの不正アクセスと金銭詐取が行われます。現在もっとも普及しているサイバー攻撃形態の1つで、その被害額は甚大です。
BECの兆候には、不正送金の依頼や顧客企業ドメインから送信されてくるスパムメール、フィッシングメールなどがあげられます。メールシステムに不正アクセスされるので、被害者はメールが消えたり削除されたりしていることに気づく場合もあります。
データ収集のさいはThreatFoxなどの脅威インテリジェンス データソースも追加で分析しました。私たちが最初にこのサンプルを検出したとき、LokiBotのアクティビティのIoCが比較的少ないことに気づきました。ただし2022年の年末年始は、12月最後の3日間に発生数のピークがあります。
脅威アクターは、米国などの標的の国の祝日に合わせて攻撃アクティビティを強めることがよくあります。祝日中はセキュリティ担当者が休みを取るのでサイバー攻撃で効果をあげやすいのです。
図2はThreatFoxによるLokiBotのアクティビティ状況を表したものです。
LokiBotマルウェアの解析
第1ステージ
ISOファイル形式は、通常は光ディスクのコンテンツをパッケージングするのに使いますが、この事例ではLokiBotマルウェアの配信に使われています。攻撃者たちはこのファイル形式を使うことでマルスパム検出技術を回避しようとしています。通常、マルウェア感染チェーンにはEXEファイル、DLLファイル、MS Officeファイルなどのファイル形式が使われることが多く、そのためマルスパム検出技術側も、これらのファイル形式を重点的に検出しているからです。
ISOファイルが攻撃者にとって使いやすい理由はほかにもあります。以前はISOファイルを開くのに特定のソフトウェアが必要でしたが、いまのWindowsにはISOファイルのオープンツールがついているので、ダブルクリックするだけでISOファイルをマウントしたり開いたりできます。被害者から見てこのオープン プロセスは通常のディレクトリにしか見えません。
ローダー
ISOファイルを開くとWindows PEファイル(EXE)にアクセスできますが、このファイルの正体はローダーです。このローダーは難読化された.NETファイルで、プロセスハロウイング技術を使っています。プロセスハロウイングというのは、攻撃者が実行ファイルの正規コード部分を「空洞化(ハロウイング)」させ、空洞化した部分を悪意のあるコードに置き換えるコード インジェクション技術を指します。
この事例ではプロセスの空洞化が利用されていて、aspnet_compiler.exeという正規のプロセスに悪意のあるPEファイルが「注入(インジェクト)」されていました。図3は感染プロセスのメモリーに存在する複数のIoCを示しています。プロセス メモリーからPEをダンプするとLokiBotの最終ペイロードにアクセスできます。
最終ペイロード
難読化
このLokiBotのサンプルが使っているコード難読化技術は「APIのハッシュ化」1つだけです。マルウェア作者らはこの技術を使ってハッシュを計算することでロードしたライブラリからエクスポート関数を取得しています。
このハッシュ関数の実装を複製すれば、当該のライブラリ内で対応するAPIを取得できます。図4はマルウェア サンプルが使っていたAPIハッシュ アルゴリズムのPythonでの実装です。
スティーラーの主な機能
このサンプルのmain関数は101個の要素からなる2つの配列を作成します。1つめの配列にはインデックスが、2つめの配列には関数へのポインタが格納されています。後者がスティーラー関数です。
これらの関数は、Windowsオペレーティング システム上のさまざまな種類のアプリケーション・サービスから、クレデンシャル(認証情報)を盗むために作られています。
- Webブラウザー: Safari、Internet Explorer、Firefox、Chromiumベースのブラウザー
- FTP/SSHのアプリケーションとクライアント
- バックアップ アプリケーション
- メール アプリケーション
- ノート アプリケーション
- ポーカー アプリケーション
- パスワード管理ソフト
- Windowsの認証情報
LokiBotのmain関数は、これらのスティーラー関数をループで実行します(図5)。
インストールされたソフトウェアから収集・抽出されたすべてのクレデンシャルは、 aPLibアルゴリズムで圧縮され、HTTPプロトコルのPOSTメソッドでC2サーバーに送信されます。この件は「HTTPによるC2通信」のセクションで詳述します。
永続化
このマルウェアはMoveFileExWかCopyFileW Windows API経由で%APPDATA%ディレクトリ内の新しいフォルダに自身のコピーを保存するところから標的ホスト上での永続性の確立処理を始め、次にレジストリ キーHKCU\Software\Microsoft\Windows\CurrentVersion\Runに新たな値を作成・設定します。この値にはさきほど作成した新しいフォルダと同じ名前が付けられ、コピーされた実行ファイルのパスが値として設定されます。
HTTPによるC2通信
LokiBotはHTTPプロトコル経由でC2に情報を漏出させます。この情報にはボットのバージョン番号(1.8)が含まれていて、この番号はHTTPペイロードの2バイトで確認できます。このほか、User-Agentが含まれていて、これは「Mozilla/4.08 (Charon; Inferno)」に設定されています。また、Content-KeyというカスタムHTTPヘッダーを含んでいますが、このヘッダーにはHTTPヘッダーから生成したハッシュに相当する値が設定されています。
図6は、HTTP POSTリクエストとそのレスポンスを表すメッセージボディで、このメッセージ ボディ内に漏出した情報が含まれています(フィールドごとに色を変えて表示しています)。それぞれのフィールドのオフセットとサイズも含めておきますので、同マルウェアの使うデータ構造を視覚的に把握したり、どのようなフィールドが対象かを相互参照するさいはこちらを確認してください。
HTTPボディ(ペイロード)の各データ フィールド(オフセット、サイズ)の一覧は付録セクションを参照してください。
ほかのインフォスティーラーと同様にLokiBotは以下の情報を検索して漏出させます。
- オペレーティング システムのアーキテクチャ
- ビルトインAdministrator
- ドメイン ホスト名
- ホスト名
- ローカルAdministrator
- オペレーティング システム
- 画面解像度
- ユーザー名情報
LokiBot特有の漏出データには以下が含まれます。
- 一意なキー。ランダムに生成した5文字を含む識別子
- バイナリID。ckav[.]ruなど、LokiBot感染で多用されるドメインを表す
- ミューテックス値。マシンのGUIDをMD5アルゴリズムでハッシュ化したもので24文字の長さの文字列
- 潜在的な隠しファイル(例:%APPDATA%\\079D53\\3AFB91.hdb)。ミューテックス値から取得。ディレクトリ名は8〜13バイトの文字、ファイル名は13〜18バイトの文字で構成
- ハッシュ データベース(.hdb)
- キーロガー データベース(.kdb)
- ロック ファイル(.lck)
- マルウェアの実行ファイル(.exe)
またこのボットではさまざまな種類のペイロード(HTTPボディの3バイト目と4バイト目で指定)を使います。ペイロードの種類は次の通りです。
- 0x27: 窃取したアプリケーションやクレデンシャル データを漏出
- 0x28: C2サーバーからC2コマンドを取得
- 0x2B: キーロガー データを漏出
ほかのバージョンのLokiBotマルウェアファミリーでは最終アクションに応じて以下を含むペイロード種類も追加で利用できます。
- 0x26: 暗号通貨ウォレットの漏出
- 0x29: ファイルの漏出
- 0x2a: PoS データの漏出
- 0x2c: スクリーンショット データの漏出
結論
LokiBotマルウェアは長年攻撃者に利用されていてバージョンが複数存在します。同マルウェアの挙動の変化をつねに監視して必要な防御策を追加していくことは、どのセキュリティチームにとっても大変な労力を必要とします。
高度な脅威防御に組み込まれている弊社の機械学習ベースのC2検出ソリューションは、悪意のあるC2アクティビティをインラインで検出して阻止します。この機械学習モデルは各種マルウェアの最新C2通信に対応して定期的に更新されます。これにより、検出機能がつねに最新の状態に保たれ、進化し続ける攻撃アクターからの脅威に対抗できます。
本調査ではUnit 42チームのDoel Santos氏、Nina Smith氏に協力をいただきました。ありがとうございました。
パロアルトネットワークスのお客様は、以下の方法でLokiBotの情報窃取用C2通信からの保護と緩和を受けることができます。
- 脅威防御を有効にした次世代ファイアウォールは脅威ID 85304 および 21630 でLokiBotマルウェアを識別してブロックできます。
- 高度な脅威防御を有効にした次世代ファイアウォールは機械学習ソリューションを使ってLokiBotの通信のバリエーションを特定してブロックできます。
- WildFireとCortex XDRは本稿で紹介した添付ファイルを識別してブロックできます。
私たちは、これまで何百件ものビジネスメール詐欺(BEC)インシデント対応経験でつちかった知識をBEC Readiness Assessment (BEC対応力評価)サービスに総括しています。本サービスは、組織のプロセスや技術を強化することで、本稿で述べた脅威のような、さまざまな脅威への対策を組織が取りやすくすることを目的としています。
侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、infojapan@paloaltonetworks.com までメールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。
- 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
- 欧州: +31.20.299.3130
- アジア太平洋: +65.6983.8730
- 日本: +81.50.1790.0200
パロアルトネットワークスはファイルサンプルや侵害の兆候などをふくむこれらの調査結果をCyber Threat Alliance (CTA) のメンバーと共有しました。CTA のメンバーはこのインテリジェンスを使用して、お客様に保護を迅速に提供し、悪意のあるサイバー攻撃者を体系的に阻害できます。詳細についてはCyber Threat Allianceにてご確認ください。
IoC
サンプル
- ZIPファイル: 4edd01345f58b9cc04a88ca15d6b82895f44f5b9cb51ad63b809de09029670ac
- ISO: 8a5a024272361bb1ae12860c033bb52685d7b0ea3bce5fac46439f3f3ad36a84
- ローダー: 1b574a66c84924886daec4841e1b107258e019aaf6f336329ae8fae7cbd52a34
インフラ
- efvsx[.]gq
- 188.114.96[.]13
追加リソース
- オペレーションデリラ: Unit 42、国際刑事警察機構(INTERPOL)に協力しナイジェリア系ビジネスメール詐欺アクターを特定
- オペレーションファルコン II: Unit 42、国際刑事警察機構(INTERPOL)に協力 ナイジェリアのビジネスメール詐欺グループを特定
- SilverTerrier: ナイジェリアのビジネスメール詐欺に関するアップデート 2021
付録
フィールドの説明 | オフセット | サイズ |
LokiBotバージョン | 0x0 | 0x2 |
ペイロードの種類 | 0x2 | 0x2 |
Binary IDのUnicode | 0x4 | 0x2 |
Binary IDの長さ | 0x6 | 0x4 |
Binary IDの文字列 | 0xa | 0x7 |
ユーザー名のUnicode | 0x11 | 0x2 |
ユーザー名の長さ | 0x13 | 0x4 |
ユーザー名の文字列 | 0x17 | 0x12 |
ホスト名のUnicode | 0x29 | 0x2 |
ホスト名の長さ | 0x2b | 0x4 |
ホスト名の文字列 | 0x2f | 0x16 |
ドメイン ホスト名のUnicode | 0x45 | 0x2 |
ドメイン ホスト名の長さ | 0x47 | 0x4 |
ドメイン ホスト名の文字列 | 0x4b | 0x16 |
画面解像度 (幅) | 0x61 | 0x4 |
画面解像度 (高さ) | 0x65 | 0x4 |
ローカルAdministrator | 0x69 | 0x2 |
ビルトインAdministrator | 0x6b | 0x2 |
64ビット オペレーティング システム | 0x6d | 0x2 |
オペレーティング システムのメジャーバージョン | 0x6f | 0x2 |
オペレーティング システムのマイナーバージョン | 0x71 | 0x2 |