Integra APIVoid con Google SecOps
Questo documento descrive come integrare APIVoid con Google Security Operations (Google SecOps).
Prima di iniziare
Prima di configurare l'integrazione di APIVoid in Google SecOps per la versione 2, verifica di disporre di quanto segue:
Account APIVoid v2: un account attivo con accesso ai servizi API v2.
Chiave API APIVoid v2: una nuova chiave API generata specificamente per le API v2 dalla dashboard utente di APIVoid.
Endpoint API aggiornati: familiarità con gli URL degli endpoint API v2 aggiornati per i servizi APIVoid specifici che prevedi di utilizzare (ad esempio, API IP Reputation, API Domain Reputation).
Genera una chiave API APIVoid v2
Per generare la chiave API APIVoid v2, completa questi passaggi:
Accedi alla dashboard utente di APIVoid.
Vai alla sezione Chiavi API. (La posizione potrebbe variare in base agli aggiornamenti della dashboard.)
Genera una nuova chiave API. Copia e memorizza immediatamente la chiave in modo sicuro. Potrebbe essere visualizzato una sola volta.
Rete
| Funzione | Porta predefinita | Direzione | Protocollo |
|---|---|---|---|
| API | Multivalori | In uscita | apikey |
Parametri di integrazione
Utilizza i seguenti parametri per configurare l'integrazione:
| Nome parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome istanza | Stringa | N/D | No | Nome dell'istanza per cui intendi configurare l'integrazione. |
| Descrizione | Stringa | N/D | No | Descrizione dell'istanza. |
| Radice API | Stringa | https://endpoint.apivoid.com | Sì | Indirizzo dell'istanza APIVoid. |
| Chiave API | Password | N/D | Sì | Chiave API generata nella console di APIVoid. |
| Verifica SSL | Casella di controllo | Deselezionata | No | Utilizza questa casella di controllo se la connessione APIVoid richiede una verifica SSL. |
| Esegui da remoto | Casella di controllo | Deselezionata | No | Seleziona il campo per eseguire l'integrazione configurata da remoto. Una volta selezionata, viene visualizzata l'opzione per selezionare l'utente remoto (agente). |
Per istruzioni su come configurare un'integrazione in Google SecOps, consulta Configura le integrazioni.
Se necessario, puoi apportare modifiche in un secondo momento. Dopo aver configurato un'istanza di integrazione, puoi utilizzarla nei playbook. Per saperne di più su come configurare e supportare più istanze, consulta Supporto di più istanze.
Azioni
Per saperne di più sulle azioni, consulta Rispondi alle azioni in attesa dalla scrivania di lavoro ed Esegui un'azione manuale nel tuo caso.
Ottieni reputazione dominio
I controlli della reputazione del dominio verificano se un dominio è escluso da servizi di liste bloccate di domini popolari e attendibili, come URLVir, ThreatLog, OpenPhish, Spam404, PhishTank, ZeuS Tracker e altri. I vari servizi di liste bloccate di domini identificano siti web potenzialmente dannosi e fraudolenti coinvolti nella distribuzione di malware, in incidenti di phishing e in negozi online falsi.
Parametri
| Nome parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Soglia | Stringa | 0 | Sì | Soglia di rischio del dominio. La soglia deve essere un valore numerico. Esempio: 3 |
| Crea insight | Casella di controllo | Selezionata | Sì | Specifica se l'azione deve creare o meno insight. |
Casi d'uso
Uno dei casi d'uso dell'API Domain Reputation è verificare se i siti web del client sono esclusi, controllare gli URL inviati dagli utenti sulla tua applicazione o identificare siti web potenzialmente dannosi e non sicuri.
Pubblica su
Questa azione viene eseguita sulle seguenti entità:
- Nome host
- URL
Risultati dell'azione
Enrichment delle entità
Contrassegna l'entità come sospetta se il numero di motori negativi è uguale o superiore alla soglia specificata.
| Nome del campo di arricchimento | Logica: quando applicarle |
|---|---|
| alexa_top_100k | Restituisce se esiste nel risultato JSON |
| domain_length | Restituisce se esiste nel risultato JSON |
| alexa_top_10k | Restituisce se esiste nel risultato JSON |
| liste nere | Restituisce se esiste nel risultato JSON |
| server | Restituisce se esiste nel risultato JSON |
| host | Restituisce se esiste nel risultato JSON |
| most_abused_tld | Restituisce se esiste nel risultato JSON |
| alexa_top_250k | Restituisce se esiste nel risultato JSON |
Insight
| Gravità | Descrizione |
|---|---|
| Avviso | Viene creato un insight di avviso per informare sullo stato dannoso dell'entità arricchita. Viene creato quando il numero di motori rilevati è uguale o superiore alla soglia minima di sospetto impostata prima della scansione. |
Risultato dello script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| operazione riuscita | Vero/Falso | success:False |
Risultato 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"
}
]
Ottieni reputazione IP
L'API IP Reputation rileva indirizzi IP potenzialmente dannosi comunemente utilizzati per spam, attacchi a siti web o attività fraudolente.
Parametri
| Parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Soglia | Stringa | N/D | Sì | Soglia di rischio IP. La soglia deve essere un valore numerico. Esempio: 3. |
| Crea insight | Casella di controllo | Selezionata | Sì | Specifica se l'azione deve creare o meno insight. |
Pubblica su
Questa azione viene eseguita sull'entità Indirizzo IP.
Risultati dell'azione
Enrichment delle entità
Contrassegna l'entità come sospetta se il numero di motori negativi è uguale o superiore alla soglia specificata.
| Nome del campo di arricchimento | Logica: quando applicarle |
|---|---|
| informazioni | Restituisce se esiste nel risultato JSON |
| liste nere | Restituisce se esiste nel risultato JSON |
| anonymity | Restituisce se esiste nel risultato JSON |
| ip | Restituisce se esiste nel risultato JSON |
Insight
| Gravità | Descrizione |
|---|---|
| Avviso | Viene creato un insight di avviso per informare sullo stato dannoso dell'hash arricchito. L'insight viene creato quando il numero di motori rilevati è uguale o superiore alla soglia minima di sospetto impostata prima della scansione. |
Risultato dello script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| operazione riuscita | Vero/Falso | success:False |
Risultato 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"
}
]
Ottieni reputazione URL
Ottieni la reputazione di sicurezza e lo scoring del rischio di un URL.
Parametri
| Nome parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Soglia | Numero intero | N/D | Sì | Soglia di rischio dell'URL. La soglia deve essere un valore numerico. Esempio: 3 |
Casi d'uso
Un analista può recuperare la reputazione dell'URL, in modo simile a come recupera la reputazione di un dominio o di un indirizzo IP.
Pubblica su
Questa azione viene eseguita sull'entità URL.
Risultati dell'azione
Enrichment delle entità
Contrassegna l'entità come sospetta se il numero di motori negativi è uguale o superiore alla soglia specificata. if data.get("report", {}).get("risk_score", {}).get("result") > threshold
| Nome del campo di arricchimento | Logica: quando applicarle |
|---|---|
| domain_blacklist | Restituisce se esiste nel risultato JSON |
| html_forms | Restituisce se esiste nel risultato JSON |
| server_details | Restituisce se esiste nel risultato JSON |
| response_headers | Restituisce se esiste nel risultato JSON |
| redirection | Restituisce se esiste nel risultato JSON |
| file_type | Restituisce se esiste nel risultato JSON |
| risk_score | Restituisce se esiste nel risultato JSON |
| security_checks | Restituisce se esiste nel risultato JSON |
| geo_location | Restituisce se esiste nel risultato JSON |
| url_parts | Restituisce se esiste nel risultato JSON |
| site_category | Restituisce se esiste nel risultato JSON |
| web_page | Restituisce se esiste nel risultato JSON |
| dns_records | Restituisce se esiste nel risultato JSON |
Risultato dello script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
Bacheca casi
| Tipo di risultato | Descrizione | Tipo |
|---|---|---|
| Messaggio di output* |
|
Generale |
| Bacheca casi CSV | Se i dati sono disponibili, crea una nuova tabella CSV delle entità:
|
Generale |
| Arricchimento | Se i dati sono disponibili, aggiungi quanto segue come arricchimento dell'entità (non dimenticare di aggiungere il prefisso "APIVoid"):
|
Entità |
Acquisisci screenshot
Acquisisci uno screenshot di alta qualità di qualsiasi sito web o URL.
Parametri
N/D
Casi d'uso
Un analista può acquisire screenshot di alta qualità di qualsiasi sito web o URL, in formato dell'immagine PNG o JPG.
Pubblica su
Questa azione viene eseguita sull'entità Utente.
Risultati dell'azione
Enrichment delle entità
Contrassegna l'entità come sospetta se il numero di motori negativi è uguale o superiore alla soglia specificata. is_suspicious: if data.get("score") > threshold
| Nome del campo di arricchimento | Logica: quando applicarle |
|---|---|
| dominio | Restituisce se esiste nel risultato JSON |
| should_block | Restituisce se esiste nel risultato JSON |
| punteggio | Restituisce se esiste nel risultato JSON |
| usa e getta | Restituisce se esiste nel risultato JSON |
| has_mx_records | Restituisce se esiste nel risultato JSON |
| has_spf_records | Restituisce se esiste nel risultato JSON |
Risultato dello script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
Bacheca casi
| Tipo di risultato | Descrizione | Tipo |
|---|---|---|
| Messaggio di output* |
|
Generale |
| Allegati | Se i dati sono disponibili, crea un nuovo oggetto file:
|
Generale |
Dindin
Testa la connettività.
Parametri
N/D
Pubblica su
Questa azione viene eseguita su tutte le entità.
Risultati dell'azione
Risultato dello script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| operazione riuscita | Vero/Falso | success:False |
Verifica l'indirizzo email
Controlla se un'email è temporanea, ha record MX e altro ancora.
Parametri
| Nome parametro | Tipo | Valore predefinito | È obbligatorio | Descrizione |
|---|---|---|---|---|
| Soglia | Numero intero | N/D | Sì | Soglia di rischio email. La soglia deve essere un valore numerico. Esempio: 3 |
Casi d'uso
Un analista può verificare se un'email è usa e getta, ottenere record MX e altro ancora.
Pubblica su
Questa azione viene eseguita sull'entità Utente.
Risultati dell'azione
Enrichment delle entità
Contrassegna l'entità come sospetta se il numero di motori negativi è uguale o superiore alla soglia specificata. is_suspicious: if data.get("score") > threshold
| Nome del campo di arricchimento | Logica: quando applicarle |
|---|---|
| dominio | Restituisce se esiste nel risultato JSON |
| should_block | Restituisce se esiste nel risultato JSON |
| punteggio | Restituisce se esiste nel risultato JSON |
| usa e getta | Restituisce se esiste nel risultato JSON |
| has_mx_records | Restituisce se esiste nel risultato JSON |
| has_spf_records | Restituisce se esiste nel risultato JSON |
Risultato dello script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato 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"
}
]
Bacheca casi
| Tipo di risultato | Descrizione | Tipo |
|---|---|---|
| Messaggio di output* |
|
Generale |
| Bacheca casi CSV | Contenuti CSV: dati delle entità(esempio di seguito) | Generale |
| Arricchimento | Se i dati sono disponibili, aggiungi quanto segue come arricchimento dell'entità (non dimenticare di aggiungere il prefisso "APIVoid"):
|
Entità |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.