HƯỚNG DẪN Cách sử dụng tcpdump

Thảo luận trong 'KIẾN THỨC CƠ BẢN' bắt đầu bởi quyet1990, 15/11/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Tcpdump phần mềm bắt gói tin trong mạng làm việc trên hầu hết các phiên bản hệ điều hành unix/linux. Tcpdump cho phép bắt và lưu lại những gói tin bắt được, từ đó chúng ta có thể sử dụng để phân tích. Trong hướng dẫn tcpdump này, chúng ta sẽ cùng thảo luận về một vài ví dụ thực tiễn về cách sử dụng lệnh tcpdump.

    Kể từ tcpdump không có trong hầu hết các hệ thống cơ bản, bạn sẽ cần phải cài đặt nó. Tuy nhiên, gần như tất cả các bản phân phối Linux đều có tcpdump trong kho cốt lõi. Đối với các bản phân phối dựa trên Debian, lệnh để cài đặt tcpdump là:
    Mã:
    apt-get install tcpdump
    Đối với CentOS/RedHat, sử dụng lệnh sau đây:
    Mã:
    yum install tcpdump
    Đối với FreeBSD, dùng lệnh sau:
    Mã:
    pkg install tcpdump
    Ngoài ra, net/tcpdump có thể được cài đặt thông qua:
    Mã:
    cd /usr/ports/net/tcpdump
    make install clean
    
    Nếu bạn chạy tcpdump không có bất kỳ đối số, bạn sẽ thấy được kết quả đầu ra như sau:
    [​IMG]

    Trước khi đi vào chi tiết hơn về cách lọc đầu vào, bạn nên có một cái nhìn tại một số các thông số có thể được thông qua với tcpdump:
    -i - Chỉ định các interface network mà bạn muốn nghe, ví dụ: tcpdump -i eth0.
    -n - Đừng cố gắng làm điều tra ngược (reverse lookups) về địa chỉ IP, ví dụ: tcpdump -n (nếu bạn thêm một n tcpdump sẽ cho bạn thấy số cổng thay vì tên).
    -X - Hiển thị nội dung của các gói tin thu thập: tcpdump -X.
    -c - Chỉ bắt số lượng gói x, x là một số tùy ý, ví dụ như tcpdump -c 10 bắt chính xác 10 gói.
    -v - Tăng số lượng thông tin gói.

    Mỗi tham số được đề cập ở đây có thể được kết hợp với nhau. Nếu bạn muốn nắm bắt các gói tin 100, nhưng chỉ trên interface tun0 VPN của bạn, lệnh tcpdump sẽ trông như thế này:
    Mã:
    tcpdump -i tun0 -c 100 -X
    Bạn có thể tham khảo về các tùy chọn của tcpdump bằng lệnh man tcpdump.

    Một trong những tính năng tuyệt vời nhất của tcpdump: biểu thức. Biểu thức sẽ làm cho công việc của bạn dễ dàng hơn nhiều. Chúng cũng được biết đến như là BPF hoặc Berkeley Packet Filters. Sử dụng biểu thức cho phép bạn chọn lọc hiển thị (hoặc bỏ qua) các gói tin dựa trên một số đặc điểm - chẳng hạn như nguồn gốc, đích đến, kích thước, hoặc thậm chí số chuỗi TCP.

    Các biểu thức mà bạn có thể sẽ được sử dụng nhiều nhất là:

    • host - Tìm kiếm lưu lượng dựa trên hostname hoặc địa chỉ IP .
    • src hoặc dst – Tìm kiếm lưu lượng từ hay đến một máy chủ cụ thể.
    • proto - Tìm kiếm lưu lượng của một giao thức nhất định. Làm việc cho tcp, udp, icmp, và một số cái khác.
    • net - Tìm kiếm lưu lượng đến/từ một phạm vi nhất định của địa chỉ IP.
    • port - Tìm kiếm lưu lượng đến / từ một cổng nhất định.
    • greater or less - Tìm kiếm lưu lượng lớn hơn hoặc nhỏ hơn so với một số nhất định của byte.
    Nếu bạn muốn xem cách giao tiếp của bạn với một máy chủ nào đó, sau đó bạn có thể sử dụng từ khóa host, ví dụ (bao gồm một số các thông số từ ở trên):
    Mã:
    tcpdump -i eth0 host aluhost.com
    Biểu thức cho phép bạn lọc ra các gói phải lớn hơn hoặc nhỏ hơn so với một số byte nhất định:
    Mã:
    tcpdump -i eth0 -nn greater 128
    or
    tcpdump -i eth0 -nn less 32
    
    Có lẽ chỉ có cổng nhất định là mối quan tâm đối với bạn. Trong trường hợp này, sử dụng từ khóa port:
    Mã:
    tcpdump -i eth0 -X port 21
    Bạn cũng có thể tìm kiếm cho các phạm vi cổng:
    Mã:
    tcpdump -i eth0 -X portrange 22-25
    Từ khi cổng NAT là khá phổ biến, bạn có thể tìm kiếm các cổng điểm đến:
    Mã:
    tcpdump dst port 80
    Nếu bạn đang xem lưu lượng truy cập vào máy chủ web của bạn, bạn có thể chỉ muốn nhìn vào giao thông TCP đến cổng 80:
    Mã:
    tcpdump tcp and dst port 80
    tcpdump cung cấp hỗ trợ cơ bản cho các biểu thức logic, cụ thể hơn:
    • and / && - Logical "and".
    • or / || - Logical "or".
    • not / ! - Logical "not".
    Cùng với khả năng nhóm các biểu thức với nhau, điều này cho phép bạn tạo ra các tìm kiếm rất mạnh mẽ cho lưu lượng vào và ra. Vì vậy, hãy lọc ra lưu lượng đến từ aluhost.com trên cổng 22 hoặc 443:
    Mã:
    tcpdump -i eth0 src host aluhost.com and (dst port 22 or 443)
    Chạy lệnh này trên dòng lệnh sẽ cung cấp cho bạn những lỗi sau đây:
    Mã:
    bash: syntax error near unexpected token `('
    Đó là bởi vì có một cảnh báo: bash cố gắng để đánh giá mọi kí tự nó có thể. Điều này bao gồm ký tự (and). Để tránh lỗi này, bạn nên sử dụng dấu ngoặc đơn bao quanh các biểu thức kết hợp:
    Mã:
    tcpdump -i eth0 'src host vultr.com and (dst port 22 or 443)'
    Một ví dụ hữu ích: Khi gỡ lỗi các vấn đề SSH với một trong những user của bạn, bạn có thể muốn bỏ qua tất cả những gì liên quan đến phiên SSH của bạn:
    Mã:
    tcpdump '!(host $youripaddress) && port 22)'
    Các lệnh sau đây sẽ cho bạn thấy các gói SYNACK của một cái bắt tay TCP:
    Mã:
    tcpdump -i eth0 'tcp[13]=18'
    Điều này hoạt động bằng cách nhìn vào offset thứ 13 của TCP header và byte thứ 18 bên trong nó
    Sức mạnh của tcpdump có thể cắt giảm kết quả đầu ra, hiển thị đúng thông tin ta cần:
    Mã:
    tcpdump -i eth0 tcp port 22
    Kết quả bây giờ là:
    Mã:
    81 packets captured
    114 packets received by filter
    0 packets dropped by kerne
    
     

Chia sẻ trang này

Đang tải...