Tương tác với Check Point SandBlast thông qua API

Tương tác với Check Point SandBlast thông qua API

Bài viết này sẽ hữu ích cho những ai am hiểu về công nghệ Check Point bằng cách mô phỏng tập tin (Giả lập Đe doạ) và dọn dẹp tập tin chủ động (Khai thác mối đe dọa) và muốn thực hiện một bước hướng tới việc tự động hóa các tác vụ này. Điểm kiểm tra có API ngăn chặn mối đe dọa, chạy cả trên đám mây và trên thiết bị cục bộ và về mặt chức năng, nó giống hệt với việc kiểm tra các tệp trong luồng lưu lượng truy cập web/smtp/ftp/smb/nfs. Bài viết này một phần là sự diễn giải của tác giả về một tập hợp các bài viết từ tài liệu chính thức, nhưng dựa trên kinh nghiệm vận hành và ví dụ của riêng tôi. Cũng trong bài viết, bạn sẽ tìm thấy bộ sưu tập Postman của tác giả để làm việc với API ngăn chặn mối đe dọa.

Các chữ viết tắt cơ bản

API ngăn chặn mối đe dọa hoạt động với ba thành phần chính được gọi trong API thông qua các giá trị văn bản sau:

av — Thành phần chống vi-rút, chịu trách nhiệm phân tích dấu hiệu của các mối đe dọa đã biết.

te - Thành phần mô phỏng mối đe dọa, chịu trách nhiệm kiểm tra các tập tin trong hộp cát và đưa ra phán quyết độc hại/lành tính sau khi mô phỏng.

khai thác - Thành phần Threat Extraction, chịu trách nhiệm chuyển đổi nhanh chóng các tài liệu văn phòng sang dạng an toàn (trong đó tất cả các nội dung độc hại tiềm ẩn sẽ bị loại bỏ), nhằm nhanh chóng chuyển chúng đến người dùng/hệ thống.

Cấu trúc API và những hạn chế chính

API ngăn chặn mối đe dọa chỉ sử dụng 4 yêu cầu - tải lên, truy vấn, tải xuống và hạn ngạch. Trong tiêu đề cho cả bốn yêu cầu, bạn cần chuyển khóa API bằng tham số cho phép. Thoạt nhìn, cấu trúc có vẻ đơn giản hơn nhiều so với API quản lý, nhưng số lượng trường trong yêu cầu tải lên và truy vấn cũng như cấu trúc của các yêu cầu này khá phức tạp. Chúng có thể được so sánh về mặt chức năng với cấu hình Ngăn chặn mối đe dọa trong chính sách bảo mật cổng/hộp cát.

Hiện tại, phiên bản duy nhất của API ngăn chặn mối đe dọa đã được phát hành - 1.0; URL cho lệnh gọi API phải bao gồm v1 ở phần bạn cần chỉ định phiên bản. Không giống như Management API, cần phải chỉ ra phiên bản API trong URL, nếu không yêu cầu sẽ không được thực thi.

Thành phần Chống vi-rút, khi được gọi mà không có các thành phần khác (te, trích xuất), hiện chỉ hỗ trợ các yêu cầu truy vấn với tổng băm md5. Mô phỏng mối đe dọa và trích xuất mối đe dọa cũng hỗ trợ tổng băm sha1 và sha256.

Điều rất quan trọng là không mắc lỗi trong truy vấn! Yêu cầu có thể được thực hiện mà không có lỗi, nhưng không hoàn toàn. Nhìn về phía trước một chút, chúng ta hãy xem điều gì có thể xảy ra khi có lỗi/lỗi chính tả trong truy vấn.

Yêu cầu có lỗi đánh máy với từ report(reportss)

{ "request":  [  

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

Sẽ không có lỗi trong phản hồi nhưng sẽ không có thông tin nào về các báo cáo cả

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

Nhưng đối với một yêu cầu không có lỗi đánh máy trong khóa báo cáo

{ "request":  [  

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

Chúng tôi nhận được phản hồi đã chứa id để tải xuống báo cáo

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

Nếu chúng tôi gửi khóa API không chính xác/hết hạn, chúng tôi sẽ nhận được phản hồi lỗi 403.

API SandBlast: trên đám mây và trên thiết bị cục bộ

Các yêu cầu API có thể được gửi đến các thiết bị Check Point đã bật thành phần Mô phỏng mối đe dọa (lưỡi). Để làm địa chỉ cho các yêu cầu, bạn cần sử dụng ip/url của thiết bị và cổng 18194 (ví dụ: https://10.10.57.19:18194/tecloud/api/v1/tệp/truy vấn). Bạn cũng nên đảm bảo rằng chính sách bảo mật trên thiết bị cho phép kết nối này. Ủy quyền thông qua khóa API trên thiết bị cục bộ theo mặc định tắt và khóa Cấp phép trong tiêu đề yêu cầu có thể không được gửi.

Yêu cầu API tới đám mây CheckPoint phải được gửi tới te.checkpoint.com (ví dụ - https://te.checkpoint.com/tecloud/api/v1/tệp/truy vấn). Bạn có thể lấy khóa API dưới dạng giấy phép dùng thử trong 60 ngày bằng cách liên hệ với các đối tác của Check Point hoặc văn phòng địa phương của công ty.

Trên các thiết bị cục bộ, Khai thác mối đe dọa chưa được hỗ trợ theo tiêu chuẩn. API ngăn chặn mối đe dọa và nên sử dụng API ngăn chặn mối đe dọa cho Cổng bảo mật (chúng ta sẽ nói về nó chi tiết hơn ở cuối bài viết).

Các thiết bị cục bộ không hỗ trợ yêu cầu hạn ngạch.

Mặt khác, không có sự khác biệt giữa các yêu cầu gửi tới thiết bị cục bộ và tới đám mây.

Tải lệnh gọi API lên

Phương pháp được sử dụng - POST

Địa chỉ cuộc gọi - https:///tecloud/api/v1/file/tải lên

Yêu cầu bao gồm hai phần (dữ liệu biểu mẫu): một tệp dùng để mô phỏng/làm sạch và phần nội dung yêu cầu có văn bản.

Yêu cầu văn bản không được để trống nhưng có thể không chứa bất kỳ cấu hình nào. Để yêu cầu thành công, bạn phải gửi ít nhất văn bản sau trong yêu cầu:

Yêu cầu tối thiểu cho một yêu cầu tải lên

BÀI ĐĂNG HTTP

https:///tecloud/api/v1/file/tải lên

Tiêu đề:

Ủy quyền:

Cơ thể

{

"lời yêu cầu": {

}

}

Tập tin

Tập tin

Trong trường hợp này, tệp sẽ được xử lý theo các tham số mặc định: thành phần - te, Hình ảnh hệ điều hành - Win XP và Win 7, mà không tạo báo cáo.

Nhận xét về các trường chính trong yêu cầu văn bản:

tên_tệp и loại tệp Bạn có thể để trống hoặc không gửi chúng vì đây không phải là thông tin đặc biệt hữu ích khi tải tệp lên. Trong phản hồi API, các trường này sẽ được điền tự động dựa trên tên của tệp đã tải xuống và thông tin trong bộ đệm sẽ vẫn phải được tìm kiếm bằng số lượng băm md5/sha1/sha256.

Yêu cầu ví dụ với file_name và file_type trống

{

"request": {

"file_name": "",

"file_type": "",

}

}

Tính năng, đặc điểm — một danh sách cho biết chức năng cần thiết khi xử lý trong hộp cát - av (Chống vi-rút), te (Mô phỏng mối đe dọa), trích xuất (Trích xuất mối đe dọa). Nếu tham số này hoàn toàn không được thông qua thì chỉ thành phần mặc định sẽ được sử dụng - te (Mô phỏng mối đe dọa).

Để kích hoạt tính năng kiểm tra ba thành phần có sẵn, bạn cần chỉ định các thành phần này trong yêu cầu API.

Ví dụ về yêu cầu kiểm tra av, te và trích xuất

{ "request":  [  

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

Các phím trong phần te

hình ảnh — một danh sách chứa các từ điển có id và số phiên bản của hệ điều hành mà việc kiểm tra sẽ được thực hiện. ID và số sửa đổi giống nhau cho tất cả các thiết bị cục bộ và đám mây.

Danh sách hệ điều hành và phiên bản

ID hình ảnh hệ điều hành có sẵn

Sửa đổi

Hệ điều hành và ứng dụng hình ảnh

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 và ActiveX 10.0
Thời gian chạy Java: 1.6.0u22

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

1

Microsoft Windows: 7 - 32bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Trình phát Flash: 10.2r152 (Cắm vàoActiveX)
Thời gian chạy Java: 1.6.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2010
Adobe Acrobat Reader: 9.4
Trình phát Flash: 11.0.1.152 (Cắm vào & ActiveX)
Thời gian chạy Java: 1.7.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2013
Adobe Acrobat Reader: 11.0
Trình phát Flash: 15 (Cắm vào & ActiveX)
Thời gian chạy Java: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64bit
Office: 2013 (32bit)
Adobe Acrobat Reader: 11.0.01
Trình phát Flash: 13 (Cắm vào & ActiveX)
Thời gian chạy Java: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64bit
Office: 2013 (64bit)
Adobe Acrobat Reader: 11.0.10
Trình phát Flash: 18.0.0.160 (Cắm vào & ActiveX)
Thời gian chạy Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Office: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Trình phát Flash: 20 (Cắm vào & ActiveX)
Thời gian chạy Java: 1.7.0u9

Nếu phím hình ảnh hoàn toàn không được chỉ định thì quá trình mô phỏng sẽ diễn ra trong các hình ảnh được Check Point đề xuất (hiện tại là Win XP và Win 7). Những hình ảnh này được đề xuất dựa trên những cân nhắc về sự cân bằng tốt nhất giữa hiệu suất và tỷ lệ đánh bắt.

báo cáo — danh sách các báo cáo mà chúng tôi yêu cầu trong trường hợp tệp đó trở nên độc hại. Lựa chọn tiếp theo đã khả thi:

  1. tóm tắt - Kho lưu trữ .tar.gz chứa báo cáo về mô phỏng của cho tất cả hình ảnh được yêu cầu (cả trang html và các thành phần như video từ hệ điều hành mô phỏng, kết xuất lưu lượng truy cập mạng, báo cáo ở dạng json và chính mẫu đó trong kho lưu trữ được bảo vệ bằng mật khẩu). Chúng tôi đang tìm kiếm chìa khóa trong câu trả lời - báo cáo tổng hợp để tải xuống báo cáo sau này.

  2. pdf - tài liệu về thi đua trong một hình ảnh mà nhiều người đã quen với việc nhận được thông qua Bảng điều khiển thông minh. Chúng tôi đang tìm kiếm chìa khóa trong câu trả lời - pdf_report để tải xuống báo cáo sau này.

  3. xml - tài liệu về thi đua trong một hình ảnh, thuận tiện cho việc phân tích các thông số tiếp theo trong báo cáo. Chúng tôi đang tìm kiếm chìa khóa trong câu trả lời - xml_report để tải xuống báo cáo sau này.

  4. tar - Kho lưu trữ .tar.gz chứa báo cáo về mô phỏng trong một hình ảnh được yêu cầu (cả trang html và các thành phần như video từ hệ điều hành mô phỏng, kết xuất lưu lượng truy cập mạng, báo cáo ở dạng json và chính mẫu đó trong kho lưu trữ được bảo vệ bằng mật khẩu). Chúng tôi đang tìm kiếm chìa khóa trong câu trả lời - Báo cáo đầy đủ để tải xuống báo cáo sau này.

Có gì bên trong báo cáo tóm tắtTương tác với Check Point SandBlast thông qua API

Các khóa full_report, pdf_report, xml_report đều có trong từ điển của từng hệ điều hành

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

Nhưng khóa summary_report - nói chung có một khóa để mô phỏng

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

Bạn có thể yêu cầu báo cáo tar, xml và pdf cùng lúc, bạn có thể yêu cầu tóm tắt và tar và xml. Sẽ không thể yêu cầu báo cáo tóm tắt và bản pdf cùng lúc.

Các phím trong phần trích xuất

Để trích xuất mối đe dọa, chỉ có hai khóa được sử dụng:

phương pháp — pdf (chuyển đổi sang pdf, được sử dụng theo mặc định) hoặc clean (làm sạch nội dung hoạt động).

đã trích xuất_parts_codes - danh sách mã để xóa nội dung hoạt động, chỉ áp dụng cho phương pháp sạch

Mã để xóa nội dung khỏi tập tin

Mô tả

1025

Đối tượng được liên kết

1026

Macro và mã

1034

Siêu liên kết nhạy cảm

1137

Hành động GoToR PDF

1139

Hành động khởi chạy PDF

1141

Hành động URI PDF

1142

Tác vụ âm thanh PDF

1143

Hành động phim PDF

1150

Tác vụ JavaScript PDF

1151

Hành động gửi biểu mẫu PDF

1018

Truy vấn cơ sở dữ liệu

1019

Các đối tượng được nhúng

1021

Lưu dữ liệu nhanh

1017

Thuộc tính tùy chỉnh

1036

Thuộc tính thống kê

1037

Thuộc tính tóm tắt

Để tải xuống một bản sao đã được làm sạch, bạn cũng cần thực hiện một yêu cầu truy vấn (sẽ được thảo luận bên dưới) sau vài giây, chỉ định số lượng băm của tệp và thành phần trích xuất trong văn bản yêu cầu. Bạn có thể chọn tệp đã được làm sạch bằng cách sử dụng id từ phản hồi cho truy vấn - extract_file_download_id. Một lần nữa, nhìn về phía trước một chút, tôi đưa ra ví dụ về yêu cầu và phản hồi truy vấn để tìm kiếm id để tải xuống tài liệu đã xóa.

Yêu cầu truy vấn tìm kiếm key extract_file_download_id

{ "request":  [  

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

Trả lời truy vấn (tìm khóa extract_file_download_id)

{
    "response": [
        {
            "status": {
                "code": 1001,
                "label": "FOUND",
                "message": "The request has been fully answered."
            },
            "sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
            "file_type": "",
            "file_name": "",
            "features": [
                "extraction"
            ],
            "extraction": {
                "method": "pdf",
                "extract_result": "CP_EXTRACT_RESULT_SUCCESS",
                "extracted_file_download_id": "b5f2b34e-3603-4627-9e0e-54665a531ab2",
                "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                "time": "0.013",
                "extract_content": "Macros and Code",
                "extraction_data": {
                    "input_extension": "xls",
                    "input_real_extension": "xls",
                    "message": "OK",
                    "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                    "protection_name": "Potential malicious content extracted",
                    "protection_type": "Conversion to PDF",
                    "protocol_version": "1.0",
                    "risk": 5.0,
                    "scrub_activity": "Active content was found - XLS file was converted to PDF",
                    "scrub_method": "Convert to PDF",
                    "scrub_result": 0.0,
                    "scrub_time": "0.013",
                    "scrubbed_content": "Macros and Code"
                },
                "tex_product": false,
                "status": {
                    "code": 1001,
                    "label": "FOUND",
                    "message": "The request has been fully answered."
                }
            }
        }
    ]
}

Tổng quan

Trong một lệnh gọi API, bạn chỉ có thể gửi một tệp để xác minh.

Thành phần av không yêu cầu phần bổ sung có khóa, chỉ cần chỉ định nó trong từ điển là đủ Tính năng, đặc điểm.

Lệnh gọi API truy vấn

Phương pháp được sử dụng - POST

Địa chỉ cuộc gọi - https:///tecloud/api/v1/file/truy vấn

Trước khi gửi tệp để tải xuống (yêu cầu tải lên), bạn nên kiểm tra bộ đệm hộp cát (yêu cầu truy vấn) để tối ưu hóa tải trên máy chủ API, vì máy chủ API có thể đã có thông tin và phán quyết về tệp đã tải xuống. Cuộc gọi chỉ bao gồm một phần văn bản. Phần bắt buộc của yêu cầu là lượng băm sha1/sha256/md5 của tệp. Nhân tiện, bạn có thể lấy nó để đáp lại yêu cầu tải lên.

Yêu cầu tối thiểu cho truy vấn

BÀI ĐĂNG HTTP

https:///tecloud/api/v1/file/truy vấn

Tiêu đề:

Ủy quyền:

Cơ thể

{

"lời yêu cầu": {

"sha256":

}

}

Ví dụ về phản hồi cho yêu cầu tải lên, trong đó hiển thị số lượng băm 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."
      }
    }
  }
}

Yêu cầu truy vấn, ngoài số lượng băm, lý tưởng nhất là phải giống với yêu cầu tải lên đã (hoặc được lên kế hoạch) hoặc thậm chí là "đã" (chứa ít trường trong yêu cầu truy vấn hơn trong yêu cầu tải lên). Trong trường hợp yêu cầu truy vấn chứa nhiều trường hơn yêu cầu tải lên, bạn sẽ không nhận được tất cả thông tin bắt buộc trong phản hồi.

Dưới đây là ví dụ về phản hồi cho một truy vấn không tìm thấy tất cả dữ liệu cần thiết

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

Chú ý đến các lĩnh vực и nhãn. Các trường này xuất hiện ba lần trong từ điển trạng thái. Đầu tiên chúng ta thấy khóa chung “code”: 1006 và “label”: “PARTIALLY_FOUND”. Tiếp theo, các khóa này được tìm thấy cho từng thành phần riêng lẻ mà chúng tôi yêu cầu - te và trích xuất. Và nếu đối với te rõ ràng là dữ liệu đã được tìm thấy thì để trích xuất sẽ không có thông tin.

Đây là giao diện của truy vấn trong ví dụ trên

{ "request":  [  

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

Nếu bạn gửi yêu cầu truy vấn mà không có thành phần trích xuất

{ "request":  [  

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

Khi đó câu trả lời sẽ chứa thông tin đầy đủ (“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."
        }
      }
    }
  ]
}

Nếu hoàn toàn không có thông tin nào trong bộ đệm thì phản hồi sẽ là “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."
        }
      }
    }
  ]
}

Trong một lệnh gọi API, bạn có thể gửi nhiều số lượng băm cùng một lúc để xác minh. Phản hồi sẽ trả về dữ liệu theo đúng thứ tự như được gửi trong yêu cầu.

Yêu cầu truy vấn mẫu với một số lượng sha256

{ "request":  [  

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

Trả lời truy vấn có nhiều số lượng 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."
        }
      }
    }
  ]
}

Việc yêu cầu nhiều tổng băm cùng một lúc trong một yêu cầu truy vấn cũng sẽ có tác động có lợi đến hiệu suất của máy chủ API.

Tải xuống lệnh gọi API

Phương pháp được sử dụng - POST (theo tài liệu), GET cũng hoạt động (và có vẻ hợp lý hơn)

Địa chỉ cuộc gọi - https:///tecloud/api/v1/file/download?id=

Tiêu đề yêu cầu phải chuyển khóa API, nội dung yêu cầu trống, id tải xuống được chuyển vào địa chỉ url.

Để đáp lại yêu cầu truy vấn, nếu quá trình mô phỏng hoàn tất và báo cáo được yêu cầu khi tải xuống tệp, id để tải xuống báo cáo sẽ hiển thị. Nếu yêu cầu một bản sao đã được làm sạch, bạn nên tìm id để tải xuống tài liệu đã được làm sạch.

Tổng cộng, các khóa trong phản hồi cho truy vấn chứa giá trị id để tải có thể là:

  • báo cáo tổng hợp

  • Báo cáo đầy đủ

  • pdf_report

  • xml_report

  • đã trích xuất_file_download_id

Tất nhiên, để nhận được các khóa này để đáp ứng yêu cầu truy vấn, chúng phải được chỉ định trong yêu cầu (đối với báo cáo) hoặc nhớ thực hiện yêu cầu bằng chức năng trích xuất (đối với tài liệu đã được làm sạch)

Lệnh gọi API hạn ngạch

Phương pháp được sử dụng - POST

Địa chỉ cuộc gọi - https:///tecloud/api/v1/file/quota

Để kiểm tra hạn ngạch còn lại trên đám mây, hãy sử dụng truy vấn hạn ngạch. Nội dung yêu cầu trống.

Ví dụ về phản hồi đối với yêu cầu hạn ngạch

{
  "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 ngăn chặn mối đe dọa cho Cổng bảo mật

API này được phát triển trước API ngăn chặn mối đe dọa và chỉ dành cho các thiết bị cục bộ. Hiện tại, nó chỉ có thể hữu ích nếu bạn cần API trích xuất mối đe dọa. Để mô phỏng mối đe dọa, tốt hơn nên sử dụng API ngăn chặn mối đe dọa thông thường. Bật API TP cho SG và định cấu hình khóa API bạn cần làm theo các bước từ sk113599. Tôi khuyên bạn nên chú ý đến bước 6b và kiểm tra khả năng truy cập của trang https://<IPAddressofSecurityGateway>/UserCheck/TPAPI bởi vì trong trường hợp kết quả âm tính, việc cấu hình thêm sẽ không có ý nghĩa gì. Tất cả lệnh gọi API sẽ được gửi tới url này. Loại cuộc gọi (tải lên/truy vấn) được quy định trong khóa nội dung cuộc gọi - tên_yêu cầu. Các phím cũng được yêu cầu là - Mã API (bạn cần ghi nhớ trong quá trình cấu hình) và giao thức_version (phiên bản hiện tại là 1.1). Bạn có thể tìm tài liệu chính thức cho API này tại sk137032. Các ưu điểm tương đối bao gồm khả năng gửi nhiều tệp cùng lúc để mô phỏng khi tải chúng, vì các tệp được gửi dưới dạng chuỗi văn bản base64. Ví dụ, để mã hóa/giải mã các tệp đến/từ base64, bạn có thể sử dụng trình chuyển đổi trực tuyến trong Postman cho mục đích trình diễn - https://base64.guru. Vì mục đích thực tế, bạn nên sử dụng các phương thức mã hóa và giải mã tích hợp sẵn khi viết mã.

Bây giờ chúng ta hãy xem xét kỹ hơn các chức năng te и khai thác trong API này.

Đối với thành phần te từ điển được cung cấp te_options trong các yêu cầu tải lên/truy vấn và các khóa trong yêu cầu này hoàn toàn trùng khớp với các khóa te trong API ngăn chặn mối đe dọa.

Ví dụ về yêu cầu mô phỏng tệp trong Win10 kèm theo báo cáo

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

Đối với thành phần khai thác từ điển được cung cấp chà_options. Yêu cầu này chỉ định phương pháp dọn dẹp: chuyển đổi sang PDF, xóa nội dung hiện hoạt hoặc chọn chế độ phù hợp với hồ sơ Ngăn chặn mối đe dọa (tên hồ sơ được chỉ định). Điều tuyệt vời khi phản hồi yêu cầu API trích xuất cho một tệp là bạn nhận được một bản sao sạch để phản hồi yêu cầu đó dưới dạng chuỗi được mã hóa base64 (bạn không cần phải thực hiện yêu cầu truy vấn và tra cứu id để tải xuống tài liệu)

Ví dụ về yêu cầu xóa một tập tin

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

Trả lời một yêu cầu

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

Mặc dù thực tế là cần ít yêu cầu API hơn để có được bản sao đã xóa, nhưng tôi thấy tùy chọn này ít thích hợp và thuận tiện hơn so với yêu cầu dữ liệu biểu mẫu được sử dụng trong API ngăn chặn mối đe dọa.

Bộ sưu tập của người đưa thư

Tôi đã tạo các bộ sưu tập trong Postman cho cả API ngăn chặn mối đe dọa và API ngăn chặn mối đe dọa cho Cổng bảo mật, đại diện cho các yêu cầu API phổ biến nhất. Để API ip/url của máy chủ và khóa được tự động thay thế thành các yêu cầu và số lượng băm sha256 được ghi nhớ sau khi tải xuống tệp, ba biến đã được tạo bên trong bộ sưu tập (bạn có thể tìm thấy chúng bằng cách đi tới cài đặt bộ sưu tập Chỉnh sửa -> Biến): te_api (bắt buộc), api_key (bắt buộc phải điền, trừ khi sử dụng TP API với thiết bị cục bộ), sha256 (để trống, không dùng trong TP API cho SG).

Tải xuống bộ sưu tập Postman cho API ngăn chặn mối đe dọa

Tải xuống bộ sưu tập Người đưa thư để Ngăn chặn mối đe dọa cho API Cổng bảo mật

Ví dụ về sử dụng

Trong cộng đồng Kiểm tra bạn bè các tập lệnh viết bằng Python được trình bày để kiểm tra các tệp từ thư mục mong muốn thông qua API TPAPI TP cho SG. Thông qua tương tác với API Ngăn chặn mối đe dọa, khả năng quét tệp của bạn được mở rộng đáng kể, vì giờ đây bạn có thể quét tệp trên nhiều nền tảng cùng một lúc (kiểm tra API VirusTotal, sau đó trong hộp cát Check Point) và nhận các tệp không chỉ từ lưu lượng truy cập mạng mà còn lấy chúng từ bất kỳ ổ đĩa mạng nào và, chẳng hạn như hệ thống CRM.

Nguồn: www.habr.com

Thêm một lời nhận xét