Interakcija s Check Point SandBlast prek API-ja

Interakcija s Check Point SandBlast prek API-ja

Ta članek bo koristen za tiste, ki so seznanjeni s tehnologijo Check Point z emulacijo datoteke (Emulacija groženj) in proaktivno čiščenje datotek (Ekstrakcija groženj) in želi narediti korak k avtomatizaciji teh opravil. Check Point ima API za preprečevanje groženj, ki deluje tako v oblaku kot na lokalnih napravah, in funkcionalno je enako preverjanju datotek v prometnih tokovih web/smtp/ftp/smb/nfs. Ta članek je deloma avtorjeva interpretacija nabora členov iz uradne dokumentacije, vendar temelji na lastnih izkušnjah delovanja in lastnih primerih. Tudi v članku boste našli avtorjeve zbirke Postman za delo z API-jem za preprečevanje groženj.

Osnovne okrajšave

API za preprečevanje groženj deluje s tremi glavnimi komponentami, ki se v API-ju kličejo prek naslednjih besedilnih vrednosti:

av — Protivirusna komponenta, odgovorna za analizo podpisov znanih groženj.

te - Komponenta emulacije groženj, ki je odgovorna za preverjanje datotek v peskovniku in izdelavo zlonamerne/benigne sodbe po emulaciji.

pridobivanje - Komponenta Threat Extraction, odgovorna za hitro pretvorbo pisarniških dokumentov v varno obliko (v kateri je odstranjena vsa potencialno zlonamerna vsebina) z namenom hitre dostave uporabnikom/sistemom.

Struktura API-ja in glavne omejitve

API za preprečevanje groženj uporablja samo 4 zahteve − nalaganje, poizvedba, prenos in kvota. V glavi za vse štiri zahteve morate posredovati ključ API z uporabo parametra Dovoljenje. Na prvi pogled se zdi struktura veliko enostavnejša kot v API za upravljanje, vendar je število polj v zahtevah za nalaganje in poizvedbo ter struktura teh zahtev precej zapletena. Funkcionalno jih je mogoče primerjati s profili za preprečevanje groženj v varnostni politiki prehoda/peskovnika.

Trenutno je izdana edina različica API-ja za preprečevanje groženj - 1.0; URL za klice API-ja mora vsebovati v1 v delu, kjer morate določiti različico. Za razliko od API-ja za upravljanje je treba v URL-ju navesti različico API-ja, sicer zahteva ne bo izvedena.

Protivirusna komponenta, ko je poklicana brez drugih komponent (te, ekstrakcija), trenutno podpira samo zahteve poizvedb z zgoščenimi vsotami md5. Emulacija groženj in ekstrakcija groženj podpirata tudi zgoščene vsote sha1 in sha256.

Zelo pomembno je, da ne delate napak pri poizvedbah! Zahtevo je mogoče izvesti brez napake, vendar ne v celoti. Če pogledamo malo naprej, si poglejmo, kaj se lahko zgodi, če so v poizvedbah napake/tipkarske napake.

Zahteva s tipkarsko napako z besedo poročila(poročila)

{ "request":  [  

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

V odgovoru ne bo napake, ne bo pa podatkov o poročilih

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

Toda za zahtevo brez tipkarske napake v ključu poročil

{ "request":  [  

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

Prejmemo odgovor, ki že vsebuje ID za prenos poročil

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

Če pošljemo napačen/potekel API ključ, bomo v odgovor prejeli napako 403.

SandBlast API: v oblaku in na lokalnih napravah

Zahteve API-ja je mogoče poslati napravam Check Point, ki imajo omogočeno komponento Threat Emulation (rezilo). Kot naslov za zahteve morate uporabiti ip/url naprave in vrata 18194 (na primer https://10.10.57.19:18194/tecloud/api/v1/file/query). Prepričajte se tudi, da varnostna politika v napravi dovoljuje to povezavo. Privzeto avtorizacija prek ključa API na lokalnih napravah izklopljeno in avtorizacijski ključ v glavah zahtev morda sploh ne bo poslan.

Zahteve API-ja za oblak CheckPoint je treba poslati na te.checkpoint.com (na primer - https://te.checkpoint.com/tecloud/api/v1/file/query). Ključ API lahko dobite kot preskusno licenco za 60 dni, tako da stopite v stik s partnerji Check Pointa ali lokalno pisarno podjetja.

V lokalnih napravah ekstrakcija groženj še ni standardno podprta. API za preprečevanje groženj in ga je treba uporabiti API za preprečevanje groženj za varnostni prehod (o tem bomo podrobneje govorili na koncu članka).

Lokalne naprave ne podpirajo zahteve za kvoto.

Sicer pa ni razlik med zahtevami v lokalne naprave in v oblak.

Naloži API klic

Uporabljena metoda − POST

Klicni naslov - https:///tecloud/api/v1/file/upload

Zahteva je sestavljena iz dveh delov (form-data): datoteke, namenjene emulaciji/čiščenju in telesa zahteve z besedilom.

Besedilna zahteva ne sme biti prazna, vendar ne sme vsebovati nobene konfiguracije. Da bo zahteva uspešna, morate v zahtevi poslati vsaj naslednje besedilo:

Zahtevano najmanjše število za zahtevo za nalaganje

HTTP POST

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

Naslovi:

Dovoljenje:

Karoserija

{

"prošnja": {

}

}

file

file

V tem primeru bo datoteka obdelana v skladu s privzetimi parametri: komponenta - te, OS slike - Win XP in Win 7, brez ustvarjanja poročila.

Komentarji na glavna polja v besedilni zahtevi:

Ime datoteke и vrsta datoteke Lahko jih pustite prazne ali pa jih sploh ne pošljete, saj to ni posebno uporabna informacija pri nalaganju datoteke. V odgovoru API-ja bodo ta polja samodejno izpolnjena glede na ime prenesene datoteke, podatke v predpomnilniku pa bo treba še vedno iskati z zgoščenimi količinami md5/sha1/sha256.

Primer zahteve s praznim file_name in file_type

{

"request": {

"file_name": "",

"file_type": "",

}

}

lastnosti — seznam, ki označuje potrebno funkcionalnost pri obdelavi v peskovniku - av (protivirusni program), te (emulacija groženj), ekstrakcija (ekstrakcija groženj). Če ta parameter sploh ni posredovan, bo uporabljena samo privzeta komponenta - te (Threat Emulation).

Če želite omogočiti preverjanje treh razpoložljivih komponent, morate te komponente določiti v zahtevi API.

Primer zahteve s preverjanjem av, te in ekstrakcijo

{ "request":  [  

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

Ključi v razdelku te

slike — seznam slovarjev z ID-jem in številko revizije operacijskih sistemov, v katerih bo opravljeno preverjanje. ID-ji in številke revizij so enaki za vse lokalne naprave in oblak.

Seznam operacijskih sistemov in revizij

ID razpoložljive slike OS

Revizija

Slika OS in aplikacija

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

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

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

1

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

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

1

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

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

1

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

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

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

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

 

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

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

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

Če ključ za slike sploh ni določen, bo emulacija potekala v slikah, ki jih priporoča Check Point (trenutno Win XP in Win 7). Te slike so priporočene na podlagi premislekov o najboljšem razmerju med zmogljivostjo in stopnjo ulova.

Poročila — seznam poročil, ki jih zahtevamo, če se izkaže, da je datoteka zlonamerna. Na voljo so naslednje možnosti:

  1. Povzetek - Arhiv .tar.gz, ki vsebuje poročilo o emulaciji avtorja vse zahtevane slike (tako stran html kot komponente, kot je video iz operacijskega sistema emulatorja, izpis omrežnega prometa, poročilo v json in sam vzorec v arhivu, zaščitenem z geslom). Iščemo ključ v odgovoru - povzetek_poročila za kasnejši prenos poročila.

  2. pdf - dokument o emulaciji v eno sliko, ki so jo mnogi navajeni prejemati prek pametne konzole. Iščemo ključ v odgovoru - pdf_poročilo za kasnejši prenos poročila.

  3. xml - dokument o emulaciji v eno slika, primerna za naknadno razčlenjevanje parametrov v poročilu. Iščemo ključ v odgovoru - xml_report za kasnejši prenos poročila.

  4. katran - arhiv .tar.gz, ki vsebuje poročilo o emulaciji v eno zahtevane slike (tako stran html kot komponente, kot je video iz operacijskega sistema emulatorja, izpis omrežnega prometa, poročilo v json in sam vzorec v arhivu, zaščitenem z geslom). Iščemo ključ v odgovoru - celotno_poročilo za kasnejši prenos poročila.

Kaj je v povzetku poročilaInterakcija s Check Point SandBlast prek API-ja

Ključi full_report, pdf_report, xml_report so v slovarju za vsak 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."
        }
      }
    }
  ]
}

Toda ključ summary_report - na splošno obstaja za emulacijo

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

Istočasno lahko zahtevate poročila tar in xml ter pdf, lahko zahtevate povzetek in tar in xml. Hkrati ne bo mogoče zahtevati sumarnega poročila in pdf.

Ključi v razdelku ekstrakcije

Za ekstrakcijo groženj se uporabljata samo dva ključa:

Metoda — pdf (pretvori v pdf, uporablja se privzeto) ali očisti (čiščenje aktivne vsebine).

izvlečene_kode_delov - seznam kod za odstranjevanje aktivne vsebine, velja samo za čisto metodo

Kode za odstranjevanje vsebine iz datotek

Koda

Opis

1025

Povezani predmeti

1026

Makri in koda

1034

Občutljive hiperpovezave

1137

PDF GoToR Actions

1139

Dejanja zagona PDF

1141

Dejanja PDF URI

1142

Zvočne akcije PDF

1143

Dejanja filma PDF

1150

PDF dejanja JavaScript

1151

Dejanja obrazca za oddajo PDF

1018

Poizvedbe po zbirki podatkov

1019

Vdelani predmeti

1021

Hitro shranjevanje podatkov

1017

Lastnosti po meri

1036

Statistične lastnosti

1037

Lastnosti povzetka

Če želite prenesti očiščeno kopijo, boste morali po nekaj sekundah narediti tudi zahtevo za poizvedbo (o kateri bomo razpravljali spodaj) in v besedilu zahteve navesti količino zgoščene vrednosti datoteke in komponento ekstrakcije. Očiščeno datoteko lahko prevzamete z ID-jem iz odgovora na poizvedbo - extracted_file_download_id. Še enkrat, če malo pogledam naprej, podajam primere zahteve in odgovora na poizvedbo za iskanje ID-ja za prenos prečiščenega dokumenta.

Zahteva poizvedbe za iskanje ključa extracted_file_download_id

{ "request":  [  

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

Odgovor na poizvedbo (poiščite ključ extracted_file_download_id)

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

Pregled

V enem klicu API-ja lahko v preverjanje pošljete samo eno datoteko.

Komponenta av ne zahteva dodatnega razdelka s ključi, dovolj je, da ga določite v slovarju lastnosti.

Klic API-ja za poizvedbo

Uporabljena metoda − POST

Klicni naslov - https:///tecloud/api/v1/file/query

Preden datoteko pošljete v prenos (zahteva za nalaganje), je priporočljivo preveriti predpomnilnik peskovnika (zahteva za poizvedbo), da optimizirate obremenitev strežnika API, saj ima strežnik API morda že informacije in razsodbo o preneseni datoteki. Klic je sestavljen samo iz besedilnega dela. Zahtevani del zahteve je sha1/sha256/md5 zgoščena količina datoteke. Mimogrede, dobite ga lahko v odgovoru na zahtevo za nalaganje.

Minimalno zahtevano za poizvedbo

HTTP POST

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

Naslovi:

Dovoljenje:

Karoserija

{

"prošnja": {

"sha256":

}

}

Primer odgovora na zahtevo za nalaganje, kjer so vidne zgoščene količine 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."
      }
    }
  }
}

Zahteva poizvedbe bi morala biti poleg zneska zgoščene vrednosti v idealnem primeru enaka, kot je bila (ali je načrtovana, da bo) zahteva za nalaganje ali celo »že« (vsebovati manj polj v zahtevi za poizvedbo kot v zahtevi za nalaganje). V primeru, da zahteva poizvedbe vsebuje več polj, kot jih je bilo v zahtevi za nalaganje, v odgovoru ne boste prejeli vseh zahtevanih informacij.

Tukaj je primer odgovora na poizvedbo, kjer niso bili najdeni vsi zahtevani podatki

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

Bodite pozorni na polja Koda и nalepka. Ta polja se v slovarjih stanja pojavijo trikrat. Najprej vidimo globalni ključ »code«: 1006 in »label«: »PARTIALLY_FOUND«. Nato se ti ključi najdejo za vsako posamezno komponento, ki smo jo zahtevali - te in ekstrakcija. In če je za te jasno, da so bili podatki najdeni, potem za ekstrakcijo ni informacij.

Takole je izgledala poizvedba v zgornjem primeru

{ "request":  [  

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

Če pošljete zahtevo za poizvedbo brez komponente ekstrakcije

{ "request":  [  

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

Nato bo odgovor vseboval popolne informacije (»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."
        }
      }
    }
  ]
}

Če v predpomnilniku sploh ni nobenih informacij, bo odgovor »oznaka«: »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."
        }
      }
    }
  ]
}

V enem klicu API-ja lahko za preverjanje pošljete več zgoščenih vrednosti hkrati. Odgovor bo vrnil podatke v enakem vrstnem redu, kot so bili poslani v zahtevi.

Primer zahteve za poizvedbo z več zneski sha256

{ "request":  [  

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

Odgovor na poizvedbo z več zneski 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."
        }
      }
    }
  ]
}

Zahtevanje več zgoščenih vsot hkrati v zahtevi poizvedbe bo prav tako ugodno vplivalo na delovanje strežnika API.

Prenesite API klic

Uporabljena metoda − POST (po dokumentaciji), GET tudi deluje (in morda se zdi bolj logično)

Klicni naslov - https:///tecloud/api/v1/file/download?id=

Glava zahteva posredovanje ključa API, telo zahteve je prazno, ID prenosa je posredovan v naslovu URL.

Če je emulacija končana in so bila ob prenosu datoteke zahtevana poročila, bo kot odgovor na zahtevo poizvedbe viden ID za prenos poročil. Če se zahteva očiščena kopija, morate poiskati ID za prenos očiščenega dokumenta.

Skupaj so lahko ključi v odgovoru na poizvedbo, ki vsebuje vrednost id za nalaganje:

  • povzetek_poročila

  • celotno_poročilo

  • pdf_poročilo

  • xml_report

  • ekstrahirana_datoteka_download_id

Seveda, če želite prejeti te ključe kot odgovor na zahtevo poizvedbe, jih morate navesti v zahtevi (za poročila) ali ne pozabite vložiti zahteve s funkcijo ekstrakcije (za očiščene dokumente).

Klic API-ja kvote

Uporabljena metoda − POST

Klicni naslov - https:///tecloud/api/v1/file/quota

Če želite preveriti preostalo kvoto v oblaku, uporabite poizvedbo o kvoti. Telo zahteve je prazno.

Primer odgovora na zahtevo za kvoto

{
  "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 za preprečevanje groženj za varnostni prehod

Ta API je bil razvit pred API-jem za preprečevanje groženj in je namenjen samo lokalnim napravam. Zaenkrat je lahko uporaben samo, če potrebujete API za ekstrakcijo groženj. Za emulacijo groženj je bolje uporabiti običajni API za preprečevanje groženj. Prižgati TP API za SG in konfigurirajte ključ API, iz katerega morate izvesti korake sk113599. Priporočam, da ste pozorni na korak 6b in preverite dostopnost strani https://<IPAddressofSecurityGateway>/UserCheck/TPAPI ker v primeru negativnega rezultata nadaljnja konfiguracija ni smiselna. Vsi klici API-ja bodo poslani na ta url. Vrsta klica (nalaganje/povpraševanje) je regulirana v tipki telesa klica − ime_zahteve. Potrebni so tudi ključi - api_key (zapomniti si ga morate med postopkom konfiguracije) in različica_protokola (trenutno trenutna različica je 1.1). Uradno dokumentacijo za ta API najdete na sk137032. Relativne prednosti vključujejo možnost pošiljanja več datotek hkrati v emulacijo, ko se nalagajo, saj so datoteke poslane kot besedilni niz base64. Za kodiranje/dekodiranje datotek v/iz base64 lahko uporabite spletni pretvornik v Postmanu za namene predstavitve, na primer - https://base64.guru. Za praktične namene bi morali pri pisanju kode uporabiti vgrajene metode kodiranja in dekodiranja.

Zdaj pa si podrobneje oglejmo funkcije te и pridobivanje v tem API-ju.

Za komponento te priložen slovar te_možnosti v zahtevah za nalaganje/poizvedbo in ključi v tej zahtevi popolnoma sovpadajo s ključi te v API za preprečevanje groženj.

Primer zahteve za emulacijo datoteke v Win10 s poročili

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

Za komponento pridobivanje priložen slovar scrub_options. Ta zahteva določa način čiščenja: pretvorite v PDF, počistite aktivno vsebino ali izberite način v skladu s profilom za preprečevanje groženj (ime profila je navedeno). Odlična stvar pri odzivanju na zahtevo API-ja za ekstrakcijo za datoteko je, da v odgovoru na to zahtevo dobite očiščeno kopijo kot šifriran niz base64 (ni vam treba narediti zahteve za poizvedbo in poiskati ID-ja, da prenesete dokument)

Primer zahteve za brisanje datoteke

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

Odgovorite na zahtevo

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

Kljub dejstvu, da je za pridobitev očiščene kopije potrebnih manj zahtev API-ja, se mi zdi ta možnost manj zaželena in priročna kot zahteva za podatke obrazca, ki se uporablja v API za preprečevanje groženj.

Zbirke poštarjev

V programu Postman sem ustvaril zbirke za API za preprečevanje groženj in API za preprečevanje groženj za varnostni prehod, ki predstavljata najpogostejše zahteve API-ja. Da se API in ključ strežnika za ip/url samodejno nadomestita v zahteve in da se količina razpršitve sha256 zapomni po prenosu datoteke, so bile znotraj zbirk ustvarjene tri spremenljivke (najdete jih v nastavitvah zbirke Uredi -> Spremenljivke): te_api (obvezno), api_key (obvezno izpolniti, razen pri uporabi TP API z lokalnimi napravami), sha256 (pustite prazno, ne uporablja se v TP API za SG).

Prenesite zbirko Postman za API za preprečevanje groženj

Prenesite zbirko Postman za API za preprečevanje groženj za varnostni prehod

Primeri uporabe

V skupnosti Preverite Mates predstavljeni so skripti, napisani v Pythonu, ki preverjajo datoteke iz želenega imenika prek TP APIIn TP API za SG. Z interakcijo z API-jem za preprečevanje groženj je vaša zmožnost skeniranja datotek znatno razširjena, saj lahko zdaj skenirate datoteke na več platformah hkrati (preverjanje VirusTotal API, nato pa v peskovniku Check Point) in sprejemajo datoteke ne samo iz omrežnega prometa, temveč jih vzamejo tudi iz vseh omrežnih pogonov in na primer sistemov CRM.

Vir: www.habr.com

Dodaj komentar