Intégrer UrlScan.io à Google SecOps

Ce document explique comment intégrer urlscan.io à Google SecOps.

Ce document explique comment intégrer UrlScan.io à Google Security Operations.

Cas d'utilisation

L'intégration UrlScan.io utilise les fonctionnalités de Google SecOps pour prendre en charge les cas d'utilisation suivants :

  • Analyse automatisée des URL : envoyez automatiquement les URL suspectes à UrlScan.io pour déterminer les niveaux de risque et récupérer des captures d'écran pour une vérification visuelle lors du tri des incidents.

  • Enrichissement des renseignements sur les menaces : enrichissez les alertes en interrogeant UrlScan.io pour obtenir des métadonnées détaillées sur les adresses IP, les domaines et les URL, ce qui fournit aux analystes un contexte immédiat sur l'ASN, les types de serveurs et les scores de malveillance.

  • Recherche proactive dans l'historique des analyses : recherchez des analyses publiques et privées existantes associées à des indicateurs de compromission pour identifier les activités et les schémas malveillants passés.

  • Analyse approfondie et rapports : récupérez des informations détaillées sur l'analyse à l'aide d'ID d'analyse spécifiques pour effectuer une analyse approfondie des cookies, du nombre de requêtes et des liens associés pour des enquêtes de sécurité complexes.

Avant de commencer

Pour authentifier la connexion entre Google SecOps et UrlScan.io, vous devez fournir une clé API valide.

Vous pouvez obtenir et gérer vos clés API dans la section Profile (Profil) de votre compte urlscan.io.

Paramètres d'intégration

L'intégration urlscan.io nécessite les paramètres suivants :

Paramètre Description
Api Key

Obligatoire.

Clé API unique utilisée pour l'authentification auprès du service urlscan.io.

Verify SSL

Facultatif.

Si cette option est sélectionnée, l'intégration valide le certificat SSL lors de la connexion au serveur UrlScan.io.

Pour savoir comment configurer une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement si nécessaire. Après avoir configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour en savoir plus sur la configuration et la prise en charge de plusieurs instances, consultez Prendre en charge plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis votre bureau et Exécuter une action manuelle dans votre demande.

Ping

Tester la connectivité.

Paramètres

N/A

Cas d'utilisation

N/A

Exécuter sur

Cette action s'exécute sur toutes les entités.

Résultats de l'action

Enrichissement d'entités
Insights

N/A

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
N/A

Vérification d'URL

Envoyez une URL à analyser et obtenez les détails de l'analyse.

Paramètres

Nom du paramètre Type Is Mandatory Valeur par défaut Description
Visibilité

DDL
possible :
public, non répertorié, privé.

Non publique Les analyses sur urlscan.io ont l'un des trois niveaux de visibilité. Assurez-vous d'utiliser le niveau approprié pour votre envoi.
Seuil entier Non -1 Marquez l'entité comme suspecte si le score des verdicts est égal ou supérieur au seuil donné. La valeur par défaut est -1. Dans ce cas, nous considérons chaque URL analysée comme suspecte.
Créer un insight Booléen Non Oui Si cette option est activée, l'action crée un insight contenant des informations sur les entités.
Insight suspect uniquement Booléen Non Non Si cette option est activée, l'action ne créera d'insight que pour les entités suspectes. Remarque : Le paramètre "Créer un insight" doit être activé.
Ajouter une capture d'écran à l'insight Booléen Non Non Si cette option est activée, l'action ajoutera une capture d'écran du site Web à l'insight, si elle est disponible.

Cas d'utilisation

N/A

Exécuter sur

Cette action s'exécute sur les entités suivantes :

  • Adresse IP
  • Domaine
  • URL

Résultats de l'action

Enrichissement d'entités
Nom Clé
real_url tasks/url
visibility visibility
requests_count len(data/requests)
cookies CSV de données/cookies/nom
related_links Fichier CSV de données/liens/href
main_country page/country
main_domain page/domain
main_ip page/ip
main_asn page/asnname
main_server page/serveur
related_ips_count len(lists/ips)
related_domains_count len(lists/domains)
related_countries CSV lists/countries
overall_score verdicts/overall/score
categories verdicts/overall/categories
tags verdicts/overall/tags
malveillant verdicts/overall/malicious
Insights

N/A

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
[
    {
        "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
        }
    }
]

Rechercher des analyses

Recherchez des analyses urlscan.io existantes par attributs tels que les domaines, les adresses IP, les numéros de système autonome (AS), les hachages, etc. L'action trouvera les analyses publiques effectuées par n'importe qui, ainsi que les analyses non répertoriées et privées effectuées par vous ou vos équipes.

Paramètres

Nom du paramètre Type Is Mandatory Valeur par défaut Description
Nombre maximal d'analyses Integer Non 100 Nombre d'analyses à renvoyer par entité. Valeur par défaut : 100, valeur maximale : 10 000 (selon l'abonnement).

Exécuter sur

Cette action s'exécute sur les entités suivantes :

  • Adresse IP
  • Noms d'hôte
  • URL
  • Nom de fichier
  • Hachages
  • Domaine

Résultats de l'action

Enrichissement d'entités

N/A

Insights

N/A

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
{"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"
  }
  ]
}
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si la recherche d'analyses pour certaines entités aboutit (is_success = true) : print "Successfully listed scans for the following entities:\n".format(entity.identifier)
  • Si aucune analyse n'a été trouvée pour certaines entités (is_success = true) : affichez "Action wasn't able to list scans for the following entities:\n".format(entity.identifier)
  • Si aucune analyse n'a été trouvée pour toutes les entités(is_success = false) : affichez "Action wasn't able to list scans for the available entities".
  • S'il n'y a pas d'entités : affichez "Aucune entité appropriée n'a été trouvée dans le champ d'application actuel".

    L'action doit échouer et arrêter l'exécution du playbook :
    en cas d'erreur fatale, comme des identifiants incorrects, l'absence de connexion au serveur, etc. : affichez "Erreur lors de l'exécution de l'action 'Rechercher des analyses'". Reason: {0}''.format(error.Stacktrace).
Général
Tableau du mur des cas

Titre : "{entity identifier} - Résultats de recherche"

Colonnes :

ID de l'analyse

URL

Date de l'analyse

Taille

IPS

Pays uniques

Pays

Type d'analyse

Général
Lien vers le mur des cas Titre : "Rapport Web urlscan.io + (ID d'entité). Général
Pièce jointe au mur des cas Contiendra la capture d'écran. Général

Obtenir tous les détails de l'analyse

Obtenir tous les détails d'une analyse par ID d'analyse

Paramètres

Nom du paramètre Type Is Mandatory Valeur par défaut Description
ID de l'analyse Chaîne Oui N/A Obtenez un rapport d'analyse à l'aide de l'ID d'analyse. Valeurs séparées par une virgule.

Exécuter sur

Cette action ne s'exécute pas sur les entités.

Résultats de l'action

Enrichissement d'entités

N/A

Insights

N/A

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
['Effective URL'] = response['page']['url']
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • if find some scan ids (is_success = true): print "Successfully fetched results for the following scans: {scan ids}
  • Si certains n'ont pas été trouvés (is_success = true) : affichez "L'action n'a pas pu récupérer les résultats pour les analyses suivantes : {scan ids}".
  • Si tous les résultats n'ont pas été trouvés (is_success = false) : afficher "L'action n'a pas pu récupérer les résultats. Les ID d'analyse fournis ne sont pas disponibles avec urlscan.io"

L'action doit échouer et arrêter l'exécution d'un playbook :

  • En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.), affichez "Error executing action "Get Scan Full Details". Reason: {0}''.format(error.Stacktrace)
Général
Lien vers le mur des cas Titre : "urlscan.io Web Report + (ID d'analyse). Général
Pièce jointe au mur des cas Contiendra la capture d'écran. Général

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.