Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

IDP シグネチャー言語の機能強化

Junos OS 19.4R1以降、IDPエンジンは署名言語の構成要素をサポートしています。署名構成により、IDP は、誤検知を減らすのに役立つ、より効率的なシグネチャを生成できます。

シグネチャー言語の構成を理解する

IDP エンジン コードでは、以下の構成要素がサポートされています。

  • Depth- 指定されたパターンを検索するパケットの深さを指定します。深度値は相対値ではありません。 例えば、奥行きを100に指定できます。
  • Offset—パケット内のパターンの検索を開始する場所を指定できます。オフセット値は相対値ではありません。 たとえば、オフセットの値を 100 として指定できます。
  • Within-パターンマッチ間に最大Nバイトが存在することを確認します。パターン一致は、常に前の一致に対して相対的です。 たとえば、N の値が 10 の場合です。 この例のように、m01 に一致した後、m02 の一致は 10 バイト以内に発生し、攻撃通知をトリガーします。
  • Distance— IDP エンジンが前のパターンと比較して指定されたパターンを検索する場所を指定できます。これは常に前の一致に対して相対的であり、距離値は負の値になる可能性があります。 例えば、N の値が 10 の場合、m01 が一致すると、m02 は m01 一致の終わりの後に 10 バイト発生する必要があります。
  • Ipopts—リストされているすべてのipoptsには、セキュリティパッケージで対応する異常が定義されており、デバイスまたはIDPエンジンで設定されている場合に検出できます。

    • rr - 記録ルート

    • eol - リストの終了

    • nop - ノーオペレーション

    • ts - タイムスタンプ

    • sec - IP セキュリティ

    • esec - IP 拡張セキュリティ

    • lsrr - ルーズ ソース ルーティング

    • ssrr - ストリクト ソース ルーティング

    • satid - ストリーム識別子

Junos OS 20.2R1 以降、IDP エンジンは署名言語の構成要素をサポートしています。署名構成により、IDP は、誤検知を減らすのに役立つ、より効率的なシグネチャを生成できます。

  • Byte extractバイト 抽出 キーワードは、長さエンコードプロトコルに対するシグネチャの記述に役立ち、パケットペイロードをバイト単位で読み取り、後で使用する変数として保存します。バイト抽出には、相対および非相対の両方を指定できます。チェーン攻撃ごとに使用できるバイト抽出数は任意です。例えば:

    表 1 は、構成要素のフィールドを Byte extract 示しています。

    表 1:バイト抽出出力フィールド

    フィールド

    フィールドの説明

    align

    バイト境界を指定します。

    bitmask

    AND 演算のビットマスク(1~4 バイト)を 16 進形式で指定します。

    bytes

    パケット(1..10)から抽出するバイト数を指定します。

    endianness

    IDP エンジンが読み取るバイトの処理に使用するエンジアン数を指定します。

    multiplier

    読み取ったバイトに対して乗算する値を指定します。

    offset

    IDP エンジンが処理を開始するペイロードのオフセットバイト数を指定します。

    relative

    最後のパターン一致に対するオフセットを使用するかどうかを指定します。

    string

    ストリング・データを解析するデータ・タイプを指定します。

    var-name

    他のルール オプションで参照する変数の名前を指定します。

  • Byte testバイトテスト キーワードでは、運用値でバイトフィールドをテストできます。バイト テストは、相対および非相対の両方を指定できます。 > , < , =, &, ^ ,<=,>= はサポートされている演算子であり、抽出される最大バイト数は 4 です。例えば:

    表 2 は、構成要素のフィールドを Byte test 示しています。

    表 2:バイト テスト出力フィールド

    フィールド

    フィールドの説明

    bitmask

    AND 演算のビットマスク(1~4 バイト)を 16 進形式で指定します。

    bytes

    パケット(1..10)から抽出するバイト数を指定します。

    endianness

    IDP エンジンが読み取るバイトの処理に使用するエンジアン数を指定します。

    negate

    演算子が true でないかどうかを確認します。

    offset

    オフセット変数名またはオフセット値を言及する

    operator

    抽出された値に対して実行する操作を指定します。

    relative

    最後のパターン一致に対するオフセットを使用するかどうかを指定します。

    rvalue

    変換された値は 、rvalue でテストされます。.

    string

    ストリング・データを解析するデータ・タイプを指定します。

  • Byte jumpByte jump キーワードは、長さをエンコードしたプロトコルのために書かれた署名に使用され、ペイロードの特定の部分をスキップして、非常に特定の場所で検出を実行します。バイトジャンプ値は、相対および非相対の両方を指定できます。例えば:

    表 3 は、構成要素のフィールドを Byte jump 示しています。

    表 3:バイトジャンプ出力フィールド

    フィールド

    フィールドの説明

    align

    IDP エンジンによって読み取られるバイトを処理するエンジアン数を指定します。

    bitmask

    AND 演算のビットマスク(1~4 バイト)を 16 進形式で指定します。

    bytes

    パケット(1..10)から抽出するバイト数を指定します。

    endianness

    IDP エンジンが読み取るバイトを処理するエンジアン数を指定します。

    from-beginning

    ペイロードの先頭からジャンプを有効にします。

    from-end

    ペイロードの最後からジャンプを有効にします。

    multiplier

    読み取ったバイトに対して乗算する値を指定します。

    offset

    使用するオフセット変数名またはオフセット値について言及してください。

    post-offset

    前方または後方にスキップするバイト数を指定します(-65535..65535)。

    relative

    最後のパターン一致に対するオフセットを使用するかどうかを指定します。

    string

    ストリング・データを解析するデータ・タイプを指定します。

  • Byte mathByte math キーワードを使用すると、抽出された値、指定された値、または既存の変数に対して数学的な演算を実行できます。バイト演算値は、結果を新しい変数に格納します。などの 1) '+' | '-' | '*' | '/' | '<<' | '>>' 操作がサポートされています。相対および非相対の両方を指定できます。例えば:

    表 4 は、構成要素のフィールドを Byte math 示しています。

    表 4:バイト数学出力フィールド

    フィールド

    フィールドの説明

    bitmask

    AND 演算のビットマスク(1~4 バイト)を 16 進形式で指定します。

    bytes

    パケット(1..10)から抽出するバイト数を指定します。

    endianness

    読み取るバイトを処理するエンジアンネスを指定します。

    offset

    処理を開始するペイロードのバイト数を指定します(0..65535)。

    operator

    抽出した値に対して実行する操作を指定します。

    relative

    最後のパターン一致に対するオフセットを使用するかどうかを指定します。

    result

    結果を格納する変数名を指定します。

    rvalue

    特定の数学的演算に使用する値を指定します。

    string

    ストリング・データを解析するデータ・タイプを指定します。

  • Is-data-at— is-data-at キーワードでは、ペイロードに指定された場所に必要なデータが含まれていることを確認できます。例えば:

    表 5 は、構成要素のフィールドを Is-data-at 示しています。

    表 5:Isdataat 出力フィールド

    フィールド

    フィールドの説明

    negate

    is-data-at test の結果を無効にします。

    offset

    オフセット変数名またはオフセット値について言及してください。

    relative

    最後のパターン一致に対するオフセットを使用するかどうかを指定します。

  • Detection Filter— 検知フィルターは、攻撃が一致する速度を定義します。送信元または宛先のカウントは、シグネチャで指定されたオプション値に従って維持されます。検知フィルターは外部 <SLE_Constructs> にあり、攻撃メンバー単位ではなく攻撃ごとに指定されます。同じ送信元 IP から 10 秒の間隔で攻撃が 5 回検知されると、攻撃とマークされます。 例えば: