API арқылы Check Point SandBlast-пен әрекеттесу

API арқылы Check Point SandBlast-пен әрекеттесу

Бұл мақала технологияны жақсы білетіндерге пайдалы болады Check Point файл эмуляциясы бойынша (Қауіп эмуляциясы) және белсенді файлдарды тазалау (Қауіпті шығару) және осы тапсырмаларды автоматтандыруға қадам жасағысы келеді. Check Point бар Қауіптердің алдын алу APIбұлтта да, жергілікті құрылғыларда да жұмыс істейтін , және функционалдық жағынан ол web/smtp/ftp/smb/nfs трафик ағындарындағы файлдарды тексерумен бірдей. Бұл мақала ішінара автордың ресми құжаттамадағы мақалалар жинағын интерпретациялауы болып табылады, бірақ менің жеке тәжірибеме және өз мысалдарыма негізделген. Сондай-ақ мақалада сіз Threat Prevention API-мен жұмыс істеуге арналған автордың Postman жинақтарын таба аласыз.

Негізгі аббревиатуралар

Threat Prevention API интерфейсінде келесі мәтін мәндері арқылы шақырылатын үш негізгі компонентпен жұмыс істейді:

av — Белгілі қауіптердің қолтаңбалық талдауына жауап беретін антивирустық компонент.

te - Қауіпті эмуляция құрамдас бөлігі, құм жәшігіндегі файлдарды тексеруге және эмуляциядан кейін зиянды/қауіпті шешім шығаруға жауапты.

өндіру - Пайдаланушыларға/жүйелерге жылдам жеткізу үшін кеңсе құжаттарын қауіпсіз пішінге (барлық ықтимал зиянды мазмұн жойылатын) жылдам түрлендіруге жауапты Threat Extraction компоненті.

API құрылымы және негізгі шектеулері

Threat Prevention API тек 4 сұрауды пайдаланады - жүктеу, сұрау, жүктеу және квота. Барлық төрт сұрауға арналған тақырыпта параметрді пайдаланып API кілтін беру керек рұқсат. Бір қарағанда, құрылым бұрынғыға қарағанда әлдеқайда қарапайым болып көрінуі мүмкін Басқару API, бірақ жүктеп салу және сұрау сұрауларындағы өрістер саны және бұл сұраулардың құрылымы өте күрделі. Оларды шлюз/құмсалғыш қауіпсіздік саясатындағы Қауіпті болдырмау профильдерімен функционалды түрде салыстыруға болады.

Қазіргі уақытта Threat Prevention API нұсқасының жалғыз нұсқасы шығарылды - 1.0; API қоңырауларына арналған URL қамтуы керек v1 нұсқасын көрсету қажет бөлігінде. Басқару API интерфейсінен айырмашылығы, URL мекенжайында API нұсқасын көрсету қажет, әйтпесе сұрау орындалмайды.

Антивирус құрамдас бөлігі басқа компоненттерсіз шақырылғанда (te, экстракция) қазіргі уақытта тек md5 хэш сомасы бар сұрау сұрауларына қолдау көрсетеді. Қауіпті эмуляциялау және қауіпті шығару сонымен қатар sha1 және sha256 хэш сомасын қолдайды.

Сұрауларда қателеспеу өте маңызды! Сұраныс қатесіз орындалуы мүмкін, бірақ толық емес. Біраз алға қарай отырып, сұрауларда қателер/терулер болған кезде не болуы мүмкін екенін қарастырайық.

Есептер (reports) сөзі бар қатесі бар сұрау

{ "request":  [  

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

Жауапта қате болмайды, бірақ есептер туралы ақпарат мүлде болмайды

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

Бірақ есептер кілтінде қатесі жоқ сұрау үшін

{ "request":  [  

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

Біз есептерді жүктеп алуға арналған идентификаторды қамтитын жауапты аламыз

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

Қате/мерзімі өткен API кілтін жіберсек, жауап ретінде 403 қатесін аламыз.

SandBlast API: бұлтта және жергілікті құрылғыларда

API сұраулары Қауіпті эмуляция құрамдас бөлігі (пышақ) қосылған Check Point құрылғыларына жіберіледі. Сұраныстардың мекенжайы ретінде құрылғының ip/url мекенжайын және 18194 портын пайдалану қажет (мысалы, https://10.10.57.19:18194/tecloud/api/v1/file/query). Сондай-ақ құрылғыдағы қауіпсіздік саясаты осы қосылымға мүмкіндік беретініне көз жеткізіңіз. Әдепкі бойынша жергілікті құрылғылардағы API кілті арқылы авторизация өшірулі және сұрау тақырыптарындағы Авторизация кілті мүлде жіберілмеуі мүмкін.

CheckPoint бұлтына API сұраулары жіберілу керек te.checkpoint.com (мысалы - https://te.checkpoint.com/tecloud/api/v1/file/query). API кілтін 60 күндік сынақ лицензиясы ретінде Check Point серіктестеріне немесе компанияның жергілікті кеңсесіне хабарласу арқылы алуға болады.

Жергілікті құрылғыларда Threat Extraction стандартты ретінде әлі қолдау көрсетілмейді. Қауіптердің алдын алу API және пайдаланылуы керек Қауіпсіздік шлюзіне арналған қауіптердің алдын алу API (бұл туралы мақаланың соңында толығырақ айтатын боламыз).

Жергілікті құрылғылар квота сұрауына қолдау көрсетпейді.

Әйтпесе, жергілікті құрылғылар мен бұлтқа сұраулар арасында ешқандай айырмашылықтар болмайды.

API қоңырауын жүктеп салу

Қолданылатын әдіс - POST

Қоңырау шалу мекенжайы - https:///tecloud/api/v1/file/upload

Сұраныс екі бөліктен (форма-деректер) тұрады: эмуляцияға/тазалауға арналған файл және мәтіні бар сұрау бөлімі.

Мәтіндік сұрау бос болуы мүмкін емес, бірақ ол конфигурацияны қамтымауы мүмкін. Сұрау сәтті болуы үшін сұрауда кем дегенде келесі мәтінді жіберу керек:

Жүктеп салу сұрауы үшін ең аз талап

HTTP POST

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

Тақырыптар:

Авторландыру:

дене

{

«сұрау»: {

}

}

файл

файл

Бұл жағдайда файл әдепкі параметрлерге сәйкес өңделеді: компонент - te, ОЖ кескіндері - Win XP және Win 7, есеп жасамай.

Мәтіндік сұраудағы негізгі өрістерге түсініктемелер:

файл атауы и файл_түрі Оларды бос қалдыруға немесе мүлде жібермеуге болады, себебі бұл файлды жүктеп салу кезінде аса пайдалы ақпарат емес. API жауапында бұл өрістер жүктеп алынған файлдың атауы негізінде автоматты түрде толтырылады және кэштегі ақпаратты әлі де md5/sha1/sha256 хэш сомалары арқылы іздеу керек болады.

Бос файл_атауы және файл_түрі бар мысал сұрау

{

"request": {

"file_name": "",

"file_type": "",

}

}

Мүмкіндіктер — құмсалғышта өңдеу кезінде қажетті функционалдылықты көрсететін тізім - av (Anti-Virus), te (Threat Emulation), экстракция (Threat Extraction). Егер бұл параметр мүлде берілмесе, онда тек әдепкі компонент пайдаланылады - te (Threat Emulation).

Үш қолжетімді құрамдастарды тексеруді қосу үшін API сұрауында осы құрамдастарды көрсету керек.

av, te және экстракцияны тексеру арқылы сұраудың мысалы

{ "request":  [  

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

te бөліміндегі пернелер

суреттер — тексеру жүргізілетін операциялық жүйелердің идентификаторы және қайта қарау нөмірі бар сөздіктерден тұратын тізім. Идентификаторлар мен түзету нөмірлері барлық жергілікті құрылғылар мен бұлт үшін бірдей.

Операциялық жүйелер мен түзетулер тізімі

Қолжетімді OS кескін идентификаторы

қайта қарау

Image ОЖ және қолданба

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32 бит SP3
кеңсе: 2003, 2007
Adobe Acrobat Reader бағдарламасы: 9.0
Flash Player 9r115 және ActiveX 10.0
Java орындалу уақыты: 1.6.0u22

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

1

Microsoft Windows: 7 - 32 бит
кеңсе: 2003, 2007
Adobe Acrobat Reader бағдарламасы: 9.0
Flash ойнатқышы: 10.2r152 (PluginActiveX)
Java орындалу уақыты: 1.6.0u0

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

1

Microsoft Windows: 7 - 32 бит
кеңсе: 2010
Adobe Acrobat Reader бағдарламасы: 9.4
Flash ойнатқышы: 11.0.1.152 (Plugin & ActiveX)
Java орындалу уақыты: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 бит
кеңсе: 2013
Adobe Acrobat Reader бағдарламасы: 11.0
Flash ойнатқышы: 15 (Plugin & ActiveX)
Java орындалу уақыты: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64 бит
кеңсе: 2013 (32 бит)
Adobe Acrobat Reader бағдарламасы: 11.0.01
Flash ойнатқышы: 13 (Plugin & ActiveX)
Java орындалу уақыты: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64 бит
кеңсе: 2013 (64 бит)
Adobe Acrobat Reader бағдарламасы: 11.0.10
Flash ойнатқышы: 18.0.0.160 (Plugin & ActiveX)
Java орындалу уақыты: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
кеңсе: Professional Plus 2016 en-us  
Adobe Acrobat Reader бағдарламасы: DC 2015 MUI
Flash ойнатқышы: 20 (Plugin & ActiveX)
Java орындалу уақыты: 1.7.0u9

Егер кескіндер кілті мүлде көрсетілмесе, эмуляция Check Point ұсынған кескіндерде орын алады (қазіргі уақытта Win XP және Win 7). Бұл кескіндер өнімділік пен түсіру жылдамдығының ең жақсы теңгерімін қарастыру негізінде ұсынылады.

есептер — файл зиянды болып шықса, біз сұрайтын есептер тізімі. Келесі опциялар қолжетімді:

  1. қысқаша мазмұндама - эмуляция туралы есеп бар .tar.gz мұрағаты бәріне сұралған кескіндер (HTML беті және эмулятор ОЖ бейне, желілік трафик демпі, json тіліндегі есеп және парольмен қорғалған мұрағаттағы үлгінің өзі сияқты компоненттер). Біз жауаптың кілтін іздейміз - қорытынды_есеп есепті кейіннен жүктеп алу үшін.

  2. PDF - эмуляция туралы құжат бір көпшілігі Smart Console арқылы алуға үйренген сурет. Біз жауаптың кілтін іздейміз - pdf_есеп есепті кейіннен жүктеп алу үшін.

  3. XML - эмуляция туралы құжат бір Есептегі параметрлерді кейінгі талдауға ыңғайлы сурет. Біз жауаптың кілтін іздейміз - xml_есеп есепті кейіннен жүктеп алу үшін.

  4. тар - эмуляция туралы есеп бар .tar.gz мұрағаты бір сұралған кескіндер (HTML беті және эмулятор ОЖ бейне, желілік трафик демпі, json тіліндегі есеп және парольмен қорғалған мұрағаттағы үлгінің өзі сияқты компоненттер). Біз жауаптың кілтін іздейміз - толық_есеп есепті кейіннен жүктеп алу үшін.

Жиынтық есептің ішінде не барAPI арқылы Check Point SandBlast-пен әрекеттесу

full_report, pdf_report, xml_report кілттері әрбір ОЖ үшін сөздікте бар

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

Бірақ жиынтық_есеп кілті - жалпы эмуляцияға арналған біреу бар

{
  "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 және xml және pdf есептерін сұрай аласыз, қорытынды мен tar және xml сұрай аласыз. Жиынтық есеп пен pdf файлын бір уақытта сұрау мүмкін болмайды.

Шығару бөліміндегі кілттер

Қауіпті жою үшін тек екі кілт пайдаланылады:

әдіс — pdf (pdf форматына түрлендіру, әдепкі бойынша пайдаланылады) немесе таза (белсенді мазмұнды тазалау).

шығарылған_бөліктер_коды - тек таза әдіс үшін қолданылатын белсенді мазмұнды жою кодтарының тізімі

Файлдардан мазмұнды жоюға арналған кодтар

код

сипаттамасы

1025

Байланыстырылған нысандар

1026

Макростар және код

1034

Сезімтал гиперсілтемелер

1137

PDF GoToR әрекеттері

1139

PDF іске қосу әрекеттері

1141

PDF URI әрекеттері

1142

PDF дыбыстық әрекеттері

1143

PDF фильмінің әрекеттері

1150

PDF JavaScript әрекеттері

1151

PDF пішінін жіберу әрекеттері

1018

Мәліметтер қорының сұраныстары

1019

Енгізілген нысандар

1021

Деректерді жылдам сақтау

1017

Теңшелетін сипаттар

1036

Статистикалық қасиеттер

1037

Жиынтық сипаттар

Тазартылған көшірмені жүктеп алу үшін бірнеше секундтан кейін файлдың хэш көлемін және сұрау мәтініндегі шығарып алу компонентін көрсете отырып, сұрау сұрауын (ол төменде талқыланады) жасауыңыз керек. Тазаланған файлды сұрауға жауаптан идентификатор арқылы алуға болады - extracted_file_download_id. Тағы да, сәл алға қарай отырып, тазартылған құжатты жүктеп алу үшін идентификаторды іздеу үшін сұрау мен сұрауға жауаптың мысалдарын келтіремін.

Extracted_file_download_id кілтін іздеуге сұрау сұрауы

{ "request":  [  

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

Сұрауға жауап (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."
                }
            }
        }
    ]
}

Негізгі ақпарат

Бір API қоңырауында тексеру үшін тек бір файлды жіберуге болады.

av компоненті пернелері бар қосымша бөлімді қажет етпейді, оны сөздікте көрсету жеткілікті Мүмкіндіктер.

API шақыруын сұрау

Қолданылатын әдіс - POST

Қоңырау шалу мекенжайы - https:///tecloud/api/v1/file/query

Файлды жүктеп алуға (жүктеп салуға сұрау) жібермес бұрын, API серверіндегі жүктемені оңтайландыру үшін құм жәшігінің кэшін (сұрау сұрауы) тексерген жөн, өйткені API серверінде жүктелген файл туралы ақпарат пен шешім болуы мүмкін. Қоңырау тек мәтіндік бөліктен тұрады. Сұраудың қажетті бөлігі файлдың sha1/sha256/md5 хэш мөлшері болып табылады. Айтпақшы, сіз оны жүктеу сұрауына жауап ала аласыз.

Сұрау үшін қажетті ең аз

HTTP POST

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

Тақырыптар:

Авторландыру:

дене

{

«сұрау»: {

"sha256":

}

}

sha1/md5/sha256 хэш сомалары көрінетін жүктеп салу сұрауына жауаптың мысалы.

{
  "response": {
    "status": {
      "code": 1002,
      "label": "UPLOAD_SUCCESS",
      "message": "The file was uploaded successfully."
    },
    "sha1": "954b5a851993d49ef8b2412b44f213153bfbdb32",
    "md5": "ac29b7c26e7dcf6c6fdb13ac0efe98ec",
    "sha256": "313c0feb009356495b7f4a60e96737120beb30e1912c6d866218cee830aebd90",
    "file_type": "",
    "file_name": "kp-20-doc.doc",
    "features": [
      "te"
    ],
    "te": {
      "trust": 0,
      "images": [
        {
          "report": {
            "verdict": "unknown"
          },
          "status": "not_found",
          "id": "10b4a9c6-e414-425c-ae8b-fe4dd7b25244",
          "revision": 1
        }
      ],
      "score": -2147483648,
      "status": {
        "code": 1002,
        "label": "UPLOAD_SUCCESS",
        "message": "The file was uploaded successfully."
      }
    }
  }
}

Сұрау сұрауы, хэш сомасына қосымша, ең дұрысы, жүктеп салу сұрауымен (немесе жоспарланып отырған) немесе тіпті «қазірдің өзінде» болуы керек (сұрау сұрауында жүктеп салу сұрауына қарағанда өрістер азырақ болуы керек). Сұрау сұрауында жүктеп салу сұрауындағыдан көбірек өрістер болса, жауапта барлық қажетті ақпаратты алмайсыз.

Мұнда барлық қажетті деректер табылмаған сұрауға жауаптың мысалы берілген

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

Өрістерге назар аударыңыз код и заттаңба. Бұл өрістер күй сөздіктерінде үш рет пайда болады. Алдымен біз «код» жаһандық кілтін көреміз: 1006 және «белгі»: «PARTIALLY_FOUND». Әрі қарай, бұл кілттер біз сұраған әрбір жеке құрамдас бөлік үшін табылады - te және экстракция. Ал егер деректердің табылғаны анық болса, онда алу үшін ақпарат жоқ.

Жоғарыдағы мысал үшін сұрау осылай көрінді

{ "request":  [  

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

Егер сіз сұрауды шығару құрамдассыз жіберсеңіз

{ "request":  [  

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

Содан кейін жауапта толық ақпарат болады («код»: 1001, «белгі»: «ТАПТЫ»)

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

Кэште мүлде ақпарат болмаса, жауап «белгі» болады: «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."
        }
      }
    }
  ]
}

Бір API қоңырауында тексеру үшін бірден бірнеше хэш сомасын жіберуге болады. Жауап деректерді сұрауда жіберілген ретпен қайтарады.

Бірнеше sha256 сомасы бар сұрау сұрауының мысалы

{ "request":  [  

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

Бірнеше 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."
        }
      }
    }
  ]
}

Сұрау сұрауында бірден бірнеше хэш сомасын сұрау API серверінің өнімділігіне де пайдалы әсер етеді.

API қоңырауын жүктеп алыңыз

Қолданылатын әдіс - POST (құжаттарға сәйкес), GET сондай-ақ жұмыс істейді (және логикалық көрінуі мүмкін)

Қоңырау шалу мекенжайы - https:///tecloud/api/v1/file/download?id=

Тақырып API кілтін беруді талап етеді, сұраудың негізгі бөлігі бос, жүктеп алу идентификаторы URL мекенжайында жіберіледі.

Сұрау сұрауына жауап ретінде, эмуляция аяқталса және файлды жүктеп алу кезінде есептер сұралса, есептерді жүктеп алу идентификаторы көрінеді. Тазартылған көшірме сұралса, тазартылған құжатты жүктеп алу үшін идентификаторды іздеу керек.

Барлығы, жүктеуге арналған идентификатор мәнін қамтитын сұрауға жауаптағы кілттер:

  • қорытынды_есеп

  • толық_есеп

  • pdf_есеп

  • xml_есеп

  • шығарылған_файл_жүктеп алу_идентификаторы

Әрине, сұрау сұрауына жауап ретінде бұл кілттерді алу үшін олар сұрауда көрсетілуі керек (есептер үшін) немесе алу функциясын пайдаланып сұрауды жасауды ұмытпаңыз (тазаланған құжаттар үшін)

Квота API шақыруы

Қолданылатын әдіс - POST

Қоңырау шалу мекенжайы - https:///tecloud/api/v1/file/quota

Бұлттағы қалған квотаны тексеру үшін квота сұрауын пайдаланыңыз. Сұрау мәтіні бос.

Квота сұрауына жауап үлгісі

{
  "response": [
    {
      "remain_quota_hour": 1250,
      "remain_quota_month": 10000000,
      "assigned_quota_hour": 1250,
      "assigned_quota_month": 10000000,
      "hourly_quota_next_reset": "1599141600",
      "monthly_quota_next_reset": "1601510400",
      "quota_id": "TEST",
      "cloud_monthly_quota_period_start": "1421712300",
      "cloud_monthly_quota_usage_for_this_gw": 0,
      "cloud_hourly_quota_usage_for_this_gw": 0,
      "cloud_monthly_quota_usage_for_quota_id": 0,
      "cloud_hourly_quota_usage_for_quota_id": 0,
      "monthly_exceeded_quota": 0,
      "hourly_exceeded_quota": 0,
      "cloud_quota_max_allow_to_exceed_percentage": 1000,
      "pod_time_gmt": "1599138715",
      "quota_expiration": "0",
      "action": "ALLOW"
    }
  ]
}

Қауіпсіздік шлюзіне арналған қауіптердің алдын алу API

Бұл API Threat Prevention API интерфейсінен бұрын жасалған және тек жергілікті құрылғыларға арналған. Әзірге ол Threat Extraction API қажет болған жағдайда ғана пайдалы болуы мүмкін. Threat Emulation үшін әдеттегі Threat Prevention API пайдалану жақсы. Қосу үшін SG үшін TP API және қадамдарды орындау қажет API кілтін конфигурациялаңыз sk113599. Мен 6b қадамына назар аударуды және беттің қолжетімділігін тексеруді ұсынамын https://<IPAddressofSecurityGateway>/UserCheck/TPAPI өйткені теріс нәтиже болған жағдайда одан әрі конфигурациялау мағынасы жоқ. Барлық API қоңыраулары осы URL мекенжайына жіберіледі. Қоңырау түрі (жүктеп салу/сұрау) қоңырау негізгі кілтінде реттеледі − сұрау_атауы. Сондай-ақ қажетті кілттер - api_key (конфигурациялау процесінде оны есте сақтау қажет) және протокол_нұсқасы (қазіргі нұсқасы 1.1). Осы API үшін ресми құжаттаманы мына жерден таба аласыз sk137032. Салыстырмалы артықшылықтарға файлдарды жүктеу кезінде эмуляция үшін бірден бірнеше файлдарды жіберу мүмкіндігі жатады, себебі файлдар base64 мәтіндік жол ретінде жіберіледі. Файлдарды base64-тен/кодтау үшін демонстрациялық мақсаттар үшін Postman бағдарламасындағы онлайн түрлендіргішті пайдалануға болады, мысалы - https://base64.guru. Практикалық мақсаттар үшін код жазу кезінде кірістірілген кодтау және декодтау әдістерін пайдалану керек.

Енді функцияларды толығырақ қарастырайық te и өндіру осы API ішінде.

Компонент үшін te сөздік берілген te_options жүктеп салу/сұрау сұрауларында және осы сұраудағы кілттер ішіндегі te пернелерімен толығымен сәйкес келеді Қауіптердің алдын алу API.

Есептері бар Win10 жүйесінде файлды эмуляциялау сұрауының мысалы

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

Компонент үшін өндіру сөздік берілген scrub_опциялар. Бұл сұрау тазалау әдісін көрсетеді: PDF форматына түрлендіру, белсенді мазмұнды тазалау немесе Қауіптің алдын алу профиліне сәйкес режимді таңдау (профиль атауы көрсетілген). Файлға арналған экстракция API сұрауына жауап берудің тамаша жағы - бұл сұрауға жауапта тазартылған көшірмені base64 шифрланған жол ретінде алуыңыз (сұрау сұрауын жасаудың және жүктеп алу үшін идентификаторды іздеудің қажеті жоқ) құжат)

Файлды тазалау сұрауының мысалы

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

Сұранысқа жауап беру

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

Тазартылған көшірмені алу үшін аз API сұраулары қажет болғанына қарамастан, мен бұл опцияны пішін деректері сұрауына қарағанда қолайлырақ және ыңғайлы деп санаймын. Қауіптердің алдын алу API.

Пошташылардың жинақтары

Мен ең көп таралған API сұрауларын білдіретін Қауіптің алдын алу API және Қауіпсіздік шлюзіне арналған Threat Prevention API үшін Postman ішінде жинақтарды жасадым. IP/url серверінің API және кілті сұрауларға автоматты түрде ауыстырылуы және файлды жүктеп алғаннан кейін sha256 хэш сомасы есте сақталуы үшін жинақтардың ішінде үш айнымалы құрылды (оларды жинақ параметрлеріне өту арқылы табуға болады). Өңдеу -> Айнымалылар): te_api (міндетті), api_key (жергілікті құрылғылармен TP API пайдалануды қоспағанда, толтыру қажет), sha256 (бос қалдырыңыз, SG үшін TP API қолданылмайды).

Threat Prevention API үшін Postman жинағын жүктеп алыңыз

Security Gateway API үшін Threat Prevention үшін Postman жинағын жүктеп алыңыз

Пайдалану мысалдары

Қоғамда Жолдастарды тексеріңіз арқылы қалаған каталогтан файлдарды тексеретін Python тілінде жазылған сценарийлер ұсынылған TP API, Сонымен SG үшін TP API. Threat Prevention API интерфейсімен өзара әрекеттесу арқылы файлдарды сканерлеу мүмкіндігі айтарлықтай кеңейеді, өйткені енді файлдарды бірден бірнеше платформада сканерлеуге болады (тексеру VirusTotal API, содан кейін Check Point құм жәшігінде) және файлдарды тек желілік трафиктен ғана емес, сонымен қатар оларды кез келген желілік дискілерден және, мысалы, CRM жүйелерінен алыңыз.

Ақпарат көзі: www.habr.com

пікір қалдыру