Erstellen Sie eine Regel für Erkennungsbenachrichtigungen
Erstellen Sie eine Benachrichtigungsregel, wenn Sie eine Benachrichtigung über Entdeckungen erhalten möchten , die bestimmten Kriterien entsprechen.
Video: | Sehen Sie sich die entsprechende Schulung an: Erkennungsbenachrichtigungen konfigurieren |
Wenn eine Erkennung generiert wird, die Ihren Kriterien entspricht, wird eine Benachrichtigung mit Informationen von Erkennungskarte.
Hinweis: | (Nur RevealX 360) Wenn Sie eine Benachrichtigungsregel erstellen, um Erkennungsdaten in eine SIEM-Integration zu exportieren, erstellen Sie die Benachrichtigung direkt aus dem Integrationen Seite in den Verwaltungseinstellungen , um Felder für Benachrichtigungsregeln vorab auszufüllen. |
Before you begin
- Benutzern muss der Zugriff auf das NDR- oder NPM-Modul gewährt werden und sie müssen über vollständige Schreibberechtigungen verfügen Privilegien oder höher, um die Aufgaben in diesem Handbuch abzuschließen.
- RevealX Enterprise benötigt eine Verbindung zu ExtraHop Cloud Services um Benachrichtigungen per E-Mail zu senden, kann aber eine Benachrichtigung über einen Webhook ohne Verbindung senden.
- E-Mail-Benachrichtigungen werden über ExtraHop Cloud Services gesendet und können identifizierbare Informationen wie IP-Adressen, Benutzernamen, Hostnamen, Domainnamen, Gerätenamen oder Dateinamen enthalten. RevealX Enterprise-Benutzer, deren behördliche Anforderungen externe Verbindungen verbieten, können Benachrichtigungen mit Webhook-Aufrufen so konfigurieren, dass Benachrichtigungen ohne externe Verbindung gesendet werden.
- E-Mail-Benachrichtigungen werden von no-reply@notify.extrahop.com gesendet. Stellen Sie sicher, dass Sie diese Adresse zu Ihrer Liste der zulässigen Absender hinzufügen.
Referenz zur Webhook-Benachrichtigung
Dieses Handbuch enthält Informationen zum Schreiben benutzerdefinierter Payloads für Sicherheits- oder Leistungserkennungsbenachrichtigungen mit benutzerdefinierten Webhook- oder Integrationszielen. Das Handbuch enthält einen Überblick über die Payload (JSON) -Schnittstelle, die Standardnutzlast für Webhook-Ziele, eine Liste von Payload-Feldern, die Sie der Standard-Payload hinzufügen können, und Beispiele für die JSON-Struktur für gängige Webhook-Ziele wie Slack, Microsoft Teams und Google Chat.
- RevealX 360 kann keine Webhook-Aufrufe an Endpunkte in Ihrem internen Netzwerk senden. Webhook-Ziele müssen für externen Verkehr geöffnet sein.
- RevealX Enterprise muss eine direkte Verbindung zu Webhook-Endpunkten herstellen, um Benachrichtigungen zu senden.
- Webhook-Ziele müssen über ein Zertifikat verfügen, das von einer Zertifizierungsstelle (CA) des Mozilla CA Certificate Program signiert wurde. siehe https://wiki.mozilla.org/CA/Included_Certificates für Zertifikate von vertrauenswürdigen öffentlichen CAs.
Weitere Informationen zu Benachrichtigungsregeln finden Sie unter Erstellen Sie eine Regel für Erkennungsbenachrichtigungen.
Nutzlast JSON
ExtraHop-Webhooks sind in JSON formatiert und werden unterstützt von Jinja2-Template-Engine. Wenn Sie eine Regel für Benachrichtigungen zur Sicherheits- oder Leistungserkennung erstellen und einen benutzerdefinierten Webhook oder eine benutzerdefinierte Integration als Ziel auswählen, haben Sie die Möglichkeit, eine Standardnutzlast auszuwählen oder Ihre eigene benutzerdefinierte Nutzlast zu schreiben.
Standard-Nutzlast
Das Standard-Payload-JSON für einen Webhook enthält die folgenden Basisinformationen zu einer Erkennung.
{ "title": {{title}}, "type": {{type}}, "src": { "type": {{src.type}}, "hostname": "{{src.hostname}}", "ipaddr": {{src.ipaddr}}, "role": {{src.role}}, "endpoint": {{src.endpoint}}, // sender|receiver|client|server "device": { "oid": {{src.device.oid}}, "name": {{src.device.name}}, "ipaddrs": {{src.device.ipaddrs}}, "macaddr": {{src.device.macaddr}} }, }, "dst": { "type": {{dst.type}}, "hostname": {{dst.hostname}}, "ipaddr": {{dst.ipaddr}}, "role": {{dst.role}}, "endpoint": {{dst.endpoint}}, "device": { "oid": {{dst.device.oid}}, "name": {{dst.device.name}}, "ipaddrs": {{dst.device.ipaddrs}}, "macaddr": {{dst.device.macaddr}} }, }, "properties": {{properties}}, "description": {{description}}, "categories_ids": {{categories_ids}}, "mitre_techniques": {{mitre_techniques}}, // array of objects "recommended": {{recommended}}, "recommended_factors: {{recommended_factors}}, "url": {{url}}, "risk_score": {{risk_score}}, "time": {{time}}, "id": {{detection_id or id}} }
Sie können die Standardnutzlast ändern, indem Sie Felder aus der Dropdownliste Payload-Felder hinzufügen auswählen. Um benutzerdefinierte Änderungen vorzunehmen, können Sie die Standard-Payload kopieren, Ihre Payload-Option in Custom Payload ändern und dann die Standard-Payload in das Payload-Feld einfügen, um Ihre Änderungen vorzunehmen.
Benutzerdefinierte Nutzlast
Wählen Sie die benutzerdefinierte Payload-Option, um Ihr eigenes JSON für einen Benachrichtigungsregel-Webhook zu schreiben. Im Feld Payload (JSON) wird ein leerer Satz von Klammern angezeigt, in denen Sie das JSON für Ihre benutzerdefinierte Nutzlast hinzufügen können.
Hinweis: | Bevor Sie sich die Zeit nehmen, eine lange benutzerdefinierte
Nutzlast einzugeben, empfehlen wir Ihnen, Ihre Verbindung zur Webhook-URL zu testen. Auf diese Weise
können Sie sicher sein, dass Probleme nicht auf einen Verbindungsfehler zurückzuführen sind. Geben Sie eine
einfache JSON-Zeile ein, um die Verbindung zu testen. Die folgende Abbildung zeigt beispielsweise
eine grundlegende Textvariable, die Sie kopieren können, um Ihre Verbindung zu testen. |
Syntaxvalidierung
Der Webhook-Editor bietet JSON- und Jinja2-Syntaxvalidierung. Wenn Sie eine Zeile eingeben , die eine falsche JSON- oder Jinja2-Syntax enthält, wird unter dem Payload-Feld ein Fehler mit dem Fehler angezeigt.
Variablen
Erkennungsvariablen werden der Nutzlast hinzugefügt, indem der Variablenname zwischen doppelten Gruppen geschweifter Klammern ({{und}}) eingefügt wird.
Das Beispiel in der Payload enthält beispielsweise eine Variable für den Erkennungstitel:
"text": "ExtraHop Detection: {{title}}"
Wenn eine Erkennung einer Benachrichtigungsregel mit der Variablen entspricht, wird die Variable durch den Erkennungstitel ersetzt. Wenn die Benachrichtigungsregel beispielsweise mit der Erkennung für Network Share Enumeration übereinstimmt, wird die Variable durch den Titel in der Benachrichtigung ersetzt, ähnlich der folgenden Abbildung:
Sehen Sie eine Liste von Erkennungsvariablen.
Filter
Filter ermöglichen es Ihnen, eine Variable zu ändern.
JSON übergeben
Wenn die Variable einen Wert zurückgibt, der in JSON formatiert ist, wird der Wert automatisch maskiert und in eine Zeichenfolge übersetzt. Wenn Sie gültiges JSON an Ihr Webhook-Ziel übergeben möchten, müssen Sie Folgendes angeben: safe filtern:
{{<variable> | safe }}
Im folgenden Beispiel gibt die Variable Erkennungsdaten über Teilnehmer im JSON-Format direkt an das Webhook-Ziel zurück:
{{api.participants | safe }}
IF-Kontoauszüge
Eine IF-Anweisung kann überprüfen, ob ein Wert für die Variable verfügbar ist. Wenn die Variable leer ist, können Sie eine alternative Variable angeben.
{% if {{<variable>}} %}
Im folgenden Beispiel prüft die IF-Anweisung, ob ein Wert für die Opfervariable verfügbar ist:
{% if victims %}
Im folgenden Beispiel prüft die IF-Anweisung, ob ein Tätername verfügbar ist. Wenn es keinen Wert für den Namen des Täters gibt, wird stattdessen der Wert für die Variable IP-Adresse des Täters zurückgegeben.
{% if offender.name %}{{offender.name}}{%else%}{{offender.ipaddr}} {% endif %}
FÜR Schleifen
Eine FOR-Schleife kann es der Benachrichtigung ermöglichen, ein Array von Objekten anzuzeigen.
{% for <array-object-variable> in <array-variable> %}
Im folgenden Beispiel wird eine Liste mit Täternamen aus dem Täter-Array in der Benachrichtigung angezeigt. Eine IF-Anweisung sucht nach weiteren Elementen im Array ({% if not loop.last %}) und fügt einen Zeilenumbruch hinzu, bevor der nächste Wert gedruckt wird (\n). Wenn ein Tätername leer ist, gibt der Standardfilter „Unbekannter Name" für den Wert zurück.
{% for offender in offenders %} {{offender.name | default ("Unknown Name")}} {% if not loop.last %}\n {% endif %} {% endfor %}
Verfügbare Erkennungsvariablen
Die folgenden Variablen sind für Webhook-Benachrichtigungen über Erkennungen verfügbar.
- titel: Schnur
- Der Titel der Erkennung.
- Beschreibung: Schnur
- Eine Beschreibung der Erkennung.
- typ: Schnur
- Die Art der Erkennung.
- ID: Zahl
- Die eindeutige Kennung für die Erkennung.
- url: Schnur
- Die URL für die Erkennung im ExtraHop-System.
- Risikobewertung: Zahl
- Die Risikoscore der Erkennung.
- Standort: Schnur
- Der Standort, an dem die Erkennung stattgefunden hat.
- Startzeit_Text: Schnur
- Die Uhrzeit, zu der die Erkennung gestartet wurde.
- Endzeittext: Schnur
- Die Uhrzeit, zu der die Erkennung beendet wurde.
- kategorien_array: Reihe von Zeichenketten
- Eine Reihe von Kategorien, zu denen die Erkennung gehört.
- kategorien_string: Schnur
- Eine Zeichenfolge, die die Kategorien auflistet, zu denen die Erkennung gehört.
- mitre_tactics: Reihe von Zeichenketten
- Eine Reihe von MITRE-Taktik-IDs, die mit der Erkennung verknüpft sind.
- mitre_tactics_string: Schnur
- Eine Zeichenfolge, die die mit der Erkennung verknüpften MITRE-Taktik-IDs auflistet.
- mitre_techniques: Reihe von Zeichenketten
- Eine Reihe von MITRE-Technik-IDs, die mit der Erkennung verknüpft sind.
- mitre_techniques_string: Schnur
- Eine Zeichenfolge, die die MITRE-Technik-IDs auflistet, die mit der Erkennung verknüpft sind.
- primärer Täter: Objekt
- (Veraltet) Ein Objekt, das den Haupttäter identifiziert und die
folgenden Eigenschaften enthält:
- extern: Boolesch
- Der Wert ist true wenn die IP-Adresse des primären Täters außerhalb Ihres Netzwerk liegt.
- ipaddr: Schnur
- Die IP-Adresse des Haupttäters.
- Name: Schnur
- Der Name des Haupttäters.
- Straftäter: Reihe von Objekten
- Eine Reihe von Täterobjekten, die mit der Erkennung verknüpft sind. Jedes Objekt
enthält die folgenden Eigenschaften:
- extern: Boolesch
- Der Wert ist true wenn die IP-Adresse des Täters außerhalb Ihres Netzwerk liegt.
- ipaddr: Schnur
- Die IP-Adresse des Täters. Gilt für Feststellungen mit mehreren Tätern.
- Name: Schnur
- Der Name des Täters. Gilt für Feststellungen mit mehreren Tätern.
- primäres Opfer: Objekt
- (Veraltet) Ein Objekt, das das primäre Opfer identifiziert und die
folgenden Eigenschaften enthält:
- extern: Boolesch
- Der Wert ist true wenn die IP-Adresse des primären Opfers außerhalb Ihres Netzwerk liegt.
- ipaddr: Schnur
- Die IP-Adresse des primären Opfers.
- Name: Schnur
- Der Name des Hauptopfers.
- Opfer: Reihe von Objekten
- Eine Reihe von Opferobjekten, die mit der Erkennung verknüpft sind. Jedes Objekt
enthält die folgenden Eigenschaften:
- extern: Boolesch
- Der Wert ist true wenn die IP-Adresse des Opfers außerhalb Ihres Netzwerk liegt.
- ipaddr: Schnur
- Die IP-Adresse des Opfers. Gilt für Erkennungen mit mehreren Opfern.
- Name: Schnur
- Der Name des Opfers. Gilt für Erkennungen mit mehreren Opfern.
- api: Objekt
- Ein Objekt, das alle Felder enthält, die von GET /detections/{id}operation. Weitere Informationen finden Sie in der Einführung in die ExtraHop REST API.
Webhook-Beispiele
Die folgenden Abschnitte enthalten JSON-Vorlagen für gängige Webhook-Ziele.
Slack
Nachdem du eine Slack-App erstellt und eingehende Webhooks für die App aktiviert hast, kannst du einen eingehenden Webhook erstellen. Wenn du einen eingehenden Webhook erstellst, generiert Slack die URL, die du in das Feld Payload-URL in deiner Benachrichtigungsregel eingibst.
Das folgende Beispiel zeigt die JSON-Nutzlast für einen Slack-Webhook:
{ "blocks": [ { "type": "header", "text": { "type": "plain_text", "text": "Detection: {{ title }}" } }, { "type": "section", "text": { "type": "mrkdwn", "text": "• *Risk Score:* {{ risk_score }}\n • *Category:* {{ categories_string }}\n • *Site:* {{ site }}\n • *Primary Offender:* {{ offender_primary.name}} ({{ offender_primary.ipaddr}})\n • *Primary Victim:* {{ victim_primary.name }} ({{ victim_primary.ipaddr }})\n" } }, { "type": "section", "text": { "type": "plain_text", "text": "Detection ID: {{ id }}" }, "text": { "type": "mrkdwn", "text": "<{{ url }}|View Detection Details>" } } ] }
Microsoft-Teams
Du kannst einem Teams-Kanal einen eingehenden Webhook als Connector hinzufügen. Nachdem Sie einen eingehenden Webhook konfiguriert haben, generiert Teams die URL, die Sie in das Feld Payload-URL in Ihrer Benachrichtigungsregel eingeben müssen.
Das folgende Beispiel zeigt die JSON-Nutzlast für einen Microsoft Teams-Webhook:
{ "type":"message", "attachments":[ { "contentType":"application/vnd.microsoft.card.adaptive", "contentUrl":null, "content":{ "$schema":"https://adaptivecards.io/schemas/adaptive-card.json", "type":"AdaptiveCard", "body":[ { "type":"ColumnSet", "columns":[ { "type": "Column", "width":"16px", "items":[ { "type":"Image", "horizontalAlignment":"center", "url":"https://assets.extrahop.com/favicon.ico", "altText":"ExtraHop Logo" } ] }, { "type": "Column", "width":"stretch", "items":[ { "type":"TextBlock", "text":"ExtraHop RevealX", "weight": "bolder" } ] } ] }, { "type":"TextBlock", "text":"**{{ title }}**" }, { "type":"TextBlock", "spacing":"small", "isSubtle":true, "wrap":true, "text":"{{ description }}" }, { "type":"FactSet", "facts":[ { "title":"Risk Score:", "value":"{{ risk_score }}" }, { "title":"Category:", "value":"{{ categories_string }}" }, { "title":"Site:", "value":"{{ site }}" }, { "title":"Primary Offender:", "value":"{{ offender_primary.name }} ({{ offender_primary.ipaddr }})" }, { "title":"Primary Victim:", "value":"{{ victim_primary.name }} ({{ victim_primary.ipaddr }})" } ] }, { "type":"ActionSet", "actions":[ { "type":"Action.OpenUrl", "title":"View Detection Details", "url":"{{ url }}" } ] } ] } } ] }
Google Chat
In einem Google-Chatroom können Sie auf das Drop-down-Menü neben dem Raumnamen klicken und Webhooks verwalten auswählen. Nachdem Sie einen Webhook hinzugefügt und ihm einen Namen gegeben haben, generiert Google Chat die URL, die Sie in das Feld Payload-URL in Ihrer Benachrichtigungsregel eingeben müssen.
Das folgende Beispiel zeigt die JSON-Nutzlast für einen Google Chat-Webhook:
{ "cards": [ { "header": { "title": "{{title}}" }, "sections": [ { "widgets": [ { "keyValue": { "topLabel": "Risk score", "content": "{{risk_score}}" } }, { "keyValue": { "topLabel": "Categories", "content": "{{categories_string}}" } } {% if offenders %} ,{ "keyValue": { "topLabel": "Offenders", "contentMultiline": "true", "content": "{% for offender in offenders %}{% if offender.name %}{{offender.name}}{% else %}{{offender.ipaddr}}{% endif %}{% if not loop.last %}\n{% endif %}{% endfor %}" } } {% endif %} {% if victims %} ,{ "keyValue": { "topLabel": "Victims", "contentMultiline": "true", "content": "{% for victim in victims %}{% if victim.name %}{{victim.name}}{% else %}{{victim.ipaddr}}{% endif %}{% if not loop.last %}\n{% endif %}{% endfor %}" } } {% endif %} ] }, { "widgets": [ { "buttons": [ { "textButton": { "text": "VIEW DETECTION DETAILS", "onClick": { "openLink": { "url": "{{url}}" } } } } ] } ] } ] } ] }
Danke für deine Rückmeldung. Dürfen wir Sie kontaktieren, um weitere Fragen zu stellen?