Interaksjon med Check Point SandBlast via API

Interaksjon med Check Point SandBlast via API

Denne artikkelen vil være nyttig for de som er kjent med teknologi Check Point ved filemulering (Trusselemulering) og proaktiv filrensing (Trusselutvinning) og ønsker å ta et skritt mot å automatisere disse oppgavene. Check Point har Threat Prevention API, som kjører både i skyen og på lokale enheter, og funksjonelt er det identisk med å sjekke filer i web/smtp/ftp/smb/nfs trafikkstrømmer. Denne artikkelen er delvis forfatterens tolkning av et sett med artikler fra den offisielle dokumentasjonen, men basert på min egen driftserfaring og mine egne eksempler. Også i artikkelen finner du forfatterens Postman-samlinger for arbeid med Threat Prevention API.

Grunnleggende forkortelser

The Threat Prevention API fungerer med tre hovedkomponenter, som kalles opp i APIen gjennom følgende tekstverdier:

av — Anti-Virus-komponent, ansvarlig for signaturanalyse av kjente trusler.

te - Threat Emulation-komponent, ansvarlig for å sjekke filer i sandkassen, og lage en ondsinnet/godartet dom etter emulering.

utdrag - Threat Extraction-komponent, ansvarlig for raskt å konvertere kontordokumenter til en sikker form (der alt potensielt skadelig innhold fjernes), for raskt å kunne levere dem til brukere/systemer.

API-struktur og hovedbegrensninger

Threat Prevention API bruker bare 4 forespørsler - laste opp, spørre, laste ned og kvote. I overskriften for alle fire forespørslene må du sende inn API-nøkkelen ved hjelp av parameteren autorisasjon. Ved første øyekast kan strukturen virke mye enklere enn i Management API, men antall felt i opplastings- og spørringsforespørslene og strukturen til disse forespørslene er ganske komplisert. Disse kan funksjonelt sammenlignes med Threat Prevention-profiler i en gateway/sandbox-sikkerhetspolicy.

For øyeblikket er den eneste versjonen av Threat Prevention API utgitt - 1.0 URL-en for API-kall skal inneholde v1 i delen der du må spesifisere versjonen. I motsetning til Management API, er det nødvendig å angi API-versjonen i URL-en, ellers vil ikke forespørselen bli utført.

Antivirus-komponenten, når den kalles uten andre komponenter (te, utvinning), støtter foreløpig bare spørringsforespørsler med md5-hash-summer. Threat Emulation og Threat Extraction støtter også sha1- og sha256-hash-summer.

Det er veldig viktig å ikke gjøre feil i spørsmål! Forespørselen kan utføres uten feil, men ikke fullstendig. Ser vi litt fremover, la oss se på hva som kan skje når det er feil/tastefeil i spørringer.

Forespørsel med en skrivefeil med ordet reports(reportss)

{ "request":  [  

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

Det vil ikke være feil i svaret, men det vil ikke være informasjon om rapportene i det hele tatt

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

Men for en forespørsel uten skrivefeil i rapporttasten

{ "request":  [  

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

Vi mottar et svar som allerede inneholder id for nedlasting av rapporter

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

Hvis vi sender en feil/utløpt API-nøkkel, vil vi motta en 403-feil som svar.

SandBlast API: i skyen og på lokale enheter

API-forespørsler kan sendes til Check Point-enheter som har Threat Emulation-komponenten (bladet) aktivert. Som adresse for forespørsler må du bruke ip/url til enheten og port 18194 (for eksempel https://10.10.57.19:18194/tecloud/api/v1/fil/query). Du bør også sørge for at sikkerhetspolicyen på enheten tillater denne tilkoblingen. Autorisasjon via API-nøkkel på lokale enheter som standard av og autorisasjonsnøkkelen i forespørselshodene sendes kanskje ikke i det hele tatt.

API-forespørsler til CheckPoint-skyen skal sendes til te.checkpoint.com (for eksempel - https://te.checkpoint.com/tecloud/api/v1/file/query). API-nøkkelen kan fås som en prøvelisens i 60 dager ved å kontakte Check Point-partnere eller selskapets lokale kontor.

På lokale enheter støttes ikke Threat Extraction som standard ennå. Threat Prevention API og bør brukes Threat Prevention API for Security Gateway (vi vil snakke om det mer detaljert på slutten av artikkelen).

Lokale enheter støtter ikke kvoteforespørselen.

Ellers er det ingen forskjeller mellom forespørsler til lokale enheter og til skyen.

Last opp API-anrop

Metode brukt − POST

Anropsadresse - https:///tecloud/api/v1/file/opplasting

Forespørselen består av to deler (skjema-data): en fil beregnet på emulering/rensing og en forespørselstekst med tekst.

Tekstforespørselen kan ikke være tom, men den kan ikke inneholde noen konfigurasjon. For at forespørselen skal bli vellykket, må du sende minst følgende tekst i forespørselen:

Minimum nødvendig for en opplastingsforespørsel

HTTP POST

https:///tecloud/api/v1/file/opplasting

overskrifter:

Autorisasjon:

Body

{

"be om": {

}

}

filet

filet

I dette tilfellet vil filen bli behandlet i samsvar med standardparametrene: komponent - te, OS-bilder - Vinn XP og Win 7uten å generere en rapport.

Kommentarer til hovedfeltene i tekstforespørselen:

filnavn и filtype Du kan la dem stå tomme eller ikke sende dem i det hele tatt, siden dette ikke er spesielt nyttig informasjon når du laster opp en fil. I API-svaret vil disse feltene fylles ut automatisk basert på navnet på den nedlastede filen, og informasjonen i cachen vil fortsatt måtte søkes ved hjelp av md5/sha1/sha256 hash-mengder.

Eksempelforespørsel med tomt filnavn og filtype

{

"request": {

"file_name": "",

"file_type": "",

}

}

egenskaper — en liste som indikerer nødvendig funksjonalitet ved behandling i sandkassen - av (Anti-Virus), te (trusselemulering), utvinning (trusselsutvinning). Hvis denne parameteren ikke passeres i det hele tatt, vil bare standardkomponenten bli brukt - te (trusselsemulering).

For å aktivere innsjekking av de tre tilgjengelige komponentene, må du spesifisere disse komponentene i API-forespørselen.

Eksempel på forespørsel med innsjekk av, te og uttrekk

{ "request":  [  

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

Taster i te-delen

bilder — en liste som inneholder ordbøker med id og revisjonsnummer for operativsystemene der kontrollen skal utføres. IDer og revisjonsnumre er de samme for alle lokale enheter og skyen.

Liste over operativsystemer og revisjoner

Tilgjengelig OS Image ID

Revisjon

Bilde OS og applikasjon

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 og ActiveX 10.0
Java kjøretid: 1.6.0u22

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

1

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

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

1

Microsoft Windows: 7 - 32 bit
Office: 2010
Adobe Acrobat Reader: 9.4
Flash Player: 11.0.1.152 (Plugin & ActiveX)
Java kjøretid: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 bit
Office: 2013
Adobe Acrobat Reader: 11.0
Flash Player: 15 (Plugin & ActiveX)
Java kjøretid: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

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

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

 

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

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Office: Professional Plus 2016 no  
Adobe Acrobat Reader: DC 2015 MUI
Flash Player: 20 (Plugin & ActiveX)
Java kjøretid: 1.7.0u9

Hvis bildenøkkelen ikke er spesifisert i det hele tatt, vil emulering finne sted i bilder anbefalt av Check Point (for øyeblikket Win XP og Win 7). Disse bildene anbefales basert på betraktninger om den beste balansen mellom ytelse og fangsthastighet.

rapporter — en liste over rapporter som vi ber om i tilfelle filen viser seg å være skadelig. Følgende alternativer er tilgjengelige:

  1. sammendrag - .tar.gz-arkiv som inneholder en rapport om emulering av alle forespurte bilder (både en HTML-side og komponenter som en video fra emulator-operativsystemet, en nettverkstrafikkdump, en rapport i json og selve prøven i et passordbeskyttet arkiv). Vi leter etter nøkkelen i svaret - sammendrags rapport for senere nedlasting av rapporten.

  2. pdf - dokument om emulering i en bilde, som mange er vant til å motta gjennom Smart Console. Vi leter etter nøkkelen i svaret - pdf_rapport for senere nedlasting av rapporten.

  3. xml - dokument om emulering i en bilde, praktisk for påfølgende parsing av parametere i rapporten. Vi leter etter nøkkelen i svaret - xml_report for senere nedlasting av rapporten.

  4. tjære - .tar.gz-arkiv som inneholder en rapport om emulering i en forespurte bilder (både en HTML-side og komponenter som en video fra emulator-operativsystemet, en nettverkstrafikkdump, en rapport i json og selve prøven i et passordbeskyttet arkiv). Vi leter etter nøkkelen i svaret - full_rapport for senere nedlasting av rapporten.

Hva er inne i sammendragsrapportenInteraksjon med Check Point SandBlast via API

Nøklene full_report, pdf_report, xml_report er i ordboken for hvert operativsystem

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

Men summary_report-nøkkelen - det er en for emulering generelt

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

Du kan be om tar- og xml- og pdf-rapporter samtidig, du kan be om sammendrag og tar og xml. Det vil ikke være mulig å be om en sammendragsrapport og en pdf samtidig.

Taster i ekstraksjonsdelen

For trusselutvinning brukes bare to nøkler:

metode — pdf (konverter til pdf, brukt som standard) eller clean (renser aktivt innhold).

utpakkede_deler_koder - liste over koder for fjerning av aktivt innhold, gjelder kun for den rene metoden

Koder for å fjerne innhold fra filer

Kode

Beskrivelse

1025

Koblede objekter

1026

Makroer og kode

1034

Sensitive hyperkoblinger

1137

PDF GoToR-handlinger

1139

PDF-lanseringshandlinger

1141

PDF URI-handlinger

1142

PDF-lydhandlinger

1143

PDF-filmhandlinger

1150

PDF JavaScript-handlinger

1151

PDF Send inn skjemahandlinger

1018

Databasespørsmål

1019

Innebygde objekter

1021

Rask lagring av data

1017

Egendefinerte egenskaper

1036

Statistiske egenskaper

1037

Sammendragsegenskaper

For å laste ned en renset kopi, må du også lage en spørringsforespørsel (som vil bli diskutert nedenfor) etter noen sekunder, og spesifisere hash-mengden til filen og uttrekkskomponenten i forespørselsteksten. Du kan hente den rensede filen ved å bruke ID-en fra svaret på spørringen - extracted_file_download_id. Nok en gang, når jeg ser litt fremover, gir jeg eksempler på en forespørsel og et spørringssvar for å søke etter en id for nedlasting av et godkjent dokument.

Spørreforespørsel om å søke etter nøkkelen extracted_file_download_id

{ "request":  [  

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

Svar på forespørsel (se etter nøkkel for 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."
                }
            }
        }
    ]
}

Oversikt

I ett API-kall kan du bare sende én fil for verifisering.

Av-komponenten krever ikke en ekstra seksjon med nøkler, det er nok å spesifisere det i ordboken egenskaper.

Spør API-kall

Metode brukt − POST

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

Før du sender en fil for nedlasting (opplastingsforespørsel), er det tilrådelig å sjekke sandbox-cachen (query request) for å optimalisere belastningen på API-serveren, siden API-serveren allerede kan ha informasjon og en dom på den nedlastede filen. Samtalen består kun av en tekstdel. Den nødvendige delen av forespørselen er sha1/sha256/md5 hash-mengde av filen. Du kan forresten få det i svaret på opplastingsforespørselen.

Minimum nødvendig for spørring

HTTP POST

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

overskrifter:

Autorisasjon:

Body

{

"be om": {

"sha256":

}

}

Et eksempel på et svar på en opplastingsforespørsel, der sha1/md5/sha256 hash-beløp er synlige

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

Spørringsforespørselen, i tillegg til hash-beløpet, bør ideelt sett være den samme som opplastingsforespørselen var (eller er planlagt å være), eller til og med "allerede" (inneholde færre felt i spørringsforespørselen enn i opplastingsforespørselen). I tilfellet der spørringsforespørselen inneholder flere felt enn det var i opplastingsforespørselen, vil du ikke motta all nødvendig informasjon i svaret.

Her er et eksempel på et svar på en spørring der ikke alle nødvendige data ble funnet

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

Vær oppmerksom på feltene kode и etikett. Disse feltene vises tre ganger i statusordbøker. Først ser vi den globale nøkkelen "code": 1006 og "label": "PARTIALLY_FOUND". Deretter blir disse nøklene funnet for hver enkelt komponent som vi har bedt om - te og utvinning. Og hvis det for deg er klart at dataene er funnet, så er det ingen informasjon for utvinning.

Slik så spørringen ut for eksempelet ovenfor

{ "request":  [  

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

Hvis du sender en spørringsforespørsel uten utvinningskomponenten

{ "request":  [  

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

Da vil svaret inneholde fullstendig informasjon ("kode": 1001, "etikett": "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."
        }
      }
    }
  ]
}

Hvis det ikke er noen informasjon i hurtigbufferen i det hele tatt, vil svaret være "label": "NOT_FOUND"

{
  "response": [
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd91",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}

I ett API-kall kan du sende flere hashbeløp samtidig for verifisering. Svaret vil returnere data i samme rekkefølge som det ble sendt i forespørselen.

Eksempel på spørringsforespørsel med flere sha256-beløp

{ "request":  [  

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

Svar på en forespørsel med flere sha256-beløp

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

Å be om flere hash-summer på en gang i en spørringsforespørsel vil også ha en gunstig effekt på ytelsen til API-serveren.

Last ned API-anrop

Metode brukt − POST (ifølge dokumentasjon), GET fungerer også (og kan virke mer logisk)

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

Overskriften krever at API-nøkkelen sendes, brødteksten i forespørselen er tom, nedlastings-IDen sendes i url-adressen.

Som svar på en spørringsforespørsel, hvis emuleringen er fullført og rapporter ble bedt om ved nedlasting av filen, vil ID-en for nedlasting av rapporter være synlig. Hvis en renset kopi blir bedt om, bør du se etter ID-en for å laste ned det rensede dokumentet.

Totalt kan nøklene i svaret på spørringen som inneholder id-verdien for lasting være:

  • sammendrags rapport

  • full_rapport

  • pdf_rapport

  • xml_report

  • extracted_file_download_id

Selvfølgelig, for å motta disse nøklene som svar på spørringsforespørselen, må de spesifiseres i forespørselen (for rapporter) eller huske å gjøre en forespørsel ved å bruke uttrekksfunksjonen (for rensede dokumenter)

Quota API-kall

Metode brukt − POST

Anropsadresse - https:///tecloud/api/v1/file/kvote

For å sjekke den gjenværende kvoten i skyen, bruk kvotespørringen. Forespørselsteksten er tom.

Eksempel på svar på en kvoteforespørsel

{
  "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 for Security Gateway

Denne API-en ble utviklet før Threat Prevention API og er kun beregnet på lokale enheter. Foreløpig kan det bare være nyttig hvis du trenger Threat Extraction API. For Threat Emulation er det bedre å bruke den vanlige Threat Prevention API. Å skru på TP API for SG og konfigurer API-nøkkelen du trenger for å følge trinnene fra sk113599. Jeg anbefaler å ta hensyn til trinn 6b og sjekke tilgjengeligheten til siden https://<IPAddressofSecurityGateway>/UserCheck/TPAPI fordi i tilfelle et negativt resultat, gir ytterligere konfigurasjon ikke mening. Alle API-kall sendes til denne nettadressen. Anropstypen (opplasting/spørring) reguleres i hovedtasten − request_name. Også nødvendige nøkler er - api_key (du må huske det under konfigurasjonsprosessen) og protocol_version (den nåværende versjonen er 1.1). Du finner den offisielle dokumentasjonen for denne APIen på sk137032. Relative fordeler inkluderer muligheten til å sende flere filer samtidig for emulering når du laster dem, siden filene sendes som en base64-tekststreng. For å kode/dekode filer til/fra base64 kan du bruke en online omformer i Postman for demonstrasjonsformål, for eksempel - https://base64.guru. For praktiske formål bør du bruke de innebygde kode- og dekodemetodene når du skriver kode.

La oss nå se nærmere på funksjonene te и utdrag i denne APIen.

For komponent te ordbok levert te_alternativer i opplastings-/spørringsforespørsler, og nøklene i denne forespørselen faller fullstendig sammen med te-tastene inn Threat Prevention API.

Eksempelforespørsel om filemulering i Win10 med rapporter

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

For komponent utdrag ordbok levert skrubbe_alternativer. Denne forespørselen spesifiserer rengjøringsmetoden: konverter til PDF, slett aktivt innhold, eller velg en modus i samsvar med Threat Prevention-profilen (profilnavnet er angitt). Det fine med å svare på en utvinnings-API-forespørsel for en fil er at du får en renset kopi i svaret på den forespørselen som en base64-kryptert streng (du trenger ikke å lage en spørringsforespørsel og slå opp id-en for å laste ned dokument)

Eksempel på en forespørsel om å slette en fil

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

Svar på forespørsel

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

Til tross for at det kreves færre API-forespørsler for å få en klarert kopi, synes jeg dette alternativet er mindre foretrukket og praktisk enn skjemadataforespørselen som brukes i Threat Prevention API.

Postmann Samlinger

Jeg opprettet samlinger i Postman for både Threat Prevention API og Threat Prevention API for Security Gateway, som representerer de vanligste API-forespørslene. For at serverens ip/url API og nøkkel automatisk skal erstattes med forespørsler, og sha256 hash-beløpet skal huskes etter nedlasting av filen, er det opprettet tre variabler inne i samlingene (du kan finne dem ved å gå til samlingsinnstillingene Rediger -> Variabler): te_api (påkrevd), api_key (kreves å fylles ut, bortsett fra når du bruker TP API med lokale enheter), sha256 (la stå tomt, ikke brukt i TP API for SG).

Last ned Postman-samlingen for Threat Prevention API

Last ned Postman-samlingen for Threat Prevention for Security Gateway API

Eksempler på bruk

I samfunnet Sjekk Mates skript skrevet i Python presenteres som sjekker filer fra ønsket katalog via TP APIOg TP API for SG. Gjennom interaksjon med Threat Prevention API utvides muligheten til å skanne filer betydelig, siden du nå kan skanne filer på flere plattformer samtidig (sjekker inn VirusTotal API, og deretter i Check Point-sandboksen), og motta filer ikke bare fra nettverkstrafikk, men også ta dem fra alle nettverksstasjoner og for eksempel CRM-systemer.

Kilde: www.habr.com

Legg til en kommentar