Intégrer APIVoid à Google SecOps
Ce document explique comment intégrer APIVoid à Google Security Operations (Google SecOps).
Avant de commencer
Avant de configurer l'intégration d'APIVoid dans Google SecOps pour la v2, vérifiez que vous disposez des éléments suivants :
Compte APIVoid v2 : compte actif ayant accès aux services de l'API v2.
Clé API APIVoid v2 : nouvelle clé API générée spécifiquement pour les API v2 à partir de votre tableau de bord utilisateur APIVoid.
Points de terminaison d'API mis à jour : vous devez connaître les URL des points de terminaison d'API v2 mis à jour pour les services APIVoid spécifiques que vous prévoyez d'utiliser (par exemple, l'API IP Reputation ou l'API Domain Reputation).
Générer une clé API APIVoid v2
Pour générer votre clé API APIVoid v2, procédez comme suit :
Connectez-vous au tableau de bord utilisateur d'APIVoid.
Accédez à la section Clés API. (L'emplacement peut varier en fonction des mises à jour du tableau de bord.)
Générez une clé API. Copiez et stockez immédiatement la clé de manière sécurisée. Il ne s'affiche qu'une seule fois.
Réseau
| Fonction | Port par défaut | Direction | Protocole |
|---|---|---|---|
| API | Multivalues | Sortant | apikey |
Paramètres d'intégration
Utilisez les paramètres suivants pour configurer l'intégration :
| Nom du paramètre | Type | Valeur par défaut | Est obligatoire | Description |
|---|---|---|---|---|
| Nom de l'instance | Chaîne | N/A | Non | Nom de l'instance pour laquelle vous souhaitez configurer l'intégration. |
| Description | Chaîne | N/A | Non | Description de l'instance. |
| Racine de l'API | Chaîne | https://endpoint.apivoid.com | Oui | Adresse de l'instance APIVoid. |
| Clé API | Mot de passe | N/A | Oui | Clé API générée dans la console d'APIVoid. |
| Vérifier le protocole SSL | Case à cocher | Décochée | Non | Cochez cette case si votre connexion APIVoid nécessite une validation SSL. |
| Exécuter à distance | Case à cocher | Décochée | Non | Cochez le champ pour exécuter l'intégration configurée à distance. Une fois cette option cochée, l'option permettant de sélectionner l'utilisateur distant (agent) s'affiche. |
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.
Obtenir la réputation du domaine
La vérification de la réputation d'un domaine permet de savoir si un domaine est exclu par des services de listes de blocage de domaines populaires et de confiance, tels que URLVir, ThreatLog, OpenPhish, Spam404, PhishTank, ZeuS Tracker, etc. Les services de listes de blocage de plusieurs domaines identifient les sites Web potentiellement malveillants et frauduleux impliqués dans la distribution de logiciels malveillants, les incidents d'hameçonnage et les fausses boutiques en ligne.
Paramètres
| Nom du paramètre | Type | Valeur par défaut | Est obligatoire | Description |
|---|---|---|---|---|
| Seuil | Chaîne | 0 | Oui | Seuil de risque du domaine. Le seuil doit être une valeur numérique. Exemple : 3 |
| Créer des insights | Case à cocher | Cochée | Oui | Indiquez si l'action doit créer des insights ou non. |
Cas d'utilisation
L'un des cas d'utilisation de l'API Domain Reputation consiste à vérifier si les sites Web du client sont exclus, à vérifier les URL envoyées par les utilisateurs sur votre application ou à identifier les sites Web potentiellement malveillants et dangereux.
Exécution
Cette action s'exécute sur les entités suivantes :
- Nom d'hôte
- URL
Résultats de l'action
Enrichissement d'entités
Marquez l'entité comme suspecte si le nombre de moteurs négatifs est égal ou supérieur au seuil indiqué.
| Nom du champ d'enrichissement | Logique : quand les utiliser ? |
|---|---|
| alexa_top_100k | Renvoie s'il existe dans le résultat JSON |
| domain_length | Renvoie s'il existe dans le résultat JSON |
| alexa_top_10k | Renvoie s'il existe dans le résultat JSON |
| listes noires | Renvoie s'il existe dans le résultat JSON |
| serveur | Renvoie s'il existe dans le résultat JSON |
| hôte | Renvoie s'il existe dans le résultat JSON |
| most_abused_tld | Renvoie s'il existe dans le résultat JSON |
| alexa_top_250k | Renvoie s'il existe dans le résultat JSON |
Insights
| Gravité | Description |
|---|---|
| Avertissement | Un insight d'avertissement est créé pour informer de l'état malveillant de l'entité enrichie. Il est créé lorsque le nombre de moteurs détectés est égal ou supérieur au seuil de suspicion minimal défini avant l'analyse. |
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| success | Vrai/Faux | success:False |
Résultat JSON
[
{
"EntityResult": {
"alexa_top_100k": false,
"domain_length": 17,
"alexa_top_10k": false,
"blacklists": {
"scantime": "0.07",
"detection_rate": "0%",
"detections": 0,
"engines_count": 29,
"engines": [{
"engine": "ThreatLog",
"detected": false,
"confidence": "high",
"reference": "http://www.threatlog.com/"
}, {
"engine": "Threat Sourcing",
"detected": false,
"confidence": "high",
"reference": "https://www.threatsourcing.com/"
}, {
"engine": "URLVir",
"detected": false,
"confidence": "high",
"reference": "http://www.urlvir.com/"
}]},
"server": {
"region_name": null,
"reverse_dns": " ",
"ip": " ",
"isp": null,
"continent_code": null,
"latitude": null,
"city_name": null,
"longitude": null,
"country_code": null,
"country_name": null,
"continent_name": null
},
"host": "example.com",
"most_abused_tld": false,
"alexa_top_250k": false
},
"Entity": "example.com"
}, {
"EntityResult": {
"alexa_top_100k": false,
"domain_length": 9,
"alexa_top_10k": false,
"blacklists": {
"scantime": "0.03",
"detection_rate": "0%",
"detections": 0,
"engines_count": 29,
"engines": [{
"engine": "ThreatLog",
"detected": false,
"confidence": "high",
"reference": "http://www.threatlog.com/"
}, {
"engine": "Threat Sourcing",
"detected": false,
"confidence": "high",
"reference": "https://www.threatsourcing.com/"
}, {
"engine": "URLVir",
"detected": false,
"confidence": "high",
"reference": "http://www.urlvir.com/"
}]},
"server": {
"region_name": null,
"reverse_dns": " ",
"ip": " ",
"isp": null,
"continent_code": null,
"latitude": null,
"city_name": null,
"longitude": null,
"country_code": null,
"country_name": null,
"continent_name": null
},
"host": "192.0.2.1",
"most_abused_tld": false,
"alexa_top_250k": false
},
"Entity": "192.0.2.1"
}
]
Obtenir la réputation de l'adresse IP
L'API IP Reputation détecte les adresses IP potentiellement malveillantes qui sont couramment utilisées pour le spam, les attaques de sites Web ou les activités frauduleuses.
Paramètres
| Paramètre | Type | Valeur par défaut | Est obligatoire | Description |
|---|---|---|---|---|
| Seuil | Chaîne | N/A | Oui | Seuil de risque de l'adresse IP. Le seuil doit être une valeur numérique. Exemple : 3. |
| Créer des insights | Case à cocher | Cochée | Oui | Indiquez si l'action doit créer des insights ou non. |
Exécution
Cette action s'exécute sur l'entité "Adresse IP".
Résultats de l'action
Enrichissement d'entités
Marquez l'entité comme suspecte si le nombre de moteurs négatifs est égal ou supérieur au seuil indiqué.
| Nom du champ d'enrichissement | Logique : quand les utiliser ? |
|---|---|
| les informations | Renvoie s'il existe dans le résultat JSON |
| listes noires | Renvoie s'il existe dans le résultat JSON |
| anonymat | Renvoie s'il existe dans le résultat JSON |
| ip | Renvoie s'il existe dans le résultat JSON |
Insights
| Gravité | Description |
|---|---|
| Avertissement | Un insight d'avertissement est créé pour informer de l'état malveillant du hachage enrichi. L'insight est créé lorsque le nombre de moteurs détectés est égal ou supérieur au seuil minimal de suspicion défini avant l'analyse. |
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| success | Vrai/Faux | success:False |
Résultat JSON
[
{
"EntityResult": {
"information": {
"is_proxy": false,
"is_vpn": false,
"region_name": "Zhejiang",
"is_webproxy": false,
"latitude": 28.680280685424805,
"isp": "ChinaNet Zhejiang Province Network",
"continent_code": "AS",
"is_tor": false,
"reverse_dns": " ",
"detections": 18,
"engines_count": 76,
"longitude": 121.44277954101562,
"city_name": "Jiaojiang",
"country_name": "China",
"continent_name": "Asia",
"detection_rate": "24%",
"country_code": "CN",
"is_hosting": false
},
"blacklists": {
"scantime": "0.57",
"detection_rate":
"24%",
"detections": 18,
"engines_count": 76,
"engines": [{
"engine": "PlonkatronixBL",
"detected": false,
"reference": "http://bl.plonkatronix.com/"
}, {
"engine": "Engine",
"detected": true,
"reference": "https://home.nuug.no/~engine/"
}, {"engine": "Malc0de",
"detected": false,
"reference": "http://malc0de.com/database/index.php"
}]},
"anonymity": {
"is_tor": false,
"is_proxy": false,
"is_vpn": false,
"is_webproxy": false,
"is_hosting": false
},
"ip": "192.0.2.1"
},
"Entity": "192.0.2.1"
}
]
Obtenir la réputation de l'URL
Obtenez la réputation de sécurité et le score de risque d'une URL.
Paramètres
| Nom du paramètre | Type | Valeur par défaut | Est obligatoire | Description |
|---|---|---|---|---|
| Seuil | Integer | N/A | Oui | Seuil de risque de l'URL. Le seuil doit être une valeur numérique. Exemple : 3 |
Cas d'utilisation
Un analyste peut récupérer la réputation de l'URL, de la même manière qu'il récupère la réputation d'un domaine ou d'une adresse IP.
Exécution
Cette action s'exécute sur l'entité URL.
Résultats de l'action
Enrichissement d'entités
Marquer l'entité comme suspecte si le nombre de moteurs négatifs est égal ou supérieur au seuil donné. if data.get("report", {}).get("risk_score", {}).get("result") > threshold
| Nom du champ d'enrichissement | Logique : quand les utiliser ? |
|---|---|
| domain_blacklist | Renvoie s'il existe dans le résultat JSON |
| html_forms | Renvoie s'il existe dans le résultat JSON |
| server_details | Renvoie s'il existe dans le résultat JSON |
| response_headers | Renvoie s'il existe dans le résultat JSON |
| redirection | Renvoie s'il existe dans le résultat JSON |
| file_type | Renvoie s'il existe dans le résultat JSON |
| risk_score | Renvoie s'il existe dans le résultat JSON |
| security_checks | Renvoie s'il existe dans le résultat JSON |
| geo_location | Renvoie s'il existe dans le résultat JSON |
| url_parts | Renvoie s'il existe dans le résultat JSON |
| site_category | Renvoie s'il existe dans le résultat JSON |
| web_page | Renvoie s'il existe dans le résultat JSON |
| dns_records | Renvoie s'il existe dans le résultat JSON |
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success:False |
Résultat JSON
[
{
"EntityResult": {
"domain_blacklist": {
"detections": 0,
"engines": [{
"detected": false,
"name": "SpamhausDBL", "reference": "https://www.spamhaus.org/lookup/"
}, {
"detected": false,
"name": "ThreatLog",
"reference": "http://www.threatlog.com/"
}, {
"detected": false,
"name": "OpenPhish",
"reference": "http://www.openphish.com/"
}, {
"detected": false,
"name": "PhishTank",
"reference": "http://www.phishtank.com/"
}, {
"detected": false,
"name": "Phishing.Database",
"reference": "https://github.com/mitchellkrogza/Phishing.Database"
}, {
"detected": false,
"name": "PhishStats",
"reference": "https://phishstats.info/"
}, {
"detected": false,
"name": "URLVir",
"reference": "http://www.urlvir.com/"
}, {
"detected": false,
"name": "URLhaus",
"reference": "https://urlhaus.abuse.ch/"
}, {
"detected": false,
"name": "RPiList Not Serious",
"reference": "https://github.com/RPiList/specials"
}, {
"detected": false,
"name": "precisionsec",
"reference": "https://precisionsec.com/"
}, {
"detected": false,
"name": "AntiSocial Blacklist",
"reference": "https://theantisocialengineer.com/"
}, {
"detected": false,
"name": "PhishFeed",
"reference": "https://phishfeed.com/"
}, {
"detected": false,
"name": "Spam404",
"reference": "https://www.spam404.com/"
}]},
"html_forms": {
"number_of_total_input_fields": 0,
"email_field_present": false,
"number_of_total_forms": 0,
"password_field_present": false,
"two_text_inputs_in_a_form": false,
"credit_card_field_present": false
},
"server_details": {
"continent_name": "Asia",
"hostname": "example.com",
"region_name": "Seoul-teukbyeolsi",
"ip": "192.0.2.141",
"isp": "Example Corporation",
"continent_code": "AS",
"country_name": "Korea (Republic of)",
"city_name": "Seoul",
"longitude": 126.97782897949219,
"country_code": "KR",
"latitude": 37.568260192871094
},
"response_headers": {
"status": "HTTP/1.1 404 Not Found",
"content-length": "177",
"code": 404,
"server": "nginx/1.4.6 (Ubuntu)",
"connection": "keep-alive",
"date": "Wed, 15 Jul 2020 08:21:54 GMT",
"content-type": "text/html"
},
"redirection": {
"url": null,
"found": false,
"external": false
},
"file_type": {
"headers": "HTML",
"extension": "HTML",
"signature": " "
},
"risk_score": {
"result": 10
},
"security_checks": {
"is_suspended_page": false,
"is_defaced_heuristic": false,
"is_windows_exe_file": false,
"is_credit_card_field": false,
"is_windows_exe_file_on_free_hosting": false,
"is_masked_linux_elf_file": false,
"is_exe_on_directory_listing": false,
"is_php_on_directory_listing": false,
"is_masked_windows_exe_file": false,
"is_sinkholed_domain": false,
"is_robots_noindex": false,
"is_windows_exe_file_on_free_dynamic_dns": false,
"is_doc_on_directory_listing": false,
"is_non_standard_port": false,
"is_linux_elf_file_on_free_dynamic_dns": false,
"is_suspicious_domain": false, "is_suspicious_url_pattern": false,
"is_china_country": false,
"is_risky_geo_location": false,
"is_pdf_on_directory_listing": false,
"is_valid_https": false,
"is_external_redirect": false, "is_windows_exe_file_on_ipv4": false,
"is_phishing_heuristic": false,
"is_linux_elf_file_on_ipv4": false,
"is_email_address_on_url_query": false,
"is_uncommon_clickable_url": false,
"is_most_abused_tld": false,
"is_domain_blacklisted": false,
"is_host_an_ipv4": false,
"is_linux_elf_file_on_free_hosting": false,
"is_zip_on_directory_listing": false,
"is_password_field": false,
"is_linux_elf_file": false,
"is_empty_page_title": false,
"is_directory_listing": false,
"is_masked_file": false,
"is_suspicious_file_extension": false,
"is_suspicious_content": false
},
"geo_location": {
"countries": ["KR"]
},
"url_parts": {
"host_nowww": "example.com",
"host": "www.example.com",
"path": "/dynamic/example.html",
"query": null,
"scheme": "http",
"port": 80},
"site_category": {
"is_vpn_provider": false,
"is_url_shortener": false,
"is_anonymizer": false,
"is_torrent": false,
"is_free_dynamic_dns": false,
"is_free_hosting": false
},
"web_page": {
"keywords": "",
"description": "",
"title": "404 Not Found"
},
"dns_records": {
"ns": {
"records": [{
"country_name": "Korea (Republic of)",
"ip": "192.0.2.95",
"isp": "Example Corporation",
"target": "example.com",
"country_code": "KR"
}, {
"country_name": "Korea (Republic of)",
"ip": "192.0.2.26",
"isp": "LX",
"target": "example.com",
"country_code": "KR"
}]},
"mx": {
"records": []
}}},
"Entity": "www.example.com:80/dynamic/example.html"
}
]
Mur des cas
| Type de résultat | Description | Type |
|---|---|---|
| Message de sortie* |
|
Général |
| Mur des cas CSV | Si des données sont disponibles, créez une table CSV pour la nouvelle entité :
|
Général |
| Enrichissement | Si des données sont disponibles, ajoutez les éléments suivants en tant qu'enrichissement d'entité (n'oubliez pas d'ajouter le préfixe "APIVoid") :
|
Entité |
Obtenir une capture d'écran
Faites une capture d'écran de haute qualité de n'importe quel site Web ou URL.
Paramètres
N/A
Cas d'utilisation
Un analyste peut capturer des captures d'écran de haute qualité de n'importe quel site Web ou URL, au format d'image PNG ou JPG.
Exécution
Cette action s'exécute sur l'entité "Utilisateur".
Résultats de l'action
Enrichissement d'entités
Marquer l'entité comme suspecte si le nombre de moteurs négatifs est égal ou supérieur au seuil donné. is_suspicious: if data.get("score") > threshold
| Nom du champ d'enrichissement | Logique : quand les utiliser ? |
|---|---|
| domaine | Renvoie s'il existe dans le résultat JSON |
| should_block | Renvoie s'il existe dans le résultat JSON |
| score | Renvoie s'il existe dans le résultat JSON |
| disposable | Renvoie s'il existe dans le résultat JSON |
| has_mx_records | Renvoie s'il existe dans le résultat JSON |
| has_spf_records | Renvoie s'il existe dans le résultat JSON |
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success:False |
Résultat JSON
[
{
"EntityResult": {
"domain": "example.com",
"valid_tld": true,
"email": "user@example.co",
"role_address": false,
"should_block": false,
"risky_tld": false,
"dirty_words_username": false,
"suspicious_domain": false,
"score": 100,
"educational_domain": false,
"dirty_words_domain": false,
"did_you_mean": " ",
"username": "user",
"valid_format": true,
"is_spoofable ": false,
"disposable": false,
"government_domain": false,
"has_spf_records": true,
"domain_popular": false,
"has_mx_records": true,
"china_free_email": false,
"free_email": false,
"russian_free_email": false,
"police_domain": false,
"dmarc_enforced": false,
"suspicious_username": false
},
"Entity": "USER@EXAMPLE.COM"
}
]
Mur des cas
| Type de résultat | Description | Type |
|---|---|---|
| Message de sortie* |
|
Général |
| Pièces jointes | Si des données sont disponibles, créez un objet de fichier :
|
Général |
Ping
Tester la connectivité
Paramètres
N/A
Exécution
Cette action s'exécute sur toutes les entités.
Résultats de l'action
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| success | Vrai/Faux | success:False |
Valider l'adresse e-mail
Vérifiez si une adresse e-mail est jetable, si elle comporte des enregistrements MX, etc.
Paramètres
| Nom du paramètre | Type | Valeur par défaut | Est obligatoire | Description |
|---|---|---|---|---|
| Seuil | Integer | N/A | Oui | Seuil de risque des e-mails. Le seuil doit être une valeur numérique. Exemple : 3 |
Cas d'utilisation
Un analyste peut vérifier si une adresse e-mail est jetable, obtenir des enregistrements MX, etc.
Exécution
Cette action s'exécute sur l'entité "Utilisateur".
Résultats de l'action
Enrichissement d'entités
Marquer l'entité comme suspecte si le nombre de moteurs négatifs est égal ou supérieur au seuil donné. is_suspicious: if data.get("score") > threshold
| Nom du champ d'enrichissement | Logique : quand les utiliser ? |
|---|---|
| domaine | Renvoie s'il existe dans le résultat JSON |
| should_block | Renvoie s'il existe dans le résultat JSON |
| score | Renvoie s'il existe dans le résultat JSON |
| disposable | Renvoie s'il existe dans le résultat JSON |
| has_mx_records | Renvoie s'il existe dans le résultat JSON |
| has_spf_records | Renvoie s'il existe dans le résultat JSON |
Résultat du script
| Nom du résultat du script | Options de valeur | Exemple |
|---|---|---|
| is_success | Vrai/Faux | is_success:False |
Résultat JSON
[
{
"EntityResult": {
"domain": "example.com",
"valid_tld": true,
"email": "user@example.com",
"role_address": false,
"should_block": false,
"risky_tld": false,
"dirty_words_username": false,
"suspicious_domain": false,
"score": 100,
"educational_domain": false,
"dirty_words_domain": false,
"did_you_mean": " ",
"username": "user",
"valid_format": true,
"is_spoofable ": false,
"disposable": false,
"government_domain": false,
"has_spf_records": true,
"domain_popular": false,
"has_mx_records": true,
"china_free_email": false,
"free_email": false,
"russian_free_email": false,
"police_domain": false,
"dmarc_enforced": false,
"suspicious_username": false
},
"Entity": "USER@EXAMPLE.COm"
}
]
Mur des cas
| Type de résultat | Description | Type |
|---|---|---|
| Message de sortie* |
|
Général |
| Mur des cas CSV | Contenu CSV : données d'entité(exemple ci-dessous) | Général |
| Enrichissement | Si des données sont disponibles, ajoutez les éléments suivants en tant qu'enrichissement d'entité (n'oubliez pas d'ajouter le préfixe "APIVoid") :
|
Entité |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.