các dạng tấn công thường gặp - xaydungphanmem

Download Report

Transcript các dạng tấn công thường gặp - xaydungphanmem

ĐẢM BẢO AN TOÀN MÃ NGUỒN

1

Nhóm 10

Nội dung chính

2

   Lý do cần đảm bảo an toàn cho mã nguồn?

Các dạng tấn công thường gặp:  Buffer Overflow  SQL Injection  XSS (Cross Site Scripting)  CRSS (Cross Site Request Forgery)  Session fixation  Session poisoning Các công cụ hỗ trợ

Bảo mật?

3

 Bảo mật đề cập đến các kỹ thuật để đảm bảo rằng dữ liệu được lưu trữ trong một máy tính không thể đọc hoặc bị tổn hại do bất kỳ cá nhân mà không được phép.

4

Lý do cần đảm bảo an toàn mã nguồn

   Đảm bảo tính tin cậy: thông tin không thể bị truy cập trái phép Đảm bảo tính nguyên vẹn: thông tin ko bị sửa đỗi trái phép Tính sẵn sàng: thông tin luôn sẵn sàng đáp ứng yêu cầu của người có thẩm quyền

5

Các dạng tấn công thường gặp

Buffer OverFlow

6

 What:  Buffer Overflow: Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay vào đó phải thực thi một đoạn mã bất kì do hacker đưa vào hệ thống.  Buffer: là 1 vùng nhớ được cấp phát kề nhau: • array, pointer trong C int main () { int buffer[10]; buffer[20] = 10; }

Buffer OverFlow

 When:  Khi bộ đệm lưu trữ dữ liệu trong bộ nhớ không kiểm soát việc ghi giá trị:  Dẫn đến tràn stack  Ghi đè địa chỉ trả về của hàm

Buffer OverFlow

 Stack  Là một khối bộ nhớ liên tục chứa dữ liệu

Buffer OverFlow

 Stack void function (int a, int b, int c) { char buffer1[5]; char buffer2[10]; } int main() { function(1,2,3); }

Buffer OverFlow

void function (char *str) { char buffer[16]; strcpy (buffer, str); } int main () { char *str = "I am greater than 16 bytes"; // length of str = 27 bytes function (str); }

Buffer OverFlow

 Biện pháp:  Viết mã một cách an toàn an toàn  Vô hiệu hóa stack  Sử dụng các công cụ biên dịch  Kiểm tra run-time chủ động: libsafe(tool) int main () { char *str = (char *)malloc(10);// allocate 10 bytes for str gets (str); // reads input from stdin and store into str } /tmp/cc203ViF.o: In function "main": /tmp/cc203ViF.o(.text+0x1f): the "gets" function is dangerous and should not be used.

SQL INJECTION

 What:  Là 1 kĩ thuật cho phép lợi dụng • Lỗ hổng trong kiểm tra dữ liệu nhập trong các ứng dụng web • Các thông báo lỗi của hệ quản trị cơ sở dữ liệu 

Mục đích: Đưa vào và thực thi các câu lệnh SQL bất hợp pháp

SQL INJECTION

CÁC DẠNG TẤN CÔNG THƯỜNG GẶP

:  Vượt qua kiểm tra đăng nhập SELECT * FROM T_USERS WHERE USR_NAME = ‘ ‘ and USR_PASSWORD= ‘ ‘ username : ' OR ' ' = ' ‘ password : ' OR ' ' = ' ' SELECT * FROM T_USERS WHERE USR_NAME = '' OR ''='' and USR_PASSWORD= '' OR ''=''

SQL INJECTION

CÁC DẠNG TẤN CÔNG THƯỜNG GẶP

:  SELECT strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID ID : 0 OR 1=1 SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1

SQL INJECTION

CÁC DẠNG TẤN CÔNG THƯỜNG GẶP

:  INSERT strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _&trValueTwo & " ', ' " & strValueThree & " ') " VALUE 1: ' + (SELECT TOP 1 FieldName FROM TableName) + ' INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')

SQL INJECTION

CÁC DẠNG TẤN CÔNG THƯỜNG GẶP

: 

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 '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 server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe

SQL INJECTION

CÁCH PHÒNG TRÁNH

 Kiểm soát chặt chẽ dữ liệu đầu vào  Thiết lập cấu hình an toàn cho hệ quản trị CSDL

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

18

   XSS là từ viết tắt của Cross-Site Scripting là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ HTML hay những đoạn mã script nguy hiểm.

Trong đó những đoạn mã nguy hiểm được chèn vào hầu hết được viết bằng Client-Site Script như javascript, Jscript, DHTML và cũng có thể là các thẻ HTML.

XSS là một lỗi phổ biến, có rất nhiều trang web bị mắc phải lỗi này, chính vì thế ngày càng có nhiều người quan tâm đến lỗi này.

Truy tìm lỗ hổng XSS của web

19

  Cách 1: Sử dụng nhiều chương trình dò quét lỗi của ứng dụng web, ví dụ như chương trình Web Vulnerability Scanner để dò quét lỗi XSS.

Cách 2: Thực hiện 5 bước:  Bước 1: Mở website cần kiểm tra  Bước 2: Xác định các chỗ (phần) cần kiểm tra  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: Chèn những đoạn code của chúng ta vào để thử tiếp  Bước 5: Lên kế hoạch kịch bản tấn công

Cách phòng chống

20

 

Lọc:

Luôn luôn lọc các dữ liệu nhập từ phía người dùng bằng cách lọc các kí tự meta (kí tự đặc biệt) được định nghĩa trong đặc tả của HTML để phát hiện các thẻ script.

Mã hóa:

Mã hóa phía máy chủ là một tiến trình mà tất cả nội dung phát sinh động sẽ đi qua một hàm mã hóa nơi mà các thẻ script sẽ được thay thể bởi mã của nó.

 Nói chung, việc mã hóa được khuyến khích sử dụng vì nó không yêu cầu bạn phải đưa ra quyết định những kí tự nào là hợp lệ hoặc không hợp lệ. Tuy nhiên việc mã hóa có thể tốn tài nguyên và ảnh hưởng đến khả năng thực thi của một số máy chủ

21

Phạm vi và tính khả thi của phương pháp tấn công bằng XSS

 Mã JavaScript độc có thể truy cập bất cứ thông tin nào sau đây: • Cookie cố định (của site bị lỗi XSS) được duy trì bởi trình duyệt.

• RAM Cookie (của site bị lỗi XSS) • Tên của tất cả các cửa sổ được mở từ site bị lỗi XSS • Bất cứ thông tin mà có thể truy cập được từ DOM hiện tại (như value, mã HTML…)

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

22

   Là kỹ thuật tấn công bằng cách sử dụng quyền chứng thực của người sử dụng đối với 1 website khác Các ứng dụng web hoạt động theo cơ chế nhận các câu lệnh http từ người dùng, sau đó thực thi các câu lệnh này CRSS sẽ lừa trình duyệt của người sử dụng gửi đi các câu lệnh http đến các ứng dụng web và các câu lệnh sẽ được thực hiện dưới quyền chứng thực của người sử dụng

Phòng chống tấn công CRSS

23

  Dựa trên nguyên tắc của CRSS: lừa trình duyệt của người dùng (hoặc người dùng) gửi các câu lệnh http, các kỹ thuật phòng tránh tập trung vào việc phân biệt các câu lệnh giả mạo Hiện tại có nhiều lời khuyên được đưa ra, nhưng chưa có biện pháp nào có thể phòng tránh CRSS 1 cách triệt để

Các kỹ thuật phòng tránh CRSS

24

        Hạn chế thời gian hiệu lực của Session Sử dụng Get và Post hợp lý Sử dụng Captcha, sử dụng thông báo xác nhận Sử dụng Token Sử dụng cookie riêng biệt cho phần quản trị Thiết kế hệ thống log Kiểm tra Referfer Kiểm tra IP

Ấn định phiên làm việc SESSION FIXATION

25

 Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành người dùng hợp lệ.

Quá trình tấn công

26

 Thông qua 3 bước:  Setup session: thiết lập một “ bẫy session ” trên 1 server đích và chọn lựa 1 session id sẽ dùng để tấn công.

 Session fixation: Hacker sẽ dùng session của mình để gắn vào trình duyệt của người dùng  Session entrance:Hacker chờ người dùng đăng nhập vào sever đã dựng sẵn bằng session giả (được đặt sẵn) , sau đó người dùng đăng nhập bằng session của mình.

Tấn công trên URL

27

  Hacker sẽ sử dụng các “mánh” đó đã dựng sẵn VD như : để lừa người dùng đăng nhập tài khoản thông qua trang web mà người http://online.worldbank.dom/login.jsp?session=1234 .

Hacker sẽ có tài khoản của người dùng và sẽ thực hiện các hành vi khai thác bất hợp pháp trên tài khoản người dùng đã đăng nhập như tài khoản ngân hàng.

Tấn công trong biến ẩn form

28

 Tương tự như URL, biến ẩn form nghĩa là sau khi hacker xem mã HTML của trang web, nhận thấy session ID được đặt trong biến ẩn của form, hacker sẽ gửi 1 session ID cũng trên URL đó đến người dùng hoặc 1 trang web giống trang đích nhưng với biến ẩn form mang giá trị ấn định sẵn.

Tấn công trong cookie

29

  Bằng việc lợi dụng cookie, hacker có 3 cách để đưa 1 session ID đến trình duyệt của nạn nhận : Sử dụng ngôn ngữ kịch bản (javascrip ,vbscrip) để thiết lập 1 cookie trong trình duyệt của nạn nhân bằng cách thiết lập giá trị “document .cookie= “sessionid=1234;domain = .worldbank.com” ”. Bên cạnh đó hacker còn có thể thiết lập thời gian sống cho cookie, domain cookie.

Cách phòng chống :

30

   Chống việc đăng nhập với 1 session ID có sẵn bằng cách hủy bỏ session ID đượ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 1 session ID mới khi người dùng đăng nhập thành công .

Chống những hacker bên ngoài hệ thống :tạo ứng dụng trên hệ thống theo hướng giới hạn (chỉ tạo session ID mới cho người dùng sau khi họ thành công ) Giới hạn phạm vi ứng dụng của sessionID : 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 chứng thực được mã hóa ssl, xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, thiết lập thời gian hết hiệu lực của session tránh trường hợp hacker có thể duy trình session và sử dụng nó lâu dài .

Session poisoning :

31

 Session poisoning là việc lợi dụng những lỗ hổng của việc quản lý những session trên các ứng dụng máy chủ để copy (ăn cắp) những session của người dùng bằng những đoạn script .

Cách phòng chống

32

   Tạo ra danh sách những thẻ HTML được phép sử dụng.

Xóa bỏ thẻ script hay lọc ra bất kì 1 đoạn mã javascript /java/vbscript Lọc dấu nháy đơn ,nháy kép (vì có dấu nháy đơn, nháy kép có thể chèn đoạn script trong URL) ,và kí tự null(vì khả năng thêm 1 đoạn mã bất kì sau kí tự null khiến cho ứng dụng dù đã lọc bỏ thẻ script vấn không nhận ra, do ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự null này.)

CÁC CÔNG CỤ HỖ TRỢ

33

Acunetix Web Vulnerability Scanner

Yasca

PEPacker

Dofuscater

Skater .NET Obfuscator

Zend Guard