Wireshark

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

WIRESHARK

Wireshark là một mã nguồn mở, công cụ phân tích gói tin miễn phí, cho
phép thu thập và phân tích lưu lượng mạng trong thời gian thực. Nó có sẵn cho các
hệ điều hành Windows, macOS và Linux. Wireshark thu thập các gói tin mạng và
hiển thị dữ liệu đã thu thập dưới dạng đọc được để dễ dàng phân tích và khắc phục
sự cố mạng. Nó có thể quét nhiều giao thức mạng khác nhau bao gồm TCP, UDP,
HTTP, DNS, v.v.

Khởi động Wireshark thông qua câu lệnh trong terminal:

sudo wireshark

Giao diện của Wireshark hiện ra:

Trong Interface List, chọn thành phần để tiến hành giám sát lưu lượng mạng:

eth0, eth1, eth2, ...: Đây là các giao diện Ethernet vật lý trên máy tính.
Chúng thường được sử dụng để kết nối với mạng cáp.

wlan0, wlan1, wlan2, ...: Đây là các giao diện không dây (Wi-Fi) trên máy
tính. Chúng được sử dụng để kết nối với mạng Wi-Fi.
Loopback: lo: Đây là giao diện loopback (còn được gọi là localhost) trên
máy tính. Nó là giao diện ảo và được sử dụng để truy cập vào máy chủ gốc của
chính máy tính đó.

docker0: Đây là giao diện được tạo ra bởi Docker, một nền tảng ảo hóa phổ
biến. Nó được sử dụng để giao tiếp giữa các container Docker và máy tính chủ.

any: Giao diện "any" không chỉ định một giao diện cụ thể, mà nó cho phép
bắt gói tin trên tất cả các giao diện có sẵn trên hệ thống.

bluetooth0: Đây là giao diện Bluetooth trên máy tính của. Nó cho phép máy
tính kết nối và tương tác với các thiết bị Bluetooth khác như tai nghe, bàn phím,
chuột, hoặc điện thoại di động.

bluetooth-monitor: Đây là một giao diện được sử dụng để theo dõi và ghi lại
các hoạt động Bluetooth trên hệ thống. Nó có thể cung cấp thông tin chi tiết về các
giao thức và dịch vụ Bluetooth đang được sử dụng.

nflog: Giao diện nflog (Netfilter Log) được sử dụng để kết nối với Netfilter
log subsystem trong hệ thống Linux. Nó cho phép theo dõi và ghi lại các gói tin
thông qua quá trình xử lý giao thông của Netfilter, bao gồm iptables và các công cụ
tương tự.

nfqueue: Giao diện nfqueue cũng liên quan đến Netfilter và được sử dụng để
gửi các gói tin từ các quá trình xử lý giao thông của Netfilter đến ứng dụng bên
ngoài để xử lý. Điều này cho phép thực hiện các hoạt động tùy chỉnh trên các gói
tin trước khi chúng tiếp tục đi qua hệ thống.

dbus-system: Giao diện dbus-system được sử dụng trong hệ thống D-Bus


trên Linux. D-Bus là một hệ thống giao tiếp cho phép các ứng dụng trao đổi thông
điệp và gọi phương thức của nhau. Giao diện này cho phép theo dõi các hoạt động
của hệ thống thông qua D-Bus.

dbus-session: Giao diện dbus-session cũng liên quan đến hệ thống D-Bus,
nhưng nó được sử dụng trong phiên làm việc của người dùng cụ thể. Nó cho phép
ứng dụng trong phiên làm việc đó giao tiếp với nhau thông qua D-Bus.
Sau khi chọn, Wireshark sẽ bắt từng package ra và vào hệ thống mạng. Nếu
đang giám sát thông tin trong chế độ Promiscuous thì sẽ nhìn thấy các gói dữ liệu
khác trong toàn bộ hệ thống. Chế độ Promiscuous được thiết lập như sau:

Chọn Capture -> Options -> Check Enable promiscuous mode on all
interfaces.

Chế độ Promiscuous sẽ được thiết lập đối với các interfaces được chọn trong
cửa sổ Manage Interfaces…

Dừng và tiếp tục capture thông qua biểu tượng như hình dưới:
Ta thấy các packet được đánh dấu bằng nhiều màu khác nhau. Wireshark sử
dụng màu sắc để giúp bạn xác định các loại lưu lượng truy cập. Để xem chính xác
ý nghĩa của các mã màu, nhấp vào View -> Coloring Rules. Ngoài ra có thể tùy
chỉnh và sửa đổi các quy tắc về màu sắc trong cửa sổ Coloring Rules.
1. Wireshark Filter

Filter cho phép lọc ra những packet nào sẽ dùng để phân tích. Sử dụng
Wireshark filter bằng cách khai báo một biểu thức để quy định việc thêm vào
(inclusion) hoặc loại bỏ (exclusion) các gói tin. Có hai loại filter chính:

- Capture Filters: Chỉ định các packet sẽ được capture và quá trình bắt gói
tin chỉ capture những packet thỏa điều kiện này.

Được áp dụng trong quá trình bắt gói tin để giới hạn số lượng gói tin sẽ được
bắt. Lý do chính để sử dụng filter này nhằm cải thiện performance và giới hạn số
lượng dữ liệu capture được chỉ chứa các thông tin chúng ta quan tâm, giúp việc
phân tích trở nên hiệu quả hơn. Điều này cực kỳ hữu ích khi áp dụng bắt gói tin
bằng Wireshark trên các hệ thống có lưu lượng mạng cao, dữ liệu trao đổi lớn.

Chúng ta có thể khai báo biểu thức cho Capture Filters ở “Capture >
Capture Filters” hoặc khai báo ở phần “…using this filter” khi lựa chọn card mạng.

- Display filters: Áp dụng filter lên các gói tin đã được capture, mục tiêu là
để ẩn đi những packet không cần thiết và chỉ thể hiện những packet thỏa điều kiện
chỉ định.

Cách cơ bản nhất để áp dụng filter là nhập thông tin vào ô Filter, sau đó
nhấn Apply hoặc nhấn Enter. Ví dụ, nếu gõ dns thì chúng ta sẽ chỉ nhìn thấy các
gói dữ liệu DNS. Ngay khi nhập từ khóa, Wireshark sẽ tự động hoàn chỉnh chuỗi
thông tin này dựa vào gợi ý tương ứng. Hoặc nhấn menu Analyze -> Display
Filters để tạo filter mới.

Cú pháp của Wireshark Display Filter phần lớn tuân theo cú pháp:
protocol.feature.subfeature COMPARISION_OPERATOR value
LOGICAL_OPERATOR protocol.feature.subfeature
COMPARISION_OPERATOR value

Ví dụ:

Expression Ý nghĩa

tcp.port eq 25 or Lọc gói tin TCP liên quan port 25 hoặc sử dụng giao thức ICMP
Expression Ý nghĩa

icmp

ip.src==192.168.
0.0/16 and
Lọc traffic trao đổi trong mạng LAN của subnet 192.168.0.0/16
ip.dst==192.168.
0.0/16

tcp.window_size
== 0 && TCP buffer full và source kết nối báo hiệu cho Destination ngừng gửi dữ
tcp.flags.reset != liệu
1

udp contains UDP packet chứa 3 bytes 81:60:03 ở vị trí bất kỳ trong header hoặc
81:60:03 payload

http.request.uri
HTTP request có URL tận cùng bằng chuỗi “gl=se”
matches “gl=se$”

ip.addr ==
192.168.0.1
hoặc:
ip.src == Wireshark filter by ip: Lọc tất cả traffic liên quan đến IP 192.168.0.1
192.168.0.1 or
ip.dst ==
192.168.0.1

! ( ip.addr ==
192.168.0.1 )
hoặc:
! (ip.src == Lọc tất cả traffic KHÔNG liên quan đến IP 192.168.0.1
192.168.0.1 or
ip.dst ==
192.168.0.1)
Expression Ý nghĩa

tcp.flags.syn == 1 Các gói tin TCP có cờ SYN được bật

tcp.flags.syn == 1
&& tcp.flags.ack Các gói tin TCP có cờ SYN/ACK được bật
== 1

http.host ==
HTTP request có Host header là “quantrilinux.vn”
“quantrilinux.vn”

http.response.cod
Các HTTP request có response status code là 404
e == 404

smtp || imap || pop Traffic liên quan đến email (SMTP, IMAP, POP)

! tcp.port == 22 Loại bỏ traffic SSH

! arp Loại bỏ traffic ARP

ip.version == 4 Wireshark IPv4 filter: Lọc tất cả các gói tin IP version 4

tcp.srcport == 80 Wireshark port filter: Lọc tất cả gói tin TCP có source port là 80

tcp.port == 80 Lọc tất cả các gói tin có liên quan đến port 80

udp.port == 67 or
Traffic DHCP
udp.port == 68

dns Filter traffic liên quan DNS


Expression Ý nghĩa

http Wireshark http filter

https Wireshark https filter

ip.src ==
Wireshark filter source ip
192.168.0.1

ip.dst ==
Wireshark filter destination ip
192.168.0.1

2. Inspecting Packets

Giao diện chính của Wireshark được chia thành 3 phần:

1. Packet List: Chứa danh sách toàn bộ packet của file capture hiện tại. Nó
thể hiện số thứ tự của gói tin, thời gian mà mà gói tin được bắt, source và
destination IP, protocol của packet, chiều dài gói tin và các thông tin tổng quan
khác.

Ở khung cửa sổ Paket List sẽ cung cấp cho chúng ta các thông tin như:

- No: Số thứ tự của gói tin trong file capture hiện tại.

- Time: Thời gian tương đối mà gói tin này được bắt, tính từ lúc bắt đầu quá
trình bắt gói tin.

- Source: địa chỉ source IP của kết nối.

- Destination: địa chỉ destination IP của kết nối.


- Length: chiều dài của gói tin. Protocol: giao thức của gói tin Info: các
thông tin tổng quan liên quan đến gói tin. Ở khung cửa sổ của Packet Bytes thể
hiện gói tin ở dạng Hex. Khi chúng ta click chọn 1 trường nào đó ở phần Packet
Details, những bytes liên quan đến

2. Packet Details: Khi bạn chọn một gói tin ở phần Packet List, thông tin chi
tiết của gói tin sẽ được thể hiện ở phần Packet Detail. Các thông tin chi tiết có thể
được collapsed hoặc expanded bằng cách click vào mũi tên hình tam giác ở đầu
dòng.

Ở khung cửa sổ của Packet Details sẽ cho ta thông tin chi tiết từng Layer của
packet như:

- Frame: Interface

- Ethernet: Destination, Source, Mac Address

- Internet: Source IP, Destination IP, TTL, Protocol, Flags, Checksum,


Identification, Total Length…

- TCP/UDP/ICMP: Source Port, Destination Port, Sequence Number, ACK


Number, Flags, TCP Options…

- Application Layer: HTTP, DNS, SMTP…

Ta có thể click vào hình mũi tên ở đầu mỗi dòng để thể hiện thêm thông tin
chi tiết.

3. Packet Bytes: Thể hiện packet ở định dạng raw dưới dạng hex hoặc
binary. Thể hiện cách mà packet được truyền trên đường truyền.

Ở khung cửa sổ của Packet Bytes thể hiện gói tin ở dạng Hex. Khi chúng ta
click chọn 1 trường nào đó ở phần Packet Details, những bytes liên quan đến phần
đó sẽ được tô đậm ở phần Packet Bytes tương ứng.
Đối với từng gói thuộc giao thức cụ thể, nhấn chuột phải vào từng package
và chọn Follow <protocol_name> Stream để theo dõi conversation giữa server và
client.

Để tìm kiếm gói tin, chúng ta có thể sử dụng thanh công cụ “Find Packet”
bằng cách bấm phím Ctrl + F, một hộp thoại mới sẽ xuất hiện nằm giữa thanh
Filter và Packet List.
Có thể tìm kiếm packet dựa vào:

- Display Filter: nhập vào một biểu thức filter (expression-based filter),
Wireshark sẽ tìm kiếm các gói tin khớp với biểu thức này.

Ví dụ: tcp.src port==80 hoặc ip.src==192.168.1.1

- Hex value: Tìm kiếm dựa trên giá trị Hex.

Ví dụ: 010108ffff

- String: tìm kiếm dựa trên chuỗi dữ liệu.

Ví dụ: youtube.com

- Regular Expression: Tìm kiếm dựa trên biểu thức Regex.

Ví dụ: GET .* HTTP

Lưu ý: Sử dụng Ctrl + N để đi đến kết quả tiếp theo, Ctrl + B để lùi lại kết
quả trước đó.

3. Sniffing
Ngoài ra, có thể thực hiện việc sniffing thông tin đăng nhập hoặc bắt gói tin
chứa mật khẩu bằng cách sử dụng công cụ Wireshark, và xem tổng quan về công
cụ Wireshark trong mặt bảo mật mạng. Bắt gói tin mật khẩu Wireshark không chỉ
có thể bắt gói tin chứa mật khẩu mà còn bất kỳ loại thông tin nào được truyền qua
mạng: tên người dùng, địa chỉ email, thông tin cá nhân, v.v. Miễn là chúng ta có
thể bắt gói tin mạng, Wireshark có thể sniff ghi lại mật khẩu. Trong quá trình
sniffing, chúng ta có thể bắt gói tin chứa mật khẩu cho các giao thức khác nhau
như HTTP, FTP, Telnet, v.v. Dữ liệu đã ghi lại có thể được sử dụng để khắc phục
các vấn đề mạng, nhưng cũng có thể được sử dụng một cách xấu để truy cập trái
phép vào thông tin nhạy cảm.

Truy cập vào một website và tiến hành đăng nhập. Lưu ý là website không
được xây dựng dưới dạng mã hóa thông tin thì mới có thể tiến hành sniffing.

Ví dụ, truy cập website http://vbsca.ca/login/login.asp và thực hiện đăng


nhập.

Sau khi hoàn thành đăng nhập, thực hiện bắt gói tin để dò mật khẩu trong
Wireshark. Để làm điều đó, chúng ta cần sử dụng filter giúp tìm kiếm thông tin
đăng nhập. Vì vậy, trong thanh bộ lọc hiển thị, chúng ta sử dụng một lệnh để tìm
tất cả các gói tin HTTP đã được bắt.
Sau khi bắt được một số gói tin HTTP, ta chỉ quan tâm đến dữ liệu biểu mẫu
mà người dùng đã gửi đến trang web. Có hai phương thức chính được sử dụng để
gửi dữ liệu biểu mẫu từ các trang web như biểu mẫu đăng nhập đến máy chủ là
GET và POST.

Để biết thông tin đăng nhập, ta áp dụng bộ lọc cho phương thức POST như
dưới đây.
Chọn gói tin chứa dữ liệu biểu mẫu, nhấp mở rộng phần HTML Form URL
Encoded, ta thấy thông tin đăng nhập giống với thông tin mà chúng ta đã nhập trên
trang web.

You might also like