Interacción con Check Point SandBlast mediante API

Interacción con Check Point SandBlast mediante API

Este artigo será útil para aqueles que estean familiarizados coa tecnoloxía Punto de verificación mediante emulación de ficheiros (Emulación de ameazas) e limpeza proactiva de ficheiros (Extracción de ameazas) e quere dar un paso cara a automatizar estas tarefas. Check Point ten API de prevención de ameazas, que se executa tanto na nube como en dispositivos locais, e funcionalmente é idéntico a comprobar ficheiros en fluxos de tráfico web/smtp/ftp/smb/nfs. Este artigo é en parte a interpretación do autor dun conxunto de artigos da documentación oficial, pero baseado na miña propia experiencia operativa e nos meus propios exemplos. Tamén no artigo atoparás as coleccións Postman do autor para traballar coa API de prevención de ameazas.

Abreviaturas básicas

A API de prevención de ameazas funciona con tres compoñentes principais, que se chaman na API a través dos seguintes valores de texto:

av — Compoñente antivirus, responsable da análise de sinaturas das ameazas coñecidas.

te - Compoñente de emulación de ameazas, responsable de comprobar os ficheiros no sandbox e de emitir un veredicto malicioso/benigno despois da emulación.

extracción - Compoñente de extracción de ameazas, responsable de converter rapidamente os documentos ofimáticos nun formulario seguro (no que se elimina todo o contido potencialmente malicioso), para entregalos rapidamente aos usuarios/sistemas.

Estrutura da API e principais limitacións

A API de prevención de ameazas usa só 4 solicitudes − carga, consulta, descarga e cota. Na cabeceira das catro solicitudes, cómpre pasar a clave API mediante o parámetro autorización. A primeira vista, a estrutura pode parecer moito máis sinxela que en API de xestión, pero o número de campos das solicitudes de carga e consulta e a estrutura destas solicitudes son bastante complexos. Pódense comparar funcionalmente cos perfís de prevención de ameazas nunha política de seguranza de pasarela/sandbox.

Polo momento, lanzouse a única versión da API de prevención de ameazas: 1.0; o URL das chamadas á API debe incluír v1 na parte onde precisa especificar a versión. A diferenza da API de xestión, é necesario indicar a versión da API na URL, se non, a solicitude non se executará.

O compoñente antivirus, cando se chama sen outros compoñentes (te, extracción), actualmente só admite solicitudes de consulta con sumas hash md5. A emulación de ameazas e a extracción de ameazas tamén admiten as sumas hash sha1 e sha256.

É moi importante non cometer erros nas consultas! A solicitude pódese executar sen erros, pero non completamente. Mirando un pouco cara adiante, vexamos o que pode ocorrer cando hai erros/erros tipográficos nas consultas.

Solicitude cun erro tipográfico coa palabra informes(informes)

{ "request":  [  

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

Non haberá ningún erro na resposta, pero non haberá información sobre os informes

{
  "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."
        }
      }
    }
  ]
}

Pero para unha solicitude sen erros na clave de informes

{ "request":  [  

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

Recibimos unha resposta que xa contén ID para descargar informes

{
  "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 enviamos unha clave API incorrecta/caducada, recibiremos un erro 403 como resposta.

API SandBlast: na nube e en dispositivos locais

As solicitudes de API pódense enviar a dispositivos Check Point que teñan activado o compoñente de emulación de ameazas (blade). Como enderezo para as solicitudes, cómpre utilizar a ip/url do dispositivo e o porto 18194 (por exemplo, https://10.10.57.19:18194/tecloud/api/v1/file/query). Tamén debes asegurarte de que a política de seguranza do dispositivo permite esta conexión. Autorización mediante clave API en dispositivos locais de forma predeterminada apagado e é posible que non se envíe a clave de autorización nas cabeceiras da solicitude.

As solicitudes de API á nube CheckPoint deben enviarse a te.checkpoint.com (por exemplo - https://te.checkpoint.com/tecloud/api/v1/file/query). A clave API pódese obter como licenza de proba durante 60 días contactando cos socios de Check Point ou coa oficina local da empresa.

Nos dispositivos locais, Threat Extraction aínda non é compatible de forma estándar. API de prevención de ameazas e debe ser usado API de prevención de ameazas para Security Gateway (falarémolo con máis detalle ao final do artigo).

Os dispositivos locais non admiten a solicitude de cota.

En caso contrario, non hai diferenzas entre as solicitudes aos dispositivos locais e á nube.

Cargar chamada API

Método utilizado − POST

Enderezo de chamada - https:///tecloud/api/v1/file/upload

A solicitude consta de dúas partes (formulario-datos): un ficheiro destinado á emulación/limpeza e un corpo da solicitude con texto.

A solicitude de texto non pode estar baleira, pero pode non conter ningunha configuración. Para que a solicitude teña éxito, debe enviar polo menos o seguinte texto na solicitude:

Mínimo necesario para unha solicitude de carga

POST HTTP

https:///tecloud/api/v1/file/upload

Cabeceiras:

Autorización:

Corpo

{

"solicitude": {

}

}

Arquivo

Arquivo

Neste caso, o ficheiro procesarase de acordo cos parámetros predeterminados: compoñente - te, imaxes do sistema operativo - Win XP e Win 7, sen xerar un informe.

Comentarios sobre os campos principais da solicitude de texto:

Nome de arquivo и tipo_ficheiro Podes deixalos en branco ou non envialos en absoluto, xa que esta información non é especialmente útil cando se carga un ficheiro. Na resposta da API, estes campos encheranse automaticamente en función do nome do ficheiro descargado e a información da caché aínda terá que buscarse usando as cantidades hash md5/sha1/sha256.

Exemplo de solicitude con nome_ficheiro e tipo_ficheiro baleiros

{

"request": {

"file_name": "",

"file_type": "",

}

}

características — unha lista que indica a funcionalidade necesaria ao procesar no sandbox: av (Anti-Virus), te (Emulación de ameazas), extracción (Extracción de ameazas). Se non se pasa este parámetro, só se utilizará o compoñente predeterminado - te (Emulación de ameazas).

Para activar a comprobación dos tres compoñentes dispoñibles, cómpre especificar estes compoñentes na solicitude da API.

Exemplo de solicitude con facturación av, te e extracción

{ "request":  [  

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

Claves na sección te

imaxes — unha lista que conteña dicionarios con ID e número de revisión dos sistemas operativos nos que se realizará a comprobación. Os ID e os números de revisión son os mesmos para todos os dispositivos locais e para a nube.

Lista de sistemas operativos e revisións

ID de imaxe do sistema operativo dispoñible

Revisión

Imaxe SO e aplicación

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32 bits SP3
Oficina: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 e Activo X 10.0
Tempo de execución de Java: 1.6.0u22

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

1

Microsoft Windows: 7 - 32 bits
Oficina: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player: 10.2r152 (ExtensiónActivo X)
Tempo de execución de Java: 1.6.0u0

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

1

Microsoft Windows: 7 - 32 bits
Oficina: 2010
Adobe Acrobat Reader: 9.4
Flash Player: 11.0.1.152 (Extensión & Activo X)
Tempo de execución de Java: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 bits
Oficina: 2013
Adobe Acrobat Reader: 11.0
Flash Player: 15 (Extensión & Activo X)
Tempo de execución de Java: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64 bits
Oficina: 2013 (32 bits)
Adobe Acrobat Reader: 11.0.01
Flash Player: 13 (Extensión & Activo X)
Tempo de execución de Java: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64 bits
Oficina: 2013 (64 bits)
Adobe Acrobat Reader: 11.0.10
Flash Player: 18.0.0.160 (Extensión & Activo X)
Tempo de execución de Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Oficina: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Flash Player: 20 (Extensión & Activo X)
Tempo de execución de Java: 1.7.0u9

Se non se especifica a clave de imaxes, a emulación terá lugar nas imaxes recomendadas por Check Point (actualmente Win XP e Win 7). Estas imaxes recoméndanse en función do mellor equilibrio entre rendemento e taxa de captura.

informes — unha lista de informes que solicitamos no caso de que o ficheiro resulte ser malicioso. As seguintes opcións están dispoñibles:

  1. resumo - Arquivo .tar.gz que contén un informe sobre a emulación por para todos imaxes solicitadas (tanto unha páxina html como compoñentes como un vídeo do sistema operativo do emulador, un volcado de tráfico de rede, un informe en json e a propia mostra nun arquivo protexido con contrasinal). Buscamos a clave na resposta - informe_resumo para a posterior descarga do informe.

  2. pdf - documento sobre a emulación en un imaxe, que moitos están acostumados a recibir a través da Smart Console. Buscamos a clave na resposta - informe_pdf para a posterior descarga do informe.

  3. xml - documento sobre a emulación en un imaxe, conveniente para a posterior análise de parámetros no informe. Buscamos a clave na resposta - informe_xml para a posterior descarga do informe.

  4. alcatrán - Arquivo .tar.gz que contén un informe sobre a emulación en un imaxes solicitadas (tanto unha páxina html como compoñentes como un vídeo do sistema operativo do emulador, un volcado de tráfico de rede, un informe en json e a propia mostra nun arquivo protexido con contrasinal). Buscamos a clave na resposta - informe_completo para a posterior descarga do informe.

O que hai dentro do informe resumoInteracción con Check Point SandBlast mediante API

As claves full_report, pdf_report, xml_report están no dicionario de cada SO

{
  "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."
        }
      }
    }
  ]
}

Pero a chave summary_report: hai unha para a emulación en xeral

{
  "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."
        }
      }
    }
  ]
}

Podes solicitar informes tar e xml e pdf ao mesmo tempo, podes solicitar un resumo e tar e xml. Non se poderá solicitar ao mesmo tempo un informe resumo e un pdf.

Claves na sección de extracción

Para a extracción de ameazas, só se utilizan dúas claves:

método — pdf (converter a pdf, usado por defecto) ou clean (limpar contido activo).

códigos_de_partes_extraídas - lista de códigos para eliminar contido activo, aplicable só ao método limpo

Códigos para eliminar contido dos ficheiros

código

descrición

1025

Obxectos vinculados

1026

Macros e Código

1034

Hipervínculos sensibles

1137

PDF GoToR Actions

1139

Accións de lanzamento de PDF

1141

Accións de URI PDF

1142

Accións sonoras en PDF

1143

Accións de películas en PDF

1150

Accións de JavaScript en PDF

1151

PDF Enviar accións do formulario

1018

Consultas de base de datos

1019

Obxectos incrustados

1021

Garda rápido de datos

1017

Propiedades personalizadas

1036

Propiedades estatísticas

1037

Propiedades de resumo

Para descargar unha copia limpa, tamén terás que facer unha solicitude de consulta (que se comentará a continuación) despois duns segundos, especificando a cantidade de hash do ficheiro e o compoñente de extracción no texto da solicitude. Podes recoller o ficheiro limpo usando o identificador da resposta á consulta: extracted_file_download_id. Unha vez máis, mirando un pouco cara adiante, dou exemplos de solicitude e resposta de consulta para buscar un identificador para descargar un documento borrado.

Solicitude de consulta para buscar a clave extracted_file_download_id

{ "request":  [  

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

Resposta á consulta (busque a clave extracted_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."
                }
            }
        }
    ]
}

Visión global

Nunha chamada de API, só podes enviar un ficheiro para a verificación.

O compoñente av non require unha sección adicional con claves, abonda con especificalo no dicionario características.

Consulta a chamada da API

Método utilizado − POST

Enderezo de chamada - https:///tecloud/api/v1/file/query

Antes de enviar un ficheiro para descargar (solicitude de carga), é recomendable comprobar a caché do sandbox (solicitude de consulta) para optimizar a carga no servidor API, xa que o servidor API xa pode ter información e un veredicto sobre o ficheiro descargado. A convocatoria consta só dunha parte de texto. A parte necesaria da solicitude é a cantidade hash sha1/sha256/md5 do ficheiro. Por certo, podes obtelo na resposta á solicitude de carga.

Mínimo necesario para a consulta

POST HTTP

https:///tecloud/api/v1/file/query

Cabeceiras:

Autorización:

Corpo

{

"solicitude": {

"sha256":

}

}

Un exemplo de resposta a unha solicitude de carga, onde as cantidades de hash sha1/md5/sha256 son visibles

{
  "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 solicitude de consulta, ademais da cantidade de hash, debería ser idealmente a mesma que a solicitude de carga foi (ou está previsto que sexa), ou incluso "xa" (conter menos campos na solicitude de consulta que na solicitude de carga). No caso de que a solicitude de consulta conteña máis campos dos que había na solicitude de carga, non recibirá toda a información requirida na resposta.

Aquí tes un exemplo de resposta a unha consulta na que non se atoparon todos os datos necesarios

{
  "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."
        }
      }
    }
  ]
}

Presta atención aos campos código и etiqueta. Estes campos aparecen tres veces nos dicionarios de estado. Primeiro vemos a chave global "code": 1006 e "label": "PARTIALLY_FOUND". A continuación, atópanse estas claves para cada compoñente individual que solicitamos: te e extracción. E se para te está claro que se atoparon os datos, entón para a extracción non hai información.

Este é o aspecto da consulta para o exemplo anterior

{ "request":  [  

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

Se envía unha solicitude de consulta sen o compoñente de extracción

{ "request":  [  

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

A continuación, a resposta conterá información completa ("código": 1001, "etiqueta": "FOUND")

{
  "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 non hai información na caché, entón 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."
        }
      }
    }
  ]
}

Nunha chamada á API, podes enviar varias cantidades de hash á vez para a verificación. A resposta devolverá os datos na mesma orde na que se enviaron na solicitude.

Exemplo de solicitude de consulta con varias cantidades sha256

{ "request":  [  

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

Resposta a unha consulta con varias cantidades 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 varias sumas hash á vez nunha solicitude de consulta tamén terá un efecto beneficioso sobre o rendemento do servidor API.

Descargar chamada API

Método utilizado − POST (segundo documentación), GET tamén funciona (e pode parecer máis lóxico)

Enderezo de chamada - https:///tecloud/api/v1/file/download?id=

A cabeceira require que se pase a clave da API, o corpo da solicitude está baleiro, o ID de descarga pásase no enderezo URL.

En resposta a unha solicitude de consulta, se a emulación se completa e se solicitaron informes ao descargar o ficheiro, o ID para descargar informes estará visible. Se se solicita unha copia limpa, debes buscar o identificador para descargar o documento limpo.

En total, as claves na resposta á consulta que contén o valor de id para cargar poden ser:

  • informe_resumo

  • informe_completo

  • informe_pdf

  • informe_xml

  • identificador_de_descarga_de_ficheiro_extraído

Por suposto, para recibir estas claves en resposta á solicitude de consulta, hai que especificalas na solicitude (para informes) ou lembrar facer unha solicitude mediante a función de extracción (para documentos limpos)

Chamada á API de cuota

Método utilizado − POST

Enderezo de chamada - https:///tecloud/api/v1/file/quota

Para comprobar a cota restante na nube, utiliza a consulta de cota. O corpo da solicitude está baleiro.

Exemplo de resposta a unha solicitude 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 prevención de ameazas para Security Gateway

Esta API desenvolveuse antes da API de prevención de ameazas e está pensada só para dispositivos locais. Polo momento só pode ser útil se necesitas a API de extracción de ameazas. Para a emulación de ameazas, é mellor usar a API de prevención de ameazas normal. Para acender TP API para SG e configure a clave API desde a que precisa seguir os pasos sk113599. Recomendo prestar atención ao paso 6b e comprobar a accesibilidade da páxina https://<IPAddressofSecurityGateway>/UserCheck/TPAPI porque en caso de resultado negativo, a configuración adicional non ten sentido. Todas as chamadas de API enviaranse a este URL. O tipo de chamada (carga/consulta) regúlase na tecla do corpo da chamada − nome_solicitude. Tamén son necesarias as claves - chave_api (cómpre lembralo durante o proceso de configuración) e versión_protocolo (actualmente a versión actual é 1.1). Podes atopar a documentación oficial desta API en sk137032. As vantaxes relativas inclúen a posibilidade de enviar varios ficheiros á vez para a súa emulación ao cargalos, xa que os ficheiros son enviados como unha cadea de texto base64. Para codificar/descodificar ficheiros a/desde base64 pode usar un conversor en liña en Postman con fins de demostración, por exemplo: https://base64.guru. Para fins prácticos, debes usar os métodos de codificación e decodificación incorporados ao escribir código.

Agora vexamos máis de cerca as funcións te и extracción nesta API.

Para compoñente te dicionario proporcionado te_opcións en solicitudes de carga/consulta, e as claves desta solicitude coinciden completamente coas teclas te in API de prevención de ameazas.

Exemplo de solicitude de emulación de ficheiros en Win10 con informes

{
"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 compoñente extracción dicionario proporcionado scrub_options. Esta solicitude especifica o método de limpeza: converter a PDF, borrar o contido activo ou seleccionar un modo de acordo co perfil de Prevención de ameazas (indícase o nome do perfil). O fantástico de responder a unha solicitude da API de extracción dun ficheiro é que obtén unha copia limpa na resposta a esa solicitude como unha cadea cifrada base64 (non precisa facer unha solicitude de consulta e buscar o ID para descargar o documento)

Exemplo de solicitude para borrar un ficheiro

    {
	"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 unha solicitude

{
	"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": ""
		}
	}]
} 

A pesar de que son necesarias menos solicitudes de API para obter unha copia borrada, paréceme que esta opción é menos preferible e conveniente que a solicitude de datos do formulario utilizada en API de prevención de ameazas.

Coleccións carteiro

Creei coleccións en Postman tanto para a API de prevención de ameazas como para a API de prevención de ameazas para Security Gateway, que representan as solicitudes de API máis comúns. Para que a API e a chave ip/url do servidor se substitúan automaticamente nas solicitudes e se recorde a cantidade de hash sha256 despois de descargar o ficheiro, creáronse tres variables dentro das coleccións (podes atopalas indo á configuración da colección). Editar -> Variables): te_api (obrigatorio), api_key (necesario que se enche, excepto cando se usa a API TP con dispositivos locais), sha256 (deixe en branco, non se usa na API de TP para SG).

Descarga a colección Postman para a API de prevención de ameazas

Descarga a colección Postman para Threat Prevention for Security Gateway API

Exemplos de uso

Na comunidade Comprobe Mates preséntanse scripts escritos en Python que verifican os ficheiros do directorio desexado mediante TP APIE TP API para SG. A través da interacción coa API de prevención de ameazas, amplíase significativamente a súa capacidade para analizar ficheiros, xa que agora pode escanear ficheiros en varias plataformas á vez (comprobando API de VirusTotal, e despois no sandbox de Check Point), e recibe ficheiros non só do tráfico da rede, senón que tamén os leva desde calquera unidade de rede e, por exemplo, sistemas CRM.

Fonte: www.habr.com

Engadir un comentario