1. Trang chủ
  2. » Luận Văn - Báo Cáo

CÔNG CỤ QUÉT LỖ HỔNG SỬ DỤNG MÁY HỌC NAVIE BAYES

21 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Sử dụng mô hình học máy Navie Bayes trong phát hiện các lỗ hổng mạng. Thực hiện demo trên phần mềm GyoiThon

Trang 1

CHƯƠNG I: GIỚI THIỆU MỘT SỐ LỖ HỔNG WEB 4

1.1 Lỗ hổng SQL Injection 4

1.1.1 Giới thiệu lỗ hổng SQL Injection 4

1.1.2 Phương pháp phòng chống lỗ hổng SQLi 5

1.2 Lỗ hổng Cross Site Scripting (XSS) 6

1.2.1 Giới thiệu lỗ hổng XSS 6

1.2.2 Phương pháp khắc phục lỗ hổng XSS 7

1.3 Lỗ hổng Broken Authentication 8

1.3.1 Khái niệm lỗ hổng Broken Authentication 8

1.3.2 Phương pháp phòng chống lỗ hổng Broken Authentication 9

CHƯƠNG 2: GIỚI THIỆU CÔNG CỤ QUÉT LỖ HỔNG SỬ DỤNG MÁY HỌC GYOITHON 11

2.1 Giới thiệu công cụ GyoiThon 11

2.2 Một số tính năng của GyoiThon 11

2.3 Các bước xử lý của GyoiThon 13

2.4 Cài đặt GyoiThon 14

2.5 Demo 15

Trang 2

LỜI NÓI ĐẦU

Với sự phát triển không ngừng của các ứng dụng web thì các cuộc tấncông vào ứng dụng web cũng trở nên phức tạp Vấn đề này đặt ra yêu cầu cấpthiết về đảm bảo an toàn thông tin cho các ứng dụng web Các lỗ hổng web cóthể là những điểm yếu trong thiết kế, cài đặt và cấu hình của hệ thống hoặc dolỗi của lập trình viên hoặc sơ suất trong quá trình vận hành, quản trị Hacker

sử dụng các công cụ rò quét để phát hiện một hay nhiều các máy chủ web có

lỗ hổng bảo mật, từ đó tấn công, cài đặt mã độc, phá hoại hoặc đánh cắpthông tin trên ứng dụng web Việc bị tấn công, phá hoại, đánh cắp thông tingây ảnh hưởng nghiêm trọng đến quá trình hoạt hoạt động, gây thiệt hại về uytín, tài chính đối với cơ quan, tổ chức, doanh nghiệp

Hiện nay có nhiều các công cụ, phần mềm hỗ trợ lập trình viên, quản trịmạng tìm kiếm, phát hiện các lỗ hổng của ứng dụng web Tuy nhiên, với sựphát triển nhanh chóng của công nghệ, với sự phát triển của trí tuệ nhân tạo,công nghệ học máy, một số phần mềm không theo kịp sự phát triển cácphương thức tấn công, rà quét khai thác lỗ hổng Để có các giải pháp ngănchặn, phát hiện các nguy cơ để có giải pháp ngăn chăn, khắc phục hiệu quả,cũng cần phải ứng dụng các giải pháp, công nghệ tiên tiến trong việc pháthiện các lỗ hổng ứng dụng web Ứng dụng công nghệ học máy (MachineLearning) trong các giải pháp phần mềm quét lỗ hổng Một trong các ứngdụng đó là công cụ GyoiThon

Trang 3

;

SELECT * FROM Users WHERE User_id='' OR 1=1;/*' and password='*/ '

CHƯƠNG I: GIỚI THIỆU MỘT SỐ LỖ HỔNG WEB 1.1 Lỗ hổng SQL Injection

1.1.1 Giới thiệu lỗ hổng SQL Injection

SQL Injection (SQLi) là lỗ hổng trong việc kiểm tra dữ liệu đầu vàocủa các ứng dụng web và các thông báo lỗi của hệ quản trị CSDL trả về, đượctin tặc khai thác bằng cách tiêm các mã SQL để thực thi câu lệnh bất hợppháp, đăng nhập mà không cần tên tài khoản và mật khẩu, thực hiện truy cập

từ xa, xóa dữ liệu, lấy quyền quản trị của máy chủ… Khai thác lỗ hổng SQLi

là một trong những hình thức tấn công website phổ biến hiện nay Đa số ứngdụng web sử dụng hệ quản trị CSDL MySQL, SQL Máy chủ, Oracle, DB2,Sysbase đều có khả năng có lỗ hổng SQLi Mỗi khi người dùng tiến hànhđăng nhập vào tài khoản trực tuyến, họ sẽ phải cung cấp thông tin vềUsername và Password Trong quy trình kiểm tra và xác nhận tính hợp phápcủa tài khoản đó, hệ thống hoặc ứng dụng web tương ứng sẽ chạy 1 câu lệnhtruy vấn có dạng như sau:

Nếu kẻ tấn công chèn đoạn mã ' OR 1=1;/* vào giá trị User-Id và

*/ vào giá trị Password, câu lệnh truy vấn sẽ có dạng:

Đây là câu lệnh có điều kiện luôn đúng, do đó kẻ tấn công có thể lấytoàn bộ dữ liệu của bảng Users

Trang 4

Minh họa tấn công SQLi

1.1.2 Phương pháp phòng chống lỗ hổng SQLi

Để phòng chống lỗ hổng SQLi, có thể áp dụng một số các phương phápsau:

- Mã hóa ký tự trên địa chỉ URL trước khi được sử dụng

- Không hiển thị thông báo lỗi cho người dùng bằng cách thay thếnhững lỗi thông báo bằng 1 trang do người phát triển thiết kế

- Kiểm tra giá trị nhập vào của người dùng, thay thế những kí tự như ‘ ;

… loại bỏ các kí tự meta như ',",/,\,; và các kí tự extend như NULL, CR,

LF, trong các chuỗi nhận được từ dữ liệu người dùng nhập vào, các tham sốURL, các giá trị từ cookies

- Chuyển các giá trị numeric 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 soát chặt máy chủ SQL:

+ Kiểm tra tất cả các tài khoản có trong máy chủ SQL: chỉ tạo tài khoản

có quyền thấp cho các ứng dụng, loại bỏ những tài khoản không cần thiết,đảm bảo rằng tất cả tài khoản có mật khẩu được đặt dưới dạng phức tạp

+ Kiểm tra các đối tượng tồn tại: xóa bỏ các extended stored procedure,xoá bỏ tất cả CSDL mẫu như “northwind” và “pubs”, xóa các storedprocedure không dùng như: master xp_cmdshell, xp_startmail, xp_sendmail,sp_makewebtask…

Trang 5

+ Kiểm tra những tài khoản nào có thể truy xuất đến những đối tượngnào: đối với những tài khoản của một ứng dụng nào đó dùng để truy xuấtCSDL thì chỉ được cấp những quyền hạn cần thiết tối thiểu để truy xuất đếnnhững đối tượng nó cần dùng.

+ Kiểm tra các phiên làm việc trên máy chủ

+ Tài khoản người vận hành để có quyền hạn thấp trong máy chủ SQL

1.2 Lỗ hổng Cross Site Scripting (XSS)

1.2.1 Giới thiệu lỗ hổng XSS

XSS là một kiểu tấn công cho phép tin tặc chèn những đoạn script độchại (thường là javascript hoặc HTML) vào website và thực thi trong trìnhduyệt của người dùng nhằm đánh cắp những thông tin quan trọng như cookie,mật khẩu XSS không tấn công vào máy chủ của hệ thống mà chủ yếu tấncông trên máy client của người dùng Đây là một trong những kỹ thuật tấncông phổ biến nhất của các ứng dụng web và ngày càng nguy hiểm

Minh hoạ lỗ hổng XSS

Những phương pháp tin tặc có thể khai thác qua lỗi XSS:

Trang 6

- Đánh cắp cookie: tin tặc có thể lấy được cookie của người dùng và sửdụng thông tin đánh cắp để giả mạo phiên truy cập hoặc lấy những thông tinnhạy cảm khác được lưu trong cookie.

- Keylogging: tin tặc có thể ghi lại những thao tác gõ phím của ngườidùng bằng cách sử dụng sự kiện addEventListener trong Javascript nhằmđánh cắp các thông tin nhạy cảm, lấy mật khẩu truy cập website hoặc mã sốthẻ tín dụng…

- Phishing: tin tặc có thể tạo ra những website giả lừa người dùng đăngnhập để đánh cắp mật khẩu

1.2.2 Phương pháp khắc phục lỗ hổng XSS

Để phòng chống tin tặc khai thác lỗ hổng XSS, lập trình viên phải thựchiện lọc và kiểm tra dữ liệu đầu vào từ phía người dùng hoặc kiểm tra, mã hóagiá trị xuất cho người dùng

- 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ọccác kí tự meta (kí tự đặc biệt) được định nghĩa trong đặc tả của HTML, sửdụng hàm encode để chuyển các kí tự < > thành &lt; %gt

- Kiểm tra dữ liệu đầu vào: Loại bỏ hoàn toàn các kí tự khả nghi tronginput của người dùng, hoặc thông báo lỗi nếu trong input có các kí tự này Sửdụng các thư viện để lọc các thẻ HTML, CSS, JS

- Mã hóa: Thực hiện mã hóa phía máy chủ web, đảm bảo tất cả các nộidung phát sinh động sẽ đi qua một hàm mã hóa ngăn chạy các script khôngmong muốn Tuy nhiên việc mã hóa tất cả dữ liệu không đáng tin cậy 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ủ

- Dùng chuẩn CSP để chống XSS: Với CSP, trình duyệt chỉ chạyJavaScript từ những domain được chỉ định Để sử dụng CSP, máy chủ chỉ cần

thêm header Content-Security-Policy vào mỗi phản hồi Nội dung header

chứa những domain mà được tin tưởng

Trang 7

1.3 Lỗ hổng Broken Authentication

1.3.1 Khái niệm lỗ hổng Broken Authentication

Broken Authentication là lỗ hổng liên quan tới vấn đề xác thực ngườidùng, quản lý phiên được triển khai chưa đúng cách, cơ chế quản lý yếu chophép Hacker có thể bẻ khóa passwords, keys, session tokens hay lợi dụng đểthực hiện khai thác các lỗ hổng khác nhằm chiếm được định danh của ngườidùng tạm thời hoặc vĩnh viễn

Hacker dễ dàng tìm kiếm hàng trăm ngàn usernames và password phổbiến, một danh sách các tài khoản admin mặc định, các tools brute force tựđộng (tấn công vét cạn), hoặc các bộ công cụ tấn công từ điển Đây là điềukiện cần để thực hiện cuộc tấn công nhằm vào lỗ hổng này Với việc có quyềntruy cập vào một vài tài khoản, hoặc chỉ cần 1 tài khoản admin là đủ đểHacker có thể gây nguy hại cho cả hệ thống Tuỳ thuộc vào tính chất của hệthống, mà nó cho phép Hacker tiến hành nhiều hành vi phạm pháp như rửatiền, ăn cắp tài sản, danh tính, tiết lộ thông tin nhạy cảm,

Minh hoạ tấn công Broken Authentication

Những hệ thống ứng dụng web có nguy cơ đối mặt với lỗ hổng BrokenAuthentication:

Trang 8

- Ứng dụng cho phép hacker tiến hành các cuộc tấn công vét cạn BruteForce hoặc các kiểu tấn công tự động khác Các bạn có thể hiểu đơn giản làứng dụng Web của chúng ta cho phép request liên tục nhiều API từ cùng một

IP hoặc cố gắng truy cập vào một tài khoản nhiều lần mà không có cơ chếquản lý ví dụ như lock tài khoản đó nếu xuất hiện những hành vi như vậy

- Cho phép người dùng đặt các mật khẩu yếu, không đạt tiêu chuẩn.Không có cơ chế bắt buộc thay đổi mật khẩu mặc định chẳng hạn

"Password1" hay "admin/admin"

- Cơ chế khôi phục mật khẩu (trường hợp người dùng quên mật khẩu)yếu hoặc không an toàn

- Lưu trữ Password dạng Plaintext (bản rõ) mà không mã hoá, hoặc sửdụng những thuật toán mã hóa hay các mã băm đơn giản, dễ dàng bị crack

- Thiếu hoặc cơ chế xác thực 2 lớp không hiệu quả

- Hiển thị trực tiếp Session IDs hoặc các thông số quan trọng trongParams của URL

- Không có cơ chế luân phiên thay đổi Session IDs sau khi đăng nhậpthành công

1.3.2 Phương pháp phòng chống lỗ hổng Broken Authentication

- Triển khai cơ chế xác thực 2 lớp nhằm chống lại các cuộc tấn công tựđộng như Brute Force

- Kiểm tra độ an toàn của Password, không cho phép người dùng đặtnhững mật khẩu quá đơn giản chẳng hạn chỉ toàn số, hoặc toàn chữ

- Đảm bảo việc đăng ký, khôi phục tài khoản, đăng nhập thất bại (cóthể do sai Password, Username) hoặc đường dẫn URL sẽ sử dụng cácmessages giống nhau trả vê cho người dùng cho mọi kết quả Ví dụ như khingười dùng đăng nhập không thành công do sai mật khẩu Nếu Server trả vềthông điệp "Bạn nhập sai mật khẩu" Hacker có thể dựa vào đó để biết rằngusername được gửi lên tồn tại, và chỉ cần vét cạn mật khẩu cho tới khi thànhcông Thay vào đó, Server nên trả về thông điệp "Username hoặc Password

Trang 9

không hợp lệ", Hacker sẽ không thể loại bỏ trường hợp nào, việc vét cạn sẽtrở nên phức tạp hơn rất nhiều.

- Giới hạn số lần hoặc yêu cầu thời gian chờ sau một số lần đăng nhậpkhông thành công Có thể là khoá tài khoản, hoặc sau 2-3' mới có thể tiếp tụcthực hiện đăng nhập

- Có cơ chế sinh, quản lý và lưu trữ Session IDs đảm bảo an toàn, với

độ khó và xáo trộn cao, set thời gian hết hạn cũng như tự huỷ sau khi Logout

Trang 10

CHƯƠNG 2: GIỚI THIỆU CÔNG CỤ QUÉT LỖ HỔNG SỬ

DỤNG MÁY HỌC GYOITHON 2.1 Giới thiệu công cụ GyoiThon

GyoiThon là một công cụ kiểm thử thâm nhập (penetration testing) sửdụng máy học để tự động xác định phần mềm chạy trên máy chủ web Công

cụ này thực hiện việc thu thập thông tin từ máy chủ mục tiêu mà chỉ cần truycập từ xa và phân tích thông tin để nhận diện sản phẩm như hệ quản trị nộidung (CMS), phần mềm máy chủ web, khung làm việc (frameworks), và ngônngữ lập trình Sau khi nhận diện các thông tin, GyoiThon sử dụng nền tảngMetasploit để kiểm tra, tìm kiếm các lỗ hổng đã biết và tổng hợp thành mộtbáo cáo các nguy cơ

Mô hình GyoiThon

2.2 Một số tính năng của GyoiThon

- Truy cập từ xa và tự động hoàn toàn

GyoiThon có khả năng tự động thu thập thông tin từ máy chủ web mụctiêu chỉ qua truy cập từ xa, không đòi hỏi sự tương tác liên tục từ người dùng.Người dùng chỉ cần chạy GyoiThon một lần

- Kiểm thử không phá hoại

Công cụ có thể thu thập thông tin từ máy chủ web mục tiêu mà khônggây hại hay thay đổi môi trường mục tiêu, thông qua các truy cập web thôngthường

Trang 11

- Thu thập thông tin đa dạng

GyoiThon tích hợp nhiều công cụ thu thập thông tin, bao gồm:

+ Crawler Web: Để thu thập thông tin cấu trúc và nội dung trên web + Google Custom Search API: Sử dụng Google để tìm kiếm thông tin

cụ thể từ các kết quả thu thập

+ Censys: Công cụ tìm kiếm cho dữ liệu về thiết bị mạng và cấu trúc hạ

tầng internet

+ Explorer of Default Contents: Để tìm các nội dung mặc định hoặc

tiềm ẩn trên máy chủ

+ Examination of Cloud Services: Kiểm tra các dịch vụ đám mây liên

quan

- Phân tích thông tin

GyoiThon sử dụng các kỹ thuật khớp chuỗi và học máy để phân tíchthông tin đã thu thập và xác định

+ Phiên bản sản phẩm và số CVE: Xác định phiên bản phần mềm vàcác lỗ hổng bảo mật (CVE) liên quan đến phiên bản đó

+ Thông tin không cần thiết: Nhận diện các thông tin HTML và thôngđiệp debug không cần thiết có thể tiết lộ thông tin hệ thống

+ Trang Đăng Nhập: Xác định trang đăng nhập của ứng dụng web

- Kiểm tra lỗ hổng thực tế

Sau khi xác định các sản phẩm và lỗ hổng tiềm năng, GyoiThon cóthể sử dụng nền tảng Metasploit để thực thi các mô-đun khai thác và kiểmtra các lỗ hổng thực tế trên máy chủ web mục tiêu

- Đánh giá và báo cáo

Cung cấp báo cáo chi tiết về các lỗ hổng phát hiện, đồng thời đềxuất các biện pháp giải quyết hoặc khắc phục

Trang 12

2.3 Các bước xử lý của GyoiThon

Bước 1: Thu thập phản hồi HTTP

GyoiThon thu thập một số phản hồi HTTP từ trang web mục tiêu trong

quá trình crawling Một số ví dụ về các phản hồi HTTP được GyoiThon thu

thập như: Etag, Set-Cookie, thông tin về JS và CSS

Bước 2: Xác định phần mềm được cài đặt

GyoiThon sử dụng máy học (Naive Bayes) để xác định các phần mềmđược cài đặt trên máy chủ web

Naive Bayes là phương pháp phân loại dựa vào xác suất được sử dụngrộng rãi trong lĩnh vực máy học

Ý tưởng cơ bản của cách tiếp cận Naive Bayes là sử dụng xác suất cóđiều kiện giữa từ và chủ đề để dự đoán xác suất chủ đề của một văn bản cầnphân loại Điểm quan trọng của phương pháp này chính là ở chỗ giả định rằng

sự xuất hiện của tất cả các từ trong văn bản đều độc lập với nhau Với giảđịnh này NB không sử dụng sự phụ thuộc của nhiều từ vào một chủ đề, không

sử dụng việc kết hợp các từ để đưa ra phán đoán chủ đề và do đó việc tínhtoán NB chạy nhanh hơn các phương pháp khác

Định lý Bayes: Giả sử A và B là hai sự kiện đã xảy ra Xác suất có điều

kiện A khi biết trước điều kiện B được cho bởi:

- P(A): Xác suất của sự kiện A xảy ra

- P(B): Xác suất của sự kiện B xảy ra

- P(B|A): Xác suất (có điều kiện) của sự kiện B xảy ra, nếu biết rằng sựkiện A đã xảy ra

Trang 13

- P(A|B): Xác suất (cĩ điều kiện) của sự kiện A xảy ra, nếu biết rằng sựkiện B đã xảy ra.

Xét bài tốn phân loại với các nhãn C: 1, 2 C

Tính xác suất để điểm dữ liệu này rơi vào class c: p(c|x) , Tức tính xác

suất để đầu ra là nhãn c biết rằng đầu vào là vector x Từ đĩ, cĩ thể giúp xácđịnh class của điểm dữ liệu x đĩ bằng cách chọn ra class cĩ xác suất cao nhất:

Dựa vào lý thuyết Bayes

Từ (3) sang (4) là vì quy tắc Bayes Từ (4) sang (5) là vì mẫu số p(x)

khơng phụ thuộc vào c

Khi số lượng các thuộc tính mơ tả dữ liệu là lớn thì rất khĩ để tính p(x| c) là rất lớn Vì x là một biến ngẫu nhiên nhiều chiều, cần rất rất nhiều dữ liệu

training để cĩ thể xây dựng được phân phối đĩ

Dĩ đĩ để cĩ thể giảm độ phức tạp của thuật tốn Nạve Bayes giả thiếtcác thuộc tính độc lập nhau Khi đĩ:

Cơng thức (5) được viết lại:

Trong đĩ

p(c)= T ổng số mẫu cĩ trong t ập hu ấn luy ện Số mẫu cĩ nh ãn c

p(xi | c)= Số mẫucĩ giá trị thuộc tính xi và cĩ nhãn làc Tổng số mẫucĩ nhãn c

* Các phân phối thường dùng của Navie Bayes

Ngày đăng: 01/10/2024, 11:05

w