UrlScan.io in Google SecOps einbinden

In diesem Dokument wird beschrieben, wie Sie urlscan.io in Google SecOps einbinden.

In diesem Dokument wird beschrieben, wie Sie UrlScan.io in Google Security Operations einbinden.

Anwendungsfälle

Die UrlScan.io-Integration verwendet Google SecOps-Funktionen, um die folgenden Anwendungsfälle zu unterstützen:

  • Automatisierte URL-Analyse: Verdächtige URLs werden automatisch an UrlScan.io gesendet, um Risikostufen zu ermitteln und Screenshots für die visuelle Überprüfung während der Incident-Triage abzurufen.

  • Anreicherung von Threat Intelligence: Warnungen werden durch Abfragen von UrlScan.io nach detaillierten Metadaten zu IP-Adressen, Domains und URLs angereichert. Analysten erhalten so sofortigen Kontext zu ASN, Servertypen und Bewertungen der Bösartigkeit.

  • Proaktive Suche in historischen Scans: Suchen Sie in vorhandenen öffentlichen und privaten Scans, die mit Kompromittierungsindikatoren verknüpft sind, um historische bösartige Aktivitäten und Muster zu identifizieren.

  • Detaillierte Forensik und Berichterstellung: Rufen Sie umfassende Scandetails mit bestimmten Scan-IDs ab, um eine detaillierte Analyse von Cookies, Anfragezahlen und zugehörigen Links für komplexe Sicherheitsuntersuchungen durchzuführen.

Hinweis

Sie benötigen einen gültigen API-Schlüssel, um die Verbindung zwischen Google SecOps und UrlScan.io zu authentifizieren.

Sie können Ihre API-Schlüssel im Bereich Profil Ihres urlscan.io-Kontos abrufen und verwalten.

Integrationsparameter

Für die Integration von urlscan.io sind die folgenden Parameter erforderlich:

Parameter Beschreibung
Api Key

Pflichtangabe.

Der eindeutige API-Schlüssel, der für die Authentifizierung beim urlscan.io-Dienst verwendet wird.

Verify SSL

Optional.

Wenn diese Option ausgewählt ist, validiert die Integration das SSL-Zertifikat, wenn eine Verbindung zum UrlScan.io-Server hergestellt wird.

Eine Anleitung zum Konfigurieren einer Integration in Google SecOps finden Sie unter Integrationen konfigurieren.

Sie können später bei Bedarf Änderungen vornehmen. Nachdem Sie eine Integrationsinstanz konfiguriert haben, können Sie sie in Playbooks verwenden. Weitere Informationen zum Konfigurieren und Unterstützen mehrerer Instanzen finden Sie unter Mehrere Instanzen unterstützen.

Aktionen

Weitere Informationen zu Aktionen finden Sie unter Auf ausstehende Aktionen im Workdesk reagieren und Manuelle Aktion in einem Fall ausführen.

Ping

Verbindung testen

Parameter

–

Anwendungsfälle

–

Ausführen am

Diese Aktion wird für alle Entitäten ausgeführt.

Aktionsergebnisse

Entitätsanreicherung
Statistiken

–

Scriptergebnis
Name des Skriptergebnisses Wertoptionen Beispiel
is_success Wahr/falsch is_success:False
JSON-Ergebnis
N/A

URL-Prüfung

Senden Sie eine URL, die gescannt werden soll, und rufen Sie die Scandetails ab.

Parameter

Parametername Typ Ist obligatorisch Standardwert Beschreibung
Sichtbarkeit

DDL
Mögliche Werte:
public, unlisted, private.

Nein Öffentlich Scans auf urlscan.io haben eine von drei Sichtbarkeitsstufen. Achten Sie darauf, die richtige Stufe für Ihre Einreichung zu verwenden.
Grenzwert integer Nein -1 Entität als verdächtig markieren, wenn die Bewertung der Ergebnisse dem angegebenen Schwellenwert entspricht oder darüber liegt. Der Standardwert ist -1. In diesem Fall wird jede gescannte URL als verdächtig eingestuft.
Insight erstellen Boolesch Nein Ja Wenn diese Option aktiviert ist, wird durch die Aktion eine Statistik mit Informationen zu Entitäten erstellt.
Nur verdächtige Statistiken Boolesch Nein Nein Wenn diese Option aktiviert ist, wird nur für verdächtige Entitäten eine Statistik erstellt. Hinweis: Der Parameter „Insight erstellen“ muss aktiviert sein.
Screenshot zu Insight hinzufügen Boolesch Nein Nein Wenn diese Option aktiviert ist, wird der Statistik ein Screenshot der Website hinzugefügt, sofern verfügbar.

Anwendungsfälle

–

Ausführen am

Diese Aktion wird für die folgenden Entitäten ausgeführt:

  • IP-Adresse
  • Domain
  • URL

Aktionsergebnisse

Entitätsanreicherung
Name Schlüssel
real_url tasks/url
visibility visibility
requests_count len(data/requests)
Cookies CSV-Datei mit Daten/Cookies/Namen
related_links CSV-Datei mit Daten/Links/href
main_country page/country
main_domain Seite/Domain
main_ip page/ip
main_asn page/asnname
main_server Seite/Server
related_ips_count len(lists/ips)
related_domains_count len(lists/domains)
related_countries CSV-Listen/Länder
overall_score verdicts/overall/score
Kategorien verdicts/overall/categories
Tags verdicts/overall/tags
schädlich verdicts/overall/malicious
Statistiken

–

Scriptergebnis
Name des Skriptergebnisses Wertoptionen Beispiel
is_success Wahr/falsch is_success:False
JSON-Ergebnis
[
    {
        "Entity": "https://example.com",
        "EntityResult": {
            "lists": {
                "ips": [
                    "0.0.0.0"
                ],
                "countries": [
                    "ZZ"
                ],
                "asns": [
                    "00000"
                ],
                "domains": [
                    "subdomain.example.com"
                ],
                "servers": [
                    "GenericServer/1.0.0"
                ],
                "urls": [
                    "https://example.com/",
                    "https://example.com/assets/image.png",
                    "https://example.com/assets/script.js",
                    "https://example.com/assets/style.svg",
                    "https://example.com/favicon.ico"
                ],
                "linkDomains": [
                    "node1.example.com",
                    "node2.example.com",
                    "node3.example.com"
                ],
                "certificates": [
                    {
                        "subjectName": "*.example.com",
                        "issuer": "CA-0",
                        "validFrom": 1000000000,
                        "validTo": 2000000000
                    }
                ],
                "hashes": [
                    "hash_string_alpha_001",
                    "hash_string_alpha_002",
                    "hash_string_alpha_003"
                ]
            },
            "page": {
                "asn": "AS00000",
                "asnname": "PROVIDER - Service Provider Inc., ZZ",
                "city": "",
                "country": "ZZ",
                "domain": "subdomain.example.com",
                "ip": "0.0.0.0",
                "ptr": "host.provider.net",
                "server": "GenericServer/1.0.0",
                "url": "https://example.com/",
                "apexDomainAgeDays": 1,
                "mimeType": "application/octet-stream",
                "title": "Title Placeholder",
                "tlsValidDays": 0,
                "tlsAgeDays": 0,
                "domainAgeDays": 1,
                "tlsValidFrom": "2000-01-01T00:00:00.000Z",
                "umbrellaRank": 0,
                "apexDomain": "example.com",
                "tlsIssuer": "CA-0",
                "status": "000"
            },
            "scanner": {
                "country": "zz"
            },
            "stats": {
                "IPv6Percentage": 0,
                "adBlocked": 0,
                "malicious": 0,
                "securePercentage": 0,
                "secureRequests": 0,
                "totalLinks": 0,
                "uniqCountries": 0
            },
            "submitter": {
                "country": "ZZ"
            },
            "task": {
                "method": "system",
                "source": "source_id",
                "time": "2000-01-01T00:00:00.000Z",
                "url": "https://example.com/",
                "uuid": "00000000-0000-0000-0000-000000000000",
                "visibility": "private",
                "reportURL": "https://service.io/result/id/",
                "screenshotURL": "https://service.io/screen/id.png",
                "domURL": "https://service.io/dom/id/",
                "domain": "subdomain.example.com",
                "apexDomain": "example.com"
            },
            "verdicts": {
                "overall": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "service_provider": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "engines": {
                    "score": 0,
                    "malicious": false,
                    "categories": [],
                    "enginesTotal": 0,
                    "maliciousTotal": 0,
                    "benignTotal": 0,
                    "maliciousVerdicts": [],
                    "benignVerdicts": [],
                    "hasVerdicts": false,
                    "tags": [
                        "tag-alpha",
                        "tag-beta"
                    ]
                },
                "community": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "votesTotal": 0,
                    "votesMalicious": 0,
                    "votesBenign": 0,
                    "malicious": false,
                    "hasVerdicts": false
                }
            },
            "is_risky": false
        }
    }
]

Nach Scans suchen

Suchen Sie nach vorhandenen urlscan.io-Scans anhand von Attributen wie Domains, IP-Adressen, AS-Nummern (Autonomous System), Hashes usw. Die Aktion findet öffentliche Scans, die von beliebigen Personen durchgeführt wurden, sowie nicht gelistete und private Scans, die von Ihnen oder Ihren Teams durchgeführt wurden.

Parameter

Parametername Typ Ist obligatorisch Standardwert Beschreibung
Maximale Anzahl von Scans Ganzzahl Nein 100 Anzahl der Scans, die pro Entität zurückgegeben werden sollen. Standard: 100, Max: 10.000 (je nach Abo).

Ausführen am

Diese Aktion wird für die folgenden Entitäten ausgeführt:

  • IP-Adresse
  • Hostnamen
  • URLs
  • Dateiname
  • Hashes
  • Domain

Aktionsergebnisse

Entitätsanreicherung

–

Statistiken

–

Scriptergebnis
Name des Skriptergebnisses Wertoptionen Beispiel
is_success Wahr/falsch is_success:False
JSON-Ergebnis
{"entity_identifier": "www.unitedneighborsfcu.com",
"entity_results":[
  {
        "indexedAt": "2020-12-09T12:16:43.329Z",
        "task": {
            "visibility": "public",
            "method": "automatic",
            "domain": "www.unitedneighborsfcu.com",
            "time": "2020-12-09T12:16:23.168Z",
            "source": "certstream-suspicious",
            "uuid": "96310829-fed4-4d61-9fb0-39eb2952719f",
            "url": "https://www.unitedneighborsfcu.com"
        },
        "stats": {
            "uniqIPs": 6,
            "consoleMsgs": 0,
            "uniqCountries": 3,
            "dataLength": 1938842,
            "encodedDataLength": 1568193,
            "requests": 28
        },
        "page": {
            "country": "US",
            "server": "Microsoft-IIS/10.0",
            "domain": "www.unitedneighborsfcu.com",
            "ip": "8.21.114.55",
            "mimeType": "text/html",
            "asnname": "LEVEL3, US",
            "asn": "AS3356",
            "url": "https://www.unitedneighborsfcu.com/",
            "status": "200"
        },
        "_id": "96310829-fed4-4d61-9fb0-39eb2952719f",
        "sort": [1607516183168, "96310829-fed4-4d61-9fb0-39eb2952719f"],
        "result": "https://urlscan.io/api/v1/result/96310829-fed4-4d61-9fb0-39eb2952719f/",
        "screenshot": "https://urlscan.io/screenshots/96310829-fed4-4d61-9fb0-39eb2952719f.png"
  }
  ]
}
Fall-Repository
Ergebnistyp Wert/Beschreibung Typ
Ausgabenachricht*

Die Aktion sollte nicht fehlschlagen oder die Ausführung eines Playbooks stoppen:

  • if find scans for some of the entities (is_success = true): print "Successfully listed scans for the following entities:\n".format(entity.identifier)
  • If didn't find scans for some of the entities (is_success = true): print "Action wasn't able to list scans for the following entities:\n".format(entity.identifier)
  • Wenn keine Scans für alle Entitäten gefunden wurden(is_success = false): „Aktion konnte keine Scans für die verfügbaren Entitäten auflisten“ ausgeben.
  • Wenn keine Entitäten vorhanden sind: Ausgabe „No suitable entities were found in the current scope.“

    Die Aktion sollte fehlschlagen und die Playbook-Ausführung beenden:
    Bei einem schwerwiegenden Fehler, z. B. falsche Anmeldedaten, keine Verbindung zum Server, andere: Ausgabe „Error executing action „Search for Scans“. Reason: {0}''.format(error.Stacktrace).
Allgemein
Tabelle mit Fall-Repository

Titel: „{entity identifier} – Suchergebnisse“

Spalten:

Scan-ID

URL

Datum des Scans

Größe

IPS

Einzelne Länder

Land

Scantyp

Allgemein
Link zum Fall-Repository Titel: urlscan.io-Webbericht + (Entitäts-ID). Allgemein
Anhang im Fall-Repository Enthält den Screenshot. Allgemein

Vollständige Scandetails abrufen

Vollständige Scandetails nach Scan-ID abrufen

Parameter

Parametername Typ Ist obligatorisch Standardwert Beschreibung
Scan-ID String Ja – Scanbericht mithilfe der Scan-ID abrufen. CSV.

Ausführen am

Diese Aktion wird nicht für Entitäten ausgeführt.

Aktionsergebnisse

Entitätsanreicherung

–

Statistiken

–

Scriptergebnis
Name des Skriptergebnisses Wertoptionen Beispiel
is_success Wahr/falsch is_success:False
JSON-Ergebnis
['Effective URL'] = response['page']['url']
Fall-Repository
Ergebnistyp Wert/Beschreibung Typ
Ausgabenachricht*

Die Aktion sollte nicht fehlschlagen oder die Ausführung eines Playbooks stoppen:

  • if find some scan ids (is_success = true): print "Successfully fetched results for the following scans: {scan ids}
  • Wenn einige nicht gefunden wurden (is_success = true): „Action wasn't able to fetch results for the following scans: {scan ids}“ ausgeben
  • Wenn nicht alle gefunden wurden (is_success = false): Ausgabe „Aktion konnte keine Ergebnisse abrufen. Die angegebenen Scan-IDs sind über urlscan.io nicht verfügbar.“

Die Aktion sollte fehlschlagen und die Ausführung des Playbooks beenden:

  • Bei schwerwiegendem Fehler, z. B. falsche Anmeldedaten, keine Verbindung zum Server, Sonstiges: „Fehler beim Ausführen der Aktion ‚Vollständige Scandetails abrufen‘“ ausgeben. Reason: {0}''.format(error.Stacktrace)
Allgemein
Link zum Fall-Repository Titel: urlscan.io-Webbericht + (Scan-ID). Allgemein
Anhang im Fall-Repository Enthält den Screenshot. Allgemein

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten