Αλληλεπίδραση με το Check Point SandBlast μέσω API

Αλληλεπίδραση με το Check Point SandBlast μέσω API

Αυτό το άρθρο θα είναι χρήσιμο σε όσους είναι εξοικειωμένοι με την τεχνολογία Check Point με εξομοίωση αρχείου (Εξομοίωση απειλών) και προληπτικός καθαρισμός αρχείων (Εξαγωγή απειλών) και θέλει να κάνει ένα βήμα προς την αυτοματοποίηση αυτών των εργασιών. Check Point έχει Threat Prevention API, το οποίο εκτελείται τόσο στο cloud όσο και σε τοπικές συσκευές και λειτουργικά είναι πανομοιότυπο με τον έλεγχο αρχείων σε ροές κυκλοφορίας web/smtp/ftp/smb/nfs. Αυτό το άρθρο είναι εν μέρει η ερμηνεία του συγγραφέα για ένα σύνολο άρθρων από την επίσημη τεκμηρίωση, αλλά βασίζεται στη δική μου εμπειρία λειτουργίας και στα δικά μου παραδείγματα. Επίσης στο άρθρο θα βρείτε τις συλλογές Postman του συγγραφέα για εργασία με το Threat Prevention API.

Βασικές συντομογραφίες

Το Threat Prevention API λειτουργεί με τρία κύρια στοιχεία, τα οποία καλούνται στο API μέσω των παρακάτω τιμών κειμένου:

av — Εξάρτημα προστασίας από ιούς, υπεύθυνο για την ανάλυση υπογραφών γνωστών απειλών.

te - Συστατικό Threat Emulation, υπεύθυνο για τον έλεγχο των αρχείων στο sandbox και για τη λήψη κακόβουλης/καλοήθης ετυμηγορίας μετά την εξομοίωση.

εξαγωγή - Εξαγωγή απειλών, υπεύθυνο για τη γρήγορη μετατροπή εγγράφων γραφείου σε ασφαλή μορφή (στην οποία αφαιρείται όλο το δυνητικά κακόβουλο περιεχόμενο), προκειμένου να τα παραδώσει γρήγορα στους χρήστες/συστήματα.

Δομή API και κύριοι περιορισμοί

Threat Prevention API χρησιμοποιεί μόνο 4 αιτήματα − μεταφόρτωση, αναζήτηση, λήψη και όριο. Στην κεφαλίδα και για τα τέσσερα αιτήματα πρέπει να περάσετε το κλειδί API χρησιμοποιώντας την παράμετρο εξουσιοδότηση. Με την πρώτη ματιά, η δομή μπορεί να φαίνεται πολύ πιο απλή από ό, τι στην Διαχείριση API, αλλά ο αριθμός των πεδίων στα αιτήματα μεταφόρτωσης και ερωτήματος και η δομή αυτών των αιτημάτων είναι αρκετά περίπλοκα. Αυτά μπορούν λειτουργικά να συγκριθούν με τα προφίλ αποτροπής απειλών σε μια πολιτική ασφάλειας πύλης/περιβάλλοντος δοκιμών.

Προς το παρόν, έχει κυκλοφορήσει η μόνη έκδοση του Threat Prevention API - 1.0. Η διεύθυνση URL για κλήσεις API θα πρέπει να περιλαμβάνει v1 στο τμήμα όπου πρέπει να καθορίσετε την έκδοση. Σε αντίθεση με το Management API, είναι απαραίτητο να υποδειχθεί η έκδοση API στη διεύθυνση URL, διαφορετικά το αίτημα δεν θα εκτελεστεί.

Το στοιχείο Anti-Virus, όταν καλείται χωρίς άλλα στοιχεία (te, εξαγωγή), προς το παρόν υποστηρίζει μόνο αιτήματα ερωτημάτων με αθροίσματα κατακερματισμού md5. Το Threat Emulation και το Threat Extraction υποστηρίζουν επίσης αθροίσματα κατακερματισμού sha1 και sha256.

Είναι πολύ σημαντικό να μην κάνετε λάθη σε ερωτήματα! Το αίτημα μπορεί να εκτελεστεί χωρίς σφάλμα, αλλά όχι πλήρως. Κοιτώντας λίγο μπροστά, ας δούμε τι μπορεί να συμβεί όταν υπάρχουν λάθη/τυπογραφικά λάθη σε ερωτήματα.

Αίτημα με τυπογραφικό λάθος με τη λέξη αναφορές (αναφορές)

{ "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: στο cloud και σε τοπικές συσκευές

Τα αιτήματα API μπορούν να σταλούν σε συσκευές Check Point που έχουν ενεργοποιημένο το στοιχείο εξομοίωσης απειλών (blade). Ως διεύθυνση για αιτήματα, πρέπει να χρησιμοποιήσετε το ip/url της συσκευής και τη θύρα 18194 (για παράδειγμα, https://10.10.57.19:18194/tecloud/api/v1/file/query). Θα πρέπει επίσης να βεβαιωθείτε ότι η πολιτική ασφαλείας στη συσκευή επιτρέπει αυτήν τη σύνδεση. Εξουσιοδότηση μέσω κλειδιού API σε τοπικές συσκευές από προεπιλογή μακριά από και το κλειδί εξουσιοδότησης στις κεφαλίδες αιτημάτων ενδέχεται να μην αποσταλεί καθόλου.

Τα αιτήματα API στο σύννεφο CheckPoint θα πρέπει να αποστέλλονται στο te.checkpoint.com (για παράδειγμα - https://te.checkpoint.com/tecloud/api/v1/file/query). Το κλειδί API μπορεί να ληφθεί ως δοκιμαστική άδεια για 60 ημέρες επικοινωνώντας με τους συνεργάτες του Check Point ή με το τοπικό γραφείο της εταιρείας.

Σε τοπικές συσκευές, το Threat Extraction δεν υποστηρίζεται ακόμη ως στάνταρ. Threat Prevention API και πρέπει να χρησιμοποιείται Threat Prevention API for Security Gateway (θα μιλήσουμε για αυτό λεπτομερέστερα στο τέλος του άρθρου).

Οι τοπικές συσκευές δεν υποστηρίζουν το αίτημα ορίου.

Διαφορετικά, δεν υπάρχουν διαφορές μεταξύ αιτημάτων σε τοπικές συσκευές και στο cloud.

Μεταφόρτωση κλήσης API

Μέθοδος που χρησιμοποιήθηκε − ΜΕΤΑ

Διεύθυνση κλήσης - https:///tecloud/api/v1/file/upload

Το αίτημα αποτελείται από δύο μέρη (φόρμα-δεδομένα): ένα αρχείο που προορίζεται για εξομοίωση/καθαρισμό και ένα σώμα αιτήματος με κείμενο.

Το αίτημα κειμένου δεν μπορεί να είναι κενό, αλλά ενδέχεται να μην περιέχει καμία διαμόρφωση. Προκειμένου το αίτημα να είναι επιτυχές, πρέπει να στείλετε τουλάχιστον το ακόλουθο κείμενο στο αίτημα:

Ελάχιστο που απαιτείται για ένα αίτημα μεταφόρτωσης

HTTP POST

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

Κεφαλίδες:

Εξουσιοδότηση:

Σώμα

{

"αίτηση": {

}

}

Αρχεία

Αρχεία

Σε αυτήν την περίπτωση, το αρχείο θα υποβληθεί σε επεξεργασία σύμφωνα με τις προεπιλεγμένες παραμέτρους: στοιχείο - te, εικόνες λειτουργικού συστήματος - Κερδίστε XP και Win 7, χωρίς τη δημιουργία αναφοράς.

Σχόλια στα κύρια πεδία στο αίτημα κειμένου:

όνομα_αρχείου и Τύπος αρχείου Μπορείτε να τα αφήσετε κενά ή να μην τα στείλετε καθόλου, καθώς αυτές δεν είναι ιδιαίτερα χρήσιμες πληροφορίες κατά τη μεταφόρτωση ενός αρχείου. Στην απόκριση API, αυτά τα πεδία θα συμπληρώνονται αυτόματα με βάση το όνομα του ληφθέντος αρχείου και οι πληροφορίες στην κρυφή μνήμη θα πρέπει να αναζητηθούν με τη χρήση ποσών κατακερματισμού md5/sha1/sha256.

Παράδειγμα αιτήματος με άδεια file_name και file_type

{

"request": {

"file_name": "",

"file_type": "",

}

}

χαρακτηριστικά — μια λίστα που υποδεικνύει την απαραίτητη λειτουργικότητα κατά την επεξεργασία στο sandbox - av (Anti-Virus), te (Threat Emulation), Extract (Threat Extraction). Εάν αυτή η παράμετρος δεν περάσει καθόλου, τότε θα χρησιμοποιηθεί μόνο το προεπιλεγμένο στοιχείο - te (Threat Emulation).

Για να ενεργοποιήσετε τον έλεγχο στα τρία διαθέσιμα στοιχεία, πρέπει να καθορίσετε αυτά τα στοιχεία στο αίτημα API.

Παράδειγμα αιτήματος με check in av, te και εξαγωγή

{ "request":  [  

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

Κλειδιά στην ενότητα te

εικόνες — λίστα που περιέχει λεξικά με αναγνωριστικό και αριθμό αναθεώρησης των λειτουργικών συστημάτων στα οποία θα πραγματοποιηθεί ο έλεγχος. Τα αναγνωριστικά και οι αριθμοί αναθεώρησης είναι τα ίδια για όλες τις τοπικές συσκευές και το cloud.

Λίστα λειτουργικών συστημάτων και αναθεωρήσεις

Διαθέσιμο αναγνωριστικό εικόνας λειτουργικού συστήματος

Αναθεώρηση

ΛΣ εικόνας και εφαρμογή

e50e99f3-5963-4573-af9e-e3f4750b55e2

1

Microsoft Windows: XP - 32bit SP3
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player 9r115 και ActiveX 10.0
Java Runtime: 1.6.0u22

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

1

Microsoft Windows: 7 - 32 bit
Office: 2003, 2007
Adobe Acrobat Reader: 9.0
Flash Player: 10.2r152 (ΣυνδέωActiveX)
Java Runtime: 1.6.0u0

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

1

Microsoft Windows: 7 - 32 bit
Office: 2010
Adobe Acrobat Reader: 9.4
Flash Player: 11.0.1.152 (Συνδέω & ActiveX)
Java Runtime: 1.7.0u0

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

1

Microsoft Windows: 7 - 32 bit
Office: 2013
Adobe Acrobat Reader: 11.0
Flash Player: 15 (Συνδέω & ActiveX)
Java Runtime: 1.7.0u9

3ff3ddae-e7fd-4969-818c-d5f1a2be336d

1

Microsoft Windows: 7 - 64 bit
Office: 2013 (32 bit)
Adobe Acrobat Reader: 11.0.01
Flash Player: 13 (Συνδέω & ActiveX)
Java Runtime: 1.7.0u9

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

 

Microsoft Windows: 8.1 - 64 bit
Office: 2013 (64 bit)
Adobe Acrobat Reader: 11.0.10
Flash Player: 18.0.0.160 (Συνδέω & ActiveX)
Java Runtime: 1.7.0u9

10b4a9c6-e414-425c-ae8b-fe4dd7b25244 

 

1

Microsoft Windows: 10
Office: Professional Plus 2016 en-us  
Adobe Acrobat Reader: DC 2015 MUI
Flash Player: 20 (Συνδέω & ActiveX)
Java Runtime: 1.7.0u9

Εάν το κλειδί εικόνων δεν έχει καθοριστεί καθόλου, τότε η εξομοίωση θα πραγματοποιηθεί σε εικόνες που προτείνονται από το Check Point (προς το παρόν Win XP και Win 7). Αυτές οι εικόνες συνιστώνται βάσει εκτιμήσεων για την καλύτερη ισορροπία απόδοσης και ποσοστού αλιευμάτων.

εκθέσεις — μια λίστα με αναφορές που ζητάμε σε περίπτωση που το αρχείο αποδειχθεί κακόβουλο. Οι ακόλουθες επιλογές είναι διαθέσιμες:

  1. περίληψη - Αρχείο .tar.gz που περιέχει μια αναφορά για την εξομοίωση από όλα ζητήθηκαν εικόνες (τόσο μια σελίδα html όσο και στοιχεία όπως ένα βίντεο από το λειτουργικό σύστημα εξομοιωτή, μια ένδειξη κυκλοφορίας δικτύου, μια αναφορά στο json και το ίδιο το δείγμα σε ένα αρχείο που προστατεύεται με κωδικό πρόσβασης). Ψάχνουμε για το κλειδί στην απάντηση - συνοπτική αναφορά για μεταγενέστερη λήψη της έκθεσης.

  2. pdf - έγγραφο σχετικά με την εξομοίωση σε ένα εικόνας, την οποία πολλοί συνηθίζουν να λαμβάνουν μέσω της Smart Console. Ψάχνουμε το κλειδί στην απάντηση - pdf_report για μεταγενέστερη λήψη της έκθεσης.

  3. xml - έγγραφο σχετικά με την εξομοίωση σε ένα εικόνα, βολικό για την επακόλουθη ανάλυση των παραμέτρων στην αναφορά. Ψάχνουμε για το κλειδί στην απάντηση - xml_report για μεταγενέστερη λήψη της έκθεσης.

  4. πίσσα - Αρχείο .tar.gz που περιέχει μια αναφορά για την εξομοίωση στο ένα ζητήθηκαν εικόνες (τόσο μια σελίδα html όσο και στοιχεία όπως ένα βίντεο από το λειτουργικό σύστημα εξομοιωτή, μια ένδειξη κυκλοφορίας δικτύου, μια αναφορά στο json και το ίδιο το δείγμα σε ένα αρχείο που προστατεύεται με κωδικό πρόσβασης). Ψάχνουμε για το κλειδί στην απάντηση - πλήρης_αναφορά για μεταγενέστερη λήψη της έκθεσης.

Τι υπάρχει μέσα στη συνοπτική αναφοράΑλληλεπίδραση με το Check Point SandBlast μέσω API

Τα κλειδιά 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."
        }
      }
    }
  ]
}

Αλλά το κλειδί summary_report - υπάρχει ένα για εξομοίωση γενικά

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

Ενέργειες JavaScript PDF

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 ερωτήματος

Μέθοδος που χρησιμοποιήθηκε − ΜΕΤΑ

Διεύθυνση κλήσης - https:///tecloud/api/v1/file/query

Πριν στείλετε ένα αρχείο για λήψη (αίτημα μεταφόρτωσης), συνιστάται να ελέγξετε την κρυφή μνήμη του sandbox (αίτημα ερωτήματος) για να βελτιστοποιήσετε τη φόρτωση στον διακομιστή 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."
        }
      }
    }
  ]
}

Δώστε προσοχή στα χωράφια κωδικός и επιγραφή. Αυτά τα πεδία εμφανίζονται τρεις φορές στα λεξικά κατάστασης. Πρώτα βλέπουμε το γενικό κλειδί "code": 1006 και "label": "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

Μέθοδος που χρησιμοποιήθηκε − ΜΕΤΑ (σύμφωνα με τεκμηρίωση), ΠΑΡΤΕ λειτουργεί επίσης (και μπορεί να φαίνεται πιο λογικό)

Διεύθυνση κλήσης - https:///tecloud/api/v1/file/download?id=

Η κεφαλίδα απαιτεί τη διαβίβαση του κλειδιού API, το σώμα του αιτήματος είναι κενό, το αναγνωριστικό λήψης μεταβιβάζεται στη διεύθυνση URL.

Σε απάντηση ενός αιτήματος ερωτήματος, εάν η εξομοίωση ολοκληρωθεί και ζητήθηκαν αναφορές κατά τη λήψη του αρχείου, το αναγνωριστικό για τη λήψη αναφορών θα είναι ορατό. Εάν ζητηθεί ένα καθαρισμένο αντίγραφο, θα πρέπει να αναζητήσετε το αναγνωριστικό για να πραγματοποιήσετε λήψη του καθαρισμένου εγγράφου.

Συνολικά, τα κλειδιά στην απάντηση στο ερώτημα που περιέχει την τιμή id για φόρτωση μπορεί να είναι:

  • συνοπτική αναφορά

  • πλήρης_αναφορά

  • pdf_report

  • xml_report

  • extracted_file_download_id

Φυσικά, για να λάβετε αυτά τα κλειδιά ως απάντηση στο αίτημα ερωτήματος, πρέπει να προσδιορίζονται στο αίτημα (για αναφορές) ή να θυμάστε να κάνετε ένα αίτημα χρησιμοποιώντας τη λειτουργία εξαγωγής (για καθαρισμένα έγγραφα)

Κλήση API ορίου

Μέθοδος που χρησιμοποιήθηκε − ΜΕΤΑ

Διεύθυνση κλήσης - https:///tecloud/api/v1/file/quota

Για να ελέγξετε το υπόλοιπο όριο στο cloud, χρησιμοποιήστε το ερώτημα 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"
    }
  ]
}

Threat Prevention API for Security Gateway

Αυτό το API αναπτύχθηκε πριν από το Threat Prevention API και προορίζεται μόνο για τοπικές συσκευές. Προς το παρόν μπορεί να είναι χρήσιμο μόνο εάν χρειάζεστε το Threat Extraction API. Για την εξομοίωση απειλών είναι προτιμότερο να χρησιμοποιείτε το κανονικό API Πρόληψης Απειλών. Για να ενεργοποιήσετε TP API για SG και διαμορφώστε το κλειδί API από το οποίο χρειάζεστε για να ακολουθήσετε τα βήματα sk113599. Συνιστώ να δώσετε προσοχή στο βήμα 6β και να ελέγξετε την προσβασιμότητα της σελίδας https://<IPAddressofSecurityGateway>/UserCheck/TPAPI γιατί σε περίπτωση αρνητικού αποτελέσματος δεν έχει νόημα περαιτέρω διαμόρφωση. Όλες οι κλήσεις API θα αποστέλλονται σε αυτήν τη διεύθυνση url. Ο τύπος κλήσης (μεταφόρτωση/ερώτημα) ρυθμίζεται στο κλειδί σώματος κλήσης − request_name. Επίσης απαιτούνται κλειδιά - api_key (πρέπει να το θυμάστε κατά τη διαδικασία διαμόρφωσης) και protocol_version (επί του παρόντος η τρέχουσα έκδοση είναι 1.1). Μπορείτε να βρείτε την επίσημη τεκμηρίωση για αυτό το API στη διεύθυνση sk137032. Τα σχετικά πλεονεκτήματα περιλαμβάνουν τη δυνατότητα αποστολής πολλών αρχείων ταυτόχρονα για εξομοίωση κατά τη φόρτωσή τους, καθώς τα αρχεία αποστέλλονται ως συμβολοσειρά κειμένου base64. Για να κωδικοποιήσετε/αποκωδικοποιήσετε αρχεία προς/από το base64, μπορείτε να χρησιμοποιήσετε έναν διαδικτυακό μετατροπέα στο Postman για λόγους επίδειξης, για παράδειγμα - https://base64.guru. Για πρακτικούς σκοπούς, θα πρέπει να χρησιμοποιείτε τις ενσωματωμένες μεθόδους κωδικοποίησης και αποκωδικοποίησης όταν γράφετε κώδικα.

Τώρα ας ρίξουμε μια πιο προσεκτική ματιά στις λειτουργίες te и εξαγωγή σε αυτό το API.

Για συστατικό te παρέχεται λεξικό te_options σε αιτήματα μεταφόρτωσης/ερωτήματος και τα κλειδιά σε αυτό το αίτημα συμπίπτουν πλήρως με τα κλειδιά te in Threat Prevention 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_options. Αυτό το αίτημα καθορίζει τη μέθοδο καθαρισμού: μετατροπή σε 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 για την απόκτηση ενός εκκαθαρισμένου αντιγράφου, βρίσκω αυτήν την επιλογή λιγότερο προτιμότερη και βολική από το αίτημα φόρμας-δεδομένων που χρησιμοποιείται στο Threat Prevention API.

Συλλογές Ταχυδρόμων

Δημιούργησα συλλογές στο Postman τόσο για το Threat Prevention API όσο και για το Threat Prevention API for Security Gateway, που αντιπροσωπεύουν τα πιο κοινά αιτήματα API. Προκειμένου το API ip/url διακομιστή και το κλειδί να αντικατασταθούν αυτόματα σε αιτήματα και να απομνημονευθεί το ποσό κατακερματισμού sha256 μετά τη λήψη του αρχείου, έχουν δημιουργηθεί τρεις μεταβλητές μέσα στις συλλογές (μπορείτε να τις βρείτε μεταβαίνοντας στις ρυθμίσεις συλλογής Επεξεργασία -> Μεταβλητές): te_api (απαιτείται), api_key (απαιτείται να συμπληρωθεί, εκτός εάν χρησιμοποιείται TP API με τοπικές συσκευές), sha256 (αφήστε κενό, δεν χρησιμοποιείται στο TP API για SG).

Κατεβάστε τη συλλογή Postman για το API Πρόληψης Απειλών

Πραγματοποιήστε λήψη της συλλογής Postman για το API Threat Prevention for Security Gateway

Παραδείγματα χρήσης

Στην κοινότητα Ελέγξτε τους φίλους Παρουσιάζονται σενάρια γραμμένα σε Python που ελέγχουν τα αρχεία από τον επιθυμητό κατάλογο μέσω TP APIΚαι TP API για SG. Μέσω της αλληλεπίδρασης με το Threat Prevention API, η ικανότητά σας να σαρώνετε αρχεία επεκτείνεται σημαντικά, αφού τώρα μπορείτε να σαρώνετε αρχεία σε πολλές πλατφόρμες ταυτόχρονα (check in VirusTotal APIκαι, στη συνέχεια, στο πλαίσιο δοκιμών Σημείου ελέγχου) και λάβετε αρχεία όχι μόνο από την κυκλοφορία δικτύου, αλλά και λήψη τους από οποιεσδήποτε μονάδες δίσκου δικτύου και, για παράδειγμα, συστήματα CRM.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο