Ndërveprimi me Check Point SandBlast nëpërmjet API

Ndërveprimi me Check Point SandBlast nëpërmjet API

Ky artikull do të jetë i dobishëm për ata që janë të njohur me teknologjinë Kontrollo Point me emulim skedari (Emulimi i kërcënimit) dhe pastrim proaktiv të skedarëve (Nxjerrja e kërcënimit) dhe dëshiron të ndërmarrë një hap drejt automatizimit të këtyre detyrave. Check Point ka API për Parandalimin e Kërcënimeve, i cili funksionon si në renë kompjuterike ashtu edhe në pajisjet lokale, dhe funksionalisht është identik me kontrollimin e skedarëve në rrjedhat e trafikut web/smtp/ftp/smb/nfs. Ky artikull është pjesërisht interpretimi i autorit i një grupi artikujsh nga dokumentacioni zyrtar, por i bazuar në përvojën time të funksionimit dhe shembujt e mi. Gjithashtu në artikull do të gjeni koleksionet e postierit të autorit për të punuar me API-në e Parandalimit të Kërcënimeve.

Shkurtesat bazë

API për Parandalimin e Kërcënimeve funksionon me tre komponentë kryesorë, të cilët thirren në API përmes vlerave të mëposhtme të tekstit:

av — Komponenti anti-virus, përgjegjës për analizën e nënshkrimit të kërcënimeve të njohura.

te - Komponenti i Emulimit të Kërcënimeve, përgjegjës për kontrollimin e skedarëve në sandbox dhe marrjen e një vendimi keqdashës/dashamirës pas emulimit.

nxjerrja - Komponenti i Nxjerrjes së Kërcënimeve, përgjegjës për konvertimin e shpejtë të dokumenteve të zyrës në një formë të sigurt (në të cilën hiqet e gjithë përmbajtja potencialisht me qëllim të keq), në mënyrë që t'i dorëzojë ato shpejt te përdoruesit/sistemet.

Struktura e API dhe kufizimet kryesore

Threat Prevention API përdor vetëm 4 kërkesa - ngarkoni, kërkoni, shkarkoni dhe kuotoni. Në kokën për të katër kërkesat, duhet të kaloni çelësin API duke përdorur parametrin Autorizim. Në pamje të parë, struktura mund të duket shumë më e thjeshtë se sa në Menaxhimi API, por numri i fushave në kërkesat për ngarkim dhe pyetje dhe struktura e këtyre kërkesave janë mjaft komplekse. Këto mund të krahasohen funksionalisht me profilet e Parandalimit të Kërcënimeve në një politikë sigurie të portës/sandbox.

Për momentin, versioni i vetëm i API-së për Parandalimin e Kërcënimeve është lëshuar - 1.0; URL-ja për thirrjet API duhet të përfshijë v1 në pjesën ku duhet të specifikoni versionin. Ndryshe nga API i Menaxhimit, është e nevojshme të tregohet versioni i API në URL, përndryshe kërkesa nuk do të ekzekutohet.

Komponenti Anti-Virus, kur thirret pa komponentë të tjerë (te, ekstraktimi), aktualisht mbështet vetëm kërkesat për pyetje me shuma hash md5. Emulimi i Kërcënimit dhe Ekstraktimi i Kërcënimeve gjithashtu mbështesin shumat e hash sha1 dhe sha256.

Është shumë e rëndësishme të mos bëni gabime në pyetje! Kërkesa mund të ekzekutohet pa gabime, por jo plotësisht. Duke parë pak përpara, le të shohim se çfarë mund të ndodhë kur ka gabime / gabime shtypi në pyetje.

Kërkesë me një gabim shkrimi me fjalën raporte (raporte)

{ "request":  [  

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

Nuk do të ketë asnjë gabim në përgjigje, por nuk do të ketë fare informacion për raportet

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

Por për një kërkesë pa një gabim shtypi në raportet kyç

{ "request":  [  

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

Ne marrim një përgjigje që tashmë përmban ID për shkarkimin e raporteve

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

Nëse dërgojmë një çelës API të pasaktë/të skaduar, do të marrim një gabim 403 si përgjigje.

SandBlast API: në cloud dhe në pajisjet lokale

Kërkesat për API mund të dërgohen te pajisjet Check Point që kanë të aktivizuar komponentin Threat Emulation (blade). Si adresë për kërkesat, duhet të përdorni ip/url-në e pajisjes dhe portin 18194 (për shembull, https://10.10.57.19:18194/tecloud/api/v1/file/query). Duhet të siguroheni gjithashtu që politika e sigurisë në pajisje ta lejon këtë lidhje. Autorizimi nëpërmjet çelësit API në pajisjet lokale si parazgjedhje fikur dhe çelësi i autorizimit në titujt e kërkesës mund të mos dërgohet fare.

Kërkesat API në renë e CheckPoint duhet të dërgohen te te.checkpoint.com (për shembull - https://te.checkpoint.com/tecloud/api/v1/file/query). Çelësi API mund të merret si licencë prove për 60 ditë duke kontaktuar partnerët e Check Point ose zyrën lokale të kompanisë.

Në pajisjet lokale, Threat Extraction nuk mbështetet ende si standard. API për Parandalimin e Kërcënimeve dhe duhet të përdoret API për Parandalimin e Kërcënimeve për Portën e Sigurisë (Ne do të flasim për të në më shumë detaje në fund të artikullit).

Pajisjet lokale nuk e mbështesin kërkesën për kuotë.

Përndryshe, nuk ka dallime midis kërkesave për pajisjet lokale dhe renë kompjuterike.

Ngarko thirrje API

Metoda e përdorur − POST

Adresa e thirrjes - https:///tecloud/api/v1/file/upload

Kërkesa përbëhet nga dy pjesë (formë-të dhëna): një skedar i destinuar për emulim/pastrim dhe një trup kërkese me tekst.

Kërkesa për tekst nuk mund të jetë bosh, por mund të mos përmbajë ndonjë konfigurim. Në mënyrë që kërkesa të jetë e suksesshme, duhet të dërgoni të paktën tekstin e mëposhtëm në kërkesë:

Minimumi i kërkuar për një kërkesë ngarkimi

HTTP POST

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

Titujt:

autorizimi:

trup

{

"kërkesë": {

}

}

Skedar

Skedar

Në këtë rast, skedari do të përpunohet në përputhje me parametrat e paracaktuar: komponenti - te, imazhet e OS - Win XP dhe Win 7, pa gjeneruar një raport.

Komentet mbi fushat kryesore në kërkesën për tekst:

emri i skedarit и lloji i skedarit Mund t'i lini bosh ose të mos i dërgoni fare, pasi ky nuk është një informacion veçanërisht i dobishëm kur ngarkoni një skedar. Në përgjigjen API, këto fusha do të plotësohen automatikisht në bazë të emrit të skedarit të shkarkuar dhe informacioni në cache do të duhet ende të kërkohet duke përdorur sasitë hash md5/sha1/sha256.

Shembull i kërkesës me emrin e skedarit dhe llojin e skedarit bosh

{

"request": {

"file_name": "",

"file_type": "",

}

}

karakteristika — një listë që tregon funksionalitetin e nevojshëm gjatë përpunimit në sandbox - av (Anti-Virus), te (Emulimi i kërcënimit), nxjerrja (Nxjerrja e kërcënimit). Nëse ky parametër nuk kalohet fare, atëherë do të përdoret vetëm komponenti i paracaktuar - te (Threat Emulation).

Për të mundësuar kontrollin në tre komponentët e disponueshëm, duhet t'i specifikoni këto komponentë në kërkesën API.

Shembull i një kërkese me kontroll në av, te dhe nxjerrje

{ "request":  [  

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

Çelësat në seksionin te

images — një listë që përmban fjalorë me id dhe numrin e rishikimit të sistemeve operative në të cilat do të kryhet kontrolli. ID-të dhe numrat e rishikimit janë të njëjtë për të gjitha pajisjet lokale dhe cloud.

Lista e sistemeve operative dhe rishikimet

ID-ja e imazhit të disponueshëm të OS

Rishikim

Sistemi operativ i imazhit dhe aplikacioni

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Zyrë: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 dhe ActiveX 10.0
Koha e ekzekutimit në Java: 1.6.0u22

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

1

Microsoft Windows: 7 - 32 bit
Zyrë: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player: 10.2r152 (pluginActiveX)
Koha e ekzekutimit në Java: 1.6.0u0

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

1

Microsoft Windows: 7 - 32 bit
Zyrë: 2010
Adobe Acrobat Reader: 9.4
Flash Player: 11.0.1.152 (plugin & ActiveX)
Koha e ekzekutimit në Java: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 bit
Zyrë: 2013
Adobe Acrobat Reader: 11.0
Flash Player: 15 (plugin & ActiveX)
Koha e ekzekutimit në Java: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64 bit
Zyrë: 2013 (32 bit)
Adobe Acrobat Reader: 11.0.01
Flash Player: 13 (plugin & ActiveX)
Koha e ekzekutimit në Java: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64 bit
Zyrë: 2013 (64 bit)
Adobe Acrobat Reader: 11.0.10
Flash Player: 18.0.0.160 (plugin & ActiveX)
Koha e ekzekutimit në Java: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Zyrë: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Flash Player: 20 (plugin & ActiveX)
Koha e ekzekutimit në Java: 1.7.0u9

Nëse çelësi i imazheve nuk është fare i specifikuar, atëherë emulimi do të bëhet në imazhet e rekomanduara nga Check Point (aktualisht Win XP dhe Win 7). Këto imazhe rekomandohen bazuar në konsideratat e balancës më të mirë të performancës dhe shkallës së kapjes.

Raportet — një listë raportesh që kërkojmë në rast se skedari rezulton të jetë me qëllim të keq. Opsionet e mëposhtme janë në dispozicion:

  1. përmbledhje - Arkivi .tar.gz që përmban një raport mbi emulimin nga të gjithë imazhet e kërkuara (si një faqe html ashtu edhe komponentë të tillë si një video nga emulatori OS, një grumbullim i trafikut në rrjet, një raport në json dhe vetë mostra në një arkiv të mbrojtur me fjalëkalim). Ne po kërkojmë çelësin në përgjigje - raporti_përmbledhës për shkarkimin e mëvonshëm të raportit.

  2. pdf - dokument për emulimin në një imazh, të cilin shumë janë mësuar ta marrin përmes Smart Console. Ne po kërkojmë çelësin në përgjigje - pdf_raport për shkarkimin e mëvonshëm të raportit.

  3. xml - dokument për emulimin në një imazh, i përshtatshëm për analizimin e mëvonshëm të parametrave në raport. Ne po kërkojmë çelësin në përgjigje - xml_raport për shkarkimin e mëvonshëm të raportit.

  4. katran - Arkivi .tar.gz që përmban një raport mbi emulimin në një imazhet e kërkuara (si një faqe html ashtu edhe komponentë të tillë si një video nga emulatori OS, një grumbullim i trafikut në rrjet, një raport në json dhe vetë mostra në një arkiv të mbrojtur me fjalëkalim). Ne po kërkojmë çelësin në përgjigje - raporti i plotë për shkarkimin e mëvonshëm të raportit.

Çfarë ka brenda raportit përmbledhësNdërveprimi me Check Point SandBlast nëpërmjet API

Çelësat full_report, pdf_report, xml_report janë në fjalor për secilin 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."
        }
      }
    }
  ]
}

Por çelësi summary_report - ekziston një për emulim në përgjithësi

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

Ju mund të kërkoni raporte tar dhe xml dhe pdf në të njëjtën kohë, mund të kërkoni përmbledhje dhe tar dhe xml. Nuk do të jetë e mundur të kërkohet një raport përmbledhës dhe një pdf në të njëjtën kohë.

Çelësat në seksionin e nxjerrjes

Për nxjerrjen e kërcënimit, përdoren vetëm dy çelësa:

metodë — pdf (konvertoni në pdf, përdoret si parazgjedhje) ose pastroni (pastrimi i përmbajtjes aktive).

Kodet e_pjesëve të nxjerra - lista e kodeve për heqjen e përmbajtjes aktive, e zbatueshme vetëm për metodën e pastër

Kodet për heqjen e përmbajtjes nga skedarët

kod

Përshkrim

1025

Objektet e lidhura

1026

Makrot dhe kodi

1034

Hiperlidhje të ndjeshme

1137

Veprimet PDF GoToR

1139

Veprimet e nisjes së PDF-së

1141

Veprimet PDF URI

1142

Veprimet e zërit PDF

1143

Veprimet e filmit PDF

1150

Veprimet e JavaScript PDF

1151

Veprimet e formularit të paraqitjes në PDF

1018

Kërkesat e bazës së të dhënave

1019

Objektet e ngulitura

1021

Ruajtja e shpejtë e të dhënave

1017

Vetitë e personalizuara

1036

Vetitë statistikore

1037

Vetitë përmbledhëse

Për të shkarkuar një kopje të pastruar, do t'ju duhet gjithashtu të bëni një kërkesë për pyetje (e cila do të diskutohet më poshtë) pas disa sekondash, duke specifikuar sasinë hash të skedarit dhe komponentin e nxjerrjes në tekstin e kërkesës. Ju mund të merrni skedarin e pastruar duke përdorur ID-në nga përgjigja ndaj pyetjes - extracted_file_download_id. Edhe një herë, duke parë pak përpara, jap shembuj të një kërkese dhe një përgjigje pyetjeje për të kërkuar një ID për shkarkimin e një dokumenti të pastruar.

Kërkesë pyetëse për të kërkuar çelësin e nxjerrë_file_download_id

{ "request":  [  

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

Përgjigja ndaj pyetjes (kërkoni për çelësin extracted_file_download_id)

{
    "response": [
        {
            "status": {
                "code": 1001,
                "label": "FOUND",
                "message": "The request has been fully answered."
            },
            "sha256": "9a346005ee8c9adb489072eb8b5b61699652962c17596de9c326ca68247a8876",
            "file_type": "",
            "file_name": "",
            "features": [
                "extraction"
            ],
            "extraction": {
                "method": "pdf",
                "extract_result": "CP_EXTRACT_RESULT_SUCCESS",
                "extracted_file_download_id": "b5f2b34e-3603-4627-9e0e-54665a531ab2",
                "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                "time": "0.013",
                "extract_content": "Macros and Code",
                "extraction_data": {
                    "input_extension": "xls",
                    "input_real_extension": "xls",
                    "message": "OK",
                    "output_file_name": "kp-20-xls.cleaned.xls.pdf",
                    "protection_name": "Potential malicious content extracted",
                    "protection_type": "Conversion to PDF",
                    "protocol_version": "1.0",
                    "risk": 5.0,
                    "scrub_activity": "Active content was found - XLS file was converted to PDF",
                    "scrub_method": "Convert to PDF",
                    "scrub_result": 0.0,
                    "scrub_time": "0.013",
                    "scrubbed_content": "Macros and Code"
                },
                "tex_product": false,
                "status": {
                    "code": 1001,
                    "label": "FOUND",
                    "message": "The request has been fully answered."
                }
            }
        }
    ]
}

Përmbledhje

Në një telefonatë API, mund të dërgoni vetëm një skedar për verifikim.

Komponenti av nuk kërkon një seksion shtesë me çelësa, mjafton ta specifikoni atë në fjalor karakteristika.

Pyetje për thirrjen API

Metoda e përdorur − POST

Adresa e thirrjes - https:///tecloud/api/v1/file/query

Para se të dërgoni një skedar për shkarkim (kërkesë për ngarkim), këshillohet që të kontrolloni cache-in e sandbox (kërkesës për pyetje) në mënyrë që të optimizoni ngarkesën në serverin API, pasi serveri API mund të ketë tashmë informacion dhe një verdikt për skedarin e shkarkuar. Thirrja përbëhet vetëm nga një pjesë tekstuale. Pjesa e kërkuar e kërkesës është sha1/sha256/md5 sasia hash e skedarit. Nga rruga, ju mund ta merrni atë në përgjigjen e kërkesës së ngarkimit.

Minimumi i kërkuar për pyetje

HTTP POST

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

Titujt:

autorizimi:

trup

{

"kërkesë": {

"sha256":

}

}

Një shembull i një përgjigjeje ndaj një kërkese për ngarkim, ku shumat e hash sha1/md5/sha256 janë të dukshme

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

Kërkesa për pyetje, përveç sasisë së hash-it, në mënyrë ideale duhet të jetë e njëjtë me kërkesën e ngarkimit (ose është planifikuar të jetë), ose edhe "tashmë" (përmbajë më pak fusha në kërkesën e pyetjes sesa në kërkesën e ngarkimit). Në rastin kur kërkesa për pyetje përmban më shumë fusha sesa në kërkesën për ngarkim, nuk do të merrni të gjithë informacionin e kërkuar në përgjigje.

Këtu është një shembull i një përgjigjeje ndaj një pyetjeje ku nuk u gjetën të gjitha të dhënat e kërkuara

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

Kushtojini vëmendje fushave kod и etiketë. Këto fusha shfaqen tre herë në fjalorët e statusit. Së pari shohim "kodin" e çelësit global: 1006 dhe "etiketën": "PARTIALLY_FOUND". Më pas, këto çelësa gjenden për secilin komponent individual që kemi kërkuar - te dhe nxjerrja. Dhe nëse për ju është e qartë se të dhënat janë gjetur, atëherë për nxjerrjen nuk ka asnjë informacion.

Kështu dukej pyetja për shembullin e mësipërm

{ "request":  [  

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

Nëse dërgoni një kërkesë për pyetje pa komponentin e nxjerrjes

{ "request":  [  

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

Pastaj përgjigja do të përmbajë informacion të plotë (“kodi”: 1001, “etiketa”: “FUND”)

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

Nëse nuk ka fare informacion në cache, atëherë përgjigja do të jetë "etiketë": "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."
        }
      }
    }
  ]
}

Në një telefonatë API, mund të dërgoni disa sasi hash në të njëjtën kohë për verifikim. Përgjigja do t'i kthejë të dhënat në të njëjtin rend si është dërguar në kërkesë.

Shembull i kërkesës për pyetje me disa shuma sha256

{ "request":  [  

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

Përgjigjuni një pyetjeje me shuma të shumta 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."
        }
      }
    }
  ]
}

Kërkimi i disa shumave hash në të njëjtën kohë në një kërkesë për pyetje do të ketë gjithashtu një efekt të dobishëm në performancën e serverit API.

Shkarkoni thirrjen API

Metoda e përdorur − POST (sipas dokumentacionit), GET gjithashtu funksionon (dhe mund të duket më logjike)

Adresa e thirrjes - https:///tecloud/api/v1/file/download?id=

Kreu kërkon që të kalohet çelësi API, pjesa e kërkesës është bosh, ID-ja e shkarkimit kalon në adresën URL.

Në përgjigje të një kërkese, nëse emulimi është përfunduar dhe raportet janë kërkuar gjatë shkarkimit të skedarit, ID-ja për shkarkimin e raporteve do të jetë e dukshme. Nëse kërkohet një kopje e pastruar, duhet të kërkoni ID-në për të shkarkuar dokumentin e pastruar.

Në total, çelësat në përgjigjen ndaj pyetjes që përmban vlerën id për ngarkim mund të jenë:

  • raporti_përmbledhës

  • raporti i plotë

  • pdf_raport

  • xml_raport

  • ID_ja e shkarkimit të skedarit të nxjerrë

Sigurisht, për të marrë këta çelësa në përgjigje të kërkesës së pyetjes, ato duhet të specifikohen në kërkesë (për raporte) ose mos harroni të bëni një kërkesë duke përdorur funksionin e nxjerrjes (për dokumentet e pastruara)

Thirrje kuota API

Metoda e përdorur − POST

Adresa e thirrjes - https:///tecloud/api/v1/file/quota

Për të kontrolluar kuotën e mbetur në renë kompjuterike, përdorni pyetjen e kuotës. Trupi i kërkesës është bosh.

Shembull përgjigje ndaj një kërkese për kuotë

{
  "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 për Parandalimin e Kërcënimeve për Portën e Sigurisë

Kjo API është zhvilluar përpara API-së për Parandalimin e Kërcënimeve dhe është menduar vetëm për pajisjet lokale. Tani për tani mund të jetë i dobishëm vetëm nëse keni nevojë për API-në e Nxjerrjes së Kërcënimit. Për Emulimin e Kërcënimeve është më mirë të përdorni API-në e rregullt të Parandalimit të Kërcënimeve. Te ndezesh TP API për SG dhe konfiguroni çelësin API që ju nevojitet për të ndjekur hapat nga sk113599. Unë rekomandoj t'i kushtoni vëmendje hapit 6b dhe të kontrolloni aksesueshmërinë e faqes https://<IPAddressofSecurityGateway>/UserCheck/TPAPI sepse në rast të një rezultati negativ, konfigurimi i mëtejshëm nuk ka kuptim. Të gjitha thirrjet API do të dërgohen në këtë url. Lloji i thirrjes (ngarkim/pyetës) rregullohet në tastin e trupit të thirrjes − emri_kërkesës. Kërkohen gjithashtu çelësa - çelësi_api (duhet ta mbani mend gjatë procesit të konfigurimit) dhe versioni_protokollit (Versioni aktual aktual është 1.1). Dokumentacionin zyrtar për këtë API mund ta gjeni në sk137032. Përparësitë relative përfshijnë aftësinë për të dërguar disa skedarë në të njëjtën kohë për emulim gjatë ngarkimit të tyre, pasi skedarët dërgohen si një varg teksti bazë64. Për të koduar/dekoduar skedarët në/nga base64, mund të përdorni një konvertues online në Postman për qëllime demonstrimi, për shembull - https://base64.guru. Për qëllime praktike, duhet të përdorni metodat e integruara të kodimit dhe dekodimit kur shkruani kodin.

Tani le t'i hedhim një vështrim më të afërt funksioneve te и nxjerrja në këtë API.

Për komponentin te fjalori i ofruar te_opcionet në kërkesat për ngarkim/pyetje, dhe çelësat në këtë kërkesë përkojnë plotësisht me çelësat te in API për Parandalimin e Kërcënimeve.

Shembull i kërkesës për emulimin e skedarëve në Win10 me raporte

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

Për komponentin nxjerrja fjalori i ofruar opsionet e pastrimit. Kjo kërkesë specifikon metodën e pastrimit: konvertojeni në PDF, pastroni përmbajtjen aktive ose zgjidhni një modalitet në përputhje me profilin e Parandalimit të Kërcënimeve (tregohet emri i profilit). Gjëja më e mirë për t'iu përgjigjur një kërkese të API-së për një skedar është se ju merrni një kopje të pastruar në përgjigjen e asaj kërkese si një varg i koduar bazë64 (nuk keni nevojë të bëni një kërkesë për pyetje dhe të kërkoni ID-në për të shkarkuar dokument)

Shembull i një kërkese për të pastruar një skedar

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

Përgjigjuni një kërkese

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

Përkundër faktit se kërkohen më pak kërkesa API për të marrë një kopje të pastruar, unë e shoh këtë opsion më pak të preferueshëm dhe të përshtatshëm sesa kërkesa për të dhënat e formularit të përdorur në API për Parandalimin e Kërcënimeve.

Koleksionet e Postierit

Kam krijuar koleksione në Postman si për API-në e Parandalimit të Kërcënimeve, ashtu edhe për API-në e Parandalimit të Kërcënimeve për Portën e Sigurisë, të cilat përfaqësojnë kërkesat më të zakonshme të API-së. Në mënyrë që API dhe çelësi ip/url i serverit të zëvendësohen automatikisht në kërkesa dhe sasia e hash-it sha256 të mbahet mend pas shkarkimit të skedarit, brenda koleksioneve janë krijuar tre variabla (mund t'i gjeni duke shkuar te cilësimet e koleksionit Redakto -> Variablat): te_api (kërkohet), api_key (kërkohet të plotësohet, përveç kur përdoret TP API me pajisjet lokale), sha256 (lëre bosh, nuk përdoret në TP API për SG).

Shkarkoni koleksionin Postman për API të Parandalimit të Kërcënimeve

Shkarkoni koleksionin Postman për Parandalimin e Kërcënimeve për API-në e portës së sigurisë

Shembuj të përdorimit

Në komunitet Kontrollo Mates Prezantohen skriptet e shkruara në Python që kontrollojnë skedarët nga drejtoria e dëshiruar nëpërmjet TP APIDhe TP API për SG. Nëpërmjet ndërveprimit me API-në e Parandalimit të Kërcënimeve, aftësia juaj për të skanuar skedarët zgjerohet ndjeshëm, pasi tani mund të skanoni skedarë në disa platforma njëherësh (kontrolloni VirusTotal API, dhe më pas në kutinë e rërës së pikës së kontrollit), dhe merrni skedarë jo vetëm nga trafiku i rrjetit, por gjithashtu merrni ato nga çdo disqe rrjeti dhe, për shembull, sistemet CRM.

Burimi: www.habr.com

Shto një koment