ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πειραιά Δίκτυα Ηλεκτρονικών Υπολογιστών Ενότητα #2 (εργαστηριακή): Εισαγωγή στο Wireshark και μελέτη πρωτοκόλλων επιπέδου εφαρμογής Δρ. Χαράλαμπος Ζ. Πατρικάκης Δρ. Δημήτριος Γ. Κόγιας Μηχανικών Τ.Ε
2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
3 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Πειραιά» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Βιβλιογραφία James F. Kurose - Keith W. Ross, Δικτύωση Υπολογιστών, εκδ. Γκιούρδας. Tanenbaum, Wetherall, Δίκτυα Υπολογιστών, Εκδ. Κλειδάριθμος. Douglas E. Comer, Δίκτυα και διαδίκτυα υπολογιστών και εφαρμογές τους στο Internet,, Κλειδάριθμος Monteiro, J. M., Cruz, R. S., Patrikakis, C. Z., Papaoulakis, N. C., Calafate, C. T., & Nunes, M. S. (2013). Peer-to-Peer Video Streaming. In R. Farrugia, & C. Debono (Eds.), Multimedia Networking and Coding (pp. 254-313). Hershey, PA: Information Science Reference. doi:10.4018/978-1-4666-2660-7.ch010. Charalampos Z. Patrikakis, Angelos- Christos Anadiotis, Penetrating with DDoS Attacks, (διαθέσιμο στο διαδίκτυο: http://pentestmag.com), PenTest Magazine, vol2 no 5, Aug 2012, pp [16-22]. Pendegraft, N. (2003). The TCP/IP Game. In T. McGill (Ed.), Current Issues in IT Education (pp. 117-124). Hershey, PA: IRM Press. doi:10.4018/978-1- 93177-753-7.ch009. Τμήμα των σημειώσεων είναι βασισμένο σε συνοδευτικό υλικό του βιβλίου των James F. Kurose - Keith W. Ross, Computer Networking, Pearson publications 4
5 Σκοποί ενότητας Στην ενότητα αυτή θα παρουσιαστούν απλές ασκήσεις με την χρήση του Wireshark και αφορούν τα πρωτόκολλα: HTTP DHCP
6 Περιεχόμενα ενότητας 2.1 Δοκιμάζοντας το Wireshark 2.2 Μελέτη DHCP στο Wireshark 2.3 Μελέτη HTTP στο Wireshark 2.4 Μελέτη HTTP CONDITIONAL GET στο Wireshark 2.5 HTTP AUTHENTICATION
2.1 Δοκιμάζοντας το Wireshark 7
8 ΔΟΚΙΜΑΖΟΝΤΑΣ ΤΟ WIRESHARK Χρησιμοποιώντας ένα ενσύρματο interface, ανοίγουμε τον browser της αρεσκείας μας και μπαίνουμε στην επιλεγμένη homepage. Ξεκινάμε το Wireshark. Πατάμε Capture αφού επιλέξουμε το (ενσύρματο) interface που επιθυμούμε. Πατάμε Start και αρχίζει η διαδικασία. Μπορούμε να σταματήσουμε τη διαδικασία ανά πάσα στιγμή πατώντας το κόκκινο κουμπί αλλά δεν θα το κάνουμε ακόμα. Θα αιχμαλωτίσουμε κάποια ενδιαφέροντα πακέτα πηγαίνοντας στο browser και με το Wireshark να τρέχει, πατάμε τον παρακάτω σύνδεσμο: http://gaia.cs.umass.edu/wireshark-labs/intro-wireshark-file1.html
9 ΔΟΚΙΜΑΖΟΝΤΑΣ ΤΟ WIRESHARK Για να φανεί η σελίδα στην οθόνη μας, ο browser θα επικοινωνήσει με έναν HTTP server στο gaia.cs.umass.edu και θα ανταλλάξει HTTP μηνύματα με τον server για να κατεβάσει την επιθυμητή σελίδα. Το Wireshark θα αιχμαλωτίσει τα Ethernet frames που θα περιέχουν αυτά τα HTTP μηνύματα (μαζί με άλλα). Μετά την απεικόνιση της σελίδας, μπορούμε να σταματήσουμε το Wireshark. Θα έχουμε τώρα αιχμαλωτίσει πραγματικά πακέτα δεδομένων. Κάπου στη λίστα αυτή θα φαίνονται και τα HTTP πακέτα που ανταλλάχτηκαν με τον HTTP server. Θα υπάρχουν και άλλα πακέτα ανάμεσα τους.
10 ΔΟΚΙΜΑΖΟΝΤΑΣ ΤΟ WIRESHARK Θα πάμε στο πεδίο packet display filter και θα γράψουμε http (προσοχή με μικρά γράμματα). Στη συνέχεια θα πατήσουμε Apply. Με τον τρόπο αυτό θα εμφανίζονται πλέον μόνο τα http πακέτα. Βρίσκουμε τα HTTP GET μηνύματα που εστάλησαν από τον υπολογιστή σας στον gaia.cs.umass.edu HTTP server και τα επιλέγουμε. Μόλις τα επιλέξουμε θα δούμε τις αναλυτικές πληροφορίες των πακέτων. Πατάμε στο + δίπλα από HTTP για να μεγιστοποιήσουμε την πληροφορία που έχουμε για αυτό και μελετάμε το πακέτο. Κλείνουμε το Wireshark.
ΕΡΩΤΗΣΕΙΣ Αναφέρετε 3 διαφορετικά πρωτόκολλα που εμφανίζονται στην στήλη πρωτοκόλλων, πριν την φιλτράρετε. Πόσο χρόνο χρειάστηκε από τη στιγμή που έφυγε το HTTP GET μήνυμα μέχρι τη στιγμή που λήφθηκε το HTTP OK μήνυμα; Ποια είναι η ΙΡ διεύθυνση του gaia.cs.umass.edu? Ποια είναι η δική σας ΙΡ διεύθυνση; 11
2.2 Μελέτη DHCP στο Wireshark 12
ΜΕΛΕΤΗ DHCP ΣΤΟ Wireshark Για να μελετήσουμε το DHCP, θα εκτελέσουμε διάφορες εντολές που σχετίζονται με αυτό και θα μελετήσουμε τα DHCP πακέτα που παράγουν οι εντολές αυτές. Κάνουμε: Ανοίγουμε το Command Prompt των Windows. Γράφουμε ipconfig/release. Με την εντολή αυτή ελευθερώνουμε την ΙΡ διεύθυνση που έχουμε πάρει και πλέον η διεύθυνση μας γίνεται 0.0.0.0 Ανοίγουμε το Wireshark και το βάζουμε να καταγράψει. 13
ΜΕΛΕΤΗ DHCP ΣΤΟ Wireshark Στο Command Window πατάμε ipconfig/renew. Με τον τρόπο αυτό ζητάμε να μας δοθεί μια καινούργια ΙΡ διεύθυνση. Περιμένετε να ολοκληρωθεί η εντολή ipconfig/renew και ξαναπατάμε ipconfig/renew. Όταν ολοκληρωθεί και το δεύτερο πατάμε πάλι ipconfig/release για να ελευθερώσουμε τη διεύθυνση αυτή. Τέλος, ξαναπατάμε ipconfig/renew. Σταματάμε το Wireshark. 14
ΜΕΛΕΤΗ DHCP ΣΤΟ Wireshark Για να δούμε μόνο τα DHCP πακέτα, πατάμε στο φίλτρο τη λέξη bootp (Το DHCP προέρχεται από ένα παλαιότερο πρωτόκολλο που λεγόταν BOOTP. Και τα δύο χρησιμοποιούν τους ίδιους αριθμούς πορτών 67 και 68. Θα πρέπει να δούμε ότι η πρώτη εντολή ipconfig/renew δημιούργησε 4 πακέτα: ένα DHCP Discover πακέτο, ένα DHCP Offer πακέτο, ένα DHCP Request πακέτο και ένα DHCP ACK πακέτο. 15
16 ΕΡΩΤΗΣΕΙΣ DHCP Τα DHCP μηνύματα στέλνονται μέσω UDP ή TCP; Σχεδιάστε ένα χρονικό διάγραμμα για τα πρώτα 4 πακέτα. Για κάθε πακέτο εντοπίστε τους αριθμούς των πορτών του αποστολέα και του παραλήπτη. Είναι οι ίδιες για όλους στην τάξη; Ποια είναι η Ethernet διεύθυνση του υπολογιστή σας; Ποιες είναι οι τιμές στις οποίες διαφέρουν τα μηνύματα DHCP discover και DHCP request;
17 ΕΡΩΤΗΣΕΙΣ DHCP Η ΙΡ διεύθυνση καταχωρείται μετά το πέρας και των 4 μηνυμάτων. Μελετήστε ποια είναι η ΙΡ διεύθυνση της πηγής και του προορισμού για καθένα από τα 4 μηνύματα; Ποια είναι η ΙΡ διεύθυνση του DHCP server του δικτύου; Ποια ΙΡ διεύθυνση μας προσφέρει ο server στο μήνυμα DHCP offer; Στην πρώτη πρόταση για ΙΡ διεύθυνση που κάνει ο server ο πελάτης απαντάει θετικά; Που στο μήνυμα RESPONSE βρίσκεται η προτεινόμενη από τον πελάτη ΙΡ διεύθυνση;
18 ΕΡΩΤΗΣΕΙΣ DHCP Εξηγήστε την έννοια του χρόνου ενοικίασης; Πόσος είναι ο χρόνος ενοικίασης στο παράδειγμα μας; Καθαρίστε το φίλτρο από τη λέξη bootp. Υπάρχουν καθόλου ARP μηνύματα κατά τη διάρκεια της ανταλλαγής DHCP πακέτων; Για ποιόν λόγο; Trace: http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip
2.3 Μελέτη HTTP στο Wireshark 19
20 ΜΕΛΕΤΗ HTTP ΣΤΟ Wireshark Ας ξεκινήσουμε κατεβάζοντας ένα πολύ απλό μικρό HTML αρχείο, το οποίο δεν περιέχει αντικείμενα. Κάνουμε τα εξής: Ανοίγουμε τον web browser. Ανοίγουμε το Wireshark και - πριν αρχίσουμε την καταγραφή- πατάμε http στο πεδίο/ φίλτρο, έτσι ώστε να μας εμφανίζονται αργότερα μόνο τα http πακέτα. Αναμένουμε λίγο περισσότερο από ένα λεπτό (θα εξηγήσουμε σε λίγο γιατί!) και αρχίζουμε την καταγραφή. Πληκτρολογούμε την παρακάτω διεύθυνση στον browser. http://gaia.cs.umass.edu/wireshark-labs/http-wireshark-file1.html
21 ΜΕΛΕΤΗ HTTP ΣΤΟ Wireshark Ο browser θα πρέπει να εμφανίσει την απλή σελίδα. Σταματήστε την καταγραφή στο Wireshark.
22 ΜΕΛΕΤΗ HTTP ΣΤΟ Wireshark Θα πρέπει να δείτε ότι το πρόγραμμα έπιασε 2 http πακέτα: το μήνυμα GET (από τον web browser στον web server) και την απάντηση του server (HTTP OK). Μειώστε την πληροφορία των υπόλοιπων πρωτοκόλλων και αυξήστε αυτήν του HTTP.
23 ΕΡΩΤΗΣΕΙΣ HTTP Τρέχει η έκδοση 1.0 ή η 1.1 του HTTP στον browser σας; Τι έκδοση του HTTP τρέχει στον server; Προσδιορίζει ο browser στο server τις γλώσσες που δέχεται και αν ναι πες είναι αυτές; Ποια είναι η ΙΡ του υπολογιστή σας και ποια του server; Ποιος είναι ο κωδικός κατάστασης που επιστρέφει στον browser από τον server;
24 ΕΡΩΤΗΣΕΙΣ HTTP Πότε τροποποιήθηκε τελευταία φορά το αρχείο; Θα πρέπει να βρήκατε ότι τροποποιήθηκε πριν 1 λεπτό περίπου (έτσι έχει προγραμματιστεί ο server). Για τον λόγο αυτό και η αναμονή πριν την εκκίνηση! Πόσα bytes περιεχομένου επιστρέφουν στον browser; Κοιτώντας τα δεδομένα, βλέπετε καμιά επικεφαλίδα που δεν εμφανίζεται;
2.4 Μελέτη HTTP CONDITIONAL GET στο Wireshark 25
26 ΜΕΛΕΤΗ HTTP CONDITIONAL GET ΣΤΟ Wireshark Γνωρίζετε ότι οι browsers αποθηκεύουν αντικείμενα στη μνήμη τους (cache) και εκτελούν υπό συνθήκη GET για να βρουν ένα HTTP αντικείμενο. Πριν συνεχίσετε, φροντίστε να καθαρίσετε την cache του browser σας πρώτα. Στον Firefox, επιλέξτε Tools->Clear Recent History Στη συνέχεια, ανοίξτε τον browser. Ξεκινήστε το Wireshark. Βάλτε το εξής URL στον browser: http://gaia.cs.umass.edu/wireshark-labs/http-wireshark-file2.html
27 ΜΕΛΕΤΗ HTTP CONDITIONAL GET ΣΤΟ Wireshark Θα πρέπει να δούμε ένα απλό HTML αρχείο πέντε γραμμών. Ξαναβάλτε αμέσως το ίδιο URL στον browser ή ανανεώστε αμέσως τη σελίδα. Σταματήστε την καταγραφή. Πατήστε http στο φίλτρο για να φανούν τα πακέτα του.
ΕΡΩΤΗΣΕΙΣ CONDITIONAL GET Εξετάστε τα περιεχόμενα του πρώτου HTTP GET request από τον browser στον server. Βλέπετε μια γραμμή «IF- MODIFIED-SINCE στο HTTP GET; Εξετάστε τα περιεχόμενα της απάντησης του server. Επιστρέφει τα περιεχόμενα του αρχείου αποκλειστικά; Τώρα, εξετάστε τα περιεχόμενα του δεύτερου HTTP GET request από τον browser στον server. Βλέπετε μια γραμμή «IF-MODIFIED-SINCE στο HTTP GET; Εάν ναι, τι πληροφορία το ακολουθεί; Ποιος είναι ο κωδικός της κατάστασης που επιστρέφεται σαν απάντηση στο HTTP GET; 28
29 ΑΝΑΚΤΩΝΤΑΣ ΜΕΓΑΛΑ ΑΡΧΕΙΑ (HTTP) Μέχρι τώρα τα αρχεία που κατεβάζαμε ήταν απλά και μικρά. Για να δούμε τι γίνεται όταν κατεβάζουμε ένα μεγαλύτερο αρχείο. Κάνουμε τα εξής: Ανοίγουμε τον browser και ελέγχουμε ότι η cache του είναι καθαρή. Αρχίζουμε την καταγραφή στο Wireshark. Βάζουμε το ακόλουθο URL http://gaia.cs.umass.edu/wireshark-labs/http-wireshark-file3.html
30 ΑΝΑΚΤΩΝΤΑΣ ΜΕΓΑΛΑ ΑΡΧΕΙΑ (HTTP) Θα πρέπει να μπορείτε να δείτε μαζί με το μήνυμα HTTP GET και πολλές απαντήσεις σε αυτό. Ένα HTTP response μήνυμα αποτελείται από μια γραμμή κατάστασης, ακολουθούμενη από γραμμές επικεφαλίδων και κενές γραμμές και από το σώμα του μηνύματος στη συνέχεια. Στο δικό μας HTTP GET το σώμα στην απάντηση είναι ολόκληρο το ζητούμενο HTML αρχείο, το οποίο είναι πολύ μεγάλο (γύρω στα 4500 bytes) για να χωρέσει σε ένα μόνο TCP πακέτο. Η απάντηση σπάει σε πολλά κομμάτια που μπαίνουν σε ξεχωριστά TCP segments. Στο Wireshark φαίνονται τα segments σαν ξεχωριστά πακέτα, και η τμηματοποίηση της απάντησης φαίνεται στη στήλη Info με την ένδειξη TCP segment of a reassembled PDU.
31 ΕΡΩΤΗΣΕΙΣ Πόσες HTTP GET requests έστειλε ο browser; Ποιο πακέτο περιλαμβάνει το μήνυμα GET; Ποιο πακέτο περιλαμβάνει τον κώδικα κατάστασης της απάντησης στην HTTP GET request; Ποιος είναι ο κώδικας της κατάστασης; Πόσα TCP segments χρειάστηκαν για να μεταφερθεί ολόκληρο το αρχείο;
2.5 HTTP AUTHENTICATION 32
33 HTTP AUTHENTICATION Ας προσπαθήσουμε να επισκεφτούμε ένα site που προστατεύεται από κωδικό και να παρατηρήσουμε τη σειρά των HTTP μηνυμάτων που ανταλλάσσονται. Το URL http://gaia.cs.umass.edu/wiresharklabs/protected_pages/http-wiresharkfile5.html είναι προστατευμένο με κωδικό. Το user name είναι wireshark-students και ο κωδικός είναι network.
HTTP AUTHENTICATION Ας κάνουμε τα εξής: Βεβαιωνόμαστε ότι είναι καθαρή η cache του browser μας, τον οποίον και ανοίγουμε. Ξεκινάμε την καταγραφή στο Wireshark. Πληκτρολογούμε το ακόλουθο URL: http://gaia.cs.umass.edu/wiresharklabs/protected_pages/http-wireshark-file5.html Δίνουμε το user name και τον κωδικό. Σταματάμε την καταγραφή και πληκτρολογούμε http στο φίλτρο. 34
35 ΕΡΩΤΗΣΕΙΣ AUTHENTICATION Ποια είναι η απάντηση του server (κωδικός κατάστασης και φράση) σε απάντηση στο αρχικό HTTP GET μήνυμα από τον browser; Όταν ο browser στέλνει το HTTP GET μήνυμα για δεύτερη φορά, ποιο καινούργιο πεδίο περιλαμβάνεται στο HTTP GET μήνυμα;
36 HTTP AUTHENTICATION Το user name και ο κωδικός κωδικοποιούνται σε μια σειρά από χαρακτήρες (d2lyzxnoyxjrlxn0dwrlbnrzom5ldhdvcms=) που ακολουθούν την επικεφαλίδα Authorization: στο HTTP GET μήνυμα. Basic Αν και φαίνεται να είναι κρυπτογραφημένα, είναι απλώς κωδικοποιημένα στη μορφή Base64. Δεν είναι κρυπτογραφημένα. Πηγαίνετε στη δ/ση http://www.motobit.com/util/base64- decoder-encoder.asp και δώστε την παραπάνω σειρά από χαρακτήρες (μέχρι το Z για το user name). Θα δείτε το πραγματικό user name και τον κωδικό.
Σε αυτή την ενότητα μελετήσαμε: Τη λειτουργία ορισμένων βασικών πρωτοκόλλων του επιπέδου εφαρμογής με τη χρήση του Wireshark. Ιδιαίτερα μας απασχόλησαν: DHCP HTTP GET Conditional GET Authentication 37
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πειραιά Δίκτυα Ηλεκτρονικών Υπολογιστών Ενότητα #1: Εισαγωγή στα δίκτυα Η/Υ, τα πρωτόκολλα και τη μεταφορά πληροφορίας Δρ. Χαράλαμπος Ζ. Πατρικάκης Μηχανικών Τ.Ε