Cách Thức Hoạt Động

Một phần của tài liệu Xây dựng chương trình kiểm soát lưu lượng thông tin trao đổi qua hệ thống mạng (Trang 31 - 36)

2.1 Theo dõi Network Traffic

Trong phạm vi của báo cáo thực tập tốt nghiệp chỉ xét tới môi trường mạng có dây trong WindowXP, hay chính xác hơn là trong phạm vi chuẩn Ethernet.

Ethernet được xây dựng dựa trên khái niệm chia sẻ. Tất cả các máy trong một mạng nội bộ đều được chia sẻ chung một đường dây. Điều đó chỉ ra rằng tất cả các máy trong mạng đều có thể “nhìn thấy” traffic trong đường dây đó.

Do đó, phần cứng Ethernet sẽ có một bộ lọc (“filter”) bỏ qua tất cả nhưng traffic không phải dành cho nó (bằng cách bỏ qua tất cả các frame có địa chỉ MAC không phù hợp). Để khắc phục, sniffer phải có cơ chế tắt “filter” ở trên, đưa phần cứng Ethernet vào chế độ hỗn tạp (“promiscuous mode)”

2.2 Phân tích Network Traffic

Khi dữ liệu được gửi trên đường dây, nó sẽ được chia nhỏ, đóng gói thành nhiều packet và được gửi đi một cách riêng biệt. Sniffer là chương trình sẽ chặn bắt các packet này.

Sau khi đã tiến hành chặn bắt thành công các gói tin, chúng ta sẽ có được các packet mang thông tin. Tuy nhiên, để lấy được thông tin cần thiết phục vụ cho các mục đích khác nhau, chúng ta phải thực hiện việc phân tích các gói tin đó (Packet Analysis). Các giao thức có thể sniffing như: Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, hoặc ICMPv4, telnet, rlogin, http, SMNP, NNTP, POP, FTP, IMAP...

Ví dụ về phân tích một gói tin:

Dưới đây là 512 byte đầu tiên dữ liệu của một gói tin Ethernet dưới dạng Hex khi ta sử dụng trình duyệt để duyệt trang web

http://web.archive.org/web/20050221103207/http://www.robertgraham.com/pubs/snif fing-faq.html 000 00 00 BA 5E BA 11 00 A0 C9 B0 5E BD 08 00 45 00 ...^...^...E. 010 05 DC 1D E4 40 00 7F 06 C2 6D 0A 00 00 02 0A 00 ....@....m... 020 01 C9 00 50 07 75 05 D0 00 C0 04 AE 7D F5 50 10 ...P.u...}.P. 030 70 79 8F 27 00 00 48 54 54 50 2F 31 2E 31 20 32 py.'..HTTP/1.1.2 040 30 30 20 4F 4B 0D 0A 56 69 61 3A 20 31 2E 30 20 00.OK..Via:.1.0. 050 53 54 52 49 44 45 52 0D 0A 50 72 6F 78 79 2D 43 STRIDER..Proxy-C 060 6F 6E 6E 65 63 74 69 6F 6E 3A 20 4B 65 65 70 2D onnection:.Keep- 070 41 6C 69 76 65 0D 0A 43 6F 6E 74 65 6E 74 2D 4C Alive..Content-L 080 65 6E 67 74 68 3A 20 32 39 36 37 34 0D 0A 43 6F ength:.29674..Co 090 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 ntent-Type:.text 0A0 2F 68 74 6D 6C 0D 0A 53 65 72 76 65 72 3A 20 4D /html..Server:.M 0B0 69 63 72 6F 73 6F 66 74 2D 49 49 53 2F 34 2E 30 icrosoft-IIS/4.0 0C0 0D 0A 44 61 74 65 3A 20 53 75 6E 2C 20 32 35 20 ..Date:.Sun,.25. 0D0 4A 75 6C 20 31 39 39 39 20 32 31 3A 34 35 3A 35 Jul.1999.21:45:5 0E0 31 20 47 4D 54 0D 0A 41 63 63 65 70 74 2D 52 61 1.GMT..Accept-Ra 0F0 6E 67 65 73 3A 20 62 79 74 65 73 0D 0A 4C 61 73 nges:.bytes..Las 100 74 2D 4D 6F 64 69 66 69 65 64 3A 20 4D 6F 6E 2C t-Modified:.Mon, 110 20 31 39 20 4A 75 6C 20 31 39 39 39 20 30 37 3A .19.Jul.1999.07: 120 33 39 3A 32 36 20 47 4D 54 0D 0A 45 54 61 67 3A 39:26.GMT..ETag: 130 20 22 30 38 62 37 38 64 33 62 39 64 31 62 65 31 ."08b78d3b9d1be1 140 3A 61 34 61 22 0D 0A 0D 0A 3C 74 69 74 6C 65 3E :a4a"....<title> 150 53 6E 69 66 66 69 6E 67 20 28 6E 65 74 77 6F 72 Sniffing.(networ 160 6B 20 77 69 72 65 74 61 70 2C 20 73 6E 69 66 66 k.wiretap,.sniff 170 65 72 29 20 46 41 51 3C 2F 74 69 74 6C 65 3E 0D er).FAQ</title>. 180 0A 0D 0A 3C 68 31 3E 53 6E 69 66 66 69 6E 67 20 ...<h1>Sniffing. 190 28 6E 65 74 77 6F 72 6B 20 77 69 72 65 74 61 70 (network.wiretap 1A0 2C 20 73 6E 69 66 66 65 72 29 20 46 41 51 3C 2F ,.sniffer).FAQ</ 1B0 68 31 3E 0D 0A 0D 0A 54 68 69 73 20 64 6F 63 75 h1>....This.docu 1C0 6D 65 6E 74 20 61 6E 73 77 65 72 73 20 71 75 65 ment.answers.que 1D0 73 74 69 6F 6E 73 20 61 62 6F 75 74 20 74 61 70 stions.about.tap 1E0 70 69 6E 67 20 69 6E 74 6F 20 0D 0A 63 6F 6D 70 ping.into...comp 1F0 75 74 65 72 20 6E 65 74 77 6F 72 6B 73 20 61 6E uter.networks.an

Ta nhận thấy trong packet trên chứa 14-byte Ethernet header, 20-byte IP header, 20-byte TCP header, HTTP header có dấu hiệu kết thúc là (0D 0A 0D 0A) và cuối cùng là phần dữ liệu. Dữ liệu thu được như sau:

Ethernet header: 00 00 BA 5E BA 11 00 A0 C9 B0 5E BD 08 00 IP header: 45 0005 DC 1D E4 40 00 7F 06 C2 6D 0A 00 00 020A 0001 C9 TCP header: 00 50 07 75 05 D0 00 C0 04 AE 7D F5 50 1070 79 8F 27 00 00 HTTP header: 48 54 54 50 2F 31 2E 31 20 32... . ... 3A 61 34 61 22 0D 0A 0D 0A

Một “Protocol Analyzer” sẽ nhận vào những dữ liệu ở trên và phân tích chúng, trích xuất thông tin và chuyển thành các trường thông tin có thể dễ dàng đọc bởi con người, ví dụ đối với packet ở trên sau khi thực hiện phân tích thông tin ta sẽ có:

ETHER: Destination address : 0000BA5EBA11 ETHER: Source address : 00A0C9B05EBD ETHER: Frame Length : 1514 (0x05EA) ETHER: Ethernet Type : 0x0800 (IP)

IP: Version = 4 (0x4) IP: Header Length = 20 (0x14) IP: Service Type = 0 (0x0) IP: Precedence = Routine IP: ...0.... = Normal Delay IP: ....0... = Normal Throughput IP: ...0.. = Normal Reliability IP: Total Length = 1500 (0x5DC) IP: Identification = 7652 (0x1DE4) IP: Flags Summary = 2 (0x2) IP: ...0 = Last fragment in datagram IP: ...1. = Cannot fragment datagram IP: Fragment Offset = 0 (0x0) bytes IP: Time to Live = 127 (0x7F) IP: Protocol = TCP - Transmission Control IP: Checksum = 0xC26D IP: Source Address = 10.0.0.2 IP: Destination Address = 10.0.1.201

TCP: Source Port = Hypertext Transfer Protocol TCP: Destination Port = 0x0775

TCP: Sequence Number = 97517760 (0x5D000C0) TCP: Acknowledgement Number = 78544373 (0x4AE7DF5) TCP: Data Offset = 20 (0x14)

TCP: Reserved = 0 (0x0000) TCP: Flags = 0x10 : .A.... TCP: ..0... = No urgent data

TCP: ...1.... = Acknowledgement field significant TCP: ....0... = No Push function TCP: ...0.. = No Reset

TCP: ...0. = No Synchronize TCP: ...0 = No Fin TCP: Window = 28793 (0x7079) TCP: Checksum = 0x8F27 TCP: Urgent Pointer = 0 (0x0)

HTTP: Response (to client using port 1909) HTTP: Protocol Version = HTTP/1.1 HTTP: Status Code = OK HTTP: Reason = OK

2.3 Các thành phần của một chương trình sniffer

Hardware

Phần cứng thỏa mãn các tiêu chuẩn của network adapter. Ngoài ra có thể có các tính năng đặc biệt bổ sung để kiểm tra lỗi CRC, lỗi điện thế, lỗi cáp...

Chú ý: Để có thể chặn bắt các gói tin vào/ra một mạng gián tiếp từ một nút mạng thì card mạng của nút mạng đó phải hỗ trợ chế độ đa hỗn tạp (promiscuous mode). Hầu hết các card mạng hiện nay đều hỗ trợ chế độ này. Tuy nhiên, các mạng hiện nay đang dần chuyển sang sử dụng switch thay vì broadcast gói tin như hub, vậy nên để chặn bắt gói tin trong một mạng không còn đơn giản như trước đây nữa.

Capture driver

Là phần quan trọng nhất. Nó có nhiệm vụ bắt lấy network traffic trên đường dây, lưu trữ dữ liệu vào buffer và lọc lấy thông tin cần thiết.

Buffer

Dữ liệu sau khi được lấy về sẽ được lưu trữ tạm thời tại buffer. Thường có 2 phương pháp sử dụng buffer: ghi vào cho tới khi buffer đầy, hoặc ghi theo phương pháp vòng tròn khi mà dữ liệu mới nhất sẽ thay thế dữ liệu cũ nhất.

Real-time analysis

Phân tích traffic về protocol, kiểm tra lỗi khi capture packet. Decode (adsbygoogle = window.adsbygoogle || []).push({});

Giải mã và hiển thị nội dung của network traffic dưới dạng phù hợp tùy thuộc vào yêu cầu.

Packet editting/transmission

Một vài chương trình cho phép chúng ta tự tạo cho mình những packet và đưa chúng lên mạng.

2.4 Phòng chống sniffer

Trước tiên, chắc chắn rằng không một máy riêng biệt nào có thể lắng nghe hay chặn bắt toàn bộ mạng Internet. Thứ hai, để có thể lắng nghe một liên kết, cần phải truy nhập được vào dây nối vật lý của liên kết đó (hay có thể tham gia vào giữa đường truyền vật lý của các gói tin). Vậy nên trước hết để phòng chống sniffer là ngăn chặn không để sniffer được cài đặt hay chạy trên bất kì máy nào trong mạng cũng như kiểm tra cẩn thận dây nối trong mạng (đối với mạng có dây). Ngoài ra để phòng chống sniffer ta cần:

2.4.1 Phát hiện sniffer trong mạng

Một số phương thức đơn giản nhất để phát hiện chương trình sniffer:

• Phương thức Ping: gửi một gói tin ping tới địa chỉ IP mà không phải là Ethernet Adapter, gồm những bước như sau:

o Giả sử máy nghi ngờ có địa chỉ IP 10.0.0.1 và MAC là 00-40-05-A4- 79-32

o Gửi một gói tin “ICMP Echo Request” (ping) có IP của máy nghi ngờ và địa chỉ MAC thay đổi (ví dụ 00-40-05-A4-79-31).

o Nếu như ta nhận được phản hồi tức là máy nghi ngờ đã bỏ chức năng Ethernet Filter, do đó nó đang lắng nghe trên đường dây.

• Phương thức ARP

Tương tự như phương thức Ping nhưng sử dụng gói tin ARP thay cho ICMP

• Phương thức DNS

Rất nhiều chương trình sniffer sẽ tự động chuyển đổi địa chỉ IP thông qua DNS. Ta có thể phát hiện promiscuous mode của một máy dựa vào DNS traf- fic mà nó tạo ra (yêu cầu cần phải thiết đặt máy nghi ngờ request tại DNS server mà ta có thể kiểm soát, sau đó dựa vào traffic để kiểm tra).

2.4.2 Ngăn chặn sniffer

o SSL – Sercure Socket Layer o SSH – Sercure Shell

o VPNs – Virtual Private Networks

• Cài đặt mạng để sniffing khó khăn hơn

o Kiểm tra đường dây và các máy trong mạng. o Sử dụng Switch thay vì Hub.

• Sử dụng Adapter không hỗ trợ sniffing

Một vài loại Adapter cũ không hỗ trợ promiscuous mode.

2.4.3 Một số chương trình phát hiện sniffer

• AntiSniff

http://www.l0pht.com/antisniff/

• CPM (Check Promiscuous Mode)

ftp://coast.cs.purdue.edu/pub/tools/unix/cpm/ • Dành cho UNIX. o neped http://www.apostols.org/projectz/neped/ o sentinel http://www.packetfactory.net/Projects/sentinel/ o cpm (Check Promiscuous Mode)

ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/cpm/

Một phần của tài liệu Xây dựng chương trình kiểm soát lưu lượng thông tin trao đổi qua hệ thống mạng (Trang 31 - 36)