Interazione con Check Point SandBlast tramite API

Interazione con Check Point SandBlast tramite API

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 API di prevenzione delle minacce, che funziona sia nel cloud che su dispositivi locali, e dal punto di vista funzionale è identico al controllo dei file nei flussi di traffico web/smtp/ftp/smb/nfs. Questo articolo è in parte l'interpretazione dell'autore di una serie di articoli della documentazione ufficiale, ma basata sulla mia esperienza operativa e sui miei esempi. Inoltre nell'articolo troverai le raccolte Postman dell'autore per lavorare con l'API Threat Prevention.

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 API di gestione, ma il numero di campi nelle richieste di caricamento e di query e la struttura di queste richieste sono piuttosto complessi. Questi possono essere confrontati funzionalmente con i profili di Prevenzione delle minacce in una policy di sicurezza gateway/sandbox.

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. API di prevenzione delle minacce e dovrebbe essere utilizzato API di prevenzione delle minacce per Security Gateway (ne parleremo più in dettaglio alla fine dell'articolo).

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 RedmineActiveX)
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 

 

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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 riepilogativoInterazione con Check Point SandBlast tramite API

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 sk113599. Consiglio di prestare attenzione al passaggio 6b e di verificare l'accessibilità della pagina https://<IPAddressofSecurityGateway>/UserCheck/TPAPI perché in caso di risultato negativo un'ulteriore configurazione non ha senso. Tutte le chiamate API verranno inviate a questo URL. Il tipo di chiamata (upload/query) è regolato nel tasto corpo chiamata − nome_richiesta. Sono necessarie anche le chiavi - chiave_api (è necessario ricordarlo durante il processo di configurazione) e protocollo_versione (la versione attualmente attuale è la 1.1). Puoi trovare la documentazione ufficiale per questa API all'indirizzo sk137032. I vantaggi relativi includono la possibilità di inviare più file contemporaneamente per l'emulazione durante il caricamento, poiché i file vengono inviati come stringa di testo base64. Per codificare/decodificare file su/da base64 è possibile utilizzare un convertitore online in Postman a scopo dimostrativo, ad esempio: https://base64.guru. Per scopi pratici, è necessario utilizzare i metodi di codifica e decodifica integrati durante la scrittura del codice.

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 API di prevenzione delle minacce.

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 API di prevenzione delle minacce.

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).

Scarica la raccolta Postman per l'API Threat Prevention

Scarica la raccolta Postman per l'API Threat Prevention for Security Gateway

Esempi di utilizzo

Nella comunità Controlla accoppiamenti vengono presentati script scritti in Python che controllano i file dalla directory desiderata tramite API TPE API TP per SG. Attraverso l'interazione con l'API Threat Prevention, la tua capacità di scansionare i file è notevolmente ampliata, poiché ora puoi scansionare file su più piattaforme contemporaneamente (check-in API VirusTotal, e poi nella sandbox di Check Point) e ricevere file non solo dal traffico di rete, ma anche da qualsiasi unità di rete e, ad esempio, sistemi CRM.

Fonte: habr.com

Aggiungi un commento