Intégrer APIVoid à Google SecOps
Ce document explique comment intégrer APIVoid à Google Security Operations (Google SecOps).
Version de l'intégration : 12.0
Avant de commencer
Avant de configurer l'intégration APIVoid dans Google SecOps pour la version 2, vérifiez que vous disposez des éléments suivants :
Compte APIVoid v2 : compte actif avec 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 mises à 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 à votre tableau de bord utilisateur 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 immédiatement la clé et stockez-la en lieu sûr. Il ne peut être affiché qu'une seule fois.
Réseau
Fonction | Port par défaut | Direction | Protocole |
---|---|---|---|
API | Valeurs multiples | 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 | 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 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 la case cochée, l'option permettant de sélectionner l'utilisateur distant (agent) s'affiche. |
Pour obtenir des instructions sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.
Vous pourrez apporter des modifications ultérieurement, si nécessaire. Une fois que vous avez configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour savoir comment configurer et prendre en charge plusieurs instances, consultez Prise en charge de plusieurs instances.
Actions
Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis Votre bureau et Effectuer une action manuelle.
Obtenir la réputation du domaine
Obtenez des vérifications de la réputation d'un domaine pour savoir s'il est exclu par des services de listes de blocage de domaines populaires et fiables, 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 | 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 non sécurisés.
Date d'exécution
Cette action s'applique aux entités suivantes :
- Nom d'hôte
- URL
Résultats de l'action
Enrichissement d'entités
Marque l'entité comme suspecte si le nombre de moteurs négatifs est supérieur ou égal au seuil indiqué.
Nom du champ d'enrichissement | Logique : quand les utiliser ? |
---|---|
alexa_top_100k | Renvoie la valeur si elle existe dans le résultat JSON. |
domain_length | Renvoie la valeur si elle existe dans le résultat JSON. |
alexa_top_10k | Renvoie la valeur si elle existe dans le résultat JSON. |
listes noires | Renvoie la valeur si elle existe dans le résultat JSON. |
serveur | Renvoie la valeur si elle existe dans le résultat JSON. |
hôte | Renvoie la valeur si elle existe dans le résultat JSON. |
most_abused_tld | Renvoie la valeur si elle existe dans le résultat JSON. |
alexa_top_250k | Renvoie la valeur si elle 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. 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 | Obligatoire | Description |
---|---|---|---|---|
Seuil | Chaîne | N/A | Oui | Seuil de risque d'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. |
Date d'exécution
Cette action s'exécute sur l'entité "Adresse IP".
Résultats de l'action
Enrichissement d'entités
Marque l'entité comme suspecte si le nombre de moteurs négatifs est supérieur ou égal au seuil indiqué.
Nom du champ d'enrichissement | Logique : quand les utiliser ? |
---|---|
les informations | Renvoie la valeur si elle existe dans le résultat JSON. |
listes noires | Renvoie la valeur si elle existe dans le résultat JSON. |
anonymat | Renvoie la valeur si elle existe dans le résultat JSON. |
ip | Renvoie la valeur si elle 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 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": {
"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 d'une 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 | 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 d'une URL, de la même manière qu'il récupère la réputation d'un domaine ou d'une adresse IP.
Date d'exécution
Cette action s'exécute sur l'entité URL.
Résultats de l'action
Enrichissement d'entités
Marquez l'entité comme suspecte si le nombre de moteurs négatifs est supérieur ou égal 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 la valeur si elle existe dans le résultat JSON. |
html_forms | Renvoie la valeur si elle existe dans le résultat JSON. |
server_details | Renvoie la valeur si elle existe dans le résultat JSON. |
response_headers | Renvoie la valeur si elle existe dans le résultat JSON. |
redirection | Renvoie la valeur si elle existe dans le résultat JSON. |
file_type | Renvoie la valeur si elle existe dans le résultat JSON. |
risk_score | Renvoie la valeur si elle existe dans le résultat JSON. |
security_checks | Renvoie la valeur si elle existe dans le résultat JSON. |
geo_location | Renvoie la valeur si elle existe dans le résultat JSON. |
url_parts | Renvoie la valeur si elle existe dans le résultat JSON. |
site_category | Renvoie la valeur si elle existe dans le résultat JSON. |
web_page | Renvoie la valeur si elle existe dans le résultat JSON. |
dns_records | Renvoie la valeur si elle 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 un tableau CSV pour la nouvelle entité :
|
Général |
Enrichissement | Si des données sont disponibles, ajoutez les éléments suivants pour enrichir l'entité (n'oubliez pas d'ajouter le préfixe "APIVoid") :
|
Entité |
Obtenir une capture d'écran
Prenez 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.
Date d'exécution
Cette action s'exécute sur l'entité "Utilisateur".
Résultats de l'action
Enrichissement d'entités
Marquez l'entité comme suspecte si le nombre de moteurs négatifs est supérieur ou égal au seuil donné. is_suspicious: if data.get("score") > threshold
Nom du champ d'enrichissement | Logique : quand les utiliser ? |
---|---|
domaine | Renvoie la valeur si elle existe dans le résultat JSON. |
should_block | Renvoie la valeur si elle existe dans le résultat JSON. |
score | Renvoie la valeur si elle existe dans le résultat JSON. |
jetable | Renvoie la valeur si elle existe dans le résultat JSON. |
has_mx_records | Renvoie la valeur si elle existe dans le résultat JSON. |
has_spf_records | Renvoie la valeur si elle 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
Date d'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 possède des enregistrements MX, etc.
Paramètres
Nom du paramètre | Type | Valeur par défaut | Obligatoire | Description |
---|---|---|---|---|
Seuil | Integer | N/A | Oui | Seuil de risque pour les 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.
Date d'exécution
Cette action s'exécute sur l'entité "Utilisateur".
Résultats de l'action
Enrichissement d'entités
Marquez l'entité comme suspecte si le nombre de moteurs négatifs est supérieur ou égal au seuil donné. is_suspicious: if data.get("score") > threshold
Nom du champ d'enrichissement | Logique : quand les utiliser ? |
---|---|
domaine | Renvoie la valeur si elle existe dans le résultat JSON. |
should_block | Renvoie la valeur si elle existe dans le résultat JSON. |
score | Renvoie la valeur si elle existe dans le résultat JSON. |
jetable | Renvoie la valeur si elle existe dans le résultat JSON. |
has_mx_records | Renvoie la valeur si elle existe dans le résultat JSON. |
has_spf_records | Renvoie la valeur si elle 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 du fichier CSV : données d'entité(exemple ci-dessous) | Général |
Enrichissement | Si des données sont disponibles, ajoutez les éléments suivants pour enrichir l'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.