You are on page 1of 56

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

BÁO CÁO MÔN HỌC

THỰC TẬP CƠ SỞ

ĐỀ TÀI
MỘT SỐ KĨ THUẬT ĐẢM BẢO AN TOÀN THÔNG TIN

CHO WEBSITE

Sinh viên thực hiện: Dương Văn Minh AT160726


Nguyễn Văn Anh AT160701
Mai Văn Thắng AT160744
Nhóm 57

Giảng viên hướng dẫn: TS. Phạm Văn Hưởng

1
2
LỜI CẢM ƠN

Để có được thành quả như ngày hôm nay, ngoài sự nỗ lực không ngừng nghỉ
của các thành viên trong nhóm thì một phần không nhỏ đóng góp nên thành công này
là nhờ sự quan tâm, chỉ bảo, giúp đỡ của các thầy cô, các anh chị khóa trên và bạn bè
xung quanh.
Chúng em xin chân thành cảm ơn thầy Phạm Văn Hưởng – giảng viên trực
tiếp hướng dẫn, chỉ bảo, tạo mọi điều kiện thuận lợi giúp đỡ chúng em trong quá trình
thực hiện đề tài.
Tuy đã có rất nhiều cố gắng và sự nỗ lực của các thành viên để hoàn thiện đề
tài, nhưng chắc chắn đề tài “ MỘT SỐ KĨ THUẬT ĐẢM BẢO AN TOÀN THÔNG
TIN TRONG WEBSITE ” của chúng em còn nhiều thiếu sót. Chúng em rất mong
nhận được sự góp ý từ các thầy giáo để nhóm em có thể hoàn thiện tốt hơn các đề tài
nghiên cứu sau. Chúng em xin chân thành cảm ơn!
Hà Nội, ngày..24..tháng..8..năm 2022.
Nhóm sinh viên thực hiện đề tài
Nhóm 57

1
MỤC LỤC

LỜI CẢM ƠN............................................................................................................................1

MỤC LỤC..................................................................................................................................2

CHƯƠNG 1. TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG BẢO MẬT WEBSITE............7

1.1 Tổng quan về công nghệ Web.........................................................................................7


1.1.1 Giới thiệu chung.......................................................................................................7
1.1.2 Dịch vụ và cơ chế hoạt động Web..........................................................................10
1.1.3 Công nghệ Web 2.0 và 3.0......................................................................................11
1.1.4 Ưu điểm và hạn chế của Web app..........................................................................11

1.2 Một số phương thức tấn công lỗ hổng bảo mật Website.............................................12
1.2.1 Giới thiệu chung.....................................................................................................11
1.2.2 Các phương thức tấn công lỗ hổng bảo mật Website.............................................12
1.2.3 Nhận xét và đánh giá..............................................................................................12

1.3 Một số nguyên nhân gây ra các lỗ hổng bảo mật Website..........................................13
1.2.1 Nguyên nhân do nền tảng xây dựng website..........................................................11
1.2.2 Nguyên nhân do hạ tầng cung cấp hạ tầng web.....................................................12
1.2.3 Nguyên nhân do người vận hàng và sử dụng dịch vụ web....................................12

1.4 Kết luận..........................................................................................................................20

CHƯƠNG 2. NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ HỔNG BẢO MẬT
WEBSITE................................................................................................................................20

2.1 Tổng quan về phát hiên lỗ hổng bảo mật Website.......................................................20


2.1.1 Giới thiệu chung.....................................................................................................11
2.1.2 Cơ chế và mô hình phát hiện lỗ hổng bảo mật Website.........................................11

2.2 Giải pháp sử dụng công cụ phần mềm dò quét...........................................................21


2.2.1 Giới thiệu giải pháp................................................................................................11
2.2.2 Một số phần mềm phát hiện lỗ hổng bảo mật Website...........................................11
2.2.3 Nhận xét..................................................................................................................11

2.3 Giải pháp sử dụng hệ thống phát hiện.........................................................................25


2.3.1 Giới thiệu chung.....................................................................................................25
2.3.2 Ứng dụng hệ thống IDS trong phát hiện xâm nhập................................................11
2.3.3 Nhận xét..................................................................................................................11

2
2.4 Kết luận..........................................................................................................................32

CHƯƠNG 3. THỰC NGHIỆM.............................................................................................24

3.1 Cài đặt phầm mềm.........................................................................................................24

3.2 Tiến hành quét....................................................................................................... 24

3.3 Kết quả thực nghiệm...............................................................................................24

3.3 Kết luận...................................................................................................................24

DANH MỤC CÁC TÀI LIỆU THAM KHẢO.........................................................25

3
DANH SÁCH CÁC HÌNH VẼ

4
5

MỞ ĐẦU

1.Tính cấp thiết của đề tài

Ngày nay công nghệ thông tin đang là nền công nghệ mũi nhọn trong
chiến lược phát triển kinh tế, xây dựng đất nước của hầu hết các quốc gia. Các
sản phẩm công nghệ thông tin đã và đang được ứng dụng rộng rãi trong mọi lĩnh
vực của đời sống kinh tế, xã hội và hầu hết đều đem đến những giá trị thiết thực.
Đối tượng phục vụ chủ yếu của ngành công nghệ thông tin hiện nay chính là các
tổ chức, các cơ sở doanh nghiệp… Bảo mật luôn luôn là một vấn đề hàng đầu
cho tất cả các loại ứng dụng, đặc biệt là các website.

Từ những ngày đầu của Internet người ta đã quan tâm đến tính an toàn
trong trao đổi thông tin. Tuy không có sự an toàn tuyệt đối nhưng những phát
triển trong lĩnh vực này thì rất nhanh và mang lại nhiều thành quả vì đây là vấn
đề cấp bách của nhiều doanh nghiệp. Không có một mức an toàn thích hợp, sự
khai thác thương mại của Internet thì không hoàn toàn an toàn.

Chính vì thế sự an toàn của Web trên mạng cũng không thể nằm ngoài
vấn đề này. Có thể nói ngày nay ngoài việc nghiên cứu làm sao để tạo ra một
Website tốt mang lại nhiều lợi ích thì việc nghiên cứu để làm sao mang lại sự an
toàn cho Website cũng là một trong những vấn đề quan trọng nhất. Thật khó tin
tưởng để sử dụng một dịch như mua hàng trên một giao diện website, hoặc
chuyển tiền trực tuyến trên nền website nếu không đảm bảo được mức độ an
toàn tối đa. Vì vậy em đã chọn đề tài để báo cáo cho môn thực tập cơ sở là “Một
số kĩ thuật đảm bảo an toàn thông tin cho Website”. Đề tài tập trung đi sâu vào
tìm hiểu về các lỗ hổng kĩ thuật tấn công website và các vấn đề bảo mật liên
quan, sử dụng ứng dụng mã nguồn mở có tên là VEGA để phân tích các lỗ hổng
và giải quyết bài toán đề ra .

2. Mục đích nghiên cứu

Mục đích nghiên cứu của đề tài là nghiên cứu phát hiện các lỗ
hổng bảo mật website và thử nghiệm một số giải pháp phát hiện các lỗ

5
hổng bảo mật website thường gặp.

3. Đối tượng và phạm vi nghiên cứu

Đối tượng và phạm vi nghiên cứu của luận văn là nghiên cứu các
giải pháp và công cụ phát hiện các lỗ hổng bảo mật website.

4. Phương pháp nghiên cứu

- Về mặt lí thuyết : Thu thập, khảo sát, phân tích các tài liệu và thông
tin có liên quan đến phát hiện lỗ hổng bảo mật website.

- Về mặt thực nghiệm : Tiến hành phát hiện lỗ hổng bảo mật trên ứng
dụng Vega và xây dựng một số chương trình

Kết cấu của luận văn gồm 2 chương chính với các nội dung sau:

Chương 1: Tổng quan

Chương 2: Nghiên cứu giải pháp

Chương 3: Thử nghiệm

Trong chương 3 sẽ tiến hành tìm kiếm thử nghiệm phát hiện một số
dạng lỗ hổng bảo mật website và các vấn đề liên quan.

6
7
CHƯƠNG 1. TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG BẢO MẬT
WEBSITE

Nội dung của chương 1 sẽ khảo sát tổng quan về công nghệ web, một số
phương thức tấn công lỗ hổng bảo mật website, một số nguyên nhân gây ra lỗ hổng
bảo mật website và các vấn đề khác liên quan.

1.1 Tổng quan về công nghệ Web

1.1.1 Giới thiệu chung


Trang web (web page) trên mạng Internet là nơi giới thiệu những
thông tin, hình ảnh về doanh nghiệp và sản phẩm, dịch vụ của doanh nghiệp
(hay giới thiệu bất cứ thông tin gì) để khách hàng có thể truy cập ở bất kỳ nơi
đâu, bất cứ lúc nào.

Website là tập hợp nhiều trang web. Khi doanh nghiệp xây dựng
website nghĩa là đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch
vụ, Để tạo nên một website cần phải có 3 yếu tố cơ bản [1]:
 Cần phải có tên miền (domain).
 Nơi lưu trữ website (hosting).
 Nội dung các trang thông tin (web page).
Một số thuật ngữ cơ bản:
Website động (Dynamic website) là website có cơ sở dữ liệu, được
cung cấp công cụ quản lý website (Admin Tool). Đặc điểm của website động
là tính linh hoạt và có thể cập nhật thông tin thường xuyên, quản lý các thành
phần trên website dễ dàng. Loại website này thường được viết bằng các ngôn
ngữ lập trình như PHP, Asp.net, JSP, Perl,..., quản trị Cơ sở dữ liệu bằng SQL
hoặc MySQL...
Website tĩnh do lập trình bằng ngôn ngữ HTML theo từng trang như
brochure, không có cơ sở dữ liệu và không có công cụ quản lý thông tin trên
website. Thông thường website tĩnh được thiết kế bằng các phần mềm như
FrontPage, Dreamwaver,... Đặc điểm của website tĩnh là ít thay đổi nội dung,
sự

7
thay đổi nội dung này thường liên quan đến sự thay đổi các văn bản đi kèm thể
hiện nội dung trên đó.
Hiện nay, hầu hết các doanh nghiệp đều sử dụng website động, thế hệ
công nghệ website được mọi người biết đến là web 2.0 [1].
- Tên miền (domain): Tên miền chính là địa chỉ website, trên internet chỉ tồn tại
duy nhất một địa chỉ (tức là tồn tại duy nhất một tên miền). Có 2 loại tên miền:
- Tên miền Quốc tế: là tên miền có dạng .com; .net; .org; .biz; .name ...
- Tên miền Việt Nam: là tên miền có dạng .vn; .com.vn; .net.vn; org.vn;
.gov.vn;...
- Lưu trữ website: Dữ liệu thông tin của website phải được lưu trữ trên một
máy tính (máy chủ - server) luôn hoạt động và kết nối với mạng Internet. Một
server có thể lưu trữ nhiều website, nếu server này bị sự cố chẳng hạn tắt trong
một thời điểm nào đó thì không ai có thể truy cập được những website lưu trữ
trên server tại thời điểm bị sự cố.
- Tùy theo nhu cầu lưu trữ thông tin mà doanh nghiệp có thể thuê dung lượng
thích hợp cho website [thuê dung lượng host].
- Dung lượng host: Là nơi để lưu cơ sở dữ liệu của website (hình ảnh, thông
tin,
…), đơn vị đo dung lượng thường là MB hoặc GB.
- Băng thông hay dung lượng đường truyền: Là tổng số MB dữ liệu tải lên máy
chủ hoặc tải về từ máy chủ (download, upload) nơi đặt website, đơn vị đo
thông thường là MB/giây.

1.1.1.1 Khái niệm về ứng dụng website

Web app (Web application) là một chương trình ứng dụng được lưu trữ trên
một máy chủ từ xa và được phân phối bằng Internet thông qua bất kỳ trình duyệt
nào hiện có. Giao diện người dùng của Web app thường được xây dựng bằng các
ngôn ngữ lập trình như HTML, CSS, Javascript. Khác với các ứng dụng dành cho
thiết bị di động, hiện tại không có SDK cụ thể nào để phát triển các Web app.

Ngoài ra, bất kỳ thành phần nào của Website có thể thực hiện một số chức
năng cho người dùng đều đủ điều kiện là Web app. Ví dụ: mua hàng, tính tiền,
thanh toán,…

Các Web App có thể được thiết kế cho nhiều mục đích sử dụng khác nhau
và được sử dụng bởi bất kỳ ai từ tổ chức đến một cá nhân. Một số ví dụ điển hình
8
9
về các Web app mà chúng ta thường dùng hàng ngày như: Email, các
trang thương mại điện tử, website chỉnh sửa ảnh, Facebook…Nhờ có Web app
chúng ta có thể thực hiện các chức năng như đăng thông tin, upload file, xuất báo
cáo, chỉnh sửa ảnh trực tuyến,..

Hình 1.1. Mô phỏng ứng dụng Web


1.1.2 Dịch vụ và cơ chế hoạt động Web
Dịch vụ Web là sự kết hợp các máy tính cá nhân với các thiết bị khác,
các cơ sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo
mà người sử dụng có thể làm việc thông qua các trình duyệt mạng.
Bản thân các dịch vụ này sẽ chạy trên các máy phục vụ trên nền
Internet chứ không phải là các máy tính cá nhân, do vậy có thể chuyển các
chức nǎng từ máy tính cá nhân lên Internet. Người sử dụng có thể làm việc
với các dịch vụ thông qua bất kỳ loại máy nào có hỗ trợ Web service và có
truy cập Internet, kể cả các thiết bị cầm tay. Do đó các Web service sẽ biến
đổi Internet thành một môi trường làm việc chứ không chỉ là một phương tiện
để xem và tải nội dung [10].
Web Service là một giao diện truy cập mạng đến các ứng dụng chức
năng, được xây dựng từ việc sử dụng các công nghệ chuẩn Internet [10].
Được minh hoạ trong hình 1.1 sau:

9
Hình 1.2. Dịch vụ Web Service[10].
Web Service cho phép truy cập tới các code ứng dụng sử dụng chuẩn
công nghệ Internet.
Không giống như mô hình Client/Server truyền thống, chẳng hạn như
hệ thống Web server/webpage, Web Service không cung cấp cho người dùng
một giao diện đồ hoạ nào, Web Service đơn thuần chỉ là việc chia sẻ các dữ
liệu logic và xử lý các dữ liệu đó thông qua một giao diện chương trình ứng
dụng được cài đặt xuyên suốt trên mạng máy tính. Tuy nhiên nguời phát triển
Web Service hoàn toàn có thể đưa Web Service vào một giao diện đồ hoạ
người dùng (chẳng hạn như là một trang web hoặc một chương trình thực thi
nào đó) để có thể cung cấp thêm các chức năng đặc biệt cho người dùng.
Cơ chế hoạt động của Web Service yêu cầu phải có 3 thao tác đó là :
Find, Public, Bind [10].

Hình 1.3. Cơ chế hoạt động của Web Service[10].

Trong kiến trúc Web Service, Service Provider công bố các mô tả về các service
thông qua Service Registry. Service Consumer tìm kiếm trong các Service Registry để
tìm ra các service mà họ cần sử dụng. Service Consumer có thể là một người hoặc
cũng có thể là một chương trình.
Kĩ thuật mô tả dịch vụ là một trong những thành phần chủ chốt của kiến trúc
Web Service. Các thông tin mô tả đầy đủ nhất về kiến trúc Web Service được thể hiện
trong hai tài liệu riêng biệt, đó là Network Accessible Service Specification Language
(NASSL) và Web-Defined Service (WDS).
10
11

1.1.3 So sánh giữa Ứng dụng website và website

- Về khả năng tương tác


Mục đích chính của Website là cung cấp những thông tin hữu ích, nhưng tại đó,
người đọc chỉ có thể xem, nghe và click các link qua lại chứ không thể tác động hay tạo
nên sự ảnh hưởng gì của trang. Nên khả năng tương tác của Website thấp

Còn mục đích của Web app là tăng khả năng tương tác của người dùng với trang
nên bạn không chỉ đọc, nghe mà còn có thẻ thao tác dữ liệu trên trang bằng cách nhấn
nút, gửi biểu mẫu, nhận phản hồi từ trang, nhắn tin trực tuyến hay mua hàng, thanh toán,

- Về khả năng tích hợp


Thực tế, cả Website và Web app đều có khả năng tích hợp các phần mềm, công cụ
trực tuyến khác. Tuy nhiên, web app có khả năng tích hợp cao hơn do chúng có những
chức năng phức tạp và thường yêu cầu tương tác với các hệ thống bổ sung.

Điển hình như phần mềm CRM thường được tích hợp trong Web app, giúp cho việc quản
lý bán hàng trở nên dễ dàng và hiệu quả hơn.

Còn với Website, phần lớn sẽ tập trung vào việc cung cấp cho người dùng những
chức năng cốt lõi hơn là các chức năng tích hợp.

Hình 1.4 Website và Web Application

- Về khả năng xác thực thông tin


Đối với Web app, xác thực là một yếu tố quan trọng và rất cần thiết khi người
dùng đăng nhập. Khả năng có tác dụng giúp người dùng bảo mật tài khoản, tránh truy
11
cập trái phép và rò rỉ những dữ liệu riêng tư của họ.

Còn với các Website, thông tin xác thực thường không bắt buộc đối với người
dùng. Chỉ trong trường hợp website của bạn chứa thông tin nhạy cảm, chỉ phù hợp với
một đối tượng nhất định thì tính năng xác thực mới cần dùng đến. Hoặc người dùng
cũng có thể được đề nghị đăng ký tài khoản để có quyền truy cập vào các tùy chọn
không có sẵn.

- Về ngôn ngữ sử dụng khi thiết kế


Website thường được thiết kế khá đơn giản, chủ yếu hiển thị nội dung văn bản, hình
ảnh, video và hỗ trợ việc giới thiệu, nhận thông tin của người dùng từ form yêu cầu.
Nên các lập trình viên Website thường sử dụng CMS WordPress bởi có mã nguồn
chuẩn SEO, giao diện đơn giản, giúp tiết kiệm chi phí và thời gian triển khai.

Còn Web app được thiết kế phức tạp hơn với nhiều ngôn ngữ. Ngoài HTML,
CSS còn có PHP, LAMP, MEAN, .NET, Ruby, Python,… Hơn nữa, các Web app
thường là được lập trình bằng code tay mà không có sự hỗ trợ của các CMS hay mã
nguồn có sẵn.

1.2 Một số phương thức tấn công lỗ hổng bảo mật website
1.2.1 Giới thiệu chung.
Các lỗ hổng bảo mật trên một hệ thống thông tin nói chung là các điểm yếu
có thể tạo ra sự ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho
phép các truy cập không hợp pháp vào hệ thống. Các lỗ hổng cũng có thể nằm
ngay các dịch vụ cung cấp như sendmail, web, ftp … Ngoài ra các lỗ hổng còn tồn
tại ngay chính tại hệ điều hành như trong Windows, UNIX; hoặc trong các ứng
dụng mà người sử dụng thường xuyên sử dụng như Word processing, các hệ
databases, ...

Có thể được phân chia các dạng lỗ hổng bảo mật trên một hệ thống nói
chung thành ba cấp độ nguy hiểm như sau [2]:
Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức
tấn công theo DoS (Dinal of Services – Từ chối dịch vụ). Mức độ nguy hiểm thấp,
chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ, gián đoạn hệ thống;
không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập bất hợp pháp.
Lỗ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền
trên hệ thống mà không cần thực hiện kiểm tra tính hợp lệ. Mức độ nguy hiểm
trung bình. Những lỗ hổng này thường có trong các ứng dụng trên hệ thống; có

12
13
thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.
Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể
truy nhập vào hệ thống bất hợp pháp. Lỗ hổng rất nguy hiểm, có thể làm phá hủy
toàn bộ hệ thống.
Các lỗ hổng bảo mật Website là các điểm yếu của hệ thống cung cấp dịch vụ
Web cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểm
soát ứng dụng web, hoặc thậm chí kiểm soát cả hệ thống máy chủ chạy ứng dụng
web. Các lỗ hổng bảo mật Website rất đa dạng và bao gồm cả ba loại trên.
Trong phần tiếp theo, luận văn sẽ trình bày một số phương thức tấn công lỗ
hổng bảo mật Website.

1.2.2 Các phương thức tấn công lỗ hổng bảo mật website
Trong mục này, luận văn sẽ khảo sát các phương thức tấn công lỗ hổng bảo
mật Website dựa trên khuyến nghị của OWASP [16].
1.2.2.1. Tấn công SQL injection
SQL injection là một kĩ thuật cho phép những kẻ tấn công 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 để "tiêm 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). Hậu quả của nó rất
tai hại vì nó cho phép những kẻ tấn công 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à server 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,
DB2, Sysbase. Có 4 dạng tấn công kiểu SQL injection sau:
- Vượt qua kiểm tra lúc đăng nhập
- Sử dụng câu lệnh SELECT.
- Sử dụng câu lệnh INSERT.
- Sử dụng các Stored-Procedures.

1.2.2.2. Tấn công kiểu Broken Authentication And Session Management


Đây là kiểu tấn công lỗi xác thực và quản lý phiên làm việc (Broken
Authentication And Session Management), bao gồm những đoạn chương trình

13
kiểm tra danh tính và quản lý phiên làm việc của người sử dụng thường hay được
làm qua loa không đúng cách. Điều này giúp kẻ thâm nhập có thể ăn cắp mật mã,
khóa, mã của các phiên làm việc {session token} hoặc tận dụng những lỗi khác để
giả mạo danh tính các người dùng khác.
Quản lý xác thực và phiên bao gồm tất cả các khía cạnh xử lý xác thực và
quản lý phiên làm việc. Xác thực là một khía cạnh quan trọng của quá trình này,
nhưng ngay cả các cơ chế xác thực vững chắc cũng có thể bị suy yếu do chức năng
quản lý có khe hở, bao gồm thay đổi mật khẩu, ghi nhớ mật khẩu, thay đổi tài
khoản và nhiều chức năng khác. Vì các cuộc tấn công có thể xảy ra với nhiều ứng
dụng web nên chức năng quản lý tài khoản yêu cầu xác thực lại ngay cả khi người
sử dụng có phiên làm việc hợp lệ. Một phương pháp xác thực mạnh mẽ hơn là sử
dụng phần mềm và phần cứng tuy nhiên phương pháp này rất tốn kém.
Các ứng dụng web thường phải thiết lập phiên để theo dõi các luồng yêu cầu
từ người dùng, giao thức HTTP không hỗ trợ khả năng này vì vậy các ứng dụng
web phải tự tạo ra nó. Thông thường môi trường ứng dụng web cung cấp khả năng
phiên nhưng nhiều nhà phát triển thích tự họ tạo ra một thẻ phiên của riêng họ. Tuy
nhiên, chức năng ứng dụng liên quan đến quản lý xác thực và phiên làm việc
thường thực hiện một cách chính xác, điều này cho phép kẻ tấn công lấy được mật
khẩu, khóa, thẻ phiên hoặc khai thác lỗ hổng để thực hiện các giả mạo danh tính
người dùng.

1.2.2.3. Tấn công Cross Site Scripting (XSS)


Kiểu tấn công thực thi mã script xấu 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 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.
Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để
tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) 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 có thể gây nguy hại cho những người
14
15
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. Kĩ thuật tấn công XSS đã nhanh chóng trở thành một trong
những lỗi phổ biến nhất của Web Applications và mối đe dọa của chúng đối với
người sử dụng ngày càng lớn.

1.2.2.4. Kiểu tấn công Insecure Direct Object References


Kiểu tấn công đối tượng tham chiếu trực tiếp không an toàn (Insecure Direct
Object References), xảy ra khi người phát triển để lộ một tham chiếu đến những
đối tượng trong hệ thống như các tập tin, thư mục hay chìa khóa dữ liệu. Nếu
chúng ta không có một hệ thống kiểm tra truy cập, kẻ tấn công có thể lợi dụng
những tham chiếu này để truy cập dữ liệu một cách trái phép.
Việc phân quyền yếu cho phép người dùng có thể truy cập dữ liệu của người
khác. Hacker có thể xác định được cấu trúc truy vấn gửi đến server và có thể nhanh
chóng thu nhập dữ liệu như Credit Card, mã khách hàng, thông tin cá nhân.

1.2.2.5. Tấn công Security Misconfiguration


Kiểu tấn công sai sót trong cấu hình bảo mật (Security Misconfiguration), như
là một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và triển
khai nó cho các ứng dụng, máy chủ ứng dụng, máy chủ web, máy chủ dữ liệu và
các ứng dụng nền tảng.
Tất cả những thiết lập nên được định nghĩa, thực hiện và bảo trì bởi vì rất
nhiều hệ thống không được triển khai với thiết lập an toàn mặc định. Các hiệu
chỉnh cũng bao gồm cập nhật phần mềm và những thư viện được sử dụng bởi ứng
dụng.

1.2.2.6. Tấn công Sensitive Data Exposure


Kiểu tấn công phơi bày các dữ liệu nhạy cảm (Sensitive Data Exposure), bao
gồm nhiều ứng dụng web không bảo vệ dữ liệu nhạy cảm như thẻ tín dụng, mã số
thuế và những mã xác thực bí mật bằng các phương thức mã hóa hay băm
(hashing). Kẻ tấn công có thể ăn cắp hay thay đổi những dữ liệu nhạy cảm này và
tiến hành hành vi trộm cắp, gian lận thẻ tín dụng, v.v..
15
1.2.2.7. Tấn công Missing Function Level Access Control
Kiểu tấn công thiếu chức năng điều khiển truy cập (Missing Function Level
Access Control) bao gồm gần như tất cả các ứng dụng web kiểm tra quyền truy cập
cấp độ chức năng trước khi thực hiện chức năng mà có thể nhìn thấy trong giao
diện người dùng. Tuy nhiên, các ứng dụng cần phải thực hiện kiểm tra kiểm soát
truy cập tương tự trên máy chủ khi mỗi chức năng được truy cập. Nếu yêu cầu
không được xác nhận, kẻ tấn công sẽ có thể giả mạo yêu cầu để truy cập vào chức
năng trái phép.

1.2.2.8. Tấn công Cross-Site Request Forgery (CSRF)


Kiểu tấn công giả mạo yêu cầu (CSRF) là kiểu tấn công này ép buộc trình
duyệt web của một người dùng đã đăng nhập gửi những yêu cầu các HTTP giả bao
gồm cookie của phiên truy cập và những thông tin tự động khác bao gồm thông tin
đăng nhập đến một ứng dụng web. Điều này, cho phép kẻ tấn công buộc trình
duyệt web tạo ra những yêu cầu đến ứng dụng web mà ứng dụng không thể biết
đây là những yêu cầu giả mạo của kẻ tấn công.

1.2.2.9. Tấn công Using Components with Known Vulnerabilities


Kiểu tấn công sử dụng thành phần đã tồn tại lỗ hổng (Using Components with
Known Vulnerabilities) bao gồm các lổ hổng có thể có trong các thành phần (thành
phần phát triển ứng dụng) như các thư viện, các framework, và mô-đun phần mềm
khác. Các thành phần này gần như luôn luôn chạy với quyền cao nhất trong hệ
thống. Vì vậy, nếu bị khai thác, các thành phần này có thể gây mất dữ liệu nghiêm
trọng

Các ứng dụng sử dụng các thành phần tồn tại lổ hổng có thể làm suy yếu
phòng thủ của hệ thống, cho phép một loạt các cuộc tấn công và ảnh hưởng đến hệ
thống.

1.2.2.10. Tấn công Unvalidated Redirects and Forwards

16
17
Kiểu tấn công chuyển hướng và chuyển tiếp thiếu kiểm tra (Unvalidated
Redirects and Forwards) là kiểu tấn công ứng dụng web thường chuyển hướng,
chuyển tiếp người dùng đến những trang web, website khác và sử dụng những
thông tin thiếu tin cậy để xác định trang đích đến. Nếu không được kiểm tra một
cách cẩn thận, kẻ tấn công có thể lợi dụng để chuyển hướng nạn nhân đến các trang
web lừa đảo hay trang web chứa phần mềm độc hại, hoặc chuyển tiếp để truy cập
các trang trái phép.
Ngoài 10 phương thức tấn công phổ biến mạng hiện nay theo OWASP, còn có
thể kế đến phương pháp tấn công APT rất quan trọng trong tấn công mạng.

1.2.2.11. Tấn công APT


Thuật ngữ APT (Advanced Persistent Threat) được sử dụng để mô tả kiểu
tấn công dai dẳng và có chủ đích vào một thực thể được nhắm đến. Thông thường
tấn công APT có sự chuẩn bị kỹ càng và được thực hiện, hỗ trợ bởi một tổ chức
hoặc cao cấp hơn là chính phủ của một nước nào đó nhằm tìm kiếm thông tin tình
báo từ cá nhân, doanh nghiệp, chính phủ nước khác.
Phân tích các thuật ngữ trong APT:
Advanced: thuật ngữ này trong cụm từ APT chỉ các kiểu tấn công cao cấp
hơn các thể loại thông thường. Trong APT, tin tặc sử dụng các malware và các
biến thể khác nhau để tiến hành qua mặt và xâm nhập vào hệ thống. Không giống
các virus hay chương trình độc hại máy tính khác, các malware này phần lớn có thể
qua mặt được các phương pháp bảo vệ truyền thống khác như Firewall, IPS, và
phần mềm diệt virus.
Persistent: kiểu tấn công APT thực sự bao giờ cũng có chủ đích nhất định và
thuật ngữ Persistent mang ý nghĩa việc tấn công luôn theo sát để đạt được mục đích
của nó. Mục tiêu tấn công sẽ không bị tấn công ngay tức thì mà các mã độc sẽ đi
theo nhiều đường khác nhau cho đến khi xâm nhập vào hệ thống, sau đó chờ thời
cơ. Chúng chỉ thực sự kích hoạt tấn công khi phát hiện đúng mục tiêu.
Threat: chỉ các mối nguy hại liên quan đến an ninh, an toàn thông tin.
Theo thống kế của FireEye [12], tấn công APT nằm trong nhóm hiểm họa an toàn
thông tin bắt đầu xuất hiện từ giai đoạn 2010-2011 cho đến nay. Đây là phương

17
thức tấn công đa dạng, nhanh chóng tạo ra các biến thể để qua mặt các giải pháp an
ninh và gây thiệt hại to lớn so với các rủi ro an ninh khác như virus, spyware.

1.2.3 Nhận xét và đánh giá


Thực tế với tình hình hiện nay, các ứng dụng Web ngày một nhiều. Sự thay
đổi chóng mặt của công nghệ đã giúp ứng dụng Web được cải tiến nâng cao rất
nhiều, và vấn đề bảo mật cho ứng dụng Web không ngừng tăng lên. Một khi ứng
dụng Web bị rò rỉ lỗ hổng, các hacker sẽ dễ dàng chiếm quyền quản trị Web, ứng
dụng và phần mềm của công ty. Nguyên nhân dẫn đến các ứng dụng Web bị rò rỉ
thông tin, các nguy cơ về lỗ hổng, là do các đoạn mã lệnh, mã code không phù hợp
trong ứng dụng Web. Chỉ cần một lỗ hổng, hacker cũng có thể xâm nhập và truy
cập vào cơ sở dữ liệu, thông tin và thực hiện các hành vi sai trái như đánh cắp, thay
đổi, chỉnh sửa, mã hóa dữ liệu…Đối với các doanh nghiệp, tổ chức, cơ quan nhà
nước, việc tăng lớp bảo mật, rà quét lỗ hổng ứng dụng là điều cần thiết.
Việc đánh cắp hoặc chiếm đoạt quyền truy cập của người dùng, nhà quản trị,
cũng như chiếm các phiên làm việc trên session management hoặc ẩn phiên làm
việc session fixation, dẫn đến các hậu quả không an toàn như: những thông tin cá
nhân, thông tin quan trọng, tài chính của công ty và khách hàng sẽ bị hacker xâm
phạm; ứng dụng web và các phần mềm khác mà công ty, doanh nghiệp đang sử
dụng rất có thể sẽ bị hacker cài mã theo dõi, virus độc hại; hệ thống máy chủ hoặc
hệ thống có thể bị tê liệt do sự cố bắt nguồn từ các ứng dụng Web,…..

CHƯƠNG 2. NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ HỔNG BẢO


MẬT WEBSITE
Trong chương 2 này sẽ nghiên cứu về một số giải pháp phát hiện lỗ hổng bảo
mật website.

2.1 Tổng quan về phát hiện lỗ hổng bảo mật Website


2.1.1 Giới thiệu chung.

Hệ thống Website có thể hoạt động và cung cấp dịch vụ cho người dùng

18
19
thường trải qua các giai đoạn sau đây:

(1) Giai đoạn thiết kế hệ thống Website;

(2) Giai đoạn cài đặt hệ thống Website;

(3) Giai đoạn triển khai và vận hành khai thác hệ thống Website.

Trong cả ba giai đoạn trên đều có thể phát sinh các lỗ hổng bảo mật và
cần phải có các giải pháp phát hiện lỗ hổng bảo mật cho hệ thống Website.

Quy trình phát hiện lỗ hổng bảo mật cho hệ thống Website đang hoạt
động thông thường được thực hiện theo các bước sau:

(1) Bước 1: Khảo sát hiện trạng hệ thống Website

Trước hết, thực hiện khảo sát toàn bộ hệ thống website nhằm thu thập
những thông tin cơ bản về thiết kế, cài đặt và hiện trạng vận hành để chuẩn bị
cho bước 2.

(2) Bước 2: Xây dựng kịch bản đánh giá

Trong bước này cần xây dựng các kịch bản cụ thể để tiến hành phát hiện
lỗ hổng bảo mật cho hệ thống Website.

(3) Bước 3: Đánh giá sơ bộ

Thường sử dụng các công cụ rà quét toàn bộ hệ thống website bao gồm
website chính và các website site con như: blog, website wordpress, diễn
đàn,....

(4) Bước 4: Đánh giá chi tiết

Trong bước này thường thực hiện tấn công từ bên trong và bên ngoài
mạng nội bộ kết nối hệ thống website. Trong đó, tấn công từ bên trong hệ
thống sẽ tiến hành thâm nhập toàn bộ hệ thống thông qua bộ lưu trữ mật khẩu
của website, tấn công từ diễn đàn, …. Còn tấn công từ bên ngoài hệ thống sẽ
giả lập vai trò là các hacker thâm nhập vào hệ thống thông qua wifi, internet,
host, IDS, tường lửa, ….

Trên cơ sở đánh giá chi tiết sẽ đưa ra những giải pháp, những tư vấn thiết

19
thực nhằm khắc phục các lỗ hổng bảo mật đã phát hiện cho hệ thống website.

Trong mục tiếp theo, dựa trên ý tưởng trình bày trong [2], luận văn sẽ
đưa ra mô hình phát hiện lỗ hổng bảo mật Website tổng quát.

2.1.2 Cơ chế và mô hình phát hiện lổ hổng bảo mật Website.

Lỗ hổng bảo mật Website rất đa dạng và có thể do nhiều nguyên nhân
khác nhau, có thể phát sinh từ những yếu tố thuần túy kỹ thuật; cũng có thể do
các yếu tố về tổ chức và quản lý như: thiếu hoặc khiếm khuyết trong các biện
pháp bảo vệ thông tin. Tuy nhiên, lỗ hổng bảo mật Website có thể được chia
thành ba loại: lỗ hổng khách quan, lỗ hổng chủ quan và lỗ hổng ngẫu nhiên.
Lỗ hổng khách quan xuất phát từ các đặc tính kỹ thuật vốn có của thiết bị và
phần mềm của Website. Lỗ hổng chủ quan xuất phát từ hành vi của chủ thể,
có thể là nhà thiết kế, các quản trị viên và người sử dụng. Lỗ hổng ngẫu nhiên
xuất phát từ môi trường của hệ thống Website và những bối cảnh không dự
đoán trước được.

Hình 2.1 dưới đây mô tả mô hình tổng quát phát hiện lỗ hổng bảo mật
Website.

Theo hình 2.1, quá trình phát hiện lỗ hổng bảo mật Website được xây
dựng bằng cách thực hiện kiểm tra thụ động và kiểm tra thăm dò tích cực
(active probe) các lỗ hổng.

Trong quá trình rà quét (scan), các công cụ phân tích lỗ hổng bảo mật
Website  sẽ gửi yêu cầu đến địa chỉ của Website (lên cổng máy chủ) 
phân tích các gói dữ liệu nhận được  sau đó trả về tương ứng về các lỗ
hổng có thể tồn tại.

Phương pháp thăm dò tích cực cung cấp khả năng phân tích dấu vết số
đoạn phần mềm của Website, thực hiện quá trình so sánh kết quả nhận được
với dấu vết số lỗ hổng đã được biết của Website đang được kiểm tra. Trong
quá trình kiểm tra thăm dò tích cực, các phương tiện phân tích an toàn mô
phỏng các tấn công vào Website, sử dụng thông tin lỗ hổng nhận được khi
quét.

20
21

Hình 2.1. Mô hình cơ chế tổng quát phát hiện lỗ hổng bảo
mật Website.

Kết quả rà quét và kiểm tra thăm dò tích cực được đưa vào cơ sở dữ liệu lỗ
hổng, trong đó lưu giữ thông tin các lỗ hổng của Website. Trên cơ sở so sánh
thông tin lỗ hổng được phát hiện với thông tin các lỗ hổng của Website, các
phương tiện phân tích an toàn hệ thống lập báo cáo về sự vắng mặt hay hiện
diện của những trùng hợp trong thông tin của các lỗ hổng, báo cáo này được
lưu trong cơ sở dữ liệu lỗ hổng.

Mô tả thông tin các lỗ hổng đã được biết đến và lỗ hổng chưa biết (lỗ
hổng zero-day) được lưu giữ bằng thông tin về các tính chất đặc thù của từng
lỗ hổng cụ thể. Để nhận dạng chính xác thông tin lỗ hổng được phát hiện, cơ
sở dữ liệu lỗ hổng cần chứa thông tin về tên gọi và phiên bản phần mềm của
Website, về định danh, tên và lớp của các lỗ hổng được phát hiện. các lỗ hổng
đã được biết đến và lỗ hổng zero-day được lưu giữ bằng thông tin về các tính
chất đặc thù của từng lỗ hổng cụ thể. Để nhận dạng chính xác thông tin lỗ
hổng được phát hiện, cơ sở dữ liệu lỗ hổng cần chứa thông tin về tên gọi và
21
phiên bản phần mềm của Website, về định danh, tên và lớp của các lỗ hổng
được phát hiện

Dựa trên các thông tin trên, các phương tiện phân tích an toàn sẽ phân
loại các mức độ của lỗ hổng. Để đánh giá một cách chính xác thông tin về lỗ
hổng bao gồm: loại khiếm khuyết của Website, vị trí phát hiện và phương
pháp phát hiện lỗ hổng. Quá trình đánh giá lỗ hổng kết thúc bằng các khuyến
nghị về việc loại bỏ lỗ hổng hoặc loại trừ khả năng sử dụng chúng.

Trong trường hợp lỗ hổng được phát hiện lần đầu tiên, các phương tiện
phân tích sẽ đưa thông tin về nó vào cơ sở dữ liệu lỗ hổng và hình thành cơ sở
dữ liệu mới của lỗ hổng zero-day. Khi các nhà phát triển Website đưa ra các
bản cập nhật và các biện pháp bảo vệ thông tin, thì lỗ hổng zero-day sẽ
chuyển thành lỗ hổng đã biết.

2.2 Giải pháp sử dụng công cụ phần mềm dò quét.


.
2.2.1 Giới thiệu giải pháp

Trong quá trình thiết kế, cài đặt và vận hành hệ thống Website, thường
xuyên dò quét phát hiện các lỗ hổng bảo mật để kịp thời xử lý là sự lựa chọn
thông minh giúp cho các doanh ngiệp, cá nhân, tổ chức bảo vệ được hệ thống
của mình. Để thực hiện dò quét phát hiện các lỗ hổng bảo mật, người dùng có
thể tự cài đặt các phần mềm hoặc sử dụng các phần mềm sẵn có của các nhà
cung cấp.
Một số tiêu chuẩn kiểm thử lỗ hổng bảo mật website điển hình:
– OWASP (Open Web Application Security Project).
– OSSTMM (Open Source Security Testing Methodology Manual) –
Kiểm thử theo phương thức mã nguồn mở.
– PTF (Penetration Testing Framework) – Dò quét lỗ hổng bảo mật hệ thống.
– ISSAF (Information Systems Security Assessment Framework) –
Đánh giá bảo mật Hệ thống thông tin.
Để xây dựng các phần mềm phát hiện lỗ hổng bảo mật, trước hết cần
nghiên cứu kỹ các đặc điểm lỗ hổng bảo mật dựa trên các tiêu chuẩn nêu trên.
Tiếp theo là sử dụng các ngôn ngữ lập trình (chẳng hạn như Python) để cài đặt
22
23
phần mềm mô phỏng quá trình tấn công lỗ hổng bảo mật nhằm phát hiện
chúng. Cuối cùng là sử dụng phần mềm để dò quét phát hiện lỗ hổng bảo mật.
Quá trình tự cài đặt các phần mềm phát hiện lỗ hổng bảo mật giúp cho
các nhà phát triển Website nắm rõ bản chất của lỗ hổng và sớm có các giải
pháp khắc phục.
Trong hình 2.2 mô tả sơ đồ tấn công lỗ hổng cơ sở dữ liệu SQL của
website được viết bằng ngôn ngữ lập trình PHP và cơ sở dữ liệu SQL server .

Hình 2.2: Sơ đồ thực hiện tấn công lỗ hổng cơ sở dữ liệu SQL trên web

Trên cơ sở đó, thực hiên cài đặt phần mềm theo sơ đồ trên để phát hiện
lỗ hổng bảo mật webiste tương ứng.

2.2.2 Một số phần mềm phát hiện lỗ hổng bảo mật Website

Hiện nay có khá nhiều phần mềm miễn phí cũng như trả phí được phát
hành. Một số ứng dụng phát hiện lỗ hổng bảo mật Website khá phổ biến được
liệt kê dưới đây.
- Google Safe Browsing Diagnostic: sẽ cho biết về tên miền và các
đường dẫn liên quan đến địa chỉ web muốn kiểm tra.
- URL Void: có chức năng quét địa chỉ web bằng hơn 30 công cụ khác nhau.
- UnMask Parasites: quét web cho biết nó chứa các mối nguy hiểm nào

23
ví dụ đường link, dòng lệnh đáng ngờ.
- PhishTank: cung cấp danh sách địa chỉ Web có nguy cơ phishing.
- UnShorten.it: đảm bảo an toàn cho người dùng khi truy cập vào các
địa chỉ web rút gọn.
- Phần mềm Havij: phát hiện lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ
lập trình web là PHP.

- Phần mềm Rapid 7: có tính năng dò quét lỗ hổng toàn diện chuyên
sâu trên cả phần cứng và phần mềm.
- Phần mềm Acunetix: là chương trình tự động kiểm tra các ứng dụng
Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site
Scripting,…
- Nhưng ở trong báo cáo này , chúng ta sẽ cùng tìm hiểu về ứng dụng
Vega trên nền tảng Kali Linux để tìm kiếm các lỗ hổng trong Website bất
kì.

Hình 2.3: Ứng dụng Vega

Tiếp theo , ta sẽ ví dụ khảo sát nhanh một số phần mềm khác cụ thể.
(a) Phần mềm Acunetix quét các lỗ hổng bảo mật web được viết bằng PHP
24
25

Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm


tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection,
hay Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu
đăng nhập cũng như các phương thức xác thực vào WebSite.

Hình 2.4: Giao diện phần mềm WVS khai thác lỗ hổng bảo mật website

(b) Phần mềm Havij khai thác lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ lập
trình web là PHP

25
Hình 2.5: Giao diện phần mềm Havaij quét lỗ hổng bảo mật
web
Khi chúng ta tìm được cơ sở dữ liệu Current DB như hình trên, ta có thể dễ
dàng truy xuất được các bảng Tables trong cơ sở dữ liệu đó bằng cách Get
Tables, Get Columns hoặc Get Data để lấy được tên đăng nhập và mật khẩu
đăng nhập của trang website đó (thông thường mật khẩu được mã hóa
bằng MD5, ta có thể dùng chức năng MD5 để giải hoặc có nhiều trang web
online có thể giải mã được mật khẩu một cách dễ dàng và nhanh chóng,..)

Hình 2.6: Giao diện phần mềm Havij khai thác được tên và mật khẩu người
dùng

Như vậy, với trang website được viết bằng ngôn ngữ PHP phổ biến
hiện nay có kết nối cơ sở dữ liệu SQL, ta có thể dùng phần mềm miễn phí
quét lỗ hổng với thời gian khoảng 120 s có thể tìm thấy được tên đăng nhập
và mật khẩu để có thể Login vào hệ thống một cách dễ dàng.

2.2.3 Nhận xét

Giải pháp sử dụng các công cụ phần mềm rà quét phát hiện lỗ hổng bảo
mật Website khá đơn giản và có thể tiến hành ngay từ giai đoạn thiết kế và cài
đặt hệ thống website. Giải pháp này có thể hỗ trợ cho cả các nhà phát triển,

26
27
cung cấp dịch vụ Web lẫn các tổ chức, cá nhân sử dụng hệ thống Website.

Tuy nhiên, lỗ hổng bảo mật Website ngày càng khó phát hiện, trong khi
đó thủ đọan của tin tặc ngày càng tinh vi và nguy hiểm. Do đó, việc sử dụng
các phần mềm dò quét thông thường có thể không mang lại hiệu quả như
mong muốn, đặc biệt đối với các website lớn, phức tạp. Vì vậy, cần phải có
thêm các giải pháp hỗ trợ khác.

2.3 Giải pháp sử dụng hệ thống phát hiện xâm nhập


2.3.1 Giới thiệu hệ thống phát hiện xâm nhập

Hệ thống phát hiện xâm nhập (Intrusion Detection System – IDS) là


một hệ thống phần cứng hoặc ứng dụng phần mềm theo dõi, giám sát và thu
thập thông tin từ các hoạt động ra vào của mạng. Sau đó hệ thống sẽ phân tích
để tìm dấu hiệu của sự xâm nhập hoặc tấn công hệ thống trái phép và cảnh
báo đến người quản trị hệ thống.
Nói cách khác, IDS là hệ thống phát hiện các dấu hiệu có nguy cơ làm
tổn hại đến tính đúng đắn, tính toàn vẹn, tính bảo mật của một hệ thống mạng
hoặc máy tính, làm cơ sở để đảm bảo cho an ninh hệ thống. Chúng có thể xác
định những hoạt động xâm nhập bằng việc kiểm tra sự đi lại của mạng, những
host log, system call, và những khu vực khác khi phát hiện ra những dấu hiệu
xâm nhập. Do đó, IDS có khả năng ứng dụng phát hiện lỗ hổng bảo mật
Website.

Các thành phần của IDS

Các thành phần của hệ thống IDS được mô tả trong hình 2.7.

27
Hình 2.7: Các thành phần của hệ thống IDS

Hai thành phần quan trọng nhất cấu tạo nên hệ thống IDS là sensor (bộ
cảm nhận) có chức năng chặn bắt và phân tích lưu lượng trên mạng và các
nguồn thông tin khác để phát hiện dấu hiệu xâm nhập (signature); signature
database là cơ sở dữ liệu chứa dấu hiệu của các tấn công đã được phát hiện và
phân tích. Cơ chế làm việc của signature database giống như virus database
trong các phần mềm antivirus. Do vậy, việc duy trì một hệ thống IDS hiệu
quả phải bao gồm việc cập nhật thường xuyên cơ sở dữ liệu này.

Phân loại IDS:

Dựa trên phạm vi giám sát, IDS được chia thành 2 loại:
(1) Host-based IDS (HIDS): Là những IDS giám sát hoạt động của từng
máy tính riêng biệt. Do vậy, nguồn thông tin chủ yếu của HIDS ngoài lưu
lượng dữ liệu đến và đi từ máy chủ còn có hệ thống dữ liệu nhật ký hệ thống
(system log) và kiểm tra hệ thống (system audit). Nhiệm vụ chính của HIDS
là giám sát sự thay đổi trên hệ thống.
Hình 2.7 dưới đây mô tả mô hình hệ thống HIDS.

28
29

Hình 2.8: Mô hình hệ thống HIDS

(2) Network-based IDS (NIDS): Là những IDS giám sát trên toàn bộ
mạng. Nguồn thông tin chủ yếu của NIDS là các gói dữ liệu đang lưu thông
trên mạng. NIDS thường được lắp đặt tại ngõ vào của mạng, có thể đứng
trước hoặc sau tường lửa.
Hình 2.8 dưới đây mô tả mô hình hệ thống NIDS.

Hình 2.9: Mô hình hệ thống NIDS

Dựa trên kỹ thuật thực hiện, IDS cũng được chia thành 2 loại:

- Signature-based IDS: Signature-based IDS phát hiện xâm nhập dựa


trên dấu hiệu của hành vi xâm nhập, thông qua phân tích lưu lượng mạng và
nhật ký hệ thống. Kỹ thuật này đòi hỏi phải duy trì một cơ sở dữ liệu về các
29
dấu hiệu xâm nhập (signature database), và cơ sở dữ liệu này phải được cập
nhật thường xuyên mỗi khi có một hình thức hoặc kỹ thuật xâm nhập mới.
- Anomaly-based IDS: phát hiện xâm nhập bằng cách so sánh (mang
tính thống kê) các hành vi hiện tại với hoạt động bình thường của hệ thống để
phát hiện các bất thường (anomaly) có thể là dấu hiệu của xâm nhập. Ví dụ,
trong điều kiện bình thường, lưu lượng trên một giao tiếp mạng của server là
vào khoảng 25% băng thông cực đại của giao tiếp. Nếu tại một thời điểm nào
đó, lưu lượng này đột ngột tăng lên đến 50% hoặc hơn nữa, thì có thể giả định
rằng server đang bị tấn công DoS.

Snort:

Một trong những phần mềm IDS phổ biến hiện nay là Snort [11]. Đây
là một sản phẩm NIDS mã nguồn mở với hệ thống signature database (được
gọi là rule database) được cập nhật thường xuyên bởi nhiều thành viên trong
cộng đồng Internet.
Snort là một ứng dụng IDS hiện đại với ba chức năng chính: nó có thể
phục vụ như là một bộ phận lắng nghe gói tin, lưu lại thông tin gói tin hay là
một hệ thống phát hiện xâm nhập mạng (NIDS). Ngoài ra còn có rất nhiều
chương trình add-on cho Snort để có thể quản lý các file log, các tập luật và
cảnh báo cho quản trị viên khi phát hiện sự xâm nhập hệ thống. Tuy không
phải là phần lõi của Snort nhưng những thành phần này cung cấp rất nhiều
tính năng phong phú để có một hệ thống phát hiện và phòng chống xâm nhập
tốt.
Có rất nhiều cách để triển khai hệ thống Snort, thông thường Snort chỉ
kết hợp với TCP/IP do giao thức này là một giao thức phổ biến của Internet,
mặc dù với các phần tùy chỉnh mở rộng, Snort có thể thực hiện để hỗ trợ các
giao thức mạng

khác, chẳng hạn như Novell’s IPX. Vì vậy, Snort chủ yếu phân tích và cảnh

30
31
báo trên giao thức TCP/IP.

2.3.2 Ứng dụng hệ thống IDS phát hiện lỗ hổng bảo mật Website

Hệ thống phát hiện xâm nhập IDS có khả năng ứng dụng phát hiện lỗ
hổng bảo mật Website dựa trên các dữ liệu thu thập được kết hợp với các kỹ
thuật phát hiện tấn công.

(1) Phát hiện tấn công dựa trên dấu hiệu

Phát hiện tấn công dựa trên dấu hiệu [4] là quá trình so sánh các sự kiện
giám sát với các dấu hiệu để xác định các nguy cơ có thể là một tấn công.
Trong đó dấu hiệu là các sự kiện, hành động tương ứng với các mối đe dọa
được biết đến. Ví dụ:

- Một hành động cố gắng truy cập vào hệ thống với username “root” là
hành động vi phạm tới chính sách bảo mật của công ty, tổ chức.

- Một e-mail với tiêu đề “ Free picture!” và file đính kèm là


“freepics.exe” có các đặc điểm được biết đến thường là của phần mềm độc
hại.

- Mục ghi log hệ điều hành với mã trạng thái là 645 được biết đến là sự
kiểm tra máy trạm đã bị vô hiệu hóa.

Phát hiện tấn công dựa trên dấu hiệu là hữu hiệu để phát hiện các tấn
công đã được biết đến và đã được định nghĩa, nhưng sẽ kém hiệu quả với các
tấn công chưa được định nghĩa trước đó, hoặc các tấn công được che giấu
bằng kỹ thuật lẩn tránh, và nhiều biến thể khác của các tấn công đã được biết
đến. Ví dụ: nếu một kẻ tấn công thay đổi hình thức thể hiện trong ví dụ trước
sử dụng tên file khác như “freepic2.exe”, và chuỗi tìm kiếm cho
“freepics.exe” sẽ không trùng khớp.

(2) Phát hiện tấn công dựa trên bất thường

Phương pháp phát hiện dựa trên các bất thường [4] là quá trình so sánh
tập các hành động được coi là bình thường và các hành vi được giám sát để
31
xác định sựsai lệch. Nếu phát hiện một sai lệch đủ lớn giữa tập hành vi bình
thường và tập hành vi hiện tại, một cảnh báo về nguy cơ tấn công hoặc đột
nhập có thể được gửi đi.

Kỹ thuật này nhấn mạnh việc đo đếm các hoạt động bình thường trên
mạng. Các mức ngưỡng về các hoạt động bình thường được đặt ra. Nếu có sự
bất thường nào đó như đǎng nhập với số lần quá quy định, số lượng các tiến
trình hoạt động trên CPU, số lượng một loại gói tin được gửi vượt quá mức ...
thì hệ thống có dấu hiệu bị tấn công.

Hệ thống phát hiện tấn công sử dụng phương pháp phát hiện dựa trên bất
thường trước hết xây dựng hồ sơ (profile) miêu tả các hành vi bình thường
của người dùng, máy trạm, kết nối mạng hoặc ứng dụng. Hồ sơ này được xây
dựng thông qua việc giám sát các hành vi điển hình trong một giai đoạn thời
gian. Ví dụ: một hồ sơ cho một mạng có thể chỉ ra hoạt động dịch vụ Web sử
dụng trung bình 13% băng thông mạng trong suốt một ngày làm việc. Hệ
thống phát hiện đột nhập sau đó sử dụng phương pháp thống kê để so sánh
các đặc trưng của các hành vi hiện tại với một ngưỡng liên quan đến hồ sơ,
như phát hiện khi dịch vụ Web sử dụng băng thông lớn hơn đáng kể so với
mức sử dụng bình thường ghi trong hồ sơ và cảnh báo người quản trị về bất
thường đã phát hiện. Hồ sơ có thể được phát triển cho nhiều thuộc tính hành
vi, như số lượng email được gửi bởi một người, số lần đăng nhập sai cho một
máy trạm, và mức sử dụng bộ xử lý trên một máy trạm trong một khoảng thời
gian.

Lợi ích lớn nhất của phương pháp phát hiện dựa trên sự bất thường là có
thể nhận biết những tấn công, đột nhập mới hoặc chưa biết. Chẳng hạn một
máy tính bị nhiễm một loại phần mềm độc hại mới và phần mềm độc hại này
có khả năng sử dụng nhiều tài nguyên của máy tính, gửi một lượng lớn e-
mail, thiết lập nhiều kết nối mạng, và thực hiện các hành vi khác, tạo ra sự
khác biệt đáng kể với các hồ sơ về các hành vi đã được thiết lập cho máy tính
đó.

Một hồ sơ ban đầu được sinh ra trong một khoảng thời gian được gọi là

32
33
giai đoạn huấn luyện. Hồ sơ cho phát hiện dựa trên sự bất thường có thể tĩnh
hoặc động.

Sau khi được tạo ra, một hồ sơ tĩnh không thay đổi được trừ khi hệ thống
phát hiện tấn công chỉ định tạo ra một hồ sơ mới. Do hệ thống và mạng thay
đổi theo thời gian, tập các hành vi bình thường cũng thay đổi, một hồ sơ tĩnh
sẽ trở lên không chính xác, do đó hồ sơ tĩnh cần được tái sinh định kỳ. Hồ sơ
động không có vấn đề này do hồ sơ động có thể được cập nhật sử dụng các sự
kiện được giám sát. Tuy nhiên, chúng nhạy cảm với sự lẩn tránh của những kẻ
tấn công. Chẳng hạn, một kẻ tấn công có thể thực hiện số lượng nhỏ các hành
vi độc hại, sau đó tăng dần tần suất và số lượng các hoạt động. Nếu tốc độ
thay đổi là đủ chậm, hệ thống có thể nghĩ các hành vi phá hoại này là các
hành vi bình thường và đưa vào hồ sơ bình thường.

(3) Phát hiện tấn công dựa trên phân tích trạng thái giao thức

Phương pháp phát hiện dựa trên phân tích trạng thái giao thức [6] là một
quá trình so sánh hồ sơ của các hành vi giao thức tốt cho mỗi trạng thái giao
thức với các sự kiện giám sát được để xác định sự sai lệch. Không giống như
phương pháp dựa trên sự bất thường là sử dụng hồ sơ của máy trạm hoặc của
mạng cụ thể, phương pháp dựa trên trạng thái của giao thức phân tích những
phản hồi trên hồ sơ của nhà phát triển cung cấp chung để xác định một giao
thức cụ thể nên sử dụng hay không. Thuật ngữ "trạng thái" trong phương pháp
này có ý nghĩa là hệ thống phát hiện tấn công hiểu biết và có khả năng giám
sát trạng thái của mạng, phương tiện và các giao thức ứng dụng. Chẳng hạn
khi một người dùng bắt đầu một phiên giao thức trao đổi file (FTP), phiên làm
việc sẽ được khởi tạo trong trạng thái không xác thực. Do người dùng chưa
được xác thực nên họ chỉ có thể thực hiện một vài câu lệnh trong trạng thái
này như là xem các thông tin hỗ trợ hoặc cung cấp tên tài khoản và mật khẩu.
Sự quan trọng của việc hiểu trạng thái là sự kết hợp giữa yêu cầu và đáp ứng,
như vậy khi một xác thực FTP xuất hiện, hệ thống phát hiện tấn công có thể
xác định quá trình này có thành công hay không thông qua mã trạng thái của
phản hồi được trả về. Khi người dùng xác thực thành công, phiên làm việc

33
chuyển sang trạng thái đã xác thực và người dùng có thể thực thi các câu
lệnh. Việc thực thi các

câu lệnh trong trạng thái không được xác thực có thể bị nghi ngờ là tấn công
xâm nhập, những thực thi trong trạng thái đã xác thực thì được coi là hợp lệ.

Phương pháp phát hiện dựa trên phân tích trạng thái giao thức có thể xác
định thứ tự không đúng của các câu lệnh, ví dụ phát hành cùng một lệnh liên
tục hoặc phát hành một lệnh mà không phát hành lệnh mà nó phụ thuộc. Một
tính năng khác của theo dõi trạng thái trong phương pháp này là cho các giao
thức thực thi có xác thực, hệ thống phát hiện tấn công có thể giám sát việc xác
thực được dùng cho mỗi phiên, và ghi lại việc xác thực được sử dụng cho các
hành động mờ ám. Điều này rất hữu ích để đánh giá một hành động nghi ngờ.
Một vài hệ thống phát hiện tấn công có thể sử dụng thông tin xác thực để định
nghĩa các hành động có thể chấp nhận khác nhau của các lớp người dùng hoặc
của các người dùng cụ thể.

Trong hình 2.10 dưới đây mô tả mô hình ứng dụng hệ thống IDS phát
hiện lỗ hổng bảo mật Website.

Hình 2.10: Mô hình hệ thống IDS phát hiện lỗ hổng bảo mật

2.3.3 Nhận xét

34
35
Giải pháp sử dụng hệ thống IDS phát hiện lỗ hổng bảo mật Website dựa
trên các cảnh báo có sự xâm nhập trái phép. Đây là giải pháp khá hữu hiệu
nhằm phát hiện các lỗ hổng bảo mật cho hệ thống Website đang hoạt động.

Tuy nhiên, việc phân loại cụ thể các lỗ hổng bảo mật cho hệ thống
Website. Vì vậy, cần cs các giải pháp ứng dụng khác để khắc phục nhược
điểm này.

2.4 Kết luận chương 2

Trong chương 2 này đã khảo sát tổng quan về phát hiện lỗ hổng bảo mật
website. Báo cáo đã đề xuất mô hình tổng quát phát hiện lỗ hổng bảo mật
website. Từ đó, đã nghiên cứu các giải pháp phát hiện lỗ hổng bảo mật
website bao gồm: giải pháp sử dụng công cụ phần mềm, giải pháp sử dụng hệ
thống IDS để có kịp các biện pháp khắc phục cụ thể.
Trên cơ sở các kết quả đã đạt được của chương 2, trong chương tiếp theo
ta sẽ tiến hành thử nghiệm việc tìm các lỗ hổng bảo mật website và thời gian
thực của nó bằng ứng dụng Vega trong Kali Linux trên các trang Website
hiện hành.

35
CHƯƠNG 3. THỰC NGHIỆM

3.1 Cách cài đặt VEGA trên nền tảng Kali Linux

3.1.1 Chuẩn bị môi trường Kali - Linux trên Vmware 16 Pro


- Truy cập trang https://www.kali.org/get-kali/#kali-bare-metal để tải file
iso

Hình 3.1
- Mở Vmware và chọn Create a New Virtual Machine , chọn Typical và
nhấn Next
- Ở phần Guest Operating chọn Installer disc image file (ISO) và tìm đến
đường dẫn file Kali iso vừa tải rồi nhấn Next.

36
37

Hình 3.2

- Ở phần Select a Guest Operating System chọn Linux với version Debian
9.x 64-bit

Hình 3.3
- Sau đó nhấn Next liên tiếp đến khi xuất hiện Finish để thực hiện cài Kali
Linux

37
Hình 3.4

3.1.2 Tiến hành cài đặt vega

3.1.2.1 Cài đặt môi trường jdk 8


- Truy cập https://www.oracle.com/java/technologies/downloads/#java8 để tải

file jdk-8u333-linux-x64.tar.gz

38
39

Hình 3.5
- Mở terminate thực hiện chuyển đến thư mục Download để chạy file jdk-
8u333
Thực hiện lệnh:
cd Download
cd /usr/lib/jvm
sudo tar -xvzf ~/Downloads/ jdk-8u333-linux-x64.tar.gz

Hình 3.6
- Tiếp đến cần thêm các dòng lệnh trong /etc/environment để có thể thực
hiện chuyển sang môi trường jdk8
Thực hiện lệnh :
sudo nano /etc/environment
Thêm dòng :
::/usr/lib/jvm/jdk1.8.0_333/bin:/usr/lib/jvm/jdk1.8.0_333/db/bin:/usr/lib/jvm/
jdk1.8.0_333/jre/bin
J2SDKDIR="/usr/lib/jvm/jdk1.8.0_333"
J2REDIR="/usr/lib/jvm/jdk1.8.0_333/jre"
JAVA_HOME="/usr/lib/jvm/jdk1.8.0_333"
DERBY_HOME="/usr/lib/jvm/jdk1.8.0_333/db"
vào cuối dòng PATH=/../..

39
Hình 3.7
Sau đó ấn ctrl O + Enter + ctrl X để lưu và thoát.
Thực hiện các lệnh để hoàn tất việc cài JDK 8 :
sudo update-alternatives --install "/usr/bin/java" "java"
"/usr/lib/jvm/jdk1.8.0_333/bin/java" 0
sudo update-alternatives --install "/usr/bin/javac" "javac"
"/usr/lib/jvm/jdk1.8.0_333/bin/javac" 0
sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_333/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/jdk1.8.0_333/bin/javac
update-alternatives --list java
update-alternatives --list javac

40
41

Hình 3.8

Khi đã cài xong JDK 8 ta cần chuyển đổi từ JDK 11 sang JDK 8 để có thể chạy
được Vega. Ta thực hiện lệnh:
sudo update-alternatives --config java
Và chọn mode 2 để chuyển sang JDK 8

41
Hình 3.9

3.1.2.2 Cài đặt libwebkitgtk

- Trước khi có thể cài libwebkitgtk ta cần cài file sources.list


- Thực hiện tạo file deb9.list
sudo nano /etc/apt/sources.list.d/deb9.list
Sau đó lưu các dữ liệu vào file :
deb http://deb.debian.org/debian/ stretch main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

Hình 3.10
Nhấn tổ hợp Ctrl S + Ctrl X để lưu và thoát
Sau đó cần update lại và thực hiện cài libwwebkitgtk
sudo apt-get update
sudo apt-get install libwebkitgtk-1.0

3.1.2.3 Cài đặt vega

- Tạo và mở thư mục Respon để lưu file VegaBuild-


linux.gtk.x86_64.zip

42
43

Hình 3.11

Mở link https://subgraph.com/vega/download.html chọn dowload để lấy copy


link download phiên bản Linux GTK 64-bit Intel(sig)

Hình 3.12

43
- Dùng Wget để tải vega từ https://subgraph.com/

wget https://support.subgraph.com/downloads/VegaBuild-linux.gtk.x86_64.zip

Hình 3.14

Thực hiện unzip file VegaBuild-linux.gtk.x86_64.zip


unzip VegaBuild-linux.gtk.x86_64.zip

Hình 3.9

Để mở vega ta thực hiện :

Hình 3.16

44
45

3.2 Tiến hành :

Chúng ta sẽ tiến hành quét trên một số trang Web hiện hành xem sẽ thu
được kết quả như thế nào.

- Thực hiện quét các trang web bằng vega:


1. Trang mạng xã hội Facebook
https://www.facebook.com/
2. Trang web của ngân hàng quân đội MBBANK
https://mbbank.com.vn
3. Trang web của sàn thương mai điện tử TIKI
https://tiki.vn
4. Trang web quản lý sinh viên của trường Học Viện Kỹ Thuật Mật Mã
http://qldt.actvn.edu.vn
5. 1 số trang web dùng để thực hành khai thác lỗi
http://testphp.vulnweb.com
http://demo.testfire.net

3.3 Kết quả thực nghiệm :


- Kết quả khi quét các trang web
1. Trang mạng xã hội nổi tiếng Facebook
https://www.facebook.com/
2. Trang web của ngân hàng quân đội MBBANK
https://mbbank.com.vn

45
3. Trang web của sàn thương mai điện tử TIKI
https://tiki.vn

4. Trang web quản lý sinh viên của trường Học Viện Kỹ Thuật Mật Mã
http://qldt.actvn.edu.vn

46
47

5. 1 số trang web dùng để thực hành khai thác lỗi


http://testphp.vulnweb.com

47
http://demo.testfire.net

Trang web thực nghiệm Thời gian thực Kết quả thực nghiệm thu được
nghiệm
https://www.facebook.com/
https://mbbank.com.vn
https://tiki.vn
http://qldt.actvn.edu.vn
http://testphp.vulnweb.com 6 phút 52 giây Cross Site Scripting ( 11 )
SQL Injection ( 8 )
MySQL Error Detected –
Possible SQL Injection (3)

http://demo.testfire.net 3 phút 17 giây

48
49

3.4 Kết quả và đánh giá

Trong chương 3 này , đã nghiệm thu thử nghiệm các lỗ hổng thường gặp
trên một số Website thông dụng hiện nay, thời gian thực quét chúng bằng
phần mềm Vega . Từ đó sẽ xây dựng ra các giải pháp kịp thời, cách sử
dụng để truy cập sử dụng các trang Website một cách hợp lý cho các nhân
và các doanh nghiệp.

49
TÀI LIỆU THAM KHẢO
Trang Web

[1] http://bkav.com.vn/
[2] https://github.com/subgraph/Vega/wiki/Vega-Scanner
[3] https://subgraph.com/vega/
[4] https://www.mi2.com.vn/cac-cong-cu-quet-lo-hong-bao-mat-website-tot-nhat-hien-
nay/
[5] “Phân loại và phát hiện lỗ hổng của hệ thống thông tin”, Tạp chí An toàn

thông tin 2014


[6] Jason Weir (2014) - “Building a Debian\Snort based IDS”, McGraw-Hill.
[7] http://vncert.gov.vn

50
51

Hà Nội, ngày 24 tháng 8 năm 2022


XÁC NHẬN CỦA GIẢNG VIÊN HƯỚNG DẪN

51
52
53

53
54

You might also like