Interaksi dengan Check Point SandBlast melalui API

Interaksi dengan Check Point SandBlast melalui API

Artikel ini akan bermanfaat bagi mereka yang akrab dengan teknologi Check Point dengan emulasi file (Emulasi Ancaman) dan pembersihan file proaktif (Ekstraksi Ancaman) dan ingin mengambil langkah menuju otomatisasi tugas-tugas ini. Check Point punya API Pencegahan Ancaman, yang berjalan di cloud dan di perangkat lokal, dan secara fungsional identik dengan memeriksa file di aliran lalu lintas web/smtp/ftp/smb/nfs. Artikel ini sebagian merupakan interpretasi penulis atas serangkaian artikel dari dokumentasi resmi, tetapi berdasarkan pengalaman pengoperasian saya sendiri dan contoh saya sendiri. Juga di artikel ini Anda akan menemukan koleksi Tukang Pos penulis untuk bekerja dengan API Pencegahan Ancaman.

Singkatan dasar

API Pencegahan Ancaman bekerja dengan tiga komponen utama, yang dipanggil di API melalui nilai teks berikut:

av — Komponen Anti-Virus, bertanggung jawab atas analisis tanda tangan dari ancaman yang diketahui.

te - Komponen Emulasi Ancaman, bertanggung jawab untuk memeriksa file di kotak pasir, dan membuat keputusan berbahaya/jinak setelah emulasi.

ekstraksi - Komponen Ekstraksi Ancaman, bertanggung jawab untuk dengan cepat mengubah dokumen kantor menjadi bentuk yang aman (di mana semua konten yang berpotensi berbahaya dihapus), agar dapat dikirimkan dengan cepat ke pengguna/sistem.

Struktur API dan batasan utama

API Pencegahan Ancaman hanya menggunakan 4 permintaan - unggah, kueri, unduh, dan kuota. Di header untuk keempat permintaan, Anda harus meneruskan kunci API menggunakan parameter Otorisasi. Pada pandangan pertama, strukturnya mungkin tampak jauh lebih sederhana daripada sebelumnya API Manajemen, namun jumlah bidang dalam permintaan unggahan dan kueri serta struktur permintaan ini cukup kompleks. Ini dapat dibandingkan secara fungsional dengan profil Pencegahan Ancaman dalam kebijakan keamanan gateway/sandbox.

Saat ini, satu-satunya versi API Pencegahan Ancaman telah dirilis - 1.0; URL untuk panggilan API harus menyertakan v1 di bagian di mana Anda perlu menentukan versinya. Berbeda dengan API Manajemen, versi API perlu ditunjukkan di URL, jika tidak, permintaan tidak akan dieksekusi.

Komponen Anti-Virus, ketika dipanggil tanpa komponen lain (te, ekstraksi), saat ini hanya mendukung permintaan kueri dengan jumlah hash md5. Emulasi Ancaman dan Ekstraksi Ancaman juga mendukung jumlah hash sha1 dan sha256.

Sangat penting untuk tidak membuat kesalahan dalam pertanyaan! Permintaan dapat dijalankan tanpa kesalahan, tetapi tidak sepenuhnya. Sedikit ke depan, mari kita lihat apa yang bisa terjadi jika ada kesalahan/kesalahan ketik dalam kueri.

Permintaan salah ketik dengan kata laporan(laporan)

{ "request":  [  

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

Tidak akan ada kesalahan dalam respon, tetapi tidak akan ada informasi sama sekali tentang laporan tersebut

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

Namun untuk request tanpa salah ketik pada laporan key

{ "request":  [  

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

Kami menerima respons yang sudah berisi id untuk mengunduh laporan

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

Jika kami mengirimkan kunci API yang salah/kedaluwarsa, kami akan menerima kesalahan 403 sebagai respons.

SandBlast API: di cloud dan di perangkat lokal

Permintaan API dapat dikirim ke perangkat Check Point yang mengaktifkan komponen Emulasi Ancaman (blade). Sebagai alamat permintaan, Anda perlu menggunakan ip/url perangkat dan port 18194 (misalnya, https://10.10.57.19:18194/tecloud/api/v1/file/kueri). Anda juga harus memastikan bahwa kebijakan keamanan pada perangkat mengizinkan koneksi ini. Otorisasi melalui kunci API pada perangkat lokal secara default mati dan kunci Otorisasi di header permintaan mungkin tidak terkirim sama sekali.

Permintaan API ke cloud CheckPoint harus dikirim ke te.checkpoint.com (misalnya - https://te.checkpoint.com/tecloud/api/v1/file/kueri). Kunci API dapat diperoleh sebagai lisensi uji coba selama 60 hari dengan menghubungi mitra Check Point atau kantor lokal perusahaan.

Pada perangkat lokal, Ekstraksi Ancaman belum didukung sebagai standar. API Pencegahan Ancaman dan harus digunakan API Pencegahan Ancaman untuk Gerbang Keamanan (kita akan membicarakannya lebih detail di akhir artikel).

Perangkat lokal tidak mendukung permintaan kuota.

Jika tidak, tidak ada perbedaan antara permintaan ke perangkat lokal dan ke cloud.

Unggah panggilan API

Metode yang digunakan - POST

Alamat panggilan - https:///tecloud/api/v1/file/upload

Permintaan terdiri dari dua bagian (data formulir): file yang dimaksudkan untuk emulasi/pembersihan dan badan permintaan dengan teks.

Permintaan teks tidak boleh kosong, tetapi mungkin tidak berisi konfigurasi apa pun. Agar permintaan berhasil, Anda harus mengirimkan setidaknya teks berikut dalam permintaan:

Persyaratan minimum untuk permintaan pengunggahan

POSTING HTTP

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

Header:

Otorisasi:

Tubuh

{

"meminta": {

}

}

File

File

Dalam hal ini, file akan diproses sesuai dengan parameter default: komponen - te, gambar OS - Menangkan XP dan Menangkan 7, tanpa membuat laporan.

Komentar pada bidang utama dalam permintaan teks:

nama file и tipe_file Anda dapat membiarkannya kosong atau tidak mengirimkannya sama sekali, karena ini bukan informasi yang berguna saat mengunggah file. Dalam respons API, kolom ini akan terisi secara otomatis berdasarkan nama file yang diunduh, dan informasi di cache masih harus dicari menggunakan jumlah hash md5/sha1/sha256.

Contoh permintaan dengan nama_file dan tipe_file kosong

{

"request": {

"file_name": "",

"file_type": "",

}

}

fitur — daftar yang menunjukkan fungsionalitas yang diperlukan saat memproses di kotak pasir - av (Anti-Virus), te (Emulasi Ancaman), ekstraksi (Ekstraksi Ancaman). Jika parameter ini tidak dilewati sama sekali, maka hanya komponen default yang akan digunakan - te (Threat Emulation).

Untuk mengaktifkan pemeriksaan pada tiga komponen yang tersedia, Anda perlu menentukan komponen ini dalam permintaan API.

Contoh request dengan check in av, te dan ekstraksi

{ "request":  [  

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

Kunci di bagian te

gambar — daftar berisi kamus dengan id dan nomor revisi sistem operasi tempat pemeriksaan akan dilakukan. ID dan nomor revisi sama untuk semua perangkat lokal dan cloud.

Daftar sistem operasi dan revisinya

ID Gambar OS yang tersedia

Revisi

OS Gambar dan Aplikasi

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - SP32 3bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 dan ActiveX 10.0
Waktu Proses Java: 1.6.0u22

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

1

Microsoft Windows: 7 - 32bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Pemutar Flash: 10.2r152 (PluginActiveX)
Waktu Proses Java: 1.6.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2010
Adobe Acrobat Reader: 9.4
Pemutar Flash: 11.0.1.152 (Plugin & ActiveX)
Waktu Proses Java: 1.7.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2013
Adobe Acrobat Reader: 11.0
Pemutar Flash: 15 (Plugin & ActiveX)
Waktu Proses Java: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64bit
Office: 2013 (32bit)
Adobe Acrobat Reader: 11.0.01
Pemutar Flash: 13 (Plugin & ActiveX)
Waktu Proses Java: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64bit
Office: 2013 (64bit)
Adobe Acrobat Reader: 11.0.10
Pemutar Flash: 18.0.0.160 (Plugin & ActiveX)
Waktu Proses Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Office: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Pemutar Flash: 20 (Plugin & ActiveX)
Waktu Proses Java: 1.7.0u9

Jika kunci gambar tidak ditentukan sama sekali, maka emulasi akan dilakukan pada gambar yang direkomendasikan oleh Check Point (saat ini Win XP dan Win 7). Gambar-gambar ini direkomendasikan berdasarkan pertimbangan keseimbangan terbaik antara kinerja dan tingkat tangkapan.

laporan — daftar laporan yang kami minta seandainya file tersebut ternyata berbahaya. Opsi berikut tersedia:

  1. ringkasan - Arsip .tar.gz berisi laporan emulasi oleh semua gambar yang diminta (halaman html dan komponen seperti video dari OS emulator, dump lalu lintas jaringan, laporan dalam json, dan sampel itu sendiri dalam arsip yang dilindungi kata sandi). Kami mencari kunci jawabannya - rangkuman laporan untuk pengunduhan laporan selanjutnya.

  2. pdf - dokumen tentang emulasi di satu gambar, yang biasa diterima banyak orang melalui Smart Console. Kami mencari kunci jawabannya - pdf_laporan untuk pengunduhan laporan selanjutnya.

  3. xml - dokumen tentang emulasi di satu gambar, nyaman untuk penguraian parameter selanjutnya dalam laporan. Kami mencari kunci jawabannya - xml_laporan untuk pengunduhan laporan selanjutnya.

  4. ter - Arsip .tar.gz berisi laporan emulasi di satu gambar yang diminta (halaman html dan komponen seperti video dari OS emulator, dump lalu lintas jaringan, laporan dalam json, dan sampel itu sendiri dalam arsip yang dilindungi kata sandi). Kami mencari kunci jawabannya - laporan penuh untuk pengunduhan laporan selanjutnya.

Apa yang ada di dalam laporan ringkasanInteraksi dengan Check Point SandBlast melalui API

Kunci full_report, pdf_report, xml_report ada di kamus untuk setiap OS

{
  "response": [
    {
      "status": {
        "code": 1001,
        "label": "FOUND",
        "message": "The request has been fully answered."
      },
      "sha256": "9e6f07d03b37db0d3902bde4e239687a9e3d650e8c368188c7095750e24ad2d5",
      "file_type": "html",
      "file_name": "",
      "features": [
        "te"
      ],
      "te": {
        "trust": 10,
        "images": [
          {
            "report": {
              "verdict": "malicious",
              "full_report": "8d18067e-b24d-4103-8469-0117cd25eea9",
              "pdf_report": "05848b2a-4cfd-494d-b949-6cfe15d0dc0b",
              "xml_report": "ecb17c9d-8607-4904-af49-0970722dd5c8"
            },
            "status": "found",
            "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
            "revision": 1
          },
          {
            "report": {
              "verdict": "malicious",
              "full_report": "d7c27012-8e0c-4c7e-8472-46cc895d9185",
              "pdf_report": "488e850c-7c96-4da9-9bc9-7195506afe03",
              "xml_report": "e5a3a78d-c8f0-4044-84c2-39dc80ddaea2"
            },
            "status": "found",
            "id": "6c453c9b-20f7-471a-956c-3198a868dc92",
            "revision": 1
          }
        ],
        "score": -2147483648,
        "combined_verdict": "malicious",
        "severity": 4,
        "confidence": 3,
        "status": {
          "code": 1001,
          "label": "FOUND",
          "message": "The request has been fully answered."
        }
      }
    }
  ]
}

Tapi kunci ringkasan_laporan - ada satu untuk emulasi secara umum

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

Anda dapat meminta laporan tar dan xml dan pdf secara bersamaan, Anda dapat meminta ringkasan dan tar dan xml. Tidak mungkin meminta laporan ringkasan dan pdf secara bersamaan.

Kunci di bagian ekstraksi

Untuk ekstraksi ancaman, hanya dua kunci yang digunakan:

metode — pdf (konversi ke pdf, digunakan secara default) atau clean (membersihkan konten aktif).

diekstraksi_parts_codes - daftar kode untuk menghapus konten aktif, hanya berlaku untuk metode bersih

Kode untuk menghapus konten dari file

Kode

Deskripsi Produk

1025

Objek Tertaut

1026

Makro dan Kode

1034

Hyperlink Sensitif

1137

Tindakan PDF GoToR

1139

Tindakan Peluncuran PDF

1141

Tindakan URI PDF

1142

Tindakan Suara PDF

1143

Aksi Film PDF

1150

Tindakan JavaScript PDF

1151

Tindakan Formulir Pengiriman PDF

1018

Permintaan Basis Data

1019

Objek Tersemat

1021

Simpan Data dengan Cepat

1017

Properti Khusus

1036

Properti Statistik

1037

Properti Ringkasan

Untuk mengunduh salinan yang sudah dibersihkan, Anda juga perlu membuat permintaan kueri (yang akan dibahas di bawah) setelah beberapa detik, dengan menentukan jumlah hash file dan komponen ekstraksi dalam teks permintaan. Anda dapat mengambil file yang dibersihkan menggunakan id dari respons terhadap kueri - diekstraksi_file_download_id. Sekali lagi, melihat ke depan sedikit, saya memberikan contoh permintaan dan respons permintaan untuk mencari id untuk mengunduh dokumen yang telah dibersihkan.

Permintaan kueri untuk mencari kunci yang diekstraksi_file_download_id

{ "request":  [  

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

Respons terhadap kueri (cari kunci diekstraksi_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."
                }
            }
        }
    ]
}

Ikhtisar

Dalam satu panggilan API, Anda hanya dapat mengirimkan satu file untuk verifikasi.

Komponen av tidak memerlukan bagian tambahan dengan kunci, cukup menentukannya di kamus fitur.

Panggilan API Kueri

Metode yang digunakan - POST

Alamat panggilan - https:///tecloud/api/v1/file/query

Sebelum mengirim file untuk diunduh (permintaan unggah), disarankan untuk memeriksa cache sandbox (permintaan kueri) untuk mengoptimalkan beban pada server API, karena server API mungkin sudah memiliki informasi dan keputusan atas file yang diunduh. Panggilan hanya terdiri dari bagian teks. Bagian yang diperlukan dari permintaan adalah jumlah hash file sha1/sha256/md5. Omong-omong, Anda bisa mendapatkannya sebagai tanggapan atas permintaan unggahan.

Minimum yang diperlukan untuk kueri

POSTING HTTP

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

Header:

Otorisasi:

Tubuh

{

"meminta": {

"sha256":

}

}

Contoh respons terhadap permintaan unggahan, di mana jumlah hash sha1/md5/sha256 terlihat

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

Permintaan kueri, selain jumlah hash, idealnya harus sama dengan permintaan unggahan sebelumnya (atau direncanakan), atau bahkan “sudah” (berisi lebih sedikit bidang dalam permintaan kueri dibandingkan permintaan unggahan). Jika permintaan kueri berisi lebih banyak bidang daripada permintaan unggahan, Anda tidak akan menerima semua informasi yang diperlukan dalam respons.

Berikut adalah contoh respons terhadap kueri yang tidak semua data yang diperlukan ditemukan

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

Perhatikan bidangnya kode и label. Bidang ini muncul tiga kali dalam kamus status. Pertama kita melihat “kode” kunci global: 1006 dan “label”: “PARTIALLY_FOUND”. Selanjutnya, kunci-kunci ini ditemukan untuk setiap komponen yang kami minta - te dan ekstraksi. Dan jika untuk te sudah jelas datanya sudah ditemukan, maka untuk ekstraksi belum ada informasinya.

Seperti inilah tampilan kueri pada contoh di atas

{ "request":  [  

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

Jika Anda mengirim permintaan kueri tanpa komponen ekstraksi

{ "request":  [  

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

Maka jawabannya akan berisi informasi lengkap (“kode”: 1001, “label”: “DITEMUKAN”)

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

Jika tidak ada informasi sama sekali di cache, maka responnya adalah “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."
        }
      }
    }
  ]
}

Dalam satu panggilan API, Anda dapat mengirimkan beberapa jumlah hash sekaligus untuk verifikasi. Responsnya akan mengembalikan data dalam urutan yang sama seperti yang dikirimkan dalam permintaan.

Contoh permintaan kueri dengan beberapa jumlah sha256

{ "request":  [  

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

Respons terhadap kueri dengan beberapa jumlah 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."
        }
      }
    }
  ]
}

Meminta beberapa jumlah hash sekaligus dalam permintaan kueri juga akan memberikan efek menguntungkan pada kinerja server API.

Unduh panggilan API

Metode yang digunakan - POST (menurut dokumentasi), DAPATKAN juga berfungsi (dan mungkin tampak lebih logis)

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

Header memerlukan kunci API untuk diteruskan, isi permintaan kosong, id unduhan diteruskan ke alamat URL.

Menanggapi permintaan kueri, jika emulasi selesai dan laporan diminta saat mengunduh file, id untuk mengunduh laporan akan terlihat. Jika salinan yang sudah dibersihkan diminta, Anda harus mencari id untuk mengunduh dokumen yang sudah dibersihkan.

Secara total, kunci dalam respons terhadap kueri yang berisi nilai id untuk memuat dapat berupa:

  • rangkuman laporan

  • laporan penuh

  • pdf_laporan

  • xml_laporan

  • diekstraksi_file_download_id

Tentu saja, untuk menerima kunci ini sebagai respons terhadap permintaan kueri, kunci tersebut harus ditentukan dalam permintaan (untuk laporan) atau ingat untuk membuat permintaan menggunakan fungsi ekstraksi (untuk dokumen yang dibersihkan)

Panggilan API kuota

Metode yang digunakan - POST

Alamat panggilan - https:///tecloud/api/v1/file/quota

Untuk memeriksa sisa kuota di cloud, gunakan query kuota. Badan permintaan kosong.

Contoh respons terhadap permintaan kuota

{
  "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 Pencegahan Ancaman untuk Gerbang Keamanan

API ini dikembangkan sebelum API Pencegahan Ancaman dan ditujukan hanya untuk perangkat lokal. Untuk saat ini, ini hanya berguna jika Anda memerlukan API Ekstraksi Ancaman. Untuk Emulasi Ancaman lebih baik menggunakan API Pencegahan Ancaman biasa. Untuk menghidupkan TP API untuk SG dan konfigurasikan kunci API yang perlu Anda ikuti langkah-langkahnya sk113599. Saya sarankan memperhatikan langkah 6b dan memeriksa aksesibilitas halaman https://<IPAddressofSecurityGateway>/UserCheck/TPAPI karena jika hasilnya negatif, konfigurasi lebih lanjut tidak masuk akal. Semua panggilan API akan dikirim ke url ini. Jenis panggilan (unggah/kueri) diatur dalam kunci isi panggilan - permintaan_nama. Kunci yang juga diperlukan adalah - kunci API (Anda perlu mengingatnya selama proses konfigurasi) dan protokol_versi (saat ini versi saat ini adalah 1.1). Anda dapat menemukan dokumentasi resmi untuk API ini di sk137032. Keuntungan relatifnya mencakup kemampuan untuk mengirim beberapa file sekaligus untuk emulasi saat memuatnya, karena file dikirim sebagai string teks base64. Untuk menyandikan/mendekode file ke/dari base64 Anda dapat menggunakan konverter online di Tukang Pos untuk tujuan demonstrasi, misalnya - https://base64.guru. Untuk tujuan praktis, Anda harus menggunakan metode encode dan decode bawaan saat menulis kode.

Sekarang mari kita lihat lebih dekat fungsinya te и ekstraksi di API ini.

Untuk komponen te kamus disediakan te_options dalam permintaan unggah/kueri, dan kunci dalam permintaan ini sepenuhnya bertepatan dengan kunci te API Pencegahan Ancaman.

Contoh permintaan emulasi file di Win10 dengan laporan

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

Untuk komponen ekstraksi kamus disediakan scrub_options. Permintaan ini menentukan metode pembersihan: mengonversi ke PDF, menghapus konten aktif, atau memilih mode sesuai dengan profil Pencegahan Ancaman (nama profil ditunjukkan). Hal hebat tentang merespons permintaan API ekstraksi untuk sebuah file adalah Anda mendapatkan salinan yang sudah dibersihkan sebagai respons terhadap permintaan itu sebagai string terenkripsi base64 (Anda tidak perlu membuat permintaan kueri dan mencari id untuk mengunduh file dokumen)

Contoh permintaan untuk menghapus 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
		}
	}]
}

Membalas permintaan

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

Terlepas dari kenyataan bahwa lebih sedikit permintaan API yang diperlukan untuk mendapatkan salinan yang dibersihkan, menurut saya opsi ini kurang disukai dan nyaman dibandingkan permintaan data formulir yang digunakan di API Pencegahan Ancaman.

Koleksi Tukang Pos

Saya membuat koleksi di Postman untuk Threat Prevention API dan Threat Prevention API untuk Security Gateway, yang mewakili permintaan API paling umum. Agar ip/url server API dan kunci secara otomatis diganti ke dalam permintaan, dan jumlah hash sha256 diingat setelah mengunduh file, tiga variabel telah dibuat di dalam koleksi (Anda dapat menemukannya dengan masuk ke pengaturan koleksi Sunting -> Variabel): te_api (wajib), api_key (wajib diisi, kecuali jika menggunakan TP API dengan perangkat lokal), sha256 (biarkan kosong, tidak digunakan di TP API untuk SG).

Unduh koleksi Tukang Pos untuk API Pencegahan Ancaman

Unduh koleksi Tukang Pos untuk Pencegahan Ancaman untuk API Security Gateway

Contoh penggunaan

Di dalam komunitas Periksa Teman skrip yang ditulis dengan Python disajikan yang memeriksa file dari direktori yang diinginkan melalui API TPDan TP API untuk SG. Melalui interaksi dengan API Pencegahan Ancaman, kemampuan Anda untuk memindai file diperluas secara signifikan, karena sekarang Anda dapat memindai file di beberapa platform sekaligus (melapor masuk API Total Virus, lalu di kotak pasir Check Point), dan menerima file tidak hanya dari lalu lintas jaringan, tetapi juga mengambilnya dari drive jaringan mana pun dan, misalnya, sistem CRM.

Sumber: www.habr.com

Tambah komentar