指標(インジケーター)とは主張であって事実ではありません。そして、自組織のネットワークを対象とするアドバイザリこそ、検証せずに鵜呑みにする余裕が最もない代物です。
私はインシデントレスポンスと脅威インテリジェンスの仕事を2年間続けてきましたが、他のあらゆる習慣を手放すことになったとしても唯一残したいと思う習慣が、実は最も地味なものです。それは、脅威インテリジェンスの情報を、それが説明していると主張する対象そのものと照合するまでは、その情報に基づいて行動しないということです。これは時間がかかり、面倒な作業です。ほとんど誰もやりません。なぜなら、検証には本来フィードが節約してくれるはずだった時間そのものがかかるからです。だから私たちはレポートを読み、うなずいて、次に進んでしまいます。たいていの週はそれでうまくいきます。うまくいかなかった週こそが記憶に残るもので、私が何度も思い返すのは、完全に自信満々な調子で語っていたフィードが、実は逆のことを言っていたあの一件です。
フィードが誤っていたクラスター
私はあるローダー型マルウェアの背後にあるインフラをマッピングしていて、商用プラットフォームを使って単一のサービスポートを一斉にスキャンしていました。すると返ってきたのはホストのクラスターで、すべてに同じタグ「Chalubo RAT」が付いていました。私を立ち止まらせたのはそのタグ自体ではなく、メタデータでした。クラスター内のすべてのホストが、日付単位まで一致する同一の「初回確認日」を持っていたのです。
実際のインフラがそこまできれいに揃うことはまずありません。攻撃者は数週間かけて、手が空いたときに少しずつホストを立ち上げていくものです。クラスター全体が同一の初回確認日を共有しているというのは、ほとんどの場合、誰かが実際にそのホストを稼働中に確認した日ではなく、フィードのパイプラインがそのバッチを取り込んだ日を示しているにすぎません。この時点で、私には信用できないものが2つありました。マルウェアファミリー名と、出来すぎた日付です。これを解決する一番手っ取り早い方法は、フィードを閉じてマルウェアそのものを実際に見ることでした。
ChaluboはLinux向けのボットネットです。SSHへのブルートフォース攻撃を行い、DDoSトラフィックを送りつけます。ところが私の手元にあったのは、Windows向けのシェルコードローダーであるDonutLoaderの亜種で、ランサムウェア侵入の最前線に位置するタイプのものでした。プラットフォームも役割もまったく違います。一方をもう一方だと呼ぶのは、単なる惜しい間違いではなく、カテゴリーそのものを取り違えた誤りです。
そこで私はこれを隔離環境(ラボ)で実行させ、通信を記録し、C2(コマンド&コントロール)をマッピングして設定情報を抽出しました。それは独自のプロトコルを話していました。ペイロード配信は専用チャネルの1つで行われ、ステガノグラフィを使ったビーコンは別のチャネルで行われ、10台のホストからなるクラスターにわたっており、設定フォーマットもChaluboとはまったく関係のないものでした。誤ったタグが付いた原因は、蓋を開けてみれば単純なものでした。フィード側のそのポートに対する検知ルールは、ポート番号とゆるいパターンマッチだけをキーにしていたため、私のローダーがそれに引っかかり、取り込み日が張り付いたラベルがバッチ全体に伝播してしまったのです。
これはベンダーを非難する話ではありません。インターネット全体を対象にマルウェアファミリーをフィンガープリンティングするのは、本当に難しい作業です。実害が生じるのはその一歩先、つまり読者がそのタグをどう扱うかという段階です。それを鵜呑みにすれば、Windows向けランサムウェアの前段階マルウェアが静かにネットワーク上に居座っている間、丸1週間かけてLinux向けDDoSボットネットへの対策を固めることになりかねません。脅威の見立ても、優先順位も間違っています。このフィードは単に空振りだっただけではありません。おなじみのロゴを添えた絶対的な自信とともに、対応の方向性そのものを誤った方向へ導いたのです。タグ自体には何もおかしなところは見当たりませんでした。それが誤りだと語っていたのは、ファイルそのものだけでした。
連邦政府のアドバイザリにも見られた同じ落とし穴
しばらくの間、私はこれを商用フィード特有の問題、つまり規模を優先して手を抜くベンダーからインテリジェンスを購入する際に払う代償として片付けていました。ところがその後、私たちの誰もが無料で入手できる最良の情報源の一つでも、まったく同じ構図が見つかったのです。
今年の初め、私はFBIとCISAによる共同アドバイザリを読み込んでいました。対象はGhost(呼び方によってはCringとも呼ばれる)で、これまでに70カ国以上の組織を襲ってきたランサムウェア集団です。誰もがそうするように、私もまずPDFを開きました。その指標テーブルの見出しは文字どおり「MD5 File Hashes」となっており、14個のサンプルそれぞれがMD5ハッシュのみに紐づけられ、それ以外の情報はありませんでした。MD5は何年も前から破られています。検知の世界がSHA-256に移行した理由もまさにそこにあり、MD5のみの指標では、防御側が実際に使っているツールの半分にすらそのまま取り込めません。
次に私は、同じアドバイザリのもう一つの版を開いてみました。この文書はPDFだけで提供されているわけではなく、機械可読なSTIXバンドルも用意されており、これはTIP(脅威インテリジェンスプラットフォーム)やSIEMに直接取り込めるよう設計されたフォーマットです。同じアドバイザリ、同じ内容のはずが、ファイルが違うだけでまったく別物でした。14個のサンプルのうち6個には、PDFのテーブルにはまったく記載のなかったSHA-256がSTIX側に記載されており、SHA-1やファジーハッシュまで添えられていました。より強力な指標は、最初から公式リリースの中に存在していたのです。ただし、ほとんど誰も開かないファイルの中に埋もれていただけでした。大半の人がするようにPDFだけを読んでいると、STIXを開いた人よりも弱い検知ルールしか手に入らないことになりますが、その違いに気づく手がかりはどこにもありません。
同じバンドルには逆方向の問題もあり、こちらのほうがむしろ立ち止まって考える価値があります。バンドルの関係性情報の奥深くには、APT41、Winnti、Wicked Pandaと名指しする脅威アクターのオブジェクトがあり、Ghostの複数の指標に紐づけられていました。アドバイザリの本文にはAPT41という名前は一度も出てきません。それどころか、わざわざ「帰属先は時間とともに変動する(variable over time)」と表現しています。この糸をたどっていくと話は崩れます。GhostをAPT41に結びつけたベンダーはこれまで一つもなく、このオブジェクトは人間のアナリストの判断ではなく、自動エンリッチメント処理の産物のように見えます。STIXが嘘をついているわけではありません。問題はもっと微妙なところにあります。これをそのままTIPに取り込めば、誰も実際には下していない国家主導の攻撃という帰属判断を、知らぬ間に受け継いでしまうことになるのです。一方のファイルは良質なデータが欠けており、もう一方のファイルは誰にも検証されていないデータを抱えていました。どちらの問題も、実際に中身を見なければ気づけません。
そしてこれは一つの国に限った話でもありません。しばらくして、私はGAMYBEARというGo言語製バックドアを解析しました。これはUAC-0241がウクライナの学校や国家機関を標的に用いたもので、CERT-UAのアドバイザリにまとめられています。良いレポートで、挙動そのものの捉え方は的確でした。しかし、実際のローダーを調べると、アドバイザリの内容には15カ所を超えるバイナリレベルの修正点があることがわかりました。誤ったコンポーネントに帰属させられていた永続化メカニズム、実装の壊れたTLS、そして実際のサンプルと照合して初めて有効だとわかった一部の指標などです。こうした細部こそが、攻撃者がファイル名を変更した後でも検知ルールを生かし続ける鍵になります。商用ベンダー、連邦機関、外国のCERT。三者三様の情報源はいずれも正確ではあるものの、多くの人が読む版には完全な真実とは異なる何かが含まれていました。
今、私が変えていること
この経験から得た教訓は、「脅威インテリジェンスをもっと信じろ」でも「もっと疑え」でもありません。もっと的が絞られたものです。指標(インジケーター)とは一つの主張であり、その主張に防御態勢を賭ける前には必ず検証すべきだ、ということです。とりわけ、それが自組織のネットワークを対象とするアドバイザリである場合はなおさらです。なぜなら、そのアドバイザリの死角は、静かにそのまま自分自身の死角になってしまうからです。これを日常業務として組み込むコストは十分に安いものです。もし来週、検知プログラムを新たに立ち上げるとしたら、初日から必ず取り入れる点が3つあります。
自動生成されたマルウェアファミリーのラベルは、何か具体的な裏付けが得られるまでは推測にすぎないものとして扱うべきです。初回確認日がずらりと同一で並んでいるのは、攻撃そのものの記録ではなく、パイプラインについての事実を語っているにすぎません。アドバイザリが複数のフォーマットで提供されている場合は、PDFだけで満足せず、必ず機械可読な版も開くべきです。なぜなら、構造化されたファイルには強力な指標と未検証の指標の両方が含まれている傾向があり、そのどちらも確認しておく必要があるからです。そして、本当に重要な案件については、「対応済み」と言い切る前に、実サンプルを自分たち自身の検知基盤に通して確認すべきです。指標と、実際に発報する検知ルールとの間にあるギャップこそ、攻撃者がまさに好んで潜む場所なのです。
私は今でも毎週、この3種類すべての情報源に頼っていますし、そのどれもを擁護する立場です。情報源そのものが問題だったことは一度もありません。検証こそが常に安上がりな作業であり、それを省略できると考えたことこそが、高くついた過ちだったのです。レポートとは、そこから作業が始まる出発点であって、そこで作業が終わる終着点ではありません。
これら3つの事例の詳細な調査結果はすべてGitHub上で公開しています。DonutLoaderのプロトコル分析、Ghostの検知コンテンツ、そしてGAMYBEARのリバースエンジニアリングノートとルールで、それぞれ個別のリポジトリにまとめてあります。
本記事はFoundry Expert Contributor Networkの一環として掲載されています。
参加をご希望の方はこちら