Reguläre Ausdrücke im Inhalt und in den Anwendungssteuerungsregeln der benutzerdefinierten IPS-Signatur

Sie können reguläre Ausdrücke (Regex) im IPS-Signatur-Inhalt und in den Anwendungssteuerungsregeln verwenden. Die Verwendung von regulären Ausdrücken kann sich von der Standardverwendung unterscheiden.
Benutzerdefinierte reguläre IPS-Ausdrücke
Bei benutzerdefiniertem IPS verwenden reguläre Ausdrücke folgendes Format:
regexpcontent="string value" (offset, depth)opt
offset
Gibt an, ab welchem Byte in den Paket-Daten die IPS-Engine den Signaturmustervergleich durchführen soll.
Tiefe
Gibt die Länge der Paketdaten an, nach der die IPS-Engine das Signaturmuster vergleichen soll.
opt
Schließt die C- und die H-Optionen ein.
  • Mit der C-Option ist die Groß- und Kleinschreibung für den Ausdruck unerheblich.
  • Die H-Option gibt die HTTP-Decodierung an.
  • Wenn es keine Option gibt, wird das gesamte Datenpaket verglichen.
Bei benutzerdefiniertem IPS unterstützen reguläre Ausdrücke folgende Zeichen:
  • Mehrfacher regexpcontent
  • Groß- und Kleinschreibung
  • Binäres Format.
    Das Format ist
    \x
    oder
    \X
    mit zwei Hex-Ziffern, z. B.
    \xA9
    .
Reguläre Ausdrücke in der Anwendungssteuerung
Reguläre Ausdrücke in der Anwendungssteuerung sind nicht abhängig von Groß- und Kleinschreibung.
Bei der Anwendungssteuerung unterscheidet sich die Syntax teilweise von der üblichen Syntax regulärer Ausdrücke. Einige gängige Funktionen regulärer Ausdrücke werden nicht unterstützt. Darüber hinaus können typische Funktionen der Anwendungssteuerung im Regex-Muster verwendet werden.
Die Syntax regulärer Ausdrücke in der Anwendungssteuerung unterscheidet sich von der Standardsyntax in der folgenden Weise:
  • Mit Escape-Zeichen versehene Klammern stehen für eine Gruppe. Nicht mit Escape-Zeichen versehene Klammern werden als wörtliche Zeichen interpretiert.
  • Die Anfangsanker und die Endanker werden automatisch hinzugefügt. Wenn Sie sie manuell zum Ausdruck hinzufügen, werden sie als wörtliche Zeichen behandelt.
Bestimmte gängige Funktionen regulärer Ausdrücke werden nicht unterstützt, zum Beispiel:
  • Die Zeichenklassen
    \d
    ,
    \w
    und
    \s
    und die umgekehrten Versionen
    \D
    ,
    \W
    und
    \S
    .
    Verwenden Sie stattdessen alphanumerische Zeichen, zum Beispiel
    [0-9
    ] anstelle von
    \d
    oder
    [a-z0-9_]
    anstelle von
    \w
    .
  • Die Quantifizierer in geschweiften Klammern
    {nn}
    und
    {nn,nn}
    .
    Stattdessen wiederholen Sie das gewünschte Muster. Beispiel: Verwenden Sie
    [XYZ][XYZ][XYZ]
    anstelle von
    [XYZ](3)
    .
  • Der optionale Quantifizierer
    ?
    steht für "null oder eins".
    Sie können möglicherweise in manchen Fällen
    *
    verwenden.
Sie können unter anderem folgende typische Funktionen der Anwendungssteuerung in regulären Ausdrücken verwenden:
  • Importieren von Registrierungswertzeichenketten mit
    #
    .
    Beispiel:
    #HKEY_LOCAL_MACHINE\​SOFTWARE\​Microsoft\​Windows\​CurrentVersion\​ProgramFilesDir#\\​Messenger\\​msmsgs\.exe
    kann
    msmsgs.exe
    einem lokalisierten Betriebssystem entsprechen, auf dem
    Programme
    anders benannt ist.
  • Importieren umgebungsbezogener variabler Zeichenketten mit
    %
    .
    Beispiel:
    %windir%\\winhlp32\.exe
    entspricht
    winhlp32.exe
    im Windows-Ordner, selbst wenn es anders benannt ist oder sich auf einem alternativen Laufwerk befindet.
    Für das wörtliche Zeichen % verwenden Sie
    %%
    .
Syntax für reguläre Ausdrücke
Syntax für reguläre Ausdrücke für benutzerdefiniertes IPS und die Anwendungssteuerung
Symbol
Beschreibung
Zeichen
Entspricht sich selbsdt, es sei denn, es ist eines der folgenden Sonderzeichen (Metazeichen):
  • Benutzerdefiniertes IPS:
    . \ [ ] * + ^ $
  • Anwendungssteuerung:
    . \ [ ] * +
übergehen.
Erkennt genau ein beliebiges Zeichen.
\
Stimmt mit dem Zeichen, das ihm folgt, überein, ausgenommen, wenn es gefolgt wird von:
  • Einer linken oder rechten Klammer:
    ( )
  • Einer linken oder rechten eckigen Klammer:
    [ ]
  • Eine Ziffer von 1 bis 9
Das Zeichen
\
wird als Escape-Zeichen für alle weiteren Metazeichen sowie sich selbst verwendet. Wenn es in einem Zeichensatz verwendet wird, wird das Zeichen
\
als gewöhnliches Zeichen behandelt.
[Set] [^set]
Stimmt mit einem der Zeichen im Satz überein.
Wenn das erste Zeichen im Zeichensatz
^
ist, entspricht es einem Zeichen, das nicht im Satz ist, d. h. es ergänzt den Satz. Das Kürzel "
S-E
" wird verwendet, um einen Satz von Zeichen zwischen S und E anzugeben. Die Sonderzeichen
]
und
-
haben keine spezielle Bedeutung, wenn sie als erstes im Satz erscheinen.
Beispiel:
  • [a-z]
    : Entspricht einem beliebigen Buchstaben.
  • [^]-]
    : Entspricht einem beliebigen Zeichen, ausgenommen
    ]
    und
    -
    .
  • [^A-Z]
    : Entspricht einem beliebigen Zeichen ausgenommen Buchstaben (Großbuchstaben für IPS).
  • [a-zA-Z]
    : Entspricht einem beliebigen Buchstaben. Es ist dasselbe wie
    [ a-z]
    oder
    [A-Z]
    .
*
Ein von einem Schließungszeichen (
*
) gefolgter regulärer Ausdruck aus den ersten vier Zeilen dieser Tabelle mit keiner oder mehr Übereinstimmungen dieses Formats.
+
Identisch mit
*
, außer dass
+
eine oder mehrere Übereinstimmungen dieses Formats hat.
\(
Format
\)
Ein regulärer Ausdruck in der unterstützten Syntax \(
Format
\) entspricht, was auch immer
Format
entspricht. Dieser Rahmen kennzeichnet das zu verwendende Format mit \
"einzelne Ziffer"
für den Musterersatz, wobei
"einzelne Ziffer"
eine Zahl von 1 bis 9 ist. Die gekennzeichneten Formulare werden vom Anfang der Syntax an fortlaufend nummeriert.
Beispiel:
  • \(xxx\)[1-3]
    entspricht xxx1 oder xxx2 oder xxx3.
Nicht mit Escape-Zeichen versehene Klammern werden als wörtliche Zeichen interpretiert. Beispiel:
  • C:\\Programme (x86)\\test\\test\.exe
    entspricht Suchen in
    C:\Programme (x86)
    .
\
"einzelne Ziffer"
Hat dieselbe Entsprechung wie ein zuvor gekennzeichnetes \(
Format
\). Die Ziffer gibt an, welches gekennzeichnete Format als Ersatz übereinstimmt. Beachten Sie, dass die Klammern mit einem umgekehrten Schrägstrich als Escape-Zeichen versehen werden. Nicht mit Escape-Zeichen versehene Klammern werden wörtlich interpretiert.
In diesem ersten Beispiel wird
\(xxx\)
als 1. gekennzeichnet. Im zweiten Beispiel wird
\(yy\)
als 1 und
(zz\)
als 2 gekennzeichnet.
  • \(xxx\)[1-3]\1
    entspricht xxx1xxx oder xxx2xxx oder xxx3xxx.
  • \(yy\)X\(zz\)[1-3]\2\1
    entspricht yyXzz1zzyy oder yyXzz2zzyy oder yyXzz3zzyy.
\<
\>
Ein regulärer Ausdruck, der mit
\<
beginnt, beschränkt die Musterübereinstimmung auf den Wortanfang. Ein regulärer Ausdruck, der mit
\>
endet, beschränkt die Musterübereinstimmung auf das Wortende. Sie können diese Symbole zusammen oder separat verwenden.
Ein Wort wird als Zeichenfolge definiert, die mit den Zeichen
A-Z
a-z
0-9
und
_
beginnt und/oder endet. Alle Zeichen außerhalb den erwähnten muss ihr vorausgehen oder folgen.
Beispiel: Die Syntax
.*\<Symantec.\>.*
erkennt "...ABC Symantec 123...".
^
$
Ein regulärer Ausdruck, der mit
^
beginnt und/oder mit
$
endet. Diese Ankerzeichen beschränken die Musterübereinstimmung auf den Anfang oder das Ende der Zeile. Anderswo im Muster werden
^
und
$
als gewöhnliche Zeichen behandelt.
Bei der Anwendungssteuerung müssen Sie die Ankerzeichen nicht hinzufügen. Sie werden automatisch zum Anfang und zum Ende des Suchbegriffs hinzugefügt. Wenn Sie diese Zeichen hinzufügen, werden sie wörtlich interpretiert.
Beispiel:
  • c:\\file\.txt
    entspricht c:\file.txt,
    c:\\file\.txt$
    jedoch nicht.
  • *\\notepad\.exe
    entspricht "notepad.exe" in jedem beliebigen Ordner, aber
    notepad\.exe
    entspricht nicht "notepad.exe" in jedem beliebigen Ordner. Die automatisch hinzugefügten Ankerzeichen bedeuten, dass die Zeichenfolge nicht den vollständigen Pfad der Datei erkennt.