Interakcija s Check Point SandBlast putem API-ja

Interakcija s Check Point SandBlast putem API-ja

Ovaj će članak biti koristan onima koji su upoznati s tehnologijom Check Point emulacijom datoteke (Emulacija prijetnji) i proaktivno čišćenje datoteka (Ekstrakcija prijetnji) i želi napraviti korak prema automatizaciji ovih zadataka. Check Point ima API za sprječavanje prijetnji, koji radi i u oblaku i na lokalnim uređajima, i funkcionalno je identičan provjeri datoteka u web/smtp/ftp/smb/nfs tokovima prometa. Ovaj članak djelomično je autorova interpretacija skupa članaka iz službene dokumentacije, ali temeljen na vlastitom radnom iskustvu i vlastitim primjerima. Također u članku ćete pronaći autorove zbirke Postman za rad s API-jem za sprječavanje prijetnji.

Osnovne kratice

Threat Prevention API radi s tri glavne komponente koje se u API-ju pozivaju putem sljedećih tekstualnih vrijednosti:

av — Antivirusna komponenta, odgovorna za analizu potpisa poznatih prijetnji.

te - Komponenta emulacije prijetnji, odgovorna za provjeru datoteka u sandboxu i donošenje zlonamjerne/benigne presude nakon emulacije.

izvlačenje - Komponenta Threat Extraction, zadužena za brzo pretvaranje uredskih dokumenata u siguran oblik (u kojem se uklanjaju svi potencijalno maliciozni sadržaji), kako bi se brzo isporučili korisnicima/sustavima.

API struktura i glavna ograničenja

Threat Prevention API koristi samo 4 zahtjeva − prijenos, upit, preuzimanje i kvota. U zaglavlju za sva četiri zahtjeva trebate proslijediti API ključ pomoću parametra Autorizacija. Na prvi pogled struktura se može činiti mnogo jednostavnijom nego u API za upravljanje, ali broj polja u zahtjevima za prijenos i upite te struktura tih zahtjeva prilično su složeni. Oni se mogu funkcionalno usporediti s profilima za sprječavanje prijetnji u sigurnosnoj politici pristupnika/sandboxa.

Trenutačno je izdana jedina verzija Threat Prevention API-ja - 1.0; URL za API pozive trebao bi uključivati v1 u dijelu gdje trebate navesti verziju. Za razliku od API-ja za upravljanje, u URL-u je potrebno naznačiti verziju API-ja, inače zahtjev neće biti izvršen.

Antivirusna komponenta, kada se pozove bez drugih komponenti (te, ekstrakcija), trenutno podržava samo zahtjeve za upite s md5 hash zbrojevima. Threat Emulation i Threat Extraction također podržavaju sha1 i sha256 hash zbrojeve.

Vrlo je važno ne pogriješiti u upitima! Zahtjev se može izvršiti bez greške, ali ne u potpunosti. Gledajući malo unaprijed, pogledajmo što se može dogoditi kada u upitima postoje pogreške/tipske pogreške.

Zahtjev s pravopisnom pogreškom s riječju izvješća(izvješća)

{ "request":  [  

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

Neće biti pogreške u odgovoru, ali neće biti nikakvih informacija o izvješćima

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

Ali za zahtjev bez tipfelera u ključu izvješća

{ "request":  [  

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

Primamo odgovor koji već sadrži ID za preuzimanje izvješća

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

Ako pošaljemo netočan/istekao API ključ, kao odgovor ćemo dobiti grešku 403.

SandBlast API: u oblaku i na lokalnim uređajima

API zahtjevi mogu se slati na Check Point uređaje koji imaju uključenu komponentu Threat Emulation (blade). Kao adresu za zahtjeve potrebno je koristiti ip/url uređaja i port 18194 (npr. https://10.10.57.19:18194/tecloud/api/v1/file/upit). Također biste trebali provjeriti dopuštaju li sigurnosna pravila na uređaju ovu vezu. Autorizacija putem API ključa na lokalnim uređajima prema zadanim postavkama isključeno a autorizacijski ključ u zaglavljima zahtjeva možda uopće neće biti poslan.

API zahtjeve za CheckPoint oblak treba slati na te.checkpoint.com (na primjer - https://te.checkpoint.com/tecloud/api/v1/file/upit). API ključ se može dobiti kao probna licenca za 60 dana kontaktiranjem Check Point partnera ili lokalnog ureda tvrtke.

Na lokalnim uređajima izdvajanje prijetnji još nije standardno podržano. API za sprječavanje prijetnji i treba se koristiti API za sprječavanje prijetnji za sigurnosni pristupnik (o tome ćemo detaljnije govoriti na kraju članka).

Lokalni uređaji ne podržavaju zahtjev za kvotom.

Inače, nema razlike između zahtjeva lokalnim uređajima i oblaku.

Upload API poziv

Korištena metoda − POST

Nazovite adresu - https:///tecloud/api/v1/file/upload

Zahtjev se sastoji od dva dijela (forma-data): datoteke namijenjene emulaciji/čišćenju i tijela zahtjeva s tekstom.

Tekstualni zahtjev ne može biti prazan, ali ne smije sadržavati nikakvu konfiguraciju. Da bi zahtjev bio uspješan potrebno je u zahtjevu poslati minimalno sljedeći tekst:

Minimum potreban za zahtjev za učitavanje

HTTP POST

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

zaglavlja:

Autorizacija:

Tijelo

{

"zahtjev": {

}

}

file

file

U ovom slučaju, datoteka će biti obrađena u skladu sa zadanim parametrima: komponenta - te, OS slike - Win XP i Win 7, bez generiranja izvješća.

Komentari na glavna polja u tekstualnom zahtjevu:

naziv datoteke и Vrsta datoteke Možete ih ostaviti prazne ili ih uopće ne slati, budući da to nisu osobito korisne informacije prilikom učitavanja datoteke. U odgovoru API-ja, ova će se polja automatski popuniti na temelju naziva preuzete datoteke, a informacije u predmemoriji i dalje će se morati pretraživati ​​pomoću md5/sha1/sha256 hash iznosa.

Primjer zahtjeva s praznim file_name i file_type

{

"request": {

"file_name": "",

"file_type": "",

}

}

značajke — popis koji označava potrebnu funkcionalnost prilikom obrade u sandboxu - av (Anti-Virus), te (Threat Emulation), ekstrakcija (Threat Extraction). Ako se ovaj parametar uopće ne proslijedi, koristit će se samo zadana komponenta - te (Emulacija prijetnje).

Kako biste omogućili provjeru triju dostupnih komponenti, trebate navesti te komponente u API zahtjevu.

Primjer zahtjeva s provjerom av, te i ekstrakcijom

{ "request":  [  

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

Ključevi u odjeljku te

slika — popis koji sadrži rječnike s ID-om i brojem revizije operativnih sustava u kojima će se izvršiti provjera. ID-ovi i brojevi revizije isti su za sve lokalne uređaje i oblak.

Popis operativnih sustava i revizija

Dostupni ID slike OS-a

Revizija

Slika OS i aplikacija

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

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

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

1

Microsoft Windows: 7 - 32 bita
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 bita
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 bita
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 bita
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 bita
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

Ako ključ slike uopće nije naveden, emulacija će se odvijati u slikama koje preporučuje Check Point (trenutno Win XP i Win 7). Ove se slike preporučuju na temelju razmatranja najbolje ravnoteže performansi i stope ulova.

izvješća — popis izvješća koja tražimo u slučaju da se ispostavi da je datoteka zlonamjerna. Dostupne su sljedeće opcije:

  1. rezime - .tar.gz arhiva koja sadrži izvješće o emulaciji autora svima tražene slike (i html stranica i komponente kao što su video iz OS-a emulatora, ispis mrežnog prometa, izvješće u jsonu i sam uzorak u arhivi zaštićenoj lozinkom). Tražimo ključ u odgovoru - sažeto izvješće za naknadno preuzimanje izvješća.

  2. pdf - dokument o emulaciji u jedan sliku koju su mnogi navikli primati putem Smart konzole. Tražimo ključ u odgovoru - pdf_izvješće za naknadno preuzimanje izvješća.

  3. xML - dokument o emulaciji u jedan slika, pogodna za naknadnu analizu parametara u izvješću. Tražimo ključ u odgovoru - xml_izvješće za naknadno preuzimanje izvješća.

  4. katran - .tar.gz arhiva koja sadrži izvješće o emulaciji u jedan tražene slike (i html stranica i komponente kao što su video iz OS-a emulatora, ispis mrežnog prometa, izvješće u jsonu i sam uzorak u arhivi zaštićenoj lozinkom). Tražimo ključ u odgovoru - puni_izvješće za naknadno preuzimanje izvješća.

Što je unutar sažetog izvješćaInterakcija s Check Point SandBlast putem API-ja

Ključevi full_report, pdf_report, xml_report nalaze se u rječniku za svaki 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."
        }
      }
    }
  ]
}

Ali ključ summary_report - postoji jedan za emulaciju općenito

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

Možete zatražiti tar i xml i pdf izvješća u isto vrijeme, možete zatražiti sažetak i tar i xml. Neće biti moguće zatražiti zbirno izvješće i pdf u isto vrijeme.

Ključevi u odjeljku za ekstrakciju

Za izdvajanje prijetnji koriste se samo dva ključa:

način — pdf (pretvori u pdf, koristi se prema zadanim postavkama) ili očisti (čišćenje aktivnog sadržaja).

ekstrahirani_kodovi_dijelova - popis kodova za uklanjanje aktivnog sadržaja, primjenjiv samo za čistu metodu

Kodovi za uklanjanje sadržaja iz datoteka

Kodirati

Opis

1025

Povezani objekti

1026

Makronaredbe i kod

1034

Osjetljive hiperveze

1137

PDF GoToR radnje

1139

Akcije pokretanja PDF-a

1141

PDF URI radnje

1142

PDF zvučne radnje

1143

Radnje PDF filmova

1150

PDF JavaScript radnje

1151

Radnje obrasca za slanje PDF-a

1018

Upiti u bazu podataka

1019

Ugrađeni objekti

1021

Brzo spremanje podataka

1017

Prilagođena svojstva

1036

Statistička svojstva

1037

Sažetak svojstava

Da biste preuzeli očišćenu kopiju, također ćete morati napraviti zahtjev za upit (o čemu će biti riječi u nastavku) nakon nekoliko sekundi, navodeći iznos hash datoteke i komponentu ekstrakcije u tekstu zahtjeva. Možete pokupiti očišćenu datoteku koristeći ID iz odgovora na upit - extracted_file_download_id. Još jednom, gledajući malo unaprijed, dajem primjere zahtjeva i odgovora na upit za traženje ID-a za preuzimanje odobrenog dokumenta.

Zahtjev upita za traženje ključa extracted_file_download_id

{ "request":  [  

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

Odgovor na upit (potraž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

U jednom API pozivu možete poslati samo jednu datoteku na provjeru.

Komponenta av ne zahtijeva dodatnu sekciju s ključevima, dovoljno ju je navesti u rječniku značajke.

Query API poziv

Korištena metoda − POST

Nazovite adresu - https:///tecloud/api/v1/file/query

Prije slanja datoteke na preuzimanje (zahtjev za upload), preporučljivo je provjeriti predmemoriju sandboxa (zahtjev za upit) kako bi se optimiziralo opterećenje API poslužitelja, budući da API poslužitelj možda već ima informacije i presudu o preuzetoj datoteci. Poziv se sastoji samo od tekstualnog dijela. Obavezni dio zahtjeva je sha1/sha256/md5 hash iznos datoteke. Usput, možete ga dobiti u odgovoru na zahtjev za učitavanje.

Minimum potreban za upit

HTTP POST

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

zaglavlja:

Autorizacija:

Tijelo

{

"zahtjev": {

"sha256":

}

}

Primjer odgovora na zahtjev za prijenos, gdje su vidljivi hash iznosi 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."
      }
    }
  }
}

Zahtjev za upit, uz iznos hashiranja, idealno bi trebao biti isti kao što je zahtjev za učitavanje bio (ili se planira biti), ili čak "već" (sadržati manje polja u zahtjevu za upit nego u zahtjevu za učitavanje). U slučaju da zahtjev za upit sadrži više polja nego što je bilo u zahtjevu za učitavanje, u odgovoru nećete dobiti sve potrebne informacije.

Ovdje je primjer odgovora na upit gdje nisu pronađeni svi potrebni podaci

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

Obratite pozornost na polja kod и oznaka. Ova se polja pojavljuju tri puta u rječnicima statusa. Prvo vidimo globalni ključ "code": 1006 i "label": "PARTIALLY_FOUND". Zatim se ovi ključevi nalaze za svaku pojedinačnu komponentu koju smo tražili - te i ekstrakcija. I ako je za vas jasno da su podaci pronađeni, onda za izvlačenje nema informacija.

Ovako je izgledao upit za gornji primjer

{ "request":  [  

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

Ako pošaljete zahtjev za upit bez komponente ekstrakcije

{ "request":  [  

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

Tada će odgovor sadržavati potpune informacije (“šifra”: 1001, “oznaka”: “PRONAĐENO”)

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

Ako u predmemoriji uopće nema informacija, tada će odgovor biti “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."
        }
      }
    }
  ]
}

U jednom API pozivu možete poslati nekoliko hash iznosa odjednom na provjeru. Odgovor će vratiti podatke istim redoslijedom kojim su poslani u zahtjevu.

Primjer zahtjeva za upit s nekoliko sha256 iznosa

{ "request":  [  

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

Odgovor na upit s više sha256 iznosa

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

Zahtjev za nekoliko hash zbrojeva odjednom u zahtjevu za upit također će imati povoljan učinak na performanse API poslužitelja.

Preuzmite API poziv

Korištena metoda − POST (prema dokumentaciji), GET također radi (i može se činiti logičnijim)

Nazovite adresu - https:///tecloud/api/v1/file/download?id=

Zaglavlje zahtijeva prosljeđivanje API ključa, tijelo zahtjeva je prazno, ID preuzimanja prosljeđuje se u URL adresi.

Kao odgovor na zahtjev za upit, ako je emulacija dovršena i izvješća su zatražena prilikom preuzimanja datoteke, bit će vidljiv ID za preuzimanje izvješća. Ako se traži očišćena kopija, trebali biste potražiti ID za preuzimanje očišćenog dokumenta.

Ukupno, ključevi u odgovoru na upit koji sadrži id vrijednost za učitavanje mogu biti:

  • sažeto izvješće

  • puni_izvješće

  • pdf_izvješće

  • xml_izvješće

  • id_preuzimanja_izvađene_datoteke

Naravno, da biste primili ove ključeve kao odgovor na zahtjev za upit, oni moraju biti navedeni u zahtjevu (za izvješća) ili se sjetite napraviti zahtjev pomoću funkcije izdvajanja (za očišćene dokumente)

Kvota API poziv

Korištena metoda − POST

Nazovite adresu - https:///tecloud/api/v1/file/quota

Kako biste provjerili preostalu kvotu u oblaku, upotrijebite upit o kvoti. Tijelo zahtjeva je prazno.

Primjer odgovora na zahtjev za kvotom

{
  "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 sprječavanje prijetnji za sigurnosni pristupnik

Ovaj API razvijen je prije Threat Prevention API-ja i namijenjen je samo lokalnim uređajima. Za sada može biti korisno samo ako trebate Threat Extraction API. Za emulaciju prijetnji bolje je koristiti regularni API za sprječavanje prijetnji. Upaliti TP API za SG i konfigurirajte API ključ iz kojeg trebate slijediti korake sk113599. Preporučujem da obratite pozornost na korak 6b i provjerite dostupnost stranice https://<IPAddressofSecurityGateway>/UserCheck/TPAPI jer u slučaju negativnog rezultata daljnja konfiguracija nema smisla. Svi API pozivi bit će poslani na ovaj url. Vrsta poziva (upload/query) regulirana je tipkom tijela poziva − ime_zahtjeva. Također su potrebni ključevi - api_ključ (morate ga zapamtiti tijekom procesa konfiguracije) i verzija_protokola (trenutno trenutna verzija je 1.1). Službenu dokumentaciju za ovaj API možete pronaći na sk137032. Relativne prednosti uključuju mogućnost slanja nekoliko datoteka odjednom za emulaciju prilikom njihovog učitavanja, budući da se datoteke šalju kao base64 tekstualni niz. Za kodiranje/dekodiranje datoteka u/iz base64 možete koristiti mrežni pretvarač u Postmanu za demonstracijske svrhe, na primjer - https://base64.guru. U praktične svrhe trebali biste koristiti ugrađene metode kodiranja i dekodiranja prilikom pisanja koda.

Pogledajmo sada pobliže funkcije te и izvlačenje u ovom API-ju.

Za komponentu te rječnik osiguran te_opcije u zahtjevima za prijenos/upit, a ključevi u ovom zahtjevu potpuno se podudaraju s ključevima te API za sprječavanje prijetnji.

Primjer zahtjeva za emulaciju datoteke u Win10 s izvješćima

{
"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 komponentu izvlačenje rječnik osiguran opcije_ribanja. Ovaj zahtjev navodi metodu čišćenja: pretvaranje u PDF, brisanje aktivnog sadržaja ili odabir načina rada u skladu s profilom za sprječavanje prijetnji (naveden je naziv profila). Sjajna stvar kod odgovaranja na zahtjev API-ja za ekstrakciju za datoteku je da dobijete očišćenu kopiju u odgovoru na taj zahtjev kao base64 šifrirani niz (ne morate napraviti zahtjev za upit i tražiti ID da biste preuzeli dokument)

Primjer zahtjeva 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 zahtjev

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

Unatoč činjenici da je potrebno manje API zahtjeva za dobivanje očišćene kopije, smatram da je ova opcija manje poželjna i prikladna od zahtjeva za podatke obrasca koji se koristi u API za sprječavanje prijetnji.

Zbirke poštara

Stvorio sam zbirke u Postmanu za API za sprječavanje prijetnji i API za sprječavanje prijetnji za sigurnosni pristupnik, koji predstavljaju najčešće API zahtjeve. Kako bi se ip/url API i ključ poslužitelja automatski zamijenili u zahtjeve, a sha256 hash iznos bio zapamćen nakon preuzimanja datoteke, unutar kolekcija su stvorene tri varijable (možete ih pronaći ako odete na postavke zbirke Uredi -> Varijable): te_api (obavezno), api_key (obavezno popuniti, osim kada koristite TP API s lokalnim uređajima), sha256 (ostavite prazno, ne koristi se u TP API-ju za SG).

Preuzmite kolekciju Postman za Threat Prevention API

Preuzmite kolekciju Postman za Threat Prevention for Security Gateway API

Primjeri upotrebe

U zajednici Provjerite Mates predstavljene su skripte napisane u Pythonu koje provjeravaju datoteke iz željenog direktorija putem TP APII TP API za SG. Kroz interakciju s Threat Prevention API-jem, vaša mogućnost skeniranja datoteka značajno je proširena, budući da sada možete skenirati datoteke na nekoliko platformi odjednom (provjera u VirusTotal API, a zatim u sandboxu Check Point), i primajte datoteke ne samo iz mrežnog prometa, već ih preuzimajte i sa svih mrežnih pogona i, na primjer, CRM sustava.

Izvor: www.habr.com

Dodajte komentar