Η εντολή tcpdump ονομάζεται επίσης sniffer πακέτων.

Η εντολή tcpdump θα λειτουργήσει στις περισσότερες γεύσεις λειτουργικό σύστημα UNIX. Το tcpdump σάς επιτρέπει να αποθηκεύετε πακέτα που έχουν συλληφθεί, έτσι ώστε να μπορούμε να χρησιμοποιήσουμε το καταγεγραμμένο πακέτο για περαιτέρω ανάλυση. Το αποθηκευμένο αρχείο μπορεί να προβληθεί με την ίδια εντολή tcpdump. Μπορούμε επίσης να χρησιμοποιήσουμε λογισμικόΆνοιξε πηγαίος κώδικαςόπως το Wireshark για την ανάγνωση αρχείων tcpdump PCAP.

Σε αυτό το μάθημα, θα δούμε μερικά πρακτικά παραδείγματα για τον τρόπο χρήσης της εντολής tcpdump.

1. Καταγράψτε πακέτα από μια συγκεκριμένη διεπαφή ethernet χρησιμοποιώντας tcpdump -i

Κατά την εκτέλεση της εντολής tcpdump χωρίς καμία επιλογή, θα συλλάβει όλα τα πακέτα που περνούν από όλες τις διεπαφές. Επιλογή -ΕγώΗ εντολή tcpdump σάς επιτρέπει να φιλτράρετε σε μια συγκεκριμένη διεπαφή Ethernet.

$ tcpdump -i eth1 12:59:41.967250 ARP, Ζητήστε who-has free.msk.ispsystem.net πείτε στο gw.msk.ispsystem.net, μήκος 46 12:59:41.967257 ARP, Ζητήστε who-has rezerv.ruff.sco πείτε το gw.msk.ispsystem.net, μήκος 46 12:59:41..44141 > wdc-ns1.ispsystem.net.domain: 14799+ PTR; 184.48.146.82.in-addr.arpa. (44) ...

Σε αυτό το παράδειγμα, το tcpdump καταγράφει όλα τα πακέτα ροής στη διεπαφή eth1 και τα εμφανίζει σε τυπική έξοδο.

Σημείωση:

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

2. Καταγράψτε μόνο N αριθμό πακέτων με tcpdump -c

Η εκτέλεση της εντολής tcpdump δίνει πακέτα μέχρι να ακυρώσετε την εντολή tcpdump. Χρησιμοποιώντας την επιλογή -ντομπορείτε να καθορίσετε τον αριθμό των πακέτων που θα συλληφθούν.

$ tcpdump -c 2 -i eth0 ακρόαση σε eth0, σύνδεση τύπου EN10MB (Ethernet), μέγεθος λήψης 65535 byte 13:01:35.165898 ARP, Αίτημα who-has 213.159.211.80 πείτε στο gw.msk.1ps :01:35..35123 > wdc-ns1.ispsystem.net.domain: 7254+ PTR; 80.211.159.213.in-addr.arpa. (45) 2 πακέτα καταγράφηκαν 7 πακέτα παραλήφθηκαν από φίλτρο 0 πακέτα απορρίφθηκαν από τον πυρήνα

εντολή tcpdumpκατέλαβε μόνο 2 πακέτα από τη διεπαφή eth0.

Σημείωση:

Mergecap και TShark: Το Mergecap είναι ένα εργαλείο συγχώνευσης ένδειξης πακέτων που θα συγχωνεύσει πολλά πακέτα σε ένα ενιαίο αρχείο ένδειξης σφαλμάτων. Το Tshark είναι ένα ισχυρό εργαλείο σύλληψης πακέτων δικτύου που μπορεί να χρησιμοποιηθεί για την ανάλυση της κυκλοφορίας του δικτύου. Συνοδεύεται από αναλυτή διανομής δικτύου Wireshark.

3. Εμφανίστε τα πακέτα που έχουν καταγραφεί σε ASCII χρησιμοποιώντας tcpdump -a

Η ακόλουθη σύνταξη tcpdump εκτυπώνει ένα πακέτο σε ASCII.

$ tcpdump -A -i eth0 13:03:06.516709 IP 213.132.93.178..vlsi-lm: Flags [.], ack 3120779210, win 254, μήκος 0 E..( [email προστατευμένο]]......β...%.=...O.P....... 13:03:06..35313 > wdc-ns1.ispsystem.net.domain: 13562+ PTR? 178.93.132.213.in-addr.arpa. (45) [email προστατευμένο]@.......x.....5.5, seq 3666073194:3666074622, ack 3281095139, win 2000, options , μήκος 1428

Αυτό είναι ένα πακέτο TCP, η μορφή των πληροφοριών για το οποίο παρουσιάζεται στο tcpdump είναι η εξής (τα πεδία διαχωρίζονται με κόμμα):

  • σημαίες - ορίστε σημαίες. Υποδηλώνεται με τα σύμβολα S (SYN), F (FIN), P (PUSH) και R (RST), μια τελεία σημαίνει ότι δεν έχουν οριστεί σημαίες.
  • data-seqno - περιγράφει τα δεδομένα που περιέχονται στο πακέτο με την ακόλουθη μορφή: first:last, όπου πρώτο και τελευταίο είναι ο αριθμός σειράς του πρώτου και του τελευταίου byte των μεταδιδόμενων δεδομένων, nbytes.
  • ack - επόμενος αριθμός σειράς (ISN + 1).
  • παράθυρο - μέγεθος παραθύρου?
  • επιλογές - επιπλέον πληροφορίες μπορούν να καθοριστούν εδώ, για παράδειγμα ( μέγιστο μέγεθοςτμήμα);
  • μήκος - το μήκος του πακέτου.

Όλα αυτά τα δεδομένα μπορεί να είναι πολύ χρήσιμα κατά τη μελέτη ή τον εντοπισμό σφαλμάτων πρωτοκόλλων και εφαρμογών δικτύου, αλλά δεν μας λένε τίποτα για το περιεχόμενό τους. Για να δείτε τα περιεχόμενα του πακέτου σε δεκαεξαδική μορφή, χρησιμοποιήστε τη σημαία -X:

# tcpdump -i wlan0 -c 10 -n -X κεντρικός υπολογιστής 192.168.0.1 και θύρα 80

Αυτή η λειτουργία είναι πολύ χρήσιμη για την ανάλυση πρωτοκόλλων στα οποία τα δεδομένα μεταδίδονται σε καθαρό κείμενο, όπως το HTTP. Για δυαδικά πρωτόκολλα και πρωτόκολλα με κρυπτογράφηση, φυσικά, θα είναι άχρηστο.
Μπορείτε επίσης να χρησιμοποιήσετε τη σημαία -v για να λάβετε περισσότερες πληροφορίες σχετικά με ένα πακέτο. Μετά θα εμφανιστεί η IP σε αγκύλες λεπτομερείς πληροφορίεςσχετικά με το πακέτο IP:

(tos 0x0, ttl 64, id 8339, offset 0, flags , proto UDP(17), μήκος 51)

Γενικά, όλα εδώ είναι αρκετά πεζά. Πρώτα έρχεται ο τύπος υπηρεσίας (TOS), ακολουθούμενος από τον χρόνο ζωής του πακέτου (TTL), το αναγνωριστικό πακέτου, μετατόπιση από την αρχή του πρώτου πακέτου στην αλυσίδα, σημαίες, πρωτόκολλο επιπέδου μεταφοράς που χρησιμοποιείται (TCP, UDP, ICMP), και μήκος.


Προηγμένες δυνατότητες

Έχουμε ήδη καλύψει τα περισσότερα από τα πιο σημαντικά χαρακτηριστικά του tcpdump, αλλά η λειτουργικότητά του είναι πολύ ευρύτερη. Για παράδειγμα, χρησιμοποιήσαμε τις δηλώσεις κεντρικού υπολογιστή και θύρας για να καθορίσουμε τη διεύθυνση και τη θύρα που χρειαζόμαστε για να φιλτράρουμε την έξοδο, αλλά τι γίνεται αν θέλουμε να βλέπουμε μόνο πακέτα που πηγαίνουν στην καθορισμένη διεύθυνση, αλλά όχι εξερχόμενα από αυτήν; Μπορείτε να χρησιμοποιήσετε τον τελεστή src για αυτό:

# tcpdump -i wlan0 -c 10 -n src 192.168.0.1

Υπάρχει επίσης η αντίστροφη έκδοση dst, σχεδιασμένη για να υποδεικνύει τη διεύθυνση προορισμού. Όπως φαίνεται παραπάνω, όλοι οι χειριστές μπορούν να συνδυαστούν χρησιμοποιώντας τον τελεστή και (παρακολούθηση της κυκλοφορίας του δικτύου, εξαιρουμένων των περιόδων σύνδεσης SSH και των αιτημάτων DNS):

# tcpdump -i wlan0 θύρα όχι 22 και θύρα όχι 53

Μπορείτε επίσης να χρησιμοποιήσετε ή (ή) και εκτός (όχι). Επίσης, το tcpdump κατανοεί τις περιοχές θυρών:

# tcpdump -i wlan0 -c 10 -n portrange 21-23

Δυνατότητα φιλτραρίσματος πακέτων με βάση το μέγεθός τους:

# tcpdump -i wlan0 -c 10 -n > 32 και<= 128

Και κατανοεί τις μάσκες υποδικτύου:

# tcpdump -i wlan0 c 10 -n src net 192.168.0.0/16 και dst net 10.0.0.0/8 ή 172.16.0.0/16

Ένα από τα πιο ενδιαφέροντα χαρακτηριστικά του tcpdump είναι η δυνατότητα φιλτραρίσματος πακέτων με βάση το περιεχόμενο συγκεκριμένων bit ή byte στις κεφαλίδες του πρωτοκόλλου. Για αυτό χρησιμοποιείται η ακόλουθη μορφή: proto, όπου το proto είναι το πρωτόκολλο, expr είναι η μετατόπιση σε byte από την αρχή της κεφαλίδας του πακέτου και το μέγεθος είναι ένα προαιρετικό πεδίο που υποδεικνύει το μήκος των εν λόγω δεδομένων (1 byte από προεπιλογή) . Για παράδειγμα, για να φιλτράρετε μόνο πακέτα με το σετ σημαία SYN (έναρξη χειραψίας TCP), θα χρησιμοποιήσετε την ακόλουθη καταχώρηση:

# tcpdump "tcp==2"

Πως δουλεύει? Πολύ απλό. Τα 13 byte της κεφαλίδας TCP περιέχουν ακριβώς οκτώ σημαίες, ένα bit το καθένα. Το δεύτερο bit είναι δεσμευμένο για τη σημαία SYN. Η παραπάνω καταχώρηση απλώς ελέγχει για να δει αν αυτό το bit έχει οριστεί. Παρεμπιπτόντως, μια πιο ευανάγνωστη μορφή αυτής της καταχώρησης θα μοιάζει με αυτό:

# tcpdump "tcp & tcp-syn != 0"

Πρακτική χρήση

Το βοηθητικό πρόγραμμα tcpdump χρησιμοποιείται συνήθως για δύο σκοπούς: για τον εντοπισμό σφαλμάτων στο δίκτυο, τις εφαρμογές δικτύου και τα νέα πρωτόκολλα και για να σας διδάξει τα βασικά του TCP/IP. Θα πάμε αντίστροφα και θα χρησιμοποιήσουμε τη δύναμη του tcpdump για να ανιχνεύσουμε σαρώσεις κεντρικού υπολογιστή και επιθέσεις δικτύου.

Στο σχ. Το σχήμα 1 δείχνει πώς φαίνεται μια κλασική σάρωση θύρας TCP που γίνεται από το Nmap στα αρχεία καταγραφής tcpdump. Μπορείτε να δείτε καθαρά πώς το Nmap από τη διεύθυνση 192.168.0.100 προσπαθεί να δημιουργήσει μια σύνδεση TCP με διαφορετικές θύρες στέλνοντας ένα πακέτο SYN (S στο πεδίο σημαίες). Αρχικά, γίνεται ανίχνευση της θύρας 8888, έρχεται σε απόκριση ένα πακέτο RST, που σημαίνει ότι καμία υπηρεσία δεν ακούει στη θύρα και, στη συνέχεια, η θύρα 587 εξετάζεται με το ίδιο αποτέλεσμα. Τέλος, το Nmap στέλνει ένα πακέτο SYN στη θύρα 22 (SSH) και λαμβάνει μια απάντηση με τη μορφή ενός πακέτου SYN-ACK:

192.168.0.100.43337 > 192.168.0.111.22: Flags[S], seq 2610024277, ... 43337 > 192.168.0.111.22: Flags [.], ack 1, ...

Η θύρα είναι ανοιχτή και τώρα το Nmap μπορεί να κλείσει με επιτυχία τη σύνδεση στέλνοντας ένα πακέτο RST και να προχωρήσει στις επόμενες θύρες. Ωστόσο, κάνει κάτι πιο έξυπνο: στέλνει μια επιβεβαίωση παραλαβής του πακέτου ACK και αμέσως μεταβαίνει στις επόμενες θύρες. Αυτή η συμπεριφορά σάς επιτρέπει να παρακάμψετε ορισμένα συστήματα ανίχνευσης εισβολής, αλλά δεν μπορείτε εύκολα να ξεγελάσετε ένα άτομο οπλισμένο με έναν ανιχνευτή.

Προσέξτε επίσης τον αριθμό των θυρών που πρέπει να ταξινομηθούν, δεν δημιουργούνται τυχαία, αλλά επιλέγονται λαμβάνοντας υπόψη τη μεγαλύτερη επικράτηση. Αυτό σημαίνει ότι εκτελείται μια γρήγορη σάρωση, ή πιο συγκεκριμένα, το Nmap πιθανότατα εκτελείται χωρίς καθόλου σημαίες.



Τώρα ας δούμε μια άλλη μέθοδο για τον εντοπισμό ανοιχτών θυρών - τη σάρωση SYN (nmap -sS). Αυτός ο τύπος σάρωσης ονομάζεται συνήθως κρυφός, επειδή κατά τη διάρκεια αυτής δεν δημιουργείται ποτέ πλήρης σύνδεση TCP, πράγμα που σημαίνει ότι οι πληροφορίες σχετικά με το γεγονός της σύνδεσης δεν περιλαμβάνονται στα αρχεία καταγραφής. Η έξοδος tcpdump για αυτό το είδος σάρωσης φαίνεται στο Σχήμα 1. 2. Είναι πολύ παρόμοιο με το αρχείο καταγραφής μιας κανονικής σάρωσης TCP, ωστόσο, η αντίδραση του σαρωτή σε ανοιχτές θύρεςτώρα άλλο ένα:

192.168.0.100.48585 > 192.168.0.111.22: Flags[S], seq 1679394613, ... 48585 > 192.168.0.111.22: Flags[R], seq ...46

Μπορεί να φανεί ότι μετά τη λήψη του πακέτου έγκρισης SYN-ACK, ο σαρωτής δεν ολοκληρώνει τη σύνδεση, αλλά την τερματίζει αμέσως, αποφεύγοντας να εισέλθει στα αρχεία καταγραφής. Στο σχ. 3 μπορείτε να δείτε το αποτέλεσμα της σάρωσης UDP. Όλα είναι πολύ απλά εδώ, το Nmap απαριθμεί θύρες με πιθανές υπηρεσίες UDP, στέλνοντας ένα πακέτο μηδενικού μήκους σε καθεμία από αυτές. Εάν η θύρα είναι κλειστή, το λειτουργικό σύστημα στέλνει πίσω ένα μήνυμα ICMP που δεν είναι προσβάσιμο:

16:41:48.798310 IP 192.168.0.100.61020 > 192.168.0.111.18869: UDP, μήκος 0

Σε αντίθετη περίπτωση, το λιμάνι θεωρείται ανοιχτό. Μια άλλη μέθοδος σάρωσης είναι η μηδενική σάρωση με αποστολή πακέτων χωρίς καθορισμένα σημαίες (nmap -sN). Η αντίδραση σε τέτοια πακέτα μπορεί να διαφέρει ανάλογα με το λειτουργικό σύστημα, αλλά όπως μπορείτε να δείτε από την ακόλουθη λίστα, το Linux απαντά σε αυτά στέλνοντας πακέτα RST:

192.168.0.100.39132 > 192.168.0.111.256: Σημαίες , νίκη 3072, μήκος 0 192.168.0.111.256 > 192.168.0.100.39132: Σημαίες

Ένας εισβολέας μπορεί επίσης να χρησιμοποιήσει τη σάρωση Χριστουγέννων, στην οποία τα πακέτα έχουν τις σημαίες FIN, URG και PUSH (το πακέτο φαίνεται να λάμπει με σημαίες σαν χριστουγεννιάτικο δέντρο):

192.168.0.100.35331 > 192.168.0.111.5544: Flags , seq 3998959601, win 4096, urg 0, length 0

Όπως μπορείτε να δείτε, η αντίδραση σε τέτοιες συσκευασίες είναι πανομοιότυπη. Μια σάρωση ACK (-sA) θα εμφανιστεί στα αρχεία καταγραφής tcpdump καθώς στέλνει πολλά πακέτα με το σύνολο σημαιών ACK και απαντά σε αυτά στέλνοντας πακέτα RST. Ωστόσο, εάν ένα τείχος προστασίας είναι εγκατεστημένο στο σύστημα, δεν θα υπάρχουν μηνύματα απόκρισης και το Nmap θα μπορεί να καταλάβει εάν η θύρα φιλτράρεται.

Με το tcpdump, μπορείτε επίσης να εντοπίσετε και διαφορετικά είδηπλημμύρα. Για παράδειγμα, μια κλασική πλημμύρα ICMP στα αρχεία καταγραφής θα μοιάζει με αυτό:

16:43:06.008305 IP 192.168.0.100 > 192.168.0.111: ICMP type-#68, μήκος 1032 192.168.0.100 > 192.168.0.111: ICMP type-#68, μήκος 1032 192.168.0.100 > 192.168.0.111: ICMP type.

Εδώ έχει ιδιαίτερη σημασία το πεδίο που περιέχει την ώρα παραλαβής του πακέτου. Καμία κανονική εφαρμογή δεν θα στείλει πολλά μηνύματα ICMP σε χρονικό διάστημα ίσο με ένα χιλιοστό του δευτερολέπτου. Με τον ίδιο ακριβώς τρόπο ορίζονται και άλλοι τύποι πλημμυρών (π.χ. ΣΥΝ).

Αλληλεπίδραση με άλλα προγράμματα

Ένα από τα πιο σημαντικά πλεονεκτήματα του tcpdump είναι ότι η μορφή των αναφορών του κατά τη διάρκεια της ύπαρξης του προγράμματος έχει γίνει στην πραγματικότητα το πρότυπο για όλους τους sniffers και σήμερα γίνεται κατανοητή από όλα τα λίγο πολύ σοβαρά εργαλεία ανάλυσης κυκλοφορίας. Για παράδειγμα, το tcpdump μπορεί να χρησιμοποιηθεί για να δημιουργήσει ένα dump σε ένα απομακρυσμένο μηχάνημα, στη συνέχεια να το στείλει στον τοπικό υπολογιστή και να το αναλύσει με το wireshark:

$ ssh [email προστατευμένο] tcpdump -w - "port !22" | wireshark -k -i -

Εδώ χρησιμοποιήσαμε την επιλογή -w - για να γράψουμε το dump στο stdout και το ανακατευθυνθήκαμε στο wireshark που εκτελείται στον τοπικό υπολογιστή. Με τον ίδιο τρόπο, μπορείτε να αναλύσετε την κυκλοφορία χρησιμοποιώντας το snort:

$ ssh [email προστατευμένο]"tcpdump -nn -i eth1 -w -" | snort -c /etc/snort/snort.conf -r -

Ανακατευθύνοντας την έξοδο του προγράμματος στην είσοδο του grep, μπορεί κανείς να βρει διάφορα προβλήματαστη λειτουργία δικτύου, για παράδειγμα, για τον εντοπισμό πακέτων με εσφαλμένο άθροισμα ελέγχου, πληροφορίες για τα οποία μπορούν να εμφανιστούν χρησιμοποιώντας τη σημαία -vv:

# tcpdump -nnvv -r dump.cap tcp | grep -v "tcp sum ok" | wc-l

Πράγματα διαχειριστή

Η δυνατότητα φιλτραρίσματος πακέτων με βάση τα δεδομένα κεφαλίδας, την οποία συζητήσαμε στην αρχή της πρώτης ενότητας, είναι πολύ χρήσιμη για τον εντοπισμό σφαλμάτων διαφόρων πρωτοκόλλων και την εύρεση προβλημάτων δικτύου. Για παράδειγμα, μπορούμε να το χρησιμοποιήσουμε για να συλλάβουμε πακέτα δικτύου που μεταδίδονται μέσω του πρωτοκόλλου Discovery της Cisco, μέσω του οποίου οι δρομολογητές Cisco ανταλλάσσουν πληροφορίες σχετικά με την τοπολογία και την κατάσταση του δικτύου:

# tcpdump -nn -v -i eth0 -s 1500 -c 1 "αιθέρας == 0?2000"

Με τον ίδιο τρόπο, μπορείτε να συλλάβετε όλα τα πακέτα που μεταδίδονται Πρωτόκολλο DHCP(ΑΝΑΚΑΛΥΨΗ, ΑΙΤΗΣΗ, ΕΝΗΜΕΡΩΣΗ) για τον εντοπισμό προβλημάτων σύνδεσης πελάτη:

# tcpdump -i eth0 -vvv -s 1500 "((θύρα 67 ή θύρα 68) και (udp = 0x1))"

Ή συλλάβετε πακέτα που αποστέλλονται ως μέρος του ελέγχου ταυτότητας POP3:

# tcpdump -i eth0 "tcp port pop3 and ip = 85 and ip = 83" -s 1500 -n

grep δικτύου

Το tcpdump sniffer είναι καλό για την ευελιξία και την ποικιλία δυνατοτήτων του, αλλά δεν είναι τόσο εύκολο και βολικό να το χρησιμοποιήσετε για την αναζήτηση συγκεκριμένων δεδομένων μέσα σε μεταδιδόμενα πακέτα. Αυτή η εργασία αντιμετωπίζεται πολύ καλύτερα από το ngrep, το οποίο έχει σχεδιαστεί για να εμφανίζει πακέτα δικτύου που περνάνε που ταιριάζουν με μια δεδομένη μάσκα.

Για παράδειγμα, για να βρείτε τις παραμέτρους που έχουν περάσει μεθόδους GETκαι POST σε μια περίοδο λειτουργίας HTTP, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή:

# ngrep -l -q -d eth0 "^GET |^POST" tcp και θύρα 80

Βρίσκοντας τους χαλαρούς:

# ngrep -i "game*|p0rn|adult" -W byline -d eth0 > slackers.txt

Αναλύουμε την κίνηση SMTP σε όλες τις διεπαφές δικτύου:

# ngrep -i "rcpt σε|αλληλογραφία από" tcp port smtp

επιλογές tcpdump

Πίνακας με τα πιο ενδιαφέροντα και χρήσιμες σημαίες tcpdump.

  • -i [διασύνδεση] - η διεπαφή δικτύου για ακρόαση, ορίστε οποιαδήποτε για όλους.
  • -n Μην επιλύετε διευθύνσεις IP σε ονόματα DNS.
  • -nn Μην μεταφράζετε διευθύνσεις IP και αριθμούς θυρών.
  • -X - εμφάνιση των περιεχομένων του πακέτου σε μορφή κειμένου και δεκαεξαδική.
  • -XX - το ίδιο συν τα περιεχόμενα του πλαισίου Ethernet.
  • -v, -vv, -vvv - αυξήστε τον όγκο των πληροφοριών και των πακέτων που εμφανίζονται (περισσότερα, περισσότερα, τα πάντα).
  • -c [n] Εμφάνιση μόνο των πρώτων n πακέτων.
  • -s [n] - αριθμός byte που εμφανίζεται για κάθε πακέτο (μπορεί να μειωθεί για αναγνωσιμότητα ή να αυξηθεί για περισσότερες πληροφορίες).
  • -S - εμφάνιση απόλυτων αριθμών ακολουθίας TCP.
  • -e - εμφάνιση κεφαλίδων πλαισίου ethernet.
  • -q - εμφάνιση λιγότερων πληροφοριών (για αναγνωσιμότητα).
  • -E - αποκρυπτογραφήστε την κίνηση IPsec χρησιμοποιώντας το καθορισμένο κλειδί.
  • -w - αποθήκευση προγράμματος απόρριψης στο αρχείο, όρισμα - χρησιμοποιείται για τον καθορισμό του stdout.

συμπεράσματα

Στα χέρια ενός έμπειρου χρήστη, το tcpdump μετατρέπεται σε ένα ισχυρό εργαλείο όχι μόνο για εντοπισμό σφαλμάτων, αλλά και για έρευνα ανωμαλιών. Χάρη σε ένα πλούσιο σύνολο χειριστών και σημαιών, μπορείτε να το χρησιμοποιήσετε για να βγείτε από τον αέρα του δικτύου και να εξερευνήσετε αυτό που πραγματικά χρειάζεστε.

tcpdumpδιδασκαλία στα ρωσικά και παραδείγματα.

-ΕΝΑκαθορίζει την έξοδο κάθε πακέτου (χωρίς κεφαλίδες επιπέδου σύνδεσης) σε μορφή ASCII. Αυτή η λειτουργία είναι χρήσιμη για την καταγραφή επισκεψιμότητας HTTP.

-ντο <число пакетов>καθορίζει ότι το πρόγραμμα τερματίζεται μετά τη λήψη του καθορισμένου αριθμού πακέτων.

-ΝΤΟ<размер файла>καθορίζει εάν θα ελέγχεται το μέγεθος του αρχείου καταγραφής πριν γραφτεί σε αυτό κάθε νέο πακέτο. Εάν το μέγεθος του αρχείου υπερβαίνει την τιμή της παραμέτρου file_size, το αρχείο κλείνει
και δημιούργησε νέο αρχείογια να γράψετε πακέτα σε αυτό. Η λήψη αρχείων χρησιμοποιεί το όνομα ορίζεται ανά παράμετρο-w και, ξεκινώντας από το δεύτερο αρχείο, προστίθεται στο όνομα ως
αριθμός αρχείου κατάληξης. Η μεταβλητή file_size καθορίζει το μέγεθος του αρχείου σε εκατομμύρια byte (όχι σε megabyte = 1.048.576 byte).

-ρεκαθορίζει την έξοδο μιας ένδειξης ένδειξης του μεταγλωττισμένου κώδικα αντιστοίχισης πακέτων σε μορφή αναγνώσιμη από τον άνθρωπο και την έξοδο από το πρόγραμμα.

-ηδβγάζει μια ένδειξη του αντίστοιχου κώδικα ως τμήμα ενός προγράμματος C.

-δδΚαταργεί τον κωδικό αντιστοίχισης ως μια συμβολοσειρά δεκαδικών τιμών πριν από μια συμβολοσειρά που περιέχει την τιμή του μετρητή.

-ΡΕπαραθέτει τις διεπαφές δικτύου στο σύστημα από τις οποίες το tcpdump μπορεί να συλλέγει πακέτα. Σε κάθε διεπαφή δικτύου δίνεται ένα όνομα και ένας αριθμός, που μπορεί να ακολουθούνται από
περιγραφή κειμένου της διεπαφής. Το όνομα και ο αριθμός της διεπαφής μπορούν να χρησιμοποιηθούν με τη σημαία -i για να καθορίσετε ότι τα πακέτα θα συλλέγονται από μια ενιαία διεπαφή.

Αυτή η επιλογή μπορεί να είναι πολύ χρήσιμη για συστήματα που δεν παρέχουν πληροφορίες σχετικά με τις διαθέσιμες διεπαφές δικτύου3.

Η σημαία -D δεν υποστηρίζεται εάν μεταγλωττίστηκε το tcpdump παλιά εκδοχή libpcap που δεν υποστηρίζει τη συνάρτηση pcap_findalldevs().

-μιεκτυπώνει την κεφαλίδα του επιπέδου σύνδεσης σε κάθε γραμμή του dump.

-ΜΙκαθορίζει τη χρήση του αλγορίθμου και του μυστικού [email προστατευμένο]για την αποκρυπτογράφηση πακέτων IPsec ESP που κατευθύνονται στο ipaddr και περιέχουν και στην τιμή πεδίου Ευρετηρίου παραμέτρων ασφαλείας
spi. Ο συνδυασμός spi και διεύθυνσης μπορεί να επαναληφθεί χρησιμοποιώντας κόμμα ή νέα γραμμή. Σημειώστε ότι ορίζοντας το μυστικό για πακέτα ESP IPv4
υποστηρίζεται αυτήν τη στιγμή.

Οι αλγόριθμοι μπορεί να είναι des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc ή κανένας. Ο προεπιλεγμένος αλγόριθμος είναι des-cbc. Δυνατότητα αποκρυπτογράφησης
Τα πακέτα παρέχονται μόνο εάν οι επιλογές κρυπτογραφικής υποστήριξης ήταν ενεργοποιημένες κατά τη μεταγλώττιση του tcpdump.

Η μυστική παράμετρος περιέχει το κείμενο ASCII του μυστικού κλειδιού ESP. Εάν το μυστικό ξεκινά με χαρακτήρες 0x, θα διαβαστεί εξαγωνική τιμή. Η επιλογή περιλαμβάνει τη χρήση
Το ESP είναι σύμφωνα με το RFC 2406, όχι το RFC 1827. Αυτή η επιλογή υποστηρίζεται μόνο για εντοπισμό σφαλμάτων και θα πρέπει να χρησιμοποιείται με πραγματικό μυστικά κλειδιάδεν πρέπει να είναι, γιατί εισάγεται σε
γραμμή εντολώντο κλειδί IPsec είναι διαθέσιμο σε άλλους χρήστες του συστήματος4.

Εκτός από τον ρητό καθορισμό επιλογών στη γραμμή εντολών, μπορούν να καθοριστούν σε ένα αρχείο επιλογών που θα διαβάσει το tcpdump όταν λάβει το πρώτο πακέτο ESP.

-φάκαθορίζει την εμφάνιση ξένων διευθύνσεων IPv4 σε αριθμητική μορφή. Η χρήση αυτής της επιλογής εξαλείφει τα προβλήματα που αντιμετωπίζουν οι διακομιστές Sun NIS κατά την προσπάθεια μετάφρασης
μη τοπικές διευθύνσεις. Η ξενικότητα μιας διεύθυνσης IPv4 ελέγχεται χρησιμοποιώντας τη διεύθυνση και τη μάσκα της διεπαφής που έλαβε το πακέτο. Εάν η διεύθυνση και η μάσκα διεπαφής δεν είναι διαθέσιμα
(π.χ. όταν χρησιμοποιείτε μη αριθμημένες διεπαφές ή κατά τη λήψη πακέτων από όλες τις διευθύνσεις στο Linux χρησιμοποιώντας την εικονική οποιαδήποτε διεπαφή), αυτή η επιλογή θα λειτουργήσει
λανθασμένα.

-ΦΑ<файл> καθορίζει τη χρήση των φίλτρων που περιέχονται στο καθορισμένο αρχείο. Σε αυτήν την περίπτωση, τα φίλτρα που καθορίζονται στη γραμμή εντολών αγνοούνται.

-Εγώ<интерфейс> καθορίζει συλλογή πακέτων από την καθορισμένη διεπαφή. Εάν δεν έχει καθοριστεί διεπαφή, το tcpdump πραγματοποιεί αναζήτηση στο σύστημα για μια λίστα διαθέσιμων διεπαφών και επιλέγει την ενεργή συσκευή με το ελάχιστο
αριθμός (εξαιρουμένου του loopback).

ΣΕ Συστήματα Linux, ξεκινώντας από τον πυρήνα 2.2, υποστηρίζεται μια εικονική διεπαφή που ονομάζεται any, η οποία διασφαλίζει τη συλλογή πακέτων από όλες τις ενεργές διεπαφές του συστήματος. Σημειώστε ότι η συλλογή
πακέτα από τη συσκευή πραγματοποιούνται με την κανονική (μη αυθαίρετη) λειτουργία.

Εάν η σημαία -D υποστηρίζεται στο σύστημα, ο αριθμός διεπαφής που εμφανίζεται όταν χρησιμοποιείται αυτή η σημαία μπορεί να δοθεί ως όρισμα.

-μεγάλοκαθορίζει την προσωρινή αποθήκευση των γραμμών stdout. Αυτή η επιλογή είναι χρήσιμη όταν θέλετε να προβάλετε δεδομένα κατά τη συλλογή πακέτων. Για παράδειγμα, εντολές

tcpdump -l | ημερομηνία τεε

tcpdump -l > dat & tail -f dat

παρέχει έναν τρόπο εγγραφής πακέτων σε ένα αρχείο dat και εξόδου στην κονσόλα ταυτόχρονα.

-ΜΕΓΑΛΟκαθορίζει την εμφάνιση μιας λίστας γνωστών τύπων επιπέδου συνδέσεων και έξοδο από το πρόγραμμα.

-Μ<файл> φορτώνει τη μονάδα ορισμού SMI MIB από το καθορισμένο αρχείο. Αυτή η επιλογή μπορεί να χρησιμοποιηθεί επανειλημμένα για τη φόρτωση πολλαπλών μονάδων MIB.

-nαπενεργοποιεί τη μετάφραση διευθύνσεων και αριθμών θυρών σε συμβολικά ονόματα.

καθορίζει τη χρήση μόνο ονομάτων κεντρικού υπολογιστή, όχι FQDN. Για παράδειγμα, αντί για lhotze.bilim-systems.net όταν χρησιμοποιείτε αυτήν την επιλογή, το my σταθμός εργασίαςθα
αναφέρεται ως lhotze.

απενεργοποιεί το εργαλείο βελτιστοποίησης κώδικα για να ελέγχει εάν τα πακέτα ταιριάζουν με τις συνθήκες φιλτραρίσματος. Χρησιμοποιήστε αυτήν την επιλογή εάν το εργαλείο βελτιστοποίησης φαίνεται να παρουσιάζει σφάλματα.

λέει στο πρόγραμμα να μην θέσει τη διεπαφή σε λειτουργία λήψης5. Η επιλογή -p δεν μπορεί να χρησιμοποιηθεί με τον κεντρικό υπολογιστή αιθέρα (τοπικό-hw-addr) ή το φίλτρο εκπομπής αιθέρα.

-qκαθορίζει την έξοδο του ελάχιστου όγκου πληροφοριών.

Η ρύθμιση αυτής της σημαίας προϋποθέτει ότι τα πακέτα ESP/AH χρησιμοποιούν την παλιά προδιαγραφή6 και το tcpdump δεν θα παράγει πεδία αποτροπής επανάληψης.
αναπαραγωγή). Επειδή η προδιαγραφή ESP/AH δεν περιλαμβάνει πεδίο αριθμού έκδοσης, το tcpdump δεν μπορεί να προσδιορίσει την έκδοση πρωτοκόλλου ESP/AH από τις κεφαλίδες των πακέτων.

-r<файл> καθορίζει την ανάγνωση δεδομένων από ένα αρχείο που δημιουργήθηκε προηγουμένως χρησιμοποιώντας την εντολή tcpdump -w ή άλλο πρόγραμμα που υποστηρίζει τη μορφή tcpdump (όπως το Ethereal). Αν μέσα
ο χαρακτήρας - καθορίζεται ως όνομα αρχείου, χρησιμοποιείται η ροή δεδομένων από την τυπική συσκευή εισόδου (stdin).

-ΜΙΚΡΟκαθορίζει την έξοδο του απόλυτου σειριακοί αριθμοί TCP αντί για σχετικό.

-μικρόκαθορίζει τη λήψη bytes από κάθε πακέτο snaplen αντί για τα προεπιλεγμένα 68 bytes7. Η τιμή 68 είναι κατάλληλη για πρωτόκολλα IP, ICMP, TCP και UDP, αλλά μπορεί να οδηγήσει σε απώλεια
πληροφορίες πρωτοκόλλου για ορισμένα πακέτα DNS και NFS. Η απώλεια ορισμένων πακέτων λόγω του μικρού μεγέθους του πλαισίου λήψης (στιγμιότυπο) υποδεικνύεται στην έξοδο από τα πεδία της φόρμας
[|proto]', όπου proto είναι το όνομα του επιπέδου πρωτοκόλλου στο οποίο περικόπηκε ένα μέρος του πακέτου8. Σημειώστε ότι μια αύξηση στο πλαίσιο λήψης θα οδηγήσει σε επιπλέον χρόνο
κόστος επεξεργασίας πακέτων και μείωση του αριθμού των πακέτων προσωρινής αποθήκευσης, που μπορεί να οδηγήσει σε απώλεια ορισμένων πακέτων. Χρήση ελάχιστη τιμή snaplen, που θα επιτρέψει
κάντε χωρίς να χάσετε πληροφορίες σχετικά με το πρωτόκολλο που σας ενδιαφέρει. Η ρύθμιση snaplen=0 θα καταγράψει ολόκληρα πακέτα.

-Τ<тип> καθορίζει την ερμηνεία των πακέτων που επιλέγονται χρησιμοποιώντας το φίλτρο ως πακέτα του τύπου που καθορίζεται από την παράμετρο. Οι τύποι που υποστηρίζονται αυτήν τη στιγμή είναι οι aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, vat16 και wb17.

απενεργοποιεί την έξοδο των χρονικών σημάνσεων σε κάθε γραμμή του dump.

-ttκαθορίζει την έξοδο σε κάθε γραμμή μιας μη μορφοποιημένης ένδειξης χρονικής σήμανσης.

-tttκαθορίζει την έξοδο των χρονικών διαστημάτων (σε μικροδευτερόλεπτα) μεταξύ της σύλληψης του προηγούμενου και αυτού του πακέτου σε κάθε γραμμή του dump.

-ttttκαθορίζει την έξοδο των χρονικών σφραγίδων στην προεπιλεγμένη μορφή για κάθε γραμμή ένδειξης σφαλμάτων.

-uκαθορίζει την έξοδο των λαβών NFS χωρίς αποκωδικοποίηση.

-Uορίζει τη λειτουργία "buffering σε επίπεδο παρτίδας" για αρχεία που αποθηκεύονται με την επιλογή -w. Σε αυτή τη λειτουργία, κάθε πακέτο γράφεται στο αρχείο εξόδου αμέσως μόλις συλληφθεί.
(χωρίς να περιμένετε να γεμίσει το buffer εξόδου). Η σημαία -U δεν θα υποστηρίζεται εάν το πρόγραμμα tcpdump είχε μεταγλωττιστεί με την παλιά επιλογή libpcap που δεν υποστηρίζει τη συνάρτηση
pcap_dump_flush().

-vκαθορίζει την έξοδο Επιπλέον πληροφορίεςκατά τη λήψη αρχείων. Τέτοιες πληροφορίες μπορεί να περιλαμβάνουν την τιμή TTL (χρόνος ζωής), την ταυτότητα, το συνολικό μέγεθος, τις επιλογές IP, κ.λπ. Πότε
χρησιμοποιώντας αυτήν τη σημαία εκτελεί επίσης πρόσθετους ελέγχους ακεραιότητας πακέτων χρησιμοποιώντας αθροίσματα ελέγχου (για παράδειγμα, για πρωτόκολλα IP και ICMP).

-vvκαθορίζει μια πρόσθετη αύξηση στον όγκο των πληροφοριών εξόδου (για παράδειγμα, πλήρης αποκωδικοποίηση πακέτων SMB, έξοδος πρόσθετων πεδίων σε αποκρίσεις NFS, κ.λπ.).

-vvvορίζει τη μέγιστη ποσότητα πληροφοριών εξόδου (για παράδειγμα, οι επιλογές telnet SB ... SE εμφανίζονται πλήρως). Όταν χρησιμοποιείται με το διακόπτη -X, εμφανίζονται επίσης οι επιλογές Telnet
δεκαεξαδική παράσταση.

-w<файл> καθορίζει την εγγραφή ακατέργαστων πακέτων. Τα πακέτα που μεταγλωττίζονται σε ένα αρχείο μπορούν στη συνέχεια να προβληθούν χρησιμοποιώντας τη σημαία -r ή να περάσουν σε άλλα προγράμματα για ανάλυση.
(π.χ. Ethereal). Εάν ο χαρακτήρας - έχει καθοριστεί ως όνομα αρχείου, το αρχείο εγγράφεται στην τυπική έξοδο (stdout).

καθορίζει την έξοδο μιας δεκαεξαδικής ένδειξης (χωρίς την κεφαλίδα του επιπέδου σύνδεσης) για κάθε πακέτο που καταγράφεται. Η ποσότητα των πληροφοριών εξόδου καθορίζεται από τη μικρότερη από τις δύο τιμές −
το μέγεθος του πακέτου και την τιμή της παραμέτρου snaplen. Σημειώστε ότι κατά τη λήψη πλαισίων πλήρους επιπέδου σύνδεσης, η ένδειξη ένδειξης μπορεί επίσης να περιλαμβάνει byte συμπλήρωσης εάν το πακέτο επίπεδο δικτύου
έχει μικρό μέγεθος.

-xxκαθορίζει την έξοδο μιας δεκαεξαδικής ένδειξης για κάθε πακέτο, συμπεριλαμβανομένων των κεφαλίδων επιπέδου σύνδεσης.

καθορίζει την έξοδο ένδειξης σε δεκαεξαδική και ASCII μορφή χωρίς κεφαλίδες επιπέδου σύνδεσης. Αυτή η επιλογή μπορεί να είναι πολύ βολική κατά την ανάλυση νέων πρωτοκόλλων.

-ΧΧκαθορίζει την έξοδο dump σε δεκαεξαδική και ASCII μορφή, συμπεριλαμβανομένων των κεφαλίδων του επιπέδου σύνδεσης.

-υ<тип> καθορίζει τον τύπο του επιπέδου σύνδεσης που χρησιμοποιείται κατά τη λήψη πακέτων. Οι υποστηριζόμενες τιμές μπορούν να προβληθούν χρησιμοποιώντας τη σημαία -L.

Παραδείγματα.

tcpdump -i re0 -n -nn -ttt dst host 192.168.1.2

  • Πιάνουμε όλη την εξερχόμενη κίνηση εκτός από τη δική μας συνεδρίες sshεπειδή λαμβάνεται μια πολύ μεγάλη ροή δεδομένων.

tcpdump -i re0 -n -nn -ttt 'dst host 192.168.1.110 και οχι(src host 192.168.1.2 και dst port 22)»

  • Προβολή επικοινωνίας dns

tcpdump -i re0 -n -nn -ttt «κεντρικός υπολογιστής 192.168.1.110 και θύρα 53»

  • Προβολή πακέτων icmp

tcpdump -i re0 -n -nn -ttt 'ip proto \icmp'

  • Κυκλοφορία που προέρχεται από το δίκτυο 10.7.20 με προορισμό στο δίκτυο 10.7.0. ή 10.7.24.:

tcpdump -nvX src net 10.7.20.0.0/16 και dst net 10.7.0.0/8 ή 10.7.24.0/16

  • Κυκλοφορία που προέρχεται από το δίκτυο 10.7.0.0 προς τις θύρες προορισμού 22 ή 4589:

tcpdump 'src 10.7.0.0 και (dst port 22 ή 4589)'

  • Προβολή κίνησης στη διεπαφή:
  • δείτε την επισκεψιμότητα ενός κεντρικού υπολογιστή:

tcpdump host 192.168.1.1

  • Προβολή κίνησης σε λιμάνι:

tcpdump src θύρα 80

  • Προβολή επισκεψιμότητας IP ανά κεντρικό υπολογιστή:

tcpdump ip host 192.168.1.2

  • Προβολή επισκεψιμότητας ARP στον κεντρικό υπολογιστή:

tcpdump arp host 192.168.1.2

  • Εξετάζουμε την επισκεψιμότητα RARP προς τον κεντρικό υπολογιστή:

tcpdump rarp host 192.168.1.2

  • Εξετάζουμε την κίνηση, εκτός από τον κεντρικό υπολογιστή pav253

Το tcpdump δεν φιλοξενεί το pav253

  • Παρακολουθήστε την κυκλοφορία στο pav253 και στο pav210

tcpdump host pav253 ή host pav210

  • Εξετάζουμε τα περιεχόμενα των πακέτων στη διεπαφή re0 στον ιστότοπο υποδοχής

tcpdump -X -i re0 κεντρικός ιστότοπος

  • κίνηση icq

tcpdump -X -i re0 port aol

  • Εξετάζουμε τα περιεχόμενα των πακέτων στη διεπαφή tun0 στον κεντρικό υπολογιστή ya.ru, ενώ διαβάζουμε 1500 byte από κάθε πακέτο και δεν μετατρέπουμε την IP σε όνομα κεντρικού υπολογιστή

Ιστότοπος κεντρικού υπολογιστή tcpdump -X -s 1500 -n -i re0

  • Κορυφαίες ενεργές αλληλεπιδράσεις

tcpdump -tn -c 10000 -i re0 tcp ή udp | awk -F "." ‘(εκτύπωση $1″.”$2″.”$3″.”$4)” | \ ταξινόμηση | uniq -c | ταξινόμηση-αριθμός | awk "$1 > 100"

  • Εξετάζουμε όλα τα πακέτα TCP με τη σημαία SYN (έναρξη περιόδου λειτουργίας).

tcpdump -i eth0 -nn tcp == 2 και src net 192.168.1.0/24

  • Προβολή πακέτων syn και fin από έξω

tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 και όχι src και dst net 192.168.1.0'

  • Δείτε όλα τα πακέτα ipv4 http από τη θύρα 80 εκτός από τα δεδομένα syn/fin/ack

tcpdump 'tcp port 80 και (((ip - ((ip&0xf)<>2)) != 0)’

  • Δείτε μόνο πακέτα syn