Integre o APIVoid com o Google SecOps

Este documento descreve como integrar o APIVoid com o Google Security Operations (Google SecOps).

Versão da integração: 12.0

Antes de começar

Antes de configurar a integração da APIVoid no Google SecOps para a versão 2, verifique se tem o seguinte:

  • Conta do APIVoid v2: uma conta ativa com acesso aos serviços da API v2.

  • Chave da API APIVoid v2: uma nova chave da API gerada especificamente para APIs v2 a partir do painel de controlo do utilizador do APIVoid.

  • Pontos finais da API atualizados: familiaridade com os URLs dos pontos finais da API v2 atualizados para os serviços APIVoid específicos que planeia usar (como a API IP Reputation e a API Domain Reputation).

Gere uma chave da API APIVoid v2

Para gerar a chave da API APIVoid v2, conclua estes passos:

  1. Inicie sessão no painel de controlo do utilizador do APIVoid.

  2. Navegue para a secção Chaves da API. (A localização pode variar consoante as atualizações do painel de controlo.)

  3. Gere uma nova chave da API. Copie e armazene imediatamente a chave de forma segura. Pode ser apresentado apenas uma vez.

Rede

Função Porta predefinida Direção Protocolo
API Vários valores De saída apikey

Parâmetros de integração

Use os seguintes parâmetros para configurar a integração:

Nome do parâmetro Tipo Valor predefinido É obrigatório Descrição
Nome da instância String N/A Não Nome da instância para a qual pretende configurar a integração.
Descrição String N/A Não Descrição da instância.
Raiz da API String https://endpoint.apivoid.com Sim Endereço da instância APIVoid.
Chave de API Palavra-passe N/A Sim Chave da API gerada na consola da APIVoid.
Validar SSL Caixa de verificação Desmarcado Não Use esta caixa de verificação se a sua ligação APIVoid exigir uma validação SSL.
Executar remotamente Caixa de verificação Desmarcado Não Selecione o campo para executar a integração configurada remotamente. Depois de selecionada, a opção aparece para selecionar o utilizador remoto (agente).

Para obter instruções sobre como configurar uma integração no Google SecOps, consulte o artigo Configurar integrações.

Se necessário, pode fazer alterações numa fase posterior. Depois de configurar uma instância de integração, pode usá-la em manuais de soluções. Para mais informações sobre como configurar e suportar várias instâncias, consulte o artigo Suporte de várias instâncias.

Ações

Para mais informações sobre ações, consulte os artigos Responda a ações pendentes da sua mesa de trabalho e Execute uma ação manual.

Obtenha a reputação do domínio

Receba verificações da reputação do domínio se um domínio for excluído por serviços de listas de bloqueios de domínios populares e fidedignos, como URLVir, ThreatLog, OpenPhish, Spam404, PhishTank, ZeuS Tracker e muito mais. Os vários serviços de listas de bloqueios de domínios identificam Websites potencialmente maliciosos e fraudulentos envolvidos na distribuição de software malicioso, incidentes de phishing e lojas online falsas.

Parâmetros

Nome do parâmetro Tipo Valor predefinido É obrigatório Descrição
Limite String 0 Sim Limite de risco do domínio. O limite tem de ser um valor numérico. Exemplo: 3
Crie estatísticas Caixa de verificação Marcado Sim Especifique se a ação deve criar estatísticas ou não.

Exemplos de utilização

Um dos exemplos de utilização da API Domain Reputation é verificar se os Websites do cliente estão excluídos, verificar os URLs enviados pelos utilizadores na sua aplicação ou identificar Websites potencialmente maliciosos e inseguros.

É apresentado em

Esta ação é executada nas seguintes entidades:

  • Nome do anfitrião
  • URL

Resultados da ação

Enriquecimento de entidades

Marcar a entidade como suspeita se o número de motores negativos for igual ou superior ao limite indicado.

Nome do campo de enriquecimento Lógica: quando aplicar
alexa_top_100k Devolve se existir no resultado JSON
domain_length Devolve se existir no resultado JSON
alexa_top_10k Devolve se existir no resultado JSON
listas negras Devolve se existir no resultado JSON
servidor Devolve se existir no resultado JSON
anfitrião Devolve se existir no resultado JSON
most_abused_tld Devolve se existir no resultado JSON
alexa_top_250k Devolve se existir no resultado JSON
Estatísticas
Gravidade Descrição
Aviso É criado um insight de aviso para informar sobre o estado malicioso da entidade enriquecida. É criado quando o número de motores detetados é igual ou excede o limite suspeito mínimo definido antes da análise.
Resultado do script
Nome do resultado do script Opções de valores Exemplo
êxito Verdadeiro/Falso success:False
Resultado 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"
    }
]

Obtenha a reputação do IP

A API IP Reputation deteta endereços IP potencialmente maliciosos que são usados frequentemente para spam, ataques a Websites ou atividade fraudulenta.

Parâmetros

Parâmetro Tipo Valor predefinido É obrigatório Descrição
Limite String N/A Sim Limite de risco de IP. O limite tem de ser um valor numérico. Exemplo: 3.
Crie estatísticas Caixa de verificação Marcado Sim Especifique se a ação deve criar estatísticas ou não.

É apresentado em

Esta ação é executada na entidade de endereço IP.

Resultados da ação

Enriquecimento de entidades

Marcar a entidade como suspeita se o número de motores negativos for igual ou superior ao limite indicado.

Nome do campo de enriquecimento Lógica: quando aplicar
informação Devolve se existir no resultado JSON
listas negras Devolve se existir no resultado JSON
anonimato Devolve se existir no resultado JSON
ip Devolve se existir no resultado JSON
Estatísticas
Gravidade Descrição
Aviso É criado um insight de aviso para informar sobre o estado malicioso do hash enriquecido. A estatística é criada quando o número de motores detetados é igual ou superior ao limite suspeito mínimo definido antes da análise.
Resultado do script
Nome do resultado do script Opções de valores Exemplo
êxito Verdadeiro/Falso success:False
Resultado 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"
    }
]

Obtenha a reputação do URL

Obtenha a reputação de segurança e a pontuação de risco de um URL.

Parâmetros

Nome do parâmetro Tipo Valor predefinido É obrigatório Descrição
Limite Número inteiro N/A Sim

Limite de risco do URL. O limite tem de ser um valor numérico. Exemplo: 3

Exemplos de utilização

Um analista pode obter a reputação do URL, de forma semelhante à obtenção da reputação de um domínio ou um endereço IP.

É apresentado em

Esta ação é executada na entidade URL.

Resultados da ação

Enriquecimento de entidades

Marque a entidade como suspeita se o número de motores negativos for igual ou superior ao limite indicado. if data.get("report", {}).get("risk_score", {}).get("result") > threshold

Nome do campo de enriquecimento Lógica: quando aplicar
domain_blacklist Devolve se existir no resultado JSON
html_forms Devolve se existir no resultado JSON
server_details Devolve se existir no resultado JSON
response_headers Devolve se existir no resultado JSON
redirecionamento Devolve se existir no resultado JSON
file_type Devolve se existir no resultado JSON
risk_score Devolve se existir no resultado JSON
security_checks Devolve se existir no resultado JSON
geo_location Devolve se existir no resultado JSON
url_parts Devolve se existir no resultado JSON
site_category Devolve se existir no resultado JSON
web_page Devolve se existir no resultado JSON
dns_records Devolve se existir no resultado JSON
Resultado do script
Nome do resultado do script Opções de valores Exemplo
is_success Verdadeiro/Falso is_success:False
Resultado 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"
    }
]
Parede da caixa
Tipo de resultado Descrição Tipo
Mensagem de saída*
  1. Entidades bem-sucedidas: "APIVoid: Fetched reputation for the following entities: <entities identifer list>
  2. Entidades com falhas: "Ocorreu um erro nas seguintes entidades: <entities identifer list>"
  3. Entidades em falta (sem dados): "Não foi possível encontrar a reputação das seguintes entidades: <entities identifer list>"
  4. Alerta sem entidades de URL: "APIVoid: No URLs found." (APIVoid: não foram encontrados URLs.)
Geral
CSV Case wall

Se os dados estiverem disponíveis, crie uma nova tabela CSV de entidades:

  1. domain blocklist report: data.get("report",{}).get("domain_blacklist",{}).get("engines", [])
Geral
Enriquecimento

Se os dados estiverem disponíveis, adicione o seguinte como enriquecimento de entidades (não se esqueça de adicionar o prefixo "APIVoid"):

  1. geo_location: data.get("report",{}).get("geo_location",{}).get("countries", [])
  2. is_suspicious_domain: data.get("report",{}).get("security_checks",{}).get("is_suspicious_domain")
  3. is_domain_blacklisted: data.get("report",{}).get("security_checks",{}).get("is_domain_blacklisted")
  4. is_risky_geo_location: data.get("report",{}).get("security_checks",{}).get("is_risky_geo_location")
  5. risk_score: data.get("report", {}).get("risk_score", {}).get("result")
  6. is_external_redirect: data.get("report",{}).get("security_checks",{}).get("is_external_redirect")
Entidade

Fazer captura de ecrã

Capture uma captura de ecrã de alta qualidade de qualquer Website ou URL.

Parâmetros

N/A

Exemplos de utilização

Um analista pode capturar capturas de ecrã de alta qualidade de qualquer Website ou URL no formato de imagem PNG ou JPG.

É apresentado em

Esta ação é executada na entidade User.

Resultados da ação

Enriquecimento de entidades

Marcar a entidade como suspeita se o número de motores negativos for igual ou superior ao limite indicado. is_suspicious: if data.get("score") > threshold

Nome do campo de enriquecimento Lógica: quando aplicar
domínio Devolve se existir no resultado JSON
should_block Devolve se existir no resultado JSON
pontuação Devolve se existir no resultado JSON
descartável Devolve se existir no resultado JSON
has_mx_records Devolve se existir no resultado JSON
has_spf_records Devolve se existir no resultado JSON
Resultado do script
Nome do resultado do script Opções de valores Exemplo
is_success Verdadeiro/Falso is_success:False
Resultado 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"
    }
]
Parede da caixa
Tipo de resultado Descrição Tipo
Mensagem de saída*
  1. Entidades bem-sucedidas: "APIVoid: Added screenshots for the following entities: <entities identifier list>" (APIVoid: foram adicionadas capturas de ecrã para as seguintes entidades: <entities identifier list>)
  2. Entidades com falhas: "Ocorreu um erro nas seguintes entidades: <entities identifier list>"
  3. Entidades em falta (sem dados): "Não foram encontradas capturas de ecrã para as seguintes entidades: <entities identifier list>"
  4. Alerta sem entidades de URL: "APIVoid: No URL entities found for capturing screenshots." (APIVoid: não foram encontradas entidades de URL para capturar capturas de ecrã.)
  5. Para entidades grandes (tamanho do ficheiro anexado > 3 MB): "Não foi possível adicionar capturas de ecrã como anexos nas seguintes entidades: <<entities identifier list>>"
Geral
Anexos

Se os dados estiverem disponíveis, crie um novo objeto de ficheiro:

  1. Título do anexo: "Screenshot - {0}".format(entity.identifier)
  2. O nome do ficheiro deve ser o URL sem o sufixo (https/http) + "_capture.<formato de ficheiro>"
  3. A captura de ecrã é devolvida numa string codificada em base64 --> o conteúdo do ficheiro deve ser b64decode(data.get('base64_file'))
  4. Não se esqueça de adicionar try, except. Temos uma limitação de 3 MB da plataforma. Em caso de erro, adicione uma mensagem relevante ao registador.
Geral

Tchim-tchim

Teste a conetividade.

Parâmetros

N/A

É apresentado em

Esta ação é executada em todas as entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valores Exemplo
êxito Verdadeiro/Falso success:False

Validar email

Verifique se um email é descartável, tem registos MX e muito mais.

Parâmetros

Nome do parâmetro Tipo Valor predefinido É obrigatório Descrição
Limite Número inteiro N/A Sim

Limite de risco de email. O limite tem de ser um valor numérico.

Exemplo: 3

Exemplos de utilização

Um analista pode verificar se um email é descartável, obter registos MX e muito mais.

É apresentado em

Esta ação é executada na entidade User.

Resultados da ação

Enriquecimento de entidades

Marcar a entidade como suspeita se o número de motores negativos for igual ou superior ao limite indicado. is_suspicious: if data.get("score") > threshold

Nome do campo de enriquecimento Lógica: quando aplicar
domínio Devolve se existir no resultado JSON
should_block Devolve se existir no resultado JSON
pontuação Devolve se existir no resultado JSON
descartável Devolve se existir no resultado JSON
has_mx_records Devolve se existir no resultado JSON
has_spf_records Devolve se existir no resultado JSON
Resultado do script
Nome do resultado do script Opções de valores Exemplo
is_success Verdadeiro/Falso is_success:False
Resultado 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"
    }
]
Parede da caixa
Tipo de resultado Descrição Tipo
Mensagem de saída*
  1. Entidades bem-sucedidas: "APIVoid: Fetched information for the following entities: <entities identifer list>
  2. Entidades com falhas: "Ocorreu um erro nas seguintes entidades: <entities identifer list>"
  3. Entidades em falta (sem dados): "Não foi possível encontrar informações para as seguintes entidades: <entities identifer list>"
  4. Alerta sem entidades de URL: "APIVoid: No emails found." (APIVoid: não foram encontrados emails.)
Geral
CSV Case wall Conteúdo do CSV: dados de entidades(exemplo abaixo) Geral
Enriquecimento

Se os dados estiverem disponíveis, adicione o seguinte como enriquecimento de entidades (não se esqueça de adicionar o prefixo "APIVoid"):

  1. suspicious_domain: data.get("suspicious_domain")
  2. should_block: data.get("should_block")
  3. score: data.get("score")
  4. disposable: data.get("disposable")
  5. has_mx_records: data.get("has_mx_records")
  6. has_spf_records: data.get("has_spf_records")
Entidade

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.