Tìm hiểu các kỹ thuật tấn công và xây dựng một chương trình quét cổng

  • Số trang: 34 |
  • Loại file: PDF |
  • Lượt xem: 38 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

1 MỤC LỤC Trang LỜI NHẬN XÉT LỜI CẢM ƠN MỤC LỤC...................................................................................................................1 MỞ DẦU ............................................................................................................................... 3 TÓM TẮT ...................................................................................................................4 Phần 1: CÁC KỸ THUẬT TẤN CÔNG .................................................................5 1. Mạng và các điểm yếu.......................................................................................5 2. Các bước chính thực hiện một cuộc tấn công ...................................................6 2.1. Thu thập thông tin đích ...........................................................................6 2.1.1. In dấu chân ..........................................................................................7 2.1.2. Quét.....................................................................................................7 2.1.3. Điểm danh ...........................................................................................7 2.2. Truy cập lần đầu ......................................................................................8 2.3. Leo thang đặc quyền ...............................................................................8 2.4. Che đậy dấu vết .......................................................................................9 2.5. Đặt cửa sau ..............................................................................................9 3. Một số kỹ thuật tấn công cơ bản .......................................................................9 3.1. Kỹ thuật Sniffer .......................................................................................9 3.1.1. Passive attack ......................................................................................9 3.1.2. Active attack .....................................................................................10 3.2. Tấn công từ chối dịch vụ (Denial of Service attack – DoS) .................11 3.2.1. E-mail bombing ................................................................................11 3.2.2. Smurf.................................................................................................12 3.2.3. Brute-force ........................................................................................12 3.2.4. Ping of Death ....................................................................................12 3.2.5. Teardrop ............................................................................................12 2 3.2.6. SYN flood .........................................................................................13 4. Một số giải pháp ..............................................................................................13 Phần 2: CHƯƠNG TRÌNH MINH HỌA..............................................................15 1. Cấu trúc mạng .................................................................................................15 1.1. IP ...........................................................................................................15 1.2. TCP........................................................................................................17 1.3. UDP .......................................................................................................18 1.4. ICMP .....................................................................................................19 2. Chương trình quét cổng...................................................................................20 2.1. Tạo Socket .............................................................................................20 2.2. Phát hiện các cổng đang mở sử dụng giao thức TCP/IP .......................21 2.3. Phát hiện các cổng đang mở sử dụng giao thức TCP/IP bằng cách gửi gói tin SYN............................................................................................21 2.4. Phát hiện các cổng đang mở sử dụng giao thức TCP/IP bằng cách gửi gói tin ACK ...........................................................................................24 2.5. Phát hiện các cổng đang mở sử dụng giao thức TCP/IP bằng cách gửi gói tin FIN .............................................................................................26 2.6. Phát hiện các cổng đang mở sử dụng giao thức UDP/IP ......................28 2.7. Kiểm tra bằng gói tin ICMP ..................................................................29 2.8. Kiểm tra Hệ điều hành đang được sử dụng...........................................30 KẾT LUẬN ...............................................................................................................34 1. Những vấn đề đạt được ...................................................................................34 2. Hướng phát triển của đề tài .............................................................................34 TÀI LIỆU THAM KHẢO 3 MỞ ĐẦU Ngày nay cùng với sự phát triển của kinh tế, mạng Internet ngày càng phát triển. Nó mở rộng phạm vi liên lạc của con người, các công ty tổ chức ở rất xa nhau vẫn có thể sử dụng Internet để giao dịch với nhau, thông qua Internet họ có thể quản lý khách hàng của mình. Tuy nhiên cùng với sự phát triển của nó, việc tấn công vào các tổ chức, lấy cắp dữ liệu trên Internet ngày càng phổ biến. Các cuộc tấn công này lợi dụng những điểm yếu trên mạng để nhằm thực hiện những mục đích của kẻ tấn công. Để thực hiện một cuộc tấn công, kẻ tấn công phải tìm hiểu những thông tin cụ thể về mạng của tổ chức đó. Tuy nhiên, việc tìm hiểu những thông tin đó cũng giúp ích cho những người quản trị mạng trong việc khắc phục những điểm yếu trên mạng của họ. Một chương trình quét cổng thường được sử dụng trong trường hợp này nhằm tìm ra những kẽ hở của mạng. Việc quét cổng sẽ tìm ra các cổng đang mở, hệ điều hành trên một hệ thống mạng cụ thể nếu như hệ thống đó không được bảo vệ cẩn thận. Trên cơ sở những giao thức mạng đã biết, trong Đề tài “Tìm hiểu các kỹ thuật tấn công và xây dựng một chương trình quét cổng” này, em có xây dựng một chương trình quét cổng nhằm củng cố những kiến thức mà mình đã tìm hiểu được. Tuy nhiên chương trình không tránh khỏi những hạn chế do kiến thức của bản thân. Em sẽ cố gắng khắc phục những hạn chế này trong thời gian tới. 4 TÓM TẮT Báo cáo gồm 2 phần: Phần thức nhất: Tìm hiểu các kỹ thuật tấn công 1. Mạng và các điểm yếu: Phần này giới thiệu chung về hiện trạng và các điểm yếu của mạng hiện nay. 2. Các bước chính thực hiện một cuộc tấn công: giới thiệu chung về các bước cơ bản của một cuộc tấn công trên mạng. 3. Một số kỹ thuật tấn công trên mạng: Đưa ra các kết quả tìm hiểu về các kỹ thuật tấn công như: E-mail bombing, IP spoofing, SYN flood,… 4. Một số giải pháp: Từ việc hiểu các kỹ thuật tấn công mà đưa ra một số biện pháp nhằm ngăn chặn và hạn chế các cuộc tấn công. Phần thứ hai: Xây dựng một chương trình quét cổng Những lý thuyết cơ bản về mạng: Cấu trúc gói tin IP, TCP, UDP, ICMP. Dựa trên những kiến thức đã tìm hiểu để xây dựng một chương trình nhằm góp phần tìm ra những lỗi bảo mật, góp phần quan trọng vào việc bảo vệ cũng như tấn công. Kết thúc báo cáo là phần kết luận, tóm lược những nội dung đã trình bày và đưa ra hướng nghiên cứu tiếp theo và danh mục các tài liệu tham khảo. 5 Phần 1: CÁC KỸ THUẬT TẤN CÔNG 1. Mạng và các điểm yếu Khi Internet ra đời thì nhu cầu trao đổi thông tin trở nên cần thiết. Mục tiêu của việc nối mạng là để cho mọi người dùng chung tài nguyên từ những vị trí địa lý khác nhau. Do đó, các tài nguyên rất dễ bị phân tán, dẫn đến việc chúng sẽ bị xâm phạm gây mất mát dữ liệu cũng như các thông tin có giá trị. Càng giao thiệp rộng càng dễ bị tấn công, đó là quy luật. Do đó, mỗi nguy cơ trên mạng là mối nguy hiểm tiềm tàng. Một lỗ hổng bảo mật nhỏ của các hệ thống nhưng nếu được lợi dụng với tần suất cao và kỹ thuật hack điêu luyện thì cũng sẽ trở thành tai họa. Trong khi đó Internet là một mô hình vô cùng rộng lớn. Theo thống kê của tổ chức bảo mật nổi tiếng CERT (Computer Emegency Response Team), các vụ tấn công ngày càng tăng, cụ thể : - Năm 1989 có 200 vụ tấn công và truy cập trái phép trên mạng Internet. - Năm 1991 có 400 vụ. - Năm 1993 có 1400 vụ. - Năm 1994 là 1300 vụ. - Những năm 200x có hàng chục ngàn vụ trên mỗi năm. Internet là nơi cực kỳ hỗn loạn, mọi thông tin truyền trên Internet đều có thể bị xâm hại và nghe lén được. Thậm chí là công khai. Vì vậy, để bảo vệ được, chúng ta phải hiểu rõ các điểm yếu của mạng để có thể tự bảo vệ. Sau đây là 14 chỗ yếu dễ bị xâm nhập: • Thiếu điều khiển truy cập bộ định tuyến và lập cấu hình sai ACL sẽ cho phép rò rỉ thông tin qua ICMP, IP, NetBIOS, dẫn đến truy cập bất hợp pháp các dịch vụ trên máy phục vụ DMZ. • Điểm truy cập từ xa không được theo dõi và bảo vệ sẽ là phương tiện truy cập dễ dàng nhất đối với mạng công ty. 6 • Rò rỉ thông tin có thể cung cấp thông tin phiên bản hệ điều hành và chương trình ứng dụng, người dùng, nhóm, DNS cho kẻ tấn công thông qua chuyển vùng và các dịch vụ đang chạy như SNMP, SMTP, telnet, … • Máy chủ chạy các dịch vụ không cần thiết (như FTP, DNS, SMTP) sẽ tạo ra lối vào. • Mật mã yếu, dễ đoán, dùng lại ở cấp trạm làm việc có thể dồn máy phục vụ vào chỗ thỏa hiệp. • Tài khoản người dùng hoặc tài khoản thử nghiệm có đặc quyền quá mức. • Máy phục vụ internet có cấu hình sai, đặc biệt là kịch bản CGI trên máy phục vụ web và FTP vô danh. • Bức tường lửa hoặc ACL bị lập cấu hình sai có thể cho phép truy cập trực tiếp hệ tống trong hoặc một khi đã thỏa hiệp xong máy phục vụ DMZ. • Phần mềm chưa được sửa chữa, lỗi thời, dễ bị tấn công, hoặc để ở cấu hình mặc định. • Quá nhiều điều khiển truy cập thư mục và tập tin. • Quá nhiều mối quan hệ ủy quyền như NT Domain Trusts, các tập tin .rhosts và hosts.equiv trong UNIX sẽ cho kẻ tấn công truy cập hệ thống bất hợp pháp. • Các dịch vụ không được chứng thực như X Windows. • Thiếu tính năng ghi nhật ký, theo dõi, và dò tại mạng và cấp độ máy chủ. • Thiếu chính sách bảo mật, thủ tục, và tiêu chuẩn tối thiểu. 2. Các bước chính thực hiện một cuộc tấn công. Có nhiều cách để thực hiện một cuộc tấn công và tùy thuộc vào từng mục đích cụ thể mà phương pháp tấn công có thể khác nhau. Nhưng điểm chung giống nhau là nó đều được thực hiện qua 5 bước sau: 2.1. Thu thập thông tin đích Để tiến hành một cuộc tấn công thì người tấn công phải nghiên cứu rất nhiều về hệ thống trước khi tìm cách truy cập đặc quyền hệ thống đó. Việc thu thập thông tin đích bao gồm các bước là in dấu chân, quét và điểm danh. 7 2.1.1 In dấu chân In dấu ấn là việc dùng các công cụ và kỹ thuật để lấy thông tin cơ bản đầu tiên về một tổ chức hoặc trang web muốn tấn công. Việc in dấu ấn có hệ thống một tổ chức sẽ cho phép thấy rõ tình hình an ninh (độ bảo mật) của tổ chức đó. In dấu có thể giúp định danh tất cả các mẩu tin và nắm những thông tin cơ bản. Có rất nhiều kỹ thuật in dấu ấn khác nhau nhưng chủ yếu nhằm vào khám phá thông tin liên quan đến những công nghệ: Internet, intranet, truy cập từ xa, extranet. 2.1.2 Quét Nếu in dấu chân là thu thập tất cả thông tin có liên quan đến tổ chức đích thì quét là một bước xác định xem trong đó thì cái nào là dùng được bằng các đợt quét ping, quét cổng và các công cụ phát hiện tự động. Bước này cho phép xác định một cách chính xác các hệ thống còn sống hay không thông qua ICMP hoặc thông qua cổng quét chọn lọc. • Truy vấn ICMP: Có thể thu thập tất cả các kiểu thông tin về một hệ thống bằng cách đơn giản gửi một gói tin ICMP cho nó. • Quét cổng (port scan): Quét cổng là tiến trình nối với các cổng TCP và UDP trên hệ đích để xác định các dịch vụ đang chạy hoặc đang ở trạng thái LISTENNING. Các dịch vụ hoạt động đang lắng chờ (listenning) có thể cho phép một người dùng trái phép giành được quyền truy cập các hệ thống bị cấu hình sai. Mục tiêu của việc quét cổng là: Định danh các dịch vụ TCP và UDP đang chạy trên hệ đích, định danh kiểu hệ điều hành của hệ đích, định danh các ứng dụng cụ thể hoặc các phiên bản của một dịch vụ cụ thể. 2.1.3 Điểm danh mạng Giả sử việc thực hiện in dấu chân và quét đều không thành công hoặc những thông tin thu được không thể đủ để phát động một cuộc tấn công, người tấn công sẽ chuyển sang phương pháp định danh các tài khoản người dùng hợp lệ hoặc các tài nguyên dùng chung không được bảo vệ kỹ. Điểm danh là một cách để trích các tài khoản hợp lệ hoặc các tài nguyên từ hệ thống. 8 Những thông tin mà kỹ thuật điểm danh thu được có thể tạm thu gọn thành các phạm trù sau: Các tài nguyên mạng và các phần dùng chung, người dùng và nhóm, các ứng dụng và biểu ngữ (banner). Kỹ thuật điểm danh cũng cụ thể theo từng hệ điều hành của server, và do đó, nó cũng phụ thuộc vào các thông tin thu thập được từ phần in dấu chân và quét. 2.2. Truy cập lần đầu Sau khi có được những thông tin quan trọng ở bước trên, người tấn công bắt đầu tấn công vào hệ thống đích dựa trên những lỗ hổng mà họ đã tìm được. Để tấn công có hiệu quả thì người tấn công phải sử dụng những phương pháp tấn công phù hợp nhằm đạt được hiệu quả cao nhất và tránh bị phát hiện. 2.3. Leo thang đặc quyền Sự leo thang đặc quyền là một phương thức tấn công mà các User có quyền hạn thấp hơn sẽ tấn công vào một điểm dễ bị tổn thương nhất của hệ thống để trở thành một người quản trị hoặc có thể trở thành các User có quyền hạn cao hơn. Cách để leo thang đặc quyền là chiếm quyền thông qua crack password của người quản trị, tấn công tràn bộ đệm của máy đó và ăn cắp password. Chỉ cần phát hiện ra được một Password cho ứng dụng thì coi như việc tấn công leo thang đặc quyền đã thành công. Vì vậy khi sử dụng password nên chú ý một số điểm sau: • Thay đổi password thường xuyên để không bị mất password. • Các password cần được đặt gồm đủ các ký tự cả số, không nên đặt password có liên quan đến bản thân vì như vậy làm tăng nguy cơ password bị attacker đoán được. • Nên xoá các user không cần thiết sử dụng nếu như thật sự không cần nhằm giảm nguy cơ bị tấn công leo thang đặc quyền. • Không cho người lạ mặt tìm hiểu về hệ thống và có các tác động vật lý vào server. 9 • Thiết lập quyền không cho cài đặt các chương trình lạ đối với các user không tin cậy vào máy server. 2.4. Che đậy dấu vết Sau khi xâm nhập thành công, người tấn công thường phải xóa dấu vết mà những nhà quản trị mạng có thể dùng để tìm ra họ. Có nhiều công cụ và kỹ thuật xóa dấu vết tùy thuộc vào từng hệ điều hành khác nhau. 2.5. Đặt cửa sau Việc đặt cửa sau là quan trọng nếu như người tấn công vẫn còn muốn quay lại hệ thống đó. Việc đặt cửa sau cũng giống như việc tạo một tài khoản với user và password hợp lệ cho người tấn công. 3. Một số kỹ thuật tấn công cơ bản 3.1. Kỹ thuật sniffer Các hệ thống truyền thông tin qua mạng đôi khi không chắc chắn lắm và lợi dụng điều này, hacker có thể truy cập vào đường truyền dữ liệu để nghe trộm hoặc đọc trộm luồng dữ liệu truyền qua. Các chương trình nghe trộm còn được gọi là các sniffer. Các sniffer này có nhiệm vụ lắng nghe các cổng của một hệ thống mà hacker muốn nghe trộm. Nó sẽ thu thập dữ liệu trên các cổng này và chuyển về cho hacker. Có hai phương pháp mà các sniffer có thể thực hiện như sau: 3.1.1 Passive attack Một cuộc tấn công passive thực hiện việc nghe lén thông tin nhưng không làm ảnh hưởng tới tài nguyên của hệ thống. Ảnh hưởng chính của cách tấn công này là nó đe dọa tính bí mật của dữ liệu đang được truyền. Như trong hình 1.1, dữ liệu được truyền từ nguồn đến nơi nhận có thể bị theo dõi bởi người nghe lén ở giữa. Dữ liệu này có thể là những thông điệp e-mail hay username và password được truyền mà không mã hóa. 10 Hình 1.1: Dữ liệu bị nghe lén trên đường truyền Trong cách tấn công này có hai phương pháp thường được sử dụng là: Tấn công nghe trộm (passive wiretapping attack) và tấn công phân tích gói tin (traffic analysis attacks). • Tấn công nghe trộm (passive wiretapping attack): Attacker có thể hiểu và lấy những thông tin mà dữ liệu đã mã hóa để truyền. Ví dụ như khi hai bên truyền thông với nhau mà không tiến hành mã hóa thì một cuộc tấn công nghe trộm có thể lấy được toàn bộ thông tin được mã hóa trong dữ liệu. • Tấn công phân tích (Traffic analysis attack): Kẻ tấn công không thể hiểu thông tin mà dữ liệu mã hóa để truyền. Thay vào đó, traffic analysis dựa vào đặc điểm của các gói tin để đưa suy ra thông tin mà nó thu được. Ví dụ, nếu hai công ty: Một công ty phát triển mạng và một công ty kém phát triển, họ trao đổi với nhau một số lượng thông điệp lớn thì người tấn công có thể suy ra rằng họ đang thảo luận về việc hợp nhất hai công ty đó. Thành công của một cuộc tấn công passive attack phụ thuộc vào đường truyền vật lý sử dụng và khả năng truy cập đường truyền của người tấn công. 3.1.2 Active attack Một cuộc tấn công active nhằm thay đổi tài nguyên hệ thống hay làm ảnh hưởng đến hoạt động của chúng. Nó đe dọa đến tính nguyên vẹn của dữ liệu đang được truyền. Trong trường hợp như Hình 1.2, dữ liệu được truyền từ nguồn đến nơi nhận không những chỉ bị theo dõi mà còn bị điều khiển bởi người nghe trộm ở giữa. Bằng cách này người tấn công có thể chỉnh sửa, thêm vào, xóa hay gửi lại bất kỳ dữ liệu nào. 11 Cách tấn công này dễ dàng thực hiện các mục đích tấn công khác nhau như là làm lụt nơi nhận bằng tấn công từ chối dịch vụ (DoS), làm giảm chất lượng dịch vụ, spoofing, session hijacking,… Hình 1.2: Dữ liệu bị tấn công trên đường truyền 3.2. Tấn công từ chối dịch vụ (Denial of Service attack – DoS): Kiểu tấn công này thông thường làm tê liệt một số dịch vụ. Và đây là một trong những kiểu tấn công khó phòng ngừa nhất. Các tấn công này lợi dụng một số lỗi trong phần mềm hay các lỗ hổng bảo mật trên hệ thống nhằm làm cho đường truyền bị tắc nghẽn do có quá nhiều yêu cầu được gửi đến máy tính bị tấn công trong một khoảng thời gian ngắn, khiến cho hệ thống mạng không thể gửi các gói tin báo nhận kịp thời. Hay nhằm tước đoạt tài nguyên hệ thống làm cho những người dùng hợp lệ bị từ chối sử dụng tài nguyên. Có các kiểu tấn công từ chối dịch vụ như sau: 3.2.1 E-mail bombing Kẻ tấn công làm lụt hộp thư của người bị tấn công với một số lượng lớn các thông điệp giả mạo. Các dạng e-mail bomb phổ biến là: E-mail có đính kèm virus, e-mail có đính kèm file virus dưới dạng file nén, e-mail có đính kèm file nén là tập tin văn bản có kích thước lớn nhưng chỉ có một ký tự được lặp đi lặp lại hàng ngàn lần. Có hai phương pháp thực hiện một cuộc tấn công bằng e-mail bomb là: Mass mailing và list linking. • Mass mailing: Là việc gửi lặp đi lặp lại một mail tới một địa chỉ mail. Tương tự như khi sử dụng trong spamming, những kẻ tấn công gửi hàng triệu, hàng 12 ngàn e-mail, nhưng địa chỉ của các e-mail này chỉ là một hay một vài địa chỉ mà những kẻ tấn công muốn làm lụt. • List linking: Mỗi thông điệp đến được thêm vào một file plain text gồm tất cả các thông điệp đã chuyển đến trong ngày hôm đó. Khi ngày đó kết thúc, toàn bộ file được gửi tới các thành viên khác. Bằng cách này, các thành viên khác sẽ nhận được một file chứa tất cả các thông điệp trong ngày. 3.2.2 Smurf Người tấn công gửi những gói tin ICMP echo request multicast hay broadcast tới hệ thống nào đó với địa chỉ IP nguồn của gói tin là địa chỉ của hệ thống bị tấn công. Nơi nhận thông điệp ICMP đó sẽ gửi lại thông điệp ICMP reply tới hệ thống bị tấn công. Kết quả là hệ thống bị tấn công sẽ bị lụt. 3.2.3 Brute-force Một tấn công kiểu Brute-force, như kiểu ‘Smurf’, nhằm nhanh chóng nhấn chìm mạng đích với các dữ liệu vô nghĩa. Một hacker Smurf đặt địa chỉ IP đích của gói là địa chỉ quảng bá của mạng. Máy đích sẽ quảng bá gói ICMP echo request đến tất cả các trạm trong mạng. Nếu có nhiều trạm, điều này sẽ tạo ra một lượng lớn các gói ICMP echo request làm tắc nghẽn mạng đích. 3.2.4 Ping of Death Ping of Death sử dụng công cụ ‘PING’ để tạo các gói IP vượt quá mức tối đa 65535 byte dữ liệu cho phép bởi xác lập IP. Gói vượt kích thước đó được gửi đến một hệ thống không chờ đợi khiến nó có thể bị hỏng, treo hoặc khởi động lại. 3.2.5 Teardrop Teardrop khai thác sự yếu kém trong việc tái ghép các phân mảnh của gói IP. Khi dữ liệu được truyền qua mạng, các gói IP thường được chia thành các mảnh nhỏ. Mỗi mảnh trông giống như gói nguyên gốc trừ việc nó chứa trường offset. Chương trình Teardrop tạo ra một loạt các mảnh IP với trường offset chồng chéo. Khi các mảnh này được tái ghép tại đích, một số hệ thống sẽ bị hỏng, treo hoặc khởi động lại. 13 3.2.6 SYN flood Các tấn công SYN nhấn chìm một hệ thống đích với một loạt các gói SYN. Hệ thống đích sẽ tạo và gửi lại một gói tin SYN/ACK sau khi nhận gói tin SYN. Trong khi hệ thống đích chờ đợi ACK theo sau mỗi SYN/ACK, nó sẽ nạp vào hàng đợi tất cả các gói SYN/ACK chờ đến lượt. Các gói SYN/ACK sẽ chỉ được đưa ra khỏi hàng đợi khi ACK trở lại hoặc khi hết thời gian timeout mà chưa nhận được gói tin ACK. Khi hàng đợi bị đầy, hệ thống sẽ bỏ qua các yêu cầu SYN khác, làm cho hệ thống không sử dụng được bởi những người dùng hợp lệ. Tấn công từ chối dịch vụ kiểu phân tán (Distributed Reflection Denial of Dervice- DDoS): Kiểu tấn công này thực hiện bằng cách cùng một lúc nhiều máy cùng gửi gói tin đến đích. Kết quả là máy đích không còn khả năng nhận gói tin. Thế hệ sau của tấn công từ chối dịch vụ kiểu phân tán (Distributed Denial of Dervice - DRDoS): Bằng cách giả mạo địa chỉ IP của máy đích, người tấn công cùng một lúc gửi nhiều gói tin đến các hệ thống máy mạnh trên mạng. Các hệ thống này khi nhận gói tin SYN giả này, nó chấp nhận kết nối và gửi gói tin SYN/ACK đến địa chỉ IP trong gói tin SYN. Kết quả là cùng một lúc nhận được nhiều gói tin, đường truyền đích không đủ đáp ứng, hệ thống máy đích từ chối nhận bất kỳ gói tin nào. 4. Một số giải pháp Dưới đây là một số cách có thể giúp nhà quản trị mạng ngăn chặn những cuộc tấn công vào hệ thống mạng: • Sử dụng bộ giao thức IPsec (Internet Protocol Security) để mật mã hóa và xác nhận các gói dữ liệu trao đổi ở lớp mạng. • Sử dụng danh sách kiểm soát việc truy cập (Access Control List - ACL) để ngăn chặn những gói dữ liệu tải về có địa chỉ IP cá nhân. • Cài đặt bộ lọc dữ liệu đi vào và đi ra khỏi hệ thống mạng. 14 • Cấu hình các bộ chuyển mạch và bộ định tuyến để loại trừ những gói dữ liệu từ bên ngoài vào hệ thống mạng nhưng lại khai báo là có nguồn gốc từ một máy tính nằm trong hệ thống. • Kích hoạt các quy trình mật mã hóa trong bộ định tuyến để những máy tính đã được xác nhận nhưng nằm ngoài hệ thống mạng có thể liên lạc một cách an toàn với các máy tính nằm trong hệ thống. • Tắt những dịch vụ không cần thiết trên máy chủ. • Quản lý chặt chẽ các tài khoản người dùng và các điểm truy cập từ xa. • Bật tính năng ghi nhật ký, theo dõi và dò tại mạng. • Thường xuyên cập nhật những phiên bản mới của các phần mềm. 15 Phần 2: CHƯƠNG TRÌNH MINH HỌA (Chương trình quét cổng - Port scanning) 1. Cấu trúc mạng Chúng ta biết rằng các máy tính chạy trên mạng Internet giao tiếp với nhau thông qua hai giao thức TCP (Transmission Control Protocol) và UDP (User Datagram Protocol). Mô hình mạng Internet có thể đựợc mô tả trong sơ đồ sau: Hình 2.1: Mô hình mạng Internet (1) Tầng ứng dụng (Application): Là các chương trình ứng dụng trên mạng. (2) Tầng giao vận (Transport): Có nhiệm vụ cơ bản là tryền tin giữa hai điểm giao tiếp trên mạng. Tại tầng này người ta sử dụng giao thức TCP hoặc UDP. (3) Tầng mạng (Network): Có chức năng là tìm đường đi trên mạng, tại tầng này với mạng Internet người ta sử dụng giao thức IP. (4) Tầng liên kết (Link): Thực hiện việc kết nối máy tính với môi trường mạng để có thể giao tiếp dữ liệu. 1.1. IP IP là giao thức không tạo cầu nối (connectionless), thiếu tin cậy (unreliable) và chuyển phát tổng lực (best-efort). Khi số liệu được đưa xuống lớp mạng, số liệu được đóng thành gói. Một header được thêm vào gói tin như Hình 2.2, bao gồm thông tin địa chỉ và các thông tin điều khiển khác: 16 • Version: Chỉ ra phiên bản hiện hành của IP đang được dùng; có 4 bit. • IP header length (HLEN): Chỉ ra chiều dài của header theo các từ 32 bit. • Type of service (TOS): Chỉ ra tầm quan trọng được gán bới một giao thức lớp trên đặc biệt nào đó, có 8 bit. • Total length: Chỉ ra chiều dài của toàn bộ gói tin tính theo byte, bao gồm dữ liệu và header, có 16 bit. • Identification: Chứa một số nguyên định danh cho datagram hiện hành, có 16 bit. Đây chính là chỉ số tuần tự. • Flag: Có 3 bit, trong đó 2 bit có thức tự thấp điều khiển sự phân mảnh. Một bít cho biết gói tin có thể bị phân mảnh hay không, bit kia cho biết gói có phải là phân mảnh cuối cùng của chuỗi gói bị phân mảnh hay không. • Fragment offset: Được dùng để ghép các mảnh datagram lại vói nhau, có 13bit. • Time to live: Chỉ ra số bước nhảy (hop) mà một gói có thể đi qua. • Protocol: Chỉ ra giao thức lớp trên sẽ tiếp nhận gói tin khi công đoạn xử lý IP hoàn tất, như TCP hay UDP,…, có 8 bit. • Header checksum: Giúp đảm bảo sự toàn vẹn của IP header, có 16 bit. • Source address: Chỉ ra địa chỉ IP của node truyền datagram, có 32 bit. • Destination address: Chỉ ra địa chỉ IP của node nhận, có 32 bit. • Options: Cho phép IP hỗ trợ các tùy chọn khác nhau, chẳng hạn như bảo mật, chiều dài thay đổi,…. • Padding: Các số 0 được bổ sung vào trường này để đảm bảo IP header luôn là bội số của 32 bit. • Data: Chứa thông tin của lớp trên, chiều dài thay đổi đến 64Kb. 17 Hình 2.2: Gói tin IP 1.2. TCP TCP (Transmission Control Protocol) là một giao thức hướng kết nối, nó cung cấp một đường truyền dữ liệu tin cậy giữa hai máy tính. Tính tin cậy thể hiện ở việc nó đảm bảo dữ liệu được gửi sẽ đến được đích và theo đúng thứ tự như khi nó được gửi. Hàm Send() và Receive() sẽ được sử dụng để gửi gói tin tới đích và nhận gói tin quay trở lại từ đích. Sau đây là các định nghĩa về các trường trong TCP segment (hình 2.3): • Source port: Cổng mà gói tin đi ra. • Destination port: Cổng mà gói tin đi đến. • Sequence number: Chữ số được dùng để đảm bảo tuần tự chính xác của dữ liệu đến. • Acknowledgment number: TCP octet được mong đợi kế tiếp. • HLEN: Số lượng các từ 32 bit trong header. • Reserved: Tất cả các bit được bật thành 0. • Code bit: Có các chức năng điều khiển như là thiết lập và kết thúc một phiên. 18 • Window: Số octet mà máy thu sẵn sàng chấp nhận. • Checksum: Checksum được tính từ header và trường dữ liệu. • Urgent pointer: Chỉ ra điểm kết thúc của dữ liệu chuẩn. • Option: Một tùy chọn định ra kích thước tối đa hiện hành của TCP segment. • Data: Dữ liệu giao thức của lớp trên. Hình 2.3: Gói tin TCP 1.3. UDP UDP (User Datagram Protocol) là giao thức không hướng kết nối, nó gửi các gói dữ liệu độc lập gọi là datagram từ máy tính này đến máy tính khác mà không đảm bảo việc dữ liệu sẽ tới đích. Không giống như TCP, vì ở đây một kết nối chưa được tạo ra nên hàm SendTo() và ReceiveFrom() sẽ được dùng để gửi gói tin tới đích và nhận gói tin quay trở lại. skUdp.SendTo(bytesend, ep); và skUdp.ReceiveFrom(byterecv, ref ep); Trong đó: • bytesend: Gói tin gửi đi. • byterecv: Gói tin nhận lại. • ep: Địa chỉ đích. 19 Sau đây là định nghĩa các trường trong một UDP segment: • Source port: Chữ số của port gọi. • Destination port: Chữ số của port bị gọi. • Length: Số byte trong header và trường dữ liệu. • Checksum: Checksum được tính từ header và trường dữ liệu. • Data: dữ liệu của giao thức lớp trên. Hình 2.4: Gói tin UDP 1.4. ICMP ICMP (Internet Control Message Protocol) là một giao thức thông báo lỗi của IP. Khi quá trình truyền dữ liệu xảy ra lỗi thì ICMP được sử dụng để thông báo lỗi cho nơi gửi dữ liệu. Cấu trúc gói tin ICMP có dạng như hình 2.5 Hình 2.5: Gói tin ICMP Trong đó: • Type: Cho biết thông điệp nào của ICMP được gửi đi. • Code: Cho biết chi tiết hơn về loại thông điệp ICMP. • Checksum: Được sử dụng để kiểm tra lỗi cho dữ liệu. 20 • Identifier: Chứa một số nguyên định danh cho datagram hiện hành, có 16 bit. • Sequence number: Chữ số được dùng để đảm bảo tuần tự chính xác của dữ liệu đến. • Optional data. 2. Chương trình quét cổng Chương trình quét cổng sử dụng các kỹ thuật khác nhau dựa trên cơ sở mạng đã có nhằm mục đích thu thập thông tin về một đích cụ thể nào đó. Nó có thể khám phá chính xác những điểm yếu tồn tại bên trong đích đó. Một chương trình quét cổng hữu ích cho cả việc bảo vệ và tấn công. Và để thực hiện thì phải hiểu rõ các hoạt động truyền dữ liệu trên mạng. 2.1. Tạo Socket Socket như một giao diện nằm giữa tầng ứng dụng và tầng khác trong mô hình mạng OSI, có nhiệm vụ thực hiện việc giao tiếp giữa chương trình ứng dụng với các tầng bên dưới của mạng. Hình 2.3: Mô hình OSI rút gọn Socket skUdp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Trong đó: • AddressFamily.InterNetwork: Chỉ ra địa chỉ IP là version 4.
- Xem thêm -