Interação com Check Point SandBlast via API

Interação com Check Point SandBlast via API

Este artigo será útil para quem está familiarizado com tecnologia Check Point por emulação de arquivo (Emulação de ameaça) e limpeza proativa de arquivos (Extração de ameaças) e quer dar um passo no sentido de automatizar essas tarefas. A Check Point tem API de prevenção de ameaças, que é executado na nuvem e em dispositivos locais, e funcionalmente é idêntico à verificação de arquivos em fluxos de tráfego web/smtp/ftp/smb/nfs. Este artigo é parcialmente a interpretação do autor de um conjunto de artigos da documentação oficial, mas baseado em minha própria experiência operacional e em meus próprios exemplos. Também no artigo você encontrará as coleções do Postman do autor para trabalhar com a API Threat Prevention.

Abreviaturas básicas

A API Threat Prevention funciona com três componentes principais, que são chamados na API por meio dos seguintes valores de texto:

av — Componente Antivírus, responsável pela análise de assinaturas de ameaças conhecidas.

te - Componente de emulação de ameaças, responsável por verificar os arquivos na sandbox e emitir um veredicto malicioso/benigno após a emulação.

Extração - Componente Threat Extraction, responsável por converter rapidamente documentos de escritório em um formato seguro (no qual todo conteúdo potencialmente malicioso é removido), a fim de entregá-los rapidamente aos usuários/sistemas.

Estrutura da API e principais limitações

A API de prevenção de ameaças usa apenas 4 solicitações - upload, consulta, download e cota. No cabeçalho de todas as quatro solicitações você precisa passar a chave API usando o parâmetro Autorização. À primeira vista, a estrutura pode parecer muito mais simples do que API de gerenciamento, mas o número de campos nas solicitações de upload e consulta e a estrutura dessas solicitações são bastante complexos. Eles podem ser comparados funcionalmente aos perfis do Threat Prevention em uma política de segurança de gateway/sandbox.

No momento, a única versão da API de Prevenção de Ameaças foi lançada - 1.0; o URL para chamadas de API deve incluir v1 na parte onde você precisa especificar a versão. Diferentemente da API de Gerenciamento, é necessário indicar a versão da API na URL, caso contrário a solicitação não será executada.

O componente Antivírus, quando chamado sem outros componentes (te, extração), atualmente suporta apenas solicitações de consulta com somas de hash md5. A emulação e a extração de ameaças também suportam somas de hash sha1 e sha256.

É muito importante não errar nas consultas! A solicitação pode ser executada sem erros, mas não completamente. Olhando um pouco adiante, vamos ver o que pode acontecer quando há erros/erros de digitação nas consultas.

Solicitação com erro de digitação com a palavra relatórios(relatórios)

{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                reportss: ["tar", "pdf", "xml"]
            }
		}
	] 
}

Não haverá erro na resposta, mas não haverá nenhuma informação sobre os relatórios

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9cc488fa6209caeb201678f8360a6bb806bd2f85b59d108517ddbbf90baec33a",
      "file_type": "pdf",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}

Mas para uma solicitação sem erro de digitação na chave de relatórios

{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                reports: ["tar", "pdf", "xml"]
            }
		}
	] 
}

Recebemos uma resposta que já contém o ID para download de relatórios

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9cc488fa6209caeb201678f8360a6bb806bd2f85b59d108517ddbbf90baec33a",
      "file_type": "pdf",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "b684066e-e41c-481a-a5b4-be43c27d8b65",
              "pdf_report": "e48f14f1-bcc7-4776-b04b-1a0a09335115",
              "xml_report": "d416d4a9-4b7c-4d6d-84b9-62545c588963"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}

Se enviarmos uma chave de API incorreta/expirada, receberemos um erro 403 em resposta.

API SandBlast: na nuvem e em dispositivos locais

As solicitações de API podem ser enviadas para dispositivos Check Point que possuem o componente Threat Emulation (blade) habilitado. Como endereço para solicitações, você precisa usar o ip/url do dispositivo e a porta 18194 (por exemplo, https://10.10.57.19:18194/tecloud/api/v1/arquivo/query). Você também deve certificar-se de que a política de segurança do dispositivo permite essa conexão. Autorização via chave API em dispositivos locais por padrão desligado e a chave de autorização nos cabeçalhos da solicitação pode nem ser enviada.

As solicitações de API para a nuvem CheckPoint devem ser enviadas para te.checkpoint.com (por exemplo - https://te.checkpoint.com/tecloud/api/v1/arquivo/query). A chave API pode ser obtida como uma licença de teste por 60 dias entrando em contato com os parceiros da Check Point ou com o escritório local da empresa.

Em dispositivos locais, a Extração de Ameaças ainda não é suportada como padrão. API de prevenção de ameaças e deve ser usado API de prevenção de ameaças para gateway de segurança (falaremos sobre isso com mais detalhes no final do artigo).

Os dispositivos locais não suportam a solicitação de cota.

Caso contrário, não há diferenças entre as solicitações para dispositivos locais e para a nuvem.

Carregar chamada de API

Método usado - POST

Endereço de chamada - https:///tecloud/api/v1/arquivo/upload

A solicitação consiste em duas partes (dados do formulário): um arquivo destinado à emulação/limpeza e um corpo da solicitação com texto.

A solicitação de texto não pode estar vazia, mas não pode conter nenhuma configuração. Para que a solicitação seja bem-sucedida, você deve enviar pelo menos o seguinte texto na solicitação:

Mínimo necessário para uma solicitação de upload

POST HTTP

https:///tecloud/api/v1/arquivo/upload

Cabeçalhos:

Autorização:

Corpo

{

"solicitar": {

}

}

Envie o

Envie o

Neste caso, o arquivo será processado de acordo com os parâmetros padrão: componente - te, imagens do sistema operacional - Ganhe XP e Ganhe 7, sem gerar um relatório.

Comentários sobre os principais campos da solicitação de texto:

file_name и tipo de arquivo Você pode deixá-los em branco ou nem mesmo enviá-los, pois esta não é uma informação particularmente útil ao enviar um arquivo. Na resposta da API, esses campos serão preenchidos automaticamente com base no nome do arquivo baixado, e as informações no cache ainda deverão ser pesquisadas usando valores de hash md5/sha1/sha256.

Solicitação de exemplo com file_name e file_type vazios

{

"request": {

"file_name": "",

"file_type": "",

}

}

características — uma lista que indica a funcionalidade necessária ao processar na sandbox - av (Antivírus), te (Emulação de ameaças), extração (Extração de ameaças). Se este parâmetro não for passado, apenas o componente padrão será usado - te (Threat Emulation).

Para ativar o check-in dos três componentes disponíveis, você precisa especificar esses componentes na solicitação da API.

Exemplo de solicitação com check in av, te e extração

{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["av", "te", "extraction"]  
		}
	] 
}

Chaves na seção te

imagens — uma lista contendo dicionários com id e número de revisão dos sistemas operacionais nos quais a verificação será realizada. Os IDs e os números de revisão são iguais para todos os dispositivos locais e para a nuvem.

Lista de sistemas operacionais e revisões

ID de imagem do sistema operacional disponível

Revisão

Sistema operacional e aplicativo de imagem

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - SP32 de 3 bits
Office: 2003, 2007
Adobe Acrobat Reader 9.0
Flash player 9r115 e ActiveX 10.0
Tempo de execução Java: 1.6.0u22

7e6fe36e-889e-4c25-8704-56378f0830df

1

Microsoft Windows: 7 - 32 bits
Office: 2003, 2007
Adobe Acrobat Reader 9.0
Reprodutor Flash: 10.2r152 (PluginActiveX)
Tempo de execução Java: 1.6.0u0

8d188031-1010-4466-828b-0cd13d4303ff

1

Microsoft Windows: 7 - 32 bits
Office 2010
Adobe Acrobat Reader 9.4
Reprodutor Flash: 11.0.1.152 (Plugin & ActiveX)
Tempo de execução Java: 1.7.0u0

5e5de275-a103-4f67-b55b-47532918fa59

1

Microsoft Windows: 7 - 32 bits
Office 2013
Adobe Acrobat Reader 11.0
Reprodutor Flash: 15 (Plugin & ActiveX)
Tempo de execução Java: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64 bits
Office: 2013 (32 bits)
Adobe Acrobat Reader 11.0.01
Reprodutor Flash: 13 (Plugin & ActiveX)
Tempo de execução Java: 1.7.0u9

6c453c9b-20f7-471a-956c-3198a868dc92 

 

Microsoft Windows: 8.1 - 64 bits
Office: 2013 (64 bits)
Adobe Acrobat Reader 11.0.10
Reprodutor Flash: 18.0.0.160 (Plugin & ActiveX)
Tempo de execução Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows 10
Office: Professional Plus 2016 pt-br  
Adobe Acrobat Reader: DC 2015 MUI
Reprodutor Flash: 20 (Plugin & ActiveX)
Tempo de execução Java: 1.7.0u9

Se a chave das imagens não for especificada, a emulação ocorrerá nas imagens recomendadas pela Check Point (atualmente Win XP e Win 7). Essas imagens são recomendadas com base em considerações sobre o melhor equilíbrio entre desempenho e taxa de captura.

relatórios — uma lista de relatórios que solicitamos caso o arquivo seja malicioso. As seguintes opções estão disponíveis:

  1. resumo - Arquivo .tar.gz contendo um relatório sobre emulação por para todos imagens solicitadas (uma página html e componentes como um vídeo do sistema operacional do emulador, um despejo de tráfego de rede, um relatório em json e a própria amostra em um arquivo protegido por senha). Estamos procurando a chave na resposta - relatório_resumo para posterior download do relatório.

  2. pdf - documento sobre emulação em um imagem, que muitos estão acostumados a receber por meio do Smart Console. Estamos procurando a chave na resposta - relatório_pdf para posterior download do relatório.

  3. xml - documento sobre emulação em um imagem, conveniente para análise posterior de parâmetros no relatório. Estamos procurando a chave na resposta - relatório_xml para posterior download do relatório.

  4. alcatrão - Arquivo .tar.gz contendo um relatório sobre emulação em um imagens solicitadas (uma página html e componentes como um vídeo do sistema operacional do emulador, um despejo de tráfego de rede, um relatório em json e a própria amostra em um arquivo protegido por senha). Estamos procurando a chave na resposta - Relatório completo para posterior download do relatório.

O que há dentro do relatório resumidoInteração com Check Point SandBlast via API

As chaves full_report, pdf_report, xml_report estão no dicionário de cada sistema operacional

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9e6f07d03b37db0d3902bde4e239687a9e3d650e8c368188c7095750e24ad2d5",
      "file_type": "html",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "8d18067e-b24d-4103-8469-0117cd25eea9",
              "pdf_report": "05848b2a-4cfd-494d-b949-6cfe15d0dc0b",
              "xml_report": "ecb17c9d-8607-4904-af49-0970722dd5c8"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "d7c27012-8e0c-4c7e-8472-46cc895d9185",
              "pdf_report": "488e850c-7c96-4da9-9bc9-7195506afe03",
              "xml_report": "e5a3a78d-c8f0-4044-84c2-39dc80ddaea2"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}

Mas a chave summary_report - existe uma para emulação em geral

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "d57eadb7b2f91eea66ea77a9e098d049c4ecebd5a4c70fb984688df08d1fa833",
      "file_type": "exe",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "c9a1767b-741e-49da-996f-7d632296cf9f",
              "xml_report": "cc4dbea9-518c-4e59-b6a3-4ea463ca384b"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "ba520713-8c0b-4672-a12f-0b4a1575b913",
              "xml_report": "87bdb8ca-dc44-449d-a9ab-2d95e7fe2503"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "summary_report": "7e7db12d-5df6-4e14-85f3-2c1e29cd3e34",
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}

Você pode solicitar relatórios tar e xml e pdf ao mesmo tempo, pode solicitar resumo e tar e xml. Não será possível solicitar relatório resumido e pdf ao mesmo tempo.

Chaves na seção de extração

Para extração de ameaças, apenas duas chaves são usadas:

método — pdf (converter para pdf, usado por padrão) ou clean (limpar conteúdo ativo).

códigos_de_peças_extraídas - lista de códigos para remoção de conteúdo ativo, aplicável apenas para o método limpo

Códigos para remover conteúdo de arquivos

Code

Descrição

1025

Objetos vinculados

1026

Macros e Código

1034

Hiperlinks confidenciais

1137

Ações PDF GoToR

1139

Ações de lançamento de PDF

1141

Ações de URI de PDF

1142

Ações de som em PDF

1143

Ações de filmes em PDF

1150

Ações JavaScript em PDF

1151

Ações de envio de formulário de PDF

1018

Consultas de banco de dados

1019

Objetos incorporados

1021

Salvar dados rapidamente

1017

Propriedades Customizadas

1036

Propriedades estatísticas

1037

Propriedades de Resumo

Para baixar uma cópia limpa, você também precisará fazer uma solicitação de consulta (que será discutida abaixo) após alguns segundos, especificando a quantidade de hash do arquivo e o componente de extração no texto da solicitação. Você pode obter o arquivo limpo usando o ID da resposta à consulta - extract_file_download_id. Mais uma vez, olhando um pouco adiante, dou exemplos de solicitação e resposta de consulta para busca de um id para download de um documento liberado.

Solicitação de consulta para procurar a chave extract_file_download_id

{ "request":  [  

		{	
			"sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
			"features": ["extraction"] , 
			"extraction": {
		        "method": "pdf"
            }
		}
	] 
}

Resposta à consulta (procure a chave extract_file_download_id)

{
    "response": [
        {
            "status": {
                "code": 1001,
                "label": "FOUND",
                "message": "The request has been fully answered."
            },
            "sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
            "file_type": "",
            "file_name": "",
            "features": [
                "extraction"
            ],
            "extraction": {
                "method": "pdf",
                "extract_result": "CP_EXTRACT_RESULT_SUCCESS",
                "extracted_file_download_id": "b5f2b34e-3603-4627-9e0e-54665a531ab2",
                "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                "time": "0.013",
                "extract_content": "Macros and Code",
                "extraction_data": {
                    "input_extension": "xls",
                    "input_real_extension": "xls",
                    "message": "OK",
                    "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                    "protection_name": "Potential malicious content extracted",
                    "protection_type": "Conversion to PDF",
                    "protocol_version": "1.0",
                    "risk": 5.0,
                    "scrub_activity": "Active content was found - XLS file was converted to PDF",
                    "scrub_method": "Convert to PDF",
                    "scrub_result": 0.0,
                    "scrub_time": "0.013",
                    "scrubbed_content": "Macros and Code"
                },
                "tex_product": false,
                "status": {
                    "code": 1001,
                    "label": "FOUND",
                    "message": "The request has been fully answered."
                }
            }
        }
    ]
}

Visão global

Em uma chamada de API, você pode enviar apenas um arquivo para verificação.

O componente av não requer seção adicional com chaves, basta especificá-lo no dicionário características.

Chamada de API de consulta

Método usado - POST

Endereço de chamada - https:///tecloud/api/v1/arquivo/query

Antes de enviar um arquivo para download (solicitação de upload), é aconselhável verificar o cache do sandbox (solicitação de consulta) para otimizar a carga no servidor API, pois o servidor API já pode ter informações e um veredicto sobre o arquivo baixado. A chamada consiste apenas em uma parte de texto. A parte necessária da solicitação é a quantidade de hash sha1/sha256/md5 do arquivo. A propósito, você pode obtê-lo em resposta à solicitação de upload.

Mínimo necessário para consulta

POST HTTP

https:///tecloud/api/v1/arquivo/query

Cabeçalhos:

Autorização:

Corpo

{

"solicitar": {

"sha256":

}

}

Um exemplo de resposta a uma solicitação de upload, onde os valores de hash sha1/md5/sha256 são visíveis

{
  "response": {
    "status": {
      "code": 1002,
      "label": "UPLOAD_SUCCESS",
      "message": "The file was uploaded successfully."
    },
    "sha1": "954b5a851993d49ef8b2412b44f213153bfbdb32",
    "md5": "ac29b7c26e7dcf6c6fdb13ac0efe98ec",
    "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
    "file_type": "",
    "file_name": "kp-20-doc.doc",
    "features": [
      "te"
    ],
    "te": {
      "trust": 0,
      "images": [
        {
          "report": {
            "verdict": "unknown"
          },
          "status": "not_found",
          "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
          "revision": 1
        }
      ],
      "score": -2147483648,
      "status": {
        "code": 1002,
        "label": "UPLOAD_SUCCESS",
        "message": "The file was uploaded successfully."
      }
    }
  }
}

A solicitação de consulta, além da quantidade de hash, idealmente deve ser a mesma que a solicitação de upload foi (ou está planejada para ser), ou mesmo “já” (conter menos campos na solicitação de consulta do que na solicitação de upload). Caso a solicitação de consulta contenha mais campos do que na solicitação de upload, você não receberá todas as informações necessárias na resposta.

Aqui está um exemplo de resposta a uma consulta em que nem todos os dados necessários foram encontrados

{
  "response": [
    {
      "status": {
        "code": 1006,
        "label": "PARTIALLY_FOUND",
        "message": "The request cannot be fully answered at this time."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te",
        "extraction"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      },
      "extraction": {
        "method": "pdf",
        "tex_product": false,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}

Preste atenção aos campos código и rótulo. Esses campos aparecem três vezes nos dicionários de status. Primeiro vemos a chave global “código”: 1006 e “rótulo”: “PARTIALLY_FOUND”. A seguir, essas chaves são encontradas para cada componente individual que solicitamos - te e extração. E se para você fica claro que os dados foram encontrados, então para extração não há informação.

Esta é a aparência da consulta no exemplo acima

{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te", "extraction"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                "reports": [
                    "xml", "pdf"
                ]
            }
		}
	] 
}

Se você enviar uma solicitação de consulta sem o componente de extração

{ "request":  [  

		{	
			"sha256": {{sha256}},
			"features": ["te"] , 
			"te": {
				"images": [
                    {
                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                        "revision": 1
                    }
                ],
                "reports": [
                    "xml", "pdf"
                ]
            }
		}
	] 
}

Então a resposta conterá informações completas (“código”: 1001, “rótulo”: “ENCONTRADO”)

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}

Se não houver nenhuma informação no cache, a resposta será “label”: “NOT_FOUND”

{
  "response": [
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd91",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}

Em uma chamada de API, você pode enviar vários valores de hash de uma só vez para verificação. A resposta retornará os dados na mesma ordem em que foram enviados na solicitação.

Exemplo de solicitação de consulta com vários valores sha256

{ "request":  [  

		{	
			"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81"
        },
        		{	
			"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82"
        }
	] 
}

Resposta a uma consulta com vários valores sha256

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81",
      "file_type": "dll",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    },
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}

Solicitar várias somas de hash de uma só vez em uma solicitação de consulta também terá um efeito benéfico no desempenho do servidor API.

Baixar chamada de API

Método usado - POST (de acordo com documentação), ENTRE também funciona (e pode parecer mais lógico)

Endereço de chamada - https:///tecloud/api/v1/file/download?id=

O cabeçalho requer que a chave API seja passada, o corpo da solicitação está vazio, o ID do download é passado no endereço URL.

Em resposta a uma solicitação de consulta, caso a emulação seja concluída e os relatórios tenham sido solicitados no momento do download do arquivo, o id para download dos relatórios ficará visível. Caso seja solicitada uma cópia limpa, você deve procurar o id para baixar o documento limpo.

No total, as chaves na resposta à consulta contendo o valor do id para carregamento podem ser:

  • relatório_resumo

  • Relatório completo

  • relatório_pdf

  • relatório_xml

  • extraído_arquivo_download_id

Claro, para receber essas chaves em resposta à solicitação de consulta, elas devem ser especificadas na solicitação (para relatórios) ou lembrar de fazer uma solicitação usando a função de extração (para documentos limpos)

Chamada de API de cota

Método usado - POST

Endereço de chamada - https:///tecloud/api/v1/arquivo/quota

Para verificar a cota restante na nuvem, use a consulta de cota. O corpo da solicitação está vazio.

Exemplo de resposta a uma solicitação de cota

{
  "response": [
    {
      "remain_quota_hour": 1250,
      "remain_quota_month": 10000000,
      "assigned_quota_hour": 1250,
      "assigned_quota_month": 10000000,
      "hourly_quota_next_reset": "1599141600",
      "monthly_quota_next_reset": "1601510400",
      "quota_id": "TEST",
      "cloud_monthly_quota_period_start": "1421712300",
      "cloud_monthly_quota_usage_for_this_gw": 0,
      "cloud_hourly_quota_usage_for_this_gw": 0,
      "cloud_monthly_quota_usage_for_quota_id": 0,
      "cloud_hourly_quota_usage_for_quota_id": 0,
      "monthly_exceeded_quota": 0,
      "hourly_exceeded_quota": 0,
      "cloud_quota_max_allow_to_exceed_percentage": 1000,
      "pod_time_gmt": "1599138715",
      "quota_expiration": "0",
      "action": "ALLOW"
    }
  ]
}

API de prevenção de ameaças para gateway de segurança

Esta API foi desenvolvida antes da API Threat Prevention e destina-se apenas a dispositivos locais. Por enquanto, só pode ser útil se você precisar da API de extração de ameaças. Para emulação de ameaças, é melhor usar a API normal de prevenção de ameaças. Para ligar API TP para SG e configure a chave de API necessária para executar as etapas de sk113599. Recomendo prestar atenção ao passo 6b e verificar a acessibilidade da página https://<IPAddressofSecurityGateway>/UserCheck/TPAPI porque no caso de um resultado negativo, outras configurações não fazem sentido. Todas as chamadas de API serão enviadas para este URL. O tipo de chamada (upload/consulta) é regulado na tecla do corpo da chamada - nome_da_requisição. Também são necessárias chaves - Chave API (você precisa se lembrar disso durante o processo de configuração) e versão_protocolo (a versão atual é 1.1). Você pode encontrar a documentação oficial desta API em sk137032. As vantagens relativas incluem a capacidade de enviar vários arquivos de uma vez para emulação ao carregá-los, uma vez que os arquivos são enviados como uma string de texto base64. Para codificar/decodificar arquivos de/para base64 você pode usar um conversor online no Postman para fins de demonstração, por exemplo - https://base64.guru. Para fins práticos, você deve usar os métodos integrados de codificação e decodificação ao escrever código.

Agora vamos dar uma olhada mais de perto nas funções te и Extração nesta API.

Para componente te dicionário fornecido opções_te em solicitações de upload/consulta, e as chaves nesta solicitação coincidem completamente com as chaves te em API de prevenção de ameaças.

Exemplo de solicitação de emulação de arquivo no Win10 com relatórios

{
"request": [{
    "protocol_version": "1.1",
    "api_key": "<api_key>",
    "request_name": "UploadFile",
    "file_enc_data": "<base64_encoded_file>",
    "file_orig_name": "<filename>",
    "te_options": {
        "images": [
                {
                    "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                    "revision": 1
                }
            ],
        "reports": ["summary", "xml"]
    }
    }
    ]
}

Para componente Extração dicionário fornecido opções de esfrega. Esta solicitação especifica o método de limpeza: converter para PDF, limpar o conteúdo ativo ou selecionar um modo de acordo com o perfil do Threat Prevention (o nome do perfil é indicado). A grande vantagem de responder a uma solicitação de API de extração para um arquivo é que você obtém uma cópia limpa na resposta a essa solicitação como uma string criptografada em base64 (você não precisa fazer uma solicitação de consulta e procurar o ID para baixar o documento)

Exemplo de solicitação para limpar um arquivo

    {
	"request": [{
		"protocol_version": "1.1",
		"api_key": "<API_KEY>",
		"request_name": "UploadFile",
		"file_enc_data": "<base64_encoded_file>",
		"file_orig_name": "hi.txt",
		"scrub_options": {
			"scrub_method": 2
		}
	}]
}

Responder a uma solicitação

{
	"response": [{
		"protocol_version": "1.1",
		"src_ip": "<IP_ADDRESS>",
		"scrub": {
			"file_enc_data": "<base64_encoded_converted_to_PDF_file>",
			"input_real_extension": "js",
			"message": "OK",
			"orig_file_url": "",
			"output_file_name": "hi.cleaned.pdf",
			"protection_name": "Extract potentially malicious content",
			"protection_type": "Conversion to PDF",
			"real_extension": "txt",
			"risk": 0,
			"scrub_activity": "TXT file was converted to PDF",
			"scrub_method": "Convert to PDF",
			"scrub_result": 0,
			"scrub_time": "0.011",
			"scrubbed_content": ""
		}
	}]
} 

Apesar do fato de que menos solicitações de API são necessárias para obter uma cópia limpa, considero esta opção menos preferível e conveniente do que a solicitação de dados de formulário usada em API de prevenção de ameaças.

Coleções do carteiro

Criei coleções no Postman para a API Threat Prevention e a API Threat Prevention para Security Gateway, que representam as solicitações de API mais comuns. Para que a API e a chave ip/url do servidor sejam substituídas automaticamente nas solicitações, e a quantidade de hash sha256 seja lembrada após o download do arquivo, três variáveis ​​​​foram criadas dentro das coleções (você pode encontrá-las acessando as configurações da coleção Editar -> Variáveis): te_api (obrigatório), api_key (preenchimento obrigatório, exceto ao usar API TP com dispositivos locais), sha256 (deixe em branco, não usado na API TP para SG).

Baixe a coleção Postman para API de prevenção de ameaças

Baixe a coleção Postman para a API Threat Prevention for Security Gateway

Exemplos de uso

Na comunidade Verificar posicionamentos são apresentados scripts escritos em Python que verificam arquivos do diretório desejado via API TPE API TP para SG. Através da interação com a API de Prevenção de Ameaças, sua capacidade de verificar arquivos é significativamente ampliada, já que agora você pode verificar arquivos em diversas plataformas ao mesmo tempo (fazendo check-in API VirusTotale, em seguida, na sandbox Check Point) e receber arquivos não apenas do tráfego de rede, mas também obtê-los de qualquer unidade de rede e, por exemplo, de sistemas CRM.

Fonte: habr.com

Adicionar um comentário