Interacción con Check Point SandBlast vía API

Interacción con Check Point SandBlast vía API

Este artículo será útil para quienes estén familiarizados con la tecnología. Check Point mediante emulación de archivos (Emulación de amenazas) y limpieza proactiva de archivos (Extracción de amenazas) y quiere dar un paso hacia la automatización de estas tareas. Punto de control tiene API de prevención de amenazas, que se ejecuta tanto en la nube como en dispositivos locales, y funcionalmente es idéntico a verificar archivos en flujos de tráfico web/smtp/ftp/smb/nfs. Este artículo es en parte la interpretación del autor de un conjunto de artículos de la documentación oficial, pero basado en mi propia experiencia operativa y mis propios ejemplos. También en el artículo encontrará las colecciones de Postman del autor para trabajar con la API de Prevención de amenazas.

Abreviaturas básicas

La API de Prevención de amenazas funciona con tres componentes principales, a los que se llama en la API mediante los siguientes valores de texto:

av — Componente antivirus, responsable del análisis de firmas de amenazas conocidas.

te - Componente Threat Emulation, responsable de comprobar los archivos en el sandbox y emitir un veredicto malicioso/benigno después de la emulación.

Extracción - Componente de extracción de amenazas, responsable de convertir rápidamente los documentos de Office a un formato seguro (en el que se elimina todo el contenido potencialmente malicioso), para entregarlos rápidamente a los usuarios/sistemas.

Estructura API y principales limitaciones.

La API de prevención de amenazas utiliza solo 4 solicitudes: subir, consultar, descargar y cuota. En el encabezado de las cuatro solicitudes, debe pasar la clave API usando el parámetro Autorización. A primera vista, la estructura puede parecer mucho más simple que en API de administración, pero la cantidad de campos en las solicitudes de carga y consulta y la estructura de estas solicitudes son bastante complejas. Estos se pueden comparar funcionalmente con los perfiles de Prevención de amenazas en una política de seguridad de puerta de enlace/zona de pruebas.

Por el momento, se ha lanzado la única versión de la API de Prevención de amenazas: 1.0; la URL para las llamadas a la API debe incluir v1 en la parte donde necesita especificar la versión. A diferencia de la API de administración, es necesario indicar la versión de la API en la URL; de lo contrario, la solicitud no se ejecutará.

El componente antivirus, cuando se llama sin otros componentes (te, extracción), actualmente solo admite solicitudes de consulta con sumas hash md5. La emulación de amenazas y la extracción de amenazas también admiten sumas hash sha1 y sha256.

¡Es muy importante no cometer errores en las consultas! La solicitud se puede ejecutar sin errores, pero no por completo. Mirando un poco hacia adelante, veamos lo que puede suceder cuando hay errores/errores tipográficos en las consultas.

Solicitud con un error tipográfico con la palabra informes(reportss)

{ "request":  [  

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

No habrá ningún error en la respuesta, pero no habrá ninguna información sobre los 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 una solicitud sin un error tipográfico en la clave de informes

{ "request":  [  

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

Recibimos una respuesta que ya contiene identificación 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."
        }
      }
    }
  ]
}

Si enviamos una clave API incorrecta o vencida, recibiremos un error 403 en respuesta.

SandBlast API: en la nube y en dispositivos locales

Las solicitudes de API se pueden enviar a dispositivos Check Point que tengan habilitado el componente Threat Emulation (blade). Como dirección para solicitudes, debe utilizar la ip/url del dispositivo y el puerto 18194 (por ejemplo, https://10.10.57.19:18194/tecloud/api/v1/archivo/query). También debe asegurarse de que la política de seguridad del dispositivo permita dicha conexión. Autorización mediante clave API en dispositivos locales de forma predeterminada apagado y es posible que la clave de autorización en los encabezados de la solicitud no se envíe en absoluto.

Las solicitudes de API a la nube de CheckPoint deben enviarse a te.checkpoint.com (por ejemplo - https://te.checkpoint.com/tecloud/api/v1/archivo/query). La clave API se puede obtener como licencia de prueba durante 60 días comunicándose con los socios de Check Point o con la oficina local de la empresa.

En dispositivos locales, Threat Extraction aún no es compatible como estándar. API de prevención de amenazas y debe usarse API de prevención de amenazas para Security Gateway (hablaremos de ello con más detalle al final del artículo).

Los dispositivos locales no admiten la solicitud de cuota.

Por lo demás, no existen diferencias entre las solicitudes a dispositivos locales y a la nube.

Cargar llamada API

Método utilizado: PUBLICAR

Dirección de llamada - https:///tecloud/api/v1/archivo/cargar

La solicitud consta de dos partes (formulario-datos): un archivo destinado a emulación/limpieza y un cuerpo de solicitud con texto.

La solicitud de texto no puede estar vacía, pero no puede contener ninguna configuración. Para que la solicitud tenga éxito deberá enviar al menos el siguiente texto en la solicitud:

Mínimo requerido para una solicitud de carga

POST HTTP

https:///tecloud/api/v1/archivo/cargar

Encabezados:

Autorización:

Cuerpo

{

"pedido": {

}

}

Archive

Archive

En este caso, el archivo se procesará de acuerdo con los parámetros predeterminados: componente - te, imágenes del sistema operativo - Gana XP y gana 7, sin generar un informe.

Comentarios sobre los campos principales de la solicitud de texto:

file_name и Tipo de archivo Puedes dejarlos en blanco o no enviarlos, ya que no es información especialmente útil a la hora de subir un archivo. En la respuesta de la API, estos campos se completarán automáticamente según el nombre del archivo descargado, y la información en el caché aún deberá buscarse usando cantidades de hash md5/sha1/sha256.

Solicitud de ejemplo con nombre_archivo y tipo_archivo vacíos

{

"request": {

"file_name": "",

"file_type": "",

}

}

Características — una lista que indica la funcionalidad necesaria al procesar en la zona de pruebas: av (Antivirus), te (Emulación de amenazas), extracción (Extracción de amenazas). Si este parámetro no se pasa en absoluto, solo se utilizará el componente predeterminado: te (Emulación de amenazas).

Para habilitar la incorporación de los tres componentes disponibles, debe especificar estos componentes en la solicitud de API.

Ejemplo de solicitud con check in av, te y extracción

{ "request":  [  

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

Claves en la sección te

imágenes — una lista que contiene diccionarios con identificación y número de revisión de los sistemas operativos en los que se realizará la verificación. Los ID y los números de revisión son los mismos para todos los dispositivos locales y la nube.

Lista de sistemas operativos y revisiones.

ID de imagen del sistema operativo disponible

Revisión

Sistema operativo de imagen y aplicación

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - SP32 de 3 bits
Oficina: 2003, 2007
Adobe Acrobat Reader: 9.0
Reproductor Flash 9r115 y ActiveX 10.0
Tiempo de ejecució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
Reproductor Flash: 10.2r152 (EnchufarActiveX)
Tiempo de ejecución de Java: 1.6.0u0

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

1

Microsoft Windows: 7 - 32 bits
Oficina: 2010
Adobe Acrobat Reader: 9.4
Reproductor Flash: 11.0.1.152 (Enchufar & ActiveX)
Tiempo de ejecución de Java: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 bits
Oficina: 2013
Adobe Acrobat Reader: 11.0
Reproductor Flash: 15 (Enchufar & ActiveX)
Tiempo de ejecució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
Reproductor Flash: 13 (Enchufar & ActiveX)
Tiempo de ejecució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
Reproductor Flash: 18.0.0.160 (Enchufar & ActiveX)
Tiempo de ejecución de Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Oficina: Professional Plus 2016 es-es  
Adobe Acrobat Reader: DC 2015 MUI
Reproductor Flash: 20 (Enchufar & ActiveX)
Tiempo de ejecución de Java: 1.7.0u9

Si no se especifica ninguna clave de imágenes, la emulación se realizará en las imágenes recomendadas por Check Point (actualmente Win XP y Win 7). Estas imágenes se recomiendan en función de consideraciones sobre el mejor equilibrio entre rendimiento y tasa de captura.

informes — una lista de informes que solicitamos en caso de que el archivo resulte ser malicioso. Las siguientes opciones están disponibles:

  1. resumen - Archivo .tar.gz que contiene un informe sobre la emulación de todos imágenes solicitadas (tanto una página html como componentes como un video del sistema operativo del emulador, un volcado de tráfico de red, un informe en json y la muestra en sí en un archivo protegido con contraseña). Buscamos la clave en la respuesta. informe resumido para su posterior descarga del informe.

  2. pdf - documento sobre emulación en uno imagen, que muchos están acostumbrados a recibir a través de la Smart Console. Buscamos la clave en la respuesta. informe_pdf para su posterior descarga del informe.

  3. xml - documento sobre emulación en uno imagen, conveniente para el análisis posterior de los parámetros en el informe. Buscamos la clave en la respuesta. informe_xml para su posterior descarga del informe.

  4. alquitrán - Archivo .tar.gz que contiene un informe sobre la emulación en uno imágenes solicitadas (tanto una página html como componentes como un video del sistema operativo del emulador, un volcado de tráfico de red, un informe en json y la muestra en sí en un archivo protegido con contraseña). Buscamos la clave en la respuesta. reporte completo para su posterior descarga del informe.

¿Qué hay dentro del informe resumido?Interacción con Check Point SandBlast vía API

Las claves full_report, pdf_report, xml_report están en el diccionario de cada sistema operativo

{
  "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 la clave resumen_report: hay una para la emulación en general

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

Puede solicitar informes tar, xml y pdf al mismo tiempo, puede solicitar resumen, tar y xml. No será posible solicitar un informe resumido y un pdf al mismo tiempo.

Claves en la sección de extracción

Para la extracción de amenazas, sólo se utilizan dos claves:

Método — pdf (convertir a pdf, usado por defecto) o limpiar (limpiar contenido activo).

códigos_de_piezas_extraídas - lista de códigos para eliminar contenido activo, aplicable solo para el método limpio

Códigos para eliminar contenido de archivos

Código

Descripción

1025

Objetos vinculados

1026

Macros y código

1034

Hipervínculos sensibles

1137

Acciones PDF GoToR

1139

Acciones de lanzamiento de PDF

1141

Acciones de URI de PDF

1142

Acciones de sonido PDF

1143

Acciones de película PDF

1150

Acciones de JavaScript en PDF

1151

Acciones de envío de formulario PDF

1018

Las consultas de bases de datos

1019

Objetos incrustados

1021

Guardar datos rápidamente

1017

Propiedades personalizadas

1036

Propiedades estadísticas

1037

Propiedades de resumen

Para descargar una copia limpia, también deberá realizar una solicitud de consulta (que se analizará a continuación) después de unos segundos, especificando la cantidad de hash del archivo y el componente de extracción en el texto de la solicitud. Puede recoger el archivo limpio utilizando la identificación de la respuesta a la consulta: extraído_archivo_descarga_id. Una vez más, mirando un poco hacia el futuro, doy ejemplos de una solicitud y una respuesta a una consulta para buscar una identificación para descargar un documento borrado.

Solicitud de consulta para buscar la clave extract_file_download_id

{ "request":  [  

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

Respuesta a la consulta (busque la clave 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."
                }
            }
        }
    ]
}

Visión de conjunto

En una llamada API, puede enviar solo un archivo para verificación.

El componente av no requiere una sección adicional con claves, basta con especificarlo en el diccionario Características.

Llamada API de consulta

Método utilizado: PUBLICAR

Dirección de llamada - https:///tecloud/api/v1/archivo/consulta

Antes de enviar un archivo para descargar (solicitud de carga), es recomendable verificar el caché de la zona de pruebas (solicitud de consulta) para optimizar la carga en el servidor API, ya que es posible que el servidor API ya tenga información y un veredicto sobre el archivo descargado. La llamada consta únicamente de una parte de texto. La parte requerida de la solicitud es la cantidad de hash sha1/sha256/md5 del archivo. Por cierto, puedes obtenerlo en la respuesta a la solicitud de carga.

Mínimo requerido para consulta

POST HTTP

https:///tecloud/api/v1/archivo/consulta

Encabezados:

Autorización:

Cuerpo

{

"pedido": {

"sha256":

}

}

Un ejemplo de una respuesta a una solicitud de carga, donde las 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."
      }
    }
  }
}

La solicitud de consulta, además de la cantidad de hash, idealmente debería ser la misma que la solicitud de carga (o que se planea que sea), o incluso “ya” (contener menos campos en la solicitud de consulta que en la solicitud de carga). En el caso de que la solicitud de consulta contenga más campos que los que había en la solicitud de carga, no recibirá toda la información requerida en la respuesta.

A continuación se muestra un ejemplo de una respuesta a una consulta en la que no se encontraron todos los datos requeridos.

{
  "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 a los campos. código и Label. Estos campos aparecen tres veces en los diccionarios de estado. Primero vemos la clave global “código”: 1006 y “etiqueta”: “PARTIALLY_FOUND”. A continuación, se encuentran estas claves para cada componente individual que solicitamos: te y extracción. Y si para ti está claro que se han encontrado los datos, entonces para la extracción no hay información.

Así es como se veía la consulta para el ejemplo anterior.

{ "request":  [  

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

Si envía una solicitud de consulta sin el componente de extracción

{ "request":  [  

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

Entonces la respuesta contendrá información completa (“código”: 1001, “etiqueta”: “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."
        }
      }
    }
  ]
}

Si no hay ninguna información en el caché, entonces la respuesta será "etiqueta": "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."
        }
      }
    }
  ]
}

En una llamada API, puede enviar varias cantidades de hash a la vez para su verificación. La respuesta devolverá los datos en el mismo orden en que se enviaron en la solicitud.

Ejemplo de solicitud de consulta con varios importes sha256

{ "request":  [  

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

Respuesta a una consulta con múltiples montos 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 a la vez en una solicitud de consulta también tendrá un efecto beneficioso en el rendimiento del servidor API.

Descargar llamada API

Método utilizado: PUBLICAR (según documentación), también funciona (y puede parecer más lógico)

Dirección de llamada - https:///tecloud/api/v1/file/download?id=

El encabezado requiere que se pase la clave API, el cuerpo de la solicitud está vacío y la identificación de descarga se pasa en la dirección URL.

En respuesta a una solicitud de consulta, si se completa la emulación y se solicitaron informes al descargar el archivo, la identificación para descargar informes será visible. Si se solicita una copia limpia, debe buscar la identificación para descargar el documento limpio.

En total, las claves en la respuesta a la consulta que contiene el valor de id para cargar pueden ser:

  • informe resumido

  • reporte completo

  • informe_pdf

  • informe_xml

  • ID_descarga_archivo_extraído

Por supuesto, para recibir estas claves en respuesta a la solicitud de consulta, se deben especificar en la solicitud (para informes) o recordar realizar una solicitud utilizando la función de extracción (para documentos limpios)

Llamada API de cuota

Método utilizado: PUBLICAR

Dirección de llamada - https:///tecloud/api/v1/archivo/cuota

Para comprobar la cuota restante en la nube, utilice la consulta de cuota. El cuerpo de la solicitud está vacío.

Ejemplo de respuesta a una solicitud de cuota

{
  "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 amenazas para Security Gateway

Esta API se desarrolló antes que la API de Prevención de amenazas y está destinada únicamente a dispositivos locales. Por ahora, solo puede ser útil si necesita la API Threat Extraction. Para Emulación de amenazas, es mejor utilizar la API de Prevención de amenazas normal. Encender API de TP para SG y configure la clave API que necesita para realizar los pasos desde sk113599. Recomiendo prestar atención al paso 6b y comprobar la accesibilidad de la página. https://<IPAddressofSecurityGateway>/UserCheck/TPAPI porque en caso de un resultado negativo, no tiene sentido realizar más configuraciones. Todas las llamadas a la API se enviarán a esta URL. El tipo de llamada (carga/consulta) se regula en la clave del cuerpo de la llamada: nombre_solicitud. También se requieren claves - Clave API (debe recordarlo durante el proceso de configuración) y versión_protocolo (Actualmente la versión actual es 1.1). Puede encontrar la documentación oficial de esta API en sk137032. Las ventajas relativas incluyen la capacidad de enviar varios archivos a la vez para emularlos al cargarlos, ya que los archivos se envían como una cadena de texto base64. Para codificar/decodificar archivos hacia/desde base64, puede utilizar un convertidor en línea en Postman con fines de demostración, por ejemplo: https://base64.guru. Para fines prácticos, debe utilizar los métodos integrados de codificación y decodificación al escribir código.

Ahora echemos un vistazo más de cerca a las funciones. te и Extracción en esta API.

Para componente te diccionario proporcionado te_opciones en solicitudes de carga/consulta, y las claves en esta solicitud coinciden completamente con las claves en API de prevención de amenazas.

Solicitud de ejemplo para emulación de archivos 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 componente Extracción diccionario proporcionado opciones de fregado. Esta solicitud especifica el método de limpieza: convertir a PDF, borrar el contenido activo o seleccionar un modo de acuerdo con el perfil de Prevención de amenazas (se indica el nombre del perfil). Lo mejor de responder a una solicitud de API de extracción para un archivo es que obtienes una copia limpia en la respuesta a esa solicitud como una cadena cifrada en base64 (no necesitas realizar una solicitud de consulta y buscar la identificación para descargar el documento)

Ejemplo de una solicitud para borrar un archivo

    {
	"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 una solicitud

{
	"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 se requieren menos solicitudes de API para obtener una copia limpia, considero que esta opción es menos preferible y conveniente que la solicitud de datos de formulario utilizada en API de prevención de amenazas.

Colecciones de cartero

Creé colecciones en Postman tanto para la API de Prevención de amenazas como para la API de Prevención de amenazas para Security Gateway, que representan las solicitudes de API más comunes. Para que la API y la clave de IP/URL del servidor se sustituyan automáticamente en las solicitudes, y para que la cantidad de hash sha256 se recuerde después de descargar el archivo, se han creado tres variables dentro de las colecciones (puede encontrarlas yendo a la configuración de la colección). Editar -> Variables): te_api (obligatorio), api_key (es necesario completarlo, excepto cuando se usa TP API con dispositivos locales), sha256 (dejar vacío, no se usa en TP API para SG).

Descargue la colección Postman para la API de prevención de amenazas

Descargue la colección Postman para Prevención de amenazas para la API Security Gateway

Ejemplos de uso

En la comunidad Jaque de Mates Se presentan scripts escritos en Python que verifican archivos del directorio deseado a través de API de TPY API de TP para SG. A través de la interacción con la API de Prevención de amenazas, su capacidad para escanear archivos se amplía significativamente, ya que ahora puede escanear archivos en varias plataformas a la vez (registrando API VirusTotal, y luego en el entorno limitado de Check Point), y recibir archivos no solo del tráfico de la red, sino también de cualquier unidad de red y, por ejemplo, de los sistemas CRM.

Fuente: habr.com

Añadir un comentario