- 2019/10/17
- セキュリティ
脅威ハンティングのための仮説を立てる方法
Post by : MOR LEVI
近年ますます、セキュリティチームは、防御における欠陥を特定しそれを補うために、脅威ハンティングに興味を持つようになっています。多数の攻撃が自動化されたセキュリティにより阻止される一方で、セキュリティをすり抜けることができる攻撃は、しばしば非常に大きな被害をもたらすものとなっています。ここで、セキュリティハンターの出番となります。セキュリティハンターは、自動化されたツールが現時点ではまだ特定できないか、または今後も一切特定できないような、システム内で発生している攻撃を見つけようとします。
このようなアプローチは、防御や可視性にとって大きな価値を持ちますが、多くの人々は、脅威ハンティングのプロセスは要件が厳しすぎると考えています。セキュリティチームは、入って来る膨大な量のデータに圧倒されつつも、環境を理解しようと苦闘しています。しかしそもそも、脅威ハンティングではどんな手法を使用するのでしょうか?そして、脅威ハンティングは、どこから始めればよいのでしょうか?
このブログでは、脅威ハンティングのための仮説を立てる方法について解説します。脅威ハンティングにおける成功や進歩は、どちらかと言えば微妙なものに感じられるかもしれませんが、脅威ハンターが強固でインテリジェントな仮説を構築するならば、脅威ハンティングは価値を高め、可視性を向上させることができるほか、自分自身を改善することが可能になります。
仮説を立てる
脅威ハンティングのプロセスは3つの段階に分けられます。すなわち、「実行可能で現実的な仮説の構築」、「仮説の実行」、そして「完成するまでテストすること」の3つです。脅威ハンティングはツールの利用により支援されますが、実際の仮説を構築することは、結局、人間による分析に行き着きます。観測、インテリジェンス、経験に基づいて構築される仮説を立ち上げることが重要となります。また、仮説は、実行可能であり、テスト可能であり、かつ常に調整が可能でなければなりません。
脅威ハンターは、可能性のある脅威を特定し、その詳しい調査を開始するために、業種や環境に基づいて考慮できる必要があります。さらに、脅威ハンターは、仮説が、利用可能にしたデータに基づいて、実行可能でありかつテスト可能な結果をもたらすことを保証する必要があります。最も効果的で有効性の高い脅威ハンティングを作成するためには、IoC(Indicator of Compromise、痕跡情報)、環境要因、そして業界での経験を組み合わせることが最善です。
これを正しく行うことは、組織のセキュリティに対して非常にプラスの影響を与えます。SANSによれば、調査対象となったITプロフェッショナルのうち75%が、アグレッシブな脅威ハンティングにより自社のアタックサーフェスを縮小できたと回答しています。 では、強固で実行可能な仮説の構築を始めるにはどうすればよいでしょうか?
静的なIoCか、それとも脅威フィードか:両立が不可能な理由
脅威ハンティングを開始する場合、最も簡単な方法が、外部インテリジェンスを利用することです。外部インテリジェンスには、脅威ハンターが各自の環境で脅威を特定するために利用できる、あらゆるタイプのオープンソースインテリジェンス(OSINT)が含まれます。また、外部インテリジェンスは、IoC(Indicator of Compromise、痕跡情報)、脅威レポートやブログ、各種のツールでもありえます。
IoC(Indicator of Compromise、痕跡情報)の利用
IoCとは、システム上の悪意あるアクティビティを特定できる可能性を持つフォレンジックデータのことです。言い換えれば、IoCは、脅威ハンターに潜在的な脅威を警告するレッドフラグです。
外部インテリジェンスにとって一般的なIoCには、レジストリキーやIPステータスドメインのような静的なIoCが含まれます。これらのIoCが存在するかどうかを特定する最良の方法は、ファイアウォールやアンチウイルス製品を使ってチェックすることです。たとえば、「このドメインはこれまで組織によりアクセスされたことがあるか?」という質問をすることで、自社システムが悪意ある外部サーバーと通信したことがあるかどうかについて貴重な情報を得ることができます。
脅威ハンティングの初心者にとって最も一般的な10種類のIoCを下記に示します。
- アウトバウンドネットワークトラフィック:ネットワーク上に疑わしいトラフィックパターンが存在する場合、それは何かがおかしくなっているサインである可能性があります。たとえば、多くの種類のマルウェアは、そのアクティビティの一環として、しばしばC2サーバーと通信します。
- 特権ユーザーアカウントのアクティビティ:特権ユーザーが自分の通常の行動を変化させた場合、それはアカウント乗っ取りのサインである可能性があります。
- 地理情報:地理情報は、業界全体(特に金融業界)で、不正行為を示すフラグとして使用されます。ユーザーが通常のパターンとは全く異なる場所からログインしている場合、それは侵入者がそれらのユーザーアカウントにアクセスしている兆候である可能性があります。
- ログイン試行:不正なユーザー名やパスワードを使用して繰り返しアカウントへのログインが試みられているか、または営業時間終了後にログインし特権ファイルへのアクセスが行われた場合、それは悪意あるユーザーを示す兆候である可能性があります。
- データベースの読み取り:攻撃者がシステムに侵入した場合、多くの場合データの抽出を試みます。これは、大量のデータベースの読み取りを生成するため、このようなアクティビティにはフラグを立て、業務としては異常なものであると見なす必要があります。
- HTML応答:大量のデータをWebアプリケーションから抽出しようとするSQLインジェクションを特定する良い方法として、HTML応答のサイズを調べることが挙げられます。たとえば、応答のサイズが数MBであった場合、それは何かがおかしいという兆候です。通常の応答サイズは、せいぜい200KBくらいです。
- 特定ドメイン内の単一ファイルがリクエストされる:攻撃者は、特定ドメイン内の単一ファイルを検索する場合があります。この場合、攻撃者は、リクエストごとにURLを変更しますが、1つの同じファイルを検索し続けます。ほとんどの個人は、特定ドメイン上の異なるURLで、数百回も同じファイルをクエリすることはないため、これは疑わしいアクティビティであると見なせます。
- ポート:アプリケーションが特定のポートを使用して異常なリクエストを行っているか、または滅多に使われないポートを使用して同様の行為を行っている場合、それは攻撃者の仕業であることを示す明らかな兆候です。
- レジストリの変更:多くのマルウェアにとって、パーシステンスの作成は重要な目標です。レジストリに対する通常と異なる変更は、トラブルを示す大きなサインです。
- DNSクエリ:DNSクエリは、C2サーバーと通信する場合に頻繁に使用されます。多くの場合、このトラフィックには特徴的なパターンがあるため、時間が経つほど検出が容易になります。
IoCを利用することの欠点は、すべての攻撃が、静的なIoCを示すようなやり方で現れるわけではないということです。攻撃手法は常に進化しています。高度な攻撃は、ファイルレスマルウェア、盗まれたクレデンシャル、LOLbinsなどを使用することで、このような検知方法をすり抜けるように設計されています。
さらに、IoCは過去の攻撃に基づいているため、新しい攻撃に関してIoCは利用できません。このため、新しい攻撃の場合、静的なIoCを使用することでそれを検知できる見込みはありません。つまり、防御においては、静的なIoCを使用するだけでは十分ではないのです。とは言え、それらはSoCに関する適切な基礎を提供するほか、自社環境の把握を始めたばかりの新米アナリストにとっての恰好な基礎を提供します。
たとえば、静的なIoCを使用すると、お使いのネットワーク上のアプリケーションが、最近発見された悪意あるドメインに接続しているかどうかに関する仮説を立てることができます。これは、単純なIoCの使用例です。これにより、「自社環境にあるアプリケーションは、この悪意あるドメインに接続しているか?」という質問が行えます。この仮説を裏付けることができた場合、自社のセキュリティチームに連絡し、この問題を解決するために必要なステップを実施する必要があります。
脅威レポートやブログを読む
脅威レポートやブログはIoCよりも直接的ではありませんが、特にサイバー状況に関する個人的な知識を高める上で、それらは非常に有益です。脅威レポートやブログを読むことで、他の企業がエクスプロイトにいかに対処しているか、どのようなタイプのマルウェアが特定の業界で確認されているか、どのような新しい手法が防御や攻撃に使用されているかなどの情報が得られます。
当社としては、良く知られた研究チーム(Nocturnus、SecureList、Spider Labs、Ciscoなど)が発行しているレポートを読むことを推奨します。これらを通じて、サイバー脅威が、あなたの業界や組織にいかなる影響を与えるかを調べるようにしてください。各脅威レポートを読むたびに、組織や仕事に適用できる少なくとも1つのセキュリティ上の推奨事項を引き出すことを目標にしてください。
たとえば、研究チームNocturnusが発行している新しいUrsnifのバリアントに関する最新のレポートを読んだとします。あなたは本レポートを通じて、当該マルウェアが、Microsoft Outlook、Internet Explorer、Mozilla Thunderbird用のメールスティーリングモジュールを使用して、標的マシンから情報を収集していることを知ることができます。また、同マルウェアは、Anti-PhishWallやAnti-Rapportモジュールを使用して、一部のセキュリティ製品をすり抜けることができることも知ることができます。このレポートを念頭に置いて、自社環境に関してどのような質問を行えるでしょうか?あなたの会社のシステムはRapportやPhishWallを使用しているでしょうか?これらのまたは同様のメールスティーリングモジュールがお使いのマシン上に導入されているかどうかを、あなたはどうやって確認できるでしょうか?
YARAやCybereason Defense Platformのようなツールを利用することで、システム上で悪意あるドメインを見つけるための規則を定義できます。YARAを使用すると、組織にとっての脅威として特定したマルウェアのサンプルに基づいて、自社独自のカスタム規則を作成できます。
自分独自の仮説を構築することも重要ですが、多くの上手くまとめられた脅威レポートには、独自のセキュリティ推奨事項が示されています。
ソーシャルメディアを利用する価値
ソーシャルメディアチャネルは、最新の情報を得るためには現時点で不可欠の優れた方法です。脅威レポート、または特定の行動やIoC関する単一のツイート、あるいはその他の方法のうちどの形式で提供されるかどうかにかかわらず、多くのソーシャルメディアチャネルは有益な情報を含んでいます。これらのチャネルを見つけるには、#InfoSecTwitterで検索するか、サブレディットr/cybersecurityに参加するか、またはCybersecurityのLinkedInグループに参加してください。
DarkReadingのようなソースからAmit Serper、SwiftOnSecurity、Brian Krebs、Graham Cluley、ThreatPost、InfoSec Magのようなリサーチャーに至るまでありとあらゆるものを取り上げている一部の有益なTwitterアカウントは、学習を開始するために絶好の場所です。@checkmydumpのようなTwitterハンドルは、パスワードのダンプを監視しており、それを積極的にTwitter上にアップしています。
ソーシャルメディアをそれ以外のメディアから差別化している要因、知識の即時性です。新しいバリアントが発見された瞬間に、あなたはソーシャルメディアのパワーを通じてそれに関する情報を得ることができます。これは、コミュニティ内における重要でタイムリーな最新情報に後れずについて行くための手段です。
たとえば、NotPetyaがウクライナでの攻撃に初めて使用された際に、 Amit Serperは数時間以内にワクチンをツイートしました。ソーシャルメディアがなければ、これほど広範な対象者に、これほど短い時間で情報を伝えることは非常に難しかったでしょう。
Google Dorksを使用したコマンドの特定
Googleは何でも知っています。それは、もちろん脅威ハンティングについても知っています。Google dorkクエリは、高度な検索演算子を使用してGoogleを検索することで、脅威ハンティング時に探している情報をピンポイントで見つける方法です。これは受動的な攻撃手法であると見なされますが、ユーザー名、パスワード、電子メールのリスト、機密情報、さらにはWebサイトの脆弱性を見つけるために使われる手段でもあります。
Public IntelligenceのWebサイトに示されている次の簡単な例を使うと、Google検索を通じてPDFを見つけることができます。
“sensitive but unclassified” filetype:pdf site:publicintelligence.net
これがGoogle Dorksのパワーです。上記のクエリは、publicintelligence.net上に置かれているPDFのうち、文字列“sensitive but unclassified”を含むものを見つけようとします。この方法により、Googleが提供する大規模なデータをふるいにかけ、脅威ハンターにとって有益なものだけをより分けることができます。
たとえば、あなたが自社環境で特定の未知のコマンドを特定した場合、Google Dorksを使ってGitHub全体を検索できます。このコマンドに一致する文字列をGitHubで検索することで、あなたのシステムの攻撃に使われた同コマンドベースの悪意あるツールを発見できる可能性があります。このようなデータを使用して、その脅威に関する詳細を学ぶことができます。
MITRE ATT&CKを使用した脅威ハンティング
MITRE ATT&CKは、フレームワークの1つであり、アナリストに共通言語を提供します。ただし、脅威ハンターにとって、MITRE ATT&CKはそれ以上のものになりえます。MITRE ATT&CKは、高度なパーシステント脅威(APT)に関する手法、戦術、プロシージャ、攻撃者エミュレーション計画のガイドラインを影響する、脅威ハンターにとっての宝庫です。
攻撃者が実行する各ステップを特定するには、攻撃者エミュレーション計画(AEP)を作成する必要があります。MITRE ATT&CKはTTP(手法、戦術、プロシージャ)のリストを提供するため、ユーザーは、攻撃者が一般的に使用する手法、戦術、プロシージャを調べることができます。攻撃の各フェーズを緻密に計画することで、防御者は、攻撃プロセスと、脅威を見つける際の潜在的なレッドフラグをより明確に理解できるようになります。
また、MITRE ATT&CKは、80種類のATPとそれらが標的とする業種のリストを提供するため、ユーザーは、自社環境で最も関連のあるタイプの脅威に関してより深く理解できるようになるほか、それらの脅威に対してAEPを配備できるようになります。
たとえば、医療分野におけるセキュリティチームが、DeepPandaという名前のグループを組織にとって関連性ある脅威として特定したとします。同セキュリティチームは、この情報を利用して、AEPを作成し、組織の環境内で、このグループによる脅威を検索できます。また、MITRE ATT&CKは、DeepPandaが使用する多くの一般的な手法を特定しています。これには、PowerShellスクリプトを使って、プログラムをダウンロードし、ディスクへ書き込まずにメモリ内で同プログラムを実行するという手法が含まれています。脅威ハンターはこれらの知識を利用して、システム上で実行されている悪意あるPowerShellスクリプトが存在するかもしれないという仮説を立てた後、ハンティングを開始します。
MITRE ATT&CKを使用して環境に存在する欠陥を補う方法に関する詳細は、当社のホワイトペーパー、「MITRE ATT&CKを使用して閉ループ型のセキュリティプロセスを作成する5つのステップ」をご覧ください。
内部インテリジェンスの活用
外部インテリジェンスとは対照的に、内部インテリジェンスは通常より複雑であり、過去のインシデントや環境に関する理解に基づいています。成熟度の高いSOCほど、内部インテリジェンスを使って、より良い成果を達成できます。そのようなSOCは、単にバグを修復し防御における欠陥を補うだけでなく、インシデントに関するフォローアップを行うために遡及的な分析を実行します。この分析では、あるイベントが過去に発生した場合に、攻撃者が何を行ったか、そしてシステムを強化し防御を向上させるためにどのような方法が利用できるかが分析されます。
過去のインシデントを利用する
Cybereason Defense Platformによる攻撃ツリーの分析
あなたの組織における過去のインシデントからは学ぶべきことが沢山あります。攻撃が残した痕跡からは、組織の防御に欠陥があることを示すヒントが得られる場合があります。また、攻撃の痕跡は、同様の脅威が存在する場所に関するヒントや、それらがどのように機能するかに関するヒントを提供する場合があります。
Cybereason Defense Platformのような一部のEDRは、ユーザー向けに攻撃の全体的なストーリーを提供できます。これにより、ユーザーは、攻撃をステップごとに分析し、行動的なIoC、TTP、カスタムルールを作成できるようになります。
過去の攻撃で観測された行動やアクションに基づいて、これらの行動が自社の現在の環境にいかなる影響を与えたかを自問してください。あなたはその問題に適切なパッチを適用しましたか?また、セキュリティに無関心なユーザーや、インシデントを引き起こしたユーザーが存在する場合、それ以降、彼らの習慣は変化しましたか?
自分自身に対するテストを行う
次なるステップは、マルウェアを入手してそれを実行することにより、ラボ環境でマルウェアを観測するか、または各自の防御をテストすることです。これにより、マルウェアを直観的に理解できるようになります。
マルウェアのサンプルを検知して入手できる場合、そのアクティビティに関して仮説を立てることができます。ラボ環境において、過去にシステムへの侵入に成功したことのあるマルウェアを実行するか、または自分が興味のあるマルウェアを実行し、その行動を観察します。そして、その行動に基づいて質問を定式化します。
たとえば、最新バージョンのAstaroth Trojanをラボ環境で実行したとします。その実行中に、あなたはその観測を行うことで、それがWMIを使用してパーシステンスを維持していることに気付いたとします。この時点で、あなたは自分が使用しているセキュリティツールがWMIコマンドに関して警告を発しないことを思い出し、その結果、次のような質問をします。すなわち、「どのプロセスがWMIコマンドを生成したか?そして、自分が可視性を持つべき何物かが存在するか?」という質問です。
自社固有のマルウェア分析ラボを立ち上げる方法については、Christophe Tafani-Dereeperの個人ブログに公開されている優れた分析をご覧ください。
また、攻撃者は、mimikatzのようなツールを一般的に利用します。mimikatzのようなツールをラボ環境で実行することにより、よくある攻撃であることを示すような行動が、自社環境で発生することを確認できます。システムがmimikatzに対してどのように反応するかを確認した後、その情報を利用して、実稼働環境でその利用を特定できます。脅威ハンティングにおいて、メモリ内でmimikatzを検知する方法に関する詳細は、Roberto Rodriguezの興味深いブログをご覧ください。
ただし、ラボ環境でマルウェアを構築し実行することは、非常に時間のかかる作業であることに注意してください。この種のアクティビティは、成熟したSOCのみに限定されており、利用可能なアナリストの人数、アナリストのスキルレベル、およびアナリストの処理能力などに依存します。これらのアクティビティを実行するには、アナリストは、マルウェア分析に関するスキルを備えている必要があります。これには、動的分析、静的分析、動的なリバースエンジニアリングに関するスキルが含まれます。マルウェア分析についてLenny Zeltserが詳細に説明した優れたSANSコースとして、FOR610:マルウェアのリバースエンジニアリング:マルウェア分析ツールと手法が挙げられます。
すべてのものを結び付ける
では、優れた脅威ハンティング仮説は何から構成されるでしょうか?ここでの優れた仮説とは、脅威を特定し、自社環境に関する情報を取得し、自分の仮説が正しいか間違っているかを検証するために役立つ質問のことです。これらのすべての目的を満たす必要はありませんが、あなたの立てる仮説は、それが正しいかそれとも間違っているかにかかわらず、常に1つの結論を伴う必要があります。
脅威ハンティング時に考慮すべきその他の事項
- 神話の破壊:自社環境に関する仮説を立てる場合には注意が必要です。仮説を立てる際に、誤った通念があなたのスコープを制限することで、防御における盲点をもたらす可能性があります。
- たとえば、すべてのサービスプロセスがservices.exeにより実行されると仮定してはなりません。同様に、未署名で未知の(ハッシュを持つ)プロセスはすべて本質的に悪意あるプロセスであると仮定してはなりません。
- 適切なスコープを見つけること:明確なスコープが指定された具体的な方法で各自の仮説を定義すること。明確に定義されているだけでなく、実行可能な成功に制限されている具体的な質問を行うために、これらを両立させる必要があります。大まかすぎる仮説は、証明が困難になる可能性があります。かと言って、あまりにも狭すぎる仮説は、さほど有益でない可能性があります。
- たとえば、「悪意あるIPに接続しているすべてのプロセスを表示せよ」という仮定は大まかすぎます。このような仮説には、悪意あるIPに接続しているあらゆるプロセス(悪意のないプロセスを含む)が含まれてしまいます。そうではなく、「悪意あるIPに接続しているすべてのプロセスを表示せよ。ただし、悪意あるアクティビティを示していないプロセス(ブラウザやDNSプロセスなど)は除く」のような、より具体的な仮説を使用する必要があります。こちらは、より具体的な仮説であり、容易に検証が可能であり、より重要で、よりターゲットが絞られています。
仮説を作成した後の次なるステップは、その仮説を実行し、そしてそれを完成するまでテストすることです。実行や解決が行えないような仮説を作成してはなりません。
とにかくやってみよう
脅威ハンティングは、「実行可能な仮説の構築」、「同仮設の実行」、そして「完成までテストすること」という3つのステップに分けられます。新米の脅威ハンターにとっては、最初のステップが最も手強いものとなる可能性があります。
本ブログ記事で紹介したヒントを利用することで、小さな仮説の構築から始めて、次第により大きな仮説の構築を目指すことを推奨します。初めての脅威ハンティングは、複雑で効果の高い仮説である必要はありません。たった1つのIoCを含む、自分が完全に理解していることから始めて、それを足場に知識を構築してください。
より経験を積んだ脅威ハンターの場合、IoCを環境に関する知識や業界での経験と組み合わせることで、よりターゲットを絞った仮説を作成することをお勧めします。最も重要なことは、仮説を作成した後、その仮説の真偽にかかわらず1つの結論に到達することです。このプロセスを完了した後、以前よりも多くの知識を使って同プロセスを再開します。
脅威ハンティングのための仮説を構築する上での最も重要な原則として、「仮説は実行可能であり、かつ常にテスト可能であり、継続的に調整が可能でなければならない」ということを忘れないでください。
ホワイトペーパー「攻撃に対抗する力を取り戻す」
高度標的型攻撃(APT攻撃)の脅威はあらゆる人々に広がってきています。しかしながら、脅威インテリジェンスを活用し、敵を知ることにより、先手を打って脅威ハンティングを行うことで、高度標的型攻撃(APT攻撃)を撲滅し、攻撃に対抗する力を取り戻すことができます。本書を通じて、高度標的型攻撃(APT攻撃)に立ち向かう秘策を知ることができます。
https://www.cybereason.co.jp/product-documents/input/?post_id=618