Thứ Năm, 27 tháng 2, 2014

PHÒNG CHỐNG TẤN CÔNG TỪ CHỐI DỊCH VỤ PHÂN TÁN VÀO CÁC WEBSITE

MỤC LỤC
LỜI CẢM ƠN i
TÓM TẮT ii
MỤC LỤC iii
MỞ ĐẦU 1
Chương 1: CÁC CÁCH THỨC TẤN CÔNG TỪ CHỐI DỊCH VỤ 3
1.1 Thiết lập nên mạng Agent 3
1.1.1 Tìm kiếm các máy dễ bị tổn thương 3
1.1.2 Đột nhập vào máy dễ bị tổn thương 3
1.1.3 Phương pháp lây truyền 4
1.2 Điều khiển mạng lưới máy Agent 5
1.2.1 Gửi lệnh trực tiếp 5
1.2.2 Gửi lệnh gián tiếp 5
1.2.3 Unwitting Agent 6
1.2.4 Thực hiện tấn công 7
1.3 Các cách thức tấn công từ chối dịch vụ 8
1.3.1 Khai thác các điểm yếu của mục tiêu 8
1.3.2 Tấn công vào giao thức 8
1.3.3 Tấn công vào Middleware 10
1.3.4 Tấn công vào ứng dụng 10
1.3.5 Tấn công vào tài nguyên 11
1.3.6 Pure Flooding 11
1.4 IP Spoofing 12
1.5 Xu hướng của DoS 13
iii
Chương 2: CÁC BIỆN PHÁP PHÒNG CHỐNG TRUYỀN THỐNG 14
2.1 Biện pháp pushback 14
2.2 Biện pháp Traceback 15
2.3 Biện pháp D-WARD 18
2.4 Biện pháp NetBouncer 19
2.5 Biện pháp “Proof of Work” 20
2.6 Biện pháp DefCOM 21
2.7 Biện pháp COSSACK 22
2.8 Biện pháp Pi 23
2.9 Biện pháp SIFF 24
2.10 Biện pháp lọc đếm chặng HCF 25
Chương 3: SOS VÀ WEBSOS 27
3.1 Giao thức Chord 27
3.2 Kiến trúc SOS 29
3.3 Kiến trúc WebSOS 31
3.3.1 Giải pháp đề xuất 31
3.3.2 Kiến trúc của WebSOS 31
3.3.3 Cơ chế của WebSOS 32
3.3.3.1 Cơ chế chung 32
3.3.3.2 Cơ chế định tuyến 34
3.3.4 Cơ chế bảo vệ 34
3.3.5 Đánh giá ưu, nhược điểm của kiến trúc WebSOS 36
Chương 4: THỰC NGHIỆM, CẢI TIẾN VÀ KẾT QUẢ 37
4.1 Môi trường thực nghiệm 37
4.2 Cài đặt kiến trúc WebSOS 37
4.3 Kiểm tra độ trễ của các kết nối 38
iv
4.4 Đề xuất cải tiến 39
4.4.1 Vấn đề về mạng bao phủ của WebSOS 39
4.4.2 Đề xuất cải tiến 40
4.4.3 Thực thi đề xuất 42
4.4.3.1 Kịch bản thử nghiệm 42
4.3.3.2 Kết quả thử nghiệm 43
4.3.3.2.1 Với chương trình gốc 43
4.3.3.2.2 Với chương trình cải tiến 44
4.4.4 Đánh giá hiệu năng của chương trình cải tiến 46
Chương 5: KẾT LUẬN 50
5.1 Các kết quả đã đạt được 50
5.2 Các kết quả hướng tới 50
TÀI LIỆU THAM KHẢO 52
v
MỞ ĐẦU
Tấn công từ chối dịch vụ (Dos, Denial of Services) đã ngày càng trở thành một
mối đe dọa lớn đối với sự tin cậy của mạng internet. Là các cuộc tấn công sử dụng
nhiều cách thức tổ chức và thực hiện khác nhau, từ việc dùng chỉ một máy tới việc thu
thập các máy agent dưới quyền với số lượng lên đến hàng chục ngàn máy phục vụ tấn
công, mục đích của các cuộc tấn công là làm tê liệt các ứng dụng, máy chủ, toàn bộ
mạng lưới, hoặc làm gián đoạn kết nối của người dùng hợp pháp tới Website đích. Một
nghiên cứu tại UCSD [23] đã chỉ ra rằng ngay từ đầu thập niên này các cuộc tấn công từ
chối dịch vụ đã diễn ra với một tỷ lệ lên tới 4000 cuộc tấn công mỗi tuần. Trong năm
2002, một cuộc tấn công từ chối dịch vụ [22] đã làm sập tới 9 trong số 13 máy chủ DNS
root của toàn thế giới. Mức độ ảnh hưởng nghiêm trọng của các cuộc tấn công từ chối
dịch vụ, mà đặc biệt được nhắc đến nhiều nhất là tấn công từ chối dịch vụ phân tán
DDoS, đã dẫn đến một loạt các nghiên cứu nhằm hiểu rõ hơn về các cơ chế tấn công, để
đưa tới các cách thức giúp có thể phòng chống ảnh hưởng tiêu cực của nó. Có nhiều
phương pháp đã được đề xuất nhằm chống lại các cuộc tấn công từ chối dịch vụ, từ việc
lọc các gói tin để tránh giả mạo địa chỉ nguồn, chuyển hướng tấn công, đẩy ngược luồng
giao thông tấn công trở lại mạng, cách ly để phân biệt máy khách và giao thông máy
chủ, … Mỗi giải pháp đó đều rất tốt, và cung cấp kĩ thuật giúp chúng ta định vị vấn đề
tấn công từ chối dịch vụ. Song các phương pháp chỉ có thể bảo vệ lại từng khía cạnh của
tấn công từ chối dịch vụ. Khóa luận của tôi trình bày một phương pháp phòng chống tấn
công từ chối dịch vụ phân tán rất hiệu quả và toàn diện hơn thế. Đó là việc áp dụng kiến
trúc mạng bao phủ, để bảo vệ mục tiêu khỏi sự tiếp cận của kẻ tấn công. Dựa trên kiến
trúc mạng bao phủ, có một số đề xuất được đưa ra đó là kiến trúc SOS và WebSOS.
Kiến trúc SOS sử dụng một mạng bao phủ để chỉ cho các truy vấn hợp pháp đã qua xác
thực được phép đến server đích. Dựa vào việc sử dụng các node bí mật, và chỉ có giao
thông từ các node này mới có thể đến được server đích, kiến trúc tỏ ra khá hiệu quả
trong việc bảo vệ Website. Kế thừa kiến trúc SOS, WebSOS triển khai mạng bao phủ
với một số cơ chế cải tiến như xác thực người dùng thông qua bài kiểm tra CAPTCHA,
kết nối thông qua proxylet cùng với việc xác thiết lập kết nối SSL và xác thực X.509,
nhằm tăng mức độ bảo mật hơn cho hệ thống. Để giúp cho WebSOS có thể tránh được
cả các trường hợp các node trong mạng bao phủ bị chiếm dụng trở thành nguồn tấn
công, chúng tôi đưa ra các đề xuất cải tiến nhằm tự động phát hiện, và thay đổi truy vấn
để tránh được cuộc tấn công như vậy.
1
Phần tiếp theo của khóa luận được tổ chức như sau:
Chương 1: Các phương thức tấn công từ chối dịch vụ nêu lên một cách tổng quan
về các cách thức một kẻ tấn công phải thực hiện nhằm tạo ra một cuộc tấn công từ chối
dịch vụ.
Chương 2: Các phương pháp phòng chống tấn công từ chối dịch vụ đã được đề
xuất trước đây. Nhiều phương pháp hiện nay vẫn là những nghiên cứu đáng quan tâm
trong lĩnh vực phòng chống tấn công từ chối dịch vụ. Các phương pháp lọc, với sự phát
triển của cơ sở hạ tấng mạng, nếu được thực hiện đồng bộ có thể giảm thiểu nguy cơ tấn
công từ chối dịch vụ cho các Website.
Chương 3: SOS và WebSOS, giới thiệu về cơ chế của hai kiến trúc bảo vệ Website
khỏi tấn công từ chối dịch vụ thông qua việc sử dụng mạng bao phủ và node bí mật. Từ
đó nêu lên các đặc điểm cốt lỗi được tôi sử dụng để tham gia vào kiến trúc được cải tiến
nhằm phòng chống tấn công từ chối dịch vụ.
Chương 4: Thực nghiệm, cải tiến và kết quả nêu lên những kết quả của tôi trong
việc thực hiện triển khai mô hình kiến trúc WebSOS và các phân tích nhằm đưa ra cải
tiến giúp hệ thống trở lên mạnh mẽ hơn chống lại các cuộc tấn công ngay từ trong các
node thuộc mạng bao phủ khi một số node bị chiếm dụng trở thành nguồn tấn công.
Chương 4 cũng đưa ra các kết quả đánh giá hiệu năng của kiến trúc nguồn WebSOS và
kiến trúc cải tiến thông qua kịch bản tấn công được xây dựng và qua việc đo một số
thông số về độ trễ truy vấn thực hiện qua mô hình các kiến trúc này.
Chương 5: Kết luận tổng kết lại các kết quả đã đạt được, cùng với các kết quả mà
nghiên cứu khóa luận hướng tới nhằm hoàn thiện mô hình để hướng tới mục tiêu có thể
triển khai thực hiện.
2
Chương 1: CÁC CÁCH THỨC TẤN CÔNG TỪ
CHỐI DỊCH VỤ
Một cuộc tấn công DDoS cần phải được chuẩn bị kỹ lưỡng bởi kẻ tấn công. Trước
tiên là bước chiếm dụng các máy khác làm lực lượng cho bản thân. Việc này được thực
hiện bằng cách tìm máy dễ bị tổn thương, sau đó đột nhập vào chúng, và cài đặt mã tấn
công. Tiếp theo đó, kẻ tấn công thiết lập các kênh giao tiếp giữa các máy, để chúng có
thể được kiểm soát và tham gia cuộc tấn công một cách có phối hợp. Việc này được
thực hiện bằng cách sử dụng một kiến trúc handler/agent hoặc một điều khiển và kênh
điều khiển thông qua mạng IRC. Một khi các mạng DDoS được xây dựng, nó có thể
được sử dụng để tấn công nhiều lần, chống lại các mục tiêu khác nhau.
1.1 Thiết lập nên mạng Agent.
Tùy vào mỗi kiểu tấn công từ chối dịch vụ, kẻ tấn công cần tìm kiếm và thiết lập
cho mình một mạng lưới lớn các máy tính để dùng cho việc tấn công. Việc này có thể
thực hiện thủ công, bán tự động hoặc là tự động hoàn toàn. Trong các trường hợp của
hai DDoS công cụ nổi tiếng trước đây, trinoo và Shaft, chỉ quá trình cài đặt được tự
động, trong khi phát hiện và chiếm dụng các máy dễ bị tổn thương được thực hiện một
cách thủ công. Hiện nay, những kẻ tấn công thường sử dụng script để tự động hóa toàn
bộ quá trình.
1.1.1 Tìm kiếm các máy dễ bị tổn thương
Quá trình tìm kiếm dễ bị tổn thương được gọi là quét - scanning. Kẻ tấn công sẽ gửi một
gói vài mục tiêu lựa chọn để xem liệu nó có còn sống và dễ bị tổn thương. Nếu nhận
thấy máy phù hợp, những kẻ tấn công sẽ cố gắng đột nhập vào máy.
1.1.2 Đột nhập vào máy dễ bị tổn thương
Kẻ tấn công cần phải khai thác một lỗ hổng trong máy mà hắn đang có ý định
tuyển dụng để được truy cập vào và “sở hữu” chúng. Phần lớn các lỗ hổng bảo mật cung
cấp cho một kẻ tấn công quyền truy cập vào hệ thống với quyền cao nhất -
administrator, và hắn có thể thêm/ xóa/ thay đổi các tập tin hoặc hệ thống cài đặt theo ý
thích. Và để tạo thuận lợi cho việc truy nhập vào máy tính bị sở hữu trong tương lai, kẻ
tấn công thường cho chạy một chương trình cố gắng lắng nghe kết nối đến từ một cổng
nhất định. Chương trình này được gọi là backdoor. Kết nối thông qua backdoor một số
được bảo vệ bởi mật khẩu mạnh, một số lại mở và chấp nhận mọi kết nối bên ngoài.
3
Thường các lỗ hổng bảo mật sao khi được phát hiện sẽ được giảm nhẹ bởi các bản
vá – patch. Tuy vậy các kẻ tấn công luôn cố gắng khai thác, tìm kiếm các lỗ hổng khác
mà máy có thể có. Và có một lỗ hổng không thể giảm nhẹ, hoặc được sửa bởi bản vá, đó
là một mật mã truy nhập máy tính yếu. Một số chương trình khai thác có chứa các từ
điển mật khẩu chung thường được sử dụng. Chúng thử các mật khẩu trong danh sách đó
để đột nhập vào máy tính. Có thể mất nhiều thời gian, song trong nhiều trường hợp
chúng cũng khai thác được các mật khẩu yếu của người dùng và đạt được quyền truy
nhập hợp lệ đến máy người đó. 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 cho rằng, "password" hoặc một số từ đơn giản
khác là đủ để bảo vệ tài khoản. Và đó là những nhầm lẫn nghiêm trọng có thể khiến họ
phải trả giá đắt.
1.1.3 Phương pháp lây truyền
Kẻ tấn công cần phải quyết định một mô hình phát tán cho việc cài đặt phần mềm
độc hại của mình. Một mô hình đơn giản là kho lưu trữ trung ương, hoặc bộ nhớ cache,
với cách tiếp cận: Kẻ tấn công lưu các phần mềm độc hại trong một kho lưu trữ tập tin
(ví dụ, một máy chủ FTP) hoặc trang web của một Web, và các máy truy cập sẽ bị
nhiễm mã từ kho này. Kẻ tấn công cài đặt trinoo và Shaft sử dụng phương pháp tiếp cận
tập trung như vậy trong những ngày đầu. Năm 2001, sâu W32/Leaves sử dụng một biến
thể của các trang web bị cấu hình lại làm bộ nhớ cache của nó, cũng như các sâu W32/
SoBig gửi thư hàng loạt trong năm 2003. Với người phòng chống, phương pháp này có
thuận lợi đó là dễ dàng trong việc nhận diện để loại bỏ nguồn tập trung mã độc của kẻ
tấn công.
Một mô hình khác là back-chaining, hay là kéo-pull, trong đó những kẻ tấn công
mang công cụ của mình từ một máy chủ lưu trữ ban đầu bị tổn hại đến máy chủ để
chiếm dụng máy mới, cứ như vậy thành một chuỗi nối tiếp.
Cuối cùng, phương pháp chủ động, push, hay lan truyền thẳng kết hợp giữa việc
khai thác và lây truyền trong cùng một tiến trình. Điểm khác biệt so với back-chaining
đó là trong ngay chính tiến trình khai thác đã chứa các mã độc để lan truyền đến máy bị
tốn hại, chứ không phải là copy mã độc đó sau khi đã chiếm dụng các máy tổn hại.
1.2 Điều khiển mạng lưới máy Agent
4
Khi mạng lưới các agent lớn dần, kẻ tấn công cần giao tiếp với các máy này để
điều khiển chúng cho hoạt động tấn công. Mục đích của việc giao tiếp này nhằm giúp kẻ
tấn công có thế đưa ra lệnh bắt đầu/ kết thúc các cuộc tấn công cụ thể cũng như giúp
hắn có thể lấy những số liệu cụ thể về hành vi của các máy agent.
1.2.1 Gửi lệnh trực tiếp
[17] Một số các công cụ DDoS như trinoo xây dựng một mạng lưới handler/agent.
Đây là kiến trúc các lớp bao phủ giúp kẻ tấn công có thể che giấu định danh của bản
thân. Hắn sẽ sử dụng một, hoặc một vài máy để chuyển các lệnh điều khiển mạng DDoS
đến các máy nạn nhân – agents. Các máy này được gọi là các handler, hay master. Các
câu lệnh có thể là các văn bản không được mã hóa, hay được mã hóa, hoặc các chuỗi
byte nhị phân. Phân tích lệnh và điều khiển giao thông giữa các handler và các agent có
thể cho cái nhìn sâu sắc khả năng của những công cụ mà không cần phải truy cập vào
các phần mềm độc hại hay mã nguồn của nó.
Để các handler và agent, theo các công cụ như trinoo, Stacheldraht, và Shaft có thể
hoạt động, các handler phải biết địa chỉ của các agent và nhớ được chúng sau khi hệ
thống hoặc chương trình khởi động lại. Các công cụ DDoS trước đây thường mã hóa
chúng lại, rồi gửi thông báo với handler trong khi chiếm dụng máy agent. Các handler sẽ
lưu giữ chúng trong một file để duy trì thông tin về mạng lưới DDoS. Trong vài trường
hợp các handler còn không chứa cơ chế xác thực, nghĩa là bất kì máy nào cũng có thể
gửi lệnh đến cho handler. Các nghiên cứu trước đây về một số công cụ như trinoo, TFN,
Stacheldraht, Shaft, và mstream đều cho thấy các handler và agent đều có thể bị phát
hiện và điều khiển lại. Điều này khiến một số kẻ tấn công có thể sử dụng mạng lưới
DDoS của kẻ khác, cũng như giúp một số người phòng thủ có thể điều khiển ngược lại
các handler để ngừng cuộc tấn công. Một số các công cụ DDoS dùng kiến trúc handler/
agent bảo vệ truy cập đến các handler bằng mật khẩu, hoặc mật khẩu mã hóa, hoặc mã
hóa danh sách các agent để tránh việc phát hiện ra địa chỉ, và điều khiển các agent khi
handler bị phát hiện.
1.2.2 Gửi lệnh gián tiếp
[17] Truyền thông trực tiếp gây ra một vài nhược điểm cho những kẻ tấn công. Vì
handler cần thiết để lưu định danh của các agent, và thường xuyên, một máy tính
handler sẽ lưu định danh của các agent này, một khi chúng ta phát hiện và nắm giữ một
máy, mạng máy DDoS toàn có thể được xác định. Hơn nữa, mô hình truyền thông trực
5
tiếp đã tạo ra sự kiện bất thường có thể dễ dàng phát hiện khi kiểm soát mạng. Do cơ
chế của tryền thông trực tiếp là handler và agent phải sẵn sàng chấp nhận lắng nghe trên
một cổng nhất định, vì vậy khi kiểm tra bỗng nhiên thấy máy khởi tạo kết nối đến một
máy khác trên một cổng lạ là có thể phát hiện việc máy bị chiếm dụng. Kiểm tra các gói
tin gửi và nhận qua kết nối này, người quản trị mạng có thể xác định địa chỉ của máy
mình kết nối. Ngay cả khi không có kết nối, dựa vào việc giám sát các cổng mở trên
máy cũng có thể phát hiện được các tiến trình của handler hoặc agent. Cuối cùng, kẻ tến
công cũng phải viết các mã riêng của mình cho việc truyền các lệnh và điều khiển.
Đó là lý do các kẻ tấn công chuyển sang việc truyền thông qua các IRC. Lúc này
cả kẻ tấn công và các agent sẽ kết nối đến một IRC server nào đó, vì vậy nó là hợp lệ và
không tạo ra một sự kiện bất thường nào cả. Vai trò của hanlder giờ được thực hiện bởi
một kênh đơn lẻ trên IRC server, và thường được bảo vệ bởi password. Thông thường
có một kênh mã hóa cứng vào trong các con bot trong máy nạn nhân, nơi mà nó kết nối
vào ban đầu để tìm hiểu xem kênh điều khiển thực sự nằm ở đâu. Và sau đó nó sẽ kết
nối vào trong kênh điều khiển đó. Việc nhảy kênh thậm chí cũng có thể thực hiện trong
mạng IRC thông qua cách này. Từ đó, con bot có thể nhận lệnh của kẻ tấn công đến qua
kênh điều khiển mà nó tìm được và kết nối đến, để thực hiện lệnh, như quét tìm máy
agent khác, tấn công DDoS, update, …
Việc gửi lệnh gián tiếp có rất nhiều ưu điểm. Server thì vẫn tồn tại mà được duy trì
bởi người khác, còn kẻ tấn công chỉ cần một kênh thông tin của server trong hàng ngàn
kênh chat khác, nên sẽ rất khó để phát hiện, dù cho là nó có thể trở thành một kênh khác
lạ khi có tới hàng ngàn, chục ngàn người đột nhiên tham gia chỉ trong vài phút. Thậm
chí khi bị phát hiện thì cũng cần phải tiếp xúc được với người quản lý server mới có thể
dừng kênh truyền, trong khi server IRC rất có thể lại là một server nước ngoài nào đó.
Hơn nữa, theo cơ chế phân tán của IRC, không cần tất cả các client phải truy cập vào
cùng một server IRC mới có thể tham gia vào kênh handler, mà chỉ cần truy cập vào một
server trong cùng mạng. Hầu hết các công cụ xuất hiện sau Trinity đều lợi dụng cơ chế
truyền thông này.
1.2.3 Unwitting Agent
[17] Ngoài ra còn có một lớp của các cuộc tấn công DDoS với lực lượng tham gia
là các máy tính có lỗ hổng bảo mật mà việc khai thác không nhất thiết đòi hỏi phải cài
đặt bất kỳ phần mềm độc hại trên máy tính này, nhưng, thay vào đó cho phép kẻ tấn
công kiểm soát các máy chủ để làm cho chúng tạo ra các giao thông tấn công. Kẻ tấn
6
công tập hợp một danh sách các hệ thống dễ bị tổn thương và, tại thời điểm vụ tấn công,
có các agent thông qua danh sách này gửi các lệnh để bắt đầu khai thác các luồng giao
thông. Các lưu lượng truy cập tạo ra là hợp pháp. Ví dụ, kẻ tấn công có thể lợi dụng một
lỗ hổng hiện nay tại một máy chủ Web để làm nó để chạy chương trình PING.EXE.
Một số nhà nghiên cứu đã gọi là các unwitting agent.
Sử dụng các unwitting agent, thay vì phải cài đặt mã độc trên máy nạn nhân, kẻ tấn
công sử dụng các lỗ hổng bảo mật để thâm nhập vào máy và chạy các phần mềm hợp
pháp sẵn có trên hệ thống, vì vậy việc chống trả lại hành động tấn công này trở nên rất
khó và phức tạp. Do trên máy nạn nhân không chứa mã độc hại, nên các chương trình
quét cổng truy cập, quét file hệ thống, hoặc quét virus không thể phát hiện.Thường chỉ
có thể phát hiện thông qua việc giám sát lưu lượng mạng, các chương trình quét lỗ hổng
bảo mật như Nessus. Và chỉ có cách vá các lỗi bảo mật mới giúp việc bị lạm dụng máy
và các phần mềm hợp pháp trong máy được hạn chế, giảm thiểu nguy cơ bị chiếm dụng
máy làm agent cho cuộc tấn công.
1.2.4 Thực hiện tấn công
Một số cuộc tấn công được lên lịch trước và mã hóa trong mã độc truyền đến các
agent, và định sẵn một thời điểm thì sẽ hoạt động, đồng loạt tấn công vào một mục tiêu
nào đó. Tuy nhiên, hầu hết các cuộc tấn công xảy ra khi kẻ tấn công phát đi một lệnh từ
các handler đến các agent. Trong vụ tấn công, giao thông điều khiển hầu hết đều giảm.
Tùy thuộc vào loại công cụ tấn công được sử dụng, những kẻ tấn công có thể hoặc
không có khả năng phát lệnh dừng cuộc tấn công. Thời hạn của cuộc tấn công thường
được quy định tại lệnh của kẻ tấn công hay kiểm soát bởi các thiết lập mặc định biến.
Một điểm khá tốt cho việc phòng thủ nếu kẻ tấn công rời khỏi mạng tấn công vào thời
điểm tấn công tràn ngập đã bắt đầu. Tuy nhiên, có khả năng là kẻ tấn công là quan sát
các cuộc tấn công liên tục, tìm kiếm ảnh hưởng của nó vào các mục tiêu thử nghiệm.
Một số công cụ, như Shaft, có khả năng cung cấp phản hồi về thống kê tấn công tràn
ngập. Những kẻ tấn công đang thử nghiệm một số loại tấn công, chẳng hạn như tấn
công tràn gói tin ICMP, TCP SYN, và UDP, trước khi chính thức tấn công thực sự nhằm
vào nhiều mục tiêu .
1.3 Các cách thức tấn công từ chối dịch vụ
7

Không có nhận xét nào:

Đăng nhận xét