hacktricks/generic-methodologies-and-resources/threat-modeling.md

112 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Threat Modeling
## Threat Modeling
Καλώς ήρθατε στον ολοκληρωμένο οδηγό του HackTricks για το Threat Modeling! Ξεκινήστε μια εξερεύνηση αυτού του κρίσιμου τομέα της κυβερνοασφάλειας, όπου εντοπίζουμε, κατανοούμε και στρατηγικά σχεδιάζουμε ενάντια σε πιθανές ευπάθειες σε ένα σύστημα. Αυτό το νήμα χρησιμεύει ως οδηγός βήμα προς βήμα γεμάτος με παραδείγματα από τον πραγματικό κόσμο, χρήσιμο λογισμικό και εύκολες προς κατανόηση εξηγήσεις. Ιδανικό για αρχάριους και έμπειρους επαγγελματίες που επιθυμούν να ενισχύσουν τις άμυνες της κυβερνοασφάλειάς τους.
### Commonly Used Scenarios
1. **Software Development**: Ως μέρος του Secure Software Development Life Cycle (SSDLC), το threat modeling βοηθά στην **εντοπισμό πιθανών πηγών ευπαθειών** στα πρώτα στάδια της ανάπτυξης.
2. **Penetration Testing**: Το Penetration Testing Execution Standard (PTES) απαιτεί **threat modeling για την κατανόηση των ευπαθειών του συστήματος** πριν από την εκτέλεση της δοκιμής.
### Threat Model in a Nutshell
Ένα Threat Model συνήθως απεικονίζεται ως διάγραμμα, εικόνα ή κάποια άλλη μορφή οπτικής απεικόνισης που απεικονίζει την προγραμματισμένη αρχιτεκτονική ή την υπάρχουσα κατασκευή μιας εφαρμογής. Έχει ομοιότητα με ένα **διάγραμμα ροής δεδομένων**, αλλά η βασική διάκριση έγκειται στο σχεδιασμό του που επικεντρώνεται στην ασφάλεια.
Τα threat models συχνά περιλαμβάνουν στοιχεία που σημειώνονται με κόκκινο, συμβολίζοντας πιθανές ευπάθειες, κινδύνους ή εμπόδια. Για να απλοποιηθεί η διαδικασία εντοπισμού κινδύνων, χρησιμοποιείται η τριάδα CIA (Confidentiality, Integrity, Availability), που αποτελεί τη βάση πολλών μεθοδολογιών threat modeling, με το STRIDE να είναι μία από τις πιο κοινές. Ωστόσο, η επιλεγμένη μεθοδολογία μπορεί να διαφέρει ανάλογα με το συγκεκριμένο πλαίσιο και τις απαιτήσεις.
### The CIA Triad
Η τριάδα CIA είναι ένα ευρέως αναγνωρισμένο μοντέλο στον τομέα της ασφάλειας πληροφοριών, που σημαίνει Confidentiality, Integrity και Availability. Αυτοί οι τρεις πυλώνες αποτελούν τη βάση πάνω στην οποία έχουν οικοδομηθεί πολλά μέτρα και πολιτικές ασφάλειας, συμπεριλαμβανομένων των μεθοδολογιών threat modeling.
1. **Confidentiality**: Διασφάλιση ότι τα δεδομένα ή το σύστημα δεν αποκτώνται από μη εξουσιοδοτημένα άτομα. Αυτό είναι ένα κεντρικό στοιχείο της ασφάλειας, απαιτώντας κατάλληλους ελέγχους πρόσβασης, κρυπτογράφηση και άλλα μέτρα για την αποφυγή διαρροών δεδομένων.
2. **Integrity**: Η ακρίβεια, η συνέπεια και η αξιοπιστία των δεδομένων κατά τη διάρκεια του κύκλου ζωής τους. Αυτή η αρχή διασφαλίζει ότι τα δεδομένα δεν τροποποιούνται ή παραποιούνται από μη εξουσιοδοτημένα μέρη. Συχνά περιλαμβάνει checksums, hashing και άλλες μεθόδους επαλήθευσης δεδομένων.
3. **Availability**: Αυτό διασφαλίζει ότι τα δεδομένα και οι υπηρεσίες είναι προσβάσιμα σε εξουσιοδοτημένους χρήστες όταν χρειάζεται. Αυτό συχνά περιλαμβάνει πλεονασμό, ανθεκτικότητα σε σφάλματα και ρυθμίσεις υψηλής διαθεσιμότητας για να διατηρούνται τα συστήματα σε λειτουργία ακόμη και μπροστά σε διαταραχές.
### Threat Modeling Methodlogies
1. **STRIDE**: Αναπτυγμένο από τη Microsoft, το STRIDE είναι ένα ακρωνύμιο για **Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege**. Κάθε κατηγορία αντιπροσωπεύει έναν τύπο απειλής, και αυτή η μεθοδολογία χρησιμοποιείται συνήθως στη φάση σχεδίασης ενός προγράμματος ή συστήματος για την αναγνώριση πιθανών απειλών.
2. **DREAD**: Αυτή είναι μια άλλη μεθοδολογία από τη Microsoft που χρησιμοποιείται για την αξιολόγηση κινδύνου των αναγνωρισμένων απειλών. Το DREAD σημαίνει **Damage potential, Reproducibility, Exploitability, Affected users, and Discoverability**. Κάθε ένας από αυτούς τους παράγοντες βαθμολογείται, και το αποτέλεσμα χρησιμοποιείται για την προτεραιοποίηση των αναγνωρισμένων απειλών.
3. **PASTA** (Process for Attack Simulation and Threat Analysis): Αυτή είναι μια επταβάθμια, **risk-centric** μεθοδολογία. Περιλαμβάνει τον καθορισμό και την αναγνώριση των στόχων ασφάλειας, τη δημιουργία τεχνικού πεδίου, την αποσύνθεση εφαρμογών, την ανάλυση απειλών, την ανάλυση ευπαθειών και την αξιολόγηση κινδύνου/τριγιάζ.
4. **Trike**: Αυτή είναι μια μεθοδολογία βασισμένη στον κίνδυνο που επικεντρώνεται στην άμυνα των περιουσιακών στοιχείων. Ξεκινά από μια **οπτική διαχείρισης κινδύνου** και εξετάζει τις απειλές και τις ευπάθειες σε αυτό το πλαίσιο.
5. **VAST** (Visual, Agile, and Simple Threat modeling): Αυτή η προσέγγιση στοχεύει να είναι πιο προσβάσιμη και ενσωματώνεται σε περιβάλλοντα Agile ανάπτυξης. Συνδυάζει στοιχεία από τις άλλες μεθοδολογίες και επικεντρώνεται σε **οπτικές αναπαραστάσεις απειλών**.
6. **OCTAVE** (Operationally Critical Threat, Asset, and Vulnerability Evaluation): Αναπτυγμένο από το CERT Coordination Center, αυτό το πλαίσιο προορίζεται για **αξιολόγηση οργανωτικού κινδύνου παρά συγκεκριμένων συστημάτων ή λογισμικού**.
## Tools
Υπάρχουν αρκετά εργαλεία και λύσεις λογισμικού διαθέσιμα που μπορούν να **βοηθήσουν** στη δημιουργία και διαχείριση threat models. Ακολουθούν μερικά που μπορεί να εξετάσετε.
### [SpiderSuite](https://github.com/3nock/SpiderSuite)
Ένας προηγμένος διασυνοριακός και πολυλειτουργικός GUI web spider/crawler για επαγγελματίες κυβερνοασφάλειας. Το Spider Suite μπορεί να χρησιμοποιηθεί για χαρτογράφηση και ανάλυση επιφάνειας επίθεσης.
**Usage**
1. Επιλέξτε μια διεύθυνση URL και Craw
<figure><img src="../.gitbook/assets/threatmodel_spidersuite_1.png" alt=""><figcaption></figcaption></figure>
2. Δείτε το Γράφημα
<figure><img src="../.gitbook/assets/threatmodel_spidersuite_2.png" alt=""><figcaption></figcaption></figure>
### [OWASP Threat Dragon](https://github.com/OWASP/threat-dragon/releases)
Ένα έργο ανοιχτού κώδικα από το OWASP, το Threat Dragon είναι τόσο μια διαδικτυακή όσο και μια επιτραπέζια εφαρμογή που περιλαμβάνει διαγράμματα συστημάτων καθώς και μια μηχανή κανόνων για αυτόματη δημιουργία απειλών/μετριασμών.
**Usage**
1. Δημιουργία Νέου Έργου
<figure><img src="../.gitbook/assets/create_new_project_1.jpg" alt=""><figcaption></figcaption></figure>
Μερικές φορές μπορεί να φαίνεται έτσι:
<figure><img src="../.gitbook/assets/1_threatmodel_create_project.jpg" alt=""><figcaption></figcaption></figure>
2. Εκκίνηση Νέου Έργου
<figure><img src="../.gitbook/assets/launch_new_project_2.jpg" alt=""><figcaption></figcaption></figure>
3. Αποθήκευση του Νέου Έργου
<figure><img src="../.gitbook/assets/save_new_project.jpg" alt=""><figcaption></figcaption></figure>
4. Δημιουργήστε το μοντέλο σας
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το SpiderSuite Crawler για να σας δώσουν έμπνευση, ένα βασικό μοντέλο θα μπορούσε να φαίνεται κάπως έτσι
<figure><img src="../.gitbook/assets/0_basic_threat_model.jpg" alt=""><figcaption></figcaption></figure>
Μια μικρή εξήγηση για τις οντότητες:
* Process (Η οντότητα αυτή καθαυτή όπως Webserver ή web functionality)
* Actor (Ένα άτομο όπως ένας επισκέπτης ιστοσελίδας, χρήστης ή διαχειριστής)
* Data Flow Line (Δείκτης αλληλεπίδρασης)
* Trust Boundary (Διαφορετικά τμήματα ή πεδία δικτύου.)
* Store (Πράγματα όπου αποθηκεύονται τα δεδομένα όπως βάσεις δεδομένων)
5. Δημιουργία μιας Απειλής (Βήμα 1)
Πρώτα πρέπει να επιλέξετε το επίπεδο στο οποίο θέλετε να προσθέσετε μια απειλή
<figure><img src="../.gitbook/assets/3_threatmodel_chose-threat-layer.jpg" alt=""><figcaption></figcaption></figure>
Τώρα μπορείτε να δημιουργήσετε την απειλή
<figure><img src="../.gitbook/assets/4_threatmodel_create-threat.jpg" alt=""><figcaption></figcaption></figure>
Λάβετε υπόψη ότι υπάρχει διαφορά μεταξύ των Απειλών Ηθοποιών και των Απειλών Διαδικασίας. Εάν προσθέσετε μια απειλή σε έναν Ηθοποιό, τότε θα μπορείτε να επιλέξετε μόνο "Spoofing" και "Repudiation". Ωστόσο, στο παράδειγμά μας προσθέτουμε απειλή σε μια οντότητα Διαδικασίας, οπότε θα δούμε αυτό στο πλαίσιο δημιουργίας απειλής:
<figure><img src="../.gitbook/assets/2_threatmodel_type-option.jpg" alt=""><figcaption></figcaption></figure>
6. Έγινε
Τώρα το ολοκληρωμένο μοντέλο σας θα πρέπει να φαίνεται κάπως έτσι. Και έτσι δημιουργείτε ένα απλό threat model με το OWASP Threat Dragon.
<figure><img src="../.gitbook/assets/threat_model_finished.jpg" alt=""><figcaption></figcaption></figure>
### [Microsoft Threat Modeling Tool](https://aka.ms/threatmodelingtool)
Αυτό είναι ένα δωρεάν εργαλείο από τη Microsoft που βοηθά στην αναγνώριση απειλών στη φάση σχεδίασης των έργων λογισμικού. Χρησιμοποιεί τη μεθοδολογία STRIDE και είναι ιδιαίτερα κατάλληλο για όσους αναπτύσσουν στην πλατφόρμα της Microsoft.