Sąveika su Check Point SandBlast per API

Sąveika su Check Point SandBlast per API

Šis straipsnis bus naudingas tiems, kurie yra susipažinę su technologijomis Check Point pagal failo emuliaciją (Grėsmės emuliacija) ir aktyvus failų valymas (Grėsmės pašalinimas) ir nori žengti žingsnį šių užduočių automatizavimo link. „Check Point“ turi Grėsmių prevencijos API, kuris veikia tiek debesyje, tiek vietiniuose įrenginiuose, ir funkciškai tai identiška failų tikrinimui web/smtp/ftp/smb/nfs srauto srautuose. Šis straipsnis iš dalies yra autoriaus straipsnių rinkinio iš oficialios dokumentacijos interpretacija, tačiau remiantis mano paties darbo patirtimi ir mano pavyzdžiais. Taip pat straipsnyje rasite autoriaus paštininko rinkinius, skirtus darbui su grėsmių prevencijos API.

Pagrindinės santrumpos

Grėsmių prevencijos API veikia su trimis pagrindiniais komponentais, kurie API iškviečiami naudojant šias teksto reikšmes:

av — Antivirusinis komponentas, atsakingas už žinomų grėsmių parašų analizę.

te - Grėsmių emuliacijos komponentas, atsakingas už failų tikrinimą smėlio dėžėje ir kenkėjiško / nepiktybinio sprendimo priėmimą po emuliacijos.

gavyba - Grėsmių pašalinimo komponentas, atsakingas už greitą biuro dokumentų konvertavimą į saugią formą (kurioje pašalinamas visas potencialiai kenksmingas turinys), kad jie būtų greitai pristatyti vartotojams / sistemoms.

API struktūra ir pagrindiniai apribojimai

Grėsmių prevencijos API naudoja tik 4 užklausas – įkelti, pateikti užklausą, atsisiųsti ir kvotuoti. Visų keturių užklausų antraštėje turite perduoti API raktą naudodami parametrą leidimas. Iš pirmo žvilgsnio konstrukcija gali atrodyti daug paprastesnė nei viduje Valdymo API, tačiau įkėlimo ir užklausų užklausų laukų skaičius ir šių užklausų struktūra yra gana sudėtinga. Juos galima funkciškai palyginti su grėsmių prevencijos profiliais šliuzo / smėlio dėžės saugos politikoje.

Šiuo metu buvo išleista vienintelė grėsmių prevencijos API versija – 1.0; API iškvietimų URL turėtų apimti v1 dalyje, kurioje reikia nurodyti versiją. Skirtingai nuo valdymo API, URL reikia nurodyti API versiją, kitaip užklausa nebus vykdoma.

Antivirusinis komponentas, kai iškviečiamas be kitų komponentų (te, ištraukimas), šiuo metu palaiko tik užklausas su md5 maišos sumomis. Grėsmių emuliacija ir grėsmių pašalinimas taip pat palaiko sha1 ir sha256 maišos sumas.

Labai svarbu nesuklysti užklausose! Prašymas gali būti įvykdytas be klaidų, bet ne visiškai. Žvelgdami į priekį, pažiūrėkime, kas gali nutikti, kai užklausose yra klaidų / rašybos klaidų.

Užklausa su rašybos klaida su žodžiu reports(reportss)

{ "request":  [  

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

Klaidos atsakyme nebus, bet informacijos apie ataskaitas iš viso nebus

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

Bet už užklausą be rašybos klaidos ataskaitų rakte

{ "request":  [  

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

Gauname atsakymą, kuriame jau yra ataskaitų atsisiuntimo 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."
        }
      }
    }
  ]
}

Jei atsiųsime neteisingą / pasibaigusio API raktą, atsakydami gausime 403 klaidą.

SandBlast API: debesyje ir vietiniuose įrenginiuose

API užklausos gali būti siunčiamos į „Check Point“ įrenginius, kuriuose įjungtas grėsmių emuliacijos komponentas (blade). Kaip užklausų adresą turite naudoti įrenginio ip/url ir prievadą 18194 (pvz., https://10.10.57.19:18194/tecloud/api/v1/file/query). Taip pat turėtumėte įsitikinti, kad įrenginio saugos politika leidžia šį ryšį. Pagal numatytuosius nustatymus autorizacija naudojant API raktą vietiniuose įrenginiuose išjungti o prieigos raktas užklausų antraštėse gali būti iš viso nesiunčiamas.

API užklausos į CheckPoint debesį turėtų būti siunčiamos į te.checkpoint.com (pavyzdžiui - https://te.checkpoint.com/tecloud/api/v1/file/query). API raktą galima gauti kaip bandomąją licenciją 60 dienų susisiekus su Check Point partneriais arba įmonės vietiniu biuru.

Vietiniuose įrenginiuose grėsmių pašalinimas dar nepalaikomas kaip standartas. Grėsmių prevencijos API ir turėtų būti naudojamas Threat Prevention API, skirta saugos šliuzui (apie tai plačiau pakalbėsime straipsnio pabaigoje).

Vietiniai įrenginiai nepalaiko kvotos užklausos.

Kitu atveju užklausos vietiniams įrenginiams ir debesiui nesiskiria.

Įkelti API skambutį

Naudotas metodas − POST

Skambinimo adresas - https:///tecloud/api/v1/file/upload

Užklausą sudaro dvi dalys (forma-duomenys): failas, skirtas emuliacijai/valyti, ir užklausos turinys su tekstu.

Teksto užklausa negali būti tuščia, tačiau joje gali nebūti jokios konfigūracijos. Kad užklausa būtų sėkminga, užklausoje turite atsiųsti bent tokį tekstą:

Minimalus reikalavimas įkėlimo užklausai

HTTP POST

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

Antraštės:

Autorizacija:

Kėbulas

{

"užklausa": {

}

}

filė

filė

Tokiu atveju failas bus apdorojamas pagal numatytuosius parametrus: komponentas - te, OS vaizdai - Win XP ir Win 7, negeneruojant ataskaitos.

Komentarai dėl pagrindinių teksto užklausos laukų:

failo pavadinimas и Failo tipas Galite palikti juos tuščius arba iš viso jų nesiųsti, nes tai nėra ypač naudinga informacija įkeliant failą. API atsakyme šie laukai bus užpildyti automatiškai pagal atsisiųsto failo pavadinimą, o informacijos talpykloje vis tiek teks ieškoti naudojant md5/sha1/sha256 maišos sumas.

Užklausos pavyzdys su tuščiu failo_pavadinimu ir failo_tipu

{

"request": {

"file_name": "",

"file_type": "",

}

}

funkcijos — sąrašas, kuriame nurodomos būtinos funkcijos apdorojant smėlio dėžėje - av (Anti-Virus), te (Grėsmių emuliacija), ištraukimas (Grėsmių pašalinimas). Jei šis parametras iš viso neperduodamas, bus naudojamas tik numatytasis komponentas – te (Threat Emulation).

Norėdami įgalinti trijų galimų komponentų patikrą, turite nurodyti šiuos komponentus API užklausoje.

Prašymo pavyzdys su patikrinimu av, te ir ištraukimu

{ "request":  [  

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

Raktai te skyriuje

vaizdai — sąrašas, kuriame yra žodynai su operacinių sistemų, kuriose bus tikrinama, ID ir pataisos numeriai. Visų vietinių įrenginių ir debesies ID ir pataisų numeriai yra vienodi.

Operacinių sistemų ir pataisų sąrašas

Galimas OS vaizdo ID

Peržiūrėjimas

Vaizdo OS ir programa

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

"Microsoft Windows": XP – 32 bitų SP3
Office: 2003, 2007
"Adobe Acrobat Reader": 9.0
"flash Player" 9r115 ir "ActiveX" 10.0
Java vykdymo laikas: 1.6.0u22

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

1

"Microsoft Windows": 7–32 bitai
Office: 2003, 2007
"Adobe Acrobat Reader": 9.0
Flash grotuvas: 10.2r152 (Prijungti"ActiveX")
Java vykdymo laikas: 1.6.0u0

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

1

"Microsoft Windows": 7–32 bitai
Office: 2010
"Adobe Acrobat Reader": 9.4
Flash grotuvas: 11.0.1.152 (Prijungti & "ActiveX")
Java vykdymo laikas: 1.7.0u0

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

1

"Microsoft Windows": 7–32 bitai
Office: 2013
"Adobe Acrobat Reader": 11.0
Flash grotuvas: 15 (Prijungti & "ActiveX")
Java vykdymo laikas: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

"Microsoft Windows": 7–64 bitai
Office: 2013 (32 bitai)
"Adobe Acrobat Reader": 11.0.01
Flash grotuvas: 13 (Prijungti & "ActiveX")
Java vykdymo laikas: 1.7.0u9

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

 

"Microsoft Windows": 8.1–64 bitai
Office: 2013 (64 bitai)
"Adobe Acrobat Reader": 11.0.10
Flash grotuvas: 18.0.0.160 (Prijungti & "ActiveX")
Java vykdymo laikas: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

"Microsoft Windows": 10
Office: Professional Plus 2016 en-us  
"Adobe Acrobat Reader": DC 2015 MUI
Flash grotuvas: 20 (Prijungti & "ActiveX")
Java vykdymo laikas: 1.7.0u9

Jei vaizdų raktas visai nenurodytas, tada emuliacija vyks Check Point rekomenduojamuose vaizduose (šiuo metu Win XP ir Win 7). Šie vaizdai rekomenduojami atsižvelgiant į geriausią našumo ir gaudymo greičio pusiausvyrą.

ataskaitos — ataskaitų, kurių prašome, jei paaiškėtų, kad failas yra kenkėjiškas, sąrašas. Galimos šios parinktys:

  1. santrauka - .tar.gz archyvas, kuriame yra emuliacijos ataskaita visi prašomi vaizdai (ir HTML puslapis, ir komponentai, pvz., vaizdo įrašas iš emuliatoriaus OS, tinklo srauto išvestis, ataskaita JSON ir pats pavyzdys slaptažodžiu apsaugotame archyve). Mes ieškome atsakymo rakto - suvestinė_ataskaita vėlesniam ataskaitos atsisiuntimui.

  2. PDF - dokumentas apie emuliaciją vienas vaizdas, kurį daugelis yra įpratę gauti per Smart Console. Mes ieškome atsakymo rakto - pdf_ataskaita vėlesniam ataskaitos atsisiuntimui.

  3. XML - dokumentas apie emuliaciją vienas vaizdas, patogus vėliau ataskaitoje analizuojant parametrus. Mes ieškome atsakymo rakto - xml_report vėlesniam ataskaitos atsisiuntimui.

  4. degutas - .tar.gz archyvas, kuriame yra emuliacijos ataskaita vienas prašomi vaizdai (ir HTML puslapis, ir komponentai, pvz., vaizdo įrašas iš emuliatoriaus OS, tinklo srauto išvestis, ataskaita JSON ir pats pavyzdys slaptažodžiu apsaugotame archyve). Mes ieškome atsakymo rakto - pilna_ataskaita vėlesniam ataskaitos atsisiuntimui.

Kas yra suvestinės ataskaitos vidujeSąveika su Check Point SandBlast per API

Raktai full_report, pdf_report, xml_report yra kiekvienos OS žodyne

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

Tačiau raktas summary_report – yra vienas, skirtas emuliacijai apskritai

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

Galite prašyti tar ir xml ir pdf ataskaitų vienu metu, galite prašyti santraukos ir tar ir xml. Vienu metu nebus galima prašyti suvestinės ataskaitos ir pdf.

Raktai ištraukimo skyriuje

Grėsmės išgavimui naudojami tik du raktai:

metodas — pdf (konvertuoti į pdf, naudojamas pagal numatytuosius nustatymus) arba švarus (aktyvaus turinio išvalymas).

išskleisti_dalių_kodai - aktyvaus turinio pašalinimo kodų sąrašas, taikomas tik švariam metodui

Kodai, skirti pašalinti turinį iš failų

kodas

Aprašymas

1025

Susieti objektai

1026

Makrokomandos ir kodas

1034

Jautrūs hipersaitai

1137

PDF GoToR veiksmai

1139

PDF paleidimo veiksmai

1141

PDF URI veiksmai

1142

PDF garso veiksmai

1143

Pdf filmų veiksmai

1150

PDF JavaScript veiksmai

1151

PDF pateikimo formos veiksmai

1018

Duomenų bazių užklausos

1019

Įterptieji objektai

1021

Greitas duomenų išsaugojimas

1017

Individualios ypatybės

1036

Statistinės savybės

1037

Santraukos savybės

Norėdami atsisiųsti išvalytą kopiją, taip pat po kelių sekundžių turėsite pateikti užklausos užklausą (apie tai bus kalbama toliau), prašymo tekste nurodydami failo maišos kiekį ir ištraukimo komponentą. Galite pasiimti išvalytą failą naudodami ID iš atsakymo į užklausą - extrated_file_download_id. Dar kartą, šiek tiek žvelgdamas į priekį, pateikiu užklausos ir atsakymo į užklausą pavyzdžius, ieškant ID, kad būtų galima atsisiųsti išvalytą dokumentą.

Užklausos užklausa ieškant rakto extrated_file_download_id

{ "request":  [  

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

Atsakymas į užklausą (ieškokite extrated_file_download_id rakto)

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

Apžvalga

Vienu API skambučiu galite siųsti tik vieną failą patvirtinimui.

Av komponentui nereikia papildomos sekcijos su klavišais, užtenka ją nurodyti žodyne funkcijos.

Užklausos API iškvietimas

Naudotas metodas − POST

Skambinimo adresas - https:///tecloud/api/v1/file/query

Prieš siunčiant failą atsisiųsti (įkėlimo užklausą), patartina patikrinti smėlio dėžės talpyklą (užklausos užklausą), kad optimizuotumėte API serverio apkrovą, nes API serveris jau gali turėti informacijos ir nuosprendžio apie atsisiųstą failą. Skambutis susideda tik iš tekstinės dalies. Reikalinga užklausos dalis yra sha1/sha256/md5 failo maišos kiekis. Beje, jį galite gauti atsakyme į įkėlimo užklausą.

Užklausai reikalingas minimumas

HTTP POST

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

Antraštės:

Autorizacija:

Kėbulas

{

"užklausa": {

"sha256":

}

}

Atsakymo į įkėlimo užklausą pavyzdys, kur matomos sha1/md5/sha256 maišos sumos

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

Idealiu atveju užklausos užklausa, be maišos sumos, turėtų būti tokia pati, kokia buvo (arba planuojama) įkelti, arba netgi „jau“ (užklausos užklausoje turi būti mažiau laukų nei įkėlimo užklausoje). Tuo atveju, kai užklausos užklausoje yra daugiau laukų nei buvo įkėlimo užklausoje, atsakyme negausite visos reikiamos informacijos.

Čia yra atsakymo į užklausą pavyzdys, kai rasti ne visi reikalingi duomenys

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

Atkreipkite dėmesį į laukus kodas и etiketė. Šie laukai būsenos žodynuose rodomi tris kartus. Pirmiausia matome visuotinį raktą „kodas“: 1006 ir „etiketė“: „PARTIALLY_FOUND“. Toliau šie raktai randami kiekvienam atskiram komponentui, kurio paprašėme – te ir ištraukimo. Ir jei jums aišku, kad duomenys buvo rasti, tada išgauti informacijos nėra.

Taip atrodė užklausa aukščiau pateiktame pavyzdyje

{ "request":  [  

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

Jei siunčiate užklausos užklausą be išskyrimo komponento

{ "request":  [  

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

Tada atsakyme bus pateikta visa informacija („kodas“: 1001, „etiketė“: „RASTA“)

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

Jei talpykloje informacijos iš viso nėra, atsakymas bus „etiketė“: „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."
        }
      }
    }
  ]
}

Vieno API skambučio metu galite išsiųsti keletą maišos sumų vienu metu patvirtinimui. Atsakyme duomenys bus pateikti tokia pačia tvarka, kokia buvo išsiųsta užklausoje.

Užklausos užklausos pavyzdys su keliomis sha256 sumomis

{ "request":  [  

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

Atsakymas į užklausą su keliomis sha256 sumomis

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

Kelių maišos sumų vienu metu užklausos užklausoje užklausa taip pat turės teigiamos įtakos API serverio veikimui.

Atsisiųskite API skambutį

Naudotas metodas − POST (pagal dokumentus), GET taip pat veikia (ir gali atrodyti logiškiau)

Skambinimo adresas - https:///tecloud/api/v1/file/download?id=

Antraštė reikalauja perduoti API raktą, užklausos turinys tuščias, atsisiuntimo ID perduodamas URL adresu.

Atsakant į užklausą, jei emuliacija baigta ir atsisiunčiant failą buvo prašoma ataskaitų, bus matomas ataskaitų atsisiuntimo ID. Jei prašoma išvalyti kopiją, turėtumėte ieškoti ID, kad galėtumėte atsisiųsti išvalytą dokumentą.

Iš viso atsakymo į užklausą, kurioje yra įkėlimo ID reikšmė, raktai gali būti:

  • suvestinė_ataskaita

  • pilna_ataskaita

  • pdf_ataskaita

  • xml_report

  • Extracted_file_download_id

Žinoma, norint gauti šiuos raktus atsakant į užklausą, jie turi būti nurodyti užklausoje (ataskaitoms) arba nepamiršti pateikti užklausos naudojant ištraukimo funkciją (išvalytiems dokumentams)

Kvotos API skambutis

Naudotas metodas − POST

Skambinimo adresas - https:///tecloud/api/v1/file/quota

Norėdami patikrinti debesyje likusią kvotą, naudokite kvotos užklausą. Užklausos turinys tuščias.

Atsakymo į kvotos prašymą pavyzdys

{
  "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, skirta saugos šliuzui

Ši API buvo sukurta prieš Threat Prevention API ir skirta tik vietiniams įrenginiams. Kol kas tai gali būti naudinga tik tuo atveju, jei jums reikia Threat Extraction API. Grėsmių emuliacijai geriau naudoti įprastą Threat Prevention API. Įjungti TP API, skirta SG ir sukonfigūruokite API raktą, iš kurio turite atlikti veiksmus sk113599. Rekomenduoju atkreipti dėmesį į 6b veiksmą ir patikrinti puslapio prieinamumą https://<IPAddressofSecurityGateway>/UserCheck/TPAPI nes esant neigiamam rezultatui tolesnė konfigūracija nėra prasmės. Visi API skambučiai bus siunčiami šiuo URL. Skambučio tipas (įkėlimas/užklausa) reguliuojamas skambučio pagrindiniame klaviše − užklausos_pavadinimas. Taip pat reikalingi raktai - api_key (reikia tai atsiminti konfigūravimo proceso metu) ir protokolo_versija (šiuo metu dabartinė versija yra 1.1). Oficialią šios API dokumentaciją galite rasti adresu sk137032. Santykiniai pranašumai apima galimybę vienu metu siųsti kelis failus emuliacijai juos įkeliant, nes failai siunčiami kaip base64 teksto eilutė. Norėdami užkoduoti / iškoduoti failus į / iš base64, demonstravimo tikslais galite naudoti internetinį keitiklį „Postman“, pvz. https://base64.guru. Praktiniais tikslais, rašydami kodą, turėtumėte naudoti įmontuotus kodavimo ir iššifravimo metodus.

Dabar atidžiau pažvelkime į funkcijas te и gavyba šioje API.

Dėl komponento te pateiktas žodynas te_options įkėlimo / užklausos užklausose, o šios užklausos raktai visiškai sutampa su įvesties raktais Grėsmių prevencijos API.

Failų emuliacijos Win10 su ataskaitomis užklausos pavyzdys

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

Dėl komponento gavyba pateiktas žodynas scrub_options. Ši užklausa nurodo valymo būdą: konvertuoti į PDF, išvalyti aktyvų turinį arba pasirinkti režimą pagal grėsmių prevencijos profilį (profilio pavadinimas yra nurodytas). Puikus dalykas reaguojant į failo išskleidimo API užklausą yra tai, kad atsakydami į tą užklausą gausite išvalytą kopiją kaip base64 užšifruotą eilutę (jums nereikia pateikti užklausos ir ieškoti ID, kad atsisiųstumėte dokumentas)

Prašymo išvalyti failą pavyzdys

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

Atsakyti į užklausą

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

Nepaisant to, kad norint gauti patvirtintą kopiją reikia pateikti mažiau API užklausų, manau, kad ši parinktis yra mažiau priimtinesnė ir patogesnė nei formos duomenų užklausa, naudojama Grėsmių prevencijos API.

Paštininko kolekcijos

Programoje „Postman“ sukūriau rinkinius, skirtus ir Threat Prevention API, ir Threat Prevention API for Security Gateway, kurie atspindi dažniausiai pasitaikančias API užklausas. Kad serverio ip/url API ir raktas būtų automatiškai pakeisti į užklausas, o sha256 maišos suma būtų įsimenama atsisiuntus failą, kolekcijų viduje sukurti trys kintamieji (juos rasite nuėję į rinkinio nustatymus Redaguoti -> Kintamieji): te_api (būtina), api_key (privaloma užpildyti, išskyrus kai naudojate TP API su vietiniais įrenginiais), sha256 (palikite tuščią, nenaudojama SG TP API).

Atsisiųskite „Postman“ kolekciją, skirtą Threat Prevention API

Atsisiųskite „Postman“ kolekciją, skirtą „Treat Prevention for Security Gateway“ API

Naudojimo pavyzdžiai

Bendruomenėje Patikrinkite draugus pateikiami Python parašyti scenarijai, kurie tikrina failus iš norimo katalogo per TP APIIr TP API, skirta SG. Sąveika su grėsmių prevencijos API žymiai padidina jūsų galimybes nuskaityti failus, nes dabar galite vienu metu nuskaityti failus keliose platformose (registracija VirusTotal API, o tada į „Check Point“ smėlio dėžę) ir gaukite failus ne tik iš tinklo srauto, bet ir paimkite juos iš bet kokių tinklo diskų ir, pavyzdžiui, CRM sistemų.

Šaltinis: www.habr.com

Добавить комментарий