BETA

Επίθεση μέσω ARP και... παραμύθια τέλος!

Εικόνα AndreasV

[Η Πρώτη παρουσίαση του άρθρου αυτού έγινε στο Total XakeЯ #29 - 2009]

Στο προηγούμενο άρθρο περιγράψαμε πως λειτουργεί το πρωτόκολλο AR (Address Resolution). Αναφέραμε τον τρόπο που επικοινωνεί ο router μας με τους υπολογιστές του τοπικού μας δικτύου. Όλα αυτά τα “περάσαμε” σε εσάς με ένα συμβολικό παραμυθάκι, με τον καλό και έντιμο Κο Δρομολογητή και τον πονηρό Κο Black. Το παραμυθάκι όμως τελείωσε. Ήρθε η ώρα να αντιμετωπίσουμε την πραγματικότητα (επιτρέψτε μου αυτόν τον λεκτικό “ακροβατισμό”, δηλαδή να μιλάω για πραγματικότητα σε έναν... εικονικό κόσμο, διότι όπως θα έλεγε και το PC στο “Electric Dreams”: What's the difference?): Θα δούμε τον ακριβή τρόπο που έδρασε ο Κος Black αλλοιώνοντας την λίστα (ARP Table) του κυρίου Δρομολογητή.

Με πιστό σεβασμό στην ρήση “η καλύτερη άμυνα είναι να μάθεις πως γίνεται η επίθεση”, θα παρουσιάσουμε τον τρόπο που μπορεί κάποιος να παραποιήσει τα δεδομένα που ξέρει ο router για κάποιο υπολογιστή του δικτύου (ARP Poisoning) με αποτέλεσμα την άρνηση εξυπηρέτησης ή αλλιώς το γνωστό Denial Of Service. Επίσης θα δούμε πώς η παραπάνω μέθοδος θα μπορούσε (με μια μικρή αλλαγή) να χρησιμοποιηθεί και για επιθέσεις Man In The Middle. Γενικά θα δούμε την λειτουργία του ARP Poisoning στην πράξη. Αυτή την φορά όμως δεν θα χρησιμοποιήσουμε κάποιο έτοιμο εργαλείο. Ούτε καν θα γράψουμε κάποιο πρόγραμμα. Αλήθεια σας λέμε! Την αλλοίωση του πίνακα ARP μαζί με ότι αυτό συνεπάγεται, θα την πραγματοποιήσουμε με τον πατροπαράδοτο παλιό καλό τρόπο: Χειροκίνητα!

Θα πραγματοποιήσουμε την επίθεση από ένα box με λειτουργικό σύστημα Windows Vista SP2 σε ένα box με Windows XP SP2. Ακόμα, θα παρακολουθήσουμε και θα ελέγξουμε την επιτυχία της επίθεσης μας με την χρήση του γνωστού sniffer Wireshark (http://www.wireshark.org/). Στην θέση των (s)Vista θα μπορούσε να είναι ένα οποιοδήποτε OS (οι αλλαγές είναι minor).

Για να καταλάβουμε πως ακριβώς θα λειτουργήσει η επίθεση θα πρέπει να μιλήσουμε πρώτα για ένα πρόγραμμα που μας δίνεται μαζί με τα Vista αλλά και τα XP. Ένα πρόγραμμα που τρέχει από την γραμμή εντολών του λειτουργικού συστήματος, και που «ακούει» στο όνομα ARP.EXE και βρίσκεται (που αλλού;) στον κατάλογο c:\windows\system32. Το πρόγραμμα αυτό μόλις εκτελεστεί με την παράμετρο “-a” θα μας δείξει τα περιεχόμενα του πίνακα ARP (εικόνα 1).


Εικόνα 1: Τα περιεχόμενα του πίνακα ARP

Όπως ήδη έχουμε αναφέρει στο προηγούμενο άρθρο μας ο πίνακας ARP περιέχει την σύνδεση μεταξύ της IP address ενός υπολογιστή (ή καλύτερα ενός network interface μιας συσκευής) στο δίκτυο και της MAC Address του. Για τους πιο θεωρητικούς, πρόκειται για μια σύνδεση μεταξύ του OSI layer level 2 (Data Link Layer – όπως η MAC Address) με το OSI layer 3 (Network Layer – όπως η IP Address) - http://is.gd/4dOsQ.

Αυτός ο πίνακας “ζει” και ανανεώνεται στην μνήμη του κάθε ένα υπολογιστή. Στο παράδειγμα της εικόνας 1, βλέπουμε ότι στον τρέχον υπολογιστή στο interface με IP 192.168.1.66 είναι καταχωρημένες εφτά συσκευές, ή για να είμαστε ακριβείς, εφτά network interfaces (θα εξηγήσουμε παρακάτω τι εννοούμε). Η πρώτη στήλη είναι η IP address (Internet address) η δεύτερη στήλη είναι η MAC address και η τρίτη στήλη αναφέρει αν η συγκεκριμένη καταχώρηση είναι στατική ή δυναμική. Οι δυναμικές καταχωρήσεις εισάγονται αυτόματα, όταν γίνει χρήση κάποιας διεύθυνσης που δεν είναι ήδη καταχωρημένη, από ένα πρόγραμμα που δίνεται μαζί με το λειτουργικό σύστημα και ονομάζεται DHCP server (http://is.gd/4dRNq ). Π.χ. Αν κάνουμε ένα ping σε κάποια μη καταχωρημένη διεύθυνση, τότε αυτή εισάγεται ή αν υπάρχει ήδη τότε ενημερώνεται (εφόσον δεν είναι στατική). Θέλουμε να πιστεύουμε ότι θυμόσαστε με συμπάθεια τον Κο Γρηγόρη Δρομολογητή που ενημέρωνε την λίστα του... ;) Ε! Για αυτήν την λίστα μιλάμε!

Οι Στατικές καταχωρήσεις μπορούν να εισάγονται από προγράμματα ή από τον ίδιο τον χρήστη. Αυτές έχουν προτεραιότητα έναντι των δυναμικών. Κρατήστε το αυτό! Θα μας χρειαστεί λίγο αργότερα.

Σας χρωστάμε όμως μια εξήγηση. Προηγουμένως θέλαμε να είμαστε ακριβείς και αναφέραμε ότι στον πίνακα ARP καταχωρούνται interfaces και όχι κατ' ανάγκη συσκευές μεμονωμένες. Επιτρέψτε μας να δώσουμε ένα παράδειγμα μια και πρόκειται για ένα θέμα που δεν είναι συχνά ξεκάθαρο σε πολλούς: Το laptop μου όταν συνδέεται μέσω καλωδίου (RJ-45) έχει ενεργό τόσο το ασύρματο interface όσο και το ενσύρματο, το τοπικό. Ο κος Γρηγ... εε!! ο DHCP server (http://is.gd/4dRNq ), δίνει διαφορετική IP σε κάθε interface και φυσικά έχουν και διαφορετική MAC address μιας και πρόκειται για διαφορετικές κάρτες δικτύου. Μια τέτοια κατάσταση απεικονίζεται στον πίνακα ARP σαν δύο διαφορετικές εγγραφές (συσκευές) η κάθε μια με την δική της IP. Αυτό είναι απολύτως φυσικό εφόσον ο πίνακας ARP κρατά interfaces και όχι συσκευές (υπολογιστές). Στο δικό μας box, στην εικόνα 1, βλέπουμε τρία διαφορετικά interfaces για τον τρέχοντα υπολογιστή που τρέξαμε την εντολή “arp -a”. To κάθε ένα με τις δικές του καταχωρήσεις.

Και τώρα που πιστεύουμε ότι τα καταλάβατε όλα και είστε γεμάτοι γνώσεις και ενθουσιασμό, ας προχωρήσουμε στην πράξη!

Για να δούμε όμως όλο το “σκηνικό” αυτό στην πράξη και μάλιστα τι ακριβώς γίνεται “behind the scenes” καλό θα ήταν να ανοίξουμε τον αγαπημένο μας sniffer (http://www.wireshark.org/ - εικόνα 2).


Εικόνα 2: Επιλογή network interface με τον γνωστό wireshark sniffer σε Vista.

Ανοίγουμε τον sniffer μας και επιλέγουμε network interface (εικόνα 2). Διαλέγουμε το interface εκείνο που “βλέπει” την IP 192.168.1.68 το οποίο αντιστοιχεί στην ενσύρματα κάρτα δικτύου μας. Α!, μην ξεχάσουμε να τονίσουμε ότι αν εσείς δοκιμάσετε κάτι αντίστοιχο, το πιθανότερο είναι να έχετε μια εντελώς διαφορετική εικόνα, αφού η κάρτα δικτύου σας μπορεί να αντιστοιχεί σε μια εντελώς διαφορετική IP.

Πριν πατήσουμε το button start, πάμε να ρίξουμε μια ματιά στα options (εικόνα 3). Πρέπει να έχετε ενεργοποιημένο το checkbox: Capture packets in promiscuous mode. Αυτό σημαίνει ότι ο sniffer μας θα συλλαμβάνει και τα πακέτα δεδομένων που διακινούνται στο LAN μας τα οποία δεν προορίζονται μόνο για εμάς, δηλαδή μόνο για τον 192.168.1.68. Μετά από αυτό μπορούμε πλέον με χαρά να πατήσουμε το κουμπί start αν θέλουμε να αρχίσουμε να παρακολουθούμε την κίνηση των πακέτων δεδομένων στο LAN.


Εικόνα 3: Η επιλογές της κάρτας δικτύου μας για την παρακολούθηση των πακέτων.

 

Επίσης, μην ξεχάσουμε να δούμε ποια είναι η MAC Address μας ώστε να την χρησιμοποιήσουμε αργότερα όταν θα “χαλάσουμε” το box θύμα. Δίνουμε λοιπόν, την παρακάτω εντολή (φυσικά από την γραμμή εντολών!):

C:> ipconfig /all |more

To αποτέλεσμα το βλέπουμε στην εικόνα 4. Παρατηρείστε ότι η παραπάνω εντολή μας εμφανίζει όλα τα network interfaces με πρώτο και καλύτερο αυτό της ασύρματης κάρτας το οποίο είναι επίσης ενεργό. Βλέπουμε ότι κάθε intreface έχει την δικιά του IP και την δικά του MAC address. Μην ακούσω λοιπόν ποτέ κανένα ξανά να ισχυρίζεται οτι σε ένα box δεν είναι δυνατόν να έχουμε παραπάνω από μια MAC address... huh?

Παρατηρούμε λοιπόν, ότι η MAC address για την ενσύρματη κάρτα δικτύου μας είναι η 14-49-62-80-E2-AA.


Εικόνα 4: Τσεκάροντας το network interface μας και την MAC address του.

Επίσης δώστε βάση και στην τιμή “DNS servers” (192.168.1.254). Είναι η IP του router μας (του Κου Δρομολογητή)! Μην την ξεχάσετε... θα μας χρειαστεί!

Είμαστε τώρα έτοιμοι να κάνουμε την επίθεση μας. Αυτό που θα κάνουμε είναι να τρέξουμε στο box του “θύματος” την εντολή arp με τέτοιες παραμέτρους ώστε

  1. Να διαγράψουμε τις τιμές που γνωρίζει ήδη για τα άλλα boxes του δικτύου και

  2. Να βάλουμε τις δικές μας τιμές. Με στόχο να μπερδέψουμε το “θύμα”, σαν δική μας τιμή θα βάλουμε το εξής: Θα δηλώσουμε στον πίνακα ARP του θύματος ότι η IP του router συνδέεται με την δική μας MAC address! Αυτό θα έχει σαν αποτέλεσμα, κάθε κλήση στο internet που θα κάνει το θύμα, να αποστέλλεται στο δικό μας box. Μήπως αυτό σας θυμίζει το 1ο βήμα μιας επίθεση MITM; Ναι, ίσως είναι. Αλλά αυτό το βήμα είναι αρκετό για να “μπλοκάρει” την σύνδεση του θύματος με το διαδίκτυο μιας και όλες η κλήσεις του προς οποιονδήποτε server θα στέλνονται στο δικό μας box το οποίο και θα τις αγνοεί!

Τα 1 και 2 υλοποιούνται πάρα μα πάρα πολύ εύκολα με 2 εντολές (εικόνα 5):

Για το 1 τρέχουμε την εντολή

C:> arp -d *

και διαγράφουμε όλες τις αναφορές του πίνακα ARP. Μην τρομάζετε όμως, αυτό δεν είναι και τόσο κακό μια και με κάθε κλήση σε κάποια άλλη διεύθυνση ο Κος Δρομολογητής μας θα ενημερώσει αμέσως τον πίνακα ARP... εκτός κι αν τον προλάβουμε και τρέξουμε το παρακάτω:

C:> arp -s 192.168.1.254 14-49-62-80-e2-aa

Εδώ βρίσκεται όλο η αιτία και η αφορμή αυτού του άρθρου! Με την εντολή αυτή εισάγουμε εμείς στον πίνακα ARP μια εγγραφή η οποία λέει: Ο router (192.168.1.254) έχει mac address την 14-49-62-80-e2-aa, που είναι η δική μας mac address! Μάλιστα παρατηρούμε ότι η παραπάνω εντολή δημιουργεί μια εγγραφή στον πίνακα ARP τύπου static (εκόνα 5)! Μάλιστα. Η εγγραφή πια δεν αλλάζει εκτός κι αν τρέξει κάποιος το arp -d *.


Εικόνα 5: Η επίθεση σε εξέλιξη στον υπολογιστή θύμα!

 

Ένας κακόβουλος χρήστης μπορεί να υλοποιήσει τα παραπάνω με πολλούς τρόπους. Κατ' αρχάς βάζει τις παραπάνω εντολές σε ένα batch file και μετά:

  1. Μπορεί να μπει στον υπολογιστή σας όσο λείπετε και να το εκτελέσει από ένα memory stick.

  2. Μπορεί να μπει στον υπολογιστή σας όσο λείπετε, να ανοίξει ένα command prompt και να εκτελέσει απλά τις εντολές.

  3. Να σας στείλει ένα mail με τίτλο “Κοίτα τι όμορφο πρόγραμμα βρήκα” ή “Έλα Χρήστο βρήκα το πρόγραμμα που μου ζήτησες...” και να έχει attach το batch file που να σας προτρέπει να το πατήσετε.

  4. Να μπει με metasploit εκμεταλλευόμενος μια αδυναμία του λειτουργικού συστήματος ή κάποιου software μου έχετε εγκαταστήσει (client side attack) σας καλώντας ένα reverse shell οπότε μετά απλά μπορεί να εκτελέσει τις παραπάνω εντολές.

Οι τρόποι είναι πάρα πολλοί. Τόσοι όσο μπορείτε να σκεφτείτε αν αναρωτηθείτε πως είναι δυνατόν κάποιος να τρέξει εντολές στο PC σας με τη θέληση σας ή με την άγνοια σας ή με ότι άλλο φανταστείτε...

Από την στιγμή που θα τρέξουν η 2 παραπάνω εντολές όλες κλήσεις προς στο internet στον υπολογιστή “θύμα” θα πέφτουν σε εμάς (στην δική μας IP)... ή αλλιώς στο κενό (εικόνα 6).


Εικόνα 6: Αχρηστεύοντας προσωρινά το internet του φίλου μας!

Εμείς όμως έχουμε προετοιμαστεί και για μια παρακολούθηση. Μάλιστα βλέπουμε στον sniffer μας πακέτα που προέρχεται από την IP του θύματος (192.168.1.69) να προσπαθεί μάταια να δει το travel link του site www.msn.com (εικόνα 7).


Εικόνα 7: Το θύμα προσπαθεί να επισκεφτεί ένα link “επί ματαίω” κι εμείς τον παρακολουθούμε!

Θα μπορούσαμε (όπως είπαμε) σε αυτό το σημείο να κάνουμε και κάτι άλλο, σαν επέκταση τις επίθεσης μας: Μόλις λαμβάνουμε τα πακέτα δεδομένων από το θύμα, να τα στέλναμε στον router αντί να τα “πνίξουμε” και μετά αφού ο router μας απαντούσε να στέλναμε την απάντηση πίσω στο θύμα. Ακριβώς! Καλά το καταλάβατε. Σε αυτήν την περίπτωση θα είχαμε υλοποιήσει μια επίθεση Man In The Middle - ΜΙΤΜ κλέβοντας και παρακολουθώντας όλες τις κινήσεις του θύματος στο internet, με ότι αυτό συνεπάγεται. Δηλαδή, θα μπορούσαμε να δούμε κωδικούς πιστωτικών καρτών, passwords, mails κλπ κλπ! Γενικά θα λέγαμε, ότι θα προέκυπτε μια καθόλου ευχάριστη κατάσταση για το “θύμα” μας!

Χμ... Έχει μείνει ακόμα ένα σκοτεινό σημείο {να ήταν μόνο ένα καλά θα ήτανε... :)} : Αν το “θύμα” έκανε restart τον υπολογιστή του, θα την γλίτωνε; Θα καθάριζε ο ARP table ακόμα κι από τις στατικές καταχωρήσεις; Αυτή την φορά θα ζητήσουμε από εσάς να μας απαντήσετε επάνω σε αυτό. Πρέπει να ξεκινήσετε κι εσείς να δοκιμάζετε και να πειραματίζεστε. Μόνο έτσι θα μάθετε με τον σωστό τρόπο. Μόνο έτσι θα μπορείτε να συμμετέχετε σε συζητήσεις και θα έχετε “άποψη”. Άποψη με δικά σας επιχειρήματα, όχι με επιχειρήματα άλλων. Κανείς δεν θα μπορέσει να σας κάνει τον έξυπνο λέγοντας ότι ένα box έχει μόνο μια IP ή μια MAC αφού εσείς οι ίδιοι το έχετε δει με τα μάτια σας με τις δοκιμές που μάθατε να κάνετε και το κυριότερο, που μάθατε να ερμηνεύετε τα αποτελέσματα τους.

  • Σχόλια

5 Comments:

  1. Εικόνα Haris
    HarisΦεβ 05, 2015 11:26 ΠΜ

    Ανδρέα αν και έχω αποκοπεί (λόγω συνθηκών) απο τις δικτυακές σπουδές, και ως εκ τούτου τα ξέχασα, η άσκηση σου είναι πολύ ωραία. Θα προσπαθήσω να απαντήσω, αν τα πω σωστά. Ο ARP table του θύματος θα ανανεωθεί μετά απο restart, διότι είναι η φύση του πρωτοκόλλου να ανακαλύπτει τους υπολογιστές του δικτύου, επίσης μια ARP καταχώρηση δεν διατηρείται για πάντα στον ARP table. Κάθε φορά που καταχωρείται κάτι, ξεκινά και ένας αντίστροφος counter για την συγκεκριμένη εγγραφή, και εάν μέσα σε ένα χρονικό διάστημα δεν διακινηθούν frames απο η πρός την συγκεκριμένη εγγραφή, αυτή φεύγει απο τον πίνακα. Μόλις ξαναγίνει διακίνηση frames έχουμε πάλι επανεγγραφή. Όσον αφορά τα στατικά, θα διαγραφούν εκτός αν υπάρχει boot σκριπτάκι που θα τα ξαναβάλει, η configuration file (αν πρόκειται για κανένα router).

    Τα σκοτεινά σημεία όμως δεν τελειώνουν εδώ, εμένα μου ήρθαν στο μυαλό δύο άλλες ερωτήσεις που προσπαθώ να επαναφέρω στο μυαλό μου τι έπαιζε με αυτές. Η πρώτη είναι η εξής: Στό δίκτυο προφανώς θα υπάρχει switch. Ας αποκλείσουμε την περίπτωση να μην υπάρχει, να είναι δηλαδή κάποιο παλιό με hub και με coaxial καλώδιο κλπ. Ο switch λοιπόν έχει δικό του πίνακα που σε κάθε πόρτα συσχετίζει μια ή περισσότερες MAC που βρίσκονται πάνω της. Μπορεί πίσω από την πόρτα 4 ας πούμε να έχει χαμπάκι και να είναι τρείς υπολογιστές με τρείς MAC. Αυτές θα τις εγγράψει ο switch για την πόρτα 4. Ας υποθέσουμε πως ο router gateway βρίσκεται στην πόρτα 1. Εδώ λοιπόν θα έχουμε πρόβλημα, διότι ο switch δεν μπορεί να κρατάει μια ίδια MAC address που βρίσκεται στην πόρτα 1, και μια παρόμοια του χάκερ (μασκαρεμένη του ρούτερ), σε μια άλλη πόρτα. Αν το θύμα βρίσκεται στην πόρτα 2, και προσπαθεί να στείλει frames προς τον router, που θα τα στείλει ο switch; Στην 1 που βρίσκεται ο router, ή στην 3 που είναι ο χάκερ μασκαρεμένος σε router; Μπορούμε να την θυμηθούμε λίγο την περίπτωση; Εδώ είμαστε σε Layer 2 (switch). Λοιπόν ο χάκερ θα πρέπει να βρίσκεται πίσω απο την ίδια πόρτα που βρίσκεται ο router, έτσι ώστε στον switch να έχουμε ίδιες MAC πίσω απο την ίδια πόρτα...και πάλι δεν θυμάμαι που θα έχουμε το πρόβλημα...για λέγε...

    Ένα άλλο θέμα είναι με το PAT. Ο router, εκτός απο το NAT, υλοποιεί και το PAT. Πράγμα που σημαίνει πως η κίνηση (web στην περίπτωση μας), θα αποσταλεί στο θύμα σε ένα port που το θύμα είχε ανοίξει κάνοντας το request. Ας πούμε δεν είναι το 80 στο θύμα, απο την εικόνα είναι το 4028; Ο router δηλαδή, θα του προορίζει web traffic στο IP του, και στο port 4028 (;). Mε τον χάκερ τι γίνεται, γιατί για να δεί αυτή την κίνηση, θα πρέπει να την δεί στο δικό του PC πάλι στο 4028. Ή όχι;

  2. Εικόνα AndreasV
    AndreasVΦεβ 05, 2015 14:47 ΜΜ

    @Haris το θέμα με την ερώτηση μου δεν είναι κάτι σύνθετο, αρκεί να δεις πως μετά από κάθε restart (reboot) τα dynamic entries χάνονται... ;)

    Όσο αφορά στις ερωτήσεις σου έχω 1-2 απορίες - διευκρινήσεις.

    • Εγώ αναφερόμουν πάντα σε εσωτερικό LAN... οπότε το NAT δεν με απασχόλησε πως και γιατί κλπ. (σε αυτό το άρθρο τουλάχιστον).
    • Επίσης η ερώτηση σου αφορά MITM attack? { αυτό είναι κάτι διαφορετικό απλά ίσως απαιτεί κάποιες βασικές γνώσεις arp, αλλά σε ένα μικρό ποσοστό }. Θα ακολουθήσει σύντομα στοχευμένο αρθράκι έπανω σε MITM, οπότε αν η ερώτηση σου ήταν τέτοια καλύτερα να την συζητήζουμε εκεί, επειδή πολλά από τα θέματα που θίγεις θεωρώ οτι θα αναλυθούν εκεί ενδελεχώς... (imo πάντα).
       

  3. Εικόνα Haris
    HarisΦεβ 05, 2015 14:51 ΜΜ

    Ναι βρε εσωτερικό είναι το LAN εγώ το λέω επειδή το θύμα πάει να δει το msn.com άρα θα βγεί απο την gateway για να πάει στο MSN. Αλλά νόμισα πως ο χάκερ θέλει να δει την ανταλλαγή των web δεδομένων, α, όχι, το travel link θέλει να δει μόνο, εντάξει κατάλαβα.

  4. Εικόνα AndreasV
    AndreasVΦεβ 05, 2015 15:53 ΜΜ

    @Haris Σωστά!

    Ο "hacker" ή καλύτερα ο "πονηρός τύπος" θέλει απλά να κάνει Denial Of Service attack στο θύμα του, ώστε να του κόψει το internel... μέσω arp spoofing.

    Το msn που βλέπει ο "πονηρός τύπος" μέσω wireshark δόθηκε για λόγους "γνωσιολογικής επάρκειας"... :-)
    Απλά για να δει οτι το θύμα έφαγε πόρτα την ώρα που πήγε να κάνει ένα request από την IP του προς... οπουδήποτε.

  5. Εικόνα Thomas
    Thomas (χωρίς επαλήθευση)Δεκ 31, 2016 19:08 ΜΜ

    Ρε παιδια για να μαθω τι ειναι vpn ξεκινησα...
    Και εχω μαθει ενα σωρο πραγμτα..
    Συνχαριτιρια σε ολους του συνγραφεις...
    Μακαρι αυτα να μας μαθεναν στο σχολειο..

Scroll to Top