Εισαγωγή στο TCP
Το πρωτόκολλο ελέγχου μετάδοσης (Transmission Control Protocol = TCP) είναι ένα από τα πιο συχνά χρησιμοποιούμενα πρωτόκολλα στο διαδίκτυο. Σε αντίθεση με το User Datagram Protocol (UDP), το TCP δεν είναι ένα πρωτόκολλο “fire and forget”. Το TCP παρακολουθεί τα πακέτα που αποστέλλονται, επιβεβαιώνει ότι έχουν ληφθεί και αναμεταδίδει αντίγραφα εάν είναι απαραίτητο.
Ως αποτέλεσμα, το TCP είναι ιδανικό για εφαρμογές που χρειάζονται υψηλό επίπεδο αξιοπιστίας στα κανάλια επικοινωνίας τους. Μια κοινή χρήση του TCP είναι η μεταφορά πακέτων hypertext transfer protocol (HTTP) που υποβάλλουν αιτήματα και εξυπηρετούν ιστοσελίδες.
TCP στο Wireshark
Το TCP διαφέρει από άλλα πρωτόκολλα δεδομένου ότι προορίζεται να παρέχει αξιόπιστη μεταφορά δεδομένων. Ως αποτέλεσμα, μια επικοινωνία TCP είναι πολύ τυποποιημένη, χρησιμοποιώντας διάφορους τύπους πακέτων που υποδηλώνονται με διαφορετικές σημαίες TCP. Ένα κανάλι επικοινωνίας TCP δημιουργείται χρησιμοποιώντας τη χειραψία TCP και παρέχει ορισμένες εγγυήσεις στον αποστολέα και στον παραλήπτη.
Table of Contents
Σημαίες (Flags) TCP
Ένας από τους κύριους διαφοροποιητές μεταξύ πακέτου TCP και UDP είναι η χρήση flags στο TCP. Όπως οι τύποι και οι κωδικοί ICMP, τα flags TCP περιγράφουν τον σκοπό του πακέτου. Τα flags TCP είναι:
- SYNchronization: Αίτηση σύνδεσης
- ACKnowledgement: Αναγνωρίζει την παραλαβή ενός πακέτου
- FINish: Κλείνει μια σύνδεση
- ReSeT: Τερματίζει αμέσως μια σύνδεση
- PuSH: Ενημερώνει τον παραλήπτη να επεξεργαστεί αμέσως ένα πακέτο (αντί για buffering)
- URGent: Επεξεργασία πακέτου πριν από όλα τα άλλα πακέτα
Διαφορετικοί τύποι πακέτων χρησιμοποιούνται σε διαφορετικούς χρόνους κατά τη διάρκεια της περιόδου σύνδεσης TCP. Ορισμένα προορίζονται να χρησιμοποιηθούν ένα καθορισμένο χρόνο κατά τη σύνδεση (όπως το SYN και το FIN), άλλα χρησιμοποιούνται σε ολόκληρο (όπως το ACK) και τα υπόλοιπα χρησιμοποιούνται μόνο σε ασυνήθιστα σενάρια (RST, PSH και URG).
Οι συνδέσεις TCP και η χρήση flags είναι πολύ τυπική. Ωστόσο, είναι δυνατή η κατάχρηση σημαιών. Ένας κοινός λόγος κατάχρησης σημαιών είναι η σάρωση, καθώς διαφορετικά λειτουργικά συστήματα έχουν διαφορετικές απαντήσεις σε ορισμένα σφάλματα.
Xειραψία (Handshake) TCP
Στο TCP, τα δεδομένα που προορίζονται για τον τελικό παραλήπτη δεν αποστέλλονται ποτέ στο πρώτο πακέτο. Αντ ‘αυτού, οι χρήστες TCP πρώτα περνούν από το πρωτόκολλο handshake TCP (χειραψίας) για να δημιουργήσουν ένα κανάλι πριν από την αποστολή πραγματικών δεδομένων.
Τα βήματα στο handshake TCP είναι αρκετά απλά. Πρώτον, ο αποστολέας ξεκινά την επικοινωνία στέλνοντας ένα πακέτο SYN, εκφράζοντας το ενδιαφέρον τους για σύνδεση. Ο παραλήπτης αποκρίνεται με ένα πακέτο SYN / ACK που εκφράζει επίσης το ενδιαφέρον του και αναγνωρίζει την παραλαβή του πακέτου SYN του αποστολέα. Τέλος, ο αποστολέας στέλνει ένα πακέτο ACK για να αναγνωρίσει το SYN / ACK του παραλήπτη.
Μετά την χειραψία ξεκινά το κανάλι TCP μεταξύ του αποστολέα και του παραλήπτη. Σε αυτό το σημείο, ο πρωταρχικός σκοπός των πακέτων TCP αλλάζει από την επίτευξη στόχων TCP (δηλ. Τη δημιουργία σύνδεσης) σε μεταφορέα για άλλο πρωτόκολλο. Για παράδειγμα, το επόμενο πακέτο μετά τη χειραψία TCP μπορεί να είναι ένα πακέτο από τον αποστολέα που ζητά μια ιστοσελίδα HTTP.
Εγγυήσεις TCP
Το πρωτόκολλο TCP προορίζεται κυρίως να παρέχει ορισμένες εγγυήσεις στο πρωτόκολλο υψηλότερου επιπέδου που το χρησιμοποιεί. Αυτές οι εγγυήσεις περιλαμβάνουν παραγγελία πακέτων, αξιοπιστία και διόρθωση σφαλμάτων.
Ένα άλλο πλεονέκτημα που έχει το TCP έναντι άλλων πρωτοκόλλων είναι ότι παρέχει ενσωματωμένη υποστήριξη για παραγγελία πακέτων. Ενώ διαφορετικά πακέτα μπορούν να σταλούν σε μια συγκεκριμένη ακολουθία, μπορούν να ταξιδέψουν σε διαφορετικές διαδρομές στο δίκτυο και να φτάσουν στον παραλήπτη εκτός λειτουργίας.
Αξιοπιστία
Σε αντίθεση με το UDP, το TCP δεν είναι ένα πρωτόκολλο “fire and forget”. Όπως φαίνεται στο handshake TCP, κάθε πακέτο που αποστέλλει οδηγεί σε μια επιβεβαίωση από το άλλο μέρος. Η έλλειψη αναγνώρισης θα έχει ως αποτέλεσμα την αναμετάδοση του απορριφθέντος πακέτου, διασφαλίζοντας ότι ο παραλήπτης λαμβάνει ένα αντίγραφο όλων των δεδομένων που διαβιβάζονται από τον αποστολέα.
Η αναγνώριση κάθε πακέτου σε μετάδοση TCP παρέχει υψηλό επίπεδο αξιοπιστίας. Είναι αδύνατο να πέσει ένα πακέτο χωρίς να το παρατηρήσει.
Διόρθωση σφαλμάτων
Τέλος, το TCP έχει ενσωματωμένη λειτουργικότητα διόρθωσης σφαλμάτων. Ενώ διασχίζουμε το δίκτυο, είναι πιθανό ένα κομμάτι του πακέτου να μπορεί να αναστραφεί, αλλάζοντας το μήνυμα που περιέχει. Η διόρθωση σφαλμάτων TCP συμβάλλει στον εντοπισμό εάν αυτό έχει συμβεί.
Το TCP εφαρμόζει διόρθωση σφαλμάτων ενσωματώνοντας ένα άθροισμα ελέγχου σε κάθε πακέτο. Ο παραλήπτης μπορεί στη συνέχεια να επαληθεύσει το άθροισμα ελέγχου για να βεβαιωθεί ότι το πακέτο έχει ληφθεί σωστά. Εάν όχι, ο παραλήπτης μπορεί να ζητήσει αναμετάδοση.
Ανάλυση TCP για απόκριση συμβάντων
Ως ένα από τα πιο κοινά πρωτόκολλα στο Διαδίκτυο, το TCP μπορεί να χρησιμοποιηθεί για τη μεταφορά μιας μεγάλης ποικιλίας επισκεψιμότητας. Ωστόσο, ορισμένες επιθέσεις εκτελούνται στο ίδιο το επίπεδο TCP, συμπεριλαμβανομένης της χρήσης του πρωτοκόλλου για σάρωση και ενίσχυση DDoS.
Σάρωση
Μια κοινή κακή χρήση του πρωτοκόλλου TCP είναι για σάρωση. Ο λόγος για αυτό είναι ότι διαφορετικά λειτουργικά συστήματα αποκρίνονται με διαφορετικούς τρόπους όταν κάποιος παραβιάζει τους «κανόνες» μιας σύνδεσης TCP. Παρατηρώντας τον τρόπο με τον οποίο ένα σύστημα ανταποκρίνεται σε κάτι, είναι δυνατό να προσδιοριστεί εάν ένα συγκεκριμένο μηχάνημα είναι ενεργοποιημένο ή όχι. ή εάν μια θύρα είναι ανοιχτή ή κλειστή.
Σε αυτόν τον τύπο σάρωσης, ο σαρωτής στέλνει πακέτα SYN στον στόχο. Ένα SYN / ACK σε απόκριση σημαίνει ότι η θύρα είναι ανοιχτή, ενώ μια κλειστή θύρα θα είχε ως αποτέλεσμα μια απόκριση RST. Για ανοιχτές θύρες, ο σαρωτής θα στείλει στη συνέχεια ένα πακέτο RST, κλείνοντας τη σύνδεση. Εάν ένας οργανισμός παρακολουθεί και καταγράφει μόνο συνδέσεις που ολοκληρώνουν τη χειραψία TCP, αυτός ο τύπος σάρωσης ενδέχεται να μην εντοπιστεί.
Αντανάκλαση TCP και ενίσχυση DDoS
Όπως υποδηλώνει το όνομά τους, η ενίσχυση DDoS έχει σχεδιαστεί για να ενισχύσει τον αντίκτυπο μιας επίθεσης Distributed Denial of Service (DDoS). Αυτές οι επιθέσεις έχουν σχεδιαστεί έτσι ώστε ο εισβολέας να μπορεί να στείλει ένα μικρό ποσό κίνησης σε έναν «ενισχυτή» και να έχει αποστείλει πολύ μεγαλύτερο όγκο κίνησης στον επιδιωκόμενο στόχο.
Οι περισσότερες επιθέσεις DDoS χρησιμοποιούν UDP, αλλά οι επιτιθέμενοι εκμεταλλεύτηκαν πρόσφατα την αντανάκλαση TCP για την ενίσχυση του DDoS. Σε μια επίθεση αντανάκλασης TCP, ο εισβολέας στέλνει ένα πακέτο TCP SYN σε έναν ενισχυτή, ενώ πλαστογραφεί τη διεύθυνση IP του από αυτόν του στόχου. Ο ενισχυτής, πιστεύοντας ότι ο αποστολέας προσπαθεί να ξεκινήσει μια σύνδεση, θα στείλει ένα πακέτο SYN / ACK στον στόχο.
Εάν ο στόχος δεν ανταποκρίνεται όπως αναμενόταν, ο ενισχυτής θα συνεχίσει να αναμεταδίδει πακέτα SYN / ACK, επιτυγχάνοντας ρυθμούς έως και 5.000 πακέτα ανά λεπτό. Ως στόχος, η ενίσχυση DDoS μίας αντανάκλασης TCP μπορεί να ανιχνευθεί ως πακέτα SYN / ACK χωρίς αντίστοιχο SYN. Ως ενισχυτής, η επίθεση μπορεί να ανιχνευθεί από συστήματα εντός του δικτύου που στέλνουν μεγάλους όγκους πακέτων SYN / ACK και δεν λαμβάνουν καμία απόκριση.
Συμπέρασμα: Διερεύνηση της κυκλοφορίας TCP στο Wireshark
Το TCP είναι ένα πολύ δομημένο πρωτόκολλο, το οποίο του επιτρέπει να παρέχει ορισμένες εγγυήσεις στις εφαρμογές που το χρησιμοποιούν. Κατά την εξέταση της κυκλοφορίας TCP στο Wireshark, οποιαδήποτε απόκλιση από την κανονική δομή μιας συνομιλίας TCP μπορεί να αξίζει μια πιο προσεκτική ματιά.
Sources
- SampleCaptures, Wireshark
- TCP flags, GeeksforGeeks
- New DDoS Attacks Leverage TCP Amplification, Dark Reading
- Understanding Xmas Scans, Plixer