Interaksjon med Check Point SandBlast via API

Interaksjon med Check Point SandBlast via API

Denne artikkelen vil være nyttig for dem som er kjent med teknologiene Check Point for fil-emulering (Trussel-emulering) og proaktiv filrensing (Trussel-ekstraksjon) og ønsker å ta et skritt mot automatisering av disse oppgavene. Check Point har Threat Prevention API, som fungerer både i skyen og på lokale enheter, og funksjonelt er det identisk med filkontroll i web/smtp/ftp/smb/nfs trafikkstrømmer. Denne artikkelen er delvis en personlig tolkning av et sett med artikler fra den offisielle dokumentasjonen, men bygget på egen erfaring og egne eksempler. I tillegg finner du forfatterens Postman-samlinger for arbeid med Threat Prevention API.

Hovedforkortelser

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

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

te — Threat Emulation komponent, ansvarlig for filkontroll i en sandkasse, og felling av dommen ondsinnet (malicious)/ren (benign) etter emulering.

extraction — Threat Extraction komponent, ansvarlig for rask konvertering av kontor dokumenter til en sikker versjon (hvor alt potensielt skadelig innhold fjernes), for rask levering til brukere/systemer.

API-struktur og hovedbegrensninger

Threat Prevention API bruker kun 4 forespørselen — upload, query, download og quota. I overskriften for alle fire forespørslene må API-nøkkelen sendes med, ved å bruke parameteren Authorization. Ved første øyekast kan strukturen virke mye enklere enn i Management API, men antallet felt i forespørslene upload og query og strukturen til disse forespørslene er ganske komplekse. De kan funksjonelt sammenlignes med Threat Prevention-profiler i sikkerhetspolitikken til gateway/sandkasse.

Per nå er det utgitt én versjon av Threat Prevention API — 1.0, i URL for API-forespørslene må det angis v1 i den delen der versjonen må spesifiseres. I motsetning til Management API, er det obligatorisk å spesifisere API-versjonen i URL-adressen, ellers vil forespørselen ikke bli utført.

Anti-Virus komponenten, når den kalles uten andre komponenter (te, extraction), støtter for øyeblikket kun query-forespørslene med md5 hash-summer. Threat Emulation og Threat Extraction støtter også sha1 og sha256 hash-summer.

Det er meget viktig å unngå feil i forespørslene! Forespørselen kan bli utført uten feil, men ikke fullstendig. La oss se litt fremover og vurdere hva som kan skje ved feil eller skrivefeil i forespørslene.

Forespørsel med skrivefeil i ordet reports (reportss)

{ "request":  [  

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

I svaret vil det ikke være noen feil, men informasjon om rapportene vil rett og slett være fraværende.

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "Forespørselen har blitt fullstendig besvart."
      },
      "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": "Forespørselen har blitt fullstendig besvart."
        }
      }
    }
  ]
}

Her er forespørselen uten skrivefeil i nøkkelen reports.

{ "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-er for nedlastning av rapporter.

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "Forespørselen har blitt fullstendig besvart."
      },
      "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": "Forespørselen har blitt fullstendig besvart."
        }
      }
    }
  ]
}

Hvis vi derimot sender en ugyldig eller utløpt API-nøkkel, vil vi få feil 403 som svar.

SandBlast API: i skyen og på lokale enheter.

API-forespørslene kan sendes til Check Point-enheter der komponenten (blade) Threat Emulation er aktivert. Som adresse for forespørslene må man bruke ip/url til enheten og port 18194 (for eksempel — https://10.10.57.19:18194/tecloud/api/v1/file/query). Также следует убедиться в том, что политикой безопасности на устройстве разрешено такое подключение. Авторизация через API ключ на локальных устройствах по умолчанию deaktivert Og Authorization-nøkkelen i forespørselshodene trenger ikke å sendes.

API-forespørslene til CheckPoint-skyen må sendes til adressen te.checkpoint.com (for eksempel — https://te.checkpoint.com/tecloud/api/v1/file/query). API ключ можно получить в виде триальной лицензии на 60 дней, обратившись к партнерам Check Point или в локальный офис компании.

På lokale enheter støttes ikke Threat Extraction ennå som standard Threat Prevention API og det anbefales å bruke Threat Prevention API for Security Gateway (som vi vil gå nærmere inn på mot slutten av artikkelen).

Lokale enheter støtter ikke quota-forespørselen.

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

Opplastings-APIet

Metoden som benyttes er — POST

Adressen for anropet er — https://<service_address>/tecloud/api/v1/file/upload

Forespørselen består av to deler (form-data): en fil til emulering/rensing og forespørselens kropp med teksten.

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

Minimum som kreves for opplastingsforespørselen

HTTP POST

https://<service_address>/tecloud/api/v1/file/upload

Headers:

Authorization: <api_key>

Body

{

"request": {

}

}

Fil

Fil

I så fall vil filen bli behandlet i henhold til standardparametrene: komponent — te, operativsystembilder — Win XP og Win 7, uten generering av rapport.

Kommentarer til de viktigste feltene i tekstforespørselen:

file_name og file_type kan være tomme eller ikke sendes i det hele tatt, da dette ikke er spesielt nyttig informasjon ved opplasting av filen. I API-svaret vil disse feltene bli fylt automatisk basert på navnet på den opplastede filen, og informasjon i cachen må fortsatt søkes etter md5/sha1/sha256 hash-verdier.

Eksempel på forespørsel med tomme file_name og file_type

{

"request": {

"file_name": "",

"file_type": "",

}

}

features — en liste som spesifiserer nødvendig funksjonalitet under behandling i sandkassen — av (Anti-Virus), te (Threat Emulation), extraction (Threat Extraction). Hvis dette parameteret ikke sendes, vil bare standardkomponenten — te (Threat Emulation) være aktiv.

For å aktivere sjekk i de tre tilgjengelige komponentene må disse komponentene spesifiseres i API-forespørselen.

Eksempel på forespørsel med sjekk i av, te og extraction

{ "request": [  

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

Nøkler i te-delen

images — en liste hvor ordbøker med ID og versjonsnummer av operativsystemer som sjekken skal utføres på, må angis. ID-ene og versjonsnumrene er de samme for alle lokale enheter og skyen.

Liste over operativsystemer og versjoner

Tilgjengelig OS-bilde-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 Runtime: 1.6.0u22

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

1

Microsoft Windows: 7 — 32bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player: 10.2r152 (Plugin& ActiveX)
Java Runtime: 1.6.0u0

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

1

Microsoft Windows: 7 — 32bit
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 — 32bit
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 — 64bit
Office: 2013 (32bit)
Adobe Acrobat Reader: 11.0.01
Flash Player: 13 (Plugin & ActiveX)
Java Runtime: 1.7.0u9

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

 

1 

Microsoft Windows: 8.1 — 64bit
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

Hvis nøkkelen images ikke er spesifisert, skjer emuleringen med bildene anbefalt av Check Point (for øyeblikket er dette Win XP og Win 7). Disse bildene er anbefalt ut fra hensyn til best mulig balanse mellom ytelse og fangstrate.

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

  1. summary — .tar.gz arkiv som inneholder emuleringsrapporten for alle de forespurte bildene (både som html-side og komponenter som video fra emulatorens OS, nettverkstrafikkdump, rapport i json, samt selve eksemplet i et passordbeskyttet arkiv). I svaret ser vi etter nøkkelen — summary_report for senere nedlasting av rapporten.

  2. pdf — emuleringsdokumentet i et bilde, som mange er vant til å motta via Smart Console. I svaret ser vi etter nøkkelen — pdf_report for senere nedlasting av rapporten.

  3. xml — emuleringsdokumentet i et bilde, praktisk for senere parsing av parametere i rapporten. I svaret ser vi etter nøkkelen — xml_report for senere nedlasting av rapporten.

  4. curl — .tar.gz arkiv som inneholder emuleringsrapporten i et de forespurte bildene (både som html-side og komponenter som video fra emulatorens OS, nettverkstrafikkdump, rapport i json, samt selve eksemplet i et passordbeskyttet arkiv). I svaret ser vi etter nøkkelen — full_report for senere nedlasting av rapporten.

Hva som er inni rapporten summaryInteraksjon med Check Point SandBlast via API

Nøklene full_report, pdf_report, xml_report finnes i ordboken for hvert 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."
        }
      }
    }
  ]
}

Og nøkkelen summary_report — er en for emuleringen som helhet

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "Forespørselen har blitt fullt besvart."
      },
      "sha256": "d57eadb7b2f91eea66ea77a9e098d049c4ecebd5a4c70fb984688df08d1fa833",
      "file_type": "exe",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "ondskapsfull",
              "full_report": "c9a1767b-741e-49da-996f-7d632296cf9f",
              "xml_report": "cc4dbea9-518c-4e59-b6a3-4ea463ca384b"
            },
            "status": "funnet",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "ondskapsfull",
              "full_report": "ba520713-8c0b-4672-a12f-0b4a1575b913",
              "xml_report": "87bdb8ca-dc44-449d-a9ab-2d95e7fe2503"
            },
            "status": "funnet",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "ondskapsfull",
        "severity": 4,
        "confidence": 3,
        "summary_report": "7e7db12d-5df6-4e14-85f3-2c1e29cd3e34",
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "Forespørselen har blitt fullt besvart."
        }
      }
    }
  ]
}

Du kan be om både tar- og xml- og pdf-rapporter samtidig, du kan kombinere summary med tar og xml. Det er ikke mulig å be om summary-rapporten og pdf samtidig.

Nøklene i delen ekstraksjon

Det brukes bare to nøkler for trussel-evaluering:

method — pdf (konvertering til pdf, brukes som standard) eller clean (rensning av aktivt innhold).

extracted_parts_codes — liste over koder for å fjerne aktivt innhold, gjelder kun for metoden clean

Koder for fjerning av innhold fra filer

Kode

Beskrivelse

1025

Koblede objekter

1026

Makroer og kode

1034

Sensitive hyperkoblinger

1137

PDF GoToR-handlinger

1139

PDF Launch-handlinger

1141

PDF URI-handlinger

1142

PDF Lyd-handlinger

1143

PDF Film-handlinger

1150

PDF JavaScript-handlinger

1151

PDF Send inn skjema-handlinger

1018

Databaseforespørsler

1019

Innebygde objekter

1021

Rask lagring av data

1017

Egendefinerte egenskaper

1036

Statistiske egenskaper

1037

Sammendragsegenkaper

For å laste ned en renset kopi, må du gjøre en forespørsel (som vil bli omtalt senere) etter noen sekunder, og oppgi hash-verdien for filen og komponenten ekstraksjon i forespørselen. Du kan hente den rensede filen med id fra svaret på forespørselen — extracted_file_download_id. Igjen, for å gi et lite forsprang, viser jeg eksempler på forespørsel og svar for å søke etter id for å laste ned det rensede dokumentet.

Forespørsel for å søke etter nøkkelen extracted_file_download_id

{ "request":  [  

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

Svar på forespørselen (finn nøkkelen extracted_file_download_id)

{
    "response": [
        {
            "status": {
                "code": 1001,
                "label": "FOUND",
                "message": "Forespørselen har blitt besvart fullt ut."
            },
            "sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
            "file_type": "",
            "file_name": "",
            "features": [
                "utvinning"
            ],
            "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": "Makroer og kode",
                "extraction_data": {
                    "input_extension": "xls",
                    "input_real_extension": "xls",
                    "message": "OK",
                    "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                    "protection_name": "Potensielt ondsinnet innhold utvunnet",
                    "protection_type": "Konvertering til PDF",
                    "protocol_version": "1.0",
                    "risk": 5.0,
                    "scrub_activity": "Aktivt innhold ble funnet - XLS fil ble konvertert til PDF",
                    "scrub_method": "Konverter til PDF",
                    "scrub_result": 0.0,
                    "scrub_time": "0.013",
                    "scrubbed_content": "Makroer og kode"
                },
                "tex_product": false,
                "status": {
                    "code": 1001,
                    "label": "FOUND",
                    "message": "Forespørselen har blitt besvart fullt ut."
                }
            }
        }
    ]
}

Generell informasjon

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

Komponenten av krever ikke et eget avsnitt med nøkler; det er tilstrekkelig å angi det i ordboken. features.

Kall Query API

Metoden som benyttes er — POST

Adressen for anropet er — https://<service_address>/tecloud/api/v1/file/query

Før du sender en fil for opplasting (forespørsel upload), er det ønskelig å utføre en sjekk av sandkassecache (forespørsel query) for å optimalisere belastningen på API-serveren, ettersom det er mulig at det allerede finnes informasjon og en dom om den opplastede filen på API-serveren. Kallet består kun av tekstdelen. Den obligatoriske delen av forespørselen er sha1/sha256/md5 hashsummen av filen. Denne kan for øvrig hentes i svaret på forespørselen upload.

Nødvendig minimum for forespørselen query

HTTP POST

https://<service_address>/tecloud/api/v1/file/query

Headers:

Authorization: <api_key>

Body

{

"request": {

«sha256»: <sha256 hash sum>

}

}

Eksempel på svaret på forespørselen upload, hvor sha1/md5/sha256 hash-summer er synlige

{
  "response": {
    "status": {
      "code": 1002,
      "label": "UPLOAD_SUCCESS",
      "message": "Filen ble lastet opp vellykket."
    },
    "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": "Filen ble lastet opp vellykket."
      }
    }
  }
}

Forespørselen query bør ideelt sett være den samme som forespørselen upload (eller planlegges å bli), eller til og med «allerede» (inneholde færre felt i forespørselen query enn i forespørselen upload). Hvis forespørselen query inneholder flere felt enn det som var i forespørselen upload, vil du ikke få all nødvendig informasjon i svaret.

Her er et eksempel på svaret på forespørselen query, der ikke alle nødvendige data ble funnet.

{
  "response": [
    {
      "status": {
        "code": 1006,
        "label": "PARTIALLY_FOUND",
        "message": "Forespørselen kan ikke besvares fullt ut nå."
      },
      "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
      "file_type": "doc",
      "file_name": "",
      "features": [
        "te",
        "extraction"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "ondskapelig",
              "pdf_report": "4e9cddaf-03a4-489f-aa03-3c18f8d57a52",
              "xml_report": "9c18018f-c761-4dea-9372-6a12fcb15170"
            },
            "status": "funnet",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "ondskapelig",
        "severity": 4,
        "confidence": 1,
        "status": {
          "code": 1001,
          "label": "FUNNET",
          "message": "Forespørselen har blitt besvart fullt ut."
        }
      },
      "extraction": {
        "method": "pdf",
        "tex_product": false,
        "status": {
          "code": 1004,
          "label": "IKKE_FUNNET",
          "message": "Kunne ikke finne den forespurte filen. Vennligst last opp den."
        }
      }
    }
  ]
}

Vær oppmerksom på feltene kode og label. Disse feltene forekommer tre ganger i status-ordbøkene. Først ser vi den globale nøkkelen «code»: 1006 og «label»: «PARTIALLY_FOUND». Deretter forekommer disse nøklene for hver enkelt komponent vi ba om — te og extraction. Og hvis det er klart for te at dataene ble funnet, så mangler informasjon for extraction.

Slik så forespørselen query 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 forespørselen query uten komponenten extraction

{ "request":  [  

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

Da vil svaret inneholde full informasjon («code»: 1001, «label»: «FUNNET»)

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "Forespørselen har blitt besvart fullt ut."
      },
      "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": "Forespørselen har blitt besvart fullt ut."
        }
      }
    }
  ]
}

Hvis det ikke finnes informasjon i cachen, vil responsen være "label": "NOT_FOUND"

{
  "response": [
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Kunne ikke finne den forespurte filen. Vennligst last den opp."
      },
      "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": "Kunne ikke finne den forespurte filen. Vennligst last den opp."
        }
      }
    }
  ]
}

I én API-forespørsel kan du sende flere hash-summer for sjekk. Responsen vil returnere dataene i samme rekkefølge som de ble sendt i forespørselen.

Eksempel på en forespørsel med flere sha256-summer

{ "request":  [  

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

Responsen på forespørselen med flere sha256-summer

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "Forespørselen har blitt fullstendig besvart."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81",
      "file_type": "dll",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "ondartet"
            },
            "status": "funnet",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "ondartet",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "Forespørselen har blitt fullstendig besvart."
        }
      }
    },
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Kunne ikke finne den forespurte filen. Vennligst last opp den."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "ukjent"
            },
            "status": "ikke_funnet",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Kunne ikke finne den forespurte filen. Vennligst last opp den."
        }
      }
    }
  ]
}

Å sende forespørsel om flere hash-summer i én forespørsel vil også ha en gunstig effekt på ytelsen til API-serveren.

Kall Download API

Metoden som benyttes er — POST (ifølge dokumentasjonen), GET og fungerer også (og kan virke mer logisk)

Adressen for anropet er — https://<service_address>/tecloud/api/v1/file/download?id=<id>

I overskriften må API-nøkkelen sendes, og forespørselens kropp må være tom, id for nedlasting sendes i URL-adressen.

Som svar på forespørselen query, hvis emuleringen er fullført og rapportene ble forespurt under filopplasting, vil id-ene for nedlasting av rapportene vises. Hvis det etterspørres en renset kopi, må man lete etter id-en for nedlasting av det rensede dokumentet.

Alt i alt kan nøklene i svaret på forespørselen query som inneholder verdien av id for nedlasting være:

  • summary_report

  • full_report

  • pdf_report

  • xml_report

  • extracted_file_download_id

Selvfølgelig, for at disse nøklene skal være i svaret på forespørselen query, må de spesifiseres i forespørselen (for rapporter) eller man må huske å gjøre forespørselen til funksjonen extraction (for rensede dokumenter)

Kall Quota API

Metoden som benyttes er — POST

Adressen for anropet er — https://<service_address>/tecloud/api/v1/file/quota

For å sjekke gjenværende kvote i skyen brukes forespørselen quota. Kroppen til forespørselen er tom.

Eksempel på svar på forespørselen quota

{
  "response": [
    {
      "remain_quota_hour": 1250,
      "remain_quota_month": 10000000,
      "assigned_quota_hour": 1250,
      "assigned_quota_month": 10000000,
      "hourly_quota_next_reset": "1599141600",
      "monthly_quota_next_reset": "1601510400",
      "quota_id": "TEST",
      "cloud_monthly_quota_period_start": "1421712300",
      "cloud_monthly_quota_usage_for_this_gw": 0,
      "cloud_hourly_quota_usage_for_this_gw": 0,
      "cloud_monthly_quota_usage_for_quota_id": 0,
      "cloud_hourly_quota_usage_for_quota_id": 0,
      "monthly_exceeded_quota": 0,
      "hourly_exceeded_quota": 0,
      "cloud_quota_max_allow_to_exceed_percentage": 1000,
      "pod_time_gmt": "1599138715",
      "quota_expiration": "0",
      "action": "ALLOW"
    }
  ]
}

Threat Prevention API for Security Gateway

Dette API ble utviklet før Threat Prevention API og er utelukkende ment for lokale enheter. For øyeblikket kan det være nyttig bare i tilfeller der du trenger Threat Extraction API. For Threat Emulation er det best å bruke det vanlige Threat Prevention API. For å aktivere TP API for SG og konfigurere API-nøkkelen må følgende trinn utføres fra sk113599. Jeg anbefaler å se nærmere på trinn 6b og kontrollere tilgangen til siden https:///UserCheck/TPAPI da en negativ vurdering vil gjøre videre konfigurasjon meningsløs. Alle API-anrop vil bli sendt til denne URL-en. Anropstypen (upload/query) reguleres av nøkkelen i anropets kropp — request_name. De obligatoriske nøklene er også — api_key (må huskes under konfigurasjonen) og protocol_version (for øyeblikket er den aktuelle versjonen 1.1). Den offisielle dokumentasjonen for dette API-et finner du i sk137032. Fordelene inkluderer muligheten til å laste opp flere filer samtidig for emulering, da filene sendes som en base64 kodet tekststreng. For å kode/dekode filer til/fra base64 kan du bruke en online konverter i Postman, for eksempel — https://base64.guru. I praksis, når du skriver kode, bør du bruke innebygde metoder for encode og decode.

Nå skal vi gå nærmere inn på funksjonene te og extraction i denne API-en.

For komponenten te er det opprettet et ordbok te_options i forespørslene upload/query, og nøklene i denne forespørselen samsvarer fullt ut med de te-nøklene i Threat Prevention API.

Eksempel på forespørsel for å emulere en fil i Win10 med rapporter

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

For komponenten extraction er det opprettet et ordbok scrub_optionsI denne forespørselen angis rensingmetoden: konvertering til PDF, fjerning av aktivt innhold eller velge modus i henhold til profilen for trusselforebygging (navnet på profilen angis). Et kjennetegn ved svaret på API-forespørselen med ekstraksjon for filen er at du får en renset kopi i svaret på denne forespørselen som en kryptert base64-streng (du trenger ikke å gjøre forespørselen for å søke etter ID for å laste ned dokumentet)

Eksempel på forespørsel om rensing av fil

    {
	"request": [{
		"protocol_version": "1.1",
		"api_key": "",
		"request_name": "UploadFile",
		"file_enc_data": "",
		"file_orig_name": "hi.txt",
		"scrub_options": {
			"scrub_method": 2
		}
	}]
}

Svar på forespørselen

{
	"response": [{
		"protocol_version": "1.1",
		"src_ip": "",
		"scrub": {
			"file_enc_data": "",
			"input_real_extension": "js",
			"message": "OK",
			"orig_file_url": "",
			"output_file_name": "hi.cleaned.pdf",
			"protection_name": "Fjern potensielt ondsinnet innhold",
			"protection_type": "Konvertering til PDF",
			"real_extension": "txt",
			"risk": 0,
			"scrub_activity": "TXT-fil ble konvertert til PDF",
			"scrub_method": "Konverter til PDF",
			"scrub_result": 0,
			"scrub_time": "0.011",
			"scrubbed_content": ""
		}
	}]
} 

Selv om det kreves færre API-forespørsel for å få en renset kopi, vurderer jeg denne metoden som mindre foretrukket og praktisk enn forespørselen med form-data som brukes i Threat Prevention API.

Postman-samlinger

Jeg har opprettet samlinger i Postman for både Threat Prevention API og Threat Prevention API for Security Gateway, hvor de mest vanlige API-forespørslene presenteres. For at ip/url for API-serveren og nøkkelen automatisk skal settes inn i forespørslene, samt at SHA256-hashsummen etter filopplasting også skal huskes, er tre variabler opprettet i samlingene (du kan finne dem ved å gå til innstillingene for samlingen Rediger -> Variabler): te_api (kreves utfylling), api_key (kreves utfylling, med unntak av ved bruk av TP API med lokale enheter), sha256 (la stå tom, brukes ikke 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 fellesskapet Check Mates er det presentert skript skrevet i Python, som sjekker filer fra ønsket katalog både gjennom TP API, så vel som TP API for SG. Gjennom samhandling med Threat Prevention API utvides mulighetene dine for å sjekke filer betydelig, da du nå kan sjekke filer på flere plattformer (det er interessant å sjekke i VirusTotal API, og deretter i Check Point sandkassen), og filer kan hentes ikke bare fra nettverkstrafikken, men også fra alle nettverksstasjoner og for eksempel CRM-systemer.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster