Tcpdump là gì?
Nếu bạn có hệ điều hành Unix hoặc Unix (Linux, Mac OS), bạn có thể sử dụng tcpdump để kiểm tra lưu lượng mạng. Chương trình tcpdump là một tiện ích dòng lệnh có thể được cài đặt miễn phí. Nó không được tích hợp phổ biến vào các hệ điều hành, vì vậy bạn cần cài đặt nó từ sổ đăng ký GitHub của tcpdump hoặc từ trang web chính thức của tcpdump.
Các yếu tố của tcpdump
Tiện ích chụp gói được sử dụng bởi tcpdump được cung cấp bởi libpcab, đây là thư viện thủ tục C / C ++. Chương trình tcpdump chính là giao diện cho quá trình chụp gói. Khi chạy, nó sẽ bắt đầu quá trình libcap để chụp các gói và sau đó hiển thị nội dung của chúng trên màn hình. Trừ khi giới hạn số lượng gói cần bắt được chỉ định khi chương trình khởi động, nó sẽ tiếp tục chạy mãi mãi. Quá trình xử lý sau đó được kết thúc bằng tín hiệu ngắt (Control-C).
Chương trình được chạy ở dòng lệnh và bao gồm một số tùy chọn, được biểu thị bằng cờ. Các cờ này thay đổi hành vi của chương trình để chọn chương trình chọn các gói phù hợp với mẫu đã chỉ định, giới hạn thời gian chạy hoặc để đọc các gói được lưu trữ từ một tệp thay vì từ giao diện mạng.
Định dạng Tcpdump
Lệnh tcpdump có thể được ban hành hoặc với các tùy chọn, tham số và / hoặc biểu thức chính quy. Không có yếu tố nào trong số này là bắt buộc và thứ tự không quan trọng.
tcpdump <-tùy chọn>
Tùy chọn Tcpdump
Lệnh tcpdump được theo sau bởi các tùy chọn, còn được gọi là cờ. Mỗi trong số này được biểu thị bằng một dấu gạch nối và sau đó là một chữ cái. Dưới đây là danh sách của mỗi lá cờ.
-Một in các gói trong ASCII mà không có các tiêu đề cấp liên kết
-b hiển thị số AS là định dạng ASDOT
-B đệm_size tính theo đơn vị KiB (1024 byte
-c đếm – giới hạn của các gói để nắm bắt
-C Kích thước tập tin – quá trình sẽ tạo một tệp mới sau khi giới hạn kích thước tệp này được lấp đầy; Kích thước là x 1 triệu byte
-d Kết xuất mã khớp gói đã biên dịch trong ASCII
-đ Kết xuất mã kết hợp gói dưới dạng C đoạn chương trình
-ddd Kết xuất mã khớp gói dưới dạng số thập phân có trước số đếm
-D Liệt kê tất cả các giao diện có thể truy cập
-e In tiêu đề cấp liên kết trên mỗi dòng kết xuất
-E spi @ ipaddr algo: bí mật – để giải mã các gói IPsec ESP:
spi là chỉ số tham số bảo mật
ipthêm là địa chỉ đích trên gói
algo là thuật toán, được mặc định là des-cbc và trường là tùy chọn.
Các giá trị có thể là:
- des-cbc
- 3des-cbc
- cá bơn
- RC3-cbc
- diễn viên-cbc
bí mật là văn bản ASCII cho khóa bí mật ESP. Nếu trước 0x, thì đó là giá trị hex
-f In `địa chỉ IPv4 tiếng nước ngoài bằng số chứ không phải tượng trưng
-F tập tin – sử dụng tập tin làm đầu vào cho biểu thức lọc
-G xoay vòng giây – dấu chấm để xoay tệp lưu của tùy chọn -w, sẽ thêm dấu thời gian vào tên
-h In chuỗi phiên bản tcpdump và libpcap, in thông báo sử dụng và thoát
-H Phát hiện các tiêu đề lưới dự thảo 802.11s
-Tôi giao diện – giao diện để nghe, mặc định là tên thấp nhất theo thứ tự abc
-Tôi chế độ màn hình | chế độ trực tiếp – loại bỏ bộ đệm
-j tstamp_type – đặt loại dấu thời gian cho bản chụp thành tstamp_type
-J tstamp_precision – đặt độ chính xác của tem thời gian (vi mô hoặc là nano) mặc định là vi mô. Nếu tstamp_precision là null, liệt kê các loại dấu thời gian và thoát
-K Don Patrick xác minh tổng kiểm tra
-tôi Dòng stdout đệm. Ví dụ. tcpdump -l | dữ liệu tee hoặc là tcpdump -l > dữ liệu & đuôi -f dat
-L Liệt kê các loại liên kết dữ liệu đã biết cho giao diện, trong chế độ được chỉ định và thoát
-m mô-đun – tải định nghĩa mô-đun SMI MIB từ tệp mô-đun.
-M bí mật – giá trị bí mật được chia sẻ để xác thực với tùy chọn TCP-MD5
-n Chuyển đổi địa chỉ (nghĩa là địa chỉ máy chủ, số cổng, v.v.) thành tên
-N Don Tiết in tên miền đủ điều kiện của tên máy chủ
-# In một số gói tùy chọn ở đầu dòng
-Ôi Don mài chạy trình tối ưu hóa mã khớp gói
-p Donith đưa giao diện vào chế độ lăng nhăng
-Q phương hướng – hướng gửi / nhận. Có thể trong, ngoài, hoặc là đầu vào
-q In ít thông tin giao thức
-r tập tin – đọc các gói từ tập tin. Chỉ định – cho đầu vào tiêu chuẩn
-S In số thứ tự TCP tuyệt đối
-S snaplen – snarf snaplen byte từ mỗi gói, không phải 262144 byte mặc định
-T kiểu – diễn giải các gói theo quy định kiểu. Các tùy chọn là:
- aodv Ad-hoc Giao thức vectơ khoảng cách theo yêu cầu
- cá chép Giao thức dự phòng địa chỉ chung
- cnfp Giao thức NetFlow của Cisco
- lmp Giao thức quản lý liên kết
- pgm Thực dụng chung Multicast
- pgm_zmtp1 ZMTP / 1.0 bên trong PGM / EPGM)
- kính trọng Giao thức nối tiếp REdis
- bán kính RADIUS
- rpc Cuộc gọi thủ tục từ xa
- rtp Giao thức ứng dụng thời gian thực
- rtcp Giao thức điều khiển ứng dụng thời gian thực
- snmp giao thuc quan li mang Don gian
- tftp Giao thức truyền tập tin tầm thường
- thùng Công cụ âm thanh hình ảnh
- wb bảng trắng phân phối
- zmtp1 Giao thức truyền tải thông điệp ZeroMQ 1.0
- vxlan Mạng cục bộ ảo eXtensible
-t Don Tiết in dấu thời gian trên mỗi dòng đổ
-tt In dấu thời gian dưới dạng offset kể từ ngày 1 tháng 1 năm 1970 trên mỗi dòng kết xuất
-ttt In một delta (độ phân giải micro giây) giữa dòng hiện tại và trước đó
-tttt In dấu thời gian: ngày, giờ, phút, giây trên mỗi dòng kết xuất
-ttttt In một delta (độ phân giải micro giây) giữa dòng hiện tại và dòng đầu tiên
-bạn In tay cầm NFS chưa được mã hóa
-Bạn Gói đệm
-v Đầu ra dài hơn một chút
-vv Đầu ra dài dòng hơn
-vvv Đầu ra dài dòng nhất
-V tập tin – đọc danh sách tên tệp từ tập tin. Đầu vào tiêu chuẩn được sử dụng nếu tập tin Là –
-w tập tin – ghi đầu ra vào tập tin
-W giới hạn – số lượng tệp tối đa được tạo bởi -C và -G tùy chọn
-x In dữ liệu của mỗi gói trừ đi tiêu đề cấp liên kết của nó ở dạng hex
-xx In dữ liệu của từng gói, kể cả tiêu đề cấp liên kết của nó, trong hex
-X In dữ liệu của mỗi gói trừ đi tiêu đề cấp liên kết của nó ở dạng hex và ASCII
-XX In dữ liệu của từng gói, kể cả tiêu đề cấp liên kết của nó, trong hex và ASCII.
-y datalinktype – Đặt loại liên kết dữ liệu sẽ sử dụng trong khi chụp gói datalinktype
-z lệnh postrotate – quá trình lưu tệp thường với nén, vd -z gzip
-Z người dùng – thay đổi ID người dùng thành người dùng và ID nhóm cho nhóm chính của người dùng
Thông số Tcpdump
Các tham số cho tcpdump còn được gọi là nguyên thủy. Chúng chỉ định việc chụp gói chỉ nên lấy dữ liệu từ các máy chủ được chỉ định. Các tham số này cũng có thể được biểu thị dưới dạng các điều kiện bằng cách sử dụng các toán tử Boolean và, hoặc là, và không phải. Bạn không cần đặt dấu bằng (=) giữa tên tham số và giá trị của nó và bạn không cần phải đặt tham số khoảng trắng có dấu chấm câu. Trong mỗi trường hợp, bạn chỉ cần một không gian.
Thông số được sử dụng phổ biến nhất trong số các tham số này là máy chủ lưu trữ, cho phép bạn giới hạn việc chụp để truyền từ chỉ một nguồn. Trong mỗi trường hợp, tên thiết bị làm giá trị tham số có thể được thay thế bằng địa chỉ của nó. Trong đó một tham số có một dst phiên bản, biến thể đó giới hạn đầu ra chỉ là các gói có thuộc tính đó cho đích của nó. Các thông số bao gồm src tìm kiếm các gói có giá trị đã cho trong dữ liệu liên quan đến nguồn gốc của chúng.
Dưới đây là các tùy chọn tham số:
tổ chức tên máy chủ – cũng thế máy chủ dst hoặc là máy chủ src.
Cũng có thể được chuẩn bị trước với ip, arp, hoặc là hiếm
ête ehost – giá trị từ / etc / ethers hoặc một số. Cũng thế ether src và số phận ether.
cửa ngõ tổ chức – nhận các gói được truyền qua cổng tổ chức
mạng lưới tên mạng – IP nguồn hoặc IP đích bao gồm mạng_num Cũng thế mạng dst và mạng src
Hải cảng số | tên – cũng thế cổng dst và cổng src. Có thể với tcp hoặc là udp để hạn chế giao thức
ip proto giao thức – chụp các gói IP của giao thức được đặt tên. Tên phải trong / etc / giao thức
nguyên sinh ether giao thức – chụp gói kiểu giao thức ether. Tùy chọn cho giao thức là một số hoặc:
- ip
- ip6
- arp
- hiếm
- atalk
- atalkarp
- giải mã
- quyết định
- decdns
- cầu đường
- trễ
- lau nhà
- moprc
- nhộng
- sca
- ma
- stp
- vEx
- vprod
- xns
Phát sóng Chụp các gói phát sóng Ethernet. Cũng được viết là phát sóng ether
phát sóng ip Chụp gói tin quảng bá ip
phát đa hướng Nắm bắt các gói đa tuyến Ethernet. Cũng được viết là ether multicast
ip multicast Chụp các gói IP multicast
máy chủ decnet tên máy chủ – nếu nguồn hoặc đích của DECNET là tên máy chủ
giải mã src tên máy chủ – chụp nếu nguồn DECNET là tên máy chủ
decnet dst tên máy chủ – chụp nếu đích của DECNET là tên máy chủ
chủ nhà ehost – nếu địa chỉ IEEE 802.11 thứ nhất, thứ hai, thứ ba hoặc thứ tư là ehost
wlan addr1 ehost – chụp nếu địa chỉ IEEE 802.11 đầu tiên là ehost
wlan addr2 ehost – chụp nếu địa chỉ IEEE 802.11 thứ hai là ehost
wlan addr3 ehost – chụp nếu địa chỉ IEEE 802.11 thứ ba là ehost
wlan addr4 ehost – nếu địa chỉ IEEE 802.11 thứ tư là ehost. Chỉ được sử dụng cho WDS
kiểu kiểu – chụp nếu loại khung hình 802.11 802.11 là kiểu, đó là một số hoặc:
- dữ liệu
- mgt
- ctl
tiểu loại tiểu loại – chụp nếu khung hình 802.11 802.11 tiểu loại, đó là một số hoặc:
- assocreq
- đánh giá
- đánh giá lại
- đánh giá lại
- đầu dò
- proberesp
- đèn hiệu
- atim
- đại diện
- xác thực
- ngày mai
- dữ liệu
thư mục thư mục – chụp nếu hướng khung hình 802.11 802.11 là thư mục, đó là một số hoặc:
- gật đầu
- tods
- từ
- dstods
Biểu thức Tcpdump
Phân đoạn biểu thức của lệnh tcpdump cung cấp cho bạn cơ hội để thêm một chút lập trình vào lựa chọn gói của bạn. Tuy nhiên, không giống như một chương trình thông thường, bộ hướng dẫn này phải được viết thành một dòng. Nếu bạn là người thường xuyên sử dụng Unix hoặc Linux, bạn sẽ quen với các biểu thức thông thường của kịch bản lệnh shell và sẽ không gặp vấn đề gì khi hiểu định dạng của các bộ lọc này.
Các gói đáp ứng bài kiểm tra đặt ra bởi biểu thức sẽ được ghi lại. Vì vậy, kết quả của mỗi biểu thức phải là đúng.
Có một vài điều kiện biểu hiện thường không gặp phải trong kịch bản lệnh shell và chúng được liệt kê dưới đây:
len
Điều này trả về độ dài của một gói. Ví dụ sử dụng: len! = 5.
proto [expr: size]
Trong đối tượng này:
nguyên sinh là tên của một lớp giao thức. Nó có thể:
- ête
- fddi
- ip
- arp
- hiếm
- tcp
- udp
- icmp
expr là phần bù byte. Điều này cần được đưa vào, nhưng nó có thể được đưa ra là 0 để lấy giá trị từ đầu đối tượng.
kích thước là tùy chọn và nó đại diện cho số byte trong tùy chọn. Giá trị mặc định là 1, nhưng cũng có thể là 2, 3 hoặc 4.
Ví dụ sử dụng:
ether [0] & 1! = 0 đúng với tất cả lưu lượng truy cập phát đa hướng.
ip [0] & 0xf! = 5 đúng với tất cả các gói IP với các tùy chọn.
ip [6: 2] & 0x1fff = 0 đúng với các datagram không phân mảnh và các số 0 của các datagram bị phân mảnh.
Ví dụ Tcpdump
Trong tất cả các trường hợp này, kết quả của lệnh sẽ hiển thị trên màn hình, trừ khi có tùy chọn liên quan đến tệp hoặc trừ khi lệnh được khởi chạy với chuyển hướng đầu ra đứng hoặc chuyển sang tệp.
Hiển thị các gói đi từ hoặc đến máy tính được xác định là lab1:
phòng thí nghiệm máy chủ tcpdump1
Hiển thị tất cả các gói IP di chuyển giữa lab1 và bất kỳ nút nào ngoài việc nhận:
tcpdump ip host lab1 và không tiếp nhận
Hiển thị tất cả lưu lượng ftp thông qua cổng internet styx:
tcpdump ‘gateway styx và (port ftp hoặc ftp-data)
Hiển thị các gói SYN và FIN của mỗi cuộc hội thoại TCP có liên quan đến máy chủ không cục bộ:
tcpdump ‘tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 chứ không phải src và dst net localnet
Hiển thị các gói quảng bá hoặc phát đa hướng IP không được gửi qua phát sóng Ethernet hoặc phát đa hướng:
tcpdump ‘ether [0] & 1 = 0 và ip [16] >= 224
Định dạng đầu ra Tcpdump
Định dạng bản ghi được sử dụng để ghi các gói vào tệp đã trở thành một tiêu chuẩn được nhiều người phân tích gói và phân tích lưu lượng truy cập mới hơn áp dụng.
Tiêu chuẩn không đơn giản và được điều chỉnh cho từng giao thức. Tuy nhiên, những ứng dụng đã áp dụng định dạng cũng chiếm các biến thể này. Định dạng được gọi là pcap, đó là tên của quá trình bắt gói được sử dụng bởi tcpdump. Các tệp ở định dạng này thường có .pcap sự mở rộng.
Tcpdump cho Windows
Có một bản chuyển thể của tcpdump chạy trên Windows. Cái này được gọi là WinDump và nó dựa vào WinPcap để chụp gói theo cách tương tự như tcpdump sử dụng chức năng pcap của libpcap. WinPcap thực sự thuộc sở hữu của Riverbed Technology. Công ty này cũng là nhà tài trợ chính của Wireshark, có lẽ là trình thám thính gói nổi tiếng và được sử dụng rộng rãi nhất trên thế giới. Có một phiên bản không dây của WinPcap, được gọi là AirPcap. Bạn có thể tải xuống WinDump, WinPcap và AirPcap miễn phí từ trang web WinPcap.
Sử dụng gói sniffers
Tiện ích dòng lệnh tcpdump hữu ích cho những người quen thuộc với Unix và Linux hệ điều hành và thưởng thức viết kịch bản shell. Những người không có kinh nghiệm trong việc kết hợp các lệnh với các biểu thức chính quy tại dòng lệnh sẽ khó sử dụng chương trình này.
Bạn có các tùy chọn khác vì có nhiều trình thám thính gói có sẵn, chẳng hạn như Wireshark, đã được đề cập ở trên. Bạn có thể tìm hiểu thêm về các lựa chọn thay thế cho tcpdump trong bài đánh giá này về trình thám thính gói.
Bạn có một gói sniffer yêu thích? Bạn có phải là fan hâm mộ của tcpdump, hay bạn thích những lựa chọn thay thế thân thiện hơn với người dùng? Để lại tin nhắn trong Bình luận phần bên dưới và chia sẻ kinh nghiệm của bạn.
Hình ảnh: chụp gói tcpdump bằng Linux Ảnh chụp màn hình qua Flickr. Được cấp phép theo CC BY 2.0