Integrar o APIVoid ao Google SecOps

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

Versão da integração: 12.0

Antes de começar

Antes de configurar a integração do APIVoid no Google SecOps para v2, verifique se você tem o seguinte:

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

  • Chave de API do APIVoid v2: uma nova chave de API gerada especificamente para APIs v2 no painel do usuário do APIVoid.

  • Endpoints de API atualizados: é importante conhecer os URLs atualizados dos endpoint de API v2 para os serviços específicos da APIVoid que você planeja usar, como a API IP Reputation e a API Domain Reputation.

Gerar uma chave de API do APIVoid v2

Para gerar sua chave de API do APIVoid v2, siga estas etapas:

  1. Faça login no painel do usuário do APIVoid.

  2. Navegue até a seção Chaves de API. O local pode variar dependendo das atualizações do painel.

  3. Gere uma nova chave de API. Copie e armazene a chave com segurança imediatamente. Ele só pode ser mostrado uma vez.

Rede

Função Porta padrão Direção Protocolo
API Multivalores Saída apikey

Parâmetros de integração

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

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
Nome da instância String N/A Não Nome da instância em que você 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 da API Senha N/A Sim Chave de API gerada no console da APIVoid.
Verificar SSL Caixa de seleção Desmarcado Não Use esta caixa de seleção se a conexão APIVoid exigir uma verificação SSL.
Executar remotamente Caixa de seleção Desmarcado Não Marque a caixa para executar a integração configurada remotamente. Depois de marcada, a opção aparece para selecionar o usuário remoto (agente).

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

É possível fazer mudanças mais tarde, se necessário. Depois de configurar uma instância de integração, você pode usá-la em playbooks. Para mais informações sobre como configurar e oferecer suporte a várias instâncias, consulte Suporte a várias instâncias.

Ações

Para mais informações sobre ações, consulte Responder a ações pendentes da sua mesa de trabalho e Realizar uma ação manual.

Receber reputação do domínio

Receba verificações de reputação de domínio se um domínio for excluído por um serviço de bloqueio de domínio confiável e popular, como URLVir, ThreatLog, OpenPhish, Spam404, PhishTank, ZeuS Tracker e muito mais. Os vários serviços de lista de bloqueio de domínio identificam sites potencialmente maliciosos e fraudulentos envolvidos na distribuição de malware, incidentes de phishing e lojas on-line falsas.

Parâmetros

Nome do parâmetro Tipo Valor padrão É obrigatório Descrição
Limite String 0 Sim Limite de risco do domínio. O limite precisa ser um valor numérico. Exemplo: 3
Criar insights Caixa de seleção Selecionado Sim Especifique se a ação deve criar insights ou não.

Casos de uso

Um dos casos de uso da API Domain Reputation é verificar se os sites do cliente estão excluídos, verificar os URLs enviados pelos usuários no seu aplicativo ou identificar sites potencialmente maliciosos e inseguros.

Data de execução

Essa ação é executada nas seguintes entidades:

  • Nome do host
  • URL

Resultados da ação

Enriquecimento de entidade

Marque a entidade como suspeita se o número de mecanismos negativos for igual ou maior que o limite especificado.

Nome do campo de enriquecimento Lógica: quando aplicar
alexa_top_100k Retorna se ele existe no resultado JSON
domain_length Retorna se ele existe no resultado JSON
alexa_top_10k Retorna se ele existe no resultado JSON
listas de proibições Retorna se ele existe no resultado JSON
servidor Retorna se ele existe no resultado JSON
host Retorna se ele existe no resultado JSON
most_abused_tld Retorna se ele existe no resultado JSON
alexa_top_250k Retorna se ele existe no resultado JSON
Insights
Gravidade Descrição
Avisar Um insight de aviso é criado para informar sobre o status malicioso da entidade enriquecida. Ele é criado quando o número de mecanismos detectados é igual ou excede o limite mínimo de suspeita definido antes da verificação.
Resultado do script
Nome do resultado do script Opções de valor Exemplo
sucesso 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"
    }
]

Get Ip Reputation

A API IP Reputation detecta endereços IP potencialmente maliciosos que são comumente usados para spam, ataques a sites ou atividades fraudulentas.

Parâmetros

Parâmetro Tipo Valor padrão É obrigatório Descrição
Limite String N/A Sim Limite de risco de IP. O limite precisa ser um valor numérico. Exemplo: 3.
Criar insights Caixa de seleção Selecionado Sim Especifique se a ação deve criar insights ou não.

Data de execução

Essa ação é executada na entidade "Endereço IP".

Resultados da ação

Enriquecimento de entidade

Marque a entidade como suspeita se o número de mecanismos negativos for igual ou maior que o limite especificado.

Nome do campo de enriquecimento Lógica: quando aplicar
informações Retorna se ele existe no resultado JSON
listas de proibições Retorna se ele existe no resultado JSON
anonimato Retorna se ele existe no resultado JSON
ip Retorna se ele existe no resultado JSON
Insights
Gravidade Descrição
Avisar Um insight de aviso é criado para informar sobre o status malicioso do hash enriquecido. O insight é criado quando o número de mecanismos detectados é igual ou excede o limite mínimo de suspeita definido antes da verificação.
Resultado do script
Nome do resultado do script Opções de valor Exemplo
sucesso 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"
    }
]

Receber reputação de URL

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

Parâmetros

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

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

Casos de uso

Um analista pode recuperar a reputação do URL, assim como a reputação de um domínio ou endereço IP.

Data de execução

Essa ação é executada na entidade de URL.

Resultados da ação

Enriquecimento de entidade

Marque a entidade como suspeita se o número de mecanismos negativos for igual ou maior que o limite especificado. if data.get("report", {}).get("risk_score", {}).get("result") > threshold

Nome do campo de enriquecimento Lógica: quando aplicar
domain_blacklist Retorna se ele existe no resultado JSON
html_forms Retorna se ele existe no resultado JSON
server_details Retorna se ele existe no resultado JSON
response_headers Retorna se ele existe no resultado JSON
redirecionamento Retorna se ele existe no resultado JSON
file_type Retorna se ele existe no resultado JSON
risk_score Retorna se ele existe no resultado JSON
security_checks Retorna se ele existe no resultado JSON
geo_location Retorna se ele existe no resultado JSON
url_parts Retorna se ele existe no resultado JSON
site_category Retorna se ele existe no resultado JSON
web_page Retorna se ele existe no resultado JSON
dns_records Retorna se ele existe no resultado JSON
Resultado do script
Nome do resultado do script Opções de valor 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"
    }
]
Painel de casos
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 falha: "Ocorreu um erro nas seguintes entidades: <lista de identificadores de entidades>"
  3. Entidades ausentes (sem dados): "Não foi possível encontrar a reputação das seguintes entidades: <lista de identificadores de entidades>"
  4. Alerta sem entidades de URL: "APIVoid: nenhum URL encontrado".
Geral
Painel de casos em CSV

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

  1. Relatório de lista de bloqueio de domínio: data.get("report",{}).get("domain_blacklist",{}).get("engines", [])
Geral
Aprimoramento

Se os dados estiverem disponíveis, adicione o seguinte como enriquecimento de entidade: (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 tela

Faça uma captura de tela de alta qualidade de qualquer site ou URL.

Parâmetros

N/A

Casos de uso

Um analista pode capturar capturas de tela de alta qualidade de qualquer site ou URL nos formatos de imagem PNG ou JPG.

Data de execução

Essa ação é executada na entidade "User".

Resultados da ação

Enriquecimento de entidade

Marque a entidade como suspeita se o número de mecanismos negativos for igual ou maior que o limite especificado. is_suspicious: if data.get("score") > threshold

Nome do campo de enriquecimento Lógica: quando aplicar
domínio Retorna se ele existe no resultado JSON
should_block Retorna se ele existe no resultado JSON
score Retorna se ele existe no resultado JSON
descartável Retorna se ele existe no resultado JSON
has_mx_records Retorna se ele existe no resultado JSON
has_spf_records Retorna se ele existe no resultado JSON
Resultado do script
Nome do resultado do script Opções de valor 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"
    }
]
Painel de casos
Tipo de resultado Descrição Tipo
Mensagem de saída*
  1. Entidades bem-sucedidas: "APIVoid: capturas de tela adicionadas para as seguintes entidades: <lista de identificadores de entidades>"
  2. Entidades com falha: "Ocorreu um erro nas seguintes entidades: <lista de identificadores de entidades>"
  3. Entidades ausentes (sem dados): "Não foram encontradas capturas de tela para as seguintes entidades: <lista de identificadores de entidades>"
  4. Alerta sem entidades de URL: "APIVoid: No URL entities found for capturing screenshots."
  5. Para entidades grandes (tamanho do arquivo anexado > 3 MB): "Não foi possível adicionar capturas de tela como anexos nas seguintes entidades: <<lista de identificadores de entidades>>"
Geral
Anexos

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

  1. attachment title: 'Screenshot - {0}'.format(entity.identifier)
  2. O nome do arquivo precisa ser o URL sem o sufixo (https/http) + "_capture.<formato do arquivo>"
  3. A captura de tela é retornada em uma string codificada em base64 --> o conteúdo do arquivo precisa ser b64decode(data.get('base64_file'))
  4. Não se esqueça de adicionar "try" e "except". Temos uma limitação de 3 MB na plataforma. Em caso de erro, adicione uma mensagem relevante ao logger.
Geral

Ping

Testar a conectividade.

Parâmetros

N/A

Data de execução

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

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
sucesso Verdadeiro/Falso success:False

Verificar e-mail

Verifique se um e-mail é descartável, tem registros MX e muito mais.

Parâmetros

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

Limite de risco de e-mail. O limite precisa ser um valor numérico.

Exemplo: 3

Casos de uso

Um analista pode verificar se um e-mail é descartável, receber registros MX e muito mais.

Data de execução

Essa ação é executada na entidade "User".

Resultados da ação

Enriquecimento de entidade

Marque a entidade como suspeita se o número de mecanismos negativos for igual ou maior que o limite especificado. is_suspicious: if data.get("score") > threshold

Nome do campo de enriquecimento Lógica: quando aplicar
domínio Retorna se ele existe no resultado JSON
should_block Retorna se ele existe no resultado JSON
score Retorna se ele existe no resultado JSON
descartável Retorna se ele existe no resultado JSON
has_mx_records Retorna se ele existe no resultado JSON
has_spf_records Retorna se ele existe no resultado JSON
Resultado do script
Nome do resultado do script Opções de valor 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"
    }
]
Painel de casos
Tipo de resultado Descrição Tipo
Mensagem de saída*
  1. Entidades com êxito: "APIVoid: informações buscadas para as seguintes entidades: <lista de identificadores de entidades>
  2. Entidades com falha: "Ocorreu um erro nas seguintes entidades: <lista de identificadores de entidades>"
  3. Entidades ausentes (sem dados): "Não foi possível encontrar informações para as seguintes entidades: <lista de identificadores de entidades>"
  4. Alerta sem entidades de URL: "APIVoid: nenhum e-mail encontrado".
Geral
Painel de casos em CSV Conteúdo do CSV: dados de entidade(exemplo abaixo) Geral
Aprimoramento

Se os dados estiverem disponíveis, adicione o seguinte como enriquecimento de entidade: (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 do Google SecOps.