Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verbesserungen der IDP-Signatursprache

Die Konstrukte der IDP-Signatursprache ermöglichen es IDP, effizientere Signaturen zu generieren, die dazu beitragen, Fehlalarme zu reduzieren. Dies kann mithilfe der Signature Language erreicht werden, die Angriffsmuster mithilfe von regelbasierter Syntax, Kontexten und Übereinstimmungsbedingungen definiert.

Grundlegendes zu Signatursprachkonstrukten

Die IDP-Signatursprachenkonstrukte in Junos OS sind die Konstrukte, die in der IDP-Signatursprache verfügbar sind. Die Konstrukte wurden entwickelt, um die Erkennungs- und Präventionsfähigkeiten von Netzwerksicherheitsmaßnahmen zu verbessern. Die Sprache bietet eine Reihe von Tools und Funktionen zum Definieren von Signaturen, die verschiedene Arten von böswilligen Aktivitäten und anomalen Datenverkehrsmustern erkennen können. Netzwerkadministratoren können effektive Sicherheitssignaturen erstellen. Die Konstrukte enthalten Optionen zum Definieren von Datenverkehrsmustern, zum Angeben von Bedingungen für Warnungen und zum Einbinden von Kontextinformationen, um die Genauigkeit und Relevanz von Erkennungen zu verbessern.

Die folgenden Konstrukte werden im IDP-Engine-Code unterstützt:

  • Depth: Gibt die Tiefe in einem Paket an, mit der nach dem angegebenen Muster gesucht werden soll. Der Tiefenwert ist nicht relativ. Sie können z. B. die Tiefe als 100 angeben.
  • Offset: Hier können Sie angeben, wo mit der Suche nach einem Muster in einem Paket begonnen werden soll. Der Offset-Wert ist nicht relativ. Sie können z. B. einen Wert für offset als 100 angeben.
  • Within: Stellt sicher, dass zwischen Musterübereinstimmungen maximal N Byte vorhanden sind. Die Musterübereinstimmung ist immer relativ zu einer vorherigen Übereinstimmung. Beispiel, wenn der Wert von N 10 ist. Wie im Beispiel wird nach der m01-Übereinstimmung die m02-Übereinstimmung innerhalb von 10 Bytes durchgeführt, um eine Angriffsbenachrichtigung auszulösen.
  • Distance: Hier können Sie angeben, wo die IDP-Engine nach dem angegebenen Muster relativ zur vorherigen Musterübereinstimmung suchen muss. Dies ist immer relativ zur vorherigen Übereinstimmung und der Entfernungswert kann negativ sein. Wenn der Wert von N z. B. 10 ist, sollte m02 10 Byte nach dem Ende der m01-Übereinstimmung auftreten, sobald m01 übereinstimmt:
  • IpoptsFür alle aufgelisteten IPOPTs sind entsprechende Anomalien im Sicherheitspaket definiert und können erkannt werden, wenn sie auf dem Gerät oder der IDP-Engine konfiguriert sind:

    • rr - Route aufzeichnen

    • eol - Ende der Liste

    • nop - Keine Operation

    • ts - Zeitstempel

    • sec – IP-Sicherheit

    • esec – Erweiterte IP-Sicherheit

    • lsrr – Routing mit losen Quellen

    • ssrr – Striktes Quell-Routing

    • satid - Stream-Bezeichner

  • Byte extract—Das Schlüsselwort Byte extract hilft beim Schreiben von Signaturen für längenkodierte Protokolle, liest die Paketnutzlast in Byte und speichert sie als Variable für die spätere Verwendung. Der Byte-Extrakt kann sowohl relativ als auch nicht relativ sein. Pro Kettenangriff kann eine beliebige Anzahl von Byte-Extrakten verwendet werden.Zum Beispiel:

    Tabelle 1 listet die Felder für das Byte extract Konstrukt auf.

    Tabelle 1: Byte-Extrakt-Ausgabefelder

    Feld

    Feldbeschreibung

    align

    Geben Sie die Byte-Ausrichtung an.

    bitmask

    Geben Sie die Bitmaske (1-4 Bytes) für die UND-Operation im Hexadezimalformat an.

    bytes

    Geben Sie die Anzahl der Bytes an, die aus dem Paket extrahiert werden sollen (1-10).

    endianness

    Geben Sie die Endianness an, mit der die von der IDP-Engine gelesenen Bytes verarbeitet werden sollen.

    multiplier

    Geben Sie den Wert an, der mit den gelesenen Bytes multipliziert werden soll.

    offset

    Geben Sie die Offset-Anzahl der Bytes in der Nutzlast an, von der aus die IDP-Engine mit der Verarbeitung beginnen soll.

    relative

    Geben Sie an, ob ein Versatz relativ zur letzten Musterübereinstimmung verwendet werden soll oder nicht.

    string

    Geben Sie den Datentyp an, in dem Zeichenfolgendaten analysiert werden sollen.

    var-name

    Geben Sie den Namen der Variablen an, auf die in anderen Regeloptionen verwiesen werden soll.

  • Byte testMit dem SchlüsselwortByte test können Sie das Bytefeld mit einem operativen Wert testen. Der Bytetest kann sowohl relativ als auch nicht relativ sein. > , < , =, &, ^ ,<=,>= sind die unterstützten Operatoren und die maximale Anzahl der extrahierten Bytes beträgt 4.Zum Beispiel:

    Tabelle 2 listet die Felder für das Byte test Konstrukt auf.

    Tabelle 2: Byte-Test-Ausgabefelder

    Feld

    Feldbeschreibung

    bitmask

    Geben Sie die Bitmaske (1-4 Bytes) für die UND-Operation im Hexadezimalformat an.

    bytes

    Geben Sie die Anzahl der Bytes an, die aus dem Paket extrahiert werden sollen (1-10).

    endianness

    Geben Sie die Endianness an, mit der die von der IDP-Engine gelesenen Bytes verarbeitet werden sollen.

    negate

    Überprüfen Sie, ob der Operator nicht wahr ist.

    offset

    Erwähnen Sie den Namen der Offset-Variablen oder den Offset-Wert

    operator

    Geben Sie den Vorgang an, der für einen extrahierten Wert ausgeführt werden soll.

    relative

    Geben Sie an, ob ein Versatz relativ zur letzten Musterübereinstimmung verwendet werden soll oder nicht.

    rvalue

    Der konvertierte Wert wird mit rvalue getestet. .

    string

    Geben Sie den Datentyp an, in dem Zeichenfolgendaten analysiert werden sollen.

  • Byte jumpDas Schlüsselwort Byte-Sprung wird für Signaturen verwendet, die für längencodierte Protokolle geschrieben wurden, um bestimmte Teile der Nutzlast zu überspringen und eine Erkennung an ganz bestimmten Stellen durchzuführen. Der Bytesprungwert kann sowohl relativ als auch nicht relativ sein.Zum Beispiel:

    Tabelle 3 listet die Felder für das Byte jump Konstrukt auf.

    Tabelle 3: Byte-Sprung-Ausgabefelder

    Feld

    Feldbeschreibung

    align

    Geben Sie die Endianness an, mit der die von der IDP-Engine gelesenen Bytes verarbeitet werden sollen.

    bitmask

    Geben Sie die Bitmaske (1-4 Bytes) für die UND-Operation im Hexadezimalformat an.

    bytes

    Geben Sie die Anzahl der Bytes an, die aus dem Paket extrahiert werden sollen (1-10).

    endianness

    Geben Sie die Endianness an, mit der Bytes, die von der IDP-Engine gelesen werden, verarbeitet werden sollen.

    from-beginning

    Aktivieren Sie den Sprung vom Anfang der Nutzlast.

    from-end

    Aktivieren Sie den Sprung vom Ende der Nutzlast.

    multiplier

    Geben Sie den Wert an, der mit den gelesenen Bytes multipliziert werden soll.

    offset

    Geben Sie den Namen der Offset-Variablen oder den zu verwendenden Offset-Wert an.

    post-offset

    Geben Sie die Anzahl der Bytes an, die vorwärts oder rückwärts übersprungen werden sollen (-65535..65535).

    relative

    Geben Sie an, ob ein Versatz relativ zur letzten Musterübereinstimmung verwendet werden soll oder nicht.

    string

    Geben Sie den Datentyp an, in dem Zeichenfolgendaten analysiert werden sollen.

  • Byte mathMit dem Schlüsselwort Byte math können Sie eine mathematische Operation für einen extrahierten Wert, einen angegebenen Wert oder eine vorhandene Variable ausführen. Der mathematische Bytewert speichert das Ergebnis in einer neuen resultierenden Variablen. Die Vorgänge wie werden 1) '+' | '-' | '*' | '/' | '<<' | '>>' unterstützt. Es kann sowohl relativ als auch nicht-relativ sein.Zum Beispiel:

    In Tabelle 4 sind die Felder für das Byte math Konstrukt aufgeführt.

    Tabelle 4: Mathematische Byte-Ausgabefelder

    Feld

    Feldbeschreibung

    bitmask

    Geben Sie die Bitmaske (1-4 Bytes) für die UND-Operation im Hexadezimalformat an.

    bytes

    Geben Sie die Anzahl der Bytes an, die aus dem Paket extrahiert werden sollen (1-10).

    endianness

    Geben Sie die Endianness an, mit der gelesene Bytes verarbeitet werden sollen.

    offset

    Geben Sie die Anzahl der Bytes in der Nutzlast an, um die Verarbeitung zu starten (0..65535).

    operator

    Geben Sie den Vorgang an, der für den extrahierten Wert ausgeführt werden soll.

    relative

    Geben Sie an, ob ein Versatz relativ zur letzten Musterübereinstimmung verwendet werden soll oder nicht.

    result

    Geben Sie den Variablennamen an, unter dem das Ergebnis gespeichert werden soll.

    rvalue

    Geben Sie den Wert an, der für die spezifische mathematische Operation verwendet werden soll.

    string

    Geben Sie den Datentyp an, in dem die Zeichenfolgendaten analysiert werden sollen.

  • Is-data-at— Mit dem Schlüsselwort is-data-at können Sie überprüfen, ob die Nutzlast die erforderlichen Daten an einem bestimmten Speicherort enthält. Zum Beispiel:

    In Tabelle 5 sind die Felder für das Is-data-at Konstrukt aufgeführt.

    Tabelle 5: Isdataat-Ausgabefelder

    Feld

    Feldbeschreibung

    negate

    Negiert die Ergebnisse des is-data-at-Tests .

    offset

    Erwähnen Sie den Namen der Offset-Variablen oder den Offset-Wert.

    relative

    Geben Sie an, ob ein Versatz relativ zur letzten Musterübereinstimmung verwendet werden soll oder nicht

  • Detection Filter— Der Erkennungsfilter definiert die Rate, mit der der Angriff übereinstimmen soll. Eine Zählung wird entweder für die Quelle oder das Ziel gemäß dem in der Signatur angegebenen Optionswert beibehalten. Der Erkennungsfilter befindet sich außerhalb <SLE_Constructs> und wird pro Angriff und nicht pro Element des Angriffs angegeben. Wenn ein Angriff 5 Mal in einem Intervall von 10 Sekunden von derselben Quell-IP aus erkannt wird, wird er als Angriff gekennzeichnet. Zum Beispiel: