Interacțiune cu Check Point SandBlast prin API

Interacțiune cu Check Point SandBlast prin API

Acest articol va fi util celor care sunt familiarizați cu tehnologia Check Point prin emularea fișierului (Emularea amenințărilor) și curățarea proactivă a fișierelor (Extragerea amenințărilor) și dorește să facă un pas către automatizarea acestor sarcini. Check Point are API-ul de prevenire a amenințărilor, care rulează atât în ​​cloud, cât și pe dispozitive locale și din punct de vedere funcțional, este identic cu verificarea fișierelor din fluxurile de trafic web/smtp/ftp/smb/nfs. Acest articol este parțial interpretarea de către autor a unui set de articole din documentația oficială, dar se bazează pe propria mea experiență operațională și pe propriile mele exemple. De asemenea, în articol veți găsi colecțiile Postman ale autorului pentru lucrul cu API-ul Threat Prevention.

Abrevieri de bază

API-ul Threat Prevention funcționează cu trei componente principale, care sunt numite în API prin următoarele valori text:

av — Componentă antivirus, responsabilă de analiza semnăturilor amenințărilor cunoscute.

te - Componenta Threat Emulation, responsabilă pentru verificarea fișierelor din sandbox și emiterea unui verdict rău intenționat/benign după emulare.

extracţie - Componenta Threat Extraction, responsabilă pentru conversia rapidă a documentelor de birou într-o formă sigură (în care este eliminat tot conținutul potențial rău intenționat), pentru a le livra rapid utilizatorilor/sistemelor.

Structura API și principalele limitări

API-ul Threat Prevention folosește doar 4 solicitări − încărcare, interogare, descărcare și cotă. În antetul pentru toate cele patru solicitări, trebuie să transmiteți cheia API folosind parametrul Autorizare. La prima vedere, structura poate părea mult mai simplă decât în API de management, dar numărul de câmpuri din solicitările de încărcare și interogare și structura acestor solicitări sunt destul de complexe. Acestea pot fi comparate funcțional cu profilurile de prevenire a amenințărilor dintr-o politică de securitate gateway/sandbox.

În momentul de față, a fost lansată singura versiune a API-ului de prevenire a amenințărilor - 1.0 URL-ul pentru apelurile API ar trebui să includă v1 în partea în care trebuie să specificați versiunea. Spre deosebire de Management API, este necesar să indicați versiunea API în URL, altfel solicitarea nu va fi executată.

Componenta Anti-Virus, atunci când este apelată fără alte componente (te, extracție), în prezent acceptă doar cereri de interogare cu sume hash md5. Threat Emulation și Threat Extraction acceptă, de asemenea, sumele hash sha1 și sha256.

Este foarte important să nu faceți greșeli în interogări! Solicitarea poate fi executată fără eroare, dar nu complet. Privind puțin în viitor, să ne uităm la ce se poate întâmpla atunci când există erori/greșeli de scriere în interogări.

Solicitare cu o greșeală de tipar cu cuvântul rapoarte(rapoarte)

{ "request":  [  

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

Nu va exista nicio eroare în răspuns, dar nu vor fi deloc informații despre rapoarte

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

Dar pentru o solicitare fără greșeli de scriere în cheia rapoartelor

{ "request":  [  

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

Primim un răspuns care conține deja un ID pentru descărcarea rapoartelor

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

Dacă trimitem o cheie API incorectă/expirata, vom primi o eroare 403 ca ​​răspuns.

SandBlast API: în cloud și pe dispozitive locale

Solicitările API pot fi trimise către dispozitivele Check Point care au componenta de emulare a amenințărilor (blade) activată. Ca adresă pentru solicitări, trebuie să utilizați ip/url-ul dispozitivului și portul 18194 (de exemplu, https://10.10.57.19:18194/tecloud/api/v1/file/query). De asemenea, trebuie să vă asigurați că politica de securitate de pe dispozitiv permite această conexiune. Autorizare prin cheie API pe dispozitivele locale în mod implicit oprit iar cheia de autorizare din anteturile cererii poate să nu fie trimisă deloc.

Solicitările API către cloudul CheckPoint ar trebui trimise către te.checkpoint.com (de exemplu - https://te.checkpoint.com/tecloud/api/v1/file/query). Cheia API poate fi obținută ca licență de probă timp de 60 de zile, contactând partenerii Check Point sau biroul local al companiei.

Pe dispozitivele locale, Threat Extraction nu este încă acceptată ca standard. API-ul de prevenire a amenințărilor și ar trebui folosit API-ul de prevenire a amenințărilor pentru Security Gateway (vom vorbi despre asta mai detaliat la finalul articolului).

Dispozitivele locale nu acceptă cererea de cotă.

În caz contrar, nu există diferențe între solicitările către dispozitivele locale și către cloud.

Încărcați apelul API

Metoda utilizată − POST

Adresa de apel - https:///tecloud/api/v1/file/upload

Solicitarea constă din două părți (form-date): un fișier destinat emulării/curățării și un corp de cerere cu text.

Solicitarea text nu poate fi goală, dar nu poate conține nicio configurație. Pentru ca cererea să aibă succes, trebuie să trimiteți cel puțin următorul text în cerere:

Minim necesar pentru o solicitare de încărcare

HTTP POST

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

Cap:

Autorizare:

Body

{

"cerere": {

}

}

Fișier

Fișier

În acest caz, fișierul va fi procesat în conformitate cu parametrii impliciti: component - te, imagini OS - Câștigați XP și Win 7, fără a genera un raport.

Comentarii privind principalele câmpuri din cererea de text:

nume de fișier и tip fișier Puteți să le lăsați necompletate sau să nu le trimiteți deloc, deoarece acestea nu sunt informații deosebit de utile atunci când încărcați un fișier. În răspunsul API, aceste câmpuri vor fi completate automat pe baza numelui fișierului descărcat, iar informațiile din cache vor trebui în continuare căutate folosind cantitățile hash md5/sha1/sha256.

Exemplu de solicitare cu nume_fișier și tip_fișier goale

{

"request": {

"file_name": "",

"file_type": "",

}

}

caracteristici — o listă care indică funcționalitatea necesară la procesarea în sandbox - av (Anti-Virus), te (Threat Emulation), extraction (Threat Extraction). Dacă acest parametru nu este trecut deloc, atunci va fi folosită doar componenta implicită - te (Threat Emulation).

Pentru a activa verificarea celor trei componente disponibile, trebuie să specificați aceste componente în cererea API.

Exemplu de cerere cu înregistrarea av, te și extracție

{ "request":  [  

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

Chei în secțiunea te

imagini — o listă care conține dicționare cu id-ul și numărul de revizuire ale sistemelor de operare în care se va efectua verificarea. ID-urile și numerele de revizuire sunt aceleași pentru toate dispozitivele locale și pentru cloud.

Lista sistemelor de operare și revizuiri

ID imagine OS disponibil

Revizuire

Imagine OS și aplicație

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32 de biți SP3
Birou: 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 de biți
Birou: 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 de biți
Birou: 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 de biți
Birou: 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 de biți
Birou: 2013 (32 de biți)
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 de biți
Birou: 2013 (64 de biți)
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
Birou: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Flash Player: 20 (Plugin & ActiveX)
Java Runtime: 1.7.0u9

Dacă cheia imaginilor nu este specificată deloc, atunci emularea va avea loc în imaginile recomandate de Check Point (în prezent Win XP și Win 7). Aceste imagini sunt recomandate pe baza considerentelor privind cel mai bun echilibru între performanță și rata de capturare.

Rapoarte — o listă de rapoarte pe care le solicităm în cazul în care fișierul se dovedește a fi rău intenționat. Sunt disponibile următoarele opțiuni:

  1. rezumat - arhiva .tar.gz care conține un raport privind emularea de către toate imaginile solicitate (atât o pagină html, cât și componente, cum ar fi un videoclip de la sistemul de operare emulator, un dump de trafic de rețea, un raport în json și eșantionul în sine într-o arhivă protejată prin parolă). Căutăm cheia în răspuns - raport_rezumat pentru descărcarea ulterioară a raportului.

  2. pdf - document despre emulare în unu imagine, pe care mulți sunt obișnuiți să o primească prin Smart Console. Căutăm cheia în răspuns - raport_pdf pentru descărcarea ulterioară a raportului.

  3. xml - document despre emulare în unu imagine, convenabilă pentru analiza ulterioară a parametrilor din raport. Căutăm cheia în răspuns - xml_report pentru descărcarea ulterioară a raportului.

  4. gudron - arhiva .tar.gz care conține un raport privind emularea în unu imaginile solicitate (atât o pagină html, cât și componente, cum ar fi un videoclip de la sistemul de operare emulator, un dump de trafic de rețea, un raport în json și eșantionul în sine într-o arhivă protejată prin parolă). Căutăm cheia în răspuns - raport_complet pentru descărcarea ulterioară a raportului.

Ce se află în raportul de sintezăInteracțiune cu Check Point SandBlast prin API

Cheile full_report, pdf_report, xml_report sunt în dicționar pentru fiecare sistem de operare

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

Dar cheia summary_report - există una pentru emulare în general

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

Puteți solicita rapoarte tar și xml și pdf în același timp, puteți solicita rezumat și tar și xml. Nu se va putea solicita un raport de sinteză și un pdf în același timp.

Chei în secțiunea de extracție

Pentru extragerea amenințărilor, sunt folosite doar două chei:

metodă — pdf (conversie în pdf, utilizată implicit) sau clean (curățare conținut activ).

coduri_de_piese_extrase - lista de coduri pentru eliminarea continutului activ, aplicabila numai pentru metoda curata

Coduri pentru eliminarea conținutului din fișiere

Cod

Descriere

1025

Obiecte legate

1026

Macro-uri și cod

1034

Hyperlinkuri sensibile

1137

Acțiuni PDF GoToR

1139

Acțiuni de lansare PDF

1141

Acțiuni URI PDF

1142

Acțiuni audio PDF

1143

Acțiuni de film PDF

1150

Acțiuni JavaScript PDF

1151

Acțiuni PDF Trimitere formular

1018

Interogări de baze de date

1019

Obiecte încorporate

1021

Salvare rapidă a datelor

1017

Proprietăți personalizate

1036

Proprietăți statistice

1037

Proprietăți rezumate

Pentru a descărca o copie curățată, va trebui, de asemenea, să faceți o cerere de interogare (care va fi discutată mai jos) după câteva secunde, specificând cantitatea de hash a fișierului și componenta de extracție în textul solicitării. Puteți ridica fișierul curățat folosind id-ul din răspunsul la interogare - extracted_file_download_id. Încă o dată, privind puțin înainte, dau exemple de solicitare și răspuns la interogare pentru a căuta un ID pentru descărcarea unui document șters.

Solicitare de interogare pentru a căuta cheia extracted_file_download_id

{ "request":  [  

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

Răspuns la interogare (căutați cheia 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."
                }
            }
        }
    ]
}

Prezentare generală

Într-un apel API, puteți trimite un singur fișier pentru verificare.

Componenta av nu necesită o secțiune suplimentară cu chei, este suficient să o specificați în dicționar caracteristici.

Apel API de interogare

Metoda utilizată − POST

Adresa de apel - https:///tecloud/api/v1/file/query

Înainte de a trimite un fișier pentru descărcare (cerere de încărcare), este indicat să verificați cache-ul sandbox (cerere de interogare) pentru a optimiza încărcarea pe serverul API, deoarece serverul API poate avea deja informații și un verdict asupra fișierului descărcat. Apelul constă doar dintr-o parte de text. Partea necesară a cererii este cantitatea hash sha1/sha256/md5 a fișierului. Apropo, îl puteți obține în răspunsul la cererea de încărcare.

Minim necesar pentru interogare

HTTP POST

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

Cap:

Autorizare:

Body

{

"cerere": {

„sha256”:

}

}

Un exemplu de răspuns la o solicitare de încărcare, în care sumele hash sha1/md5/sha256 sunt vizibile

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

Solicitarea de interogare, pe lângă cantitatea de hash, ar trebui să fie în mod ideal aceeași cu solicitarea de încărcare (sau este planificată să fie) sau chiar „deja” (conține mai puține câmpuri în cererea de interogare decât în ​​cererea de încărcare). În cazul în care cererea de interogare conține mai multe câmpuri decât au fost în cererea de încărcare, nu veți primi toate informațiile necesare în răspuns.

Iată un exemplu de răspuns la o interogare în care nu au fost găsite toate datele necesare

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

Atenție la câmpuri cod и etichetă. Aceste câmpuri apar de trei ori în dicționarele de stare. Mai întâi vedem cheia globală „code”: 1006 și „label”: „PARTIALLY_FOUND”. În continuare, aceste chei sunt găsite pentru fiecare componentă individuală pe care am solicitat-o ​​- te și extracție. Și dacă pentru te este clar că datele au fost găsite, atunci pentru extragere nu există informații.

Așa arăta interogarea pentru exemplul de mai sus

{ "request":  [  

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

Dacă trimiteți o cerere de interogare fără componenta de extracție

{ "request":  [  

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

Apoi răspunsul va conține informații complete („cod”: 1001, „etichetă”: „GĂSIT”)

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

Dacă nu există deloc informații în cache, atunci răspunsul va fi „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."
        }
      }
    }
  ]
}

Într-un apel API, puteți trimite mai multe sume hash simultan pentru verificare. Răspunsul va returna datele în aceeași ordine în care au fost trimise în cerere.

Exemplu de solicitare de interogare cu mai multe sume sha256

{ "request":  [  

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

Răspuns la o interogare cu mai multe sume sha256

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81",
      "file_type": "dll",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    },
    {
      "status": {
        "code": 1004,
        "label": "NOT_FOUND",
        "message": "Could not find the requested file. Please upload it."
      },
      "sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82",
      "file_type": "",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 0,
        "images": [
          {
            "report": {
              "verdict": "unknown"
            },
            "status": "not_found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "status": {
          "code": 1004,
          "label": "NOT_FOUND",
          "message": "Could not find the requested file. Please upload it."
        }
      }
    }
  ]
}

Solicitarea mai multor sume hash simultan într-o cerere de interogare va avea, de asemenea, un efect benefic asupra performanței serverului API.

Descărcați apelul API

Metoda utilizată − POST (conform documentației), GET funcționează de asemenea (și poate părea mai logic)

Adresa de apel - https:///tecloud/api/v1/file/download?id=

Antetul necesită ca cheia API să fie transmisă, corpul solicitării este gol, id-ul de descărcare este transmis în adresa URL.

Ca răspuns la o solicitare de interogare, dacă emularea este finalizată și au fost solicitate rapoarte la descărcarea fișierului, id-ul pentru descărcarea rapoartelor va fi vizibil. Dacă se solicită o copie curățată, ar trebui să căutați id-ul pentru a descărca documentul curățat.

În total, cheile din răspunsul la interogare care conține valoarea id pentru încărcare pot fi:

  • raport_rezumat

  • raport_complet

  • raport_pdf

  • xml_report

  • extras_file_download_id

Desigur, pentru a primi aceste chei ca răspuns la cererea de interogare, acestea trebuie specificate în cerere (pentru rapoarte) sau nu uitați să faceți o solicitare folosind funcția de extragere (pentru documente curățate)

Apel API Quota

Metoda utilizată − POST

Adresa de apel - https:///tecloud/api/v1/file/quota

Pentru a verifica cota rămasă în cloud, utilizați interogarea cotă. Corpul cererii este gol.

Exemplu de răspuns la o solicitare de cotă

{
  "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-ul de prevenire a amenințărilor pentru Security Gateway

Acest API a fost dezvoltat înainte de API-ul Threat Prevention și este destinat numai dispozitivelor locale. Deocamdată poate fi util doar dacă aveți nevoie de API-ul Threat Extraction. Pentru emularea amenințărilor este mai bine să utilizați API-ul obișnuit de prevenire a amenințărilor. Pentru a porni TP API pentru SG și configurați cheia API de la care trebuie să urmați pașii sk113599. Vă recomand să fiți atenți la pasul 6b și să verificați accesibilitatea paginii https://<IPAddressofSecurityGateway>/UserCheck/TPAPI deoarece în cazul unui rezultat negativ, configurarea ulterioară nu are sens. Toate apelurile API vor fi trimise la această adresă URL. Tipul de apel (încărcare/interogare) este reglementat în tasta din corpul apelului − nume_cerere. De asemenea, cheile necesare sunt - api_key (trebuie să-l amintiți în timpul procesului de configurare) și versiunea_protocol (versiunea actuală este 1.1). Puteți găsi documentația oficială pentru acest API la sk137032. Avantajele relative includ posibilitatea de a trimite mai multe fișiere simultan pentru emulare la încărcarea lor, deoarece fișierele sunt trimise ca șir de text base64. Pentru a codifica/decoda fișiere în/din base64, puteți utiliza un convertor online în Postman în scopuri demonstrative, de exemplu - https://base64.guru. În scopuri practice, ar trebui să utilizați metodele de codificare și decodare încorporate atunci când scrieți cod.

Acum să aruncăm o privire mai atentă asupra funcțiilor te и extracţie în acest API.

Pentru componentă te dicţionar oferit te_options în cererile de încărcare/interogare, iar cheile din această solicitare coincid complet cu cheile te in API-ul de prevenire a amenințărilor.

Exemplu de solicitare pentru emularea fișierelor în Win10 cu rapoarte

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

Pentru componentă extracţie dicţionar oferit scrub_options. Această solicitare specifică metoda de curățare: convertiți în PDF, ștergeți conținutul activ sau selectați un mod în conformitate cu profilul de prevenire a amenințărilor (este indicat numele profilului). Lucrul grozav în a răspunde la o solicitare API de extracție pentru un fișier este că primiți o copie curățată în răspunsul la acea solicitare ca șir criptat în base64 (nu trebuie să faceți o cerere de interogare și să căutați id-ul pentru a descărca document)

Exemplu de solicitare de ștergere a unui fișier

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

Răspunde la o solicitare

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

În ciuda faptului că sunt necesare mai puține solicitări API pentru a obține o copie ștearsă, consider că această opțiune este mai puțin preferabilă și mai convenabilă decât solicitarea de date din formular utilizată în API-ul de prevenire a amenințărilor.

Colecțiile Poștașului

Am creat colecții în Postman atât pentru API-ul Threat Prevention, cât și pentru API-ul Threat Prevention pentru Security Gateway, care reprezintă cele mai comune solicitări API. Pentru ca API-ul IP/url și cheia serverului să fie înlocuite automat în solicitări, iar cantitatea de hash sha256 să fie reținută după descărcarea fișierului, au fost create trei variabile în interiorul colecțiilor (le puteți găsi accesând setările colecției). Editare -> Variabile): te_api (obligatoriu), api_key (necesar a fi completat, cu excepția cazului în care se utilizează TP API cu dispozitive locale), sha256 (lasați gol, nu este folosit în TP API pentru SG).

Descărcați colecția Postman pentru API-ul de prevenire a amenințărilor

Descărcați colecția Postman pentru API-ul Threat Prevention for Security Gateway

Exemple de utilizare

In comunitate Verificați Matei Sunt prezentate scripturi scrise în Python care verifică fișierele din directorul dorit prin TP APIȘi TP API pentru SG. Prin interacțiunea cu API-ul Threat Prevention, capacitatea dvs. de a scana fișiere este extinsă semnificativ, deoarece acum puteți scana fișiere pe mai multe platforme simultan (verificarea în API-ul VirusTotal, și apoi în sandbox Check Point) și primiți fișiere nu numai din traficul de rețea, ci și preluați-le de pe orice unități de rețea și, de exemplu, sisteme CRM.

Sursa: www.habr.com

Adauga un comentariu