HTTP-Keywords
Diese Keywords dienen dem Vergleich mit bestimmten Teilen eines HTTP-Datenstroms.
Alle Keywords können zusammen mit allen Inhaltsmodifikatoren verwendet werden, wie depth
, distance
, offset
, nocase
und within
.
Bemerkung
All Puffer sind normalisiert, bis auf die raw-Keywords. Nachfolgende Carriage-Return- und New-Line-Marken werden entfernt.
Die folgenden Request Keywords sind verfügbar:
Keyword |
Typ |
Richtung |
---|---|---|
http.uri |
Sticky Buffer |
Request |
http.uri.raw |
Sticky Buffer |
Request |
http.method |
Sticky Buffer |
Request |
http.request_line |
Sticky Buffer |
Request |
http.request_body |
Sticky Buffer |
Request |
http.header |
Sticky Buffer |
beide |
http.host |
Sticky Buffer |
Request |
http.host.raw |
Sticky Buffer |
Request |
http.user_agent |
Sticky Buffer |
Request |
http.accept |
Sticky Buffer |
Request |
http.accept_enc |
Sticky Buffer |
Request |
http.accept_lang |
Sticky Buffer |
Request |
http.cookie |
Sticky Buffer |
beide |
http.referer |
Sticky Buffer |
Request |
http.connection |
Sticky Buffer |
Request |
http.content_type |
Sticky Buffer |
beide |
http.content_len |
Sticky Buffer |
beide |
http.protocol |
Sticky Buffer |
beide |
http.header_names |
Sticky Buffer |
beide |
Die folgenden Response Keywords sind verfügbar:
Keyword |
Typ |
Richtung |
---|---|---|
http.location |
Sticky Buffer |
Response |
http.stat_code |
Sticky Buffer |
Response |
http.stat_msg |
Sticky Buffer |
Response |
http.response_line |
Sticky Buffer |
Response |
http.response_body |
Sticky Buffer |
Response |
http.header |
Sticky Buffer |
beide |
http.cookie |
Sticky Buffer |
beide |
http.content_type |
Sticky Buffer |
beide |
http.content_len |
Sticky Buffer |
beide |
http.protocol |
Sticky Buffer |
beide |
http.header_names |
Sticky Buffer |
beide |
http.host
Sticky Buffer zum Abgleich mit dem normalisierten HTTP-Host. Die Normalisierung besteht darin, dass die Portinformationen abgeschnitten und alle Zeichen in Kleinbuchstaben umgewandelt werden. Muster zum Abgleich mit diesem Puffer sollten vollständig klein geschrieben sein oder das nocase
-Flag gesetzt haben, obwohl dies nicht zwingend gefordert ist.
Zum Beispiel:
alert http any any -> any any (http.host; content:"abc.com"; sid:1;)
http.host.raw
Sticky Buffer zum Abgleich mit dem unverarbeiteten HTTP-Host. Dieser Puffer kann Portinformationen enthalten.
Zum Beispiel:
alert http any any -> any any (http.host.raw; content:"AbC.com:80"; sid:1;)
http.method
Sticky Buffer zum Abgleich mit der HTTP-Methode. Dieser Puffer kann auf maximal 16 Bytes zutreffen.
Beispiele für Methoden sind: GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS, CONNECT und PATCH.
http.uri und http.uri.raw
Sticky Buffers zum Abgleich mit dem unverarbeiteten HTTP-Request-URI. Aktuell werden http.uri
und http.uri.raw
synonym verwendet. Für http.uri
erfolgt keine Normalisierung.
urilen
Das Keyword urilen
vergleicht die Länge der Request URI. Die Operatoren <
(kleiner als) und >
(größer als) können verwendet werden.
Mögliche Formate von urilen
sind:
urilen:1;
urilen:>1;
urilen:<10;
urilen:10<>20; (größer als 10, kleiner als 20)
Beispiel von urilen
in einer Signatur:
alert tcp any any -> any any (classtype:misc-attack; \
http.uri; content:\"placeholder\"; urilen:11<>13, raw; sid:1;)
Sie können auch norm
oder raw
anhängen, um festzulegen ob normalisierte oder unverarbeitete Puffer verwendet werden sollen.
Bemerkung
Derzeit wird die Inspektion des normalisierten Puffers (über norm
) nicht unterstützt.
http.protocol
Sticky Buffer, der das HTTP-Feld aus der HTTP-Request- oder -Response-Zeile prüft. Wenn die Request-Zeile ‚GET / HTTP/1.0rn‘ ist, enthält dieser Puffer ‚HTTP/1.0‘.
Zum Beispiel:
alert http any any -> any any (http.protocol; content:"HTTP/1.0"; sid:1;)
http.request_line
Sticky Buffer zum Abgleich mit der gesamten HTTP-Request-Zeile. Wenn die Request-Zeile ‚GET / HTTP/1.1rn‘ ist, enthält dieser Puffer ‚GET HTTP/1.1‘.
Zum Beispiel:
alert http any any -> any any (http.request_line; content:"GET / HTTP/1.1"; sid:1;)
http.header
Sticky Buffer zum Abgleich mit dem gesamten HTTP-Header.
Zum Beispiel:
alert http any any -> any any (http.header; content:"Sun, 03 May 2015 23:02:37 GMT"; sid:1;)
Bemerkung
Das Keyword http.header.raw
wird nicht unterstützt.
http.user_agent
Sticky Buffer zum Abgleich mit dem HTTP-User-Agent in einer HTTP-Request.
Zum Beispiel:
alert http any any -> any any (http.user_agent; content:"Bittorrent"; sid:1;)
http.accept
Sticky Buffer zum Abgleich mit dem HTTP-Accept-Header.
Zum Beispiel:
alert http any any -> any any (http.accept; content:"image/gif"; sid:1;)
http.accept_enc
Sticky Buffer zum Abgleich mit dem HTTP-Accept-Encoding-Header.
Zum Beispiel:
alert http any any -> any any (http.accept_enc; content:"gzip"; sid:1;)
http.accept_lang
Sticky Buffer zum Abgleich mit dem HTTP-Accept-Language-Header.
Zum Beispiel:
alert http any any -> any any (http.accept_lang; content:"en-us"; sid:1;)
http.connection
Sticky Buffer zum Abgleich mit dem HTTP-Connection-Header.
Zum Beispiel:
alert http any any -> any any (http.connection; content:"keep-alive"; sid:1;)
http.content_type
Sticky Buffer zum Abgleich mit dem HTTP-Content-Type-Header.
Zum Beispiel:
alert http any any -> any any (http.content_type; content:"x-www-form-urlencoded"; sid:1;)
http.content_len
Sticky Buffer zum Abgleich mit dem HTTP-Content-Length-Header.
Zum Beispiel:
alert http any any -> any any (http.content_len; content:"1500"; sid:1;)
http.referer
Sticky Buffer zum Abgleich mit dem HTTP-Referer-Header.
Zum Beispiel:
alert http any any -> any any (http.referer; content:".php"; sid:1;)
http.header_names
Sticky Buffer zum Abgleich mit einem künstlichen Puffer, der nur die Namen aller gesehenen HTTP-Header enthält.
Beispielpuffer:
\\r\\nHost\\r\\n\\r\\n
Beispielregel:
alert http any any -> any any (http.header_names; content:"|0d 0a|Host|0d 0a|"; sid:1;)
Folgendes Beispiel prüft, dass nur Host enthalten ist:
alert http any any -> any any (http.header_names; \
content:"|0d 0a|Host|0d 0a 0d 0a|"; sid:1;)
Folgendes Beispiel prüft, dass User-Agent direkt auf Host folgt:
alert http any any -> any any (http.header_names; \
content:"|0d 0a|Host|0d 0a|User-Agent|0d 0a|"; sid:1;)
Folgendes Beispiel prüft, dass User-Agent auf Host folgt, aber nicht zwingend direkt:
alert http any any -> any any (http.header_names; \
content:"|0d 0a|Host|0d 0a|"; content:"|0a 0d|User-Agent|0d 0a|"; \
distance:-2; sid:1;)
http.request_body
Sticky Buffer zum Abgleich mit dem Body der HTTP-Request.
Bemerkung
Der Modifikator http_client_body
ist veraltet und sollte nicht mehr verwendet werden.
http.stat_msg
Sticky Buffer zum Abgleich mit der HTTP-Statusmeldung.
http.stat_code
Sticky Buffer zum Abgleich mit dem HTTP-Statuscode. Dieser Puffer kann auf maximal 16 Bytes zutreffen.
Zum Beispiel:
alert http any any -> any any (http.stat_code; content:"200"; sid:1;)
http.response_line
Sticky Buffer zum Abgleich mit der HTTP-Request-Zeile.
Zum Beispiel:
alert http any any -> any any (http.response_line; content:"HTTP/1.0 200 OK"; sid:1;)
http.response_body
Sticky Buffer zum Abgleich mit dem Body der HTTP-Response.
Zum Beispiel:
alert http any any -> any any (http.response_body; content:"|0A 0B|</span>"; sid:1;)
Bemerkung
http.response_body
trifft komprimierte Daten (Deflate) wiefile_data
.Der Modifikator
http_server_body
ist veraltet und sollte nicht mehr verwendet werden.
http.location
Sticky Buffer zum Abgleich mit den HTTP-Location-Headers.
Zum Beispiel:
alert http any any -> any any (http.location; content:"http://www.genua.de"; sid:1;)
file_data
Synonym für http.response_body.
file.data
Synonym für file_data.