- おそらく、マクロをブロックするという Microsoft 社の決定が原因と考えられますが、攻撃者がシェルリンク(LNK)ファイルを攻撃手法に取り入れるようになってきました。この移行により、LNK メタデータによって提供される情報を調査に利用できるようになっています。
- Cisco Talos は、LNK ファイル内のメタデータを分析し、それを攻撃者の戦法や手順と関連付けて、攻撃者の活動を特定、追跡しました。このレポートでは、例として Qakbot と Gamaredon に関する Talos の調査について概説します。
- Talos はまた、LNK ファイルのメタデータを使用して、さまざまな攻撃者間の関係を割り出しました。このレポートでは、メタデータを使用して Bumblebee と IcedID および Bumblebee と Qakbot とのつながりを特定した方法を紹介しています。
概要
Microsoft 社は 2022 年初めに、インターネットからダウンロードした Office ドキュメントのマクロをデフォルトで無効にする措置を間もなく開始すると発表しました。変更が行われたのは 6 月でしたが、同月下旬にはこの機能を削除し、ロールバックしています。デフォルトでマクロを無効にする機能は、7 月末になってようやく再度有効化されました。攻撃者がこの変更に反応し、最初のアクセス方法を、悪意のあるマクロの使用から他の種類の実行ファイルをメールに添付するという手法に移行したことが確認されています。
Talos は、普及度の高いコモディティ型マルウェアを利用した攻撃者を追跡しているときに、ペイロードをダウンロードして実行するための初期アクセス方法として、悪意のある LNK ファイルが広く使用されていることを確認しました。LNK ファイルを詳しく見ると、メタデータを使用して新しい攻撃を特定、追跡する方法がわかります。
LNK ファイル形式の概要
Microsoft 社は、シェル リンク バイナリ ファイル形式(拡張子が「LNK」の Windows ファイルで使用される形式)について、オペレーティングシステムやアプリケーションがシステム上の別のデータオブジェクトにアクセスするために使用できる情報を格納したファイルと説明しています。LNK ファイル自体が Object Linking and Embedding(OLE)オブジェクトにアクセスできるアプリケーションとして機能する場合もありますが、ファイルシステム上のアプリケーションやファイルの保存場所への「ショートカット」として使用される方がより一般的です。
LNK 構造体には、ターゲットオブジェクトに関する情報のほか、アプリケーションの動作とその LNK ファイルが作成されたマシンのメタデータについての関連情報が格納されます。これらのメタデータセクションには、ターゲットファイルのさまざまな属性に関する任意のデータを格納できます。そうした属性の中には、LNK ファイルが作成されたシステムを正確に識別するための貴重な情報を示すものもあります。LNK ファイルの基本的な機能に関しては、他の研究者がよくまとまった情報を公開しているため、ここでは詳細については触れません。以下が、Talos が取り組んでいる最も重要な研究分野です。
- 変更/アクセス/作成(MAC)タイムスタンプ:LNK ターゲットの MAC 時間を UTC で示す FILETIME 構造体。
- VolumeID:リンクが作成されたときにリンクターゲットが存在していたボリュームに関する情報を示す任意の VolumeID 構造体。アナリストにとって特に興味深いのは DriveSerialNumber というフィールドで、これは、特定のディスクデバイスに関連付けることのできる一意のフィールドです。
- MachineID(16 バイト):システムのデフォルトコードページで定義されている NULL で終わる文字列。リンクターゲットが最後に所在していたとされるマシンの NetBIOS 名を示します。
- DROID(CDomainRelativeObjId)GUID:リンクターゲットの場所を示すために使用される GUID パケット表記の 2 つの値。ボリューム識別子とファイル識別子にはさまざまな値があります。ファイル識別子の最後のセクションは、ファイルが格納されているマシンの MAC アドレスに基づいて生成されます。MAC アドレスは、もう 1 つの重要な相関データです。
- DROID Birth GUID:上記のフィールドと同じですが、LNK ファイルが最初に指していた場所を格納しています。DROID GUID とこのフィールドは両方とも、LNK ファイルが作成後に別のシステムに移動されたかどうかを示します。
- メタデータストア構造体:リンクターゲットに関する詳細を説明するために使用される属性の追加構造体。ターゲット情報が LNK ファイルに存在しない場合は、追加のデータのメタデータストア構造体を確認する必要が出てくることもあります。この構造体の「ItemFolderPathDisplayNarrow」フィールド、「ParsingPath」フィールド、セキュリティ識別子(「SID」)のフィールドは、LNK ターゲットと埋め込まれたペイロードを識別するための貴重なデータとなる場合があります。
LNK 構造の解析と分析を行うためのツールが複数公開されていて、これらの属性を抽出するために使用できます。Google は、「LNK Parser」という無料のコマンドラインツールを提供しています。このブログでは、このツールを使用した場合の例を示しますが、LeCMD や Python ライブラリ「LnkParse3」などの他のツールも利用できます。攻撃者によって作成された一部のファイルの特徴である、不正な形式の LNK ファイルを解析できるツールもあります。
LNK ビルダーツール
攻撃チェーンで LNK ファイルの使用が増えるのに伴い、攻撃者が LNK ファイルを作成するためのツールの開発と使用を開始したのは当然の流れです。これまでに複数のツールについて文書化されており、その多くは一般公開されているか、有料のサブスクリプションを通じて入手できます。
- MLNK Builder
- Quantum Builder
- Macropack
- LNKUp
- Lnk2pwn
- SharPersist
- RustLnkBuilder
ここに挙げているツールは LNK メタデータに痕跡を残すことがあり、この痕跡を攻撃者の検出や追跡に役立てることができます。これらのビルダーのうちいくつかの出力ペイロードを調べると、そのほとんどがファイルから大部分のメタデータを消去していることがわかります。ショートカットが適切に作成された場合、通常であればデフォルトでメタデータフィールドが存在します。つまり、メタデータが消去されているということは疑わしい動作を表す指標だとみなすことができます。
SharPersist のペイロード
図 1:SharPersist のペイロード
図 1 を見ると、MAC タイムスタンプが空になっています。ただし LNK ファイルには、ファイルが作成された場所の相対パスのほか、ファイルを作成したユーザーの SID に関する情報が残っています。
Quantam Builder のペイロード
図 2:Quantam Builder のペイロード
図 2 を見るとわかりますが、Quantum Builder ではメタデータが消去されません。生成された LNK ファイルには、その LNK ファイルが生成されたシステムに関する大量のメタデータが格納されています。この例では、ファイルの生成に使用されたマシンの MAC アドレスを含むディスクシリアル番号、ユーザー SID、DROID 情報も確認できます。この MAC アドレスを簡単に調べるだけで、VMware 仮想ネットワークカードのものであることがわかります。
Meterpreter のペイロード
図 3:MS15-020(CVE-2015-0096)用に生成された Meterpreter のペイロード
Meterpreter によって作成された LNK ファイルや、Cobalt Strike などの他のエクスプロイト フレームワークでは、メタデータが完全に消去されており、LnkParser によって通常は解析されないフィールドに悪意のあるコードが含まれています。図 3 では、LNK ターゲットがリモート共有上の DLL ファイルを指していますが、これはバグを悪用するために作成された不正な形式のファイルであるため、解析ツールはペイロードを認識できません。
図 4:ペイロードを示す Hex エディタに表示された Meterpreter のペイロード
これらの例に示されているデータを比較すると、悪意のあるファイルの検出に役立つ可能性のあるパターンを確認できます。ほとんどのツールは、メタデータを消去する傾向があります。理由は単純で、悪意のあるファイルの作成に使用される API がすべてのフィールドを必要とせず、悪意のあるコードの実行に必要な最低限のものしか実装しないからです。以下の単純な YARA ルールを使用して、このようなサンプルを検出できます。
rule lnk_wiped { meta: author="gvenere" description="LNK with wiped metadata" strings: $lnk_magic = { 4c 00 00 00 } $ext1 = ".js" // additional strings to search $ext2 = ".bat" // in the LNK target area $ext3 = ".cmd" // These are for Qakbot condition: $lnk_magic at 0x0 and uint16(0x1c) == 0x0 and // CreationTime == 0x0 uint16(0x24) == 0x0 and // AccessTime == 0x0 uint16(0x2c) == 0x0 and // WriteTime == 0x0 // To target specific families we can add additional checks here ( any of ($ext*) in (0xa0..0x100) ) }
他のツールは適切な方法によってこれらのファイルを作成しますが、これにより、サンプルが作成されたマシンに固有の情報を特定できるようになります。図 2 の Quantum Builder の例を見ると、LNK が作成されたディスクとマシンを識別する属性を確認できます。
LNK ファイルに格納された情報は、活動中の特定の攻撃者を追跡する際に非常に有用であることがわかります。
初期アクセスツールとしての LNK ファイル
Microsoft 社が 2021 年末に Office のマクロ動作の変更を発表したとき、最も流行しているマルウェアファミリのうち、最初の感染チェーンの一部として LNK ファイルを使用していたものはほとんどありませんでした。一般に LNK ファイルは、リムーバブルディスクやネットワーク共有に拡散するために、Raspberry Robin などのワーム型マルウェアによって使用されます。
ただし Talos は、今年の初めから主要なマルウェアファミリによる LNK ファイルの使用が着実に増加していることを確認していました。Microsoft 社が Office 365 に変更を実装した頃には、LNK ファイルの使用が大幅に急増しています。過去 1 年間の VirusTotal データを検索し、流行しているマルウェアファミリに関連するファイルのみを調べると、次の傾向が見られます(図 5)。
図 5:流行しているマルウェアファミリの初期アクセス手段として使用される LNK ファイル(出典:VirusTotal)
これらのファイルを使用している特定のファミリを見ると、最近の 2 回の攻撃では、ファイルの主な送信元が Qakbot だったことがわかります。1 回目の攻撃は 5 月に始まって 7 月に終わり、2 回目の攻撃は 8 月に始まって 11 月に終わりました。
図 6:マルウェアファミリに対応付けられた LNK ファイルテレメトリ(出典:VirusTotal)
興味深いことに、この期間中に VirusTotal に送信された多くの悪意のある LNK ファイルでは、ファイルからすべてのメタデータが削除されていました。Qakbot のデータを見ると、8 月の攻撃中に、攻撃グループがメタデータを消去した LNK ファイルの使用を開始したことがわかります。先に説明したとおり、メタデータの消去は、LNK ファイルを生成するためのツールキットの使用が増加していることによっても説明できます。
図 6 のデータから、7 月と 8 月頃に活動が減少し、その後 10 月と 11 月頃に再度活動が急増していることがわかります。これは、Microsoft Defender などのウイルス対策製品がファイルをスキャンするかどうかを判断するために使用している Mark-of-the-Web フラグをマルウェアが回避できる脆弱性が公表されたことで説明できます。他の情報源から報告されているように、このバグは多くのマルウェアファミリに悪用されており、マルウェアを配布する手段としての LNK ファイルの使用が 2 度目に急増した理由と考えられます。
攻撃者の追跡
Qakbot
Qakbot(別名 Qbot または Pinkslipbot)は、現在も活動中の最も古いマルウェアの 1 つです。Qakbot は 2007 年頃に初めて確認されました。2022 年第 2 四半期の Talos のレポートで報告しているとおり、今もなお最も活発なマルウェアファミリの 1 つです。
Qakbot は、現在普及している配布方法とセキュリティ技術に呼応して、自らの攻撃手法を進化、適応させることで知られています。2022 年 5 月の時点で Qakbot が好んでいた拡散方法は、侵害したマシンから収集した電子メールスレッドを乗っ取り、悪意のあるマクロが埋め込まれた Office XLSB ドキュメントを含む添付ファイルを挿入するという方法でした。
ただし、インターネットからダウンロードされるコンテンツでマクロをデフォルトで実行する方法について Microsoft 社が変更を発表した後、Qakbot が XLSB ファイルを徐々に利用しなくなり、ペイロードをダウンロードして実行する LNK ファイルを含む ISO ファイルを利用するようになっていることを Talos は確認しています。
過去 6 か月の攻撃で使用されたこれらの LNK ファイルの内容を調べたところ、いくつかの興味深い特徴が確認されました。これらのサンプルが作成された場所に関するメタデータの情報を見てみると、複数の攻撃間でメタデータに共通点がないことがわかります。さらに、Qakbot 攻撃の一部であることが知られている VirusTotal の上位 200 件のサンプルを見ると、これらの LNK ファイルを最も活発に生成していたマシンがわかります(図 7)。
図 7:主な Qakbot 攻撃に関連する LNK ファイルの配布
メタデータ情報は、Qakbot と他のマルウェアとの相関関係を検出するのにも役立ちます。たとえば Talos では、2022 年 6 月と 7 月の「AA」という Qakbot 攻撃の一部である以下のサンプルを分析しました。
- 8fda14f91e27afec5c1b1f71d708775c9b6e2af31e8331bbf26751bc0583dc7e
- 2f9da7145056a4217552a5a536ceb8365e853fbd04d28ae2d494afb20e9c021f
- 52458b4aaddbcb04048be963ea7d669c2ff7a69642d027f88812a5c6c1ade955
- 6a980d7659efb8bfb997dec3259d6eb090d4e6a4609e4c0666e04ad612151d71
- 67bbffb2ff5f724a201445f26018cb09fbf0588689f98f90fd82082aae7c6eec
- da2a0d9a6b5dd2123c4c2cbd55d81fd22ab72bf7ceb1489a5a770e10bcf67137
- 54681cbb4c61dd4fe03341cfd8d2b796366a0372b53dd3e1d52c9e6ff98692d1
- a7f31c98147d98ac08f4b8afe7faa2f2b4aab821655717f4bde519fcd87300ac
- c5c0daaa26815bb6528332dd4f56f7eb72db4456d5a84b8bc69239c45079a1c4
- efdb91497fe213e8f696065c2fe81f64cbaa219da16e2b3f8e1e146d098652b5
- c9dfafd3536977289b4bfda1369fbd113a778cf06ac0c01cdc8e00e1c300e774
- e818b0115a9a877a9517c99b16e5a2df9cf7c5eb1fb249d9153b68e8fa94e60b
- 7ba3eaee591cc73ab85aeb09d8c02b1e569b9dcaffcbc7c4473f504f939697d2
これらのサンプルのメタデータから、サンプルがドライブシリアル番号「0x2848e8a8」のマシンで作成されたことがわかります。このシリアル番号を VirusTotal で調べたところ、「AA」攻撃に関連するサンプルと、他のマルウェアに関連するサンプルの両方を確認できました。
たとえば、2022 年 8 月 15 日に提出されたサンプル beacb63904c2624ae02601f283671b3ef61650109aea3259b63a0aeefe4133fa には、hxxp://88.198.148[.]231/u.exe からバイナリをダウンロードして実行する PowerShell コードが格納されています。
VirusTotal の情報によると、ハッシュが 6161c01fd590c98c6dee4e510ba9be4f574c9cc5c89283dbff6bb79cd9383d70 のこのサンプルは、RedLine の亜種として検出されます(図 8)。
図 8:RedLine サンプルに関する VirusTotal の詳細情報
2022 年 8 月、Qakbot は活動を再開し、「Obama」や「AA」など主要な攻撃を実行しました。興味深いことに、Qakbot による「Obama」攻撃では、この時点で LNK ファイルのメタデータが消去されるようになりました。ただし、ターゲットフィールドは常に、最初の感染チェーンの悪意ある DLL 部分を起動するために使用された JS ファイル、BAT ファイル、または CMD ファイルを指していました(図 9)。
図 9:「Obama」攻撃の LNK ファイル部分のメタデータ
9 月 13 日以降、「BB」攻撃の LNK ファイルで同じ動作が確認されるようになりました。図 10 では、9 月の「BB」攻撃に対応付けられたサンプルに、ドライブのシリアル番号情報がまだ格納されていたことがわかります。
図 10:「BB」攻撃の LNK ファイル部分のメタデータ
また、ドライブのシリアル番号は、5 月と 7 月の「AA」攻撃で使用されたものと一致していることもわかっており、このことから、「AA」と「BB」が同じグループによって管理されていることを示しているとも考えられます。さらに最近では、「BB」のサンプルでもメタデータが消去され始めました。
Gamaredon
2022 年 6 月、InQuest 社が、GlowSand という新しい攻撃者に関するレポートを発表しました。GlowSand は、第 2 段階のペイロードをダウンロードして実行するための悪意のあるドキュメントと LNK ファイルを添付したフィッシングメールを使用して、ウクライナの組織に攻撃を仕掛けていました。
Talos は、このレポートに掲載されている LNK ファイルのメタデータコンテンツを分析することにより、Gamaredon APT に関連付けられているファイルに、その LNK ファイルが生成されたマシンの ID を関連付けました。さらに Talos は、このメタデータに基づいて、2022 年 8 月 8 日頃に開始された、ウクライナの組織を標的とした新しい攻撃を突き止めました。これについては、別のブログ記事で説明しています。実際、2017 年 2 月に報告された Gamaredon ファイルには、Talos の調査で見つかったファイルと同じ LNK メタデータが格納されていました。
9 月 6 日、ハンティング中に新しいサンプル群が特定されました。メタデータを調べ、これらのサンプルも以前の Gamaredon 攻撃に関連付けました。ただし、このときのサンプルには興味深い特徴があります。プエルトリコの Microsoft 開発部門に関連する埋め込みデジタル署名だったのです。
- 7f66f4411983001d29236c5d3fb4ff26f01b5742badca1db8d49264c01ba506c
- 1b2ed05f488f8439688a02cc6ef84f939d16169117b489219b688a3ea482e5ed
- 6ce64dedbe81c36aef38fd2d567f6ab9737df708591dc2f0cafa56db26a1d043
- 1e0b92485e09ac970ae38214fb5c7407f73027ada47ea697017e49cacb576908
サンプルの一部は 2016 年と 2017 年の Gamaredon 攻撃に関連していますが、VirusTotal ではほとんど、またはまったく検出されませんでした。このことから、この埋め込みデジタル署名は、ウイルス対策製品による検出を回避するために追加されたものと考えられます。
デジタル署名「Microsoft Operations Puerto Rico1」を手がかりに、同じ手法を使って多数の LNK ファイルを見つけることができます。ここで興味深い点は、LNK ファイル形式にはデジタル署名に関する規定がないことです。つまり、デジタル署名はおそらくウイルススキャンを回避するためのゴミデータに過ぎません。これは、多くのマルウェアファミリで使用される一般的な手法です。
Bumblebee と IcedID および Qakbot の関係
LNK ファイルのメタデータは、マルウェアグループの活動を経時的に追跡することに加えて、さまざまな攻撃者間の関係を特定するのに役立ちます。研究者は、Bumblebee と他のマルウェアファミリとの関係を以前に特定しています。Talos は LNK メタデータを調べることによって、これを独自に確認しました。
2022 年 8 月、あるユーザーが自身のユーザー名「Lamar」を含むファイルパスを使用して、テストリンクファイルを VIrusTotal に送信しました。この LNK ファイルは、以前の IcedID 攻撃で使用された LNK ファイルを生成したマシンと同じマシンで作成されていました。数時間後、同じユーザーがハッシュ e89cd1999517b47805106111e14de4a03669cac30adb3b3304655febce25955f を持つ別のファイルを送信しましたが、このときはユーザー情報がサニタイズされており、BAT ファイルと DLL ファイルを格納した ZIP ファイルに格納されていました。この DLL ファイルは IcedID ボットでした。
IcedID 感染につながる LNK ファイルと Bumblebee 攻撃で使用された LNK ファイル(いずれの LNK ファイルも同じドライブシリアル番号を使用)との相関関係も確認されています。
図 11:同じメタデータを共有する Bumblebee と IcedID のサンプル
VIrusTotal でこれらのハッシュの関係を検証することにより、図 11 の LNK ファイル 9c7e01c2c39dadc020a0cf8dc74b62e6453b56413f09705b4ad4d391981f5a3f が Bumblebee DLL になり、3cca8d1b4cfe0ebcf105621700454d0285ef1b44dfed3e3abf70060bb62aa5b4 などの他のハッシュが IcedID DLL になることがわかります。どちらの場合も、ParsingPath フィールドのユーザー名は同一です。
同様の手法によって、Bumblebee と Qakbot の関係を確認できました。Qakbot の調査中、「Obama」攻撃に関連するサンプルが見つかりました。LNK 情報を保持しており、ドライブシリアル番号は「300D-05E9」でした。後になって、これと同じシリアル番号が Bumblebee 感染につながる LNK サンプルで確認されています。
図 12:同じメタデータを共有する Bumblebee と Qakbot のサンプル
たとえば、図 12 のサンプル 2738ee3f181994cca5d9ea19359b8142981583d17563934ab3212eefe13af3ff は Bumblebee DLL になります。
まとめ
サイバー攻撃の現場では、攻撃者に関する新しい情報がセキュリティを強化するうえで重要な役割を果たすことがあります。このブログでは、LNK ファイルを用いてメタデータの価値を実証しましたが、これと同じ概念がメタデータを含む他のファイル形式や、ペイロードにメタデータの使用の痕跡を残す攻撃ツールにも適用できます。
メタデータを通じて漏洩した情報を分析、追跡し、この情報を他の攻撃者の戦術、手法、手順と関連付けることで、より適切な検出方法を考案し、将来の行動を予測して攻撃に備えることができます。
カバレッジ
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。この脅威の Snort SID は、61099 ~ 61102 および 300367 ~ 300368 です。
また、次の ClamAV 検出もこの脅威に有効です。
- Lnk.Dropper.Agent
- Lnk.Trojan.Qakbot
- Lnk.Trojan.BazarLoader
- Lnk.Downloader.Agent
- Win.Dropper.Agent
IOC(侵入の痕跡)
この脅威に関連する IOC は、こちらをご覧ください。
本稿は 2023 年 01 月 19 日に Talos Group のブログに投稿された「Following the LNK metadata trail」の抄訳です。