Questo articolo sarà utile a coloro che hanno familiarità con la tecnologia Check Point tramite emulazione file (Emulazione delle minacce) e pulizia proattiva dei file (Estrazione delle minacce) e vuole fare un passo avanti verso l'automazione di queste attività. Check Point ha
Abbreviazioni di base
L'API Threat Prevention funziona con tre componenti principali, richiamati nell'API tramite i seguenti valori di testo:
av — Componente antivirus, responsabile dell'analisi delle firme delle minacce note.
te - Componente di emulazione delle minacce, responsabile del controllo dei file nella sandbox e dell'emissione di un verdetto dannoso/benigno dopo l'emulazione.
estrazione - Componente Threat Extraction, responsabile della conversione rapida dei documenti Office in una forma sicura (in cui viene rimosso tutto il contenuto potenzialmente dannoso), al fine di consegnarli rapidamente agli utenti/sistemi.
Struttura dell'API e principali limitazioni
L'API Threat Prevention utilizza solo 4 richieste − caricare, interrogare, scaricare e quotare. Nell'intestazione di tutte e quattro le richieste è necessario passare la chiave API utilizzando il parametro Autorizzazione. A prima vista, la struttura può sembrare molto più semplice rispetto a quella in
Al momento è stata rilasciata l'unica versione dell'API Threat Prevention, la 1.0; l'URL per le chiamate API dovrebbe includere v1 nella parte in cui è necessario specificare la versione. A differenza delle Management API, è necessario indicare nell'URL la versione dell'API, altrimenti la richiesta non verrà eseguita.
Il componente Anti-Virus, se richiamato senza altri componenti (te, estrazione), attualmente supporta solo richieste di query con somme hash md5. Threat Emulation e Threat Extraction supportano anche le somme hash sha1 e sha256.
È molto importante non commettere errori nelle query! La richiesta può essere eseguita senza errori, ma non completamente. Guardando un po' avanti, diamo un'occhiata a cosa può succedere quando sono presenti errori/refusi nelle query.
Richiesta con un errore di battitura con la parola report(reportss)
{ "request": [
{
"sha256": {{sha256}},
"features": ["te"] ,
"te": {
"images": [
{
"id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
"revision": 1
}
],
reportss: ["tar", "pdf", "xml"]
}
}
]
}
Non ci saranno errori nella risposta, ma non ci saranno informazioni sui report
{
"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."
}
}
}
]
}
Ma per una richiesta senza errori di battitura nella chiave dei rapporti
{ "request": [
{
"sha256": {{sha256}},
"features": ["te"] ,
"te": {
"images": [
{
"id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
"revision": 1
}
],
reports: ["tar", "pdf", "xml"]
}
}
]
}
Riceviamo una risposta che contiene già l'ID per il download dei report
{
"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."
}
}
}
]
}
Se inviamo una chiave API errata/scaduta, riceveremo in risposta un errore 403.
API SandBlast: nel cloud e sui dispositivi locali
Le richieste API possono essere inviate ai dispositivi Check Point che hanno il componente Threat Emulation (blade) abilitato. Come indirizzo per le richieste è necessario utilizzare l'ip/url del dispositivo e la porta 18194 (ad esempio https://10.10.57.19:18194/tecloud/api/v1/file/query). Dovresti anche assicurarti che la politica di sicurezza sul dispositivo consenta tale connessione. Autorizzazione tramite chiave API sui dispositivi locali per impostazione predefinita spento e la chiave di autorizzazione nelle intestazioni della richiesta potrebbe non essere inviata affatto.
Le richieste API al cloud CheckPoint devono essere inviate a te.checkpoint.com (ad esempio - https://te.checkpoint.com/tecloud/api/v1/file/query). La chiave API può essere ottenuta come licenza di prova per 60 giorni contattando i partner Check Point o l'ufficio locale dell'azienda.
Sui dispositivi locali, Threat Extraction non è ancora supportato come standard.
I dispositivi locali non supportano la richiesta di quota.
Per il resto non ci sono differenze tra le richieste ai dispositivi locali e al cloud.
Carica chiamata API
Metodo utilizzato − POST
Indirizzo di chiamata - https:///tecloud/api/v1/file/upload
La richiesta è composta da due parti (form-data): un file destinato all'emulazione/pulizia e un corpo della richiesta con testo.
La richiesta di testo non può essere vuota, ma non può contenere alcuna configurazione. Affinché la richiesta vada a buon fine è necessario inviare nella richiesta almeno il seguente testo:
Minimo richiesto per una richiesta di caricamento
POST HTTP
https:///tecloud/api/v1/file/upload
Foraggio:
Autorizzazione:
Corpo
{
"richiesta": {
}
}
Compila il
Compila il
In questo caso il file verrà elaborato secondo i parametri predefiniti: componente - te, Immagini del sistema operativo - Vinci XP e Vinci 7, senza generare un report.
Commenti sui campi principali del testo della richiesta:
file_name и tipo di file Puoi lasciarli vuoti o non inviarli affatto, poiché non si tratta di un'informazione particolarmente utile quando si carica un file. Nella risposta dell'API questi campi verranno compilati automaticamente in base al nome del file scaricato e le informazioni nella cache dovranno comunque essere cercate utilizzando gli importi di hash md5/sha1/sha256.
Richiesta di esempio con nome_file e tipo_file vuoti
{
"request": {
"file_name": "",
"file_type": "",
}
}
Caratteristiche — un elenco che indica le funzionalità necessarie durante l'elaborazione nella sandbox: av (Anti-Virus), te (Threat Emulation), estrazione (Threat Extraction). Se questo parametro non viene passato affatto, verrà utilizzato solo il componente predefinito: te (Threat Emulation).
Per abilitare il check-in dei tre componenti disponibili, è necessario specificare questi componenti nella richiesta API.
Esempio di richiesta con check in av, te ed estrazione
{ "request": [
{
"sha256": {{sha256}},
"features": ["av", "te", "extraction"]
}
]
}
Tasti nella sezione te
immagini — un elenco contenente i dizionari con ID e numero di revisione dei sistemi operativi su cui verrà effettuato il controllo. Gli ID e i numeri di revisione sono gli stessi per tutti i dispositivi locali e per il cloud.
Elenco dei sistemi operativi e delle revisioni
ID immagine del sistema operativo disponibile
Revisione
Sistema operativo e applicazione immagine
e50e99f3-5963-4573-af9e-e3f4750b55e2
1
Microsoft Windows: XP-32 bit SP3
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 e ActiveX 10.0
Tempo di esecuzione Java: 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 (per Redmine& ActiveX)
Tempo di esecuzione Java: 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 (per Redmine & ActiveX)
Tempo di esecuzione Java: 1.7.0u0
5e5de275-a103-4f67-b55b-47532918fa59
1
Microsoft Windows: 7-32 bit
Office: 2013
Adobe Acrobat Reader: 11.0
Flash Player: 15 (per Redmine & ActiveX)
Tempo di esecuzione Java: 1.7.0u9
3ff3ddae-e7fd-4969-818c-d5f1a2be336d
1
Microsoft Windows: 7-64 bit
Office: 2013 (32 bit)
Adobe Acrobat Reader: 11.0.01
Flash Player: 13 (per Redmine & ActiveX)
Tempo di esecuzione Java: 1.7.0u9
6c453c9b-20f7-471a-956c-3198a868dc92
1
Microsoft Windows: 8.1-64 bit
Office: 2013 (64 bit)
Adobe Acrobat Reader: 11.0.10
Flash Player: 18.0.0.160 (per Redmine & ActiveX)
Tempo di esecuzione Java: 1.7.0u9
10b4a9c6-e414-425c-ae8b-fe4dd7b25244
1
Microsoft Windows: 10
Office: Professional Plus 2016 in-it
Adobe Acrobat Reader: MUI DC 2015
Flash Player: 20 (per Redmine & ActiveX)
Tempo di esecuzione Java: 1.7.0u9
Se la chiave delle immagini non viene specificata, l'emulazione avverrà nelle immagini consigliate da Check Point (attualmente Win XP e Win 7). Queste immagini sono consigliate in base a considerazioni sul miglior equilibrio tra prestazioni e tasso di cattura.
rapporti — un elenco di segnalazioni che richiediamo nel caso in cui il file risulti dannoso. Sono disponibili le seguenti opzioni:
-
sommario - Archivio .tar.gz contenente un rapporto sull'emulazione di tutti immagini richieste (sia una pagina html che componenti come un video dal sistema operativo dell'emulatore, un dump del traffico di rete, un report in json e il campione stesso in un archivio protetto da password). Stiamo cercando la chiave della risposta: relazione di sintesi per il successivo download del report.
-
pdf - documento sull'emulazione in uno immagine, che molti sono abituati a ricevere tramite la Smart Console. Stiamo cercando la chiave della risposta: pdf_report per il successivo download del report.
-
xml - documento sull'emulazione in uno immagine, utile per la successiva analisi dei parametri nel report. Stiamo cercando la chiave della risposta: xml_report per il successivo download del report.
-
tar - Archivio .tar.gz contenente un rapporto sull'emulazione in uno immagini richieste (sia una pagina html che componenti come un video dal sistema operativo dell'emulatore, un dump del traffico di rete, un report in json e il campione stesso in un archivio protetto da password). Stiamo cercando la chiave della risposta: rapporto_completo per il successivo download del report.
Cosa c'è nel rapporto riepilogativo
Le chiavi full_report, pdf_report, xml_report si trovano nel dizionario per ciascun sistema operativo
{
"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."
}
}
}
]
}
Ma la chiave summary_report: ce n'è una per l'emulazione in generale
{
"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."
}
}
}
]
}
Puoi richiedere report tar e xml e pdf contemporaneamente, puoi richiedere riepilogo e report tar e xml. Non sarà possibile richiedere contemporaneamente una relazione di sintesi e un pdf.
Tasti nella sezione estrazione
Per l'estrazione delle minacce vengono utilizzate solo due chiavi:
metodo — pdf (converti in pdf, utilizzato per impostazione predefinita) o clean (pulizia del contenuto attivo).
codici_parti_estratti - elenco dei codici per la rimozione del contenuto attivo, applicabile solo per il metodo pulito
Codici per rimuovere contenuto dai file
Code
Descrizione
1025
Oggetti collegati
1026
Macro e codice
1034
Collegamenti ipertestuali sensibili
1137
Azioni GoToR PDF
1139
Azioni di avvio PDF
1141
Azioni URI PDF
1142
PDF Azioni sonore
1143
Azioni dei film PDF
1150
Azioni JavaScript PDF
1151
Azioni del modulo di invio PDF
1018
Database Query
1019
oggetti incorporati
1021
Salvataggio rapido dei dati
1017
Proprietà personalizzate
1036
Proprietà statistiche
1037
Proprietà di riepilogo
Per scaricare una copia ripulita, dovrai anche effettuare una richiesta di query (di cui parleremo più avanti) dopo qualche secondo, specificando nel testo della richiesta la quantità di hash del file e la componente di estrazione. Puoi recuperare il file pulito utilizzando l'ID dalla risposta alla query: extract_file_download_id. Ancora una volta, guardando un po' avanti, fornisco esempi di richiesta e risposta a una query per cercare un ID per scaricare un documento autorizzato.
Richiesta di query per cercare la chiave extract_file_download_id
{ "request": [
{
"sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
"features": ["extraction"] ,
"extraction": {
"method": "pdf"
}
}
]
}
Risposta alla query (cerca la chiave extract_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."
}
}
}
]
}
Panoramica
In una chiamata API, puoi inviare un solo file per la verifica.
Il componente av non necessita di una sezione aggiuntiva con chiavi, è sufficiente specificarla nel dizionario Caratteristiche.
Chiamata API di query
Metodo utilizzato − POST
Indirizzo di chiamata - https:///tecloud/api/v1/file/query
Prima di inviare un file per il download (richiesta di caricamento), è consigliabile controllare la cache sandbox (richiesta di query) per ottimizzare il carico sul server API, poiché il server API potrebbe già disporre di informazioni e verdetto sul file scaricato. La chiamata è composta solo da una parte di testo. La parte richiesta della richiesta è la quantità hash sha1/sha256/md5 del file. A proposito, puoi ottenerlo nella risposta alla richiesta di caricamento.
Minimo richiesto per la query
POST HTTP
https:///tecloud/api/v1/file/query
Foraggio:
Autorizzazione:
Corpo
{
"richiesta": {
"sha256":
}
}
Un esempio di risposta a una richiesta di caricamento, in cui sono visibili gli importi hash sha1/md5/sha256
{
"response": {
"status": {
"code": 1002,
"label": "UPLOAD_SUCCESS",
"message": "The file was uploaded successfully."
},
"sha1": "954b5a851993d49ef8b2412b44f213153bfbdb32",
"md5": "ac29b7c26e7dcf6c6fdb13ac0efe98ec",
"sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
"file_type": "",
"file_name": "kp-20-doc.doc",
"features": [
"te"
],
"te": {
"trust": 0,
"images": [
{
"report": {
"verdict": "unknown"
},
"status": "not_found",
"id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
"revision": 1
}
],
"score": -2147483648,
"status": {
"code": 1002,
"label": "UPLOAD_SUCCESS",
"message": "The file was uploaded successfully."
}
}
}
}
La richiesta di query, oltre all'importo dell'hash, dovrebbe idealmente essere la stessa della richiesta di caricamento (o si prevede che lo sia), o addirittura "già" (contenere meno campi nella richiesta di query rispetto alla richiesta di caricamento). Nel caso in cui la richiesta di query contenga più campi di quelli contenuti nella richiesta di caricamento, non riceverai tutte le informazioni richieste nella risposta.
Di seguito è riportato un esempio di risposta a una query in cui non sono stati trovati tutti i dati richiesti
{
"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."
}
}
}
]
}
Attenzione ai campi codice и etichetta. Questi campi vengono visualizzati tre volte nei dizionari di stato. Per prima cosa vediamo la chiave globale “code”: 1006 e “label”: “PARTIALLY_FOUND”. Successivamente, queste chiavi vengono trovate per ogni singolo componente che abbiamo richiesto: te ed estrazione. E se per te è chiaro che i dati sono stati ritrovati, allora per l'estrazione non ci sono informazioni.
Questo è l'aspetto della query per l'esempio sopra
{ "request": [
{
"sha256": {{sha256}},
"features": ["te", "extraction"] ,
"te": {
"images": [
{
"id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
"revision": 1
}
],
"reports": [
"xml", "pdf"
]
}
}
]
}
Se invii una richiesta di query senza il componente di estrazione
{ "request": [
{
"sha256": {{sha256}},
"features": ["te"] ,
"te": {
"images": [
{
"id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
"revision": 1
}
],
"reports": [
"xml", "pdf"
]
}
}
]
}
Quindi la risposta conterrà informazioni complete (“codice”: 1001, “etichetta”: “TROVATO”)
{
"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."
}
}
}
]
}
Se nella cache non sono presenti informazioni, la risposta sarà "etichetta": "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."
}
}
}
]
}
In una chiamata API, puoi inviare più importi hash contemporaneamente per la verifica. La risposta restituirà i dati nello stesso ordine in cui sono stati inviati nella richiesta.
Esempio di richiesta di query con diversi importi sha256
{ "request": [
{
"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd81"
},
{
"sha256": "b84531d3829bf6131655773a3863d6b16f6389b7f4036aef9b81c0cb60e7fd82"
}
]
}
Risposta a una query con più importi 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."
}
}
}
]
}
Anche la richiesta di più somme hash contemporaneamente in una richiesta di query avrà un effetto benefico sulle prestazioni del server API.
Scarica la chiamata API
Metodo utilizzato − POST (secondo la documentazione), GET funziona anche (e può sembrare più logico)
Indirizzo di chiamata - https:///tecloud/api/v1/file/download?id=
L'intestazione richiede che venga passata la chiave API, il corpo della richiesta è vuoto, l'ID di download viene passato nell'indirizzo URL.
In risposta ad una richiesta di query, se l'emulazione è completata e sono stati richiesti report durante il download del file, sarà visibile l'id per il download dei report. Se è richiesta una copia pulita, è necessario cercare l'ID per scaricare il documento ripulito.
In totale, le chiavi nella risposta alla query contenente il valore id per il caricamento possono essere:
-
relazione di sintesi
-
rapporto_completo
-
pdf_report
-
xml_report
-
estratto_file_download_id
Naturalmente, per ricevere queste chiavi in risposta alla richiesta di interrogazione, occorre specificarle nella richiesta (per i report) o ricordarsi di effettuare una richiesta utilizzando la funzione di estrazione (per i documenti ripuliti).
Chiamata API quota
Metodo utilizzato − POST
Indirizzo di chiamata - https:///tecloud/api/v1/file/quota
Per verificare la quota rimanente nel cloud, utilizzare la query sulla quota. Il corpo della richiesta è vuoto.
Esempio di risposta a una richiesta di 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"
}
]
}
API di prevenzione delle minacce per Security Gateway
Questa API è stata sviluppata prima dell'API Threat Prevention ed è destinata solo ai dispositivi locali. Per ora può essere utile solo se hai bisogno dell'API Threat Extraction. Per Threat Emulation è preferibile utilizzare la normale API Threat Prevention. Per accendere API TP per SG e configura la chiave API di cui hai bisogno per seguire i passaggi
Ora diamo uno sguardo più da vicino alle funzioni te и estrazione in questa API.
Per componente te dizionario fornito te_opzioni nelle richieste di caricamento/query e le chiavi in questa richiesta coincidono completamente con le chiavi te in
Esempio di richiesta di emulazione file in Win10 con report
{
"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"]
}
}
]
}
Per componente estrazione dizionario fornito scrub_opzioni. Questa richiesta specifica il metodo di pulizia: convertire in PDF, cancellare il contenuto attivo o selezionare una modalità in base al profilo di Prevenzione delle minacce (è indicato il nome del profilo). Il bello di rispondere a una richiesta API di estrazione per un file è che ottieni una copia pulita nella risposta a quella richiesta come stringa crittografata base64 (non è necessario effettuare una richiesta di query e cercare l'ID per scaricare il file documento)
Esempio di richiesta di cancellazione di un file
{
"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
}
}]
}
Rispondere a una richiesta
{
"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": ""
}
}]
}
Nonostante siano necessarie meno richieste API per ottenere una copia autorizzata, trovo questa opzione meno preferibile e conveniente rispetto alla richiesta di dati del modulo utilizzata in
Collezioni di postini
Ho creato raccolte in Postman sia per l'API Threat Prevention che per l'API Threat Prevention per Security Gateway, che rappresentano le richieste API più comuni. Affinché l'API e la chiave ip/url del server vengano automaticamente sostituite nelle richieste, e la quantità di hash sha256 venga ricordata dopo il download del file, sono state create tre variabili all'interno delle raccolte (puoi trovarle andando nelle impostazioni della raccolta Modifica -> Variabili): te_api (richiesto), api_key (da compilare obbligatoriamente, tranne quando si utilizza l'API TP con dispositivi locali), sha256 (lasciare vuoto, non utilizzato nell'API TP per SG).
Esempi di utilizzo
Nella comunità
Fonte: habr.com