Hướng dẫn bắt các traffic qua mạng (SMTP, HTTP, DHCP) bằng Wireshark

4
7191
  • Wireshark là phần mềm chuyên dụng dùng để bắt và nghiên cứu các gói tin được di chuyển trong mạng. Nhờ những thông tin lấy ra từ các gói tin đó, chúng ta có thể xác định rõ thông tin mà người dùng gửi nhận trong mạng, các thông số về mạng cụ thể như địa chỉ IP, địa chỉ MAC của người nhận lẫn người gửi, hay là giao thức mạng mà họ đã sử dụng từ đó đoán ra được họ đã thực hiện hành động gì trong mạng. Thậm chí còn có thể bắt được những tệp đính kèm qua giao thức mail SMTP, các tệp được gửi qua giao thức FTP, và vân vân.

Giả sử ta có mô hình mạng đơn giản như sau:

Trong đó: Server trên chứa các dịch vụ DHCP Server, FTP Server, Mail Server (SMTP) và HTTP Server (Web) cùng cấu hình domain chuẩn cơ bản. Client đã tham gia vào domain và được cấp đầy đủ các dịch vụ và tài khoản cần thiết.

Ta cần đảm bảo máy dùng để capture đang kết nối vào cùng 1 mạng với hệ thống đang xét. Để làm được điều này thì ta cần setup lớp mạng của máy capture vào cùng lớp mạng với hệ thống DHCP đang xét là được.

Mở Wireshark và tiến hành bắt gói:

Tại giao diện đầu tiên của Wireshark, chọn card mạng mà bạn muốn bắt traffic.

Giao diện chính của Wireshark sẽ mở ra, như hình dưới.

  • Các bạn có thể thấy lưu lượng dữ liệu qua mạng liên tục được Wireshark bắt, và các gói tin được hiển thị chi tiết qua các cột.
  • Khung trên cùng hiển thị các gói tin Wireshark bắt được, với các thông số nhận dạng cơ bản – từ trái qua phải – như thời gian bắt gói, nguồn bắt (địa chỉ MAC của máy gửi gói), đích đến (địa chỉ MAC của máy nhận), giao thức của gói tin, độ dài gói tin, thông tin mà gói tin mang theo.
  • Bên dưới hiển thị chi tiết các gói tin theo 2 dạng:
    • Thông tin bằng plaintext: các thông số như số khung, số bytes của gói, nguồn, đích, giao thức của gói, cổng vào, cổng ra, vân vân…
    • Thông tin dưới dạng hexa: đây là biểu diễn của gói tin dưới dạng số thập nhị phân, miêu tả các header được gắn vào gói tin khi nó đi qua các tầng khác nhau của mô hình TCP/IP
  • Display Filter: là bộ lọc hiển thị cho Wireshark, giúp cho bạn xem được những thông tin gì cần xem, nhằm thuận tiện để các bạn có thể thấy được quá trình cũng như mọi gói tin cụ thể qua từng bước trong các quá trình giao dịch qua mạng.

Gói tin DHCP:

Display Filter dùng để capture gói DHCP là bootp.

Hình trên biểu diễn quá trình nhả IP và cấp lại IP của DHCP server đối với client.

  • Đầu tiên, client (192.168.1.4) sẽ gửi 1 gói DHCP Release cho server (192.168.1.10) nhằm yêu cầu nhả địa chỉ IP đang cấp của máy ra khỏi pool đang sử dụng
  • Sau đó, 1 gói DHCP Discover sẽ được client (0.0.0.0, do là địa chỉ IP vừa bị trả) broadcast lên toàn mạng (255.255.255.255) để tìm kiếm DHCP Server.
  • DHCP Server cũng sẽ gửi 1 gói DHCP Offer ra toàn mạng để đáp lại yêu cầu tìm kiếm.
  • Client phát hiện ra server, client gửi 1 gói DHCP Request nhằm yêu cầu server cấp địa chỉ IP cho mình.
  • Server nhận được gói Request từ phía client, và xác nhận bằng cách gửi trả gói DHCP ACK, kèm theo địa chỉ IP mà server lấy từ trong pool chưa cấp phát và cấp cho client.
  • Client gửi broadcast một gói DHCP Inform nhằm yêu cầu thông tin chính xác của DHCP server, và sau đó server cũng gửi trả lại 1 gói DHCP ACK xác nhận kèm theo địa chỉ của server để client có thể nhận ra server.

Click vào 1 gói DHCP để xem thông tin chi tiết, ở đây ví dụ gói DHCP Discover. Chú ý các trường sau:

  • Message Type: Boot Request (DHCP)
  • Bootp flags: unicast (vì gói tin này bất cứ máy nào cũng có thể nhận được)
  • Client IP Address: 0.0.0.0 (máy chưa được cấp IP từ DHCP)
  • Next Server IP Address: 0.0.0.0 (vì client chưa nhận ra server)
  • Client MAC Address: cơ sở để cho server có thể nhận ra client và cấp phát IP

  • DHCP Message Type: Discover
  • Client Identifier: bên dưới sẽ ghi địa chỉ MAC của thiết bị đang gửi gói Discover
  • Requested IP Address: địa chỉ mà client muốn được cấp phát, ở đây là 192.168.1.14
  • Host Name: tên máy client
  • Parameter Request List: client cần những thông số này để có thể kết nối với server, như Subnet Mask, Domain Name, Static Route, vân vân.

Capture gói tin SMTP:

SMTP là giao thức gửi nhận mail phổ biến, và ta cũng có thể dùng Wireshark để chặn và bắt gói tin từ giao thức này. Từ những gói tin bắt được ta có thể biết được thông tin về người gửi mail, người nhận mail, nội dung mail, thậm chí là ta còn có thể biết tệp đính kèm là gì, nội dung thế nào và những thông tin cơ bản về mail server (như địa chỉ mail server chẳng hạn).

Display Filter dành cho việc capture gói SMTP là smtp.

Hình trên diễn tả quá trình gửi nhận mail qua giao thức SMTP:

  • Các gói tin đầu tiên diễn tả quá trình làm các thủ tục xác minh giữa client (192.168.1.4) với mail server (192.168.1.10). Ở đây tôi sử dụng mail server MDaemon bản 10, các mail server khác hoặc phiên bản MDaemon khác sẽ có định danh khác nhau
  • Client gửi gói EHLO (chào) đến server, và server đáp lại gói EHLO bằng success code (250) (trường hợp thất bại thì sẽ gửi failure code – 550)
  • Server tiến hành xác minh client, xác minh thông tin login của client, password của client đã được mã hoá bằng thuật toán băm CRAM-MD5, xác định gói dịch vụ là 8BITMIME (8-bit extension), success code 250
  • Server xác minh thành công, gửi trả Authentication success code (235)
  • Client bắt đầu gửi mail sang cho server, nội dung mail được gửi theo chuẩn MIME (Multipurpose Internet Mail Extensions) và cũng như phần xác minh thông tin login, server cũng tiến hành xác minh thông tin người nhận và người gửi mail và gửi trả success code 250 nếu như thành công.
  • Sau khi xác minh thông tin người nhận người gửi, 1 gói tin với giao thức IMF (Internet Message Format) được gửi từ client sang cho server, và đây là nội dung thực sự của mail, với tên người gửi, người nhận, tiêu đề (subject), ngày tháng gửi nhận (date) và nội dung mail, kèm theo các media đính kèm (chuẩn MIME).
  • Server thông báo nhận được mail, và đã save xuống mail server.
  • Server gửi thông điệp QUIT để kết thúc cuộc hội thoại, sau đó là thông tin chào tạm biệt.

Các trường đáng chú ý chỉ bao gồm 1 số trường theo định dạng MIME, nằm tại các gói tin xác minh nội dung mail, người gửi, người nhận. Chú ý thông điệp đã được mã hoá theo CRAM-MD5.

Các bạn thậm chí còn có thể xem cả file attachment của email. Click phải chuột vào 1 gói tin SMTP bất kì, chọn Follow => TCP Stream:

Phần được tô đậm ở hình trên chính là nội dung file attachment đã được mã hoá bằng thuật toán Base64. Nếu các bạn có thể giải mã, thì các bạn sẽ có được nội dung file đính kèm theo email.

Capture các gói tin giao thức HTTP (Web):

Display Filter để bắt gói HTTP là http.

Giao thức HTTP thực ra vô cùng đơn giản. Có thể thấy rõ các gói tin của HTTP như 2 hình trên.

  • Hình 1, ta thấy yêu cầu GET từ máy client (192.168.1.4) gửi đến server (192.168.1.10) yêu cầu truy vấn web server, theo giao thức HTTP 1.1.
  • Tuy nhiên với hình 1, thì yêu cầu thất bại, lý do ta có thể thấy ở 1 trường trong Hypertext Transfer Protocol, nơi gửi trả trang kết quả báo lỗi 404 Not Found, trong đó chứa thông diệp rằng tài nguyên mà client yêu cầu (trang web) không được tìm thấy. Sẽ có những thông báo lỗi với mã khác nhau tuỳ trường hợp.
  • Hình 2, ta thấy 1 truy vấn web thành công từ máy client. Máy client gửi lên server (ở đây là IP server của Google) yêu cầu GET HTTP 1.1 nhằm truy vấn trang web, và server báo code 302 Found về cho client.
  • Các gói tin bên dưới Hình 2 là DNS Server của ISP đang giao tiếp với phía Server chứa Web, để tiến hành yêu cầu xác minh thông qua các certificate. Và khi xác minh thành công (mã 200 OK) thì trang web được phía server gửi qua ISP trả về trình duyệt của máy client.
  • Sau đó phía client và server liên tục trao đổi các gói tin với nhau, nhằm đảm bảo nội dung web luôn được tươi mới (fresh).

4 COMMENTS

This site uses Akismet to reduce spam. Learn how your comment data is processed.