0
Tải bản đầy đủ (.pdf) (71 trang)

DDOS (Distributed Denial of Service)

Một phần của tài liệu TÌM HIỂU MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG WEBSITE VÀ ĐỀ XUẤT MỘT SỐ GIẢI PHÁP HẠN CHẾ (Trang 43 -43 )

- Định nghĩa: DDOS là một dạng tấn công từ nhiều máy tính tới một đích, nó gây ra từ chối các yêu cầu hợp lệ của các người dùng bình thường. Bằng cách tạo ra những gói tin cực nhiều đến một đích cụ thể, nó gây ra tình trạng tương tự như tắt hệ thống.

- Đặc tính của tấn công DDOS:

Nó được tấn công từ một hệ thống các máy tính cực lớn trên Internet và thường dựa vào các dịch vụ có sẵn trên các máy tính trong mạng botnet.

44

Các dịch vụ tấn công được điều khiển từ khóa của nạn nhân trong khi các máy tính bị chiếm quyền sử dụng trong mạng botnet được sử dụng để tấn công thường là nạn nhân tiếp theo.

Là dạng tấn công khó có thể phát hiện bởi tấn công này được sinh ra từ nhiều địa chỉ IP trên Internet.

- Phân loại tấn công DDOS:

 Tấn công gây hết băng thông truy cập tới máy chủ: Flood attack, UDP và ICMP Flood.

 Tấn công khuếch đại các giao tiếp: murf and fraggle attack. - Các giai đoạn của một cuộc tấn công kiểu DDOS:

Giai đoạn chuẩn bị: Chuẩn bị công cụ quan trọng của cuộc tấn công, công cụ này thông thường hoạt động theo mô hình khách - chủ. Kế tiếp dùng các kỹ thuật tấn công khác để nắm trọn quyền một số host trên mạng. Tiến hành cài đặt các phần mềm cần thiết trên các host này, việc cấu hình và thử nghiệm toàn bộ cuộc tấn công mạng cũng sẽ được thực hiện trong giai đoạn này.

Giai đoạn xác định mục tiêu và thời điểm: Sau khi xác định mục tiêu lần cuối, kẻ tấn công sẽ có thể hoạt động điều chỉnh cuộc tấn công mạng chuyển hướng tấn công về phía mục tiêu. Yếu tố thời điểm sẽ quyết định mức độ thiệt hại và tốc độ đáp ứng của mục tiêu đối với cuộc tấn công.

Giai đoạn phát động tấn công và xóa dấu vết: Đúng thời điểm đã định, kẻ tấn công phát động tấn công từ máy của mình, lệnh tấn công này có thể đi qua nhiều cấp mới đến host thực sự tấn công. Toàn bộ attack network sẽ vắt cạn năng lực của máy chủ mục tiêu liên tục, ngăn chặn không cho nó hoạt động như thiết kế.

45 - Một số công cụ DDOS:

 Công cụ DDOS dạng Agent – Handler:

 TrinOO: có kiến trúc Agent - Handler, là công cụ DDOS kiểu tấn công suy giảm băng thông, sử dụng kĩ thuật UDP flood.

 Tribe Flood Network: kiểu kiến trúc Agent - Handler, công cụ DDOS hỗ trợ kiểu tấn công làm cạn kiệt băng thông của mạng và tấn công làm cạn kiệt tài nguyên. Sử dụng kĩ thuật UDP flood, ICMP Flood, TCP SYN và Smurf Attack.

 Stacheldraht: là biến thể của TFN có thể khả năng cập nhật Agent tự động. Giao tiếp telnet mã hóa đối xứng giữa kẻ tấn công và Handler.  Shaft: biến thể của TrinOO, giao tiếp Handler- Agent trên UDP, kẻ tấn

công Hendle trên internet. Có thể tấn công phối hợp nhiều kiểu cùng lúc.  Công cụ DDOS dạng IRC – Based: Trinity: có hầu hết các kỹ thuật tấn

công bao gồm UDP, TCP SYN, TCP ACK, TCP fragment, TCP NULL, TCP RST… Nó có sẵn khả năng ngẫu nhiên hóa địa chỉ bên gửi.

- Tấn công từ chối dịch vụ phản xạ nhiều vùng DRDOS (distributed reflection denial of máy chủ):

 Xuất hiện đầu năm 2002, là kiểu tấn công mới mạnh nhất trong họ DOS.  Mục tiêu chính: chiếm đoạt toàn bộ băng thông của máy chủ, tức là làm tắc

nghẽn hoàn toàn đường kết nối từ máy chủ vào xương sống của internet và tiêu hao tài nguyên máy chủ. DRDOS là sự phối hợp giữa hai kiểu DOS và DDOS. Nó có kiểu tấn công SYN với một máy tính đơn, vừa có sự kết hợp giữa nhiều máy tính để chiếm dụng băng thông. Kẻ tấn công thực hiện bằng cách giả mạo địa chỉ của máy chủ mục tiêu rồi gửi yêu cầu SYN đến các máy chủ lớn, để các máy chủ này gửi các gói tin SYN/ACK đến máy chủ mục tiêu. Quá trình gửi cứ lặp lại liên tục với nhiều địa chỉ IP giả từ kẻ tấn

46

công với nhiều máy chủ lớn tham gia nên máy chủ mục tiêu nhanh chóng bị quá tải, băng thông bị chiếm dụng bởi máy chủ lớn.

- Cách phòng chống và hạn chế:

 Tấn công DDOS đến nay trên thế giới hầu như chưa có cách ngăn chặn 100%, tuy nhiên chúng ta có thể sử dụng tường lửa để phòng chống và hạn chế một phần sức mạnh và tác hại của nó.

 Cách cài đặt một firewall đơn giản:

o Bước 1: Tạo file .htaccess tại thư mục DDOS access/request liên tục (thông thường là các thư mục public_html, forum, 4rum, diendan,… Nội dung file như sau:

RewriteEngine on RewriteCound %{HTTP_REFERER}!^

http(s)?://(www.)?thienduongweb.com [nc] RewriteRule! Antiddos.phtml

http://thienduongweb.com/antiDOS.phmtl?%{REQUEST_URL}[QSA] o Bước 2: tại cùng thư mục, tạo file antidos.phtml như sau:

<?

$text=$HTTP_SERVER_VARS['QUERY_STRING'];

$text = preg_replace("#php&#si",'php?',$text);

Echo(‘<center><a href = http://thienduongweb.com’.$text.’>

[click vào đây] </a><br> để vào trang chính.</center>’);

47 3.12. SQL Injection

3.12.1. Định nghĩa

SQL Injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp bằng cách 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.

3.12.2. Các dạng tấn công SQL Injection

Có bốn dạng thông thường bao gồm: vượt qua tường lửa lúc đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng stored – proceures.

Để biết các website sử dụng cơ sở dữ liệu SQL ta sử dụng các phần mềm, các công cụ tìm kiếm lỗi hoặc công cụ tìm kiếm Google .

Để biết website nào dính lỗi SQL Injection ta thêm dấu “ ’ ” vào sau thanh địa chỉ.

- 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 các 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 câu lệnh truy vấn SQL là:

48

tendangnhap =’” &txttendangnhap& “’ and matkhau=’” &txtmatkhau&”’

Thoạt nhìn câu truy vấn này không có bất cứ lỗi 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.

Nếu người dùng nhập vào ô tên đăng nhập và mật khẩu là :’ OR”=’

Lúc này câu truy vấn sẽ được gọi thực hiện là:

select * from user where tendangnhap=”OR”=” and matkhau = “OR”=”

Kết quả là 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 bảng user 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ệ

- 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ụ thường gặp trong các website về bán sản phẩm. Thông thường, sẽ có một trang nhận ID của sản phẩm cần hiển thị rồi sau đó truy vấn nội dung của chi tiết sản phẩm có ID này. Câu truy vấn SQL là:

sql=”select * from sanpham inner join loaisp on sanpham.maloai = loaisp.maloai where sanpham.masp = ‘” +masp+”’”

Trong các tình huống thông thường, đoạn mã này sẽ hiển thị nội dung của tin có masp trùng với masp đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên,

49

đ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 masp hợp lệ bằng cách gán masp 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ư: HRBD’ ORDER BY 16 –

Lúc này câu truy vấn sẽ trở thành:

select * from sanpham where masp = ‘HRBD’ ORDER BY 16-‘

Dấu “--“ trong SQL có nghĩa là chú thích. Mục đích dùng để loại bỏ các lệnh SQL nằm phía sau dấu “—“

Bằng cách này kẻ tấn công có thể chèn bất cứ câu lệnh sql nào vào để website thực hiện bằng cách thêm dấu “ ‘ “ và các câu lệnh SQL muốn thực thi sau địa chỉ của website.

Để xem thông tin về phiên bản của hệ quản trị cơ sở dữ liệu mà website đang dùng ta chèn thêm vào địa chỉ web chuỗi giá trị như sau:

union all select ‘1’,@@version,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’10’—

Lúc này câu lệnh truy vấn ban đầu không thành công chương trình sẽ thực hiện thêm câu lệnh SELECT phía sau từ khóa UNION (từ khóa này dùng để hợp kết quả của 2 câu lệnh SELECT thành 1).

Tất cả các ví dụ trên, dường như không có gì là 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ư drop table.

Ví dụ như: ‘DROP TABLE USER –‘

Để biết được ứng dụng có bị lỗi này hay không, rất đơn giản, hãy nhập vào chuỗi UNION như trên, nếu hệ thống thông báo về lỗi cú pháp dạng: Invalid

50

object name “OtherTable”. Ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khoá 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.

Để biết được tên của các bảng cơ sở 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, rất đơn giản, vì trong SQL máy chủ có hai đối tượng sysobject và syscolumns cho phép liệt kê tất cả các tên bảng và cột trong hệ thống. Ta chỉ cần chỉnh lại câu lệnh SELECT như sau:

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.

- 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 nhập 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.

Xét ví dụ sau: câu truy vấn sql lúc đăng kí thành viên

insert into users (hoten, tendangnhap, matkhau, email, gioitinh) values

(‘ “+hoten+”’,’”)

Thì chắc chắn sẽ bị lỗi SQL Injection vì nếu nhập vào trường thứ nhất là ‘+(SELECT TOP 1 tendn FROM users)+’

Lúc này câu truy vấn sẽ trở thành: Insert into user values (‘’+(SELECT TOP 1 tendn FROM user) +’’,’abc’,’def’)

51

Khi đó, lúc thực hiện xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 tendn FROM users.

- Dạng tấn công sử dụng stored-procedure:

Trong SQL, máy chủ có các cơ sở dữ liệu tổng thể và trong các cơ sở dữ liệu này có các hệ thống thủ tục lưu trữ được lập trình sẵn để thực hiện các công việc cụ thể nào đó. Nếu như kẻ tấn công chiếm được quyền điều khiển hệ quản trị này và thực hiện truy vấn đến các lưu trữ này hoặc nguy hiểm hơn là xóa đi cơ sở dữ liệu tổng thể thì toàn bộ cơ sở dữ liệu sẽ bị ảnh hưởng và không hoạt động được.

Việc tấn công vào thủ tục lưu trữ 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 ‘sa’.

Ví dụ nếu ta thay đoạn mã tiêm vào dạng:

’;EXEC xp_cmdshell’cmd.exe dir C:’

Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt máy chủ.Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe. Nếu cài SQL ở chế độ mặc định thì SQL chạy trên nền SYSTEM, tương đương mức truy cập ở Windows. Có thể dùng master..xp_cmdshell để thi hành lệnh từ xa.

- Tấn công SQL Injection nâng cao:

Chuỗi kí tự không có dấu nháy đơn: nhà lập trình có thể bảo vệ ứng dụng của họ bằng cách loại bỏ tất cả dấu nháy, thông thường loại bỏ dấu nháy bằng cách thay một dấu nháy thành 2 dấu nháy.

52

Tấn công 2 tầng: mặc dù ứng dụng đã thay thế dấu nháy đơn nhưng vẫn còn khả năng bị chèn đoạn mã SQL. Cách giải quyết tốt nhất là không cho phép nhập dấu nháy đơn.

3.12.3. Tránh sự kiểm soát

Máy chủ SQL có một giao thức kiểm soát chặt chẽ bằng họ hàm sp_traceXXX, cho phép ghi nhận nhiều sự kiện xảy ra trong cơ sở dữ liệu. Đặc biệt là các sự kiên T-SQL, ghi nhận tất cả các câu lệnh SQL thực hiện trên máy chủ. Nếu chế độ kiểm soát được bật thì tất cả các câu truy vấn SQL của kẻ tấn công cũng bị ghi nhận và nhờ đó mà một người quản trị có thể kiểm soát những gì đang xảy ra và nhanh chóng tìm ra được giải pháp.

3.12.4. Các phòng tránh SQL Injeciton

Trong hầu hết trình duyệt, những kí tự nên được mã hóa trên địa chỉ URL trước khi sử dụng.

Đối với các giá trị numeric, hãy chuyển nó sang integer trước khi thực hiện câu truy vấn SQL, hoặc dùng isnumeric để chắc chắn nó là một số integer.

Dùng thuật toán để mã hóa dữ liệu.

Kiểm tra chặt chẽ các kí tự nhập vào trước khi thực hiện các lệnh truy vấn SQL. Viết các hàm xóa bỏ các kí tự đặc biệt từ chuỗi nhập vào như: ‘, “”, --, @@, SELECT, UNION, DROP, INSERT,...

Đối với máy chủ SQL nên dùng các thủ tục lưu trữ để thực hiện truy vấn vì trong máy chủ SQL có các hàm tự động lọc các dữ liệu nhập vào.

53

Tắt thông báo lỗi từ hệ quản trị CSDL. Điều này hạn chế việc tấn công của kẻ tấn công tuy nhiên website chúng ta vẫn bị lỗi việc này không giúp chúng ta chống lại hoàn toàn sự tấn công.

3.13. Cross Site Scripting (XSS)

3.13.1. Tấn công XSS

XSS là một trong những kĩ thuật tấn công phổ biến nhất hiện nay, đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với nhà phát triển web và cả những người sử dụng web. Bất kì một website nào cho phép người sử dụng đăng nhập thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS.

XSS là một kĩ thuật tấn công bằng cách chèn vào các website động những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác.

3.13.2. Hoạt động của XSS

XSS cũng là các yêu cầu được gửi từ các máy khách đến máy chủ nhằm chèn vào đó các thông tin vượt quá tầm kiểm soát của máy chủ. Nó có thể là một yêu cầu được gửi từ các form dữ liệu hoặc cũng có thể đó chỉ là các URL.

XSS chỉ gây tổn hại đối với website ở phía khách mà nạn nhân trực tiếp là những người khách duyệt site đó.

3.13.3. Cách tấn công

- Quét lỗi XSS của ứng dụng web:

 Cách 1: Sử dụng nhiều chương trình dò quét lỗi của ứng dụng web.  Cách 2: Thực hiện 5 bước

54

 Bước 2: Xác định chỗ cần kiểm tra XSS.

 Bước 3: Xác minh khả năng site có bị lỗi XSS hay không bằng cách xem các thông tin trả về.

 Bước 4: Khi đã xác định chỗ có khả năng bị dính lỗi XSS thì chúng ta chèn các đoạn mã của chúng ta vào để thử tiếp.

 Bước 5: Lên kế hoạch tấn công. - Tấn công:

Có nhiều kĩ thuật tấn công dựa trên lỗi XSS này, chủ yếu là sau khi tìm


Một phần của tài liệu TÌM HIỂU MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG WEBSITE VÀ ĐỀ XUẤT MỘT SỐ GIẢI PHÁP HẠN CHẾ (Trang 43 -43 )

×