Interacció amb Check Point SandBlast mitjançant API

Interacció amb Check Point SandBlast mitjançant API

Эта статья будет полезна тем, кто знаком с технологиями Check Point per emulació de fitxers (Emulació d'amenaces) i neteja proactiva de fitxers (Extracció de l'amenaça) i vol fer un pas cap a l'automatització d'aquestes tasques. Check Point té API de prevenció d'amenaces, que s'executa tant al núvol com a dispositius locals, i функционально он идентичен проверке файлов в потоках web/smtp/ftp/smb/nfs трафика. Данная статья отчасти является авторской трактовкой набора статей из официальной документации, но построенная на своем опыте эксплуатации и на собственных примерах. Также в статье вы найдете авторские коллекции Postman для работы с Threat Prevention API.

Abreviatures bàsiques

Threat Prevention API работает с тремя основными компонентами, которые в API вызываются через следующие текстовые значения:

av — компонент Anti-Virus, отвечает за сигнатурный анализ известных угроз.

te — компонент Threat Emulation, отвечает за проверку файлов в песочнице, и вынесение вердикта зловредный (malicious)/чистый(benign) после эмуляции.

extracció — компонент Threat Extraction, отвечающий за быструю конвертацию офисных документов в безопасный вид (в котором удаляется весь потенциально вредоносный контент), в целях их быстрой доставки пользователям/системам.

Estructura de l'API i principals limitacions

L'API de prevenció d'amenaces només utilitza 4 sol·licituds − càrrega, consulta, descàrrega i quota. В заголовке для всех четырех запросов нужно передать API ключ, используя параметр Autorització. A primera vista, l'estructura pot semblar molt més senzilla que en API de gestió, но количество полей в запросах upload и query и структура этих запросов достаточно комплексные. Их можно функционально сравнить с профилями Threat Prevention в политике безопасности шлюза/песочницы.

На данный момент, выпущена единственная версия Threat Prevention API — 1.0, в URL для API вызовов следует указывать v1 в той части, где требуется указать версию. В отличии от Management API, указывать версию API в URL адресе обязательно, иначе запрос не выполнится.

Компонент Anti-Virus при вызове без других компонентов (te, extraction) на данный момент поддерживает только запросы query с md5 хэш суммами. Threat Emulation и Threat Extraction поддерживает также sha1 и sha256 хэш суммы.

És molt important no equivocar-se en les consultes! Запрос может быть исполнен без ошибки, но не полностью. Чуть забегая вперед рассмотрим что может происходить при ошибках/опечатках в запросах.

Sol·licitud amb un error ortogràfic amb la paraula informes(informes)

{ "request":  [  

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

В ответе ошибки не будет, но при этом информации об отчетах не будет вовсе

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

Però per a una sol·licitud sense errors a la clau d'informes

{ "request":  [  

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

Rebem una resposta que ja conté l'identificador per baixar 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 enviem una clau API incorrecta/caducada, rebrem un error 403 en resposta.

API SandBlast: al núvol i en dispositius locals

API запросы можно отправлять на устройства Check Point, на которых включен компонент (blade) Threat Emulation. В качестве адреса для запросов нужно использовать ip/url устройства и порт 18194 (например — https://10.10.57.19:18194/tecloud/api/v1/file/query). Также следует убедиться в том, что политикой безопасности на устройстве разрешено такое подключение. Авторизация через API ключ на локальных устройствах по умолчанию apagat и ключ Authorization в заголовках запросов можно не отправлять вовсе.

Les sol·licituds d'API al núvol CheckPoint s'han d'enviar a te.checkpoint.com (per exemple - https://te.checkpoint.com/tecloud/api/v1/file/query). API ключ можно получить в виде триальной лицензии на 60 дней, обратившись к партнерам Check Point или в локальный офис компании.

На локальных устройствах Threat Extraction пока не поддерживается в стандартном API de prevenció d'amenaces i s'ha d'utilitzar API de prevenció d'amenaces per a la passarel·la de seguretat (en parlarem amb més detall al final de l'article).

Els dispositius locals no admeten la sol·licitud de quota.

В остальном отличий между запросами к локальным устройствам и к облаку нет.

Penja la trucada de l'API

Mètode utilitzat − PAL

Adreça de trucada - https:///tecloud/api/v1/file/upload

Запрос состоит из двух частей (form-data): файла предназначенный для эмуляции/очистки и тела запроса с текстом.

Текстовый запрос не может быть пустым, но при этом может не содержать никакой конфигурации. Для того, чтобы запрос был успешным, нужно отправить минимум следующий текст в запросе:

Mínim requerit per a una sol·licitud de càrrega

HTTP POST

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

Capçaleres:

Autorització:

Cos

{

"sol·licitud": {

}

}

Dossier

Dossier

В таком случае файл на обработку попадет в соответствии с параметрами по умолчанию: компонент — te, imatges del sistema operatiu - Guanyeu XP i Win 7, sense generar un informe.

Comentaris sobre els camps principals de la sol·licitud de text:

nom de l'arxiu и tipus d'arxiu можно оставить пустыми или не отправлять вовсе, так как это не особо полезная информация при загрузке файла. В API ответе данные поля заполнятся автоматически на основе имени загружаемого файла, а информацию в кэше все равно придется искать по md5/sha1/sha256 hash суммам.

Exemple de sol·licitud amb nom_fitxer i tipus_fitxer buits

{

"request": {

"file_name": "",

"file_type": "",

}

}

característiques — список, в котором указывается необходимый функционал при обработке в песочнице — av (Anti-Virus), te (Threat Emulation), extraction (Threat Extraction). Если данный параметр не передать вовсе, то будет задействован только компонент по умолчанию — te(Threat Emulation).

Чтобы включить проверку в трех доступных компонентах, нужно указать эти компоненты в API запросе.

Exemple de sol·licitud amb facturació av, te i extracció

{ "request":  [  

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

Claus a la secció te

imatges — список, внутри которого должны быть указаны словари с id и номером ревизии операционных систем, в которых будет выполняться проверка. ID и номера ревизий одинаковые для всех локальных устройств и облака.

Llista de sistemes operatius i revisions

ID d'imatge del sistema operatiu disponible

Revisió

Imatge SO i aplicació

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32 bits SP3
Oficines: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 i ActiveX 10.0
Temps d'execució de Java: 1.6.0u22

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

1

Microsoft Windows: 7 - 32 bits
Oficines: 2003, 2007
Adobe Acrobat Reader: 9.0
Reproductor flash: 10.2r152 (PluginActiveX)
Temps d'execució de Java: 1.6.0u0

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

1

Microsoft Windows: 7 - 32 bits
Oficines: 2010
Adobe Acrobat Reader: 9.4
Reproductor flash: 11.0.1.152 (Plugin & ActiveX)
Temps d'execució de Java: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 bits
Oficines: 2013
Adobe Acrobat Reader: 11.0
Reproductor flash: 15 (Plugin & ActiveX)
Temps d'execució de Java: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64 bits
Oficines: 2013 (32 bits)
Adobe Acrobat Reader: 11.0.01
Reproductor flash: 13 (Plugin & ActiveX)
Temps d'execució de Java: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64 bits
Oficines: 2013 (64 bits)
Adobe Acrobat Reader: 11.0.10
Reproductor flash: 18.0.0.160 (Plugin & ActiveX)
Temps d'execució de Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Oficines: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Reproductor flash: 20 (Plugin & ActiveX)
Temps d'execució de Java: 1.7.0u9

Если ключ images не указать вовсе, то эмуляция будет проходить в образах, рекомендованных Check Point (на данный момент это Win XP и Win 7). Данные образы рекомендованы исходя из соображений наилучшего баланса производительности и catch rate.

informes — список отчетов, которые мы запрашиваем на случай, если файл окажется вредоносным. Доступны следующие варианты:

  1. resum - Arxiu .tar.gz que conté un informe sobre l'emulació per tothom запрошенным image’ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ — resum_informe per a la posterior descàrrega de l'informe.

  2. pdf - document sobre l'emulació en un image, который многие привыкли получать через Smart Console. В ответе ищем ключ — pdf_informe per a la posterior descàrrega de l'informe.

  3. xml - document sobre l'emulació en un image, удобный для последующего парсинга параметров в отчете. В ответе ищем ключ — xml_report per a la posterior descàrrega de l'informe.

  4. tar - Arxiu .tar.gz que conté un informe sobre l'emulació a un запрошенным image’ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ — informe_complet per a la posterior descàrrega de l'informe.

Què hi ha dins de l'informe resumInteracció amb Check Point SandBlast mitjançant API

Ключи full_report, pdf_report, xml_report есть в словаре для каждой ОС

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

Però la clau summary_report: n'hi ha una per a l'emulació 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."
        }
      }
    }
  ]
}

Можно запросить одновременно отчеты tar и xml и pdf, можно summary и tar и xml. Одновременно запросить summary отчет и pdf не получится.

Claus a la secció d'extracció

Per a l'extracció d'amenaces, només s'utilitzen dues claus:

mètode — pdf(конвертация в pdf, используется по умолчанию) или clean(очистка активного содержимого).

codis_de_parts_extretes - llista de codis per eliminar contingut actiu, aplicable només al mètode net

Codis per eliminar contingut dels fitxers

codi

Descripció

1025

Objectes enllaçats

1026

Macros i codi

1034

Hiperenllaços sensibles

1137

PDF GoToR Accions

1139

Accions de llançament de PDF

1141

Accions d'URI PDF

1142

Accions de so en PDF

1143

Accions de pel·lícules en PDF

1150

Accions de JavaScript en PDF

1151

PDF Enviar accions del formulari

1018

Consultes de bases de dades

1019

Objectes incrustats

1021

Desa ràpid de dades

1017

Propietats personalitzades

1036

Propietats estadístiques

1037

Propietats de resum

Per descarregar una còpia neta, també haureu de fer una sol·licitud de consulta (que es comentarà a continuació) després d'uns segons, especificant la quantitat hash del fitxer i el component d'extracció al text de la sol·licitud. Podeu recollir el fitxer netejat utilitzant l'identificador de la resposta a la consulta: extracted_file_download_id. Un cop més, mirant una mica endavant, dono exemples d'una sol·licitud i una resposta de consulta per buscar un identificador per descarregar un document esborrat.

Sol·licitud de consulta per cercar la clau extracted_file_download_id

{ "request":  [  

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

Resposta a la consulta (cerqueu la clau 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ó de conjunt

En una trucada a l'API, només podeu enviar un fitxer per a la verificació.

Компонент av не требует дополнительного раздела с ключами, достаточно указать его в словаре característiques.

Consulta la trucada de l'API

Mètode utilitzat − PAL

Adreça de trucada - https:///tecloud/api/v1/file/query

Abans d'enviar un fitxer per a la descàrrega (sol·licitud de càrrega), és recomanable comprovar la memòria cau del sandbox (sol·licitud de consulta) per tal d'optimitzar la càrrega al servidor API, ja que és possible que el servidor API ja tingui informació i un veredicte sobre el fitxer descarregat. La convocatòria consta només d'una part de text. La part necessària de la sol·licitud és la quantitat hash sha1/sha256/md5 del fitxer. Per cert, el podeu obtenir a la resposta a la sol·licitud de càrrega.

Mínim requerit per a la consulta

HTTP POST

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

Capçaleres:

Autorització:

Cos

{

"sol·licitud": {

"sha256":

}

}

Пример ответа на запрос upload, где видны sha1/md5/sha256 hash суммы

{
  "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 sol·licitud de consulta, a més de la quantitat hash, idealment hauria de ser la mateixa que la sol·licitud de càrrega (o està previst que sigui), o fins i tot "ja" (conté menys camps a la sol·licitud de consulta que a la sol·licitud de càrrega). En el cas que la sol·licitud de consulta contingui més camps dels que hi havia a la sol·licitud de càrrega, no rebràs tota la informació requerida a la resposta.

Вот пример ответа на запрос query, где были найдены не все требуемые данные

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

Atenció als camps codi и etiqueta. Данные поля встречаются три раза в словарях status. Вначале видим глобальный ключ «code»: 1006 и «label»: «PARTIALLY_FOUND». Далее данные ключи встречаются по каждому отдельному компоненту, которые мы запросили — te и extraction. И если для te понятно, что данные найдены, то для extraction информация отсутствует.

Aquest és el que semblava la consulta per a l'exemple anterior

{ "request":  [  

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

Si envieu una sol·licitud de consulta sense el component d'extracció

{ "request":  [  

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

То и в ответе будет полная информация («code»: 1001, «label»: «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."
        }
      }
    }
  ]
}

Если никакой информации в кэше нет вовсе, то в ответе будет «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."
        }
      }
    }
  ]
}

В одном API вызове можно отправить сразу несколько хэш сумм на проверку. В ответе будут возвращены данные в том же самом порядке, как они были отправлены в запросе.

Exemple de sol·licitud de consulta amb diverses quantitats sha256

{ "request":  [  

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

Resposta a una consulta amb múltiples quantitats 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."
        }
      }
    }
  ]
}

Запрос сразу нескольких hash сумму в запросе query также благоприятно скажется на производительности API сервера.

Baixeu la trucada a l'API

Mètode utilitzat − PAL (segons documentació), GET també funciona (i pot semblar més lògic)

Adreça de trucada - https:///tecloud/api/v1/file/download?id=

В заголовке требуется передать API ключ, тело запроса — пустое, id для загрузки передается в url адресе.

В ответ на query запрос, в случае если эмуляция завершена и при загрузке файла были запрошены отчеты, будут видны id для загрузки отчетов. В случае, если запрашивается очищенная копия, то следует искать id для загрузки очищенного документа.

Итого, ключами в ответе на запрос query, содержащими значение id для загрузки могут быть:

  • resum_informe

  • informe_complet

  • pdf_informe

  • xml_report

  • extracted_file_download_id

Безусловно, чтобы в ответе на запрос query были получена эти ключи, их нужно указать в запросе (для отчетов) или не забыть сделать запрос по функции extraction (для очищенных документов)

Crida a l'API de quota

Mètode utilitzat − PAL

Adreça de trucada - https:///tecloud/api/v1/file/quota

Для проверки оставшейся квоты в облаке используется запрос quota. Тело запроса пустое.

Exemple de resposta a una sol·licitud de quota

{
  "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ó d'amenaces per a la passarel·la de seguretat

Данный API был разработан раньше, чем Threat Prevention API и предназначен только для локальных устройств. На данный момент он может быть полезен только в том случае, если вам нужен Threat Extraction API. Для Threat Emulation лучше использовать обычный Threat Prevention API. Чтобы включить TP API per a SG i configureu la clau de l'API que necessiteu per seguir els passos sk113599. Рекомендую обратить внимание на шаг 6b и проверить доступность страницы https://<IPAddressofSecurityGateway>/UserCheck/TPAPI потому как в случае отрицательного результата дальнейшая конфигурация не имеет смысла. На данный url будут отправляться все API вызовы. Тип вызова (upload/query) регулируется в ключе тела вызова — sol·licitud_nom. També són necessàries les claus - api_key (cal recordar-ho durant el procés de configuració) i versió_protocol (на данный момент актуальная версия 1.1). Официальную документацию для данного API вы можете найти в sk137032. К относительным преимуществам можно отнести возможность отправлять сразу несколько файлов на эмуляцию при их загрузке, так как файлы отправляются в виде текстовой строки base64. Чтобы кодировать/декодировать файлы в/из base64 можно использовать для целей демонстрации в Postman онлайн конвертер, например — https://base64.guru. В практических целях при написании кода следует использовать встроенные методы encode и decode.

Ara mirem més de prop les funcions te и extracció en aquesta API.

Per component te diccionari proporcionat te_opcions в запросах upload/query, а ключи в данном запросе полностью совпадают с ключами te в API de prevenció d'amenaces.

Exemple d'una sol·licitud per emular un fitxer a Win10 amb 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"]
    }
    }
    ]
}

Per component extracció diccionari proporcionat scrub_options. Aquesta sol·licitud especifica el mètode de neteja: convertir a PDF, esborrar el contingut actiu o seleccionar un mode d'acord amb el perfil de prevenció d'amenaces (s'indica el nom del perfil). El millor de respondre a una sol·licitud de l'API d'extracció d'un fitxer és que obteniu una còpia neta a la resposta a aquesta sol·licitud com a cadena xifrada en base64 (no cal que feu una sol·licitud de consulta i cerqueu l'identificador per descarregar el document)

Exemple d'una sol·licitud per esborrar un fitxer

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

Respon a una petició

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

Несмотря на то, что для получения очищенной копии требуется меньше API запросов, я считаю такой вариант менее предпочтительным и удобным, нежели запрос form-data, используемый в API de prevenció d'amenaces.

Col·leccions Carters

Vaig crear col·leccions a Postman tant per a l'API de prevenció d'amenaces com per a l'API de prevenció d'amenaces per a Security Gateway, que representen les sol·licituds d'API més habituals. Per tal que l'API del servidor ip/url i la clau es substitueixin automàticament a les sol·licituds i es recordi la quantitat de hash sha256 després de descarregar el fitxer, s'han creat tres variables dins de les col·leccions (les podeu trobar anant a la col·lecció). configuració Edita -> Variables): te_api (obligatori), api_key(требуется заполнить, кроме случая использования TP API с локальными устройствами), sha256 (deixeu en blanc, no s'utilitza a l'API TP per a SG).

Baixeu la col·lecció Postman per a l'API de prevenció d'amenaces

Скачать коллекцию Postman для Threat Prevention for Security Gateway API

Exemples d'ús

A la comunitat Comprova els companys представлены скрипты, написанные на Python, которые проверяют файлы из нужной директории как через API TPI TP API per a SG. Через взаимодействие с Threat Prevention API ваши возможности по проверке файлов значительно расширяются, так как теперь вы можете проверять файлы сразу в нескольких платформах (интересным выглядит проверка в API VirusTotal, а затем в песочнице Check Point), а файлы получать не только из сетевого трафика, но и забирать их из любых сетевых дисков и, например, CRM систем.

Font: www.habr.com

Afegeix comentari