Русский
Русский
English
Статистика
Реклама

Sandblast

Check Point SandBlast Agent. Что нового?

30.06.2020 14:13:12 | Автор: admin


Мы уже опубликовали огромное кол-во обучающих материалов по Check Point. Однако, тема защиты рабочих станций с помощью Check Point SandBlast Agent пока освещена крайне плохо. Мы планируем исправиться и в ближайшее время создать обучающие курсы по этому продукту, который является одним из лидеров сегмента EDR несколько лет подряд. А пока, делимся информацией о новых возможностях агента, которые появились в версии E83.10. Спойлер появилась бета версия под LINUX и новая облачная управлялка.

Новые функции


Все улучшения версии E83.10 можно найти в sk166979. Там много значимой информации, но мы лучше пройдемся по новым функциям.

Новый облачный менеджмент портал


Check Point уже долгое время развивает концепт Infinity, где ключевую роль играет централизованное управление через облачный портал portal.checkpoint.com. На текущий момент есть огромное кол-во сервисов, доступных через этот портал:

  • CloudGuard SaaS
  • Smart-1 Cloud
  • Infinity SOC
  • CloudGuard Connect
  • Threat Hunting
  • SandBlast Mobile
  • и многое другое

И вот теперь есть доступ к облачной упралялке SandBlast агентами:



Интеграция теперь гораздо проще и быстрее. Сервис стартует буквально в течении 5 минут и можно начинать раскатывать агенты. Мы не будем заострять внимания на этом, т.к. данная тема заслуживает целого цикла статей, который мы планируем в ближайшее время.

URL Filtering


Название говорит само за себя. Теперь URL фильтрация будет доступна и на агентах. Вы можете фильтровать трафик даже удаленных пользователей, как-будто они сидят в офисе. На текущий момент доступно несколько основных категорий для URL фильтрации:

  • Security
  • Productivity loss
  • Legal Liability & Regulatory compliance
  • Bandwidth consumption
  • General use

Из плюсов каждый агент включает в себя аддон для браузера, который позволяет осуществлять проверку шифрованного HTTPS трафика, без необходимости промежуточного устройства с функцией SSL инспекции. Это значительно упрощает интеграцию, особенно для удаленных пользователей.
На текущий момент есть несколько ограничений:

  • Аддон для браузера доступен только для Google Chrome. Поддержка других браузеров ожидается в ближайшее время.
  • Функция URL Filtering пока доступна только через облачный менеджмент. Вот так выглядит интерфейс:



Также стоит отметить, что появилась новая функция Anti-Credential Theft Pass-the-Hash attack Protection. Но о ней мы подробно расскажем наверно уже в рамках будущего курса.

Новые платформы для SandBlast Agent


SandBlast теперь нативно поддерживает работу как в persistent VDI, так и в non-persistent. Но важнее другое. Наконец появилась бета версия SandBlast Agent-а для Linux систем. Вот небольшая демонстрация, где за одно показывается интеграция с Check Point Threat Hunting:



На мой взгляд, управление политиками стало удобнее. Логи с SandBlast Agent-ов теперь тоже в более привычном виде.

Как вы наверно поняли, управление через веб пока доступно только для облачной платформы. Однако, оно станет доступно и для локальных устройств в версии Gaia R81, которую должны анонсировать в первом квартале 21-го года.

Ключевые улучшения агента


Вот несколько ключевых изменений и улучшений SandBlast Agent-а версии E83.10:

Threat prevention
  • Behavioral Guard now protects against the Pass The Hash technique for credential theft. Credential Dumping is new, as of the previous release.
  • Fixes an issue where Anti-Ransomware does not detect a potential attack when the user is not logged in.
  • Fixes Anti-Ransomware false positives due to user profile deletions.
  • Fixes multiple rare cases of false positives in Anti-Ransomware.
  • Fixes an issue where out of memory errors occur when the log lists a very large number of backups.
  • When you disable Anti-Ransomware, the backup driver no longer operates.
  • Improves performance as Forensics now stores fewer named objects, such as mutexes and events.
  • Improves the performance of Forensics, Behavioral Guard and Threat Hunting with enhancements to our Registry Operation exclusion algorithms that reduce the number of recorded registry operations.
  • Resolves an issue where an Anti-Malware scheduled scan occurs, even if it is not in the policy.
  • Resolves an Anti-Malware icon scaling issue.
  • Resolves a possible issue where the Anti-Malware process crashes as it shuts down.


Data and Access Control
  • Resolves client network issues after a Firewall driver uninstallation failure.
  • Resolves a rare issue where an added Firewall blade gets stuck in the Initializing state.
  • Resolves a possible upgrade issue where the Firewall blade does not start due to a WatchDog failure.
  • Resolves a rare issue where the Firewall policy is Not Set in the client after the policy download from the server.
  • Resolves a possible issue where the Disk Encryption process crashes during shutdown.
  • Resolves a removable media icon blink issue for an encrypted partition when Media Scan is enabled.
  • Improves the work with non-UTF-8 applications. Users can toggle UTF-8 support.
  • Fixes active File Transfer Protocol (FTP) traffic blocks on a standalone VPN client with Firewall.
  • Includes stability and quality fixes. Supports all the features of previous releases.


Installation & Infrastructure
  • Resolves a possible issue where uninstalling the Endpoint removes components that are necessary for other applications.
  • Resolves a possible issue where the uninstall fails after the user turns off Network Protection.
  • Resolves a possible issue where the Endpoint Security Client does not run correctly after an operating system upgrade.
  • Resolves a rare issue where the client uninstall fails with Error 1921: Service Check Point Endpoint Agent (CPDA) could not be stopped.
  • Resolves a rare issue where an upgrade that uses Dynamic Package continuously loops after a download fails to resume.
  • The pre-boot language selection choice is now correct after a language update in Windows.
  • Fixes an incompatibility issue with Sophos Antivirus, which could not install on a machine with Endpoint Security Client on it.
  • Resolves a rare User Interface (UI) issue where a malware resolution is not shown to a user.
  • Resolves a client LogViewer issue, where it only shows log records that match the latest log schema.
  • On the Endpoint Security Client screen, the Overview list now shows Anti-Bot and URL Filtering instead of Anti-Bot.
  • The client User Interface (UI) is no longer shown during manual upgrades.
  • Resolves URL infections report issues in the User Interface (UI) so that the infections records are not permanent in the client and server UIs.
  • Anti-Bot and URL Filtering policy now translates to all supported languages.
  • Improves the performance of the Endpoint Security core driver to reduce CPU consumption.



Вместо заключения


Уверен будет интересна статья про форензику, которую может предоставлять SandBlast Agent. Как уже было упомянуто, мы планируем публикацию новых обучающих материалов, поэтому следите за обновлениями в наших каналах (Telegram, Facebook, VK, TS Solution Blog)!
Кроме того, в ближайшее время состоится несколько полезных вебинаров по Check Point:


Успейте зарегистрироваться!
Подробнее..

Взаимодействие с Check Point SandBlast через API

11.09.2020 12:04:11 | Автор: admin

Эта статья будет полезна тем, кто знаком с технологиями Check Point по эмуляции файлов (Threat Emulation) и проактивной очистке файлов (Threat Extraction) и желает сделать шаг в сторону автоматизации данных задач. У Check Point есть Threat Prevention API, который работает как в облаке , так и на локальных устройствах, и функционально он идентичен проверке файлов в потоках web/smtp/ftp/smb/nfs трафика. Данная статья отчасти является авторской трактовкой набора статей из официальной документации, но построенная на своем опыте эксплуатации и на собственных примерах. Также в статье вы найдете авторские коллекции Postman для работы с Threat Prevention API.

Основные сокращения

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

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

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

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

Структура API и основные ограничения

Threat Prevention API использует всего 4 запроса - upload, query, download и quota. В заголовке для всех четырех запросов нужно передать API ключ, используя параметр Authorization. На первый взгляд, структура может показаться гораздо проще, чем в Management API, но количество полей в запросах 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 хэш суммы.

Очень важно не делать ошибок в запросах! Запрос может быть исполнен без ошибки, но не полностью. Чуть забегая вперед рассмотрим что может происходить при ошибках/опечатках в запросах.

Запрос с опечаткой с слове reports(reportss)
{ "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."        }      }    }  ]}
А вот на запрос без опечатки в ключе reports
{ "request":  [  {"sha256": {{sha256}},"features": ["te"] , "te": {"images": [                    {                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",                        "revision": 1                    }                ],                reports: ["tar", "pdf", "xml"]            }}] }
Мы получаем ответ, в котором уже содержатся id для загрузки отчетов
{  "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."        }      }    }  ]}

Если же отправить неправильный/просроченный API ключ, то в ответ получим ошибку 403.

SandBlast API: в облаке и на локальных устройствах

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

API запросы в облако CheckPoint нужно отправлять на адрес te.checkpoint.com (например - https://te.checkpoint.com/tecloud/api/v1/file/query). API ключ можно получить в виде триальной лицензии на 60 дней, обратившись к партнерам Check Point или в локальный офис компании.

На локальных устройствах Threat Extraction пока не поддерживается в стандартном Threat Prevention API и следует использовать Threat Prevention API for Security Gateway (о нем мы поговорим подробнее в конце статьи).

Локальные устройства не поддерживают запрос quota.

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

Вызов Upload API

Используемый метод - POST

Адрес для вызова - https://<service_address>/tecloud/api/v1/file/upload

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

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

Необходимый минимум для запроса upload

HTTP POST

https://<service_address>/tecloud/api/v1/file/upload

Headers:

Authorization: <api_key>

Body

{

"request":{

}

}

File

File

В таком случае файл на обработку попадет в соответствии с параметрами по умолчанию: компонент - te, образы ОС - Win XP и Win 7, без генерации отчета.

Комментарии по основным полям в текстовом запросе:

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

Пример запроса с пустыми file_name и file_type
{"request":{"file_name": "","file_type": "",}}

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

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

Пример запроса с проверкой в av, te и extraction
{ "request":  [  {"sha256": {{sha256}},"features": ["av", "te", "extraction"]  }] }

Ключи в разделе te

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

Список операционных систем и ревизий

Available OS Image ID

Revision

Image OS and Application

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player9r115 andActiveX10.0
Java Runtime:1.6.0u22

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

1

Microsoft Windows: 7 - 32bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player:10.2r152 (Plugin&ActiveX)
Java Runtime:1.6.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2010
Adobe Acrobat Reader: 9.4
Flash Player:11.0.1.152 (Plugin&ActiveX)
Java Runtime:1.7.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2013
Adobe Acrobat Reader: 11.0
Flash Player:15 (Plugin&ActiveX)
Java Runtime:1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64bit
Office: 2013 (32bit)
Adobe Acrobat Reader: 11.0.01
Flash Player:13 (Plugin&ActiveX)
Java Runtime:1.7.0u9

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

1

Microsoft Windows: 8.1 - 64bit
Office: 2013 (64bit)
Adobe Acrobat Reader: 11.0.10
Flash Player:18.0.0.160 (Plugin&ActiveX)
Java Runtime:1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244

1

Microsoft Windows: 10
Office: Professional Plus 2016 en-us
Adobe Acrobat Reader: DC 2015 MUI
Flash Player:20 (Plugin&ActiveX)
Java Runtime:1.7.0u9

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

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

  1. summary - .tar.gz архив, содержащий в себе отчет об эмуляции по всем запрошенным image'ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ - summary_report для последующей загрузки отчета.

  2. pdf - документ об эмуляции в одном image, который многие привыкли получать через Smart Console. В ответе ищем ключ - pdf_report для последующей загрузки отчета.

  3. xml - документ об эмуляции в одном image, удобный для последующего парсинга параметров в отчете. В ответе ищем ключ - xml_report для последующей загрузки отчета.

  4. tar - .tar.gz архив, содержащий в себе отчет об эмуляции в одном запрошенным image'ам (как html страницу, так и такие компоненты как видеоролик из ОС эмулятора, дамп сетевого трафика, отчет в json, так и сам сэмпл в архиве под защитой пароля). В ответе ищем ключ - full_report для последующей загрузки отчета.

Что внутри отчета summary
Ключи 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."        }      }    }  ]}
А вот ключ summary_report - есть один для эмуляции в целом
{  "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 не получится.

Ключи в разделе extraction

Для threat extraction используется всего два ключа:

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

extracted_parts_codes - список кодов для удаления активного содержимого, применимо только для метода clean

Коды для удаления содержимого из файлов

Code

Description

1025

Linked Objects

1026

Macros and Code

1034

Sensitive Hyperlinks

1137

PDF GoToR Actions

1139

PDF Launch Actions

1141

PDF URI Actions

1142

PDF Sound Actions

1143

PDF Movie Actions

1150

PDF JavaScript Actions

1151

PDF Submit Form Actions

1018

Database Queries

1019

Embedded Objects

1021

Fast Save Data

1017

Custom Properties

1036

Statistic Properties

1037

Summary Properties

Для загрузки очищенной копии потребуется сделать ещё и запрос query (о нем пойдет речь далее) через несколько секунд, указав hash сумму файла и компонент extraction в тексте запроса. Забрать очищенный файл можно будет с помощью id из ответа на запрос query - extracted_file_download_id. Ещё раз, чуть забегая вперед, привожу примеры запроса и ответа query для поиска id на загрузку очищенного документа.

Запрос query для поиска ключа extracted_file_download_id
{ "request":  [  {"sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876","features": ["extraction"] , "extraction": {        "method": "pdf"            }}] }
Ответ на запрос query (найдите ключ 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."                }            }        }    ]}

Общие сведения

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

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

Вызов Query API

Используемый метод - POST

Адрес для вызова - https://<service_address>/tecloud/api/v1/file/query

Перед тем как отправлять файл на загрузку (запрос upload), желательно выполнить проверку кэша песочницы (запрос query) в целях оптимизации нагрузки на API сервер, так как возможно на API сервере уже есть информация и вердикт по загружаемому файлу. Вызов состоит только из текстовой части. Обязательная часть запроса - sha1/sha256/md5 hash сумма файла. Её кстати можно получить в ответе на запрос upload.

Необходимый минимум для запроса query

HTTP POST

https://<service_address>/tecloud/api/v1/file/query

Headers:

Authorization: <api_key>

Body

{

"request":{

"sha256": <sha256 hash sum>

}

}

Пример ответа на запрос 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."      }    }  }}

Запрос query помимо hash суммы в идеале должен быть таким же, как был (или планируется быть) запрос upload, или даже "уже" (содержать в запросе query меньше полей чем в запросе upload). В случае, когда запрос query содержит в себе больше полей, чем было в запросе upload, вы получите в ответе не всю требуемую информацию.

Вот пример ответа на запрос 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."        }      }    }  ]}

Обратите внимание на поля code и label. Данные поля встречаются три раза в словарях status. Вначале видим глобальный ключ "code": 1006 и "label": "PARTIALLY_FOUND". Далее данные ключи встречаются по каждому отдельному компоненту, которые мы запросили - te и extraction. И если для te понятно, что данные найдены, то для extraction информация отсутствует.

Вот так выглядел запрос query для примера выше
{ "request":  [  {"sha256": {{sha256}},"features": ["te", "extraction"] , "te": {"images": [                    {                        "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",                        "revision": 1                    }                ],                "reports": [                    "xml", "pdf"                ]            }}] }
Если отправить запрос query без компонента extraction
{ "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 вызове можно отправить сразу несколько хэш сумм на проверку. В ответе будут возвращены данные в том же самом порядке, как они были отправлены в запросе.

Пример запроса query с несколькими sha256 суммами
{ "request":  [  {"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81"        },        {"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82"        }] }
Ответ на запрос query с несколькими 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 сервера.

Вызов Download API

Используемый метод - POST (согласно документации), GET также работает (и может показаться более логичным)

Адрес для вызова - https://<service_address>/tecloud/api/v1/file/download?id=<id>

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

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

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

  • summary_report

  • full_report

  • pdf_report

  • xml_report

  • extracted_file_download_id

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

Вызов Quota API

Используемый метод - POST

Адрес для вызова - https://<service_address>/tecloud/api/v1/file/quota

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

Пример ответа на запрос 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"    }  ]}

Threat Prevention API for Security Gateway

Данный API был разработан раньше, чем Threat Prevention API и предназначался только для локальных устройств. На данный момент он может быть полезен только в том случае, если вам нужен Threat Extraction API. Для Threat Emulation лучше использовать обычный Threat Prevention API. Чтобы включить TP API for SG и сконфигурировать API ключ требуется выполнить действия из sk113599. Рекомендую обратить внимание на шаг 6b и проверить доступность страницы https://<IPAddressofSecurityGateway>/UserCheck/TPAPI потому как в случае отрицательного результата дальнейшая конфигурация не имеет смысла. На данный url будут отправляться все API вызовы. Тип вызова (upload/query) регулируется в ключе тела вызова - request_name. Также обязательными ключами являются - api_key (нужно запомнить его в процессе конфигурации) и protocol_version (на данный момент актуальная версия 1.1). Официальную документацию для данного API вы можете найти в sk137032. К относительным преимуществам можно отнести возможность отправлять сразу несколько файлов на эмуляцию при их загрузке, так как файлы отправляются в виде текстовой строки base64. Чтобы кодировать/декодировать файлы в/из base64 можно использовать для целей демонстрации в Postman онлайн конвертер, например - https://base64.guru. В практических целях при написании кода следует использовать встроенные методы encode и decode.

Теперь остановимся подробнее на функциях te и extraction в данном API.

Для компонента te предусмотрен словарь te_options в запросах upload/query, а ключи в данном запросе полностью совпадают с ключами te в Threat Prevention API.

Пример запроса для эмуляции файла в Win10 с отчетами
{"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"]    }    }    ]}

Для компонента extraction предусмотрен словарь scrub_options. В данном запросе указывается метод очистки: конвертация в PDF, очистка от активного содержимого или же выбрать режим в соответствии с профилем Threat Prevention(указывается имя профиля). Отличительной особенностью ответа на API запрос с extraction для файла является то, что вы получаете очищенную копию в ответе на этот запрос в виде шифрованной строки base64 (вам не нужно делать запрос query и искать id для загрузки документа)

Пример запроса на очистку файла
    {"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}}]}
Ответ на запрос
{"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, используемый в Threat Prevention API.

Коллекции Postman

Мною были созданы коллекции в Postman как для Threat Prevention API, так и для Threat Prevention API for Security Gateway, где представлены наиболее распространённые API запросы. Для того, чтобы ip/url API сервера и ключ подставлялись в запросы автоматически, а hash сумма sha256 после загрузки файла также запоминалась, внутри коллекций созданы три переменные(найти их можно перейдя в настройках коллекции Edit -> Variables): te_api(требуется заполнить), api_key(требуется заполнить, кроме случая использования TP API с локальными устройствами), sha256 (оставить пустым, в TP API for SG не используется).

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

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

Примеры использования

В сообществе Check Mates представлены скрипты, написанные на Python, которые проверяют файлы из нужной директории как через TP API, так и TP API for SG.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru