1. Trang chủ
  2. » Công Nghệ Thông Tin

NGHIÊN CỨU VỀ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG ỨNG DỤNG WEB DỰA TRÊN MẪU DẤU HIỆU

44 283 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 1,23 MB

Nội dung

Trong thời đại phát triển mạnh của công nghệ Internet như hiện nay. Các dịch vụ trên mạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã hội. Các thông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó có rất nhiều thông tin cần được bảo mật cao hơn bởi tính kinh tế, tính chính xác và tính tin cậy của nó. Chính vì vậy, các vấn đề thuộc về an ninh mạng như: sự tấn công, thâm nhập và đánh cắp dữ liệu trên website và trên hệ thống máy chủ đã dấy lên sự lo ngại từ phía người quản trị. Để ngăn chặn điều này xảy ra, người quản trị cần có những phương pháp thích hợp để bảo vệ máy chủ cũng như máy tính của mình. Trong quá trình xây dựng website, điều thiết yếu là phải bảo mật website trước những hiểm họa trên internet. Việc xây dựng bảo mật Web Server có vai trò cực kì quan trọng trong vấn đề này. Xuất phát từ những thực tế đó, chúng ta sẽ tìm hiểu về các cách tấn công phổ biến nhất hiện nay và cách phòng chống các loại tấn công này

Trang 1

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ

MÔN CHUYÊN ĐỀ 2

NGHIÊN CỨU VỀ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG ỨNG DỤNG

WEB DỰA TRÊN MẪU DẤU HIỆU

Ngành: An toàn thông tin

Hà Nội, 2020

Trang 2

MỤC LỤC

PHẦN I: CÁC VẤN ĐỀ AN TOÀN ĐỐI VỚI MÁY CHỦ WEB 4

-1) G IỚI T HIỆU 4

-2) C ÔNG C Ụ T ẤN C ÔNG 4

-3) PHÂN L OẠI C ÁC H ÌNH T HỨC T ẤN C ÔNG 5

3.1) Tấn công Bruteforce 5

3.2) Lỗi chứng thực yếu (Insufficient Authentication) 5

3.3) Dự đoán, chèn phiên (Credentical/Session Prediction) 5

3.4) XSS (CrossSite Scripting) 5

3.5) SQL Injection 6

3.6) Liệt kê thư mục (Directory indexing) 6

3.7) Path Traversal 7

3.8) Từ chối dịch vụ (DoS) 7

-4) C ÁC G IẢI P HÁP P HÁT H IỆN VÀ N GĂN C HẶN T ẤN C ÔNG Ứ NG D ỤNG W EB 7

4.1) Giải pháp tường lửa hệ thống ứng dụng Web (Web application firewall – WAF) 7

4.2) Giải pháp chống giả mạo giao dịch (Fraud detection) 8

4.3) Giải pháp mã hóa dữ liệu 8

4.4) Giải pháp tường lửa đa năng UTM 8

4.5) Giải pháp dò quét các lỗ hổng an ninh 9

PHẦN II: TƯỜNG LỬA BẢO VỆ ỨNG DỤNG WEB 10

-1) T ƯỜNG L ỬA B ẢO V Ệ Ứ NG D ỤNG W EB (WAF) 10

1.1) Kiến trúc tường lửa ứng dụng web 10

a) Vị trí WAF 10

b) Mô hình bảo mật của WAF 10

c) Mô hình hoạt động 10

1.2) Các sản phẩm và giải pháp 11

-2) T IÊU C HUẨN OWASP TOP TEN 11

2.1) A1: Injection 12

2.2) A2: Broken Authentication 12

2.3) A3: Sensitive Data Exposure 13

2.4) A4: XML External Entities (XXE) 13

2.5) A5: Broken Access Control 14

2.6) A6: Security Misconfiguration 14

2.7) A7: Cross Site Scripting (XSS) 14

2.8) A8: Insecure Deserialization 14

2.9) A9: Using Components with Know Vulnerabilities 14

2.10) A10: Insufficient Logging & Monitoring 15

-3) T ƯỜNG L ỬA B ẢO V Ệ Ứ NG D ỤNG W EB M OD S ECURITY 15

3.1) Chức năng 15

3.2) Quy trình xử lý trong ModSecurity 16

3.3) Cấu trúc tập luật trong ModSecurity 18

3.3.1) Variables 18

3.3.2) Collections 19

3.3.3) Operators 20

3.3.4) Actions 22

3.4) Xây dựng tập luật phát hiện và chống tấn công trong ModSecurity 23

3.4.1) Xây dựng tập luật phát hiện và chống tấn công SQL Injection 23

3.4.2) Xây dựng tập luật phát hiện và chống tấn công XSS 27

Trang 3

3.4.3) Xây dựng tập luật phát hiện và chống tấn công Local File Include 28

3.4.4) Xây dựng tập luật phát hiện chống tấn công BruteForce 28

-4) T RIỂN KHAI M OD S ECURITY 30

4.1) Triển khai ModSecurity trên môi trường Windows 30

4.2) Triển khai ModSecurity cho Nginx trên Ubuntu 18.04 32

-5) C HẠY THỬ VÀ KIỂM TRA 35

5.1) Chạy thử và kiểm tra trên Windows 35

5.1.1) Chống tấn công XSS Reflected 35

a) Trước khi sử dụng tập luật chống XSS cho Modsec 35

b) Sau khi sử dụng tập luật chống XSS cho Modsec 36

5.1.2) Chống tấn công XSS Stored 37

a) Trước khi sử dụng tập luật chống XSS cho Modsec 37

b) Sau khi sử dụng tập luật chống XSS cho Modsec 38

5.1.3) Chống tấn công SQL Injection 39

a) Trước khi sử dụng tập luật chống SQL Injection cho Modsec 39

b) Sau khi sử dụng tập luật chống SQL Injection cho Modsec 40

5.2) Chạy thử và kiểm tra trên Ubuntu 41

5.2.1) Chống tấn công XSS 41

a) Trước khi sử dụng tập luật chống XSS cho Modsec 41

b) Sau khi sử dụng tập luật chống XSS cho Modsec 41

5.2.2) Chống tấn công SQL Injection 42

a) Trước khi sử dụng tập luật chống SQL Injection cho Modsec 42

b) Sau khi sử dụng tập luật chống SQL Injection cho Modsec 43

Trang 4

-PHẦN I: CÁC VẤN ĐỀ AN TOÀN ĐỐI VỚI MÁY CHỦ WEB

Trong quá trình xây dựng website, điều thiết yếu là phải bảo mật website trước nhữnghiểm họa trên internet Việc xây dựng bảo mật Web Server có vai trò cực kì quan trọng trongvấn đề này Xuất phát từ những thực tế đó, chúng ta sẽ tìm hiểu về các cách tấn công phổ biến nhất hiện nay và cách phòng chống các loại tấn công này

2) Công Cụ Tấn Công

Metasploit Framework là một môi trường dùng để kiểm tra, tấn công và khai thác

lỗi của các service Ban đầu Metasploit được xây dựng từ ngôn ngữ hướng đối tượng Perl với những component được viết bằng C và Python sau đó được viết lại vằng ruby Đây là một công cụ mã nguồn mở phát triển nhằm sử dụng các shellcode để tấn công, khai thác khaithác lỗi của các dịch vụ Metasploit có thể chạy trên hầu hết các hệ điều hành: Linux,

Windows, MacOS

Các tính năng chính:

 Quét cổng để xác định các dịch vụ đang hoạt động trên server

 Xác định các lỗ hổng dựa trên phiên bản của hệ điều hành và phiên bản các phần mềm cài đặt trên hệ điều hành đó

 Thử nghiệm khai thác các lỗ hổng đã được xác định

MPack là một công cụ khai thác web Nó được viết bằng PHP và được hỗ trợ bởi

MySQL Khi một máy chủ web đã bị xâm nhập bằng MPack, tất cả lưu lượng sẽ được chuyển hướng đến trang web độc hại

Zeus công cụ này được sử dụng để biến một máy tính bị chiếm quyền thành con bot

hoặc zombie Một con bot là một máy tính bị chiếm quyền điều khiển và bị sử dụng để thực hiện các cuộc tấn công trên Internet Một botnet là tập hợp của các máy tính bị chiếm quyền điều khiển Mạng botnet có thể bị sử dụng trong một cuộc tấn công từ chối dịch vụ hoặc gửi

đi các email rác

Trang 5

Neosploit là một bộ công cụ chứa mã khai thác những lỗi bảo mật nguy hiểm trong

những trình duyệt web và ứng dụng phổ biến Công cụ này có thể được sử dụng để cài đặt chương trình, xóa chương trình, sao chép nó, v.v

3) Phân Loại Các Hình Thức Tấn Công

3.1) Tấn công Bruteforce

Brute Force Attack là phương thức tấn công dò ra mật khẩu và tài khoản của người quản trị cao nhất Hình thức tấn công này dễ phòng chống nhưng lại rất dễ bị dính nếu ngườiquản trị chủ quan trong việc đặt mật khẩu và username Thường thì sẽ dễ bị tấn công kiểu này khi:

 Đặt username là admin, administrator hoặc tương tự

 Mật khẩu không an toàn, dễ đoán ra, sử dụng phổ biến

 Không bảo mật đường dẫn đăng nhập

 Không thay đổi mật khẩu thường xuyên

 Như vậy, các vấn đề liên quan đến bảo mật tài khoản đăng nhập sẽ đều giúp cho hacker sử dụng brute force attack để tấn công

3.2) Lỗi chứng thực yếu (Insufficient Authentication)

Lỗi chứng thực yếu xuất hiện khi một website cho phép truy cập các nội dung, tài nguyên nhạy cảm mà không có đủ quyền Các trang quản trị là một ví dụ dễ thấy nhất Nếu không có cơ chế phân quyền hợp lý thư mục cũng như tài khoản đăng nhập trang quản trị này Tin tặc hoàn toàn có khả năng vượt qua được cơ chế đăng nhập để chiếm quyền điều khiển trang này

3.3) Dự đoán, chèn phiên (Credentical/Session Prediction)

Dự đoán, chèn phiên là một phương thức chiếm phiên (hijacking ) Thông thường, khimột tài khoản thực hiện quá trình chứng thực đối với server (tài khoản/mật khẩu) Dựa vào các thông tin này, server sẽ tạo một giá trị session ID duy nhất để cho phép và duy trì kết nối nếu đoán được session ID kế tiếp thì tin tặc có khả năng chiếm phiên đăng nhập của người dùng hợp lệ khác

3.4) XSS (Cross-Site Scripting)

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 các 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 Tin tặc 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 có thể gây nguy hại cho những người sử dụng khác Trong đó, những đoạn mã nguy hiểm được chèn vào hầu hết được viết bằng các Client– Site Script như JavaScript, Jscript, DHTML và cũng có thể là cả các thẻ HTML

Ví dụ: Sử dụng XSS chèn mã java script trực tiếp trên URL:

http://www.demo.com/search.cgi?query=<script>alert(‘XSS was found !’);</script>

Trang 6

Khi wesite http://www.demo.com bị lỗi XSS trình duyệt sẽ hiện lên một thông báo

“XSS was found !” Nếu như các kĩ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với website ở phía client mà nạn nhân trực tiếp là những người khách duyệt site đó

3.5) SQL Injection

Tấn công SQL Injection được thực thi bằng cách chèn các câu truy vấn SQL vào dữ liệu tương tác giữa máy khách và trình ứng dụng Quá trình khai thác lỗi SQL Injection thành công có thể giúp tin tặc lấy được các dữ liệu nhạy cảm trong cở sở dữ liệu, thay đổi cơ

sở dữ liệu (Insert/Update/Delete), thực thi các hành động với quyền của người quản trị và cao hơn có thể điều khiển được hệ điều hành máy chủ Ví dụ: Xét đoạn mã truy vấn SQL sau:

SELECT * FROM Users WHERE Username=’$username’ AND

Password=’$password’

Đây là một câu truy vấn thường hay được dùng trong các trình ứng dụng nhằm xác thực người dùng Nếu câu truy vấn trả về một giá trị nói rằng thông tin về người dùng đang đăng nhập là đúng và được lưu trong cơ sở dữ liệu, thì người dùng được phép đăng nhập vào

hệ thống, ngược lại thì không đăng nhập được Người dùng nhập thông tin đó vào các trườnggọi là web form Thay vì nhập đúng tên đăng nhập và mật khẩu, thử nhập vào các ký tự đặc biệt như:

$username = 1′ or ‘1’ = ‘1

$password = 1′ or ‘1’ = ‘1

Khi đó câu truy vấn sẽ là:

SELECT * FROM Users WHERE Username=’1′ OR ‘1’ = ‘1’ AND Password=’1′

OR ‘1’ = ‘1’

Giả sử rằng giá trị của các tham số được gửi tới máy chủ bằng phương thức GET, thì

có một câu lệnh khai thác lỗi như sau:

‘%20or%20’1’%20=%20’1&password=1’%20or%20’1’%20=%20’1

Khi đó, truy vấn sẽ trả về một giá trị (hay một loạt các giá trị) vì điều kiện trên luôn luôn đúng (OR 1=1) Trong trường hợp này tin tặc sẽ đăng nhập được vào hệ thống mà không cần biết tên đăng nhập và mật khẩu Trường hợp này sẽ rất nguy hiểm nếu dòng đầu tiên trong bảng “Users” là tài khoản của người quản trị (admin) vì tin tặc sẽ đăng nhập vào

hệ thống bằng tài khoản đầu tiên trong bảng này

3.6) Liệt kê thư mục (Directory indexing)

Đây là chức năng web server cho phép liệt kê tất cả nội dung bên trong một thư mục

mà không có tập tin cơ sở (index.html/home.html/ default.html) Trong các thư mục đó có thể chứa nội dung quan trọng: tập tin cơ sở dữ liệu dự phòng, tập tin cấu hình, tập tin lưu trữ tạm thời, các kịch bản…

Trang 7

3.7) Path Traversal

Path Traversal hay còn được biết với một số tên khác như “dot-dot-slash”, “directory traversal”,”directory clumbing” và “backtracking” là hình thức tấn công truy cập đến những file và thư mục mà được lưu bên ngoài thư mục webroot Hình thức tấn công này không cần

sử dụng một công cụ nào mà chỉ đơn thuần thao tác các biến với / (dot-dot-slash) để truy cập đến file, thư mục, bao gồm cả source code, những file hệ thống, … Ví dụ:

 Người dùng riêng lẻ: quá trình đăng nhập lặp đi lặp lại với tài khoản hợp lệ nhưng mật khẩu không đúng Sau nhiều lần đăng nhập sai, hệ thống sẽ khóa tàikhoản hợp lệ này, dẫn đến người dùng hợp lệ sẽ không thể đăng nhập được

 Máy chủ cơ sở dữ liệu: Sử dụng kỹ thuật chèn câu lệnh truy vấn SQL chỉnh sửa cơ sở dữ liệu, vì thế hệ thống sẽ không thể phục vụ các truy cập từ client

 Máy chủ phục vụ web: Sử dụng kỹ thuật tấn công tràn bộ đệm ( Buffer

Overflow) để gửi các gói truy vấn và làm đổ vỡ các tiến trình tại phía máy chủ phục vụ web, dẫn đến hệ thống máy chủ webserver sẽ không có khả năng phục

vụ các truy cập hợp lý

4) Các Giải Pháp Phát Hiện và Ngăn Chặn Tấn Công Ứng Dụng Web

4.1) Giải pháp tường lửa hệ thống ứng dụng Web (Web application firewall – WAF)

Tường lửa ứng dụng Web là thiết bị bảo vệ chuyên biệt cho ứng dụng, có thể phân tích, hiểu sâu được cấu trúc, thuộc tính và hoạt động của website cụ thể của mỗi tổ chức Nhờ vậy nó có thể phát hiện và ngăn chặn cả tấn công chưa biết và những hành vi bất

thường trên ứng dụng, tấn công tinh vi, sử dụng kỹ thuật lẩn tránh mà có thể dễ dàng vượt qua tường lửa mức mạng và IPS Tường lửa có khả năng kết hợp với các giải pháp đánh giá điểm yếu để đưa ra bảo vệ điểm yếu được phát hiện ngay lập tức với bản vá ảo

Giải pháp tường lửa ứng dụng Web hỗ trợ nhiều mô hình triển khai cho phép triển khai hoàn toàn trong suốt mà không làm thay đổi tới tới mạng và ứng dụng đang hoạt động

Giải pháp cho phép:

 Chống tấn công mức ứng dụng, nhờ khả năng học và phân tích sâu ở tầng ứng dụng

Trang 8

 Chống các tấn công tự động (sử dụng bot, script tự động truy cập, dò quét website), giúp hạn chế chống tấn công DDoS.

 Cung cấp bản vá ảo bảo vệ các điểm yếu ứng dụng nhanh chóng trong khi chưa thể triển khai biện pháp vá điểm yếu bằng cách sửa mã nguồn hay cài bản

 Ngăn chặn các tấn công đánh cắp thông tin, hay phá hoại, thay đổi thông tin

Cơ sở dữ liệu qua việc khai thác điểm yếu trên ứng dụng web

 Ghi vết các truy cập, tấn công vào ứng dụng, giúp điều tra và xử lý sự cố

 Tăng cường tính sẵn sàng, ổn định cho hệ thống dịch vụ kinh doanh, giúp bảo

vệ hình ảnh của tổ chức, nâng cao uy tín và sức cạnh tranh

4.2) Giải pháp chống giả mạo giao dịch (Fraud detection)

Ngăn chặn các hành vi giả mạo người dùng, chiếm đoạt và sử dụng các tài khoản thanh toán trên môi trường thanh toán điện tử, e-banking

Tính năng:

 Giám sát hành vi người dùng dịch vụ thanh toán điện tử, e-banking

 Chống đánh cắp định danh người dùng dựa trên nhiều thông tin: loại giao dịch,

số tiền giao dịch, thời gian làm việc, vị trí địa lý (theo địa chỉ IP), …

 Ngăn chặn hành vi lạm dụng trên hệ thống: truy cập trực tiếp vào các trang đặt hàng, sử dụng các biến môi trường đáng ngờ…

 Ngăn chặn hành vi đáng ngờ trên hệ thống giao dịch trực tuyến như: số lần sử dụng thẻ thanh toán, thanh toán nhiều lần từ cùng địa chỉ IP…

4.3) Giải pháp mã hóa dữ liệu

Bảo vệ các dữ liệu nhạy cảm bằng các hình thức mã hóa: mã hóa thư mục, tập tin, ổ cứng, …

Tính năng:

 Thực thi mã hóa dữ liệu trên thiết bị đầu cuối (máy tính xách tay, smart phone,máy tính để bàn, …)

 Mã hóa dữ liệu trên ổ đĩa local, máy chủ mạng, ở cấp độ tập tin và thư mục

4.4) Giải pháp tường lửa đa năng UTM

Bảo vệ cổng hệ thống (gateway), ngăn chặn các rủi ro từ môi trường Internet

Tính năng:

 Lọc web, Chống xâm nhập (IPS), Chống DDoS, Chống virus, spam

 Lọc các cổng dịch vụ Giám sát ứng dụng và người dùng

Trang 9

4.5) Giải pháp dò quét các lỗ hổng an ninh

Xác định, giám sát và đưa ra phương án xử lý các lỗ hổng an ninh trên toàn hệ thống mạng, máy chủ, hệ điều hành, cơ sở dữ liệu và ứng dụng

Tính năng:

 Cung cấp báo cáo toàn diện về các lỗ hổng an ninh trên hệ thống

 Đưa ra các cảnh báo tức thời khi hệ thống xuất hiện lỗ hổng bảo mật

 Hỗ trợ người quản trị đưa ra quyết định về các chính sách và điều chỉnh bảo mật hệ thống chính xác, phù hợp và kịp thời

 Tích hợp với các công cụ giám sát bảo vệ hệ thống như IDS/IPS, tường lửa ứng dụng web… tạo ra một hệ thống phòng thủ an ninh có chiều sâu và liên kết chặt chẽ giữa các thành phần bảo mật

Trang 10

PHẦN II: TƯỜNG LỬA BẢO VỆ ỨNG DỤNG WEB

1) Tường Lửa Bảo Vệ Ứng Dụng Web (WAF)

Web Application Firewall – WAF là một giải pháp nhằm bảo vệ cho ứng dụng web tránh khỏi các lỗi bảo mật, các cuộc tấn công từ mã độc và tin tặc WAF là một thiết bị phần cứng hoặc phần mềm được cài lên máy chủ có chức năng theo dõi các thông tin được truyền qua giao thức http/https giữa trình duyệt của người dùng và máy chủ web tại lớp 7 Một WAF có khả năng thực thi các chính sách bảo mật dựa trên các dấu hiệu tấn công, các giao thức tiêu chuẩn và các lưu lượng truy cập ứng dụng web bất thường Đây là điều mà các tường lửa mạng khác không làm được

1.1) Kiến trúc tường lửa ứng dụng web

a) Vị trí WAF

WAF có 02 hình thức triển khai, bao gồm dạng phần cứng và giải pháp cloudbased Các hệ thống WAF cứng thường được đặt sau tường lửa mạng và trước máy chủ ứng dụng web Việc đặt WAF được thực hiện sao cho tất cả các lưu lượng đến ứng dụng web cần qua WAF trước Tuy nhiên, đôi khi cũng có ngoại lệ khi WAF chỉ được dùng để giám sát cổng đang mở trên máy chủ web Ngoài ra, các chương trình WAF còn được cài đặt trực tiếp lên máy chủ web và thực hiện các chức năng tương tự như các thiết bị WAF là giám sát các lưu lượng đến và ra khỏi ứng dụng web

b) Mô hình bảo mật của WAF

Một tường lửa ứng dụng web hoạt động dựa theo 2 mô hình bảo mật: Positive và Negative Mô hình Positive chỉ cho phép các lưu lượng hợp lệ được định nghĩa sẵn đi qua vàchặn tất cả các lưu lượng còn lại Mô hình Negative sẽ cho phép tất cả các lưu lượng vượt qua và chỉ chặn được các lưu lượng mà WAF cho là nguy hại Đôi khi cũng có các WAF cung cấp cả 2 mô hình trên, tuy nhiên thông thường WAF chỉ cung cấp 1 trong 2 mô hình Với mô hình Postitive thì đòi hỏi nhiều cấu hình và tùy chỉnh Còn mô hình Negative chủ yếu dựa vào khả năng học hỏi và phân tích hành vi của lưu lượng mạng

c) Mô hình hoạt động

WAF có thể hoạt động ở các mô hình riêng biệt, dưới đây là một số mô hình tham khảo:

Reverse Proxy: đây là chức năng được sử dụng phổ biến khi triển khai WAF

Trong mô hình này, WAF giám sát tất cả các lưu lượng đi đến ứng dụng web, sau

đó thay vì cho các địa chỉ IP bên ngoài gửi yêu cầu trực tiếp đến máy chủ web thì WAF đứng ra làm trung gian để gửi các yêu cầu này đến máy chủ web thay cho trình duyệt gốc rồi gửi trả lại kết quả cho các địa chỉ IP kia Mô hình này có nhượcđiểm là tạo ra độ trễ khi kết nối từ trình duyệt đến ứng dụng web

Transparent Proxy: Ở mô hình này, WAF đứng giữa tường lửa mạng và máy

chủ web và hoạt động tương tự ở mô hình Reverse Proxy nhưng không đứng ra

Trang 11

làm trung gian kết nối như bên Reverse Proxy Mô hình này không đòi hỏi phải thay đổi điều gì trong hạ tầng mạng nhưng có thể không cung cấp được một số dịch vụ như mô hình Reverse Proxy có thể.

Layer 2 Brigde: Ở mô hình này, WAF đứng giữa tường lủa mạng và máy chủ

web, nhưng hoạt động giống như một thiết bị Switch ở lớp 2 Mô hình này giúp mạng hoạt động với hiệu năng cao và mạng thay đổi không đáng kể, tuy nhiên nó lại không thể cung cấp các dịch vụ cao cấp khác mà các mô hình WAF khác có thể

Host/Server Based: Đây là các phần mềm được cài trực tiếp lên máy chủ web

Các loại Host based không cung cấp các tính năng tương tự như các loại WAF network base Tuy nhiên mô hình này có thể khắc phục được vài điểm yếu mà các

mô hình network base (các thiết bị WAF cứng) có Tuy nhiên nó cũng làm tăng mức độ tải của máy chủ web

1.2) Các sản phẩm và giải pháp

ModSecurity: Đây là phần mềm mã nguồn mở có thể hoạt động như một module

trong máy chủ Apache hoặc là một thành phần độc lập ModSecurity sử dụng biểu thức chính quy trong việc bảo vệ máy chủ web từ các cuộc tấn công được xác định trước dựa theocác dấu hiệu hoặc các cuộc tấn công bất thường khác Bên cạnh đó, ModSecurity cũng có khả năng lọc các siêu ký tự do người dùng chèn vào ứng dụng web

URLScan: Đây là một sản phẩm của Microsoft dành riêng cho các máy chủ web IIS

URLscan không chỉ bảo vệ máy chủ IIS 6 khỏi các điểm yếu từ các phiên bản cũ hơn mà còn cung cấp thêm các biện pháp bảo vệ khác như lọc dữ liệu mã hóa trên URL hoặc lọc các siêu ký tự do người dùng chèn vào để chống lại các loại tấn công như XSS, SQL Injection…

CyStack WebShield: Đây là một sản phẩm của Việt Nam do công ty an ninh mạng

CyStack xây dựng và phát triển Giải pháp cung cấp các tính năng giúp bạn bảo vệ website của mình dễ dàng WebShield cung cấp các tính năng để bạn có thể bảo vệ website của mình

tự động mà không cần cài đặt Bạn chỉ cần cấu hình website đi qua CyStack Network và CyStack Protecting sẽ làm nhiệm vụ ngăn chặn tấn công, mã độc vào website của bạn

2) Tiêu Chuẩn OWASP TOP TEN

OWASP ( Open Web Application Security Project): Họ là một tổ chức phi lợi

nhuận trên toàn thế giới tập trung vào việc nâng cao tính bảo mật của phần mềm trên web

Họ tạo ra một tài liệu được gọi là Top 10 nguy cơ bảo mật ứng dụng Web quan trọng nhất,

"Top 10" là một hướng dẫn công nghệ để quản lý rủi ro bảo mật trang web phổ biến Nó

thường là một nơi để tham khảo cho các chuyên gia bảo mật và các nhà phát triển cùng nhau

OWASP Top 10 (2017) là:

 A1: Injection

 A2: Broken Authentication

Trang 12

 A3: Sensitive Data Exposure

 A4: XML External Entities

 A5: Broken Access Control

 A6: Security Misconfiguration

 A7: Cross-Site-Scripting(XSS)

 A8: Insecure Deserialization

 A9: Using Components with Know Vulnerabilities

 A10: Insufficient Logging & Monitoring

2.1) A1: Injection

SQL, NoSQL, OS, Command Injection and LDAP injection là những loại phổ biến của những lỗi về Injection, nó xảy ra khi những dữ liệu không tin cậy được gửi về server và thực thi những query hay command từ đó truy cập vào dữ liệu của ứng dụng hoặc thực thi những câu lệnh không mong muốn

Những ứng dụng có thể dễ bị tấn công khi: Dữ liệu của người dùng không được validate, filter một cách đúng đắn Ứng dụng có Dynamic queries

Cách phòng tránh

 Nên sử dụng Object Relational Mapping Tools(ORMs) trong việc tương tác Database

 Có thể tích hợp những tool để scan code trong CI/CD như static source

(SAST) hay dynamic application test (DAST)

 Hoặc sử dụng API để tương tác đến Database

 Validate dữ liệu người dùng, escape special characters

 Sử dụng LIMIT để tránh bị mất toàn bộ data trong trường hợp bị Injection

 Đối với Command Injection, cần review kỹ những chỗ có thực thi lệnh

command bởi các keywords: system (shell_exec, exec, proc_open, eval, passthru, proc_open, expect_open, ssh2_exec, popen)

 Cần kiểm tra kỹ Permission của web application, kể cả Database user, kể cả operating system command execution

2.2) A2: Broken Authentication

Những tính năng liên quan như đăng nhập, session management nếu không

implement một cách chính xác sẽ dễ cho Attacker vượt qua bước đăng nhập hoặc chiếm quyền sử dụng của user Một cách mà các Attacker thường sử dụng là dùng tools để thử đăng nhập với hằng triệu tập username và brute force password

Những điểm yếu như:

 Ứng dụng cho phép một công cụ tự động gửi nhiều request để đăng nhập, sau

đó Attacker sẽ dùng tool để quét cạn username và password để tìm ra cặp user/pass có trong ứng dụng

Trang 13

 Ứng dụng cho phép sử dụng những password yếu hoặc vô ý chưa remove những user/pass mặc định.

 Tính năng quên mật khẩu nhưng thiếu an toàn với những câu hỏi dạng kiến thức

 Ứng dụng sử dụng plain text hoặc mã hoá đơn giản để lưu password

 Phơi bày session id trong URL

 Không regenerate session id sau khi login thành công

Cách phòng tránh

 Nếu có thể nên implement two-factor authentication

 Sử dụng captcha hay chặn client gửi nhiều request nhằm dò tìm user/pass bằngcách brute force

 Implement weak-password checks, tăng chiều dài của password hoặc có thể xem xét không sử dụng top 1000 password phổ biến

 Change default password của các service

 Giới hạn và tăng thời gian chờ vài lần cố gắng đăng nhập

2.3) A3: Sensitive Data Exposure

Những ứng dụng web hay API không bảo vệ những dữ liệu nhạy cảm một cách đúng đắn và để rò rỉ những thông tin như tài chính, sức khoẻ của khách hàng, thông tin cá nhân, credit card Hoặc đôi khi việc chia sẽ những tài liệu cá nhân cho bên thứ 3 sẽ thuộc loại quy phạm quy định pháp luật tuỳ vào quy định của từng quốc gia

Cần bảo vệ như thế nào?

 Kiểm tra việc lưu trữ sensitive data như thế nào, có phải plain text không? Dữ liệu backup như thế nào?

 Không lưu trữ sensitive data nếu không cần thiết

 Đảm bảo mã hoá tất cả các sensitive data

 Sử dụng những phương thức bảo mật trong khi truyền/nhận data, TLS,

HTTPS

 Kiểm tra việc chia sẽ sensitive data cho bên thứ 3

2.4) A4: XML External Entities (XXE)

Những cấu hình dạng XML để lộ những thông tin như URI handler, internal file shares, port rất dễ bị Attacker lợi dụng để tấn công

<? xml version = "1.0" encoding = "ISO-8859-1" ?>

<! DOCTYPE foo [

<!ELEMENT foo ANY >

<! ENTITY xxe SYSTEM "file:///etc/passwd" >]>

< foo >&xxe;</ foo >

Scenario #2: An attacker probes the server's private network by

changing the above ENTITY line to:

<!ENTITY xxe SYSTEM "https://192.168.1.1/private" >]>

Scenario #3: An attacker attempts a denial-of-service attack by

Trang 14

including a potentially endless file:

<!ENTITY xxe SYSTEM "file:///dev/random" >]>

2.5) A5: Broken Access Control

2.6) A6: Security Misconfiguration

Attackers thường khai thác những lổ hổng chưa được vá hoặc truy cập tài khoản mặc định của các service sử dụng trong ứng dụng kể cả ở tầng network, web-server, platform, database, containers,

Cách phòng tránh

 Nên xem xét dọn rác những tính năng, service không cần thiết

 Kiểm tra và dọn dẹp những user mặc định

 Theo dõi các bảng cập nhật của từng service

2.7) A7: Cross Site Scripting (XSS)

XSS là lỗi xảy ra nhiều thứ 2 trong Top 10 OWASP, ứng dụng bị lỗi XSS có thể ở dạng bị vỡ cấu trúc DOM của website hay load và thực thi một javascript nguy hại, từ đó Attacker có thể lấy thông tin cá nhân, thông tin đăng nhập, session,

2.8) A8: Insecure Deserialization

Việc deserialization không an toàn rất dễ dẫn đến thực thi một script từ attacker Ví

dụ như bạn lưu một deserialization ở cookie hay localstorage và dùng data đó cho việc kiểm tra phân quyền

2.9) A9: Using Components with Know Vulnerabilities

Việc dùng những components, libraries, frameworks không an toàn sẽ làm cho ứng dụng của bạn dễ bị khai thác hơn Việc tận dụng những ứng dụng đã có và cộng với một khối lượng code-base của nó khá lớn dễ dẫn đến bạn không hiểu và mất kiểm soát hay tệ hơn

là có cả nguy cơ bảo mật bên trong những thư việc này

Cách phòng tránh

 Nên rà soát và remove những libraries, tính năng, files không cần thiết

 Subscribe và theo dõi những lỗi bảo mật để kịp thời upgrade những

components

Trang 15

2.10) A10: Insufficient Logging & Monitoring

Việc thiếu log hay monitoring không đầy đủ sẽ cho phép Attacker "đi dạo" đến rất nhiều nơi trong hệ thống của bạn, ngược lại, nếu có đầy đủ monitoring, logging, và việc Attacker đã tấn công 1 hoặc vài service ban đầu sẽ được phát hiện và nhanh chóng ngăn chặn

Cách phòng tránh

 Audit những sự kiện như failed login, service side input validation failures

 Bảo đảm việc ghi log theo một định dạng chung để dễ quản lý và phân loại

 Ghi nhận những high-value transactions hay slow query lại để kiểm tra

3) Tường Lửa Bảo Vệ Ứng Dụng Web ModSecurity

3.1) Chức năng

Mod Security đứng trước Web Server, làm nhiệm vụ như một firewall để kiểm soát truy cập vào ra Web Server Các thông tin đi từ bên ngoài vào và bên trong ra sẽ được kiểm soát chặt chẽ để tránh những thông tin có thể gây hại cho Web Server hay là việc rò rỉ các thông tin đặc biệt từ Web Server đến Client

Mod Security có thể thực hiện các chức năng cụ thể sau:

Parsing

ModSecurity sẽ phân tách các dữ liệu luân chuyển qua hệ thống thành cấu trúc dữ liệu mà ModSecurity định nghĩa sẵn Cấu trúc này sẽ được chuyển qua cơ chế so trùng mẫu trong tập rule để phân tích nguy cơ

Buffering

Chức năng buffer (đệm) đóng vai trò khá quan trọng trong cơ chế hoạt động của ModSec Việc này có ý nghĩa khi các request gởi đến ứng dụng web thì phải thông qua ModSecurity trước khi đến ứng dụng xử lý và những response cũng sẽ được phân tích trước khi trả về phía client Cơ chế này là cách duy nhất để có thể ngăn chặn các cuộc tấn công

Trang 16

thời gian thực, các dữ liệu mà ModSecurity nhận được và phân tích sẽ được lưu trữ trong RAM (bao gồm request body và response data).

Logging

ModSecurity hỗ trợ ghi nhật ký các gói tin HTTP: request headers, request body, response header, response body nhằm hỗ trợ người quản trị phân tích nguy cơ mà hệ thống đang gặp phải để có thể ra quyết định kiểm soát

Rule Engine

Các tập mẫu trong ModSecurity đóng vai trò quan trọng trong việc phát hiện các dạng tấn công và thực hiện phòng chống ModSecurity cùng phát triển với dự án OWASP phát triển các mẫu để phân tích và phòng chống các tấn công hệ thống web

3.2) Quy trình xử lý trong ModSecurity

Trong ModSecurity mỗi phiên phân tích sẽ thực hiện lần lượt qua 5 bước (pha), tại mỗi bước ModSecurity sẽ thực thi các rule tương ứng nhằm phát hiện và phòng chống các khai thác

Phase Request Header (1)

Trang 17

Rule được đặt tại đây sẽ được thực hiện ngay sau khi Web Server đọc request header, lúc này phần request body vẫn chưa được đọc Đây là bước đầu tiên trong quá trình thực hiện phân tích gói tin Mục đích của bước này nhằm cho phép người viết rule tương tác với các request trước khi thực hiện các yêu cầu trong phần HTTP body Phần này khá quan trọng

để phân tích các khai thác dựa vào HTTP method cũng như dựa vào URL như SQL

Injection, Reflect XSS, Local file include …

Phase Request body (2)

Đây là thời điểm các thông tin chức năng chung đưa vào được phân tích và xem xét, các rule mang tính application-oriented thường được đặt ở đây Bước này là quá trình kiểm tra chính trong quá trình client gởi request đến server, phần này sẽ có hiệu quả khi người dùng cố sử dụng phương thức POST hoặc PUT để upload tập tin lên phía server Việc kiểm tra này bảo đảm dữ liệu đưa lên server là an toàn, tránh tình trạng upload mã độc hoặc các dạng tấn công như Stored XSS, Ajax Injection ModSecurity hỗ trợ ba loại mã hóa request body :

+ Application/x-www-form-urlencoded dùng để truyền form dữ liệu

+ Multipart/form-data dùng để truyền file

+ Text/xml : dùng để phân tích dữ liệu XML

Phase Response headers (3)

Những request đã được xử lý tại server sẽ được trả về cho ModSecurity kiểm tra trạngthái trong phần respone header Trước khi phần respone body được đọc thì ModSecurity sẽ dựa vào tập rule để xác định có cần kiểm tra nội dung dữ liệu trong phần body hay không

Ví dụ: mã trạng thái trả về là 404 (Not found) thì lúc này sẽ không cần kiểm tra nội dung gói tin trả về

Phase Response body (4)

Sau khi ModSecurity đã hoàn thành việc kiểm tra tại respone header thì nội dung trong phần body sẽ được kiểm tra so trùng với mẫu trong tập lệnh.Việc này là khá hiệu quả

để phát hiện và phòng chống xâm nhập trong trường hợp bước 1 và 2 không phát hiện được tấn công

Ví dụ: trong khai thác SQL injection, nếu hacker cố gắng sử dụng một số công nghệ evasion thì việc phát hiện khi request là khó khăn Khi khai thác thành công, ModSecurity sẽphân tích kết quả trong gói tin trả về để phát hiện nếu như câu truy vấn thành công

Phase Logging (5)

Đây là thời điểm các hoạt động log được thực hiện Các rules đặt ở đây sẽ định rõ việc log sẽ như thế nào, nó sẽ kiểm tra các error message log của Web Server Đây cũng là

Trang 18

thời điểm cuối cùng để chặn các connection không mong muốn, kiểm tra các response header không thể kiểm tra ở phase response header và phase response body.

3.3) Cấu trúc tập luật trong ModSecurity

SecRule được sử dụng để tạo các rule cho ModSecurity, cú pháp như sau:

SecRule VARIABLES OPERATOR [ACTIONS]

3.3.1) Variables

REMOTE_ADDR: Địa chỉ IP của client

REMOTE_HOST: Hostname của client (nếu tồn tại)

REMOTE_USER: Authenticated username (nếu tồn tại)

REMOTE_IDENT: Remote Username (lấy từ inetd, ít dùng)

REQUEST_METHOD: Request Method (GET, HEAD, POST )

SCRIPT_FILENAME: Đường dẫn đầy đủ của script được thực thi

PATH_INFO: Phần mở rộng của URI phía sau tên của một script

Ví dụ: /archive.php/5 thì PATH_INFO là /5

QUERY_STRING: URI phía sau dấu ?

Ví dụ /index.php?i=1 thì QUERY_STRING là i=1

AUTH_TYPE: Basic hoặc Digest Authentication

DOCUMENT_ROOT: Đường dẫn đến documentroot

SERVER_ADMIN: Email của Server Administrator

SERVER_NAME: Hostname của Server

SERVER_ADDR: Địa chỉ IP của Server

SERVER_PORT: Server port

SERVER_PROTOCOL: Protocol, (ví dụ HTTP/1.1)

SERVER_SOFTWARE: Apache version

TIME_YEAR: Năm hiện tại

TIME_MON: Tháng hiện tại

TIME_DAY: Ngày

TIME_HOUR: Giờ

TIME_MIN: Phút

TIME_SEC: Giây

Trang 19

TIME_WDAY: Thứ tự ngày trong tuần (ví dụ 4 - Thursday).

TIME: Thời điểm hiện tại được viết theo cấu trúc : YmdHMS

ví dụ: 20200328144530 : 28/03/2020 14h 45' 30''

API_VERSION

THE_REQUEST: Dòng đầu tiên của request vd: GET / HTTP/1.1

REQUEST_URI: Request URI

FILENAME: Tên file được yêu cầu đến

Để truy cập vào một trường trong collection, chúng ta ghi tên collection, tiếp theo là dấu hai chấm và sau đó là tên của trường hoặc tuỳ chọn mà chúng ta muốn truy cập Ví dụ:

SecRule REQUEST_HEADERS:Referer "bad-referer.com"

Trang 20

Toán tử @rx (regular expression) là một toán tử mặc định, được sử dụng khi không

có một toán tử nào khác được chỉ định

Biểu Thức Ý Nghĩa Phù Hợp

[Jj]oy Thể hiện mọi chuỗi có chứa Joy hoặc joy

[0-9] Bất kỳ số nào từ 0 đến 9 [a-zA-Z] Mọi chữ từ a đên z và từ A đến Z

@beginsWith Khớp các chuỗi bắt đầu

với chuỗi chỉ định SecRule REQUEST_LINE

“!@beginsWith GET”

@containts Khớp các chuỗi có chứa

chuỗi chỉ định tại bất cứ vịtrí nào

ký tự không phải chữ, số

SecRule ARGS “@containsWord from”

Trang 21

@endsWith Khớp xâu kết thúc bởi xâu

chỉ định SecRule ARGS “@endsWith ”

@streq Khớp xâu giống hoàn toàn

xâu chỉ định SecRule REMOTE_HOST

“@streq victim\.com”

@within Giống @contains, chỉ khác

là một so khớp xảy ra khi biến cần so xuất hiện bên trong xâu được chỉ định

SecRule REMOTE_USER

“@within giang, hue, hung”

(sẽ khớp nếu remote user là giang, hue hoặc hung)

@pm Khớp với một trong những

cụm từ đi sau nó SecRule ARGS "@pm red green blue" deny

@pmFromFile Nếu có quá nhiều chuỗi

muốn đặt vào, ta có thể liệt

kê các chuỗi này vào một file và dùng

Primary Actions:

Primary actions sẽ quyết định cho phép request tiếp tục hay không Mỗi rule chỉ có một primary action Có 4 primary actions :

Trang 22

Deny : Request sẽ bị ngắt, ModSecurity sẽ trả về HTTP status code 500 hoặc làstatus code của người thiết lập trong chỉ thị status.

Pass : Cho phép request tiếp tục được xử lý ở các rules tiếp theo

Allow : Cho phép truy cập ngay lập tức và bỏ qua các phases khác (trừ phases logging) Nếu muốn chỉ cho qua phase hiện tại thì cần chỉ rõ allow:phase Khi đó sẽ vẫn đượckiểm tra bởi các luật tại các phases sau Chỉ cho phép truy cập tới các request phases:

allow:request, nó sẽ cho qua phase 1,2 và vẫn kiểm tra ở phase 3 trở đi

Redirect : Redirect một request đến một url nào đó

exec: thực thi một lệnh nào đó nếu một request vi phạm

log: ghi log những request vi phạm rule

nolog: không ghi log

pause: n : ModSecurity sẽ đợi một thời gian n ms rồi mới trả về kết quả

Flow Actions:

Chain : kết nối 2 hay nhiều rules lại với nhau

Skipnext : n : ModSecurity sẽ bỏ qua n rules theo sau nó

Default Action:

Khi một rule không chỉ rõ action thì rule đó sẽ dùng default action được thiết lập trong SecDefaultAction

Ví dụ : SecDefaultAction "phase:2,deny,log,status:403"

3.4) Xây dựng tập luật phát hiện và chống tấn công trong ModSecurity

ModSecurity sau khi đã được cài đặt thành công cần được cấu hình các tập rule để có thể hoạt động như một WAF Tuy nhiên, việc tự viết và triển khai các rule là khá phức tạp

và tốn thời gian để tối ưu các chức năng trong rule

Nhóm nghiên cứu Truswave SpiderLabs đã phát triển một nhóm các tập lệnh có tên làOWASP ModSecurity CRS, bao gồm các nội dung gói tin của kiểu tấn công đã được biết đến Một tính năng mạnh mẽ của CRS là có thể bảo vệ những ứng dụng web phổ biến cũng như những ứng dụng web tự phát triển riêng biệt

Ngày đăng: 04/05/2020, 22:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w