Tấn cụng từ chối dịch vụ (DoS)

Một phần của tài liệu MỘT SỐ DẠNG TẤN CÔNG HỆ THỐNG THÔNG TIN VÀ PHÒNG CHỐNG BẰNG KĨ THUẬT MẬT MÃ (Trang 72 - 87)

3. Cho điểm của cán bộ h-ớng dẫn:

3.2.1.3. Tấn cụng từ chối dịch vụ (DoS)

Tấn cụng từ chối dịch vụ (DoS) là cuộc tấn cụng trờn hệ thống mạng nhằm ngăn cản những truy xuất tới một dịch vụ nhƣ là WEB, Email,… Tấn cụng DoS phỏ huỷ dịch vụ mạng bằng cỏch làm tràn ngập số lƣợng kết nối, quỏ tải mỏy chủ hoặc chƣơng trỡnh chạy trờn mỏy chủ, tiờu tốn tài nguyờn của mỏy chủ, hoặc ngăn chặn ngƣời dựng hợp lệ truy nhập tới cỏc dịch vụ mạng.

Cỏch phõn loại phổ biến thƣờng dựa vào giao thức trong hỡnh thức tấn cụng DoS, vớ dụ nhƣ tràn ngập ICMP với Smurf, Ping of Death, khai thỏc điểm yếu của TCP trong hoạt động của giao thức và phõn mảnh gúi tin với SYN flood, hay cỏc ứng dụng ở lớp ứng dụng nhƣ với Flash Crowds (hay tờn gọi khỏc là X-flash).

Phõn loại theo phƣơng thức tấn cụng, DoS cú thể đƣợc thực hiện bằng một vài gúi tin đơn lẻ gửi thẳng tới server gõy rối loạn hoạt động (nhƣ slammer worm), hoặc kớch hoạt để gửi từ nhiều nguồn (tấn cụng từ chối dịch vụ phõn tỏn DdoS). Tấn cụng cú thể thực hiện trờn mạng Internet (sử dụng ngay cỏc web server), hoặc broadcast trong mạng từ bờn trong (insider attacks nhƣ với Blaster worm), trờn cỏc mạng ngang hàng P2P (P2P index poinsioning) hay Wireless (WLAN authentication rejection attack- spoof sender). Tuy nhiờn, cú thể thấy cỏc cỏch phõn loại trờn dựa chủ yếu vào cỏch nhỡn từ sự phỏt sinh nguồn tấn cụng và vỡ thế, khụng hệ thống hoỏ đƣợc phƣơng thức phũng trỏnh.

Zombie (hay cũn gọi là daemons, slaves hoặc agent) là đối tƣợng đƣợc lợi dụng trở thành thành phần phỏt sinh tấn cụng. Một số trƣờng hợp điển hỡnh nhƣ là thụng qua rootkit (một dạng phần mềm đƣợc kớch hoạt mỗi khi hệ thống khởi động, trƣớc cả khi hệ điều hành khởi động xong. Rootkit cho phộp cài một file cú thuộc tớnh ẩn, một tiến trỡnh, hoặc một tài khoản ngƣời sử dụng lờn hệ điều hành. Rootkit cú khả năng chặn bắt dữ liệu từ cỏc thiết bị đầu cuối, từ cỏc kết nối mạng và từ bàn phớm), hay cỏc thành phần hoạt động đớnh kộm trong email, hoặc trang Web. Để phũng chống, hệ thống mạng cần cú những cụng cụ theo dừi và lọc bú nội dung (content filtering) nhằm ngăn ngừa việc tuyển mộ zombie của cỏc tin tặc.

60

Cú rất nhiều cỏc cụng cụ tấn cụng từ chối dịch vụ DoS, chủ yếu là tấn cụng từ chối dịch vụ phõn tỏn DdoS nhƣ là TFN, TFN2000 (Trible Flood Network), tấn cụng dựa vào nguyờn lý hoạt động của cỏc giao thức nhƣ là Smurf, UDP, SYN, hay ICMP. Cỏc cụng cụ này cú đặc điểm là cần phải cú cỏc kờnh phỏt động để zombie thực hiện tấn cụng tới một mỏy đớch cụ thể. Hệ thống cần phải cú cỏc cụng cụ để giỏm sỏt và ngăn ngừa cỏc kờnh phỏt động đú.

1/. Ngăn chặn tấn cụng bằng băng thụng

Khi một cuộc tấn cụng DoS đƣợc phỏt động nú thƣờng đƣợc phỏt hiện dựa trờn sự thay đổi đỏng kể về băng thụng của hệ thống mạng. Vớ dụ, một hệ thống mạng bỡnh thƣờng cú thể cú 80% lƣu lƣợng là của giao thực TCP, 20% lƣu lƣợng cũn lại là của UDP. Thống kờ này nếu cú thay đổi rừ rệt cú thể là dấu hiệu của một cuộc tấn cống DoS. Vớ dụ nhƣ, sõu Slammer sẽ làm tăng lƣu lƣợng UDP, trong khi sõu Welchi sẽ tạo ra ICMP flood. Việc phõn tỏn lƣu lƣợng gõy ra bởi cỏc sõu này gõy tỏc hại lờn bộ định tuyến, tƣờng lửa, hoặc hạ tầng mạng. Hệ thống cần phải cú cỏc cụng cụ giỏm sỏt và điều phối băng thụng nhằm giảm thiểu tỏc hại của tấn cụng dạng này.

61

2/. Ngăn chặn tấn cụng qua cơ chế SYN/ACK

SYN flood là một trong những cỏch tấn cụng DoS cổ nhất cũn tồn tại cho đến thời điểm hiện tại, nhƣng tỏc hại của nú gõy ra thỡ khụng giảm. Điểm căn bản để phũng ngừa cỏch tấn cụng DoS này là khả năng kiểm soỏt đƣợc số lƣợng yờu cầu SYN/ACK trong cơ chế kết nối bắt tay 3 bƣớc của giao thức TCP tới hệ thống mạng.

3/. Phỏt hiện và ngăn chặn tấn cụng tới hạn số kết nối

Bản thõn cỏc mỏy chủ chỉ cú thể đỏp ứng đƣợc một số lƣợng nhất định cỏc kết nối tới nú cựng một lỳc. Ngay bản thõn tƣờng lửa (đặc biệt với cỏc tƣờng lửa cú tớnh năng duyệt trạng thỏi), thỡ cỏc kết nối luụn đƣợc gắn liền với bảng trạng thỏi cú giới hạn dung lƣợng. Đa phần cỏc cuộc tấn cụng đều sinh ra số lƣợng cỏc kết nối ảo thụng qua việc giả mạo. Để phũng ngừa tấn cụng dạng này, hệ thống cần phõn tớch và chống đƣợc việc giả mạo, và kiểm soỏt đƣợc số lƣợng kết nối từ một nguồn cụ thể tới mỏy chủ..

4/. Phỏt hiện và ngăn chặn tấn cụng tới hạn tốc độ thiết lập kết nối

Một trong những điểm mà cỏc mỏy chủ thƣờng bị lợi dụng là khả năng cỏc bộ đệm giới hạn dành cho tốc độ thiết lập kết nối, dẫn đến quỏ tải khi phải chịu sự thay đổi đột ngột về số lƣợng kết nối. Ở đõy, việc ỏp dụng bộ lọc để giới hạn số lƣợng kết nối cú một vai trũ rất quan trọng. Một bộ lọc sẽ xỏc định ngƣỡng tốc độ kết nối cho từng thành phần của mạng.

Trong một hệ thống, để đối phú với cỏc cuộc tấn cụng từ chối dịch vụ, thỡ thành phần IPS đƣợc coi là quan trọng nhất. Cỏc cuộc tấn cụng từ chối dịch vụ chủ yếu nhằm vào khả năng xử lý của hệ thống mạng mà đầu tiờn là cỏc thiết bị an ninh mạng. Năng lực xử lý của IPS là một trong những đặc điểm cần chỳ ý, đặc biệt là sự ổn định trong việc xử lý đồng thời cỏc loại lƣu lƣợng hỗn tạp với kớch thƣớc gúi tin

62

3.2.2. Cỏch phũng chống tấn cụng hệ điều hành bằng kĩ thuật mật mó.

1/. Phũng chống bằng phƣơng phỏp mó húa: sử dụng cỏc tài khoản đăng nhập phức tạp; mó húa tài khoản ngƣời dựng.

Cỏc tệp tin, dữ liệu quan trọng của hệ thống nờn bảo vệ bằng kĩ thuật mó húa, giấu tin, nộn tin, vv…

2/. Lỗi chủ yếu đƣợc tỡm thấy trờn cỏc ứng dụng chạy trờn hệ điều hành phổ biến hiện nay là Windows, trờn cỏc chƣơng trỡnh Webserver, DNS, hay SQL database. Cập nhật cỏc bản vỏ là một trong những yờu cầu quan trọng cho việc phũng ngừa cỏc điểm yếu của ứng dụng.

3/. Dựng phƣơng phỏp mật mó để xỏc thực thực thể kết nối Vớ dụ:

Để phũng chống tấn cụng ARP (ARP chuyển từ địa chỉ IP sang địa chỉ MAC trong liờn lạc mạng) cú thể dựng chữ kớ số để xỏc thực thực thể kết nối, chống giả mạo.

63

3.3. TẤN CễNG CƠ SỞ DỮ LIỆU 3.3.1. Một số dạng tấn cụng cơ sở dữ liệu

Vớ dụ: tấn cụng cơ sở dữ liệu bằng phƣơng phỏp tiờm vào SQL( SQL Injection )

1/. SQL Injection là gỡ?

SQL injection là một kĩ thuật cho phộp những kẻ tấn cụng lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong cỏc ứng dụng web và cỏc thụng bỏo lỗi của hệ quản trị cơ sở dữ liệu để "tiờm vào" (inject) và thi hành cỏc cõu lệnh SQL bất hợp phỏp (khụng đƣợc ngƣời phỏt triển ứng dụng lƣờng trƣớc). Hậu quả của nú rất tai hại vỡ nú cho phộp những kẻ tấn cụng cú thể thực hiện cỏc thao tỏc xúa, hiệu chỉnh, … do cú toàn quyền trờn cơ sở dữ liệu của ứng dụng, thậm chớ là server mà ứng dụng đú đang chạy. Lỗi này thƣờng xảy ra trờn cỏc ứng dụng web cú dữ liệu đƣợc quản lớ bằng cỏc hệ quản trị cơ sở dữ liệu nhƣ SQL Server, MySQL, Oracle, DB2, Sysbase.

2/. Cỏc dạng tấn cụng bằng SQL Injection

Cú bốn dạng thụng thƣờng bao gồm: vƣợt qua kiểm tra lỳc đăng nhập (authorization bypass), sử dụng cõu lện SELECT, sử dụng cõu lệnh INSERT, sử dụng cỏc thủ tục lƣu trữ (stored-procedures).

a/. Dạng tấn cụng vƣợt qua kiểm tra đăng nhập

- Với dạng tấn cụng này, tin tặc cú thể dễ dàng vƣợt qua cỏc trang đăng nhập nhờ vào lỗi khi dựng cỏc cõu lệnh SQL thao tỏc trờn cơ sở dữ liệu của ứng dụng web.

- Xột một vớ dụ điển hỡnh, thụng thƣờng để cho phộp ngƣời dựng truy cập vào cỏc trang web đƣợc bảo mật, hệ thống thƣờng xõy dựng trang đăng nhập để yờu cầu ngƣời dựng nhập thụng tin về tờn đăng nhập và mật khẩu. Sau khi ngƣời dựng nhập thụng tin vào, hệ thống sẽ kiểm tra tờn đăng nhập và mật khẩu cú hợp lệ hay khụng để quyết định cho phộp hay từ chối thực hiện tiếp.

- Trong trƣờng hợp này, ngƣời ta cú thể dựng hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dựng để xử lớ thụng tin nhập từ phớa ngƣời dựng.

64

Vớ dụ:

Trang login.htm

<form action="ExecLogin.asp" method="post">

Username: <input type="text" name="fUSRNAME"><br>

Password: <input type="password" name="fPASSWORD"><br> <input type="submit">

</form>

Trang execlogin.asp

<%

var vUsrName, vPassword;

var Conn = Server.CreateObject("ADODB.Connection");

Conn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + Server.MapPath("database.mdb");

Conn.Open(); var objRS, strSQL;

vUsrName = "" + Request.Form("fUSRNAME"); vPassword = "" +Request.Form("fPASSWORD");

strSQL = "SELECT * FROM T_USERS WHERE USR_NAME='" + vUsrName + "' and USR_PASSWORD='" + vPassword + "'";

objRS = Server.CreateObject("ADODB.Recordset"); objRS = Conn.Execute(strSQL);

if (objRS.EOF)

Response.Write("Invalid login."); else

Response.Write("You are logged in as " + objRS("USR_NAME")); Conn.Close();

%>

65

Thoạt nhỡn, đoạn mó trong trang execlogin.asp dƣờng nhƣ khụng chứa bất cứ

một lỗ hổng về an toàn nào. Ngƣời dựng khụng thể đăng nhập mà khụng cú tờn đăng nhập và mật khẩu hợp lệ. Tuy nhiờn, đoạn mó này thực sự khụng an toàn và là tiền đề cho một lỗi SQL injection. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ ngƣời dựng đƣợc dựng để xõy dựng trực tiếp cõu lệnh SQL. Chớnh điều này cho phộp những kẻ tấn cụng cú thể điều khiển cõu truy vấn sẽ đƣợc thực hiện. Vớ dụ, nếu ngƣời dựng nhập chuỗi sau vào trong cả 2 ụ nhập liệu username/password của trang login.htm là: ' OR ' ' = ' '. Lỳc này, cõu truy vấn sẽ đƣợc gọi thực hiện là:

SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''=''

- Cõu truy vấn này là hợp lệ và sẽ trả về tất cả cỏc bản ghi của T_USERS và đoạn mó tiếp theo xử lớ ngƣời dựng đăng nhập bất hợp phỏp này nhƣ là ngƣời dựng đăng nhập hợp lệ.

b/. Dạng tấn cụng sử dụng cõu lệnh SELECT

Dạng tấn cụng này phức tạp hơn. Để thực hiện đƣợc kiểu tấn cụng này, kẻ tấn cụng phải cú khả năng hiểu và lợi dụng cỏc sơ hở trong cỏc thụng bỏo lỗi từ hệ thống để dũ tỡm cỏc điểm yếu khởi đầu cho việc tấn cụng.

Xột một vớ dụ rất thƣờng gặp trong cỏc website về tin tức. Thụng thƣờng, sẽ cú một trang nhận ID của tin cần hiển thị rồi sau đú truy vấn nội dung của tin cú ID này. Vớ dụ: http://www.myhost.com/shownews.asp?ID=123. Mó nguồn cho chức năng này thƣờng đƣợc viết khỏ đơn giản theo dạng

<%

var vNewsID, objRS, strSQL; vNewsID = Request("ID");

strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" + vNewsID; objRS = Server.CreateObject("ADODB.Recordset");

objRS = Conn.Execute(strSQL); Conn.Close();

66

Thụng thƣờng, đoạn mó này hiển thị nội dung của tin cú ID trựng với ID đó chỉ định và hầu nhƣ khụng thấy cú lỗi. Tuy nhiờn, giống nhƣ vớ dụ đăng nhập ở trƣớc, đoạn mó này để lộ sơ hở cho một lỗi SQL injection khỏc. Kẻ tấn cụng cú thể thay thế một ID hợp lệ bằng cỏch gỏn ID cho một giỏ trị khỏc, và từ đú khởi đầu cho một cuộc tấn cụng bất hợp phỏp.

Vớ dụ nhƣ: 0 OR 1=1 (nghĩa là, http://www.myhost.com/shownews.asp?ID=0 or 1=1). Cõu truy vấn SQL lỳc này sẽ trả về tất cả cỏc article từ bảng dữ liệu vỡ nú sẽ thực hiện cõu lệnh:

SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1

Một trƣờng hợp khỏc, vớ dụ nhƣ trang tỡm kiếm. Trang này cho phộp ngƣời dựng nhập vào cỏc thụng tin tỡm kiếm nhƣ Họ, Tờn, … Đoạn mó thƣờng gặp là:

<%

var vAuthorName, objRS, strSQL;

vAuthorName = Request("fAUTHOR_NAME");

strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " + vAuthorName + " ' "; objRS = Server.CreateObject("ADODB.Recordset"); objRS = Conn.Execute(strSQL); ... Conn.Close(); %>

Tƣơng tự nhƣ trờn, tin tặc cú thể lợi dụng sơ hở trong cõu truy vấn SQL để nhập vào trƣờng tờn tỏc giả bằng chuỗi giỏ trị:

' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*) Lỳc này, ngoài cõu truy vấn đầu khụng thành cụng, chƣơng trỡnh sẽ thực hiện thờm lệnh tiếp theo sau từ khúa UNION nữa.

Tất nhiờn cỏc vớ dụ núi trờn, dƣờng nhƣ khụng cú gỡ nguy hiểm, nhƣng hóy thử tƣởng tƣợng kẻ tấn cụng cú thể xúa toàn bộ cơ sở dữ liệu bằng cỏch chốn vào cỏc đoạn lệnh nguy hiểm nhƣ lệnh DROPTABLE.

67

Vớ dụ nhƣ: ' DROP TABLE T_AUTHORS --

Chỳng ta sẽ thắc mắc là làm sao biết đƣợc ứng dụng web bị lỗi dạng này đƣợc. Rất đơn giản, hóy nhập vào chuỗi (*) nhƣ trờn, nếu hệ thống bỏo lỗi về cỳ phỏp dạng: Invalid object name “OtherTable”; ta cú thể biết chắc là hệ thống đó thực hiện cõu SELECT sau từ khúa UNION, vỡ nhƣ vậy mới cú thể trả về lỗi mà ta đó cố tỡnh tạo ra trong cõu lệnh SELECT.

Cũng sẽ cú thắc mắc là làm thế nào cú thể biết đƣợc tờn của cỏc bảng dữ liệu mà thực hiện cỏc thao tỏc phỏ hoại khi ứng dụng web bị lỗi SQL injection. Cũng rất đơn giản, bởi vỡ trong SQL Server, cú hai đối tƣợng là sysobjects và syscolumns cho phộp liệt kờ tất cả cỏc tờn bảng và cột cú trong hệ thống. Ta chỉ cần chỉnh lại cõu lệnh SELECT, vớ dụ nhƣ: ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' là cú thể liệt kờ đƣợc tờn tất cả cỏc bảng dữ liệu.

c/. Dạng tấn cụng sử dụng cõu lệnh INSERT

Thụng thƣờng cỏc ứng dụng web cho phộp ngƣời dựng đăng kớ một tài khoản để tham gia. Chức năng khụng thể thiếu là sau khi đăng kớ thành cụng, ngƣời dựng cú thể xem và hiệu chỉnh thụng tin của mỡnh. SQL injection cú thể đƣợc dựng khi hệ thống khụng kiểm tra tớnh hợp lệ của thụng tin nhập vào.

d/. Dạng tấn cụng sử dụng thủ tục lưu trữ (stored-procedures)

Việc tấn cụng bằng stored-procedures sẽ gõy tỏc hại rất lớn nếu ứng dụng đƣợc thực thi với quyền quản trị hệ thống;.

68

3.3.2. Phũng chống tấn cụng CSDL bằng kĩ thuật mó húa

1/. Giải phỏp đơn giản nhất bảo vệ dữ liệu trong CSDL ở mức độ tập tin, chống lại sự truy cập trỏi phộp vào cỏc tập tin CSDL là hỡnh thức mó húa. Tuy nhiờn, mó húa dữ liệu ở mức độ này là giải phỏp mang tớnh “đƣợc ăn cả, ngó về khụng”, giải phỏp này khụng cung cấp mức độ bảo mật truy cập đến CSDL ở mức độ bảng (table), cột (column) và dũng (row). Một điểm yếu nữa của giải phỏp này là bất cứ ai với quyền truy xuất CSDL đều cú thể truy cập vào tất cả dữ liệu trong CSDL. Điều này phỏt sinh một nguy cơ nghiờm trọng, cho phộp cỏc đối tƣợng với quyền quản trị (admin) truy cập tất cả cỏc dữ liệu nhạy cảm. Thờm vào đú, giải phỏp này bị hạn chế vỡ khụng cho phộp phõn quyền khỏc nhau cho ngƣời sử dụng CSDL.

2/. Giải phỏp thứ hai, đối nghịch với giải phỏp mó húa cấp tập tin nờu trờn, giải quyết vấn đề mó húa ở mức ứng dụng. Giải phỏp này xử lý mó húa dữ liệu trƣớc khi truyền dữ liệu vào CSDL. Những vấn đề về quản lý khúa và quyền truy cập đƣợc hỗ trợ bởi ứng dụng. Truy vấn dữ liệu đến CSDL sẽ trả kết quả dữ liệu ở dạng mó húa và dữ liệu này sẽ đƣợc giải mó bởi ứng dụng. Giải phỏp này giải quyết đƣợc vấn đề phõn tỏch quyền an ninh và hỗ trợ cỏc chớnh sỏch an ninh dựa trờn vai trũ (Role Based Access Control – RBAC).

69

Tuy nhiờn, xử lý mó húa trờn tầng ứng dụng đũi hỏi sự thay đổi toàn diện kiến trỳc của ứng dụng, thậm chớ đũi hỏi ứng dụng phải đƣợc viết lại. Đõy là một vấn đề đỏng kể cho cỏc cụng ty cú nhiều ứng dụng chạy trờn nhiều nền CSDL khỏc nhau.

Từ những phõn tớch hai giải phỏp nờu trờn, cú thể dễ dàng nhận thấy một giải phỏp bảo mật CSDL tối ƣu cần hỗ trợ cỏc yếu tố chớnh sau:

• Hỗ trợ mó húa tại cỏc mức dữ liệu cấp bảng, cột, hàng.

• Hỗ trợ chớnh sỏch an ninh phõn quyền truy cập đến mức dữ liệu cột, hỗ trợ RBAC.

Một phần của tài liệu MỘT SỐ DẠNG TẤN CÔNG HỆ THỐNG THÔNG TIN VÀ PHÒNG CHỐNG BẰNG KĨ THUẬT MẬT MÃ (Trang 72 - 87)

Tải bản đầy đủ (PDF)

(92 trang)