Để giữ cho không gian bộ nhớ đệm bị chiếm trong khoảng thời gian mong muốn, kẻ tấn công phải tạo ra một dòng đều đặn các gói tin SYN gửi đến máy nạn nhân để giành lại các tài nguyên vừa
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KIỀU MINH VIỆT
CẢI THIỆN HIỆU NĂNG GIẢI THUẬT RRED CHỐNG TẤN CÔNG TỪ CHỐI DỊCH VỤ
TỐC ĐỘ THẤP
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội – 2014
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KIỀU MINH VIỆT
CẢI THIỆN HIỆU NĂNG GIẢI THUẬT RRED CHỐNG TẤN CÔNG TỪ CHỐI DỊCH VỤ
TỐC ĐỘ THẤP
Ngành: Công nghệ thông tin
Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60 48 15
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Nguyễn Đại Thọ
Hà Nội - 2014
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan luận văn này do tôi thực hiện, không sao chép của ai Các
số liệu, kết quả, giải pháp đƣa ra trong luận văn là trung thực và cho đến nay tôi chƣa công bố chúng trong bất kỳ tài liệu nào Các thông tin trích dẫn trong luận văn đều đã đƣợc chỉ rõ nguồn gốc
Tác giả
Kiều Minh Việt
Trang 4LỜI CẢM ƠN
Em xin chân thành cảm ơn thầy giáo TS Nguyễn Đại Thọ đã tận tình giúp đỡ, quan tâm sâu sát, với tinh thần thầy trò trong sáng và tin tưởng để em hoàn thành luận văn cao học này Em cũng rất vui vẻ cảm ơn các thầy cô giáo trong khoa Công nghệ thông tin và tất cả các cán bộ, nhân viên Trường Đại học Công nghệ, Đại học quốc gia
Hà Nội đã truyền thụ cho em những kiến thức chuyên ngành bổ ích, quý báu và tạo ra một môi trường học tập trung thực, lành mạnh Tôi xin gửi những tình cảm thân thiết đến bạn bè học cùng khoá cao học K17 ngành Công nghệ thông tin, đặc biệt là lớp Truyền dữ liệu và mạng máy tính Tôi cũng xin cảm ơn tất cả bạn bè, đồng nghiệp và mọi người trong gia đình đã khuyến khích, động viên, giúp đỡ, tạo điều kiện cho tôi có nhiều thời gian để hoàn thành luận văn này
Hà Nội, tháng 6 năm 2014 Kiều Minh Việt
Trang 5MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC BẢNG 5
DANH MỤC CÁC HÌNH VẼ 6
LỜI MỞ ĐẦU 8
Chương 1: TỔNG QUAN VỀ TẤN CÔNG TỪ CHỐI DỊCH VỤ PHÂN TÁN 10
1.1 Thiết lập mạng tấn công 10
1.1.1 Tìm kiếm các máy có lỗ hổng 10
1.1.2 Xâm nhập vào máy có lỗ hổng 10
1.1.3 Phương thức phát tán mã độc hại 11
1.2 Điều khiển mạng tấn công 12
1.2.1 Câu lệnh trực tiếp 13
1.2.2 Câu lệnh gián tiếp 14
1.2.3 Cập nhật chương trình tấn công 16
1.2.4 Các chương trình tấn công cục bộ 17
1.3 Các phương pháp thực hiện tấn công DoS 18
1.3.1 Khai thác một lỗ hổng 18
1.3.2 Tấn công một giao thức 18
1.3.3 Tấn công các hàm chức năng 20
1.3.4 Tấn công một ứng dụng 20
1.3.5 Tấn công một tài nguyên 21
1.3.6 Phát tràn thuần tuý 22
Chương 2: TẤN CÔNG TỪ CHỐI DỊCH VỤ TỐC ĐỘ THẤP 23
2.1 Khái niệm chung 23
2.1.1 Các tên gọi của tấn công LDoS 23
2.1.2 Các đặc điểm của LDoS 24
2.1.3 Cơ chế Timeout của giao thức TCP 24
2.1.4 Tấn công từ chối dịch vụ tốc độ thấp nhằm vào giao thức TCP 27
2.2 Các cơ chế phòng chống chung 28
2.2.1 Cơ chế hỗ trợ router 28
2.2.2 Cơ chế hỗ trợ thiết bị đầu cuối 28
2.3 Giải thuật RRED 29
2.4 Các biến thể của giải thuật RRED 33
2.4.1 Thuật toán của tác giả Phạm Văn Hợi 33
2.4.2 Thuật toán của tác giả Nguyễn Quang Quý 33
Chương 3: PHÂN TÍCH GIẢI THUẬT RRED 35
3.1 Cấu hình mô phỏng 35
3.2 Phân tích chương trình mô phỏng 36
Trang 63.3 Các kết quả mô phỏng 41
3.3.1 Biến thiên Ta 41
3.3.2 Biến thiên Tb 43
3.3.3 Biến thiên Rb 44
3.3.4 Biến thiên T* khi kích thước bộ nhớ nhỏ (N = 23) 45
3.3.5 Biến thiên T* khi kích thước bộ nhớ lớn hơn (N = 60) 50
3.3.6 Đánh giá chung 55
Chương 4: ĐỀ XUẤT CẢI TIẾN 56
4.1 Cải tiến thứ nhất 56
4.1.1 Ý tưởng 56
4.1.2 Mô tả giải thuật 56
4.1.3 Đánh giá hiệu năng khi kích thước bộ nhớ nhỏ (N = 23) 58
4.2 Cải tiến thứ hai 64
4.2.1 Ý tưởng 64
4.2.2 Mô tả giải thuật 68
4.2.3 Đánh giá hiệu năng khi kích thước bộ nhớ lớn hơn (N = 31) 69
KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO 78
TÀI LIỆU THAM KHẢO 79
PHỤ LỤC 81
A Mã nguồn thuật toán của tác giả Phạm Văn Hợi 81
B Mã nguồn thuật toán của tác giả Nguyễn Quang Quý 86
C Mã nguồn thuật toán LF-RED (T* updated) 91
Trang 7DANH MỤC CÁC BẢNG
Bảng 3.1: Tương ứng địa chỉ của các node 36
Bảng 3.2: Ánh xạ các dòng gói tin vào bộ nhớ 36
Bảng 3.3: Các dòng gói tin dùng chung bộ nhớ 39
Bảng 4.1: Kết quả tại Ta = 0.5 (s); Tb = 200 (ms); Rb = 0.25 (Mbps) 59
Bảng 4.2: Kết quả tại Ta = 1 (s); Tb = 200 (ms); Rb = 0.25 (Mbps) 59
Bảng 4.3: Kết quả tại Tb = 160 (ms); Ta = 1 (s); Rb = 0.25 (Mbps) 61
Bảng 4.4: Kết quả tại Tb = 360 (ms); Ta = 1 (s); Rb = 0.25 (Mbps) 61
Bảng 4.5: Kết quả tại Rb = 0.35 (Mbps); Ta = 1 (s); Tb = 200 (ms) 63
Bảng 4.6: Kết quả tại Rb = 0.475 (Mbps); Ta = 1 (s); Tb = 200 (ms) 63
Bảng 4.7: Ánh xạ các dòng gói tin vào bộ nhớ với hash_bins_=31 64
Bảng 4.8: Các dòng gói tin dùng chung bộ nhớ với hash_bins_=31 66
Bảng 4.9: Kết quả tại Ta = 0.5 (s); Tb = 200 (ms); Rb = 0.25 (Mbps) 71
Bảng 4.10: Kết quả tại Ta = 1.0 (s); Tb = 200 (ms); Rb = 0.25 (Mbps) 71
Bảng 4.11: Kết quả tại Ta = 1 (s); Tb = 160 (ms); Rb = 0.25 (Mbps) 74
Bảng 4.12: Kết quả tại Ta = 1 (s); Tb = 360 (ms); Rb = 0.25 (Mbps) 74
Bảng 4.13: Kết quả tại Ta = 1 (s); Tb = 200 (ms); Rb = 0.35 (Mbps) 77
Bảng 4.14: Kết quả tại Ta = 1 (s); Tb = 200 (ms); Rb = 0.475 (Mbps) 77
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Phát tán mã độc với mô hình kho chứa trung tâm 11
Hình 1.2: Mô hình phát tán mã độc dây xích 12
Hình 1.3: Phương thức phát tán mã độc tự trị 12
Hình 1.4: Kiến trúc của một tấn công DDoS 13
Hình 1.5: Tấn công DDoS thông qua máy Stepping Stone 14
Hình 1.6: Mạng tấn công DDoS dựa trên IRC 16
Hình 1.7: Bắt tay ba bước để mở một kết nối TCP 19
Hình 2.1: Chuột chù 23
Hình 2.2: Tính toán giá trị RTT hiện thời 26
Hình 2.3: Tấn công LDoS 28
Hình 2.4: Kiến trúc của LF-RED 30
Hình 2.5: Một bộ lọc Bloom 32
Hình 3.1: Sơ đồ mạng trong các mô phỏng 35
Hình 3.2: Kết quả khi Ta = [0.2, …, 2] (s); Tb = 200 (ms); Rb = 0.25 (Mbps) với thuật toán LF-RED và thực hiện mô phỏng với NS-2 42
Hình 3.3: Kết quả khi Ta = 1 (s); Tb = [0, 40, …, 600] (ms); Rb = 0.25 (Mbps) với thuật toán LF-RED và thực hiện mô phỏng với NS-2 43
Hình 3.4: Kết quả khi Ta = 1 (s); Tb = 200 (ms); Rb = [0.1, 0.125, …, 0.5] (Mbps) với thuật toán LF-RED và thực hiện mô phỏng với NS-2 44
Hình 3.5: Số lượng gói tin tấn công đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.25 (Mbps); T* thay đổi với thuật toán LF-RED 45
Hình 3.6: Số lượng gói tin TCP đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.25 (Mbps); T* thay đổi với thuật toán LF-RED 46
Hình 3.7: Số lượng gói tin tấn công đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.5 (Mbps); T* thay đổi với thuật toán LF-RED 47
Hình 3.8: Số lượng gói tin TCP đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.5 (Mbps); T* thay đổi với thuật toán LF-RED 48
Hình 3.9: Số lượng gói tin tấn công đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.1 (Mbps); T* thay đổi với thuật toán LF-RED 49
Hình 3.10: Số lượng gói tin TCP đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.1 (Mbps); T* thay đổi với thuật toán LF-RED 50
Hình 3.11: Số lượng gói tin tấn công đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.25 (Mbps); T* thay đổi với thuật toán LF-RED 51
Hình 3.12: Số lượng gói tin TCP đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.25 (Mbps); T* thay đổi với thuật toán LF-RED 51
Hình 3.13: Số lượng gói tin tấn công đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.5 (Mbps); T* thay đổi với thuật toán LF-RED 52
Hình 3.14: Số lượng gói tin TCP đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.5 (Mbps); T* thay đổi với thuật toán LF-RED 53
Trang 9Hình 3.15: Số lƣợng gói tin tấn công đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb =
200 (ms); Rb = 0.1 (Mbps); T* thay đổi với thuật toán LF-RED 54Hình 3.16: Số lƣợng gói tin TCP đi qua router R0 trong 1 (s) khi Ta = 1 (s); Tb = 200 (ms); Rb = 0.1 (Mbps); T* thay đổi với thuật toán LF-RED 55Hình 4.1: Kết quả khi Ta = [0.2, …, 2] (s); Tb = 200 (ms); Rb = 0.25 (Mbps) 58Hình 4.2: Kết quả khi Ta = 1 (s); Tb = [0, 40, …, 600] (ms); Rb = 0.25 (Mbps) 60Hình 4.3: Kết quả khi Ta = 1 (s); Tb = 200 (ms); Rb = [0.1, 0.125, …, 0.5] (Mbps) 62Hình 4.4: Kết quả khi Ta = [0.2, …, 2] (s); Tb = 200 (ms); Rb = 0.25 (Mbps) 69Hình 4.5: Kết quả khi Ta = [0.2, …, 2] (s); Tb = 200 (ms); Rb = 0.25 (Mbps) (phóng to) 70Hình 4.6: Kết quả khi Ta = 1 (s); Tb = [0, 40, …, 600] (ms); Rb = 0.25 (Mbps) 72Hình 4.7: Kết quả khi Ta = 1 (s); Tb = [0, 40, …, 600] (ms); Rb = 0.25 (Mbps) (phóng to) 73Hình 4.8: Kết quả khi Ta = 1 (s); Tb = 200 (ms); Rb = [0.1, 0.125, …, 0.5] (Mbps) 75Hình 4.9: Kết quả khi Ta = 1 (s); Tb = 200 (ms); Rb = [0.1, 0.125, …, 0.5] (Mbps) (phóng to) 76
Trang 10LỜI MỞ ĐẦU
Hiện nay tấn công từ chối dịch vụ (DoS – Denial of Service) là một vấn đề nhận được nhiều sự quan tâm của mọi người và tiếp tục là một mối đe doạ lớn đối với sự tin cậy của mạng Internet Một nghiên cứu vào năm 2001 [14] cho thấy mỗi tuần có khoảng 4000 cuộc tấn công từ chối dịch vụ phân tán (DDoS – Distributed DoS) xảy ra Các tấn công DDoS này nhằm vào các mục tiêu khác nhau từ các công ty lớn như là Amazon và Hotmail đến các nhà cung cấp dịch vụ Internet nhỏ Các tấn công DDoS không chỉ ảnh hưởng đến các hệ thống mục tiêu của cuộc tấn công mà còn ảnh hưởng tới người sử dụng các dịch vụ mà hệ thống mục tiêu cung cấp Vào tháng 1 năm 2001, một tấn công vào Microsoft đã ngăn chặn khoảng 98% lượng khách hàng sử dụng các dịch vụ mà các máy chủ của Microsoft cung cấp Vào tháng 10 năm 2002 xảy ra một cuộc tấn công vào 13 máy chủ tên miền gốc (DNS – Domain Name System) Dịch vụ tên miền DNS là dịch vụ cốt lõi đảm bảo sự hoạt động bình thường cho các trình duyệt Web cũng như rất nhiều các ứng dụng khác và 13 máy chủ tên miền này lưu trữ dữ liệu quan trọng của toàn bộ mạng Internet Cuộc tấn công này đã làm cho 9 máy chủ tên miền hầu như không trả lời được các truy vấn tên miền [13, ch.3]
Năm 2003, một loại tấn công từ chối dịch vụ mới xuất hiện có tên gọi là tấn công từ chối dịch vụ tốc độ thấp LDoS (Low rate DoS), đã được 2 tác giả là Aleksandar Kuzmanovic và Edward W Knightly đề cập lần đầu tiên trong bài báo [10] Không giống như tấn công DoS thông thường, tấn công LDoS gửi gói tin với tốc
độ cao trong những khoảng thời gian ngắn cách đều nhau, vì vậy LDoS có tốc độ gửi gói tin trung bình thấp LDoS khai thác cơ chế timeout của giao thức TCP nhằm hạn chế thông lượng tổng cộng của các kết nối TCP, mặc dù LDoS có tốc độ gửi gói tin trung bình thấp nhưng nó vẫn đạt được hiệu quả tấn công như tấn công DoS thông thường làm cho thông lượng tổng cộng của các kết nối TCP bị giảm mạnh
Luận văn của tôi trình bày một phương pháp chống lại tấn công LDoS có hiệu quả cao, đó là giải thuật RRED [3] hay LF-RED (Low-rate Filter RED), một thuật toán quản lý hàng đợi động (AQM – Active Queue Management) cài đặt cho các thiết bị định tuyến chẳng hạn như router, nó dựa trên thuật toán RED [6] đã có và kết hợp thêm với một thuật toán phát hiện và lọc lưu lượng tấn công mới Ý tưởng cơ bản của thuật toán RRED là phát hiện và loại bỏ các gói tin tấn công trước khi chúng được đưa đến và được xử lý bởi thuật toán RED Trên cơ sở đó luận văn đưa ra một số giải pháp nhằm tăng hiệu năng của thuật toán, so sánh hiệu năng của thuật toán mới với thuật toán cũ và các biến thể của RRED
Luận văn của tôi gồm các chương chính như sau:
Chương 1: Tổng quan về tấn công từ chối dịch vụ phân tán
Chương này trình bày tổng quan về DDoS, các cách thức khác nhau mà kẻ tấn công thực hiện một tấn công DDoS
Chương 2: Tấn công từ chối dịch vụ tốc độ thấp
Trang 11Chương này trình bày tấn công LDoS và đề xuất cơ chế hỗ trợ router để chống lại loại tấn công này
Chương 3: Phân tích giải thuật RRED
Chương này trình bày sơ đồ mạng được dùng trong các mô phỏng, phân tích chương trình mô phỏng thuật toán RRED, các kết quả mô phỏng thu được
Chương 4: Đề xuất cải tiến
Chương này trình bày 2 giải pháp nhằm cải thiện hiệu năng của thuật toán RRED, so sánh hiệu năng của thuật toán mới với thuật toán RRED gốc và các biến thể của RRED
Trang 12Chương 1: TỔNG QUAN VỀ TẤN CÔNG TỪ CHỐI DỊCH VỤ
và phối hợp trong cuộc tấn công Kẻ tấn công có thể thực hiện việc này bằng cách áp dụng mô hình máy kiểm soát/máy tấn công hoặc với một bộ điều khiển và điều khiển các kênh giao tiếp thông qua mạng IRC [8] Một khi mạng tấn công DDoS được xây dựng, nó có thể được sử dụng để tấn công nhiều lần đến các máy nạn nhân khác nhau
1.1 Thiết lập mạng tấn công
Phụ thuộc vào mỗi kiểu tấn công DoS, kẻ tấn công cần phải tìm ra và thiết lập một mạng với số lượng các máy đủ lớn Công việc này có thể được thực hiện một cách thủ công, bán tự động hoặc tự động hoàn toàn Đối với Trinoo và Shaft là hai công cụ DDoS được nhiều người biết đến, chỉ có việc cài đặt là tự động trong khi việc phát hiện và khai thác các máy có lỗ hổng được thực hiện một cách thủ công [13, ch.4] Cho đến nay những kẻ tấn công thường sử dụng các tệp tin kịch bản để tự động hoá tất
cả các khâu đó
1.1.1 Tìm kiếm các máy có lỗ hổng
Quá trình tìm kiếm các máy có lỗ hổng gọi là “quét” Kẻ tấn công gửi một vài
gói tin đến máy nạn nhân để kiểm tra xem máy nạn nhân có đang hoạt động và có lỗ hổng hay không, nếu có, kẻ tấn công sẽ cố gắng xâm nhập vào máy nạn nhân [13, ch.4]
1.1.2 Xâm nhập vào máy có lỗ hổng
Kẻ tấn công cần phải khai thác các lỗ hổng của các máy mà anh ta định cài chương trình tấn công vào nhằm mục đích chiếm lấy quyền truy cập vào máy Phần lớn các lỗ hổng có thể cho phép kẻ tấn công truy cập vào hệ thống với quyền của người quản trị (administrator), và anh ta có thể thêm, xoá, sửa các tập tin hoặc cấu hình của hệ thống Để cho việc truy cập vào hệ thống các lần sau được dễ dàng, kẻ tấn
công thường cài đặt và khởi động một chương trình “lắng nghe” các kết nối ở một cổng nhất định, chương trình này gọi là “cửa sau” Truy cập thông qua cửa sau có khi
được bảo vệ bởi mật khẩu mạnh, trong các trường hợp khác lại được mở rộng và đáp ứng bất kỳ yêu cầu kết nối nào
Mặc dù các lỗ hổng đã được phát hiện thường được sửa chữa và làm cho an toàn hơn bằng các bản vá, kẻ tấn công vẫn sẽ cố gắng khai thác và tìm ra các lỗ hổng
an ninh khác mà máy nạn nhân có thể có Mật khẩu yếu là một lỗ hổng không thể giải quyết được bằng các bản vá Một số chương trình khai thác lỗ hổng có một danh sách các mật khẩu yếu hoặc thông dụng, chúng cố gắng áp dụng các mật khẩu này để xâm nhập vào máy nạn nhân sử dụng phương pháp thử lần lượt từng mật khẩu hoặc sử
Trang 13dụng phương pháp Brute-Force Nó có thể mất nhiều thời gian nhưng trong một số trường hợp, các mật khẩu này được chấp nhận và kẻ tấn công sẽ giành được quyền truy cập máy nạn nhân một cách hợp pháp Người dùng thường nghĩ rằng không đặt
mật khẩu cho tài khoản Administrator là hợp lý, hoặc mật khẩu là “password” hoặc
một từ đơn giản nào khác là đủ để bảo vệ tài khoản Họ đã nhầm
1.1.3 Phương thức phát tán mã độc hại
Kẻ tấn công cần phải quyết định một phương thức phát tán cho việc cài đặt mã độc của anh ta Một mô hình phát tán mã độc đơn giản đó là mô hình kho chứa trung tâm: kẻ tấn công đặt mã độc vào một kho chứa tệp (chẳng hạn một máy chủ FTP) hoặc
là một website và mỗi máy nạn nhân tải mã độc từ kho chứa này Với mô hình kho chứa trung tâm này người bị hại có thể dễ dàng xác định được kho chứa trung tâm và
loại bỏ nó Kẻ tấn công cài đặt chương trình Trinoo và Shaft sử dụng mô hình trung tâm này trong thời kỳ đầu của DoS Sâu máy tính “W32/Leaves” năm 2001 và sâu
“W32 / SoBig” năm 2003 sử dụng một loạt các sites có thể cấu hình được làm kho
chứa với mô hình này [13, ch.4]
Hình 1.1: Phát tán mã độc với mô hình kho chứa trung tâm
Kỹ thuật này thực hiện một câu lệnh để truyền một bộ công cụ tấn công từ một vị trí trung tâm đến máy nạn nhân và được gọi là sự phát tán mã độc trung tâm Các tệp tin kịch bản sau đó sẽ điều khiển quá trình cài đặt tự động các công cụ và khởi tạo một vòng tấn công mới Kỹ thuật truyền tệp tin thường sử dụng là giao thức HTTP, FTP và RPC Sâu “1i0n” cũng sử dụng mô hình phát tán mã độc trung tâm này [7, tr.10]
Một mô hình khác là mô hình chuỗi dây xích, trong đó kẻ tấn công mang theo công cụ tấn công từ một máy bị hại khởi đầu tới các máy bị hại ngay sau đó
Trang 14Hình 1.2: Mô hình phát tán mã độc dây xích
Kỹ thuật này thực hiện một câu lệnh để truyền một bộ công cụ tấn công từ máy đang tấn công đến máy nạn nhân Để thực hiện được điều này, các công cụ tấn công trên máy tấn công bao gồm một vài phương thức để chấp nhận kết nối từ máy nạn nhân và truyền một tệp tin đến máy nạn nhân Ưu điểm của mô hình này là nó có thể tồn tại tốt hơn so với mô hình phát tán mã độc trung tâm vì không có một vị trí trung tâm, tất cả các vị trí trong mô hình dây xích đều có thể truyền tệp tin được, nếu một vị trí bị phát hiện không ảnh hưởng nhiều đến hoạt động của phương thức tấn công này Sâu
“ramen” sử dụng phương thức phát tán mã độc dây xích này [7, tr.11]
Hình 1.3: Phương thức phát tán mã độc tự trị
Phương thức phát tán mã độc tự trị kết hợp quá trình phát tán và quá trình khai thác lỗ hổng trong một quá trình Sự khác nhau của phương thức này và phương thức phát tán mã độc dây xích là quá trình khai thác bao gồm mã độc sẽ được phát tán đến site mới, hơn là thực hiện một thao tác copy mã độc đó sau khi khai thác lỗ hổng và xâm nhập được vào máy nạn nhân Các sâu máy tính có trường payload chứa một công
cụ DDoS và cài đặt nó vào mỗi máy bị nhiễm Các sâu máy tính hiện nay kết hợp mã lệnh khai thác và mã lệnh tấn công và được mã hoá yếu sử dụng các thanh ghi dịch trả
về tuyến tính Việc mã hoá này được sử dụng để tránh sự phát hiện một tập các mã lệnh khai thác đã biết (chẳng hạn một dãy các câu lệnh NOOP) bởi các chương trình diệt virus máy tính hoặc các phần mềm tường lửa cá nhân Một khi các mã này xâm nhập vào máy nạn nhân, nó sẽ tự giải mã và tiếp tục quá trình phát tán
1.2 Điều khiển mạng tấn công
Khi mạng tấn công có số lượng máy đủ lớn, kẻ tấn công sẽ giao tiếp với các máy này để chỉ đạo chúng tấn công máy nạn nhân Mục đích của việc giao tiếp này là
Trang 15kẻ tấn công thiết lập lệnh bắt đầu/kết thúc của một cuộc tấn công cụ thể và có thể thu thập các thông tin thống kê liên quan đến hoạt động của máy tấn công
1.2.1 Câu lệnh trực tiếp
Một vài công cụ DDoS như Trinoo xây dựng một mạng bao gồm một vài máy
kiểm soát (handler) và các máy tấn công (agents hay zombies) Kẻ tấn công điều khiển mạng này bằng cách gửi đi các lệnh đến các máy kiểm soát, các máy này sau đó lại trung chuyển các lệnh đến các máy tấn công Các lệnh có thể bao gồm văn bản thường, văn bản mã hoá, giá trị số Việc phân tích các lệnh này và lưu lượng điều khiển giữa các máy kiểm soát và các máy tấn công có thể mang lại hiểu biết sâu sắc về công cụ tấn công mà không cần phải truy cập vào tệp tin thực thi của mã độc hay mã nguồn của
nó
Hình 1.4: Kiến trúc của một tấn công DDoS
Trang 16Hình 1.5: Tấn công DDoS thông qua máy Stepping Stone
Nhằm cản trở việc truy vết máy tấn công, kẻ tấn công có thể truy cập vào một số máy trung gian (gọi là stepping stone) trước khi truy cập vào các máy kiểm soát như mô tả
ở hình 1.5
Nhằm mục đích cho các máy kiểm soát và máy tấn công hoạt động (trong các công cụ như Trinoo, Stacheldraht, Shaft), các máy kiểm soát phải học được địa chỉ của các máy tấn công và nhớ các địa chỉ này ngay cả khi chương trình hoặc máy tính khởi động lại Các công cụ DDoS lúc đầu lưu trữ địa chỉ IP của một máy kiểm soát và các máy tấn công phải thông báo cho máy kiểm soát này trong quá trình xây dựng mạng tấn công Thông thường danh sách các máy tấn công được lưu trong một tệp tin mà máy kiểm soát duy trì để lưu giữ thông tin trạng thái của mạng tấn công Trong một vài trường hợp, không có sự xác thực một máy tính có phải là máy kiểm soát hay không (thực tế một máy tính bất kỳ có thể gửi lệnh tới một vài máy tấn công và chúng vẫn sẽ trả lời) Việc phân tích ở trên về các công cụ Trinoo, TFN, Stacheldraht, Shaft
và Mstream tất cả đều cho thấy các cách khác nhau trong đó các máy kiểm soát và các máy tấn công có thể bị phát hiện và bị điều khiển Kẻ tấn công có thể điều khiển mạng DDoS của kẻ tấn công khác nếu sự truy cập không được bảo vệ Nếu kẻ tấn công bắt được thông báo bằng văn bản thường gửi đến một máy tấn công khác thì có thể điều khiển máy tấn công đó bằng cách thay đổi các trường thông báo cần thiết và gửi cho máy tấn công đó Hoặc người dùng có thể gửi đi một câu lệnh để ngừng cuộc tấn công Một vài công cụ DDoS sử dụng kiến trúc máy kiểm soát/máy tấn công có thể bảo vệ việc truy cập từ xa đến các máy kiểm soát bằng cách sử dụng mật khẩu, và một vài công cụ bảo vệ việc giao tiếp giữa các máy kiểm soát với các máy tấn công bằng mật khẩu hoặc bằng mã hóa sử dụng bí mật chung Các máy kiểm soát trên cùng mã hoá danh sách các máy tấn công (sử dụng bộ mã hoá RC4 và Blowfish) để tránh phơi bày định danh của các máy tấn công khi các máy kiểm soát này bị xâm nhập bởi những người khác Bằng cách thực hiện lại các câu lệnh có thể làm cho danh sách các máy tấn công bị phơi bày, hoặc tệp tin có thể bị giải mã sử dụng khoá nhận được từ phân tích pháp lý Một số công cụ khác như là Stacheldraht cho phép mã hoá kênh truyền lệnh giữa kẻ tấn công và các máy kiểm soát nhưng không mã hoá với các kênh truyền lệnh giữa các máy kiểm soát và các máy tấn công Theo thời gian, các máy kiểm soát
có thể bị dò vết ra và bị loại bỏ
1.2.2 Câu lệnh gián tiếp
Kẻ tấn công có thể gặp một số hạn chế khi giao tiếp trực tiếp Bởi vì các máy kiểm soát cần phải lưu trữ định danh của các máy tấn công, và một máy tấn công cũng cần phải lưu trữ định danh của máy kiểm soát đó Một khi một máy tấn công bị phát hiện và bị điều khiển, toàn bộ mạng DDoS có thể bị xác định Hơn nữa, mô hình giao tiếp trực tiếp có thể tạo ra các sự kiện bất thường có thể dễ dàng bị phát hiện bởi các
Trang 17bộ giám sát mạng Kỹ thuật giao tiếp trực tiếp là máy kiểm soát và máy tấn công đều
phải luôn luôn sẵn sàng “nghe” ở một cổng nhất định, vì vậy nếu một máy tính được
xác định là đang khởi tạo một kết nối đến một máy khác bằng một cổng lạ thì máy tính
đó đã bị nhiễm mã độc Bằng việc kiểm tra các gói tin đi và đến của giao tiếp này, người quản trị có thể phát hiện địa chỉ của máy tính đang kết nối với máy của mình Ngay cả khi không có kết nối nào trên máy này thì bằng việc giám sát các cổng đang
mở trên máy có thể phát hiện tiến trình kiểm soát hoặc tiến trình tấn công
Một hạn chế nữa đối với mô hình máy kiểm soát/máy tấn công đó là số lượng các bộ mô tả file (tệp) cần thiết cho một kết nối TCP giữa một máy kiểm soát và một máy tấn công, điều này dẫn đến giới hạn số lượng máy tấn công trong mạng DDoS Nhiều phiên bản của hệ điều hành Unix hạn chế số lượng các bộ mô tả file mở cho mỗi tiến trình làm việc, cũng như là đối với nhân của hệ điều hành Ngay cả khi các giới hạn này được tăng lên, một số công cụ DDoS không cho phép thêm một máy tấn công khi đã đạt được 1024 máy, đó là giới hạn số bộ mô tả file mở đồng thời thường thấy ở rất nhiều hệ điều hành
Bởi vì rất nhiều tác giả của các công cụ DDoS phát triển các công cụ này để tấn công trên IRC (Internet Relay Chat) [8], họ cũng đã từng lập trình các chương trình bot với các mục đích khác nhau (chẳng hạn như bot IRC), vì thế họ bắt đầu mở rộng
mã chương trình bot IRC đã có để thực hiện các chức năng DDoS Một ví dụ đó là bot
“Kaiten” được lập trình cho các hệ thống Unix, một ví dụ khác là bot “Power” lập
trình cho các hệ điều hành Windows [13, ch.4] Thay vì chạy một chương trình riêng biệt lắng nghe các kết nối đến trên một cổng được chỉ định bởi kẻ tấn công, cả các tiến trình tấn công DDoS (các bot) và kẻ tấn công đều kết nối đến một máy chủ IRC như là các máy trạm IRC thông thường Bởi vì hầu hết các site đều cho phép IRC như là một kênh giao tiếp cho người dùng, giao tiếp DDoS thông qua IRC không tạo ra các sự kiện bất thường nào Vai trò của tiến trình kiểm soát được thực hiện bằng một kênh trên máy chủ IRC, thường được bảo vệ bởi một mật khẩu Thông thường có một kênh mặc định được chỉ ra trong mã nguồn của chương trình bot, khi chương trình bot bắt đầu chạy trên máy tấn công nó sẽ kết nối để tìm kiếm kênh điều khiển hiện thời, sau
đó chương trình bot sẽ “nhảy” tới kênh điều khiển này Nhảy kênh, ngay cả việc nhảy
kênh qua các mạng IRC khác nhau, được thực hiện theo cách này Một khi đã ở trong kênh điều khiển hiện thời, các chương trình bot sẵn sàng để trả lời các lệnh của kẻ tấn công như là quét các máy có lỗ hổng để tuyển lựa vào mạng DDoS, tấn công DDoS một máy nào đó, cập nhật chương trình bot, tắt chương trình bot, v.v
Việc giao tiếp thông qua IRC có nhiều ưu điểm Các máy chủ IRC đã có sẵn và được duy trì bởi những tổ chức khác nhau Kênh giao tiếp tấn công DDoS không dễ bị phát hiện trong số hàng ngàn kênh chat (mặc dù có thể là một điều bất thường khi mà
một kênh đột ngột có 10.000 “người” tham gia trong vòng một vài phút) Ngay cả khi
bị phát hiện, kênh tấn công chỉ có thể bị loại bỏ thông qua sự hợp tác của người quản trị máy chủ đó Sự hợp tác này có thể là khó khăn trong trường hợp các máy chủ ở
Trang 18nước ngoài Do bản chất phân tán của IRC, tất cả các máy trạm không phải truy cập vào cùng một máy chủ để nhận được kênh kiểm soát mà chỉ phải truy cập vào một máy chủ trong cùng mạng IRC hoặc trong cùng một khối liên mạng Hầu hết các công
cụ tấn công DDoS sau Trinity đều thực hiện kỹ thuật giao tiếp này
Để làm cho việc giao tiếp dựa trên IRC trở nên khó phát hiện, kẻ tấn công thường sau khi cài chương trình bot vào một máy và kết nối máy đó với các máy chủ IRC lừa đảo, thông thường sử dụng các cổng không chuẩn (thay vì cổng 6667/tcp mà các máy chủ IRC thường sử dụng) Một kỹ thuật khác được thực hiện dễ dàng với
Phatbot là kết nối một vài máy tấn công vào một máy chủ TCP uỷ nhiệm trên các cổng
không chuẩn, máy chủ này kết nối đến các máy chủ IRC thật trên cổng chuẩn Cả hai cách trên đều là dạng khác của kỹ thuật “stepping stone” dễ dàng chiến thắng những
nỗ lực của người có trách nhiệm liên quan trong việc xác định và loại bỏ mạng tấn công DDoS
Hình 1.6: Mạng tấn công DDoS dựa trên IRC
1.2.3 Cập nhật chương trình tấn công
Kẻ tấn công cần phải cập nhật mã nguồn cho các công cụ tấn công của hắn Kẻ tấn công DDoS thường mong muốn một kỹ thuật cập nhật phần mềm tương tự với chức năng cập nhật phần mềm có trên nhiều hệ điều hành phổ biến hiện nay, và tất nhiên là không cần sự điều khiển quá trình cập nhật của người chủ sở hữu máy Sử dụng kỹ thuật tương tự như là kỹ thuật tuyển lựa máy vào mạng tấn công để cập nhật
Trang 19(thực hiện quét các máy đã cài mã lệnh tấn công và cài mã tấn công mới) là một việc làm ồn ào và không phải lúc nào cũng hiệu quả, bởi vì một vài công cụ tấn công vá lỗ hổng mà nó đã sử dụng để xâm nhập vào máy tính của người khác để không ai giành được quyền điều khiển máy tính đó Khi đó kẻ tấn công không thể đột nhập vào máy tính này theo cách như trước Nhiều công cụ tấn công và chương trình bot đã tồn tại phân phối bản cập nhật bằng cách gửi một câu lệnh đến các máy tấn công yêu cầu mỗi máy tấn công tải về một phiên bản mã nguồn mới hơn từ một nguồn nào đó, chẳng hạn một máy chủ Web
Với việc sử dụng mạng điểm-điểm tăng lên, những kẻ tấn công đã tập trung vào
sử dụng kỹ thuật điểm-điểm cho các hoạt động phá hoại Sâu “Slapper” của Linux là
một ví dụ sử dụng kỹ thuật điểm-điểm mà nó được công bố là có thể hoạt động với
hàng triệu máy tính Gần đây hơn, “Phatbot” đã công nhận giao tiếp điểm-điểm sử
dụng giao thức “WASTE”, liên kết với các máy ngang hàng khác bằng cách sử dụng các máy chủ bộ nhớ tạm Gnutella Sử dụng kỹ thuật này kẻ tấn công có thể sắp xếp các máy tấn công vào mạng điểm-điểm để phổ biến phiên bản mã nguồn mới hoặc để điều khiển ngay cả việc tấn công Sự mềm dẻo và đáng tin cậy của giao tiếp điểm-điểm có thể làm cho mạng tấn công DDoS nguy hiểm hơn và khó triệt phá hơn
1.2.4 Các chương trình tấn công cục bộ
Có một lớp tấn công DDoS chúng khai thác các máy tính có lỗ hổng mà không cần thiết yêu cầu cài đặt bất kỳ phần mềm độc hại nào vào các máy tính đó nhưng thay vào đó cho phép kẻ tấn công điều khiển các máy này để làm cho chúng tạo ra các lưu lượng tấn công Kẻ tấn công tập hợp một danh sách các máy tính có lỗ hổng, và vào thời điểm của cuộc tấn công kẻ tấn công có các chương trình tương tác với danh sách các máy này bằng cách gửi đi các câu lệnh khai thác để khởi tạo lưu lượng tấn công Lưu lượng tấn công được tạo ra là lưu lượng thông thường vì do các chương trình thông thường có sẵn trên các máy này tạo ra Chẳng hạn kẻ tấn công có thể lạm dụng
các lỗ hổng của một máy chủ Web làm cho nó chạy chương trình PING.EXE
Sự khác nhau giữa “chương trình cục bộ” và các loại tấn công DDoS khác rất
tinh vi Thay vì một lỗ hổng (có thể chạy được từ xa) được sử dụng để cài đặt phần mềm độc hại, lỗ hổng này lại được sử dụng để chạy phần mềm thông thường đã có sẵn trên các máy tính có lỗ hổng này
Mặc dù tấn công được tạo bởi các chương trình cục bộ, chẳng hạn lỗ hổng của
máy chủ Web được sử dụng để chạy chương trình PING EXE, có vẻ giống với tấn công phản xạ theo một khía cạnh nào đó nhưng thực sự chúng là hai loại tấn công khác nhau Trong hầu hết các tấn công phản xạ, kẻ tấn công lạm dụng một dịch vụ thông thường, tạo ra các yêu cầu thông thường với địa chỉ nguồn bị giả mạo Trong tấn công bằng các chương trình cục bộ, dịch vụ bị lạm dụng có lỗ hổng có thể khai thác được từ
xa, nó cho phép kẻ tấn công khởi tạo lưu lượng tấn công Việc vá các lỗ hổng này sẽ ngăn chặn được việc lạm dụng các chương trình cục bộ này, trong khi việc phòng thủ chống lại tấn công phản xạ phức tạp hơn nhiều
Trang 20Các chương trình cục bộ không bị phát hiện bởi các công cụ quét cổng từ xa
(chẳng hạn như RID hoặc Zombie Zapper), chúng cũng không bị phát hiện bởi việc chạy các bộ quét hệ thống tệp như find_ddos của NIPC hoặc các phần mềm diệt virus
Điều này là do không có phần mềm độc hại nào, không có cổng lạ nào mở, chỉ là các
lỗ hổng có thể khai thác được từ xa Các máy có lỗ hổng có thể được xác định bởi việc giám sát lưu lượng mạng, tìm kiếm lưu lượng tấn công DDoS Chúng cũng bị phát hiện bằng việc quét các lỗ hổng một cách thông thường với các chương trình chẳng
hạn như Nessus
Một ví dụ của tấn công với chương trình cục bộ phát tràn gói tin ICMP Echo Request bằng lệnh ping tới địa chỉ www.whitehouse.gov vào ngày 4 tháng 5 năm 2001 [13, ch.4] Cuộc tấn công này lạm dụng lỗ hổng của máy chủ Microsoft IIS để chạy
lệnh ping và bắt đầu phát tràn Nó được thông báo rằng hàng trăm máy tính đã phát
tràn cùng lúc Các máy tính này được xác định là chạy hệ điều hành Windows 2000 và
NT, và một vài người quản trị đã thấy rằng lệnh PING.EXE đã chạy trên máy của họ nhắm vào địa chỉ IP của tên miền www.whitehouse.gov Bởi vì ping là một ứng dụng
thông thường, các phần mềm diệt virus không giúp gì được trong việc phát hiện và vô hiệu hoá cuộc tấn công này
1.3 Các phương pháp thực hiện tấn công DoS
1.3.1 Khai thác một lỗ hổng
Tấn công bằng cách khai thác lỗ hổng là cách gửi các gói tin để tìm kiếm lỗ hổng đến máy đích Một ví dụ là cách xử lý không chuẩn các gói tin đã bị phân mảnh của Win 95, Win NT và một số nhân Linux Một cách tổng quát, khi 1 gói tin quá lớn đối với 1 mạng, nó sẽ được cắt thành 2 hay nhiều gói nhỏ hơn và các gói này được đánh số theo thứ tự Số thứ tự này chỉ ra vị trí của gói tin đó trong gói tin ban đầu Ở máy đích các gói tin nhỏ này sẽ được hợp nhất lại để tạo thành gói tin ban đầu dựa trên
số thứ tự của chúng Các lỗ hổng trên máy đích làm cho hệ thống mất cân bằng khi nhận được các gói tin nhỏ này sai thứ tự và làm cho hệ thống bị treo, bị sụp hoặc bị khởi động lại Các lỗ hổng loại này có thể được khám phá bằng cách gửi các gói tin UDP với số thứ tự lặp lại tới máy nạn nhân Khi một lỗ hổng được vá, các tấn công kiểu này không còn hiệu quả nữa
Trang 21Block), lưu thông tin về máy trạm Sau đó máy chủ gửi cho máy trạm một gói tin SYN-ACK, thông báo với máy trạm rằng yêu cầu dịch vụ của máy trạm sẽ được xử lý, báo nhận số tuần tự của máy trạm và gửi thông tin về số tuần tự khởi đầu của máy chủ (trong Hình 1.7 số tuần tự khởi đầu của máy chủ là y) Khi nhận được gói tin SYN-ACK từ máy chủ, máy trạm cấp phát một vùng nhớ TCB, gửi trả lời đến máy chủ bằng một gói tin ACK báo nhận số tuần tự của máy chủ, hoàn thành việc mở một kết nối
Việc trao đổi gói tin để mở một kết nối TCP giữa máy trạm và máy chủ như trên gọi là bắt tay ba bước
Hình 1.7: Bắt tay ba bước để mở một kết nối TCP
Khả năng lạm dụng nằm ở sự cấp phát tài nguyên sớm của máy chủ Khi máy chủ cấp phát TCB và trả lời máy trạm với một gói tin SYN-ACK, kết nối được coi là nửa mở Tài nguyên đã được máy chủ cấp phát (TCB) sẽ bị treo cho đến khi máy chủ nhận được gói tin ACK hoặc gói tin RST từ máy trạm (yêu cầu đóng kết nối) hoặc hết một khoảng thời gian timeout của tài nguyên đó, máy chủ sau đó sẽ đóng kết nối và giải phóng bộ nhớ đệm đã cấp phát Trong suốt quá trình tấn công phát tràn gói tin TCP SYN, kẻ tấn công tạo ra nhiều kết nối nửa mở bằng cách giả mạo địa chỉ IP nguồn Các yêu cầu này nhanh chóng làm cạn kiệt bộ nhớ TCB của máy chủ và máy chủ sẽ không tiếp nhận được thêm các kết nối khác
Để giữ cho không gian bộ nhớ đệm bị chiếm trong khoảng thời gian mong muốn, kẻ tấn công phải tạo ra một dòng đều đặn các gói tin SYN gửi đến máy nạn nhân để giành lại các tài nguyên vừa mới được giải phóng do hết thời gian timeout hoặc sự hoàn thành của các kết nối TCP thông thường
Trang 22Tấn công phát tràn các gói tin TCP SYN là một dạng tấn công nguy hiểm, trong
đó máy chủ nhận được một số lượng lớn các gói tin SYN và không phân biệt được gói tin SYN nào là bình thường, gói nào là gói tấn công
Để thực hiện thành công tấn công phát tràn các gói tin TCP SYN, kẻ tấn công phải xác định được một cổng TCP mở trên máy nạn nhân Sau đó kẻ tấn công tạo ra một dòng các gói tin tương đối nhỏ, vào khoảng 10 gói tin trên 1 phút, có thể làm treo tài nguyên trên máy nạn nhân
Tấn công giao thức thường khó khắc phục, nếu việc khắc phục yêu cầu thay đổi giao thức thì cả bên gửi và bên nhận đều phải sử dụng phiên bản giao thức mới Việc thay đổi các giao thức chạy trên Internet đã được chỉ ra là rất khó Để giải quyết vấn đề tấn công giao thức người ta có thể sử dụng TCP SYN cookies
Một cách tổng quát, tấn công giao thức nhắm đến sự bất đối xứng của các giao thức Sự bất đối xứng này cho phép kẻ tấn công (ngồi tại máy trạm) sử dụng phần lớn tài nguyên của máy chủ, trong khi sử dụng ít hơn tài nguyên tại máy trạm Vì vậy chỉ
có thể khắc phục kiểu tấn công này bằng cách tạo ra các bản vá giao thức làm cân bằng
sự mất cân đối trên
1.3.3 Tấn công các hàm chức năng
Có thể tấn công vào các thuật toán, chẳng hạn như các hàm băm Các hàm băm thường thực hiện các thao tác tính toán với thời gian tỷ lệ tuyến tính so với dữ liệu đầu vào Bằng cách gửi các giá trị đầu vào làm cho các hàm băm tính toán với thời gian xấu nhất, kẻ tấn công có thể làm cho ứng dụng thực hiện công việc của nó với thời gian tỷ lệ số mũ so với dữ liệu đầu vào
Kẻ tấn công có thể tự do gửi dữ liệu đến máy chủ, các dữ liệu này được các hàm băm có lỗ hổng xử lý, việc này dẫn đến CPU của máy chủ mất nhiều thời gian để
xử lý tác vụ, khiến cho một tác vụ bình thường hoàn thành trong vài giây trở thành mất vài phút để hoàn thành
Nạn nhân có thể bảo vệ máy chủ khỏi loại tấn công này bằng cách thay đổi hoặc gỡ bỏ các hàm chức năng có lỗ hổng Nếu các hàm chức năng này rất quan trọng đối với sự hoạt động hiệu quả của máy chủ thì việc không cho các hàm chức năng hoạt động hoặc gỡ bỏ nó cũng có thể coi là một sự phá hoại tương tự như cuộc tấn công
1.3.4 Tấn công một ứng dụng
Kẻ tấn công có thể nhắm tới một ứng dụng cụ thể và gửi các gói tin để đạt được giới hạn về số lượng các yêu cầu dịch vụ mà ứng dụng có thể xử lý Ví dụ một máy chủ web cần phải tốn một khoảng thời gian để phục vụ yêu cầu tải trang web thông thường, tồn tại một số xác định số lượng các yêu cầu lớn nhất trên một giây mà máy chủ web có thể phục vụ được Giả sử một máy chủ web có thể xử lý 1000 yêu cầu trên
1 giây để tải về các tập tin tạo nên trang chủ của một công ty, khi đó nhiều nhất là
1000 yêu cầu của khách hàng có thể được xử lý đồng thời Giả sử tải bình thường của máy chủ web là 100 yêu cầu trên 1 giây (tức là bằng 1 phần 10 khả năng xử lý)
Trang 23Nếu một kẻ tấn công có thể điều khiển 10.000 máy tính và có thể bắt buộc mỗi máy tạo ra một yêu cầu trong mỗi khoảng thời gian 10 giây, như vậy tính trung bình là
1000 yêu cầu trên 1 giây, và cộng thêm với lưu lượng yêu cầu thông thường thành 110% khả năng xử lý của máy chủ, làm cho một phần lớn các yêu cầu thông thường không được xử lý
1.3.5 Tấn công một tài nguyên
Kẻ tấn công có thể nhằm vào một tài nguyên cụ thể chẳng hạn CPU hoặc khả năng chuyển mạch của router Vào tháng 1 năm 2001, Microsoft bị ngừng hoạt động
và có thông báo là do lỗi cấu hình mạng Sự ngừng hoạt động này phá huỷ một số lượng lớn tài sản của Microsoft Khi các thông tin của cuộc tấn công lộ ra cho thấy rằng tất cả các máy chủ DNS của Microsoft đều đã nằm trên một phân đoạn mạng, được phục vụ bởi cùng một router Kẻ tấn công khi đó nhằm vào cơ sở hạ tầng tìm đường ngay trước các máy chủ này và làm cho các dịch vụ trực tuyến của Microsoft bị mất
Microsoft sau đó nhanh chóng phân tán các máy chủ tên miền và cung cấp thêm các đường mạng dẫn đến các máy chủ để làm khó hơn cho ai đó muốn làm cho tất cả các máy chủ này không hoạt động nữa Loại bỏ các đường tắc nghẽn cổ chai và tăng băng thông có thể giải quyết loại tấn công tài nguyên này nhưng khi đó kẻ tấn công có thể trở lại với một cuộc tấn công mạnh hơn Đối với những công ty có ít tài nguyên hơn Microsoft thì việc cung cấp thêm đường mạng và phân tán địa lý các dịch vụ là một lựa chọn liên quan đến tài chính không thể thực hiện được
Các tài nguyên hạ tầng mạng là những mục tiêu hấp dẫn bởi vì tấn công vào các tài nguyên hạ tầng mạng gây ảnh hưởng đến các phân đoạn mạng lớn của người dùng Internet Tìm đường là một dịch vụ hạ tầng mạng Internet cơ bản có thể là mục tiêu của các cuộc tấn công DoS Dịch vụ tìm đường duy trì thông tin cần thiết để gửi các gói tin đến đích của nó, và vì vậy nó rất quan trọng đối với sự hoạt động của mạng Internet Ở mức độ cao, dịch vụ tìm đường này hoạt động bằng cách trao đổi thông tin
về đường đi giữa các router trên Internet, các router này xây dựng các bảng để giúp cho việc đưa ra quyết định gửi các gói tin đi đâu Khi một gói tin đến router, router sẽ tra cứu các bảng để xác định sẽ gửi gói tin đi đâu tiếp theo để đến được đích của nó
Dịch vụ tìm đường có thể bị tấn công theo nhiều cách khác nhau để tạo nên từ chối dịch vụ Bên cạnh việc phát tràn các router, các giao thức dùng để trao đổi thông tin có các lỗ hổng tiềm tàng khác nhau có thể bị khai thác để từ chối dịch vụ Đó không chỉ là các lỗi trong sự thực hiện của các giao thức, mà còn là các đặc điểm của việc thiết kế các giao thức có thể bị lạm dụng bởi kẻ tấn công Chẳng hạn kẻ tấn công
có nhiều cách khác nhau để làm đầy các bảng của router với các bản ghi không quan trọng, vì vậy làm cho không có chỗ cho các bản ghi quan trọng hoặc làm cho router chạy chậm hơn Một router có thể bị điều khiển bởi một kẻ tấn công để gửi gói tin sai
vị trí, vì vậy ngăn chặn việc chuyển gói tin của router này Hoặc dịch vụ tìm đường có thể bị làm cho mất cân bằng bằng cách bắt buộc sự thay đổi thường xuyên của thông
Trang 24tin tìm đường Có một số cách tiếp cận hiệu quả để chống lại các tấn công này và các nghiên cứu vẫn tiếp tục diễn ra để đề ra phương pháp tốt hơn bảo vệ dịch vụ hạ tầng mạng quan trọng này
1.3.6 Phát tràn thuần tuý
Với một số lượng lớn các chương trình phát gói tin, có thể dễ dàng gửi các gói tin bất kỳ một cách nhanh nhất có thể từ mỗi máy (mỗi chương trình nằm trên một máy), và tiêu thụ tất cả băng thông hiện có của nạn nhân Đây được gọi là tấn công tiêu thụ băng thông Nạn nhân không thể phòng thủ chống lại loại tấn công này một mình, bởi vì các gói tin thông thường bị loại bỏ tại lối vào của router giữa nhà cung cấp dịch vụ Internet và mạng của nạn nhân Dẫn đến nạn nhân thường xuyên yêu cầu giúp đỡ từ nhà cung cấp dịch vụ của họ để lọc các gói tin tấn công
Trong một số trường hợp lưu lượng tấn công có thể dễ dàng bị xác định và loại
bỏ (chẳng hạn lưu lượng các gói tin UDP cỡ lớn gửi đến các cổng chưa được sử dụng, các gói tin với giá trị giao thức IP là 255) Trong một số trường hợp khác rất khó để xác định các trường tiêu đề của gói tin để lọc ra các gói tin của lưu lượng tấn công (chẳng hạn các gói tin DNS trả về của các yêu cầu DNS bình thường của các máy trạm trong mạng nạn nhân, hoặc một phát tràn có tính chất phân tán diện rộng các gói tin yêu cầu HTTP thông thường) Nếu điều này xảy ra, việc lọc các gói tin sẽ đơn giản bảo vệ tài nguyên của cả nạn nhân và nhà cung cấp dịch vụ Internet, nhưng lưu lượng thuê bao của nạn nhân sẽ bị kéo về không, như vậy đạt được hiệu quả của cuộc tấn công DoS
Trang 25Chương 2: TẤN CÔNG TỪ CHỐI DỊCH VỤ TỐC ĐỘ THẤP
Tấn công LDoS (Low rate DoS) [10, 11] được biết tới như là loại tấn công rất khó để phát hiện và phòng chống Kẻ tấn công khai thác điểm yếu của giao thức TCP
là cơ chế timeout để thực hiện tấn công LDoS Chương này sẽ phân tích và đưa ra giải pháp cho thuật toán RED [6] để tăng thông lượng TCP trong điều kiện có sự tấn công LDoS xảy ra Tư tưởng chủ yếu là xây dựng bộ lọc các gói tin tấn công trước khi các gói tin này được chuyển đến bộ xử lý RED, mục đích để phân loại các gói tin bình thường và các gói tin tấn công
2.1 Khái niệm chung
2.1.1 Các tên gọi của tấn công LDoS
a) Tấn công kiểu chuột chù
Năm 2003, tấn công kiểu chuột chù được đưa ra bởi Aleksandar Kuzmanovic
và Edward W Knightly để gọi tấn công LDoS Tấn công kiểu chuột chù là một tên gọi trực quan của tấn công LDoS, bắt nguồn từ hình ảnh thực tế của con chuột chù Mặc
dù là một động vật nhỏ bé nhưng chuột chù lại rất hung hăng, nó có thể tấn công rất dữ dội và giết chết các con vật lớn hơn nó rất nhiều, với một vết cắn có độc
Hình 2.1: Chuột chù
Nhằm tránh sự phát hiện của các kỹ thuật chống tấn công DoS, tấn công LDoS gửi các gói tin với một tốc độ trung bình tương đối thấp nhằm hạn chế thông lượng của các kết nối TCP dẫn đến hiện tượng từ chối dịch vụ của chúng Vì vậy, kiểu tấn công này có thể làm tổn thương mạng như là một con chuột chù tấn công một con voi
b) Tấn công DoS ngắt quãng
Một tên gọi khác của tấn công LDoS là tấn công DoS ngắt quãng được đưa ra bởi Xiapu Luo và Rocky K C Chang Bằng cách sử dụng các xung tấn công, kẻ tấn công tạo ra một chuỗi các tín hiệu báo tắc nghẽn mạng cho tiến trình TCP gửi, khi đó cửa sổ tắc nghẽn mạng của bên gửi sẽ bị giảm xuống bằng 1, đồng nghĩa với việc tiến trình TCP gửi lúc này chỉ được gửi 1 gói tin đi Kết quả là làm cho thông lượng của các kết nối TCP giảm một cách nghiêm trọng
c) Tấn công DoS tốc độ thấp
Trang 26Tấn công DoS tốc độ thấp là cụm từ thường dùng để chỉ loại tấn công này
LDDoS là viết tắt của Low-Rate Distributed DoS (tấn công DoS phân tán tốc độ thấp)
2.1.2 Các đặc điểm của LDoS
Cho đến nay, tấn công DoS vẫn là mối đe doạ lớn nhất cho an ninh mạng bởi vì
nó thực hiện rất đơn giản và với chi phí thấp Mặt khác so với tấn công DoS phân tán truyền thống, việc phát hiện tấn công DoS tốc độ thấp khó hơn do đặc điểm gửi các gói tin với tốc độ thấp của nó Các thuật toán phát hiện tấn công DoS phát tràn dường như không hoạt động cho tấn công DoS tốc độ thấp Chính vì vậy, có thể nói rằng tấn công DoS tốc độ thấp sẽ là loại tấn công chủ yếu trong tương lai
a) Khó phát hiện
Trong tấn công DoS truyền thống, kẻ tấn công sử dụng một số lượng lớn các máy tính đã cài chương trình phát gói tin và mỗi chương trình trên mỗi máy bắt đầu gửi các gói tin đến máy nạn nhân với tốc độ cao Điều này có vẻ hiệu quả nhưng nó có một hạn chế tiềm tàng đó là bản chất gửi gói tin tốc độ cao của loại tấn công này có thể
bị phát hiện bởi các bộ giám sát mạng thống kê cho thấy các gói tin tăng bất thường
Vì vậy kẻ tấn công có thể bị phát hiện và hiệu quả của cuộc tấn công bị giảm thiểu
Ngược lại, tấn công DoS tốc độ thấp rất khó bị phát hiện bởi các bộ giám sát mạng, các bộ giám sát mạng không thấy có hiện tượng bất thường nào vì tấn công DoS tốc độ thấp phát gói tin với tốc độ trung bình thấp Đây là lý do chính tại sao tấn công DoS tốc độ thấp dễ dàng thoát khỏi sự phát hiện
Trong điều kiện bị tấn công bởi tấn công phát tràn, lưu lượng mạng bị tiêu thụ khá lớn và máy chủ bận một cách bất thường Với tấn công DoS tốc độ thấp, máy chủ
bị đánh lừa bằng các tín hiệu báo bận và bắt buộc hệ thống thay đổi trạng thái của nó
và lưu lượng mạng của nó giảm xuống rất thấp Máy chủ ở trạng thái nhàn rỗi trong suốt cuộc tấn công, kết quả là mạng bị tấn công trong một khoảng thời gian dài mà không bị phát hiện
b) Tấn công với chi phí thấp
Trong tấn công DoS phát tràn truyền thống, kẻ tấn công phải điều khiển nhiều máy gửi đi các dòng gói tin liên tục Trong khi đó đối với tấn công DoS tốc độ thấp, việc chỉ gửi các dòng gói tin tốc độ cao nhưng với thời gian ngắn hơn nhiều cũng đem lại hiệu quả tương tự Trong tấn công DoS tốc độ thấp, chỉ cần có một máy tấn công cũng có thể làm tổn thương mạng Chính vì vậy, tấn công DoS tốc độ thấp có chi phí thực hiện thấp hơn các tấn công DoS khác và điều này làm hấp dẫn đối với những kẻ tấn công
2.1.3 Cơ chế Timeout của giao thức TCP
a) Điều khiển tắc nghẽn của giao thức TCP
Giao thức TCP áp dụng một số các cơ chế để đạt được hiệu năng cao và một trong những cơ chế đó chính là cơ chế điều khiển tắc nghẽn [20, 22] Phụ thuộc vào mức độ của tắc nghẽn mạng, cơ chế này có thể hoạt động ở 2 miền thời gian Ở miền thời gian nhỏ hơn cỡ thời gian đi về của một gói tin (khoảng từ 10 đến 100ms), điều
Trang 27khiển tăng theo cấp số cộng và giảm theo cấp số nhân (AIMD – Additive Increase Multiplicative Decrease) được thực hiện với mục đích giữ cho việc truyền gói tin của mỗi dòng gói tin ở một tốc độ hợp lý so với băng thông của liên kết nghẽn cổ chai của mạng Khi tắc nghẽn mạng trở nên gay gắt và nguy hiểm hơn, có rất nhiều gói tin bị mất Ở thời điểm đó, giao thức TCP sẽ hoạt động ở miền thời gian dài hơn của những khoảng thời gian hết hạn truyền phát lại gói tin (1s, 2s, 4s, 8s,…), đây là nơi mà tấn công DoS tốc độ thấp khai thác
Cơ chế điều khiển tắc nghẽn của giao thức TCP áp dụng khái niệm cửa sổ tắc nghẽn (cwnd) Cwnd là số lượng gói tin TCP đã gửi đi và chưa có báo nhận Dựa trên các thông tin phản hồi từ mạng, mỗi tiến trình TCP phía gửi sẽ sử dụng cửa sổ tắc nghẽn để thay đổi cửa sổ truyền gói tin Nó xét đến khả năng của bên nhận và đặc điểm của mạng, do đó cơ chế này giúp tránh tắc nghẽn Với tắc nghẽn mạng tạm thời,
cơ chế truyền phát lại nhanh được thực hiện khi tiến trình TCP bên gửi nhận được 3 gói tin ACK giống nhau cùng yêu cầu bên gửi một gói tin Trong trường hợp tắc nghẽn mạng nghiêm trọng, nếu 3 gói tin ACK giống nhau không về được đến bên gửi, cơ chế timeout được thực hiện; nó có nghĩa là, mặc dù khoảng thời gian chờ phát lại gói tin (RTO) đã hết, một gói tin vẫn chưa được báo nhận
Tính toán thời gian chờ phát lại gói tin theo [17] như sau:
Ký hiệu:
RTO: Thời gian chờ phát lại gói tin hiện tại
RTT: Viết tắt của thời gian đi về của một gói tin
RTTVAR: Sai khác thời gian giữa hai giá trị RTT của hai lần tính RTT liên
tiếp (đã làm trơn)
SRTT: Thời gian đi về của một gói tin (đã làm trơn), dựa trên việc đo lường
thời gian đi về của gói tin hiện tại
G: Đơn vị thời gian của đồng hồ (thường ≤ 100ms)
RTO = SRTT + max(G, 4 * RTTVAR)
Khi tính toán được giá trị RTT tiếp theo là R’ thì tiến trình TCP phía gửi đặt:
RTTVAR = (1 – β) * RTTVAR + β * |SRTT – R’|
SRTT = (1 - α) * SRTT + α * R’
Trong đó α = 1/8 và β = 1/4 (như đề nghị trong [9])
RTO = max(minRTO, SRTT + max(G, 4 * RTTVAR))
Trong đó minRTO = 1s (như đề nghị trong [18])
Trang 28Để tính được thời gian chờ phát lại gói tin hiện tại (RTO) thì cần phải tính được giá trị RTT hiện tại Các nhà nghiên cứu đã chỉ ra rằng tính toán RTT cho mỗi gói tin không dẫn đến ước lượng giá trị RTT tốt hơn [18] Một ví dụ tính toán giá trị RTT hiện tại được mô tả như hình 2.2 (theo [19, 23])
Hình 2.2: Tính toán giá trị RTT hiện thời
Chương trình sock gửi 128 gói tin, mỗi gói tin là 256 bytes từ máy slip đến dịch vụ
discard của máy vangogh Tổng thời gian truyền là 45 giây và ở đây chỉ đề cập việc
gửi các gói tin dữ liệu và nhận các gói tin báo nhận trong 3s đầu
Trong khi truyền dữ liệu trên máy slip người ta chạy chương trình tcpdump ghi lại thời
điểm gửi và nhận các gói tin
Trang 29Trong hình 2.2 đánh số các gói tin từ 1 đến 13 và 15 theo thứ tự chúng được gửi và
nhận trên máy slip
Ba dấu ngoặc nhọn bên trái thể hiện ba gói tin được tính RTT Không phải tất cả các gói tin đều được tính RTT
Một bộ đếm thời gian cho kết nối này được khởi động khi gói tin số 1 được gửi đi và
tắt khi gói tin báo nhận của nó (gói số 2) trở về đến máy slip Khi gói tin số 3 được gửi
đi thì bộ đếm thời gian này lại được bật Khi gói tin 4 được gửi đi 2.4 (ms) sau thì nó
sẽ không được định thời (và như vậy sẽ không được tính RTT) bởi vì bộ đếm thời gian
đã được bật Khi gói 5 trở về đến máy slip báo nhận dữ liệu đã được định thời thì giá
trị RTT hiện tại được tính và bộ đếm thời gian cũng bị tắt Bộ đếm thời gian lại được bật trở lại khi gói 6 được gửi đi và tắt khi gói tin báo nhận của nó (gói 10) trở về đến
máy slip Gói 7 và gói 9 không được định thời vì bộ đếm thời gian đã được bật Cũng
vậy khi gói 8 được nhận (ACK 769 tức là yêu cầu bên gửi gửi các byte dữ liệu từ 769) thì không có gì để cập nhật cho RTT bởi vì báo nhận đó không phải cho byte đã được định thời (byte được định thời là 1025 khi gói 6 được gửi đi)
Khi tắc nghẽn mạng trở nên nghiêm trọng, cửa sổ tắc nghẽn của tiến trình TCP phía gửi giảm xuống còn một gói tin và giả sử giá trị RTO được thiết lập tại thời điểm
đó là minRTO (=1s) (điều này có thể xảy ra nếu minRTO > SRTT + max(G, 4 * RTTVAR) → RTO=minRTO) Khi đó tiến trình TCP phía gửi tăng gấp đôi RTO từ 1s lên thành 2s và phát lại gói tin Sau khoảng thời gian RTO là 2s nếu gói tin vẫn chưa được báo nhận thì giá trị RTO lại được tăng gấp đôi thành 4s và cứ như thế Đây là cơ chế lùi thời gian phát lại gói tin theo hàm số mũ để tiến trình TCP bên gửi thực hiện khi có hiện tượng tắc nghẽn mạng nghiêm trọng xảy ra, nó được chọn để thực hiện một cuộc tấn công LDoS
b) Điểm yếu của cơ chế Timeout
Cơ chế Timeout của giao thức TCP thích hợp với tắc nghẽn mạng nghiêm trọng xảy ra nhưng mặt khác nó cũng có sự rủi ro tiềm tàng bởi lỗ hổng cơ bản của nó Theo
cơ chế này giá trị nhỏ nhất mà RTO có thể nhận là 1s và trong lúc lùi thời gian phát lại gói tin theo hàm số mũ thì RTO nhận các giá trị là bội của 1 Do đặc điểm này của thuật toán, kẻ tấn công có thể tấn công bằng cách sử dụng các khoảng thời gian cách đều nhau, trong mỗi khoảng thời gian đó kẻ tấn công gửi các gói tin với tốc độ cao để làm tràn bộ đệm của kết nối nghẽn cổ chai Nếu kẻ tấn công biết thời gian của bên gửi, hắn sẽ thực hiện tấn công “xung vuông” đó và liên tiếp làm cho bên gửi rơi vào trạng thái timeout trong khi thông lượng của máy chủ xấp xỉ bằng không
2.1.4 Tấn công từ chối dịch vụ tốc độ thấp nhằm vào giao thức TCP
Ý tưởng cơ bản của loại tấn công này là khai thác điểm yếu của cơ chế Timeout Trong loại tấn công này, kẻ tấn công sẽ truyền những xung vuông ngắn với chu kỳ gần với giá trị RTO của các kết nối TCP đang diễn ra Các xung ngắn này làm cho các gói tin bị mất, dẫn đến các dòng TCP rơi vào trạng thái timeout, và liên tục thất bại khi cố gắng phát lại gói tin Do đó, thông lượng hầu như là bằng không
Trang 30Hình 2.3: Tấn công LDoS
Tấn công DoS tốc độ thấp nhằm vào giao thức TCP có 3 thuộc tính: tốc độ gửi gói tin (the send rate), độ dài thời gian của một lần bùng nổ gói tin (the burst length), khoảng thời gian cách nhau giữa 2 lần bùng nổ gói tin liên tiếp tính từ thời điểm bắt đầu của lần bùng nổ gói tin thứ nhất cho đến thời điểm bắt đầu của lần bùng nổ gói tin tiếp theo (the inter-burst period)
Tốc độ mà kẻ tấn công gửi các gói tin vào mạng được gọi là tốc độ gửi gói tin (Rb)
Để làm cho mất gói tin và làm cho các dòng TCP rơi vào trạng thái timeout thì tốc độ gửi gói tin phải lớn hơn băng thông của kết nối nghẽn cổ chai
Độ dài thời gian của một lần bùng nổ gói tin là khoảng thời gian mà kẻ tấn công phát tràn gói tin trong mỗi lần bùng nổ gói tin (Tb) Nó phụ thuộc vào giá trị RTT của mỗi dòng kết nối TCP, phụ thuộc vào tốc độ gửi gói tin và băng thông của kết nối nghẽn cổ chai Nếu độ dài thời gian của một lần bùng nổ gói tin quá dài, kẻ tấn công có thể bị phát hiện
Khoảng thời gian cách nhau giữa 2 lần bùng nổ gói tin liên tiếp là tần số mà kẻ tấn công phát tràn gói tin (Ta) Kẻ tấn công mong muốn chọn được giá trị của thuộc tính này tương ứng một cách chính xác với giá trị RTO bởi vì kẻ tấn công có thể thay đổi thông lượng của các dòng TCP trong khi gửi đi ít nhất các gói tin và giảm nguy cơ bị phát hiện
bỏ gói tin của thuật toán RED-PD [12]
2.2.2 Cơ chế hỗ trợ thiết bị đầu cuối
Trang 31Ý tưởng chính của các cơ chế loại này là làm cho giao thức TCP mềm dẻo hơn đối với tấn công LDoS bằng cách áp dụng một thiết kế giao thức cẩn thận hơn (làm cho các dòng TCP phục hồi nhanh hơn sau khoảng thời gian tấn công), cụ thể là tăng kích thước cửa sổ ban đầu từ 1 gói tin lên một giá trị lớn hơn 2 và nhỏ hơn 4 gói tin (khoảng 4KBytes) Nhưng dễ thấy việc tăng kích thước cửa sổ ban đầu này có thể dẫn đến hiện tượng tắc nghẽn mạng kéo dài dẫn đến việc sụp đổ mạng Mặt khác, điểm yếu của giao thức TCP đối với tấn công LDoS vẫn tồn tại bởi vì một khi khoảng thời gian phát tràn gói tin của các nguồn tấn công Tb cỡ thời gian đi về RTT của các dòng TCP thì việc tăng số lượng gói tin của cửa sổ ban đầu cũng không giúp gì trong việc ngăn chặn tấn công
Bởi vì tấn công LDoS khai thác tính đồng nhất của tham số minRTO (giá trị nhỏ nhất của RTO là minRTO = 1s và RTO chỉ có thể lấy các giá trị là bội của minRTO khi có hiện tượng timeout xảy ra) nên để chống tấn công LDoS thì các thiết
bị đầu cuối có thể cho minRTO các giá trị ngẫu nhiên Tuy nhiên điều này làm giảm hiệu năng của giao thức TCP do tính không đồng nhất của thời gian đi về RTT của các dòng gói tin TCP (theo [11])
2.3 Giải thuật RRED
Như đã đề cập, các dòng gói tin tấn công DoS tốc độ thấp có tốc độ gửi gói tin trung bình thấp nhưng truyền các gói tin theo các xung tốc độ cao trong những khoảng thời gian ngắn Các mẫu lưu lượng như vậy có thể được các thuật toán ở router xác định là tấn công DoS hay không? Câu hỏi này sẽ được giải đáp ở đây Các cơ chế xử
lý gói tin theo dòng ở router có thể được phân loại thành cơ chế xếp lịch và cơ chế loại
bỏ gói tin theo ưu tiên Thực hiện cơ chế loại bỏ gói tin theo ưu tiên dễ hơn so với thực hiện cơ chế xếp lịch Cùng với các lợi thế khác của cơ chế loại bỏ gói tin theo ưu tiên
so với cơ chế xếp lịch, cơ chế loại bỏ gói tin theo ưu tiên sẽ được tập trung nghiên cứu
ở đây, đặc biệt dùng để phát hiện các dòng tấn công DoS và cơ chế này cũng đạt được
sự công bằng giữa các dòng có khả năng thích ứng và các dòng không có khả năng thích ứng với điều kiện mạng Phần này sẽ giải thích về thiết kế và thực hiện thuật toán lọc tốc độ thấp RRED, sau đây tôi gọi là LF-RED (the Low-rate Filter LF-RED), 2 tên gọi này có thể dùng hoán đổi vị trí cho nhau và cùng là một thuật toán
Trang 32Hình 2.4: Kiến trúc của LF-RED
Hình 2.4 mô tả kiến trúc cơ bản của thuật toán LF-RED Một khối phát hiện và lọc gói tin (DF) được đặt trước khối RED thông thường trên một router Ý tưởng cơ bản của thuật toán LF-RED là phát hiện và lọc ra các gói tin đang đến router từ các dòng tấn công DoS tốc độ thấp trước khi nó được chuyển đến khối RED
Các gói tin TCP đến router thuộc các dòng gói tin khác nhau Có 5 yếu tố được sử dụng để định nghĩa một dòng gói tin bao gồm: địa chỉ IP nguồn, địa chỉ cổng nguồn, địa chỉ IP đích, địa chỉ cổng đích, giao thức của gói tin Một biến F.I được dùng để xác định dòng gói tin F là dòng TCP thông thường hay là dòng tấn công DoS tốc độ thấp F.I được tính như sau:
Nếu một gói tin từ dòng F được coi là một gói tin tấn công thì F.I giảm một đơn
1 Gói tin này đến trong khoảng thời gian ngắn kể từ thời điểm cuối cùng một gói tin của dòng F bị lọc ra bởi khối DF
2 Gói tin này đến trong khoảng thời gian ngắn kể từ thời điểm cuối cùng một gói tin của bất kỳ dòng nào đến router bị lọc ra bởi khối RED
Khoảng thời gian ngắn được định nghĩa là [Tmax, Tmax + T*], trong đó:
Tmax = MAX(F.T1, T2) Trong công thức này, với mỗi dòng F (không phân biệt là dòng TCP thông thường hay dòng tấn công DoS tốc độ thấp):
Trang 33 F.T1 là thời gian đến của gói tin cuối cùng từ dòng F bị loại ra bởi khối DF
T2 là thời gian đến của gói tin cuối cùng từ bất kỳ dòng nào bị loại ra bởi khối RED
T* là một hằng số và được chọn sao cho có thể lọc ra hầu hết các gói tin tấn công và không lọc hầu hết các gói tin thông thường Theo [3] chọn T* = 10 (ms) đạt được hiệu quả lọc ra các gói tin tấn công tốc độ thấp
Nếu thời gian đến của một gói tin thuộc dòng F rơi vào khoảng này thì gói tin đó được coi là gói tin tấn công Chú ý rằng giá trị T1 là khác nhau đối với mỗi dòng còn giá trị
T2 là chung cho tất cả các dòng, chúng lần lượt lưu giữ đặc điểm cơ bản của dòng tấn công DoS tốc độ thấp và ảnh hưởng tổng thể của cuộc tấn công đối với toàn bộ mạng
Để lưu thông tin của một số lượng lớn các dòng gói tin đến router người ta sử dụng kỹ thuật Bloom-filters [2]
Bộ lọc Bloom được đưa ra năm 1970 bởi H Bloom
Bộ lọc Bloom là một cấu trúc dữ liệu được sử dụng để hỗ trợ cho các truy vấn
để kiểm tra xem một phần tử có thuộc vào một tập hợp hay không Các đặc điểm chính của bộ lọc Bloom là:
Không gian bộ nhớ dùng để lưu bộ lọc Bloom nhỏ hơn so với tổng số dữ liệu thuộc tập hợp
Thời gian để kiểm tra một phần tử có thuộc vào một tập hợp hay không không phụ thuộc vào số phần tử của tập hợp đó
Nếu phần tử thuộc vào tập hợp thì câu trả lời luôn đúng
Nếu phần tử không thuộc vào tập hợp thì câu trả lời vẫn có thể là có thuộc vào tập hợp vì cách sử dụng hàm băm, trong thực tế luôn có một tần suất lỗi này và
có thể điều khiển được
Một bộ lọc Bloom dựa trên một mảng gồm m bít (b1, b2, …, bm) được khởi tạo
là vectơ không (0, 0, …, 0)
Người ta sử dụng k hàm băm (h1, h2, …, hk) mỗi hàm trả về giá trị từ 1 đến m
Để lưu một phần tử vào mảng bít trên, mỗi hàm băm sẽ được áp dụng vào phần
tử đó Dựa trên mảng giá trị trả về (r1, r2, …, rk) đặt các bít trong mảng b ở các vị trí tương ứng thành 1 Bởi vì có k hàm băm nên nhiều nhất là k bít trong mảng b được đặt giá trị là 1 (có thể ít hơn vì một vài hàm băm có thể trả về cùng một giá trị) Hình 2.5
mô tả một bộ lọc Bloom với m = 16, k = 4 và e là phần tử cần lưu vào mảng bít
Trang 34Hình 2.5: Một bộ lọc Bloom
Để kiểm tra một phần tử e đã được lưu vào mảng bít hay chưa, áp dụng k hàm băm này vào phần tử e được k giá trị trả về (r1, r2, …, rk), kiểm tra xem các bít ở các vị trí tương ứng có giá trị là 1 hay không, nếu đều là 1 thì e thuộc tập hợp, nếu có bất kỳ giá trị nào là 0 thì e không thuộc tập hợp
Trong thuật toán LF-RED, bộ lọc Bloom được xây dựng với L mức, mỗi mức bao gồm N biến Ở mỗi mức có một hàm băm riêng biệt Một dòng gói tin sẽ được ánh
xạ tới L biến, mỗi biến nằm trên một mức
Nếu một gói tin thuộc một dòng được coi là gói tin tấn công, tất cả L biến của dòng F đó sẽ giảm đi một đơn vị Ngược lại, tất cả L biến của dòng F sẽ tăng lên một đơn vị nếu gói tin được coi là gói tin thông thường
Trong một mức cụ thể, một dòng tấn công DoS tốc độ thấp có thể cùng chia sẻ một biến với dòng thông thường Chính vì vậy có thể xảy ra tình huống một dòng thông thường bị “đầu độc” bởi một dòng tấn công DoS tốc độ thấp do biến chia sẻ này
Để tránh tình huống này người ta đặt cận trên là 10 và cận dưới là -1 cho mỗi biến Vì vậy một dòng tấn công DoS tốc độ thấp không thể “đầu độc” một dòng bình thường bằng việc giảm giá trị biến chia sẻ tới một giá trị âm quá thấp Khi đó biến F.I của một dòng F là giá trị lớn nhất của L biến tương ứng với dòng F đó Giả mã của thuật toán LF-RED như sau:
LFRED − ENQUE(pkt)
1: f ← LFRED–FLOWHASH(pkt)
2: Tmax ← MAX(Flow[f].T1, T2)
3: if pkt.arrivaltime [Tmax, Tmax + T*] then
4: Giảm chỉ số cục bộ đi 1 cho mỗi ô nhớ của luồng f
10: RED−ENQUE(pkt) //pass pkt to the RED block
11: if RED drops pkt then
12: T2 ← pkt.arrivaltime
Trang 352.4 Các biến thể của giải thuật RRED
Trong thời gian vừa qua đã có nhiều nghiên cứu về thuật toán RRED ([1], [15], [16]) và cũng đã đưa ra được những cải tiến nhằm tăng hiệu năng của RRED nhưng chưa giải quyết được triệt để vấn đề
2.4.1 Thuật toán của tác giả Phạm Văn Hợi
Thuật toán của tác giả Phạm Văn Hợi [1] là một biến thể của thuật toán RRED, hiệu năng của nó cao hơn hiệu năng của thuật toán gốc RRED trong một số trường hợp
cụ thể Tác giả đã cố gắng thay đổi giá trị T* theo thời gian là hằng số trong thuật toán RRED gốc Thuật toán của tác giả ưu tiên hơn cho đi qua router các gói tin của dòng
có F.I > 0 so với thuật toán gốc, vì vậy nếu 2 dòng TCP thông thường cùng ánh xạ vào một vị trí ô nhớ thì chúng “giúp đỡ” nhau, khi bắt đầu mỗi khoảng thời gian các nguồn tấn công phát tràn gói tin thì giá trị F.I của chúng > 0, các gói tin của 2 dòng TCP này
có khả năng “chống chịu” tốt hơn so với thuật toán gốc, thông lượng TCP tổng cộng vì thế tăng lên Thuật toán tác giả đưa ra chỉ phát huy hiệu quả khi có 2 dòng TCP dùng
chung vị trí ô nhớ Mã nguồn thuật toán của tác giả Phạm Văn Hợi có thể xem tại Phụ
lục A
2.4.2 Thuật toán của tác giả Nguyễn Quang Quý
Thuật toán của tác giả Nguyễn Quang Quý [16] cũng là một biến thể của thuật toán RRED, điểm khác nhau của thuật toán này so với thuật toán gốc là nó không sử dụng giá trị T* Ý tưởng của thuật toán này là phát hiện các gói tin tấn công dựa vào:
Gói tin vi phạm cơ chế timeout của giao thức TCP Một dòng TCP thông thường cần phải đợi ít nhất là 1s trước khi gửi gói tin tiếp theo sau khi bị timeout
Trạng thái hàng đợi của liên kết nghẽn cổ chai: muốn làm cho hàng đợi của liên kết nghẽn cổ chai đầy thì kẻ tấn công phải gửi gói tin nhanh hơn tốc độ gói tin
đi ra khỏi hàng đợi
Mã nguồn thuật toán của tác giả Nguyễn Quang Quý có thể xem tại Phụ lục B Giả mã
của thuật toán như sau:
NewRRED − ENQUE(pkt)
1: f ← RRED–FLOWHASH(pkt)
2: if pkt.arrivaltime – Flow[f].T1 > 1 then
3: Tăng chỉ số cục bộ lên 1 cho mỗi ô nhớ của luồng f
4: else
5: if pkt.arrivaltime – T2 < T3 then
6: Giảm chỉ số cục bộ đi 1 cho mỗi ô nhớ của luồng f
Trang 3613: RED−ENQUE(pkt) //pass pkt to the RED block
14: if RED drops pkt then
Trang 37Chương 3: PHÂN TÍCH GIẢI THUẬT RRED 3.1 Cấu hình mô phỏng
Để tính toán hiệu năng của thuật toán LF-RED trong khi có sự tấn công DoS tốc độ thấp, tôi sử dụng bộ mô phỏng NS-2 [21] và mã nguồn trong [4] Một vài thuật toán quản lý hàng đợi động bao gồm RED [6], RED-PD [12], và DropTail [5] được sử dụng để so sánh
Hình 3.1: Sơ đồ mạng trong các mô phỏng
Hình 3.1 biểu diễn sơ đồ mạng được sử dụng trong các mô phỏng Trong đó, độ lớn hàng đợi của liên kết nghẽn cổ chai là 50 gói tin Các thuật toán quản lý hàng đợi động (AQM) được sử dụng ở một hàng đợi của liên kết nghẽn cổ chai và các hàng đợi còn lại sử dụng thuật toán DropTail Các dòng gói tin FTP sử dụng giao thức TCP phiên
bản Newreno với kích thước gói tin là 1000 bytes được tạo ra từ mỗi máy trong số 30
máy người dùng thông thường Lưu lượng tấn công DoS tốc độ thấp được tạo ra bằng cách gửi các gói tin UDP với kích thước là 50 bytes từ mỗi máy trong số 20 máy tấn công
Các tham số của thuật toán LF-RED được thiết lập như sau: L = 2, N = 23, T* = 10ms, các tham số khác của thuật toán LF-RED có các giá trị mặc định của NS-2
Đối với 3 tham số của của tấn công DoS tốc độ thấp, chúng ta chọn:
Ta = 1s bởi vì theo A Kuzmanovic và E W Knightly [10, 11] thì tấn công LDoS với Ta ≈ 1s sẽ đạt được hiệu quả nhất
Tb = 200ms
Rb = 0.25Mbps vì vậy Rb tổng cộng của 20 máy tấn công là 5Mbps bằng với băng thông của liên kết nghẽn cổ chai của mạng
Trang 38Với 3 tham số này chúng ta có thể tạo ra 3 tập hợp các mô phỏng để tính toán và so sánh hiệu năng của các thuật toán AQM Với mỗi tập hợp các mô phỏng chúng ta giữ
2 tham số là hằng số và thay đổi giá trị tham số còn lại Thay đổi 3 tham số này nhằm tìm hiểu khả năng mềm dẻo của thuật toán LF-RED nếu kẻ tấn công thay đổi cách thức gửi gói tin trong cuộc tấn công
3.2 Phân tích chương trình mô phỏng
Theo mã nguồn thuật toán LF-RED [4] chúng ta có bảng tương ứng địa chỉ của các node như sau:
Bảng 3.1: Tương ứng địa chỉ của các node
Router R0 0 Router R1 1
Attacker 20 52
Các dòng gói tin TCP thông thường từ User 1 đến User 30 và các dòng gói tin UDP tấn công từ Attacker 1 đến Attacker 20 đều có đích là node Server kết nối trực tiếp với Router R1
Các dòng gói tin ánh xạ vào bộ nhớ như sau:
Bảng 3.2: Ánh xạ các dòng gói tin vào bộ nhớ
Trang 39Dòng gói tin Địa chỉ nguồn Mức 0 Mức 1