• If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Báo cáo nghiên cứu lab The Network: Raw Sockets and Sniffing

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Báo cáo nghiên cứu lab The Network: Raw Sockets and Sniffing

    Chương 1 Tổng quan về Raw Sockets and Sniffing

    Tổng quan:
    Raw Sockets là một tính năng trong mạng máy tính cho phép các ứng dụng truy cập vào mức gói tin mạng thấp nhất. Thông thường, khi ứng dụng truyền dữ liệu qua mạng, nó sẽ sử dụng các giao thức cao cấp như TCP (Transmission Control Protocol) hoặc UDP (User Datagram Protocol) thông qua các API (Application Programming Interface) như socket API.

    Tuy nhiên, với Raw Sockets, ứng dụng có quyền truy cập trực tiếp vào các gói tin mạng trên mức IP (Internet Protocol). Điều này cho phép ứng dụng kiểm soát hoàn toàn nội dung và cấu trúc của gói tin, có thể gửi và nhận gói tin mà không bị ràng buộc bởi các giao thức cao cấp. Việc sử dụng Raw Sockets thường yêu cầu đặc quyền quản trị (root/administrator privileges) do tính mạnh mẽ và tiềm ẩn nguy cơ khi truy cập vào lớp thấp nhất của mạng.

    Sniffing (Bắt gói tin): Sniffing là quá trình nghe hoặc theo dõi lưu lượng mạng trên một hoặc nhiều giao diện mạng của hệ thống để kiểm tra và phân tích thông tin trong các gói tin mạng. Thông thường, các công cụ bắt gói tin như Wireshark hay tcpdump được sử dụng để thực hiện việc này. Khi một ứng dụng hoặc công cụ sniffer chạy, nó sẽ nghe (capture) các gói tin mạng qua giao diện mạng mà nó được gắn kết và hiển thị các thông tin trong các gói tin đó, bao gồm địa chỉ nguồn, địa chỉ đích, dữ liệu payload, thông tin về giao thức và các thông tin khác.

    Sniffing có thể được sử dụng cho mục đích hợp pháp như phân tích và gỡ lỗi mạng, nhưng cũng có thể được sử dụng để gian lận, gián điệp hoặc tấn công mạng nếu không được thực hiện đúng cách và không có sự đồng ý của chủ sở hữu mạng. Việc sử dụng công cụ sniffing có thể liên quan đến việc sử dụng Raw Sockets để truy cập vào gói tin mạng trực tiếp.

    Chương 2 Packet Sniffing on Windows and Linux

    Tóm tắt chương

    Ở chương này, chúng ta sẽ tìm hiểu cơ sở lý thuyết về Packet Sniffing và các cách triển khai trên hệ thống.

    a) Cơ sở lý thuyết

    Khái niệm:
    Packet Sniffing là quá trình thu thập và ghi nhật ký các gói thông tin được gửi giữa các nút mạng. Những gói dữ liệu này sau đó có thể được thu thập, lưu trữ và phân tích để hiểu rõ hơn chính xác dữ liệu nào đang được gửi qua một mạng nhất định. Nó còn là một công cụ có giá trị để theo dõi hiệu suất của mạng và chẩn đoán sự cố, nhưng nó cũng hữu ích trong việc quan sát các rủi ro bảo mật tiềm ẩn khi dữ liệu nhạy cảm có thể được truyền theo cách không mong muốn.

    b) Các trường hợp sử dụng phổ biến cho Packet Sniffing
    • Kiểm tra mã hóa SSL hoặc HTTPS bằng cách theo dõi phản hồi nhận được.
    • Kiểm tra lưu lượng truy cập cho tên người dùng, mật khẩu hoặc dữ liệu nhạy cảm khác ở dạng văn bản rõ ràng để có thể thêm mã hóa phù hợp trước khi bất kỳ bên thứ ba (bất chính) nào nhìn thấy.
    • Phân tích xu hướng tiêu thụ trên mạng để xác định tắc nghẽn/lỗi và hiểu rõ hơn ứng dụng nào được sử dụng nhiều nhất/ít nhất.
    • Xác định trạng thái mạng của thiết bị bằng cách quan sát phản hồi của chúng đối với yêu cầu mạng.
    • Phát hiện các gói trên mạng hoặc cổng không phù hợp (gợi ý tồn tại cấu hình sai).
    • Đảm bảo định tuyến chính xác/hiệu quả nhất đang diễn ra cho các yêu cầu DNS, v.v.
    c) Packet Sniffing hoạt động như thế nào ?

    Mạng là tập hợp các nút, chẳng hạn như máy tính cá nhân, máy chủ và phần cứng mạng được kết nối. Kết nối mạng cho phép truyền dữ liệu giữa các thiết bị này. Các kết nối có thể là vật lý bằng cáp hoặc không dây với tín hiệu vô tuyến. Mạng cũng có thể là sự kết hợp của cả hai loại. Khi các nút gửi dữ liệu qua mạng, mỗi lần truyền được chia thành các phần nhỏ hơn được gọi là gói. Độ dài và hình dạng được xác định cho phép các gói dữ liệu được kiểm tra tính đầy đủ và khả năng sử dụng. Bởi vì cơ sở hạ tầng của mạng là chung cho nhiều nút, các gói dành cho các nút khác nhau sẽ đi qua nhiều nút khác trên đường đến đích của chúng. Để đảm bảo dữ liệu không bị trộn lẫn, mỗi gói được gán một địa chỉ đại diện cho đích dự định của gói đó.

    Địa chỉ của gói được kiểm tra bởi từng bộ điều hợp mạng và thiết bị được kết nối để xác định nút nào mà gói được dành cho. Trong điều kiện hoạt động bình thường, nếu một nút nhìn thấy một gói không được gửi tới nó, thì nút đó sẽ bỏ qua gói đó và dữ liệu của nó.

    Click image for larger version  Name:	dataurl169488.jpg Views:	0 Size:	42.1 KB ID:	427374


    Có hai loại Packet Sniffing:

    Hardware Packet Sniffing: một bộ phần cứng nghe trộm gói tin được thiết kế để cắm vào mạng và kiểm tra nó. Đặc biệt hữu ích khi cố gắng xem lưu lượng truy cập của một phân đoạn mạng cụ thể. Bằng cách cắm trực tiếp vào mạng vật lý tại vị trí thích hợp, packet sniffing phần cứng có thể đảm bảo rằng không có gói nào bị mất do lọc, định tuyến hoặc các nguyên nhân cố ý hoặc vô ý khác. Trình nghe trộm gói phần cứng lưu trữ các gói đã thu thập hoặc chuyển tiếp chúng tới bộ thu thập ghi lại dữ liệu được trình nghe trộm gói phần cứng thu thập để phân tích thêm.

    Software Packet Sniffing: Ngày nay hầu hết các trình nghe trộm gói tin đều thuộc nhiều loại phần mềm. Mặc dù bất kỳ giao diện mạng nào được gắn vào mạng đều có thể nhận mọi bit lưu lượng mạng đi qua, nhưng hầu hết được định cấu hình để không làm như vậy. Phần mềm nghe trộm gói tin thay đổi cấu hình này để giao diện mạng chuyển tất cả lưu lượng truy cập mạng lên ngăn xếp. Cấu hình này được gọi là chế độ hỗn tạp cho hầu hết các bộ điều hợp mạng. Khi ở chế độ hỗn tạp, chức năng của trình nghe lén gói trở thành vấn đề tách, tập hợp lại và ghi nhật ký tất cả các gói phần mềm đi qua giao diện, bất kể địa chỉ đích của chúng. Phần mềm nghe lén gói phần mềm thu thập tất cả lưu lượng chảy qua giao diện mạng vật lý. Lưu lượng đó sau đó được ghi lại và sử dụng theo các yêu cầu đánh hơi gói của phần mềm.

    d) Triển khai Packet Sniffing

    Việc truy cập trong Windows hơi khác so với trên Linux, nhưng chúng tôi muốn có sự linh hoạt để triển khai packet sniffing.

import socket
import os

# host to listen on
host = "192.168.195.1"

# create a raw socket and bind it to the public interface
if os.name == "nt":
socket_protocol = socket.IPPROTO_IP
else:
socket_protocol = socket.IPPROTO_ICMP
sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)
sniffer.bind((host, 0))

# we want the IP headers included in the capture
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

# if we're using Windows, we need to send an IOCTL
# to set up promiscuous mode
if os.name == "nt":
sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

# read in a single packet
print (sniffer.recvfrom(65565))

# if we're using Windows, turn off promiscuous mode
if os.name == "nt":
sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Sự khác biệt giữa Windows và Linux là Windows sẽ cho phép chúng tôi sniffing tất cả các gói đến bất kể giao thức, trong khi Linux buộc chúng tôi phải chỉ định nếu chúng tôi đang sniffing ICMP. Lưu ý rằng chúng tôi đang sử dụng chế độ hỗn tạp, yêu cầu quyền quản trị trên Windows hoặc root trên Linux. Chế độ hỗn tạp cho phép chúng tôi đánh hơi tất cả các gói mà card mạng nhìn thấy, ngay cả những thứ không dành cho máy chủ cụ thể của bạn. Tiếp theo, chúng tôi đặt tùy chọn raw bao gồm các tiêu đề IP trong các gói đã chụp của chúng tôi. Bước tiếp theo là xác định xem chúng tôi có đang sử dụng Windows hay không và nếu có, chúng tôi sẽ thực hiện bổ sung bước gửi IOCTL tới trình điều khiển cạc mạng để bật chế độ chung. Nếu bạn đang chạy Windows trong một máy ảo, rất có thể bạn sẽ nhận được thông báo rằng hệ điều hành khách đang kích hoạt tính năng lăng nhăng cách thức; bạn, tất nhiên, sẽ cho phép nó. Bây giờ chúng tôi đã sẵn sàng để thực sự thực hiện. Điều khiển đầu vào/đầu ra (IOCTL) là phương tiện để các chương trình không gian người dùng giao tiếp với các thành phần chế độ hạt nhân.

Trong trường hợp này, chúng tôi chỉ đơn giản là in ra toàn bộ bản raw packet không có gói giải mã. Đây chỉ là để kiểm tra để đảm bảo rằng chúng tôi có cốt lõi của mã đánh hơi của chúng tôi đang hoạt động. Sau khi một gói tin được đánh hơi, chúng tôi kiểm tra lại Windows và tắt chế độ hỗn tạp y trước khi thoát script.


Email : vnpro@vnpro.org
---------------------------------------------------------------------------------------------------------------
Trung Tâm Tin Học VnPro
149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
Tel : (08) 35124257 (5 lines)
Fax: (08) 35124314

Home page: http://www.vnpro.vn
Support Forum: http://www.vnpro.org
- Chuyên đào tạo quản trị mạng và hạ tầng Internet
- Phát hành sách chuyên môn
- Tư vấn và tuyển dụng nhân sự IT
- Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

Network channel: http://www.dancisco.com
Blog: http://www.vnpro.org/blog
Working...
X