Pakikipag-ugnayan sa Check Point SandBlast sa pamamagitan ng API

Pakikipag-ugnayan sa Check Point SandBlast sa pamamagitan ng API

Ang artikulong ito ay magiging kapaki-pakinabang sa mga pamilyar sa teknolohiya Suriin ang Point sa pamamagitan ng file emulation (Pagtulad sa Banta) at aktibong paglilinis ng file (Pagbunot ng Banta) at gustong gumawa ng hakbang patungo sa pag-automate ng mga gawaing ito. May Check Point Threat Prevention API, na tumatakbo sa cloud at sa mga lokal na device, at functionally ito ay kapareho ng pagsuri ng mga file sa web/smtp/ftp/smb/nfs traffic streams. Ang artikulong ito ay bahagyang interpretasyon ng may-akda ng isang hanay ng mga artikulo mula sa opisyal na dokumentasyon, ngunit batay sa sarili kong karanasan sa pagpapatakbo at sa sarili kong mga halimbawa. Gayundin sa artikulo ay makikita mo ang mga koleksyon ng Postman ng may-akda para sa pagtatrabaho sa Threat Prevention API.

Mga pangunahing pagdadaglat

Gumagana ang Threat Prevention API sa tatlong pangunahing bahagi, na tinatawag sa API sa pamamagitan ng mga sumusunod na value ng text:

av β€” Anti-Virus component, responsable para sa signature analysis ng mga kilalang banta.

te - Bahagi ng Threat Emulation, responsable sa pagsuri ng mga file sa sandbox, at paggawa ng nakakahamak/benign na hatol pagkatapos ng pagtulad.

pagkuha - Bahagi ng Threat Extraction, responsable para sa mabilis na pag-convert ng mga dokumento ng opisina sa isang ligtas na anyo (kung saan ang lahat ng potensyal na nakakahamak na nilalaman ay tinanggal), upang mabilis na maihatid ang mga ito sa mga user/system.

Istruktura ng API at mga pangunahing limitasyon

Gumagamit lamang ang Threat Prevention API ng 4 na kahilingan βˆ’ mag-upload, mag-query, mag-download at quota. Sa header para sa lahat ng apat na kahilingan kailangan mong ipasa ang API key gamit ang parameter awtorisasyon. Sa unang sulyap, ang istraktura ay maaaring mukhang mas simple kaysa sa Management API, ngunit ang bilang ng mga field sa pag-upload at mga kahilingan sa query at ang istraktura ng mga kahilingang ito ay medyo kumplikado. Ang mga ito ay maihahambing sa mga profile ng Threat Prevention sa isang gateway/sandbox security policy.

Sa ngayon, ang tanging bersyon ng Threat Prevention API ay inilabas - 1.0; ang URL para sa mga tawag sa API ay dapat kasama v1 sa bahagi kung saan kailangan mong tukuyin ang bersyon. Hindi tulad ng Management API, kinakailangang isaad ang bersyon ng API sa URL, kung hindi, ang kahilingan ay hindi isasagawa.

Ang bahagi ng Anti-Virus, kapag tinawag nang walang iba pang mga bahagi (te, extraction), ay kasalukuyang sumusuporta lamang sa mga kahilingan sa query na may md5 hash sums. Sinusuportahan din ng Threat Emulation at Threat Extraction ang sha1 at sha256 hash sums.

Napakahalaga na huwag magkamali sa mga query! Ang kahilingan ay maaaring isagawa nang walang error, ngunit hindi ganap. Sa unahan ng kaunti, tingnan natin kung ano ang maaaring mangyari kapag may mga error/typo sa mga query.

Humiling na may typo sa salitang ulat(mga ulat)

{ "request":  [  

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

Walang magiging error sa tugon, ngunit walang anumang impormasyon tungkol sa mga ulat

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

Ngunit para sa isang kahilingan na walang typo sa key ng mga ulat

{ "request":  [  

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

Nakatanggap kami ng tugon na naglalaman na ng id para sa pag-download ng mga ulat

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

Kung nagpadala kami ng hindi tama/nag-expire na API key, makakatanggap kami ng 403 error bilang tugon.

SandBlast API: sa cloud at sa mga lokal na device

Maaaring ipadala ang mga kahilingan sa API sa mga Check Point device na may pinaganang Threat Emulation component (blade). Bilang isang address para sa mga kahilingan, kailangan mong gamitin ang ip/url ng device at port 18194 (halimbawa, https://10.10.57.19:18194/tecloud/api/v1/file/query). Dapat mo ring tiyakin na pinapayagan ng patakaran sa seguridad sa device ang koneksyon na ito. Awtorisasyon sa pamamagitan ng API key sa mga lokal na device bilang default off at ang Authorization key sa mga header ng kahilingan ay maaaring hindi maipadala sa lahat.

Dapat ipadala ang mga kahilingan sa API sa CheckPoint cloud te.checkpoint.com (halimbawa - https://te.checkpoint.com/tecloud/api/v1/file/query). Maaaring makuha ang API key bilang trial na lisensya sa loob ng 60 araw sa pamamagitan ng pakikipag-ugnayan sa mga partner sa Check Point o sa lokal na opisina ng kumpanya.

Sa mga lokal na device, ang Threat Extraction ay hindi pa sinusuportahan bilang pamantayan. Threat Prevention API at dapat gamitin Threat Prevention API para sa Security Gateway (pag-uusapan natin ito nang mas detalyado sa dulo ng artikulo).

Hindi sinusuportahan ng mga lokal na device ang kahilingan sa quota.

Kung hindi, walang pagkakaiba sa pagitan ng mga kahilingan sa mga lokal na device at sa cloud.

Mag-upload ng API call

Paraang ginamit βˆ’ POST

Address ng tawag - https:///tecloud/api/v1/file/upload

Binubuo ang kahilingan ng dalawang bahagi (form-data): isang file na nilayon para sa pagtulad/paglilinis at isang katawan ng kahilingan na may teksto.

Hindi maaaring walang laman ang kahilingan sa text, ngunit maaaring wala itong anumang configuration. Upang maging matagumpay ang kahilingan, dapat mong ipadala ang kahit man lang sumusunod na teksto sa kahilingan:

Minimum na kinakailangan para sa isang kahilingan sa pag-upload

HTTP POST

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

Mga header:

Awtorisasyon:

katawan

{

"hiling": {

}

}

talaksan

talaksan

Sa kasong ito, ang file ay ipoproseso alinsunod sa mga default na parameter: component - te, mga imahe ng OS - Manalo ng XP at Manalo ng 7, nang hindi gumagawa ng ulat.

Mga komento sa mga pangunahing field sa kahilingan sa text:

file_name ΠΈ uri_file Maaari mong iwanang blangko ang mga ito o hindi ipadala ang mga ito, dahil hindi ito partikular na kapaki-pakinabang na impormasyon kapag nag-a-upload ng file. Sa tugon ng API, awtomatikong mapupunan ang mga field na ito batay sa pangalan ng na-download na file, at ang impormasyon sa cache ay kailangan pa ring hanapin gamit ang mga halaga ng hash ng md5/sha1/sha256.

Halimbawa ng kahilingan na may walang laman na file_name at file_type

{

"request": {

"file_name": "",

"file_type": "",

}

}

mga tampok β€” isang listahan na nagpapahiwatig ng kinakailangang pag-andar kapag nagpoproseso sa sandbox - av (Anti-Virus), te (Threat Emulation), pagkuha (Threat Extraction). Kung ang parameter na ito ay hindi naipasa, pagkatapos ay ang default na bahagi lamang ang gagamitin - te (Threat Emulation).

Upang paganahin ang pagsuri sa tatlong magagamit na mga bahagi, kailangan mong tukuyin ang mga bahaging ito sa kahilingan ng API.

Halimbawa ng isang kahilingan na may checking in av, te at extraction

{ "request":  [  

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

Mga susi sa seksyong te

imahe β€” isang listahan na naglalaman ng mga diksyunaryo na may id at rebisyon na numero ng mga operating system kung saan isasagawa ang pagsusuri. Ang mga ID at revision number ay pareho para sa lahat ng lokal na device at sa cloud.

Listahan ng mga operating system at rebisyon

Available na OS Image ID

Rebisyon

Image OS at Application

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Opisina: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 at ActiveX 10.0
Java Runtime: 1.6.0u22

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

1

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

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

1

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

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

1

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

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

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

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

 

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

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

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

Kung ang susi ng mga imahe ay hindi tinukoy sa lahat, ang emulation ay magaganap sa mga imahe na inirerekomenda ng Check Point (kasalukuyang Win XP at Win 7). Ang mga larawang ito ay inirerekomenda batay sa mga pagsasaalang-alang sa pinakamahusay na balanse ng pagganap at catch rate.

ulat β€” isang listahan ng mga ulat na hinihiling namin kung sakaling lumabas na nakakahamak ang file. Available ang mga sumusunod na opsyon:

  1. buod - .tar.gz archive na naglalaman ng ulat sa pagtulad ni sa lahat humiling ng mga larawan (parehong isang html na pahina at mga bahagi tulad ng isang video mula sa emulator OS, isang network traffic dump, isang ulat sa json, at ang sample mismo sa isang archive na protektado ng password). Hinahanap namin ang susi sa sagot - summary_report para sa kasunod na pag-download ng ulat.

  2. pdf - dokumento tungkol sa pagtulad sa isa larawan, na nakasanayan ng marami na matanggap sa pamamagitan ng Smart Console. Hinahanap namin ang susi sa sagot - pdf_ulat para sa kasunod na pag-download ng ulat.

  3. xml - dokumento tungkol sa pagtulad sa isa larawan, maginhawa para sa kasunod na pag-parse ng mga parameter sa ulat. Hinahanap namin ang susi sa sagot - xml_report para sa kasunod na pag-download ng ulat.

  4. alkitran - .tar.gz archive na naglalaman ng ulat sa pagtulad sa isa humiling ng mga larawan (parehong isang html na pahina at mga bahagi tulad ng isang video mula sa emulator OS, isang network traffic dump, isang ulat sa json, at ang sample mismo sa isang archive na protektado ng password). Hinahanap namin ang susi sa sagot - buong_ulat para sa kasunod na pag-download ng ulat.

Ano ang nasa loob ng ulat ng buodPakikipag-ugnayan sa Check Point SandBlast sa pamamagitan ng API

Ang mga key na full_report, pdf_report, xml_report ay nasa diksyunaryo para sa bawat OS

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

Ngunit ang summary_report key - mayroong isa para sa pagtulad sa pangkalahatan

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

Maaari kang humiling ng tar at xml at pdf na mga ulat sa parehong oras, maaari kang humiling ng buod at tar at xml. Hindi posibleng humiling ng buod na ulat at pdf nang sabay.

Mga susi sa seksyon ng pagkuha

Para sa pagbabanta ng pagkuha, dalawang susi lamang ang ginagamit:

paraan β€” pdf (i-convert sa pdf, ginamit bilang default) o malinis (naglilinis ng aktibong nilalaman).

extracted_parts_codes - listahan ng mga code para sa pag-alis ng aktibong nilalaman, naaangkop lamang para sa malinis na paraan

Mga code para sa pag-alis ng nilalaman mula sa mga file

kodigo

paglalarawan

1025

Mga Naka-link na Bagay

1026

Mga Macro at Code

1034

Mga Sensitibong Hyperlink

1137

PDF GoToR Actions

1139

Mga Pagkilos sa Paglunsad ng PDF

1141

Mga Pagkilos sa PDF URI

1142

PDF Sound Actions

1143

Mga Pagkilos sa PDF na Pelikula

1150

Mga Pagkilos sa PDF JavaScript

1151

PDF Submit Form Actions

1018

Mga Query sa Database

1019

Naka-embed na Mga Bagay

1021

Mabilis na I-save ang Data

1017

Mga Custom na Property

1036

Mga Katangian ng Istatistika

1037

Mga Katangian ng Buod

Upang mag-download ng nalinis na kopya, kakailanganin mo ring gumawa ng kahilingan sa query (na tatalakayin sa ibaba) pagkatapos ng ilang segundo, na tinutukoy ang halaga ng hash ng file at ang bahagi ng pagkuha sa text ng kahilingan. Maaari mong kunin ang nalinis na file gamit ang id mula sa tugon sa query - extracted_file_download_id. Muli, tumingin sa unahan ng kaunti, nagbibigay ako ng mga halimbawa ng isang kahilingan at isang tugon sa query upang maghanap ng isang id para sa pag-download ng isang na-clear na dokumento.

Humiling ng query na hanapin ang extracted_file_download_id key

{ "request":  [  

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

Tugon sa query (hanapin ang extracted_file_download_id key)

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

Pangkalahatang-ideya ng

Sa isang API call, maaari kang magpadala lamang ng isang file para sa pag-verify.

Ang bahagi ng av ay hindi nangangailangan ng karagdagang seksyon na may mga susi, sapat na upang tukuyin ito sa diksyunaryo mga tampok.

Query API na tawag

Paraang ginamit βˆ’ POST

Address ng tawag - https:///tecloud/api/v1/file/query

Bago magpadala ng file para sa pag-download (kahilingan sa pag-upload), ipinapayong suriin ang sandbox cache (hiling sa query) upang ma-optimize ang pag-load sa API server, dahil ang API server ay maaaring mayroon nang impormasyon at isang hatol sa na-download na file. Ang tawag ay binubuo lamang ng isang bahagi ng teksto. Ang kinakailangang bahagi ng kahilingan ay sha1/sha256/md5 hash na halaga ng file. Siyanga pala, makukuha mo ito bilang tugon sa kahilingan sa pag-upload.

Minimum na kinakailangan para sa query

HTTP POST

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

Mga header:

Awtorisasyon:

katawan

{

"hiling": {

"sha256":

}

}

Isang halimbawa ng tugon sa isang kahilingan sa pag-upload, kung saan makikita ang mga halaga ng hash ng 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."
      }
    }
  }
}

Ang kahilingan sa query, bilang karagdagan sa halaga ng hash, ay dapat na kapareho ng kahilingan sa pag-upload noon (o binalak na maging), o kahit na "na" (naglalaman ng mas kaunting mga field sa kahilingan sa query kaysa sa kahilingan sa pag-upload). Sa kaso kung saan ang kahilingan sa query ay naglalaman ng higit pang mga field kaysa sa kahilingan sa pag-upload, hindi mo matatanggap ang lahat ng kinakailangang impormasyon sa tugon.

Narito ang isang halimbawa ng tugon sa isang query kung saan hindi nakita ang lahat ng kinakailangang data

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

Bigyang-pansin ang mga patlang code ΠΈ etiketa. Lumilitaw ang mga field na ito nang tatlong beses sa mga diksyonaryo ng katayuan. Una naming nakita ang pandaigdigang key na "code": 1006 at "label": "PARTIALLY_FOUND". Susunod, ang mga key na ito ay matatagpuan para sa bawat indibidwal na bahagi na aming hiniling - te at pagkuha. At kung para sa te ito ay malinaw na ang data ay natagpuan, kung gayon para sa pagkuha ay walang impormasyon.

Ito ang hitsura ng query para sa halimbawa sa itaas

{ "request":  [  

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

Kung magpadala ka ng kahilingan sa query nang walang bahagi ng pagkuha

{ "request":  [  

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

Pagkatapos ang sagot ay maglalaman ng kumpletong impormasyon (β€œ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."
        }
      }
    }
  ]
}

Kung walang impormasyon sa cache, ang magiging tugon ay "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."
        }
      }
    }
  ]
}

Sa isang API call, maaari kang magpadala ng ilang halaga ng hash nang sabay-sabay para sa pag-verify. Ang tugon ay magbabalik ng data sa parehong pagkakasunud-sunod tulad ng ipinadala sa kahilingan.

Halimbawa ng kahilingan sa query na may ilang halaga ng sha256

{ "request":  [  

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

Tugon sa isang query na may maraming halaga 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."
        }
      }
    }
  ]
}

Ang paghiling ng ilang hash sum nang sabay-sabay sa isang kahilingan sa query ay magkakaroon din ng kapaki-pakinabang na epekto sa pagganap ng API server.

I-download ang API call

Paraang ginamit βˆ’ POST (ayon sa dokumentasyon), GET gumagana din (at maaaring mukhang mas lohikal)

Address ng tawag - https:///tecloud/api/v1/file/download?id=

Ang header ay nangangailangan ng API key na maipasa, ang katawan ng kahilingan ay walang laman, ang download id ay ipinasa sa URL address.

Bilang tugon sa isang kahilingan sa query, kung ang pagtulad ay nakumpleto at ang mga ulat ay hiniling kapag nagda-download ng file, ang id para sa pag-download ng mga ulat ay makikita. Kung humiling ng nalinis na kopya, dapat mong hanapin ang id upang ma-download ang nalinis na dokumento.

Sa kabuuan, ang mga susi sa tugon sa query na naglalaman ng halaga ng id para sa paglo-load ay maaaring:

  • summary_report

  • buong_ulat

  • pdf_ulat

  • xml_report

  • extracted_file_download_id

Siyempre, para matanggap ang mga susi na ito bilang tugon sa kahilingan sa query, dapat na tukuyin ang mga ito sa kahilingan (para sa mga ulat) o tandaan na gumawa ng kahilingan gamit ang extraction function (para sa mga nilinis na dokumento)

Quota API na tawag

Paraang ginamit βˆ’ POST

Address ng tawag - https:///tecloud/api/v1/file/quota

Upang suriin ang natitirang quota sa cloud, gamitin ang query sa quota. Walang laman ang request body.

Halimbawang tugon sa isang kahilingan sa 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 para sa Security Gateway

Ang API na ito ay binuo bago ang Threat Prevention API at inilaan lamang para sa mga lokal na device. Sa ngayon maaari lang itong maging kapaki-pakinabang kung kailangan mo ang Threat Extraction API. Para sa Threat Emulation mas mainam na gamitin ang regular na Threat Prevention API. Upang i-on TP API para sa SG at i-configure ang API key na kailangan mong sundin ang mga hakbang mula sa sk113599. Inirerekomenda kong bigyang pansin ang hakbang 6b at suriin ang pagiging naa-access ng pahina https://<IPAddressofSecurityGateway>/UserCheck/TPAPI dahil sa kaso ng isang negatibong resulta, ang karagdagang pagsasaayos ay hindi makatwiran. Ang lahat ng mga tawag sa API ay ipapadala sa url na ito. Ang uri ng tawag (upload/query) ay kinokontrol sa call body key βˆ’ request_name. Ang mga kinakailangang key din ay - api_key (kailangan mong tandaan ito sa panahon ng proseso ng pagsasaayos) at protocol_version (kasalukuyang kasalukuyang bersyon ay 1.1). Mahahanap mo ang opisyal na dokumentasyon para sa API na ito sa sk137032. Kasama sa mga kamag-anak na bentahe ang kakayahang magpadala ng ilang mga file nang sabay-sabay para sa pagtulad kapag nilo-load ang mga ito, dahil ang mga file ay ipinadala bilang isang base64 text string. Upang mag-encode/mag-decode ng mga file papunta/mula sa base64 maaari kang gumamit ng online na converter sa Postman para sa mga layunin ng pagpapakita, halimbawa - https://base64.guru. Para sa mga praktikal na layunin, dapat mong gamitin ang built-in na encode at decode na mga pamamaraan kapag nagsusulat ng code.

Ngayon tingnan natin ang mga function te ΠΈ pagkuha sa API na ito.

Para sa sangkap te ibinigay na diksyunaryo te_options sa mga kahilingan sa pag-upload/query, at ang mga susi sa kahilingang ito ay ganap na tumutugma sa mga te key in Threat Prevention API.

Halimbawa ng kahilingan para sa file emulation sa Win10 na may mga ulat

{
"request": [{
    "protocol_version": "1.1",
    "api_key": "<api_key>",
    "request_name": "UploadFile",
    "file_enc_data": "<base64_encoded_file>",
    "file_orig_name": "<filename>",
    "te_options": {
        "images": [
                {
                    "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
                    "revision": 1
                }
            ],
        "reports": ["summary", "xml"]
    }
    }
    ]
}

Para sa sangkap pagkuha ibinigay na diksyunaryo scrub_options. Tinutukoy ng kahilingang ito ang paraan ng paglilinis: i-convert sa PDF, i-clear ang aktibong nilalaman, o pumili ng mode alinsunod sa profile ng Threat Prevention (ipinahiwatig ang pangalan ng profile). Ang magandang bagay tungkol sa pagtugon sa isang kahilingan sa pagkuha ng API para sa isang file ay nakakakuha ka ng nalinis na kopya bilang tugon sa kahilingang iyon bilang base64 na naka-encrypt na string (hindi mo kailangang gumawa ng kahilingan sa query at hanapin ang id upang ma-download ang dokumento)

Halimbawa ng isang kahilingan upang i-clear ang isang file

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

Tumugon sa kahilingan

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

Sa kabila ng katotohanan na mas kaunting mga kahilingan sa API ang kinakailangan upang makakuha ng na-clear na kopya, sa tingin ko ang opsyong ito ay hindi gaanong kanais-nais at maginhawa kaysa sa kahilingan sa form-data na ginamit sa Threat Prevention API.

Mga Koleksyon ng Postman

Gumawa ako ng mga koleksyon sa Postman para sa Threat Prevention API at Threat Prevention API para sa Security Gateway, na kumakatawan sa mga pinakakaraniwang kahilingan sa API. Upang ang server ip/url API at susi ay awtomatikong mapalitan sa mga kahilingan, at ang halaga ng hash ng sha256 ay maaalala pagkatapos i-download ang file, tatlong variable ang ginawa sa loob ng mga koleksyon (maaari mong mahanap ang mga ito sa pamamagitan ng pagpunta sa mga setting ng koleksyon I-edit -> Mga Variable): te_api (kinakailangan), api_key (kinakailangang mapunan, maliban kapag gumagamit ng TP API sa mga lokal na device), sha256 (iwang walang laman, hindi ginagamit sa TP API para sa SG).

I-download ang koleksyon ng Postman para sa Threat Prevention API

I-download ang koleksyon ng Postman para sa Threat Prevention para sa Security Gateway API

Mga Halimbawa ng Paggamit

Sa komunidad Suriin ang mga Kapareha Ang mga script na nakasulat sa Python ay ipinakita na nagsusuri ng mga file mula sa nais na direktoryo sa pamamagitan ng TP APIAt TP API para sa SG. Sa pamamagitan ng pakikipag-ugnayan sa Threat Prevention API, ang iyong kakayahang mag-scan ng mga file ay makabuluhang pinalawak, dahil ngayon ay maaari ka nang mag-scan ng mga file sa ilang mga platform nang sabay-sabay (pag-check in VirusTotal API, at pagkatapos ay sa Check Point sandbox), at tumanggap ng mga file hindi lamang mula sa trapiko sa network, ngunit kunin din ang mga ito mula sa anumang mga network drive at, halimbawa, mga CRM system.

Pinagmulan: www.habr.com

Magdagdag ng komento