通过 API 与 Check Point SandBlast 交互

通过 API 与 Check Point SandBlast 交互

这篇文章对于熟悉技术的人会有用 检查点 通过文件模拟(威胁模拟)和主动文件清理(威胁提取)并希望朝着自动化这些任务迈出一步。 检查点有 威胁防御API,它在云端和本地设备上运行,并且 从功能上来说,它与检查 web/smtp/ftp/smb/nfs 流量流中的文件相同。 本文部分是作者对官方文档中的一组文章的解读,而是基于我自己的操作经验和我自己的例子。 另外,在本文中,您还可以找到作者用于使用威胁防护 API 的 Postman 集合。

基本缩写

威胁防护 API 与三个主要组件配合使用,这些组件在 API 中通过以下文本值进行调用:

av — 反病毒组件,负责已知威胁的签名分析。

te - 威胁仿真组件,负责检查沙箱中的文件,并在仿真后做出恶意/良性的判断。

萃取 - 威胁提取组件,负责快速将办公文档转换为安全形式(其中所有潜在恶意内容均被删除),以便快速将其传递给用户/系统。

API结构和主要限制

威胁防护 API 仅使用 4 个请求 - 上传、查询、下载、配额。 在所有四个请求的标头中,您需要使用参数传递 API 密钥 授权。 乍一看,结构可能比上面简单得多 管理接口,但是上传和查询请求中的字段数量以及这些请求的结构相当复杂。 这些可以在功能上与网关/沙箱安全策略中的威胁防护配置文件进行比较。

目前,威胁防护 API 的唯一版本已发布 - 1.0;API 调用的 URL 应包括 v1 在需要指定版本的部分。 与管理API不同的是,需要在URL中标明API版本,否则请求将不会被执行。

反病毒组件在没有其他组件(te、提取)的情况下调用时,当前仅支持具有 md5 哈希和的查询请求。 威胁仿真和威胁提取还支持 sha1 和 sha256 哈希和。

查询时不要出错非常重要! 请求可以无错误地执行,但不能完全执行。 展望未来,让我们看看当查询中出现错误/拼写错误时会发生什么。

请求中包含单词“报告”(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."
        }
      }
    }
  ]
}

但对于报告键中没有拼写错误的请求

{ "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 设备。 作为请求的地址,您需要使用设备的 ip/url 和端口 18194(例如 https://10.10.57.19:18194/tecloud/api/v1/文件/查询)。 您还应该确保设备上的安全策略允许此类连接。 默认情况下通过本地设备上的 API 密钥进行授权 离开 并且请求标头中的授权密钥可能根本不会发送。

对 CheckPoint 云的 API 请求应发送至 te.checkpoint.com (例如 - https://te.checkpoint.com/tecloud/api/v1/文件/查询)。 您可以通过联系 Check Point 合作伙伴或公司的当地办事处来获取 API 密钥作为 60 天的试用许可证。

在本地设备上,威胁提取尚未作为标准支持。 威胁防御API 并且应该使用 安全网关的威胁防护 API (我们将在文章末尾更详细地讨论它)。

本地设备不支持配额请求。

否则,对本地设备和对云的请求之间没有区别。

上传API调用

使用的方法 - 解决方案&帖子

致电地址- https:///tecloud/api/v1/文件/上传

该请求由两部分组成(表单数据):用于模拟/清理的文件和带有文本的请求正文。

文本请求不能为空,但不能包含任何配置。 为了使请求成功,您必须在请求中至少发送以下文本:

上传请求的最低要求

HTTP POST

https:///tecloud/api/v1/文件/上传

头:

授权:

Body

{

“要求”: {

}

}

文件

文件

在这种情况下,文件将按照默认参数进行处理:组件 - te, 操作系统映像 - Win XP 和 Win 7,而不生成报告。

对文本请求中主要字段的注释:

FILE_NAME и 文件类型 您可以将它们留空或根本不发送,因为在上传文件时这不是特别有用的信息。 在API响应中,这些字段将根据下载文件的名称自动填写,并且缓存中的信息仍然需要使用md5/sha1/sha256哈希值进行搜索。

具有空 file_name 和 file_type 的请求示例

{

"request": {

"file_name": "",

"file_type": "",

}

}

功能 — 指示在沙箱中处理时所需功能的列表 - av(反病毒)、te(威胁模拟)、提取(威胁提取)。 如果根本不传递此参数,则仅使用默认组件 - te(威胁仿真)。

要启用检查三个可用组件,您需要在 API 请求中指定这些组件。

签入 av、te 和提取的请求示例

{ "request":  [  

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

te 部分的按键

图片 — 包含字典的列表,其中包含将执行检查的操作系统的 ID 和修订号。 所有本地设备和云的 ID 和修订号都相同。

操作系统和修订版本列表

可用操作系统映像 ID

调整

图像操作系统及应用

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

微软Windows:XP-32位SP3
办公:2003,2007
使用Adobe Acrobat Reader:9.0
Flash播放器 9r115 和 的ActiveX 10.0
Java运行时: 1.6.0u22

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

1

微软Windows:7 - 32位
办公:2003,2007
使用Adobe Acrobat Reader:9.0
Flash Player: 10.2r152(插件的ActiveX)
Java运行时: 1.6.0u0

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

1

微软Windows:7 - 32位
办公:2010
使用Adobe Acrobat Reader:9.4
Flash Player: 11.0.1.152分(插件 & 的ActiveX)
Java运行时: 1.7.0u0

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

1

微软Windows:7 - 32位
办公:2013
使用Adobe Acrobat Reader:11.0
Flash Player: 15分(插件 & 的ActiveX)
Java运行时: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

微软Windows:7 - 64位
办公:2013 年(32 位)
使用Adobe Acrobat Reader:11.0.01
Flash Player: 13分(插件 & 的ActiveX)
Java运行时: 1.7.0u9

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

 

微软Windows:8.1 - 64位
办公:2013 年(64 位)
使用Adobe Acrobat Reader:11.0.10
Flash Player: 18.0.0.160分(插件 & 的ActiveX)
Java运行时: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

微软Windows:10
办公:Professional Plus 2016 zh-CN  
使用Adobe Acrobat Reader:DC 2015 MUI
Flash Player: 20分(插件 & 的ActiveX)
Java运行时: 1.7.0u9

如果根本未指定图像密钥,则将在 Check Point 推荐的图像中进行模拟(当前为 Win XP 和 Win 7)。 这些图像是基于性能和捕获率的最佳平衡考虑而推荐的。

报告 — 我们请求的报告列表,以防文件被证明是恶意的。 可以使用以下选项:

  1. 摘要 - .tar.gz 存档,包含仿真报告 大家 请求的图像(html 页面和组件,例如来自模拟器操作系统的视频、网络流量转储、json 格式的报告以及受密码保护的存档中的示例本身)。 我们正在寻找答案的关键—— 总结报告 以便随后下载报告。

  2. PDF格式 - 有关仿真的文档 图像,许多人习惯于通过智能控制台接收图像。 我们正在寻找答案的关键—— pdf_报告 以便随后下载报告。

  3. XML - 有关仿真的文档 图片,方便后续解析报告中的参数。 我们正在寻找答案的关键—— xml_报告 以便随后下载报告。

  4. 焦油 - .tar.gz 存档,包含有关仿真的报告 请求的图像(html 页面和组件,例如来自模拟器操作系统的视频、网络流量转储、json 格式的报告以及受密码保护的存档中的示例本身)。 我们正在寻找答案的关键—— 完整报告 以便随后下载报告。

摘要报告的内容通过 API 与 Check Point SandBlast 交互

键 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 报告,您可以请求摘要以及 tar 和 xml。 无法同时请求摘要报告和 pdf 文件。

提取部分的按键

对于威胁提取,仅使用两个密钥:

方法 — pdf(转换为 pdf,默认使用)或 clean(清理活动内容)。

提取的零件代码 - 用于删除活动内容的代码列表,仅适用于 clean 方法

从文件中删除内容的代码

代码

产品描述

1025

链接对象

1026

宏和代码

1034

敏感超链接

1137

PDF GoToR 操作

1139

PDF 启动操作

1141

PDF URI 操作

1142

PDF 声音动作

1143

PDF 电影动作

1150

PDF JavaScript 操作

1151

PDF 提交表单操作

1018

数据库查询

1019

嵌入对象

1021

快速保存数据

1017

自定义属性

1036

统计属性

1037

摘要属性

要下载清理后的副本,您还需要在几秒钟后发出查询请求(将在下面讨论),并在请求文本中指定文件的哈希量和提取组件。 您可以使用查询响应中的 ID(extracted_file_download_id)来获取已清理的文件。 再次向前看,我给出了一个请求和查询响应的示例,用于搜索用于下载已清除文档的 ID。

用于搜索 extract_file_download_id 密钥的查询请求

{ "request":  [  

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

对查询的响应(查找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 组件不需要带有键的附加部分,在字典中指定它就足够了 功能.

查询API调用

使用的方法 - 解决方案&帖子

致电地址- https:///tecloud/api/v1/文件/查询

在发送文件进行下载(上传请求)之前,建议检查沙箱缓存(查询请求),以优化 API 服务器上的负载,因为 API 服务器可能已经拥有有关下载文件的信息和判断。 该呼叫仅包含文本部分。 请求的必需部分是文件的 sha1/sha256/md5 哈希值。 顺便说一句,您可以在上传请求的响应中获取它。

查询所需的最低限度

HTTP POST

https:///tecloud/api/v1/文件/查询

头:

授权:

Body

{

“要求”: {

“sha256”:

}

}

对上传请求的响应示例,其中 sha1/md5/sha256 哈希值可见

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

除了哈希值之外,理想情况下,查询请求应该与上传请求相同(或计划相同),甚至“已经”(查询请求中包含的字段少于上传请求中的字段)。 如果查询请求包含的字段多于上传请求中的字段,您将不会在响应中收到所有必需的信息。

以下是对查询的响应示例,其中未找到所有必需的数据

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

注意字段 и 标签。 这些字段在状态字典中出现 1006 次。 首先我们看到全局键“code”:XNUMX和“label”:“PARTIALLY_FOUND”。 接下来,为我们请求的每个单独组件找到这些密钥 - te 和提取。 如果对于 te 来说很明显已经找到了数据,那么对于提取来说就没有信息。

这就是上面示例中的查询的样子

{ "request":  [  

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

如果发送查询请求时不带提取组件

{ "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 调用中,您可以一次发送多个哈希值以进行验证。 响应将按照请求中发送的顺序返回数据。

具有多个 sha256 金额的示例查询请求

{ "request":  [  

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

响应具有多个 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."
        }
      }
    }
  ]
}

在查询请求中同时请求多个哈希和也会对 API 服务器的性能产生有益的影响。

下载API调用

使用的方法 - 解决方案&帖子 (根据文件), 的GET 也有效(并且可能看起来更合乎逻辑)

致电地址- https:///tecloud/api/v1/file/download?id=

标头需要传递 API 密钥,请求正文为空,下载 id 在 URL 地址中传递。

响应查询请求,如果仿真完成并且在下载文件时请求报告,则下载报告的 ID 将可见。 如果需要清理后的副本,您应该查找 ID 来下载清理后的文档。

总的来说,包含要加载的 id 值的查询响应中的键可以是:

  • 总结报告

  • 完整报告

  • pdf_报告

  • xml_报告

  • 提取文件下载 ID

当然,为了响应查询请求接收这些密钥,必须在请求中指定它们(对于报告)或者记住使用提取功能发出请求(对于清理的文档)

配额API调用

使用的方法 - 解决方案&帖子

致电地址- https:///tecloud/api/v1/文件/配额

如需查看云中的剩余配额,请使用配额查询。 请求正文为空。

对配额请求的响应示例

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

此 API 是在威胁防护 API 之前开发的,仅适用于本地设备。 目前,它仅在您需要威胁提取 API 时才有用。 对于威胁模拟,最好使用常规威胁防护 API。 打开 SG 的 TP API 并配置您需要按照以下步骤操作的 API 密钥 sk113599。 我建议注意步骤 6b 并检查页面的可访问性 https://<IPAddressofSecurityGateway>/UserCheck/TPAPI 因为如果结果是否定的,进一步的配置就没有意义。 所有 API 调用都将发送到此 url。 调用类型(上传/查询)在调用主体键中进行调节 - 请求名称. 还需要的密钥是 - api_key (您需要在配置过程中记住它)和 协议版本 (当前当前版本为1.1)。 您可以在以下位置找到该 API 的官方文档: sk137032。 相对优势包括能够在加载多个文件时一次发送多个文件进行模拟,因为文件是作为 Base64 文本字符串发送的。 要将文件编码为 Base64 或从 BaseXNUMX 解码文件,您可以使用 Postman 中的在线转换器进行演示,例如 - https://base64.guru。 出于实际目的,您在编写代码时应该使用内置的编码和解码方法。

现在让我们仔细看看这些功能 te и 萃取 在此 API 中。

对于组件 te 提供字典 te_选项 在上传/查询请求中,并且该请求中的key与te中的key完全一致 威胁防御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"]
    }
    }
    ]
}

对于组件 萃取 提供字典 磨砂选项。 此请求指定清理方法:转换为 PDF、清除活动内容或根据威胁防护配置文件(指示配置文件名称)选择模式。 响应文件的提取 API 请求的好处是,您可以在对该请求的响应中以 Base64 加密字符串的形式获得清理后的副本(您不需要发出查询请求并查找要下载的 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 请求较少,但我发现此选项不如中使用的表单数据请求更可取和方便。 威胁防御API.

邮递员收藏

我在 Postman 中为威胁防护 API 和安全网关的威胁防护 API 创建了集合,它们代表了最常见的 API 请求。 为了让服务器 ip/url API 和 key 自动替换到请求中,并在下载文件后记住 sha256 哈希值,在集合中创建了三个变量(您可以在集合设置中找到它们)编辑->变量): te_api(必需), api_key(必须填写,本地设备使用TP API时除外), sha256(留空,SG 的 TP API 中未使用).

下载威胁防护 API 的 Postman 集合

下载安全网关 API 威胁防护的 Postman 集合

使用的例子

在社区 检查配合 提供了用 Python 编写的脚本,可以通过以下方式检查所需目录中的文件 TP接口SG 的 TP API。 通过与威胁防护 API 交互,您扫描文件的能力得到显着扩展,因为现在您可以同时扫描多个平台中的文件(签入 病毒总API,然后在 Check Point 沙箱中),不仅可以从网络流量接收文件,还可以从任何网络驱动器(例如 CRM 系统)获取文件。

来源: habr.com

添加评论