MISP-IOC-Logs erfassen

Unterstützt in:

Übersicht

Dieser Parser extrahiert IOCs aus MISP-Daten, die im JSON- oder CSV-Format vorliegen. Er analysiert die Eingabe, ordnet Felder dem UDM zu, verarbeitet verschiedene IOC-Typen (IP, Domain, Datei-Hashes usw.) und ergänzt die Daten um Kontextinformationen zur Bedrohungsinformationen wie Wahrscheinlichkeit und Schwere. Der Parser führt außerdem eine spezifische Logik für verschiedene Datenformate aus und verarbeitet Fälle mit fehlenden oder nicht unterstützten Feldern.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen erhöhte Zugriffsrechte für MISP.

Feed in Google SecOps konfigurieren, um MISP-Bedrohungsinformationen-Logs aufzunehmen

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. MISP-Logs.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie MISP Threat Intelligence als Protokolltyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B. \n.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. Kopieren und speichern Sie den geheimen Schlüssel. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben.

  3. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Ersetzen Sie Folgendes:

    • ENDPOINT_URL: die URL des Feedendpunkts.
    • API_KEY: Der API-Schlüssel für die Authentifizierung bei Google Security Operations.
    • SECRET: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.

Senden von HTTP-Anfragen an externe URL in MISP aktivieren

  1. Rufen Sie den Computer auf, auf dem MISP bereitgestellt ist.
  2. Bearbeiten Sie die Datei config.php unter app/Config/.
  3. Suchen Sie die rest_client_enable_arbitrary_urls-Konfiguration und legen Sie sie auf True fest. none 'rest_client_enable_arbitrary_urls' => true
  4. Speichern Sie die Datei.

Webhook in MISP für Google SecOps konfigurieren

  1. Melden Sie sich in MISP Threat Intelligence an.
  2. Gehen Sie zu Verwaltung > Workflows > Module auflisten.
  3. Wählen Sie Webhook aus.
  4. Klicken Sie in der Spalte Aktion auf Aktivieren.
  5. Gehen Sie zu Workflows > Trigger auflisten.
  6. Wählen Sie den gewünschten Webhook-Trigger aus.
  7. Wählen Sie in der Liste der Module Webhook aus.
  8. Ziehen Sie sie per Drag-and-drop in den Arbeitsbereich.
  9. Verbinden Sie die Eingabe mit der Ausgabe des Trigger.
  10. Füllen Sie im Webhook-Modul die folgenden Felder aus:
    • URL: Geben Sie die ENDPOINT_URL gefolgt von API_KEY und SECRET ein.
    • HTTP-Anfragemethode: Wählen Sie POST aus.
  11. Klicken Sie auf Speichern.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Attribute.category event.idm.entity.metadata.threat.category_details Wird direkt aus Attribute.category im verschachtelten JSON-Objekt im Feld „data“ zugeordnet. Wird im JSON-Parsepfad verwendet.
Attribute.comment event.idm.entity.metadata.threat.summary Wird direkt aus Attribute.comment im verschachtelten JSON-Objekt im Feld „data“ zugeordnet. Wird im JSON-Parsepfad verwendet.
Attribute.deleted event.idm.entity.metadata.threat.detection_fields.value Wird direkt von Attribute.deleted zugeordnet und als Erkennungsfeld mit dem Schlüssel „Attribut gelöscht“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Attribute.event_id event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Attribute.event_id zugeordnet und als Erkennungsfeld mit dem Schlüssel „Attribut event_id“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Attribute.first_seen event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Attribute.first_seen zugeordnet und als Erkennungsfeld mit dem Schlüssel „Attribut first_seen“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Attribute.id event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Attribute.id zugeordnet und je nach Parsepfad als Erkennungsfeld mit dem Schlüssel „Attribut-ID“ oder „Attribut-ID $$“ hinzugefügt. Wird sowohl in CSV- als auch in JSON-Parsing-Pfaden verwendet.
Attribute.timestamp event.idm.entity.metadata.threat.detection_fields.value Wird direkt von Attribute.timestamp zugeordnet und als Erkennungsfeld mit dem Schlüssel „Attribut-Zeitstempel“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Attribute.to_ids event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Attribute.to_ids zugeordnet und als Erkennungsfeld mit dem Schlüssel „Attribut to_ids“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Attribute.type log_type Wird direkt aus Attribute.type im verschachtelten JSON-Objekt im Feld „data“ zugeordnet. Wird als Zwischenfeld verwendet und später zum Ausfüllen anderer UDM-Felder verwendet. Wird im JSON-Parsepfad verwendet.
Attribute.uuid event.idm.entity.metadata.product_entity_id Wird direkt aus Attribute.uuid im verschachtelten JSON-Objekt im Feld „data“ zugeordnet. Wird im JSON-Parsepfad verwendet.
Attribute.value Mehrere Der Wert dieses Felds wird verwendet, um je nach Attribute.type (oder log_type, wenn aus Attribute.type abgeleitet) mehrere UDM-Felder auszufüllen:
 – event.idm.entity.entity.hostname, wenn type „domain“ ist.
 – event.idm.entity.entity.file.md5, wenn type „md5“ ist.
 – event.idm.entity.entity.file.sha1, wenn type „sha1“ ist.
 – event.idm.entity.entity.file.sha256, wenn type „sha256“ ist.
 – event.idm.entity.entity.resource.name, wenn type „mutex“ ist.
 – event.idm.entity.entity.registry.registry_key, wenn type „regkey“ ist.
 – event.idm.entity.entity.user.email_addresses, wenn type „Angriffsziel“ ist.
 – event.idm.entity.entity.url, wenn type „uri“ oder „url“ ist.
 – event.idm.entity.entity.file.full_path, wenn type „filename“ ist.
: Wird nach IP-Adresse und Port geparst, wenn type „ip-dst|port“, „ip-dst“ oder „ip-src“ ist. Wird im JSON-Parsepfad verwendet.
column1 event.idm.entity.metadata.product_entity_id Wird direkt von column1 im CSV-Parsepfad zugeordnet.
column14 Teil von event.idm.entity.metadata.threat.description Wird mit description zusammengeführt, um die endgültige Beschreibung in den Metadaten der Bedrohung zu bilden. Wird im CSV-Parsepfad verwendet.
column16 event.idm.entity.metadata.threat.threat_feed_name, event.ioc.feed_name Direkt von column16 zugeordnet. Wird im CSV-Parsepfad verwendet.
column18 event.idm.entity.metadata.threat.severity_details, event.ioc.raw_severity Direkt von column18 zugeordnet. Wird im CSV-Parsepfad verwendet.
column21 Teil von event.idm.entity.metadata.threat.description, event.ioc.description Wird als Grundlage für die Beschreibung verwendet und später mit event_info zusammengefügt. Wird im CSV-Parsepfad verwendet.
column3 Teil von event.ioc.categorization Werden direkt aus column3 zugeordnet und mit „IOCs“ zusammengeführt, um die endgültige Kategorisierung zu bilden. Wird im CSV-Parsepfad verwendet.
column4 event.idm.entity.metadata.description Direkt von column4 zugeordnet. Wird im CSV-Parsepfad verwendet.
column5 Mehrere Der Wert dieses Felds wird verwendet, um je nach Feld column4 (das type zugeordnet ist) mehrere UDM-Felder auszufüllen:
 – event.idm.entity.entity.hostname, wenn type „domain“ ist.
: Wird nach IP-Adresse und Port geparst, wenn type „ip-dst|port“, „ip-dst“ oder „ip-src“ ist.
 – event.idm.entity.entity.file.md5, wenn type „md5“ ist.
 – event.idm.entity.entity.file.sha1, wenn type „sha1“ ist.
 – event.idm.entity.entity.file.sha256, wenn type „sha256“ ist.
 – event.idm.entity.entity.resource.name, wenn type „mutex“ ist.
 – event.idm.entity.entity.registry.registry_key, wenn type „regkey“ ist.
 – event.idm.entity.entity.user.email_addresses, wenn type „Angriffsziel“ ist.
 – event.idm.entity.entity.url, wenn type „uri“ oder „url“ ist.
 – event.idm.entity.entity.file.full_path, wenn type „filename“ ist. Wird im CSV-Parsepfad verwendet.
column6 event.idm.entity.metadata.threat.summary Direkt von column6 zugeordnet. Wird im CSV-Parsepfad verwendet.
column8 event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Wird als UNIX-Zeitstempel geparst. Wird im CSV-Parsepfad verwendet.
date description event.idm.entity.metadata.threat.description Wird direkt aus description im verschachtelten JSON-Objekt im Feld „data“ zugeordnet. Wird im JSON-Parsepfad verwendet.
event_creator_email event.idm.entity.entity.labels.value Direkt aus event_creator_email zugeordnet und als Label mit dem Schlüssel „event_creator_email“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
event_id Feed.publish event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Feed.publish zugeordnet und als Erkennungsfeld mit dem Schlüssel „Feed publish“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
first_seen event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Wird als Zeitstempel im Format „JJJJ-MM-TTThh:mm:ssZZ“ geparst. Wird im JSON-Parsepfad verwendet.
id info event.idm.entity.metadata.description Wird direkt aus info im verschachtelten JSON-Objekt im Feld „data“ zugeordnet. Wird im JSON-Parsepfad verwendet.
last_seen event.ioc.active_timerange.end Wird als Zeitstempel im Format „JJJJ-MM-TTThh:mm:ssZZ“ geparst. Wird im JSON-Parsepfad verwendet.
Org.name event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Org.name zugeordnet und als Erkennungsfeld mit dem Schlüssel „Name der Organisation“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
published event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus published zugeordnet und als Erkennungsfeld mit dem Schlüssel „published“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.colour event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.colour zugeordnet und als Erkennungsfeld mit dem Schlüssel „Tag-Farbe“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.exportable event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.exportable zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag exportable“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.hide_tag event.idm.entity.metadata.threat.detection_fields.value Wird direkt von Tag.hide_tag zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag hide_tag“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.id event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.id zugeordnet und als Erkennungsfeld mit dem Schlüssel „Tag-ID“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.is_custom_galaxy event.idm.entity.metadata.threat.detection_fields.value Wird direkt von Tag.is_custom_galaxy zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag is_custom_galaxy“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.is_galaxy event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.is_galaxy zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag is_galaxy“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.isinherited event.idm.entity.metadata.threat.detection_fields.value Wird direkt von Tag.isinherited zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag isinherited“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.name event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.name zugeordnet und als Erkennungsfeld mit dem Schlüssel „Tag-Name“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.numerical_value event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.numerical_value zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag numerical_value“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
Tag.user_id event.idm.entity.metadata.threat.detection_fields.value Wird direkt aus Tag.user_id zugeordnet und als Erkennungsfeld mit dem Schlüssel „tag user_id“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
threat_level_id event.idm.entity.entity.labels.value Direkt aus threat_level_id zugeordnet und als Label mit dem Schlüssel „threat_level_id“ hinzugefügt. Wird im JSON-Parsepfad verwendet.
timestamp event.idm.entity.metadata.collected_timestamp, event.idm.entity.metadata.interval.start_time Wird als UNIX-Zeitstempel geparst. Wird im CSV-Parsepfad verwendet.
uuid event.idm.entity.metadata.vendor_name Wird vom Parser auf „MISP“ festgelegt. Wird vom Parser auf „MISP“ festgelegt. Legen Sie einen Standardwert fest, der weit in der Zukunft liegt (253402300799 Sekunden seit der Epoche). Wird vom Parser anhand des Felds type oder log_type ermittelt. Kann „FILE“, „DOMAIN_NAME“, „IP_ADDRESS“, „MUTEX“, „RESOURCE“ oder „USER“ sein. Kann je nach Attribute.type von Attribute.comment oder Attribute.value abgeleitet werden. Wird aus Attribute.value oder column5 geparst, wenn der Typ IP-bezogen ist. Wird aus Attribute.value oder column5 geparst, wenn der Typ „ip-dst|port“ ist. Abgeleitet von column3 beim CSV-Parsing oder Attribute.category beim JSON-Parsing. Wird beim CSV-Parsing aus column21 und column14 abgeleitet. Abgeleitet von column8 oder first_seen. Abgeleitet von last_seen. Aus description mithilfe eines Grok-Musters abgeleitet. Wird von column16 abgeleitet oder auf „MISP“ festgelegt. Abgeleitet von column18. Wird aus Attribute.value oder column5 geparst, wenn der Typ IP-bezogen ist. Wird aus Attribute.value oder column5 geparst, wenn der Typ „ip-dst|port“ ist. Wird von Attribute.value oder column5 abgeleitet, wenn der Typ „domain“ ist. Abgeleitet aus dem Feld confidence, das aus dem Feld description extrahiert wird. Mögliche Werte sind „HIGH_CONFIDENCE“, „MEDIUM_CONFIDENCE“, „LOW_CONFIDENCE“ oder „UNKNOWN_CONFIDENCE“. Wird direkt aus dem Feld confidence zugeordnet, das aus dem Feld description extrahiert wird. Wird direkt aus dem Feld threat_level zugeordnet, das aus column18 im CSV-Parsepfad abgeleitet wird. Wird direkt aus dem Feld feed_name zugeordnet, das aus column16 im CSV-Parsepfad abgeleitet wird. Wird beim CSV-Parsing aus column21 und column14 abgeleitet. Abgeleitet von column6 beim CSV-Parsing oder Attribute.comment beim JSON-Parsing. Mehrere Felder werden als Erkennungsfelder mit den entsprechenden Schlüsseln hinzugefügt. Mehrere Felder werden als Labels mit den entsprechenden Schlüsseln hinzugefügt. Aus dem Feld timestamp der obersten Ebene im Rohprotokoll kopiert.

Änderungen

2023-09-26

  • Die folgenden Attribute wurden zugeordnet: „published“, „Feed.publish“, „Org.name“, „Attribute.id“, „Attribute.event_id“, „Attribute.to_ids“, „Attribute.timestamp“, „Attribute.comment“, „Attribute.deleted“, „Attribute.first_seen“ und alle „tag.names“ zu „threat.detection_fields“.

2023-08-17

  • Fehlerkorrektur :
  • Es wurde eine Bedingung hinzugefügt, um einen „gsub“-Vorgang auszuführen, der nur dann zusätzliche Backslashes entfernt, wenn das Protokoll kein JSON-Format hat.

2023-07-20

  • Fehlerkorrektur :
  • „metadata.entity_type“ in „MUTEX“ geändert, wenn das Protokoll vom Typ „mutex“ ist.

2023-07-04

  • Neu erstellter Parser.