Tấn công kiểu “ấn định phiên làm việ c”

Một phần của tài liệu Đồ án tốt nghiệp Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát “ Lỗ hổng “ trong dịch vụ Web (Trang 44 - 74)

Trong kiểu tấn công “ấn định phiên làm việc”, hacker ấn định sẵn session ID cho nạn nhân, trước khi họđăng nhập vào hệ thống. Sau đó, hacker sử dụng session ID này để buớc vào phiên làm việc của nạn nhân đó.

Quá trình tấn công như sau:

Bước 1: Thiết lập session ID.

Hệ thống quản lí session theo 2 hướng:

+ Hướng tự do: chấp nhận bất kì một session ID, nếu chưa tồn tại session thì tạo mới một session ID.

+ Hướng giới hạn: chỉ chấp nhận session ID nào đã đăng kí trước đó. Với hệ thống hướng tự do, hacker chỉ cần thiết lập một session ID bất kì, nhớ và sau đó sử dụng lại session ID này. Ở hướng giới hạn, hacker phải đăng kí một session ID với ứng dụng.

Phụ thuộc vào qui trình quản lí phiên làm việc, hacker lưu trữ “thời gian sống” (Time To Live) của phiên làm việc cho đến khi nạn nhân đăng nhập vào hệ thống. Thông thường một phiên làm việc không tồn tại vô hạn. Hệ thống sẽ

tự động hủy bỏ phiên làm việc, nếu nó không thực hiện một thao tác nào (thời gian nhàn rỗi) hoặc hết hạn định.

Bước 2: Gửi ID này đến trình duyệt nạn nhân.

Hacker gửi session ID vừa tạo đến người dùng, việc trao đổi ID session còn tùy vào ứng dụng, có thể qua parameter URL, trường ẩn form hay cookie.

Các cách tấn công thông dụng gồm có:

1 Tấn công sessionID trên tham số URL (SessionID parameter URL). 2 Tấn công sessionID trên trường ẩn form (SessionID hidden Form Field). 3 Tấn công sessionID trong cookie.

a/ Tn công sessionID trên tham s URL (SessionID parameter URL) Hacker gửi một liên kết yêu cầu người dùng đăng nhập vào hệ thống máy đích với sessionID đã được ấn định sẵn trên URL.

1) Hacker mở dịch vụ trực tuyến của ngân hàng thông qua địa chỉ

online.worldbank.com

2) Nhận được một session ID từ trình chủ, để xác định phiên làm việc của hacker. Ví dụ session ID có giá trị là 1234.

3) Hacker tìm cách gửi liên kết đến một người dùng nào đó, có tài khoản trong ngân hàng này. Liên kết đó thường dẫn đến trang đăng nhập vào tài khoản trong ngân hàng ví dụ liên kết là

http://online.workbank.com/login.jsp?sessionid=1234. Người dùng có thể bị lừa làm việc trong phiên làm việc của hacker, khi người dùng nhận được liên kết này.

4) Người dùng bị mắc lừa và mở ứng dụng Web tói ngân hàng bằng liên kết của hacker. Do đã có session ID=1234 (của hacker), nên trình chủ không tạo session ID mới.

5) Người dùng tiếp tục đăng nhập với thông tin của mình để quản lí tài khoản trong ngân hàng

6) Khi đó hacker vào tài khoản của người dùng mà không cần phải đăng nhập vì có cùng phiên làm việc.

b/ Tn công Session ID trong biến n Form

Cách tấn công này tương tự như “Thao tác trên trường ẩn Form”

(phần 2.1.2), sau khi hacker xem mã HTML của trang Web, nhận thấy session ID được đặt trong biến ẩn form, hacker sẽ gửi một sessionID cũng trên URL đến người dùng hoặc một trang Web giống trang đích nhưng với biến

c/ Tn công Session ID trong cookie

Lợi dụng cookie, hacker có hai cách để đưa một session ID đến trình duyệt của nạn nhân:

1). Thiết lập một cookie trên trình duyệt bằng ngôn ngữ kịch bản:

Hầu hết trình duyệt đều hỗ trợ các ngôn ngữ kịch bản thực thi trên trình duyệt như Javascript, VBScript. Cả hai ngôn ngữ này có thể thiết lập một cookie cho trình duyệt bằng cách thiết lập giá trị “ document.cookie”.

Ví d 19:

http://online.workbank.com/<script>document.cookie=“sessionid=1234; domain= .workbank.com”;</script>

Bên cạnh đó, hacker có thể thiết lập thời gian sống cho cookie, domain cookie…và cách này phù hợp với những hệ thống hướng “tự do”. Ví dụ domain nào thuộc.workbank.com đều có thểđọc được giá trị cookie này. (adsbygoogle = window.adsbygoogle || []).push({});

2). Dùng thẻ <META> với thuộc tính Set-Cookie:

Ứng dụng cũng có thể thiết lập cookie cho trình duyệt bằng thẻ <META> trong HTML.

Ví d 20: < meta http-equiv= Set-Cookie content=”sessionid=1234”>

Bước 3: Đột nhập vào phiên làm việc của nạn nhân.

Sau khi nạn nhân đăng nhập vào hệ thống qua session ID đã được chỉ định sẵn và chưa thoát khỏi ứng dụng, hacker dùng session ID đó để bước vào phiên làm việc của nạn nhân.

2.4.2.Tấn công kiểu “Đánh cắp phiên làm việc”

Khác với kiểu tấn công ấn định phiên làm việc, hacker đánh cắp một session ID của người dùng khi họ đang trong phiên làm việc của mình. Và để có thể đánh cắp session ID của người dùng, hacker có thể dùng những phương pháp sau:

1 Dựđoán phiên làm việc 2 Vét cạn phiên làm việc.

3 Dùng đoạn mã đánh cắp phiên làm việc

a.) Tn công kiu dđoán phiên làm vic (Prediction sessionID)

Hacker phải là người dùng hợp lệ của hệ thống, sau vài lần đăng nhập vào hệ thống, hacker xem xét các giá trị session ID nhận được, tìm ra qui luật phát sinh và từ đó có thể đoán được giá trị của một phiên làm việc của người dùng kế tiếp.

b). Tn công kiu vét cn phiên làm vic (Brute force ID)

Hacker tự tạo một chương trình gửi nhiều yêu cầu trong một khoảng thời gian đến trình chủ. Mỗi một yêu cầu kèm theo một session ID để tìm các sessionID đang tồn tại. Hacker dựa vào thói quen của những nhà phát triển ứng dụng lấy thời gian hay địa chỉ IP của người dùng để tạo sessionID để hạn chế

vùng vét cạn.

c). Tn công kiu dùng đon mã đểđánh cp phiên làm vic

Bằng cách chèn vào đoạn mã thực thi trên chính trình duyệt của nạn nhân, hacker có thể lừa người dùng theo vết một liên kết để từđó thực hiện đánh cắp cookie của người dùng và cách này được thực hiện thông qua lỗi Cross- Site Scripting. Sau khi có được phiên làm việc của người dùng, hacker vào phiên làm việc của họ.

2.4.3. Biện pháp phòng chống:

Bin pháp 1: Chống việc đăng nhập với một session ID có sẵn

Theo kiểu tấn công này, người dùng đăng nhập vào hệ thống thông qua một session ID do hacker tạo sẵn, thay vì do trình chủ tạo mới. Do đó để phòng chống, ứng dụng phải hủy bỏ sessionID được cung cấp bởi trình duyệt của người dùng, khi đăng nhập, và luôn tạo một sessionID mới khi người dùng đăng nhập thành công.

Bin pháp 2: Phòng chống những hacker bên ngoài hệ thống

Việc tạo ứng dụng trên hệ thống theo hướng giới hạn ( chỉ tạo một session ID mới cho người dùng sau khi họ thành công ), sẽ khiến cho những hacker không phải là người dùng hợp lệ của hệ thống không thể sử dụng phương pháp tấn công này.

Bin pháp 3: Giới hạn phạm vi ứng dụng của session ID. + Kết hợp Session ID với địa chỉ của trình duyệt.

+ Kết hợp Session ID với thông tin xác thực được mã hoá SSL của người dùng. + Xóa bỏ session khi người dùng thoát khỏi hệ thống, hay hết hiệu lực, có thể

thực hiện trên trình chủ hoặc trình duyệt.

+ Người dùng phải dùng chế độ thoát khỏi hệ thống, để xóa bỏ session hiện thời và những sessionID còn lưu lại trên hệ thống, khi họ quên thoát ra ngoài những lần trước.

+ Thiết lập “thời gian hết hiệu lực” cho session, tránh trường hợp hacker có thể

duy trì session và sử dụng nó lâu dài.

+ Với session ID quá ngắn, hacker có thể dùng kĩ thuật “Vét cạn”. Nhưng không vì thế mà cho rằng ứng dụng sẽ bảo mật với session ID dài và phức tạp vì kích thước session ID sẽ là một vấn đề nếu thuật toán không tốt.

2.5. TẤN CÔNG “TỪ CHỐI DỊCH VỤ” (DoS_denial of Server) 2.5.1. Khái niệm DoS

Tấn công kiểu DoS là tấn công làm cho các dịch vụ mạng bị tê liệt, không còn khả năng đáp ứng được yêu cầu nữa. Loại tấn công này (adsbygoogle = window.adsbygoogle || []).push({});

ảnh hưởng đến nhiều hệ thống, rất dễ thực hiện và lại rất khó bảo vệ hệ

thống khỏi kiểu tấn công DoS.

Thông thường, kiểu tấn công DoS dựa trên giao thức. Ví dụ với giao thức ICMP, hacker có thể sử dụng bomb e-mail để gửi hàng ngàn thông

điệp email với mục đích tiêu thụ băng thông để làm hao hụt tài nguyên hệ

thống trên mail server. Hoặc có thể dùng phần mềm gửi hàng loạt yêu cầu

đến máy chủ, khiến cho máy chủ không thể đáp ứng những yêu cầu chính

đáng khác.

Khái niệm về “TCP bắt tay ba chiều:”

Để tìm hiểu phương pháp tấn công DoS, trước tiên ta xét cơ chế làm việc “TCP bắt tay ba chiều”.

Gói dữ liệu TCP chứa flag bits (cờ) để mô tả nội dung và mục đích của gói dữ liệu.

Ví dụ:

1 Gói dữ liệu TCP với cờ SYN (synchoronize) dùng để bắt đầu 1 kết nối.

2 ACK (acknowledgement): xác nhận kết nối.

Cách hoạt động của gói TCP:

Hình 7: Cơ chế thiết lập kết nối trước khi truyền số liệu

Buớc 1: Máy con gửi gói tin SYN yêu cầu kết nối.

Bước 2:

Nếu máy chủ chấp nhận kết nối, máy chủ gửi gói tin SYN/ACK. Server bắt buộc phải gửi thông báo lại, vì TCP là chuẩn tin cậy nên nếu máy con không nhận được thông báo, thì sẽ nghĩ rằng packet đã bị lạc và gửi lại một packet mới.

Bước 3:

Máy con gửi hồi đáp bằng gói tin ACK. Báo cho máy chủ biết rằng máy con đã nhận được SYN/ACK packet và lúc này kết nối đã được thiết lập.

a) Li dng TCP thc hin phương pháp SYN flood:

Hình 8: Tấn công DoS truyền thống

Với một gói tin SYN, máy chủ phải để một phần tài nguyên như bộ nhớ đệm để nhận và truyền dữ liệu cho đường truyền đó. Tuy nhiên, tài nguyên của hệ thống là có hạn, và hacker tìm mọi cách để hệ thống tràn qua giới hạn đó. (Được gọi là half-open connection, vì máy khách mở kết nối giữa chừng)

Theo hình 8, nếu máy chủ sau khi gửi trả gói tin SYN/ACK để thông báo chấp nhận kết nối cho máy yêu cầu, nhưng nếu địa chỉ IP của máy yêu cầu là giả mạo, thì gói tin không thể đến được đích, nên máy chủ vẫn phải dành tài nguyên cho yêu cầu đó.

Sau một thời gian không nhận được phản hồi từ máy khách, máy chủ lại tiếp tục gửi gói tin SYN/ACK để xác nhận lần nữa, cứ như vậy, kết nối vẫn tiếp tục mở.

Nếu hacker gửi nhiều gói tin SYN đến máy chủ đến khi máy chủ không thể tiếp nhận thêm kết nối nào nữa, thì lúc này hệ thống đã bị phá vỡ.

b) Tn công vào băng thông

+ Kiểu tấn công thứ 1:

Hacker hoàn toàn có khả năng làm ngập hệ thống, vì băng thông của hacker lớn hơn băng thông của máy đích. Kiểu tấn công này không bị hạn chế bởi tốc độ truyền mạng. (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ 21:

Hacker có một đường truyền tốc độ cao T1 ( 1.544- Mbps ) hay lớn hơn có thể dễ dàng phá vỡ một hệ thống có đường truyền 56Kbps.

+ Kiểu tấn công thứ 2:

Kiểu tấn công này được dùng khi đường truyền mạng của hacker là quá thấp so với đường truyền của máy đích.

Không giống như kiểu tấn công DoS truyền thống, kiểu tấn công vào băng thông lớn hơn sẽ lợi dụng những gói tin từ những hệ thống khác nhau cùng một lúc tiến đến hệ thống đích, khiến cho đường truyền của hệ thống đích không còn khả năng đáp ứng, máy chủ không còn khả năng nhận một gói tin nào nữa.

Theo hình 9, tất cả các gói tin đi vào mạng máy tính qua một

"Big-Pipe" ( ống dẫn lớn ), sau đó được router chia ra những "Small Pipe" (ống dẫn nhỏ) cho nhiều máy tính con tùy theo địa chỉ IP của gói tin.

Nhưng nếu toàn bộ "Big-Pipe" bị làm ngập bằng những gói tin chỉ hướng

đến 1 máy nhất định trong mạng máy tính con này, router đành phải chấp nhận loại bỏ phần lớn các packet, để chỉ còn lại số lượng vừa đủ đi qua "Small Pipe" của máy tính đó. Kiểu tấn công này sẽ loại máy đích ra khỏi Internet.

Đây là phương pháp tấn công kiểu từ chối dịch vụ, nhưng không là DoS mà gọi là DDoS ( kiểu từ chối dịch vụ phân tán ). Nghĩa là cùng một lúc nhiều máy sẽ được phát động để gửi gói tin đến máy đích (mặc dù đường truyền của mỗi máy không cao nhưng nhiều đường truyền lại hợp thành một ống dẫn

“Big Pipe”), làm cho máy đích không còn khả năng tiếp nhận gói tin và bị loại khỏi mạng Internet.

c) Tn công kiu “DRDoS” (Distributed Reflection Denial of Service) (Thế h tiếp theo caDdoS):

Hình 10: Tấn công kiểu DRDoS

Bằng cách giả địa chỉ IP của máy đích, hacker sẽ cùng lúc gửi nhiều gói tin đến các hệ thống máy mạnh trên mạng, các hệ thống này khi nhận gói tin SYN giả này, chấp nhận kết nối và gửi trả một gói tin SYN/ACK để

thông báo. Vì địa chỉ IP của gói tin SYN bị hacker sửa đổi thành địa chỉ IP máy đích nên những gói tin SYN/ACK sẽ được gửi về cho máy đích. Cùng một lúc nhận được nhiều gói tin, đường truyền của máy đích không đủ

khả năng đáp ứng, hệ thống máy đích từ chối nhận bất kì gói tin nào và lúc này hệ thống máy đích đã bị sụp đổ.

2.5.2. Biện pháp phòng chống

Kiểu tấn công từ chối dịch vụ gây nhiều khó khăn trong vấn đề bảo vệ

cũng như điều tra tìm ra thủ phạm, bởi vì hầu hết hacker đã thay đổi địa chỉ IP của máy mình, nên rất khó xác định ai là thủ phạm.

Để phòng chống khả năng khuyếch đại đường truyền, cần: + Huỷ khả năng quảng bá (broadcast) tại router biên.

+ Tăng kích thước hàng đợi kết nối

kết quả: có thể phòng tránh khả năng tràn hàng đợi qua nhiều kết nối, nhưng cách này sử dụng nhiều tài nguyên.

+ Giảm thời gian thiết lập kết nối.

+ Dùng phần mềm phát hiện, phá hủy kiểu tấn công DoS.

Hầu hết các hệ điều hành hiện nay đều hỗ trợ khả năng phát hiện và phòng chống kiểu tấn công SYNflood. Tuy nhiên cũng đã có những phần mềm

được có khả năng tránh kiểu tấn công này.

Ví d 22:

Với Linux kernels 2.0.30 và về sau cài đặt một tùy chọn gọi là

SYN Cookie, kernel có nhiệm vụ truy tìm và lưu vết những khả năng có thể xảy ra kĩ thuật SYN. Sau đó, kernel sẽ sử dụng một giao thức mã hoá như SYN cookie, cho phép người dùng hợp lệ của hệ thống tiếp tục kết nối đến hệ thống.

Với WindowNT 4.0 trở về sau, sử dụng kĩ thuật backlog, mỗi khi hàng (adsbygoogle = window.adsbygoogle || []).push({});

đợi kết nối không đủ đáp ứng, hệ thống tự động cung cấp tài nguyên cho hàng

đợi, vì thế hàng đợi sẽ không bị phá vỡ.

Ứng dụng cho phép máy con chỉ được thiết lập số kết nối tối đa theo qui định, tránh trường hợp hacker gửi cùng lúc nhiều yêu cầu gây tắc nghẽn.

2.6. TẤN CÔNG VÀO “CÂU LỆNH PHÍA SERVER” (server side include-SSI)

SSI là đoạn mã được nhúng vào trong trang Web để yêu cầu trình chủ

cung cấp thông tin ở một điểm nào đó trong trang. Ví dụ

<!--#include file="test.asp"-->

Dòng lệnh trên nhúng nội dung file “test.asp” vào trong trang Web.

Tuy nhiên, SSI không phải được hỗ trợ trong hầu hết các trình chủ, Apache và IIS là hai trình chủ hỗ trợ SSI. Trang Web có sử dụng SSI thường được lưu dưới dạng .shtml hoặc .stm (là phần mở rộng của .html hay .htm) để báo hiệu cho trình chủ biết trang này có sử dụng SSI để tiết kiệm thời gian xử lí cho trình chủ (không mất thời gian tìm kiếm).

Quá trình thực hiện xử lí một trang Web yêu cầu:

Nếu không có bất kì chỉ thị nào khác, trình chủ chỉ gửi nội dung trang Web cho trình duyệt nhưng với một SSI, thì công việc tuần tự theo những bước như sau:

+ Trình chủ nhận dữ liệu và phân tích dữ liệu (tìm kiếm và phân loại những câu lệnh đặc biệt) để chỉ thị thực hiện

+ Dựa trên những câu lệnh mà trình chủ tìm thấy, trình chủ

thực thi những câu lệnh đó để trả kết quả cho trình duyệt. + Trả kết quả về cho trình duyệt

Có 3 khả năng thực hiện:

+ Nhận thông tin từ một file và chèn vào trong trang + Gán giá trị cho một số biến

+ Gọi chương trình CGI

Hacker lợi dụng những ô nhập để chèn thêm vào đó nội dung một câu lệnh SSI.

Ví dụ:

<!--#jdbc select="SELECT * FROM User"

Một phần của tài liệu Đồ án tốt nghiệp Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát “ Lỗ hổng “ trong dịch vụ Web (Trang 44 - 74)