Το Wireshark είναι ένας αναλυτής πρωτοκόλλου δικτύου σε γραφικό περιβάλλον, που μας επιτρέπει να κάνουμε μια βαθύτατη ανάλυση στα μεμονωμένα πακέτα που υπάρχουν στο δίκτυο.
Το Wireshark μπορεί να χρησιμοποιηθεί για τη λήψη πακέτων Ethernet, wi-fi, Bluetooth και πολλών άλλων ειδών traffic.
Μπορεί να αποκωδικοποιήσει διαφορετικά πρωτόκολλα που βλέπει, οπότε θα μπορούσε για παράδειγμα, να κάνετε υποκλοπή τον ήχο των τηλεφωνικών κλήσεων Voice over IP (VoIP).
Ας ρίξουμε μια ματιά στα βασικά στοιχεία της χρήσης του Wireshark για τη σύλληψη και ανάλυση της κίνησης του δικτύου.
Έναρξη του Wireshark: Πρέπει να εκτελέσετε το Wireshark σε έναν λογαριασμό με επαρκή προνόμια για λήψη πακέτων ή πρέπει να δώσετε στον λογαριασμό στον οποίο χρησιμοποιείτε το Wireshark αρκετά προνόμια για να μπορέσετε να κάνετε καταγραφή της κίνησης του δικτύου. Ο τρόπος που γίνεται διαφέρει από το ένα λειτουργικό σύστημα σε ένα άλλο.
Στα windows, το πρόγραμμα οδήγησης WinPcap (που ονομάζεται NPF) φορτώνεται από το Wireshark όταν αρχίζει να καταγράφει live δεδομένα. Αυτό απαιτεί δικαιώματα διαχειριστή. Μόλις φορτωθεί το πρόγραμμα οδήγησης, κάθε τοπικός χρήστης μπορεί να καταγράψει την κίνηση.
Ακολουθούν κάποιες από τις δυνατότητες του Wireshark:
- Υποστηρίζει περισσότερα από 1.000 πρωτόκολλα
- Δυνατότητα να κάνετε live λήψη και ανάλυση εκτός σύνδεσης
- Έχει τα πιο ισχυρά display filters στο industry
- Τα καταγεγραμμένα δεδομένα του δικτύου μπορούν να εμφανιστούν μέσω GUI ή μέσω ενός εργαλείου γραμμής εντολών, το TShark
- Δυνατότητα ανάγνωσης / εγγραφής πολλών διαφορετικών μορφών αρχείων καταγραφής, όπως tcpdump (libpcap), Network General Sniffer, Cisco Secure IDS iplog, Microsoft Network Monitor και άλλα
- Μπορείτε να διαβάσετε live δεδομένα από IEEE 802.11, Bluetooth και Ethernet
- Η εξαγωγή μπορεί να γίνει σε έγγραφα XML, Postscript, CSV ή απλό κείμενο
Στην περίπτωσή μας, είμαστε συνδεδεμένοι με LAN (Ethernet), οπότε θα το δούμε σε μια σύνδεση Ethernet.
Σε περίπτωση Linux, μπορείτε να ξεκινήσετε το Wireshark πληκτρολογώντας την εντολή “sudo wireshark” στο τερματικό σας και να επιλέξετε τη διεπαφή σας για να ξεκινήσετε τη διαδικασία της λήψης των δεδομένων.
Εδώ, το Wireshark βλέπει όλη την κίνηση του δικτύου και κάνει λήψη των πακέτων. Επομένως, για να κάνετε λήψη δεδομένων POST, πρέπει να χρησιμοποιήσετε φίλτρο μέσα στη γραμμή ενότητας φίλτρου του Wireshark. Για να σταματήσετε τη λήψη, μπορείτε να κάνετε κλικ στο τέταρτο εικονίδιο στην κορυφή με τίτλο “Stop running the live capture” ή μπορείτε να μεταβείτε στην επιλογή “Capture | Stop“.
Ας ανοίξουμε οποιαδήποτε σελίδα σύνδεσης και να στείλουμε ένα αίτημα POST σε κάποιο διακομιστή. Ο τεράστιος όγκος της κίνησης του δικτύου που καταγράφεται από το Wireshark, μπορεί να είναι λίγο χαοτικός επειδή, εκτός από την κυκλοφορία HTTP, καταγράφεται κάθε άλλο πακέτο από ή προς το σύστημα.
Για να βρούμε συγκεκριμένα πακέτα που μας ενδιαφέρουν, μπορούμε να χρησιμοποιήσουμε τα φίλτρα του Wireshark. Το πεδίο Φίλτρα βρίσκεται στην επάνω αριστερή γωνία του Wireshark GUI. Ως ένα πολύ απλό πρώτο παράδειγμα φιλτραρίσματος Wireshark, ας αναζητήσουμε όλη την κίνηση που χρησιμοποιεί το πρωτόκολλο HTTP.
Θα πρέπει να δείτε τα πακέτα στο Wireshark από το σύστημα με διεύθυνση IP 10.228.xxx.xxx έως 10.228.xxx.xxx και αντίστροφα, με το πεδίο Πρωτόκολλο να επισημαίνεται ως HTTP.
Filter: http.request.method == “POST”
ή
Filter: http contains POST
Τώρα μπορείτε να αναλύσετε αυτά τα POST δεδομένα, κάνοντας δεξί και επιλέγοντας την επιλογή Follow -> TCP Stream
Το Wireshark φιλτράρει τα καταγεγραμμένα πακέτα για να εμφανίσει μόνο αυτά που χρησιμοποιούν το πρωτόκολλο HTTP. Μπορούμε να δούμε ολόκληρη τη κίνηση των HTTP πακέτων, συμπεριλαμβανομένων των στοιχείων σύνδεσης, σε απλό κείμενο.
Ακόμα και μετά το φιλτράρισμα της κυκλοφορίας, ενδέχεται να υπάρχουν πολλές συνδέσεις HTTP που καταγράφηκαν κατά το ίδιο χρονικό διάστημα, οπότε θα ήταν δύσκολο να καταλάβουμε τι συμβαίνει. Αλλά μόλις βρούμε ένα πακέτο που μας ενδιαφέρει, όπως η αρχή μιας σύνδεσης HTTP, μπορούμε να ανακαλύψουμε ψάχνοντας βαθύτερα κάνοντας δεξί κλικ στο πακέτο και επιλέγοντας “Follow TCP Stream” όπως φαίνεται παρακάτω:
Μπορούμε να χρησιμοποιήσουμε πιο προηγμένα φίλτρα για να βελτιώσουμε περαιτέρω τα πακέτα που επιστρέφονται.
Για παράδειγμα, μπορούμε να χρησιμοποιήσουμε το φίλτρο ip.dst == 10.228.xxx.xxx για να επιστρέψουμε μόνο πακέτα με τη διεύθυνση IP του προορισμού να είναι 10.228.xxx.xxx.
Μπορούμε ακόμη και να συνδέσουμε φίλτρα μαζί, όπως χρησιμοποιώντας το φίλτρο ip.dst == 10.228.xxx.xxx και http για να βρούμε μόνο κίνηση HTTP που προορίζεται για την ip 10.228.xxx.xxx.