Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
259,46 KB
Nội dung
TCP/IP analysis TCP/IP là tập hợp chuẩn của những giao thức truyền thông được sử dụng trong internet. Mục đích của chúng ta trong chương này là không cần biết hết toàn diện về bảo mật TCP/IP mà chúng ta lấy nó làm nền móng cho những vấn đề cao hơn sẽ được nói đến trong cuốn sách này, bao gồm operating system fingerprinting và intrusion detection systems . Trong chương này, chúng tôi cũng nói ngắn gọn về cách tấn công và phòng thủ trong TCP/IP, bao gồm cả kiểu tấn công phân đoạn (fragmentation attack) và chuyển đổi kênh (covert channel) đồng thời sẽ khảo sát những vấn đề bảo mật bắt nguồn từ IPv6. 6.1 : Vắn tắt về lịch sử của TCP/IP Internet protocols (IP), được hình thành như một tiêu chuẩn của giao thức truyền thông internet cơ sở. Transmission Control Protocol (TCP) và Internet protocols (IP) là 2 giao thức quan trọng nhất trong bảo mật mạng. Chúng tôi sẽ làm rõ chúng trong chương này. Giao thức này được phát triển vào giữa những năm 1970, khi mà Defense Advanced Research Projects Agency (DARPA) (cơ quan trực thuộc Bộ Quốc phòng Mỹ) thực hiện hàng loạt thí nghiệm để gởi các gói tin đi lại mọi hướng trên mạng. TCP/IP về sau được tích hợp trong Unix, và từ đó nó bắt đầu lớn mạnh, trưởng thành để trở thành một trong những giao thức truyền thông cơ bản trên internet. 6.2 : Đóng gói Một gói tin TCP/IP (TCP/IP packet) đơn giản chỉ là 1 gói dữ liệu. Giống như một gói tin mail, gói tin này có cả địa chỉ nguồn và địa chỉ đích, cũng như thông tin chứa bên trong nó. Hình 6.1 cho chúng ta thấy cấu trúc cơ bản của packet.Chú ý rằng đây chỉ là sự trình bày chung của 1 packet. Trong thực tế, bạn có thể có nhiều trường hợp khác nhau, tất nhiên cũng sẽ có cấu trúc khác nhau, và tuỳ từng trường hợp sẽ có những cách giải quyết tốt hơn. Mỗi một packet đều có 1 mục đích rõ ràng và nó cần được đảm bảo thông tin được chuyển đi 1 cách xác thực, chính xác. Một gói tin bao gồm: Start indicator Mỗi thông báo đều có sự bắt đầu.Khi bạn viết một bức thư hoặc email, bạn có thể bắt đầu với "Hello". Cũng là quy tắc đó, nhưng ở đây là sự di chuyển dữ liệu (data) . Khi những máy tính kết nối với nhau, chúng sẽ gửi 1 luồng thông tin. Một Start indicator sẽ được xác định khi 1 packet mới được bắt đầu. Source address (địa chỉ nguồn) Mọi bức thư đều cần địa chỉ nhận và địa chỉ nguồn cung cấp nó. Không có địa chỉ nguồn, không thể xuất hiện hồi âm. Destination address (địa chỉ đích) Cũng như bạn không nhận 1 bức thư gửi từ hàng xóm của bạn, một máy tính cũng sẽ loại bỏ tất cả các gói tin mà không đúng địa chỉ đích Control (điều khiển) Bộ phận này trong gói tin được sử dụng để gửi những thông báo ngắn gọn để cho máy tính nhận biết được tình trạng của kết nối.Giống như chúng ta sử dụng câu "Hello" (or Hey or ^_^) để bắt đầu một cuộc nói chuyện, máy tính cũng vậy, nó sử dụng control để cho biết bắt đầu 1 phiên liên lạc. Data (dữ liệu) Sự giới hạn duy nhất về dữ liệu là kích cỡ được phép có thể gửi trong 1 gói tin. Mỗi packet có một độ dài và được đặt tên là bit. 1 bit là một phần 8 của byte. Một byte là một kí tự hoặc số. Ví dụ, 00000011 trong hệ nhị phân này tương đương với 3 (hệ thập phân) Error control (điều khiển lỗi) Sử dụng lỗi là một khía cạnh quan trọng trong bất kì một hệ thống tính toán nào. Một chương trình máy tính phải có khả năng giải quyết được những sự cố không bình thường. Dù đó là lỗi của con người hay là sự sai lạc của máy tính thì một chương trình phải biết khi nào thì không đúng. Điều khiển lỗi được cho rằng là quan trọng nhất trong các phần của data packet bởi vì nó xác mình sự toàn vẹn của những phần còn lại trong data packet. Sử dụng checksums và những trình bảo vệ khác. Điều khiển lỗi đảm bảo rằng số dữ liệu đi đến được hình thành từ chính dữ liệu ban đầu. Nếu 1 lỗi được tìm thấy, packet sẽ không được chấp nhận và địa chỉ nguồn sẽ được sử dụng để yêu cầu 1 packet mới. 6.3 : TCP TCP là một giao thức hướng kết nối làm cho các kết nối trở nên đáng tin cậy hơn, hướng kết nối theo dòng trong 1 môi trường IP. TCP chịu trách nhiệm đối với tầng giao vận (Layer 4) trong OSI. TCP đảm bảo sự chuyển nhận các gói tin tới tầng ứng dụng. Đặc tính chuyển nhận tin cậy này được dựa trên 1 số gọi là sequence number mà được tạo ra từ dữ liệu sẽ được chuyển vận và dữ liệu sẽ nhận được. TCP có thể chuyển lại tất cả những dữ liệu nào bị thất lạc. Thêm vào đó sử dụng các giá trị delay để điều chỉnh đường truyền, tốc độ để tránh các hiện tượng tắc ngẽn trên đường truyền. Những host có tốc độ chuyển nhanh sẽ được điều chỉnh chậm lại để giúp các host có tốc độ thấp hơn có thể nhận được các gói tin của mình. TCP sử dụng một số cờ để quản lý các kết nối. 6.3.1 TCP Features (đặc tính của TCP) TCP freatures bao gồm: Stream data transfer (sự vận chuyển dữ liệu) TCP chuyển giao dữ liệu như 1 chuỗi liên tục trong byte và được xác định bởi sequence number, vì vậy sẽ giúp tiết kiệm thời gian. Từ đó, các ứng dụng không phải chia data (dữ liệu) thành những phần nhỏ hơn trước khi gửi đi. TCP gộp những byte vào segment và chuyển chúng cho tầng IP để gửi đi. Các segment về sau là tập hợp của nơi gửi bởi các sequence number của các gói tin. Reliability (sự tin cậy) TCP đảm bảo độ tin cậy bằng 1 số byte sắp xếp cùng với 1 số xác nhận được chuyển đến. Những Byte mà không được xác nhận trong 1 thời gian xác định trước thì sẽ được chuyển . Efficient flow control (điều khiển dữ liệu một cách hiệu quả) TCP cung cấp cho chúng ta khả năng điều khiển dòng dữ liệu một cách hiệu quả : khi thông báo đã nhận được quay trở về nguồn, TCP sẽ báo chỉ số cao nhất mà nó có thể nhận được mà không bị tràn bộ đệm. Full-duplex operation (hoạt động song song) Khả năng hoạt động song song sẽ cho phép TCP gửi hoặc nhận dữ liệu cùng một lúc. 6.3.2 TCP Packet Field Descriptions (mô tả TCP Packet) Tiếp theo chúng ta sẽ mô tả tóm tắt về TCP Packet: Source port and destination port (cổng nguồn và cổng đích) Cho biết các cổng trong quá trình kết thúc nhận và gửi của kết nối thông qua Sequence number. Cho biết số đầu tiên ấn định trong những bytes đầu tiên của dữ liệu trong mỗi phân đoạn Acknowledgment number (số chứng thực) Cung cấp Sequence number của bytes tiếp theo trong quá trình kết thúc tiếp nhận dữ liệu Data offset (khoảng trống dữ liệu) Cho biết số lượng 32 bit trong TCP header Reserved (những khoảng dành riêng) Những khoảng dành riêng này cho các mục đích sử dụng khác trong tương lai. Flags (Cờ) Cung cấp các đánh dấu điều khiển như các bit SYN, ACK, và FIN được sử dụng cho các kết nối tới các thiết bị đầu cuối. Window Cho biết kích cỡ bộ đệm của dữ liệu đầu vào Checksum (kiểm tra) Xác minh sự toàn ven của dữ liệu nhận được Urgent pointer (Con trỏ khẩn cấp) Đánh dấu điểm bắt đầu của dữ liệu . Options (tùy chọn) Bao gồm nhiều tùy chọn TCP Data (dữ liệu) Bao gồm trọng tải thông tin truyền tải 6.4:IP IP là 1 giao thức ở lớp mạng trong mô hình OSI, nó cung cấp những dịch vụ chưa có kết nối để chuyển giao dữ liệu. Bởi vì chưa có kết nối do đó, IP là 1 giao thức ít tin cậy và không đảm bảo cho sự chuyển giao dữ liệu. Trên Internet, IP là 1 giao thức để vận chuyển dữ liệu nhưng thực tế thì việc chuyển giao dữ liệu lại được thực hiện bởi các giao thức trên lớp chuyển vận (transport layer) của mô hình OSI như TCP. IP headers chứa đựng những địa chỉ 32bit được xác định bởi người gửi và người nhận. Sử dụng những địa chỉ để lựa chọn 1 cái có khả năng truyền tải packet xuyên suốt mạng. IP spoofing là một cách tấn công rất hay sử dụng các địa chỉ giả để tấn công vào sự xác thực. Đó là lý do bạn không nên chỉ phụ thuộc vào giá trị của địa chỉ nguồn khi thực hiện việc xác thực. IP Packet có thể cắt nhỏ thành những gói nhỏ hơn để cho phép các packet lớn có thể đi qua một mạng mà chỉ có thể kiểm soát được các packet nhỏ. The Maximum Transmission Unit - giá trị chuyển vận lớn nhất (MTU) định ra chỉ số kích cỡ tối đa của một packet mà mạng đó có thể hỗ trợ (hay chống đỡ). IP sẽ nối lại các đoạn packet đã cắt làm nhiều mảnh trước khi kết thúc quá trình tiếp nhận. Tuy nhiên, như chúng ta thấy sau này, tấn công phân đoạn - fragmentation attacks có thể sử dụng để vượt qua firewalls (tường lửa). 6.4.1 Định dạng 1 gói tin IP 1 IPv4 packet chứa đựng vài kiểu thông tin, được minh họa trong hình 6.3. IPv4 sẽ được thảo luận về sau trong chương này ĐỊnh dạng: Version (phiên bản) Sử dụng 4 bít để chỉ phiên bản IP đang sử dụng (ví dụ này đó là IPv4). IP header length (IHL) (độ lớn của IP header) Định rõ độ lớn của header là 32-bit (4-byte).Cái này giới hạn giá trị IHL của IPv4 tới 60bytes, là 1 trong những tiến bộ của IPv6 Type-of-service (kiểu dịch vụ) Ấn định những cấp độ quan trọng và xử lí các layers Total length (tổng cộng độ lớn) Quy định độ dài của bytes trong IP datagram (gói dữ liệu IP) (bao gồm trọng tải tối đa cuả dữ liệu với IP header) Identification (Xác thực) Là 1 số ID duy nhất biểu diễn thứ tự dữ liệu tại đích. Đây là 1 số 16 bít rất quan trọng trong việc phân đoạn dữ . Flags (Cờ) Có nhiều cờ phân đoạn. Những cờ này xác định liệu gói tin có được phân đoạn hay không, và nếu có thì đâu là phân đoạn cuối cùng và thứ tự của gói tin. Chỉ 2 trong 3 bít của trường này được xác định. Bít đầu tiên được sử dụng để đánh dấu "không phân đoạn". Nếu trường này được bật lên, khi tính toán PMTU (Path MTU) phải đảm bảo tất cả các gói tin chuyển trên đường đủ nhỏ để tránh bị phân đoạn tại các cổ chai MTU. Bít thứ 2 để xác định phân đoạn này có phải là đoạn cuối cùng của dữ liệu hay chưa . Fragment offset (khoảng trống các đoạn) Chỉ rõ thứ tự của các đoạn riêng biệt trong packet sequence Time-to-live (thời gian tồn tại) Xác định tính chất 1 máy tính để giữ lại các packet từ các vòng lặp không ngừng. Các host đặt nó dưới 1 giá trị ngầm định. Khi giá trị giảm xuống còn 1, chương trình vận chuyển tiếp theo sẽ thả gói. Tiến trình này sẽ đối phó với quá trình lặp đi lặp lại của packets Protocol (giao thức) Trường 8 bít này định nghĩa giao thức sẽ nhận được gói tin từ tầng IP. Header checksum (tổng kiểm tra Header) Việc này đảm bảo cho sự toàn vẹn của IP Header. Chú ý rằng việc này không phải là 1 cuộc tổng kiểm tra bằng mã hóa và có thể dễ dàng giả mạo. Source address (địa chỉ nguồn) Định rõ địa chỉ người gửi. Destination address (địa chỉ nhận) Định rõ địa chỉ nhận Options (tùy chọn) Định rõ nhiều tùy chọn Data (dữ liệu) Bao gồm trọng tải tối đa của tài liệu 6.5 UDP Không giống TCP, User Datagram Protocol (UDP) không đảm bảo việc vận chuyển dữ liệu đến đúng mục tiêu (địa chỉ nhận). UDP packets tương tự như IP packets, Nó có thể hữu ích khi bạn không cần quan tâm đến việc các packet mất dữ liệu hay không. UDP nhanh hơn TCP nhưng lại không đảm bảo an toàn bằng TCP. Không may, các gói tin UDP lại quá dễ dàng đối với các kẻ tấn công hơn là các gói tin TCP, bởi vậy mà coi UDP là 1 giao thức không kết nối (i.e., nó không có giai đoạn bắt tay hay các số thứ tự). 6.6 ICMP Internet Control Message Protocol (ICMP) là một giao thức thử và gỡ rối trên một giao thức mạng. Bình thường, các router sử dụng ICMP để xác định liệu 1 host có thể đăng nhập từ xa được hay không. Nếu không có đường dẫn tới remote host, các chương trình vận chuyển sẽ gửi 1 thông điệp ICMP sau khi bắt đầu sự việc. Nếu không có ICMP, thì các packet được thả ra mà không có thông báo trở về, và sẽ trở nên rất khó khăn để giám sát . ICMP cũng được sử dụng để xác định PMTU. Chẳng hạn, nếu router cần cắt nhỏ packet (như mô tả ở bên dưới), nhưng khi cờ "không thể phân mảnh" được bật lên, router sẽ gửi 1 phản hồi ICMP sao cho host có thể phát sinh những gói nhỏ hơn MTU. TCMP cũng được sử dụng để ngăn ngừa sự ùn tắc mạng. Chẳng hạn, khi bộ nhứ đệm của router có quá nhiều packet bởi 1 "cổ chai", những thông báo có thể được phát sinh. Mặc dù hiếm khi nhìn thấy trong thực tế, những thông báo này có thể ra lệnh cho host chạy chậm lại với nhịp độ truyền phát của nó. Ngoài ra, ICMP còn công bố thời gian tạm ngưng. Nếu thời gian tồn tại của 1 gói tin IP giảm xuống còn 0, router sẽ loại bỏ những packet có khả năng phát sinh các ICMP packet công bố sự việc này. Traceroute là một công cụ mà maps network router dùng để gửi những packet nhỏ, với những giá trị TTL và quan sát những thông cáo về ICMP timeout Đáng tiếc, ICMP là một giao thức thường xuyên bị lạm dụng, không bị cản trở, nó có thể cho phép các những kẻ tấn công tạo ra các hướng đi luân phiên tới mục tiêu. Kết quả, một số nhà quản trị mạng tiến hành cấu hình firewall của họ để cho những thông điệp ICMP đi qua. Tuy nhiên, giải pháp này chưa được khuyến cáo sử dụng, với 1 đường dẫn MTU tin cậy trong ICMP messages: không có ICMP cho phép những gói lớn có thể bị thả và vấn đề sẽ rất khó chuẩn đoán. Chú ý rằng nhiều firewalls dự phòng cho bạn đầy đủ để thả các kiểu ICMP riêng biệt, cái mà thường xuyên bị lạm dụng 6.7 ARP Address Resolution Protocol (ARP) cho phép các host chuyển đổi 1 địa chỉ 32bit thành 1 địa chỉ Ethernet 48bit (MAC hoặc "network card" hướng vào.) ARP rải các packet tới tất cả các host tham gia Ethernet. packet chứa đựng địa chỉ IP nơi gửi. Lí tưởng, đa số các host đều đồng ý tất cả các IP. Chỉ có các thiết bị đích với địa chỉ IP đúng trong packet mới cần một hồi đáp. ARP spoofing là một cách tấn công xảy ra khi có sự đồng ý truy cập vào 1 mạng nội bộ. Các máy móc bị tấn công có thể phát giả các sự trả lời ARP để giả một máy móc được tin cậy. 6.8 RARP RARP ngược lại với ARP. RARP cho phép 1 host tìm ra IP của nó. Trong RARP, host sẽ reo rắc physical address và máy chủ RARP sẽ hồi âm với địa [...]... dữ liệu trong hệ hex, Và bên phải chứa đựng dữ liệu hệ ASCII tương đương như dữ liệu hệ hex Đây là cái mà bạn thực sự nhìn được từ packet, Và kiểu dữ liệu nào được truyền đi từng ký tự 1 6.15 Packet Analysis Trong mục này, chúng ta khảo sát 1 packet mẫu lấy được bởi sniffer Sẽ rất quan trọng khi chúng ta có thể hiểu được tại sao thay đổi 1 gói tin ở mức các byte để bạn có thể hiểu làm sao tấn công . TCP/IP analysis TCP/IP là tập hợp chuẩn của những giao thức truyền thông được sử dụng trong internet bạn thực sự nhìn được từ packet, Và kiểu dữ liệu nào được truyền đi từng ký tự 1. 6.15 Packet Analysis Trong mục này, chúng ta khảo sát 1 packet mẫu lấy được bởi sniffer. Sẽ rất quan trọng