Solorigate アクティビティのハントに使用される Microsoft オープン ソース CodeQL クエリ

更新:マイクロソフトは、SolarWinds のサプライ チェーンを侵害し、他の複数の組織に影響を与えた国家レベルのサイバー攻撃の背後にある脅威アクターに関する知識を拡大するために、パートナーおよび顧客と協力し続けています。 Microsoft はこれまで攻撃者の主要な指定として「Solorigate」を使用していましたが、今後は、攻撃者が使用するマルウェアの例ではなく、巧妙な攻撃の背後にある攻撃者に適切な焦点を当てたいと考えています。 Microsoft Threat Intelligence Center (MSTIC) は、SolarWinds、SUNBURST バックドア、TEARDROP マルウェア、および関連コンポーネントに対する攻撃の背後にいる攻撃者をNOBELIUMと名付けました。新しいコンテンツと分析をリリースする際には、NOBELIUM を使用してアクターと攻撃キャンペーンを参照します。

Solorigate 攻撃の重要な側面は、攻撃者が SolarWinds の Orion 製品のバイナリを変更できるサプライ チェーン侵害です。これらの変更されたバイナリは、以前は正当な更新チャネルを介して配布され、攻撃者は資格情報の盗難、権限昇格、ラテラル ムーブメントなどの悪意のあるアクティビティをリモートで実行して、機密情報を盗むことができました。このインシデントにより、組織は、高度な攻撃に対応する準備ができているかどうかだけでなく、独自のコードベースの回復力についても考える必要があります。

マイクロソフトは、業界全体でセキュリティ プラクティスと体制を改善するために、透明性をリードし、インテリジェンスをコミュニティと共有することが重要であると考えています。このブログでは、コードベースをレビューする旅を共有し、1 つの特定の手法を強調します。それは、 CodeQLクエリを使用してソース コードを大規模に分析し、コードレベルの侵害の兆候 (IoC) とコーディングの存在を除外することです。ソロリゲートに関連するパターン。他の組織が同様の分析を実行できるように、この調査で使用したCodeQL クエリをオープン ソース化しています。このブログで取り上げるクエリは、構文要素 (名前、リテラルなど) または機能のいずれかにおいて、Solorigate インプラントのソースと類似点を共有するソース コードに焦点を当てるのに役立つことに注意してください。どちらも無害なコードで偶然に発生する可能性があるため、すべての調査結果を確認して、実行可能かどうかを判断する必要があります。さらに、悪意のあるアクターが他の操作で同じ機能またはコーディング スタイルに制約されるという保証はないため、これらのクエリは、Solorigate インプラントで見られる戦術から大きく逸脱する他のインプラントを検出しない可能性があります。これらは、侵害を監査する一連の手法の一部にすぎないと見なす必要があります。

Microsoft は、開発およびリリース サイクルのどの時点でも、サーバーおよびお客様に配布される最終的にコンパイルされたバイナリが悪意を持って変更されていないことを確認するために、長い間整合性管理を実施してきました。たとえば、コンパイラによって生成されたソース ファイルのハッシュが元のソース ファイルと一致することを確認します。それでも、Microsoft では、「侵害を想定する」という哲学に従っています。これは、セキュリティ プラクティスがどれほど勤勉で広範であるかに関係なく、潜在的な敵対者は同じように賢く、リソースを備えている可能性があることを示しています。 Solorigate の調査の一環として、自動化された手法と手動の手法の両方を使用して、ソース コード、ビルド環境、および運用バイナリと環境の整合性を検証しました。

Solorigate 調査中の Microsoft の貢献は、コミュニティベースの共有ビジョンへのコミットメントを反映しています。InfoSec の Github 化.防御者の知識を高め、高度な脅威に対するコミュニティの対応を迅速化するという私たちのビジョンに沿って、マイクロソフトのチームはオープンかつ透過的に情報を共有してきました。侵害の兆候詳細な攻撃分析と MITRE ATT&CK テクニック高度なハンティング クエリインシデント対応ガイダンス、 とリスク評価ワークブックこの事件の間。マイクロソフトは、「Githubification」のビジョンを共有する他のセキュリティ組織が、防御側の洞察と分析を加速するために、独自の脅威に関する知識と防御側の技術をオープン ソース化することを奨励しています。以前に共有したように、攻撃の技術的な詳細、侵害の兆候、および製品ガイダンスに関する包括的なリソースをまとめました。https://aka.ms/solorigate. Microsoft による Solorigate に対する徹底的な調査の一環として、私たちは自分たちの環境を見直しました。以前のように共有、これらの調査により、少数の内部アカウントでの活動が発見され、一部のアカウントはソース コードの表示に使用されていましたが、証拠が見つかりませんでしたソース コード、ビルド インフラストラクチャ、コンパイル済みバイナリ、または運用環境への変更。

CodeQL の入門書と Microsoft による CodeQL の利用方法

CodeQLは強力なセマンティック コード分析エンジンで、GitHub の一部になりました。多くの分析ソリューションとは異なり、2 つの異なる段階で機能します。まず、ソース コードのバイナリへのコンパイルの一環として、CodeQL はコンパイル コードのモデルをキャプチャするデータベースを構築します。インタープリター言語の場合、コンパイラーがないため、ソースを解析し、独自の抽象構文ツリー モデルを構築します。第 2 に、このデータベースは、構築されると、他のデータベースと同様に繰り返しクエリを実行できます。 CodeQL 言語は、データベースから複雑なコード条件を簡単に選択できるようにするために構築されています。

Microsoft で CodeQL が非常に有用であることがわかった理由の 1 つは、特に、この 2 段階のアプローチにより、静的分析を積極的な安全な開発ライフサイクル分析だけでなく、企業全体での反応的なコード検査にも使用できるなど、多くの有用なシナリオが明らかになるためです。 .マイクロソフト全体のさまざまなビルド システムまたはパイプラインによって生成された CodeQL データベースを集中化されたインフラストラクチャに集約し、幅広い CodeQL データベースを一度にクエリする機能を備えています。 CodeQL データベースを集約することで、多数のコードベースを意味的に検索し、ビルドの一部であった特定のコードに基づいて、複数のアセンブリ、ライブラリ、またはモジュールにまたがるコード条件を探すことができます。私たちはこの機能を構築して、新たに記述された脆弱性の亜種を数時間以内に数千のリポジトリを分析しましたが、Solorigate インプラント パターンの初回通過調査も同様に迅速に行うことができました。

これらのコード レベルの IoC を評価する C# クエリのいくつかをオープン ソース化しており、現在はCodeQL GitHub リポジトリで見つけることができます。そのリポジトリ内のSolorigate-Readme.mdには、各クエリの詳細な説明と、それぞれが検索しようとしているコード レベルの IoC が含まれています。また、これらのクエリを調整したり、パターンを見つける際に別の方法をとるクエリを作成したりするための、他のクエリ作成者向けのガイダンスも含まれています。

GitHub は、既存の CodeQL 顧客向けにこれらのクエリをどのように展開しているかについてのガイダンスをまもなく公開します。 CodeQL は、GitHub がホストするオープンソース プロジェクトでは無料です。

CodeQL クエリを使用してコードレベルの IoC を見つけるためのアプローチ

コード レベルの Solorigate IoC を探す際に、2 つの異なる戦術を使用しました。 1 つのアプローチは、Solorigate コードレベル IoC で際立っていた特定の構文を探します。もう 1 つのアプローチは、コード レベルの IoC に存在する手法の全体的なセマンティック パターンを探します。

構文クエリは、作成と実行が非常に迅速であると同時に、同等の正規表現検索よりもいくつかの利点があります。ただし、使用する名前とリテラルを変更する悪意のあるアクターに対して脆弱です。セマンティック パターンは、プロセス名のハッシュ化、C2 サーバーに接続するまでの時間遅延など、インプラントで使用される全体的な手法を探します。これらは大幅な変動に耐えることができますが、作成がより複雑になり、分析時の計算負荷が高くなります。一度に多くのコードベース。

対応する CodeQL クエリを使用したインプラントのサンプル テクニック

これら 2 つのアプローチを組み合わせることで、クエリは、悪意のあるアクターが手法を変更したが類似の構文を使用したシナリオ、または構文を変更したが類似の手法を採用したシナリオを検出できます。悪意のあるアクターが構文と手法の両方を変更する可能性があるため、CodeQL は、私たちのより大きな調査努力の一部に過ぎませんでした。

CodeQL を使用した次のステップ

このブログで共有し、 Solorigate-Readme.mdで説明したクエリは、Solorigate のコードレベルの IoC に特に関連するパターンをターゲットにしていますが、CodeQL には、バックドア機能と検出回避技術をクエリするための他の多くのオプションも用意されています。

これらのクエリは比較的迅速に作成でき、CodeQL データベース全体でパターンをより正確に探すことができ、ソース コードのテキスト検索を使用する場合と比較して、調査結果を手動で確認する労力がはるかに少なくなりました。 CodeQL は強力な開発者ツールであり、この投稿が、組織がそれを使用して事後対応のセキュリティ レスポンスを改善し、侵害検出ツールとして機能する方法を探るきっかけになることを願っています。

今後のブログ投稿では、Microsoft が CodeQL を使用する方法をさらに紹介します。また、CodeQL に基づいて構築されたクエリとユーティリティのオープンソース化を継続し、他のユーザーがそれらの恩恵を受け、さらに構築できるようにします。

参照: https://www.microsoft.com/en-us/security/blog/2021/02/25/microsoft-open-sources-codeql-queries-used-to-hunt-for-solorigate-activity/

コメント

タイトルとURLをコピーしました