OpenCTIにおける高度なフィルタリング機能のご紹介
CTIデータベースは通常、膨大で、さまざまなソースから取り込まれた複雑で相互依存するオブジェクトで構成されています。このような困難な状況において、サイバーアナリストは、必要なデータを正確かつ簡単にターゲットする必要があります。そのため、フィルタリング機能は、効率的なCTIツールの基盤となります。OpenCTIは、データの探索、調査、ピボットに関する強力な機能を提供していますが、フィルタリング機能には制限があり、次のレベルに引き上げるためには大幅な改善が必要でした。
OpenCTI 5.12以降、新しい演算子('空ではない'や'で始まる'など)の導入、ブール演算モード(and, or)の切り替え機能、そして間もなくほぼすべての既存属性でフィルターを入れ子にする機能により、複雑なフィルターを構築できるようになりました。

フィルターが適用されたOpenCTIのレポート一覧

OpenCTI 5.12以降で可能なフィルター組み合わせの例
必要とされた改善
OpenCTI 5.12以前は、フィルター機能に制限がありました。
- エンティティの属性(作成者や名前など)の固定リストにのみフィルターを追加できました
- 値やフィルター間のモードは静的でした(フィルター間は'and'、同じフィルターの値間は'or')
- 使用可能な演算子は、等価性テストと数値比較に限定されていました

OpenCTI 5.12以前で可能だったフィルターの例
これらの制限により、以下のようなフィルターは単純に表現不可能でした:
- (レポートタイプ = 脅威レポート) OR (ラベル = マルウェア)
- (エンティティタイプ = レポート) AND (マーキングが空)
- 名前に'blackmail'を含む
- '参加者'が空
さらに、一部のフィルターは相互依存していましたが、インターフェースとフォーマットはこの依存関係を明確に示していませんでした。これは、一部のウィジェットのフィルター組み合わせ(リレーションシップタイプと関連エンティティ)の場合に当てはまりました。
最後に、基盤となる実装では、改善の余地が十分ではありませんでした。この機能を私たちが望むスケールで成長させるには不十分でした。
OpenCTI 5.12の新しいフィルタリング機能
And/orモードの切り替え
モードは、フィルターと値の間に適用される論理リンクです。'and'を使用すると、オブジェクトはフィルター全体に一致するために、フィルターで定義されたすべての値に一致する必要があります。'or'では、1つの値のみが必要です。

値間で'or'モードを使用したフィルターの例
複数のフィルターが設定されている場合、フィルター間にもモードを適用する必要があります:'and'では、すべてのフィルターに一致するオブジェクトのみが返され、'or'では少なくとも1つのフィルターに一致するオブジェクトが返されます。
OpenCTI 5.12では、モード(and/or)を直接クリックして変更できるようになりました。これにより、さまざまな方法でフィルターを組み合わせることができます。


すべてのモードを切り替える前と後のフィルターの例
より多くの演算子
演算子は各フィルター内で定義され、オブジェクト内の値とフィルター値との比較方法を表します(たとえば、値はフィルター値よりも'大きい'必要があるなど)。
OpenCTI 5.12では、より多くの演算子にアクセスできます。たとえば、属性に値があるかどうかを確認したり、文字列が特定の単語で始まるかどうかをテストしたり、特定のフレーズが含まれているかを確認したりできます。
利用可能な演算子は次のとおりです:
- すべての属性:等しい、等しくない、空、空ではない
- 日付と数値:より大きい、以上、より小さい、以下
- 文字列:含む、含まない、で始まる、で始まらない、で終わる、で終わらない

異なる演算子を使用したフィルターの例
相互依存フィルター
インターフェースは、特定のタイプのリレーションシップを持ち、特定のエンティティとの関係を持つすべてのエンティティをターゲットとする新しい'〜に関して'フィルターなど、相互依存フィルターの表示と選択を可能にするように設計されています。

'〜に関して'フィルターの編集ボックス
たとえば、'〜に関して リレーションシップタイプ = located-at、エンティティ = フランス'は、フランスに位置するすべてのエンティティを返します。この新しいフィルターの詳細については、ドキュメントを参照してください。

'〜に関して'フィルターの例
詳細情報については、ドキュメントを参照してください:Filters knowledge — OpenCTI Documentation
次のステップ
今後数か月間、重要で待ち望まれていた機能とともに、フィルタリング機能の改善を続けていきます。
UIでの任意の属性でのフィルターリスト
5.12 APIでは、プラットフォームに存在する任意の属性でエンティティのリストをフィルタリングできます:フィルタリング可能なフィールドのリストはもはや制限されていません。たとえば、エンティティにmodified_dateフィールドがある場合、この日付でフィルターを作成することが可能になりました。
この機能は、今後のリリースでプラットフォームのユーザーインターフェースに追加される予定です。
これはリストのフィルタリングの場合のみであることに注意してください。ストリーム、トリガー、フィード、TAXIIコレクション、プレイブックで選択できるフィルターは制限されています。
UIでの複雑なフィルターの入れ子
また、異なるレベルでフィルターを入れ子にし、ユーザーインターフェースで直接、非常に複雑なフィルタリングスキーマを作成することも可能になります。

OpenCTIの5.12以前と以降のフィルター形式と可能な入れ子
技術的洞察
技術面での実装方法に興味がある方のために、詳細をいくつか紹介します。
新しい再帰的フォーマット
古い形式は、キー('エンティティタイプ'など)と1つ以上の値('レポート'や'マルウェア'など)を持つ単純なフィルターのリストでした。モードは暗黙的でした:フィルター間は'or'、特定のフィルター内の値間は'and'でした。
新しい形式では、フィルターは再帰的なフィルターグループに構造化され、各グループにはフィルターまたはネストされたフィルターグループが含まれます。ブールモードと演算子はフィルターとグループに明示的に設定され、変更可能で、あらゆる組み合わせが可能です。

入れ子になったフィルターを持つクエリの例
新しいロジックエンジン
新しいフィルター形式は、汎用ロジックエンジンで処理する多くの可能性と組み合わせを開きます。これにより、Elasticクエリをその場で作成したり、OpenCTIイベントストリーム内のSTIXオブジェクトに対して直接フィルターをテストしたりできます。
APIでの破壊的変更
ご想像のとおり、これらの変更は軽いものではありませんでした。フィルターはOpenCTI全体に存在し、ダッシュボードやナレッジビューからTAXIIフィードや通知トリガーまで及びます。
この新しい形式を利用するためにAPIを更新しましたが、これは当然、OpenCTI Pythonクライアントとさまざまなコネクタに影響を与えました。
さらに、これらの破壊的変更は、OpenCTIと連携するために作成したスクリプトやコードにも影響します。5.12の移行プロセスは文書化されており、わかりやすいものです。
継続的な取り組み
OpenCTI 5.12は、日常業務と複雑なタスクの両方に対応する、汎用性が高く強力な新しいフィルター形式とともに、データフィルタリングに関する大幅な改善を提供します。
OpenCTIのフィルタリング機能への取り組みを継続するため、今後のリリースで多くの改善が期待できます!
この記事が、OpenCTIの新しい高度なフィルタリング機能を最大限に活用する方法を理解するのに役立つことを願っています。ご質問、コメント、フィードバックがございましたら、お気軽にSlackにご参加ください!
続きを読む
関連トピックとインサイトをご覧ください

