API aracılığıyla Check Point SandBlast ile etkileşim

API aracılığıyla Check Point SandBlast ile etkileşim

Bu makale teknolojiye aşina olanlar için faydalı olacaktır. Check Point dosya öykünmesiyle (Tehdit Emülasyonu) ve proaktif dosya temizleme (Tehdit Çıkarma) ve bu görevleri otomatikleştirmeye yönelik bir adım atmak istiyor. Kontrol Noktası var Tehdit Önleme API'sihem bulutta hem de yerel cihazlarda çalışan ve işlevsel olarak web/smtp/ftp/smb/nfs trafik akışlarındaki dosyaları kontrol etmekle aynıdır. Bu makale kısmen yazarın resmi belgelerdeki bir dizi makaleyi yorumlamasıdır, ancak kendi çalışma deneyimime ve kendi örneklerime dayanmaktadır. Ayrıca makalede, Tehdit Önleme API'si ile çalışmaya yönelik yazarın Postacı koleksiyonlarını bulacaksınız.

Temel kısaltmalar

Tehdit Önleme API'si, API'de aşağıdaki metin değerleri aracılığıyla çağrılan üç ana bileşenle çalışır:

av — Bilinen tehditlerin imza analizinden sorumlu Anti-Virüs bileşeni.

te - Korumalı alandaki dosyaları kontrol etmekten ve öykünmeden sonra kötü niyetli/iyi niyetli bir karara varmaktan sorumlu Tehdit Emülasyonu bileşeni.

çıkarma - Tehdit Çıkarma bileşeni, ofis belgelerini kullanıcılara/sistemlere hızlı bir şekilde teslim etmek için hızlı bir şekilde güvenli bir forma dönüştürmekten (potansiyel olarak kötü amaçlı tüm içeriğin kaldırıldığı) sorumludur.

API yapısı ve ana sınırlamalar

Tehdit Önleme API'si yalnızca 4 istek kullanır - yükleme, sorgulama, indirme ve kota. Dört isteğin tamamı için başlıkta, parametreyi kullanarak API anahtarını iletmeniz gerekir. Yetki. İlk bakışta yapı, olduğundan çok daha basit görünebilir. Yönetim API'siancak yükleme ve sorgulama isteklerindeki alanların sayısı ve bu isteklerin yapısı oldukça karmaşıktır. Bunlar işlevsel olarak bir ağ geçidi/korumalı alan güvenlik ilkesindeki Tehdit Önleme profilleriyle karşılaştırılabilir.

Şu anda Tehdit Önleme API'sinin tek sürümü yayınlandı - 1.0; API çağrılarının URL'si şunları içermelidir; v1 sürümü belirtmeniz gereken kısımda. Management API'den farklı olarak URL'de API sürümünün belirtilmesi gerekir, aksi takdirde istek yürütülmeyecektir.

Anti-Virüs bileşeni, diğer bileşenler (te, çıkarma) olmadan çağrıldığında şu anda yalnızca md5 karma toplamlarına sahip sorgu isteklerini desteklemektedir. Tehdit Emülasyonu ve Tehdit Çıkarma aynı zamanda sha1 ve sha256 hash toplamlarını da destekler.

Sorgularda hata yapmamak çok önemli! İstek hatasız olarak yürütülebilir, ancak tamamen gerçekleştirilemez. Biraz ileriye baktığımızda sorgularda hata/yazım hatası olduğunda neler olabileceğine bakalım.

Raporlar(raporlar) kelimesiyle yazım hatası içeren istek

{ "request":  [  

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

Yanıtta hata olmayacak ancak raporlar hakkında hiçbir bilgi olmayacak

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

Ancak rapor anahtarında yazım hatası olmayan bir istek için

{ "request":  [  

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

Raporları indirmek için zaten kimlik içeren bir yanıt alıyoruz

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

Yanlış/süresi dolmuş bir API anahtarı gönderirsek yanıt olarak 403 hatası alırız.

SandBlast API: bulutta ve yerel cihazlarda

API istekleri, Tehdit Emülasyonu bileşeninin (blade) etkin olduğu Check Point cihazlarına gönderilebilir. İsteklerin adresi olarak cihazın ip/url'sini ve 18194 numaralı bağlantı noktasını kullanmanız gerekir (örneğin, https://10.10.57.19:18194/tecloud/api/v1/dosya/sorgu). Ayrıca cihazdaki güvenlik politikasının bu bağlantıya izin verdiğinden de emin olmalısınız. Varsayılan olarak yerel cihazlarda API anahtarı aracılığıyla yetkilendirme kapalı ve istek başlıklarındaki Yetkilendirme anahtarı hiç gönderilmeyebilir.

CheckPoint bulutuna yönelik API istekleri şu adrese gönderilmelidir: te.checkpoint.com (örneğin - https://te.checkpoint.com/tecloud/api/v1/dosya/sorgu). API anahtarı, Check Point ortakları veya şirketin yerel ofisi ile iletişime geçilerek 60 günlük deneme lisansı olarak edinilebilir.

Yerel cihazlarda Tehdit Çıkarma henüz standart olarak desteklenmemektedir. Tehdit Önleme API'si ve kullanılmalıdır Güvenlik Ağ Geçidi için Tehdit Önleme API'si (bu konuyu makalenin sonunda daha ayrıntılı olarak konuşacağız).

Yerel cihazlar kota isteğini desteklemez.

Aksi takdirde yerel cihazlara yapılan talepler ile buluta yapılan talepler arasında hiçbir fark yoktur.

API çağrısını yükle

Kullanılan yöntem – POST

Arama adresi - https:///tecloud/api/v1/dosya/yükleme

İstek iki bölümden (form-veri) oluşur: öykünme/temizleme amaçlı bir dosya ve metin içeren bir istek gövdesi.

Metin isteği boş olamaz ancak herhangi bir yapılandırma içermeyebilir. İsteğin başarılı olması için istekte en azından aşağıdaki metni göndermelisiniz:

Bir yükleme isteği için gereken minimum miktar

HTTP GÖNDERİ

https:///tecloud/api/v1/dosya/yükleme

Başlıkları:

Yetki:

Vücut

{

"rica etmek": {

}

}

fileto

fileto

Bu durumda dosya varsayılan parametrelere uygun olarak işlenecektir: bileşen - te, işletim sistemi görüntüleri - XP kazanın ve 7 kazanın, bir rapor oluşturmadan.

Metin isteğindeki ana alanlara ilişkin yorumlar:

dosya adı и dosya tipi Bunları boş bırakabilir veya hiç göndermeyebilirsiniz çünkü bu, dosya yüklerken özellikle yararlı bir bilgi değildir. API yanıtında bu alanlar, indirilen dosyanın adına göre otomatik olarak doldurulacak ve önbellekteki bilgilerin yine de md5/sha1/sha256 hash miktarları kullanılarak aranması gerekecek.

Boş dosya_adı ve dosya_tipi içeren örnek istek

{

"request": {

"file_name": "",

"file_type": "",

}

}

Özellikler — sanal alanda işlem yaparken gerekli işlevselliği gösteren bir liste - av (Anti-Virüs), te (Tehdit Emülasyonu), çıkarma (Tehdit Çıkarma). Bu parametre hiç aktarılmazsa, yalnızca varsayılan bileşen kullanılacaktır - te (Tehdit Emülasyonu).

Mevcut üç bileşenin kontrolünü etkinleştirmek için bu bileşenleri API isteğinde belirtmeniz gerekir.

Av, te ve çıkarma işlemlerini kontrol eden bir istek örneği

{ "request":  [  

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

Te bölümündeki tuşlar

görüntüleri — Kontrolün gerçekleştirileceği işletim sistemlerinin kimlik ve revizyon numaralarını içeren sözlükleri içeren bir liste. Kimlikler ve revizyon numaraları tüm yerel cihazlar ve bulut için aynıdır.

İşletim sistemleri ve revizyonların listesi

Kullanılabilir İşletim Sistemi Görüntü Kimliği

Revizyon

Görüntü İşletim Sistemi ve Uygulama

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 ve ActiveX 10.0
Java Çalışma Zamanı: 1.6.0u22

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

1

Microsoft Windows: 7 - 32bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash player: 10.2r152 (Fişe takmakActiveX)
Java Çalışma Zamanı: 1.6.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2010
Adobe Acrobat Reader: 9.4
Flash player: 11.0.1.152 (Fişe takmak & ActiveX)
Java Çalışma Zamanı: 1.7.0u0

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

1

Microsoft Windows: 7 - 32bit
Office: 2013
Adobe Acrobat Reader: 11.0
Flash player: 15 (Fişe takmak & ActiveX)
Java Çalışma Zamanı: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64bit
Office: 2013 (32 bit)
Adobe Acrobat Reader: 11.0.01
Flash player: 13 (Fişe takmak & ActiveX)
Java Çalışma Zamanı: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64bit
Office: 2013 (64 bit)
Adobe Acrobat Reader: 11.0.10
Flash player: 18.0.0.160 (Fişe takmak & ActiveX)
Java Çalışma Zamanı: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Office: Professional Plus 2016 tr-tr  
Adobe Acrobat Reader: DC 2015 MUI
Flash player: 20 (Fişe takmak & ActiveX)
Java Çalışma Zamanı: 1.7.0u9

Görüntü anahtarı hiç belirtilmezse, Check Point tarafından önerilen görüntülerde (şu anda Win XP ve Win 7) öykünme gerçekleşecektir. Bu görseller, performans ve yakalama oranı arasındaki en iyi denge dikkate alınarak önerilmektedir.

raporları — dosyanın kötü amaçlı olduğunun ortaya çıkması durumunda talep edeceğimiz raporların listesi. Aşağıdaki seçenekler mevcuttur:

  1. özet - Emülasyonla ilgili bir rapor içeren .tar.gz arşivi herkes istenen görüntüler (hem bir html sayfası hem de emülatör işletim sisteminden bir video, bir ağ trafiği dökümü, json'da bir rapor ve parola korumalı bir arşivdeki örneğin kendisi gibi bileşenler). Cevabın anahtarını arıyoruz - Özet raporu Raporun daha sonra indirilmesi için.

  2. pdf - emülasyonla ilgili belge biri Birçoğunun Akıllı Konsol aracılığıyla almaya alışkın olduğu görüntü. Cevabın anahtarını arıyoruz - pdf_report Raporun daha sonra indirilmesi için.

  3. xml - emülasyonla ilgili belge biri rapordaki parametrelerin daha sonra ayrıştırılması için uygun görüntü. Cevabın anahtarını arıyoruz - xml_report Raporun daha sonra indirilmesi için.

  4. katran - emülasyonla ilgili bir rapor içeren .tar.gz arşivi biri istenen görüntüler (hem bir html sayfası hem de emülatör işletim sisteminden bir video, bir ağ trafiği dökümü, json'da bir rapor ve parola korumalı bir arşivdeki örneğin kendisi gibi bileşenler). Cevabın anahtarını arıyoruz - tam rapor Raporun daha sonra indirilmesi için.

Özet raporun içinde neler var?API aracılığıyla Check Point SandBlast ile etkileşim

Full_report, pdf_report, xml_report anahtarları her işletim sistemi için sözlükte bulunur

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

Ancak Summary_report anahtarı - genel olarak öykünme için bir tane var

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

Tar ve xml ve pdf raporlarını aynı anda talep edebilir, özet ve tar ve xml talep edebilirsiniz. Özet rapor ve pdf dosyasını aynı anda talep etmek mümkün olmayacaktır.

Çıkarma bölümündeki tuşlar

Tehdit ayıklama için yalnızca iki anahtar kullanılır:

yöntem — pdf (pdf'ye dönüştürün, varsayılan olarak kullanılır) veya temizleyin (etkin içeriğin temizlenmesi).

extract_parts_codes - yalnızca temizleme yöntemi için geçerli olan aktif içeriğin kaldırılmasına yönelik kodların listesi

İçeriği dosyalardan kaldırmak için kodlar

Kod

Açıklama

1025

Bağlantılı Nesneler

1026

Makrolar ve Kod

1034

Hassas Köprüler

1137

PDF GoToR Eylemleri

1139

PDF Başlatma Eylemleri

1141

PDF URI Eylemleri

1142

PDF Ses Eylemleri

1143

PDF Film Eylemleri

1150

PDF JavaScript Eylemleri

1151

PDF Gönderim Formu Eylemleri

1018

Veritabanı Sorguları

1019

Gömülü Nesneler

1021

Hızlı Veri Kaydetme

1017

Özel Özellikler

1036

İstatistiksel Özellikler

1037

Özet Özellikler

Temizlenmiş bir kopyayı indirmek için, birkaç saniye sonra, istek metninde dosyanın karma miktarını ve çıkarma bileşenini belirterek bir sorgu isteği (aşağıda tartışılacaktır) yapmanız da gerekecektir. Temizlenen dosyayı, extract_file_download_id sorgusuna verilen yanıttaki kimliği kullanarak alabilirsiniz. Bir kez daha, biraz ileriye bakarak, temizlenmiş bir belgeyi indirmek için bir kimlik aramak için istek ve sorgu yanıtı örnekleri veriyorum.

Extract_file_download_id anahtarını aramak için sorgu isteği

{ "request":  [  

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

Sorguya yanıt (extract_file_download_id anahtarını arayın)

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

Genel bakış

Bir API çağrısında doğrulama için yalnızca bir dosya gönderebilirsiniz.

Av bileşeni, anahtarlarla ek bir bölüm gerektirmez, sözlükte belirtmeniz yeterlidir. Özellikler.

API çağrısını sorgula

Kullanılan yöntem – POST

Arama adresi - https:///tecloud/api/v1/dosya/sorgu

Bir dosyayı indirme için göndermeden önce (yükleme isteği), API sunucusundaki yükü optimize etmek için sanal alan önbelleğini (sorgu isteği) kontrol etmeniz önerilir, çünkü API sunucusu zaten indirilen dosya hakkında bilgi ve karara sahip olabilir. Çağrı yalnızca bir metin bölümünden oluşur. İsteğin gerekli kısmı dosyanın sha1/sha256/md5 hash miktarıdır. Bu arada, yükleme isteğine yanıt olarak alabilirsiniz.

Sorgu için gereken minimum değer

HTTP GÖNDERİ

https:///tecloud/api/v1/dosya/sorgu

Başlıkları:

Yetki:

Vücut

{

"rica etmek": {

"sha256":

}

}

Sha1/md5/sha256 hash miktarlarının görülebildiği bir yükleme isteğine verilen yanıt örneği

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

Sorgu isteği, karma miktarına ek olarak ideal olarak yükleme isteğiyle aynı (veya olması planlanan) veya hatta "zaten" olmalıdır (sorgu isteğinde yükleme isteğinden daha az alan içermelidir). Sorgu isteğinin, yükleme isteğinde bulunandan daha fazla alan içermesi durumunda, gerekli tüm bilgileri yanıtta alamazsınız.

Gerekli tüm verilerin bulunmadığı bir sorguya verilen yanıtın bir örneğini burada bulabilirsiniz

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

Alanlara dikkat edin kod и etiket. Bu alanlar durum sözlüklerinde üç kez görünür. İlk önce global anahtar olan “code”: 1006 ve “label”: “PARTIALLY_FOUND”u görüyoruz. Daha sonra, bu anahtarlar talep ettiğimiz her bir bileşen için bulunur - te ve çıkarma. Ve eğer verinin bulunduğu açıksa, o zaman çıkarma için hiçbir bilgi yoktur.

Yukarıdaki örnekte sorgu böyle görünüyordu

{ "request":  [  

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

Çıkarma bileşeni olmadan bir sorgu isteği gönderirseniz

{ "request":  [  

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

Daha sonra cevap tüm bilgileri içerecektir (“kod”: 1001, “etiket”: “BULUNDU”)

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

Önbellekte hiç bilgi yoksa yanıt "etiket" olacaktır: "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."
        }
      }
    }
  ]
}

Tek bir API çağrısında, doğrulama için birden fazla karma miktarını aynı anda gönderebilirsiniz. Yanıt, verileri istekte gönderildiği sırayla döndürecektir.

Birkaç sha256 tutarını içeren örnek sorgu isteği

{ "request":  [  

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

Birden fazla sha256 tutarı içeren bir sorguya yanıt

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

Bir sorgu isteğinde birden fazla hash toplamının aynı anda talep edilmesi, API sunucusunun performansı üzerinde de faydalı bir etkiye sahip olacaktır.

API çağrısını indir

Kullanılan yöntem – POST (belgelere göre), GET ayrıca işe yarıyor (ve daha mantıklı görünebilir)

Arama adresi - https:///tecloud/api/v1/file/download?id=

Başlık, API anahtarının iletilmesini gerektiriyor, isteğin gövdesi boş, indirme kimliği URL adresine aktarılıyor.

Bir sorgu isteğine yanıt olarak, öykünme tamamlanmışsa ve dosya indirilirken raporlar istenmişse, raporların indirilmesine ilişkin kimlik görünür olacaktır. Temizlenmiş bir kopya isteniyorsa, temizlenmiş belgeyi indirmek için kimliği aramalısınız.

Toplamda, yükleme için kimlik değerini içeren sorguya verilen yanıttaki anahtarlar şunlar olabilir:

  • Özet raporu

  • tam rapor

  • pdf_report

  • xml_report

  • extract_file_download_id

Elbette, sorgu isteğine yanıt olarak bu anahtarların alınabilmesi için bunların istekte belirtilmesi (raporlar için) veya çıkarma işlevini kullanarak bir istekte bulunmayı unutmaması (temizlenmiş belgeler için) gerekir.

Kota API çağrısı

Kullanılan yöntem – POST

Arama adresi - https:///tecloud/api/v1/dosya/kota

Bulutta kalan kotayı kontrol etmek için kota sorgusunu kullanın. İstek gövdesi boş.

Kota isteğine örnek yanıt

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

Güvenlik Ağ Geçidi için Tehdit Önleme API'si

Bu API, Tehdit Önleme API'sinden önce geliştirilmiştir ve yalnızca yerel cihazlara yöneliktir. Şimdilik yalnızca Tehdit Çıkarma API'sine ihtiyacınız varsa faydalı olabilir. Tehdit Emülasyonu için normal Tehdit Önleme API'sini kullanmak daha iyidir. Açmak için SG için TP API'si ve aşağıdaki adımları izlemeniz gereken API anahtarını yapılandırın: sk113599. Adım 6b'ye dikkat etmenizi ve sayfanın erişilebilirliğini kontrol etmenizi öneririm https://<IPAddressofSecurityGateway>/UserCheck/TPAPI çünkü olumsuz sonuç durumunda daha fazla yapılandırmanın bir anlamı yok. Tüm API çağrıları bu URL'ye gönderilecektir. Çağrı türü (yükleme/sorgulama) çağrı gövde anahtarında düzenlenir – istek_adı. Ayrıca gerekli anahtarlar - api_anahtarı (yapılandırma işlemi sırasında bunu hatırlamanız gerekir) ve protokol_versiyonu (şu anda güncel sürüm 1.1'dir). Bu API'nin resmi belgelerini şu adreste bulabilirsiniz: sk137032. Göreceli avantajlar arasında, dosyalar base64 metin dizesi olarak gönderildiğinden, yükleme sırasında öykünme için birden fazla dosyayı aynı anda gönderme yeteneği yer alır. Base64'e/baseXNUMX'ten dosyaları kodlamak/kodunu çözmek için Postman'da gösteri amaçlı bir çevrimiçi dönüştürücü kullanabilirsiniz, örneğin - https://base64.guru. Pratik amaçlar için, kod yazarken yerleşik kodlama ve kod çözme yöntemlerini kullanmalısınız.

Şimdi fonksiyonlara daha yakından bakalım te и çıkarma bu API'de.

Bileşen için te sözlük sağlandı te_options yükleme/sorgu isteklerinde ve bu istekteki anahtarlar, içindeki anahtarlarla tamamen örtüşmektedir. Tehdit Önleme API'si.

Win10'da raporlarla dosya öykünmesi için örnek istek

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

Bileşen için çıkarma sözlük sağlandı scrub_options. Bu istek temizleme yöntemini belirtir: PDF'ye dönüştürün, etkin içeriği temizleyin veya Tehdit Önleme profiline uygun bir mod seçin (profil adı belirtilir). Bir dosya için çıkarma API isteğine yanıt vermenin harika yanı, bu isteğe yanıt olarak base64 şifreli dize olarak temizlenmiş bir kopya almanızdır (bir sorgu isteği yapmanıza ve dosyayı indirmek için kimliğe bakmanıza gerek yoktur). belge)

Bir dosyayı temizleme isteği örneği

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

Bir isteği yanıtlama

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

Temizlenmiş bir kopya elde etmek için daha az API isteği gerekmesine rağmen, bu seçeneği, burada kullanılan form verisi isteğine göre daha az tercih edilir ve kullanışlı buluyorum. Tehdit Önleme API'si.

Postacı Koleksiyonları

Postman'da hem Tehdit Önleme API'si hem de Güvenlik Ağ Geçidi için Tehdit Önleme API'si için, en yaygın API isteklerini temsil eden koleksiyonlar oluşturdum. Sunucu ip/url API ve anahtarının isteklere otomatik olarak eklenmesi ve dosya indirildikten sonra sha256 hash miktarının hatırlanması için koleksiyonların içinde üç değişken oluşturulmuştur (bunları koleksiyon ayarlarına giderek bulabilirsiniz) Düzenle -> Değişkenler): te_api (gerekli), api_key (yerel cihazlarla TP API kullanılması dışında doldurulması gerekir), sha256 (boş bırakın, SG için TP API'sinde kullanılmaz).

Tehdit Önleme API'si için Postacı koleksiyonunu indirin

Security Gateway API'sine yönelik Tehdit Önleme için Postman koleksiyonunu indirin

Примеры использования

Toplulukta Montaj İlişkilerini Kontrol Et Python'da yazılmış komut dosyaları, dosyaları istenen dizinden kontrol ederek sunulur. TP API'siVe SG için TP API'si. Tehdit Önleme API'si ile etkileşim sayesinde, dosyaları tarama yeteneğiniz önemli ölçüde arttı, çünkü artık dosyaları aynı anda birden fazla platformda tarayabilirsiniz (check-in VirüsToplam API'si, ve ardından Check Point sanal alanında) ve dosyaları yalnızca ağ trafiğinden değil, aynı zamanda herhangi bir ağ sürücüsünden ve örneğin CRM sistemlerinden de alın.

Kaynak: habr.com

Yorum ekle