Hands-on Gateway Hardening: Einschränkung von HTTP Evasion

Mit der Etablierung von Firewall NG, also der Erweiterung der Firewall um die Applikationsschicht, entstanden neue Fallstricke. Die unterschiedliche Interpretation von HTTP im Antivirus der Perimeter-Firewall und im Browser des Clients erlauben unter Umständen, dass Malware an der Perimeter-Firewall vorbei geschleust und ungeprüft beim Client ankommt.

Größtes Problem hierbei ist die Nachlässigkeit der Firewall-Standardkonfigurationen. Diese werden wir in diesem Beitrag unter die Lupe nehmen und verbessern.

Angriff

Aus der Angreiferperspektive ist die erste Hürde, die es in Richtung Zielnetzwerk zu überwinden gilt, die Perimeter-Firewall. Aktuelle und verbreitete Vertreter dieser Sorte nennen sich inzwischen Next-Generation Firewalls. Sie erweitern die eigentliche Firewall-Funktionalität um weitere Features. Dazu gehören beispielsweise Antivirus sowie die Verhaltensanalyse in einer Sandbox. Diese Features verlassen sich allerdings vollständig darauf, Daten aus beispielsweise HTTP Traffic korrekt und zuverlässig ausgehändigt zu bekommen. Leider ist die Proxy-Funktion, die für das Parsing des HTTP zuständig ist, dabei in der Standardkonfiguration oft recht nachlässig. So kommt es vor, dass für den Parser unverständliche oder mehrdeutige Daten, trotz viraler Kontamination, ohne weitere Inspektion weitergeleitet werden. Hoffentlich zerschellen diese dann an der Endpoint Protection.

Verteidigung: Härten von Security Gateways

Die Möglichkeiten zur Härtung der Security Gateways besteht bisher im Wesentlichen darin, bei der Prüfung von komprimiertem HTTP den Traffic zu blockieren, falls die Dekomprimierung auf dem Gateway fehlschlägt, sowie standardkonformes HTTP zu erzwingen. Dies wiederum verursacht selbst wieder Probleme, da nicht-konformes HTTP im Web verbreitet ist. Somit ist für Clients nicht direkt ersichtlich, warum eine Website nicht geladen wird. Es empfiehlt sich also, die empfohlenen Einstellungen testweise auf Detect zu stellen. Anschließend wird, nach einer Evaluierung der Einschränkungen, die Umstellung auf Prevent vorgenommen.

[Update 15.9.2017] Dass die folgenden Einstellungen auch für HTTPS wirksam werden können ist die Aktivierung von HTTPS-Inspektion zwingend notwendig. Dies verursacht allerdings andere Probleme.

Check Point R77.30 (im IPS)

Die R77.30 geht den Weg über Einstellungen in den IPS-Protections, obwohl es sich bei dem HTTP Evasion Angriff mehr um ein Problem des HTTP-Parsers/Anti-Virus handelt.

Einschalten von IPS und Antivirus

  • Smart Dashboard → Reiter: IPS → Gateways → Gateway auswählen → Edit → General Properties
  • IPS und Anti-Virus einschalten

Gesamten Traffic analysieren

  • Smart Dashboard → Reiter: IPS → Gateways→ Gateway auswählen → Edit → IPS
  • Perform IPS inspection on all traffic einschalten

IPS Protections härten

  • Smart Dashboard → Reiter: IPS → Protections
  • Protection: Gzip Enforcement → Profile auswählen → Edit
    • Inspect compressed HTTP traffic sowie Drop compressed traffic if inspection is stopped einschalten
  • Protection Non Compliant HTTP → Profile auswählen → Edit
    • Enforce strict HTTP request parsing sowie Enforce strict HTTP response parsing einschalten
    • Unter Advanced die Option Invalid Chunk einschalten

Check Point R80.10

Die R80.10 verschiebt die Einstellung des HTTP-Parsers von den IPS Protections in Manage Settings → Blades → General → Inspection Settings.

Einschalten von IPS und Antivirus

  • Gateways & Servers → Edit → General Properties
  • IPS und Anti-Virus einschalten
  • IPS → Activation Mode → According to Threat Prevention policy aktivieren

Inspection Settings härten

Gzip Enforcement

  • → Edit → Profile auswählen
  • Logging einschalten (optional, empfohlen): General Properties → Logging Settings → Track: Log
  •  Advanced →  Drop compressed traffic if inspection is stopped auswählen
  • Inspect compressed HTTP traffic einschalten

Non compliant HTTP

  • → Edit → Profile auswählen → Advanced
  • Logging einschalten (optional, empfohlen): General Properties → Logging Settings → Track: Log
  • Enforce strict HTTP request parsing sowie Enforce strict HTTP response parsing einschalten
  • Block invalid chunk auswählen

Palo Alto PanOS

Bei Palo Alto finden sich die Einstellungen um HTTP Evasion einzuschränken in den Vulnerability Protections. Sie lassen sich dort abhängig vom Schweregrad oder einzeln als Exceptions einschalten. Um die restliche Konfiguration weitestgehend unberührt zu lassen, wird hier der Weg über die Exceptions gewählt. Diese finden sich unter: Objects → Security Profiles → Vulnerability Protections → strict/default/… → Exceptions. Nachdem der Haken bei Show all signatures gesetzt wurde, lassen sich mit Hilfe der Suchleiste folgende Exceptions einschalten:

  • Suspicious Abnormal HTTP Response Found (18x)
  • HTTP Non RFC-Compliant Response Found
  • Suspicious HTTP Evasion Found (5x)
  • HTTP Request Pipeline Evasion Found
  • HTTP Request Line Separator Evasion (2x)
  • HTTP response data URI scheme evasion attempt (bei uns nicht verfügbar)
  • HTTP various charset encoding html response evasion
  • HTTP utf-7 charset encoding html response evasion

Anschließend wird Show all signatures abgewählt und über Action → Update Action→ Drop die Einstellung gesetzt, invalides HTTP wegzuwerfen.

Vorsicht: Mit dieser Konfiguration wird auch teilweise gutartiger Traffic, der nicht HTTP-konform ist, geblockt. Es empfiehlt sich also auch hier Logging einzuschalten.

Sophos UTM

Bei der UTM finden sich Konfigurationsmöglichkeiten unter Web Protection → Filtering Options → Reiter: Misc → Misc Settings. Zur Verfügung stehen

  • MIME blocking inspects HTTP body
  • Block unscannable and encrypted files
  • Enforce strict HTTP 1.0/1.1

Vorsicht: Diese Einstellungen können nicht auf Detect gestellt werden. Nach der Aktivierung kann es somit zu Problemen bei der Darstellung von Websites seitens der Clients kommen.

Referenzen

Steffen Ullrich: The Semantic Gap (http://noxxi.de/research/semantic-gap.html)

Slides: http://www.apt-sweeper.de/doc/it-sicherheitskongress-2017-slides.pdf

HTTP Evader: https://noxxi.de/research/http-evader.html

HTTP Evasion Test: http://http-evader.chksum.de/, http://semantic-gap.de/

Palo Alto: https://live.paloaltonetworks.com/t5/Threat-Vulnerability-Articles/Understanding-HTTP-Evasion-Detection-Signatures/ta-p/79218

Check Point: Check Point SK109113

2 Kommentare

  1. Die entscheidende Konfigurationsoption ist im Artikel leider nicht explizit als Voraussetzung aufgeführt: Aktivierung der HTTPS-Inspektion. Sonst sieht das Gateway einen Großteil des Verkehrs gar nicht.

    Das wiederum bricht viele Applikationen, die Ende-zu-Ende-Sicherheit durch beidseitige Zertifikatsprüfung umsetzen.

    1. Hallo Tobias Häcker,

      danke für den Kommentar, die Voraussetzung von HTTPS Inspektion für die Analyse von HTTPS-Traffic sollte definitiv Erwähnung finden. Ich habe den Beitrag entsprechend ergänzt.

      Mit freundlichen Grüßen
      Tobias Györfi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

CAPTCHA *