ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Ngọc Khánh
XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH
BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB
LUẬN VĂN THẠC SĨ
Hà Nội – 2018
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN NGỌC KHÁNH
XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH
BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật Phần mềm
Mã số: 60480103
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hướng dẫn khoa học: Tiến sĩ Lê Quang Minh
Hà Nội – 2018
Nguyễn Ngọc Khánh
XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB
MỤC LỤC
LỜI MỞ ĐẦU ........................................................................................... 9
CHƯƠNG 1: CÔNG NGHỆ WEB VÀ MỘT SỐ VẤN ĐỀ AN NINH 11
1.1.
Tổng quan về Website ................................................................... 11
1.1.1. Khái niệm Web ........................................................................ 11
1.1.2. Hoạt động của Web................................................................. 11
1.1.3. Trình duyệt Web ...................................................................... 1
2
1.1.4. Địa chỉ URL ............................................................................ 1
2
1.1.5. HTML ..................................................................................... 1
3
1.1.6. Tên miền ................................................................................. 1
4
1.2. Tổng quan về Webserver ............................................................... 15
1.3. Tổng quan về an ninh mạng ........................................................... 16
1.4.
Một số lỗ hổng an ninh trên Website ............................................. 16
1.5. Một số điểm yếu bảo mật và kỹ thuật tấn công Website................. 18
1.5.1. Tấn công SQL Injection .......................................................... 1
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO
SỰ THAY ĐỔI NỘI DUNG TRANG WEB................................................................... 49
3.1. Giới thiệu.................................................................................................................. 49
3.2. Xác định mô hình phát triển.............................................................................. 50
3.3. Khảo sát..................................................................................................................... 51
3.4. Mô tả yêu cầu hệ thống....................................................................................... 52
3.4.1. Các yêu cầu chức năng.............................................................................. 52
3.4.2. Các yêu cầu phi chức năng....................................................................... 53
3.5. Biểu đồ usecase...................................................................................................... 53
3.6. Thiết kế cơ sở dữ liệu........................................................................................... 54
3.7. Công cụ và môi trường phát triển................................................................... 55
3.7.1. Kiến trúc .NET framework........................................................................ 55
3.7.2. Ngôn ngữ C#.................................................................................................. 56
3.7.3. SQLite............................................................................................................... 57
3.8. Xây dựng hệ thống................................................................................................ 57
3.8.1. Hệ thống So sánh thay đổi nội dung mã nguồn web.......................57
3.8.2. Hệ thống chuyển đổi Trang web thành hình ảnh.............................. 59
3.8.3. Hệ thống So sánh thay đổi nội dung hình ảnh trang web.............60
3.8.4. Hệ thống Quản lý thời gian thực............................................................ 60
3.8.5. Hệ thống Lưu dữ liệu.................................................................................. 61
3.9. Thiết kế giao diện.................................................................................................. 62
3.10. Thử nghiệm và những kết quả đạt được..................................................... 64
XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB
DANH MỤC HÌNH ẢNH
Hình 1. Một số Webserver thông dụng................................................................................. 15
Hình 2. Mô hình tấn công SQL Injection............................................................................. 19
Hình 3. Mô hình tấn công XXS (Cross-Site Scripting).................................................. 26
1. Lý do chọn đề tài
Hiện nay, công nghệ thông tin ngày càng phát triển, kéo theo đó là sự phát
triển của mạng máy tính và đặc biệt là internet ngày càng đa dạng và phong phú.
Trên mạng Internet, các tiện ích và dịch vụ đã 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 tiện ích và dịch vụ đó hầu hết đều rất đa dạng
về nội dung và hình thức, chứa đựng rất nhiều thông tin, trong đó không ít thông
tin cần được bảo mật cao bởi tính kinh tế, tính chính xác và tính tin cậy của nó.
Cùng với sự đa dạng và phong phú đó, các hình thức tấn công và phá hoại
mạng cũng ngày càng trở lên tinh vi và phức tạp. Từ thực tế đó, với những người
quản trị mạng hệ thống, nhiệm vụ đảm bảo an toàn hệ thống là hết sức quan trọng
và cần thiết. Xuất phát từ thực tế đó, đề tài sẽ tìm hiểu về một số kiểu tấn công
phổ biến hiện nay và cách phòng chống các loại tấn công đó.
Thông qua việc nghiên cứu một số phương pháp tấn công và cách bảo mật
các loại tấn công đó, tôi mong muốn góp một phần nhỏ vào việc nghiên cứu và
tìm hiểu về các vấn đề phát hiện tấn công làm thay đổi nội dung trang web và đưa
ra cảnh báo sớm có ý nghĩa giúp cho việc duy trì các trang web trên hệ thống
máy chủ được ổn định.
2. Mục tiêu
Mục tiêu của luận văn là nghiên cứu, tìm hiểu tổng quan về website, các
mối đe dọa về an toàn thông tin khi làm việc trên ứng dụng web, hiểu thêm về
các kỹ thuật tấn công và bảo mật website. Từ đó có sự đánh giá một cách tổng
quan, để áp dụng các chính sách về bảo mật website và an toàn dữ liệu cho hệ
thống. Đồng thời xây dựng và phát triển hệ thống phát hiện sớm các tấn công làm
thay đổi nội dung trang web từ đó đưa ra các cảnh báo sớm giúp cho người
9
quản trị web biết được có sự thay đổi bất thường và đưa ra các biện pháp làm cho
liệu là những đường dẫn hay còn gọi là địa chỉ URL, sau đó trình duyệt sẽ gửi
những thông tin yêu cầu đến máy chủ theo địa chỉ đó và hiển thị những kết quả
nhận được lên màn hình máy tính của người dùng. Ngoài ra, trong mỗi trang web
đều có các liên kết siêu văn bản (hyperlink), người sử dụng có thể kết nối với các
tài liệu hoặc các trang web khác theo những liên kết đó, hoạt động này được gọi
là duyệt web
1.1.2. Hoạt động của Web
Thông qua trình duyệt, người và máy chủ sẽ kết nối với nhau bằng địa chỉ
URL. Tùy theo những yêu cầu khác nhau, ứng dụng web sẽ gửi những yêu cầu đó
đến máy chủ, máy chủ sẽ xử lý và gửi dữ liệu về trình duyệt, sau đó người dùng
sẽ nhận được những thông tin hiển thị trên trình duyệt.
- Website tĩnh là website mà người quản trị, hay người sử dụng không thể
tùy ý thay đổi nội dung và hình ảnh, muốn thay đổi cần có kiến thức về HTML
cơ bản để sửa trực tiếp trong mã nguồn vì chúng được viết hoàn toàn dựa trên
nền tảng HTML, CSS.
11
- Website động là website được xây dựng kèm theo một bộ công cụ để
người quản trị có thể tùy biến nội dung dành cho người quản trị có thể dễ dàng
thay đổi nội dung, hình ảnh. Website động thường được thiết kế bưởi những
người lập trình với các công nghệ, ngôn ngữ như PHP, ASP.NET, Java,...
1.1.3. Trình duyệt Web
Như đã nêu, trình duyệt Web là phần mềm cho phép người dùng truy cập
các trang web, tương tác với nội dung các trang web như văn bản, hình ảnh, đoạn
phim, nhạc, trò chơi và các thông tin khác. Trong một trang web có thể chứa
những liên kết tới những nội dung khác hoặc những trang web khác. Để hiển thị
nội dung web, các trang web phải được định dạng dưới dạng HTML.
Trình duyệt web và máy chủ web thường giao tiếp với nhau bằng việc sử
Hiện nay trên thế giới mỗi ngày có rất nhiều tên miền (domain) (thí dụ org)
mới xuất hiện.
1.1.5. HTML
HTML là chữ viết tắt của cụm từ HyperText Markup Language (Ngôn ngữ
đánh dấu siêu văn bản) được sử dụng để tạo một trang web, trên một website có
thể sẽ chứa nhiều trang và mỗi trang được quy ra là một tài liệu HTML. Cha đẻ
của HTML là Tim Berners-Lee, cũng là người khai sinh ra World Wide Web và
chủ tịch của World Wide Web Consortium (W3C – tổ chức thiết lập ra các chuẩn
trên môi trường Internet).
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML
Elements) được quy định bằng các cặp thẻ (tag), các cặp thẻ này được bao bọc
bởi một dấu ngoặc ngọn (ví dụ <html>) và thường là sẽ được khai báo thành một
cặp, bao gồm thẻ mở và thẻ đóng (ví <strong> dụ </strong> và ). Các văn bản
muốn được đánh dấu bằng HTML sẽ được khai báo bên trong cặp thẻ (ví dụ
<strong>Đây là chữ in đậm</strong>). Nhưng một số thẻ đặc biệt lại không có
13
thẻ đóng và dữ liệu được khai báo sẽ nằm trong các thuộc tính (ví dụ như thẻ
<img>).
Một tập tin HTML sẽ bao gồm các phần tử HTML và được lưu lại dưới đuôi
mở rộng là .html hoặc .htm.
Khi một tập tin HTML được hình thành, việc xử lý nó sẽ do trình duyệt web
đảm nhận. Trình duyệt sẽ đóng vai trò đọc hiểu nội dung HTML từ các thẻ bên
trong và sẽ chuyển sang dạng văn bản đã được đánh dấu để đọc, nghe hoặc hiểu
(do các bot máy tính hiểu).
1.1.6. Tên miền
Tên miền là dịch vụ có mục đích chính của là cung cấp một hình thức đại
diện, dùng những tên dễ nhận biết, dễ nhớ thay cho những tài nguyên Internet mà
đa số là những địa chỉ bằng số. Với cách này có thể cho phép bất kỳ tài nguyên
dùng và máy chủ thực hiện thông qua giao thức HTTP. Nội dung phân phối chính
từ máy chủ web là các nội dung định dạng HTML, bao gồm hình ảnh, style
sheets, các đoạn mã script hỗ trợ các nội dung văn bản thô.
Một số Webserver thông dụng hiện nay:
Hình 1. Một số Webserver thông dụng
15
Trước đây, trong những ngày đầu phát triển, có rất nhiều ngôn ngữ lập trình
cho website như JSP, ASP, PHP, ASP.NET... tuy nhiên với những ưu thế vượt trội,
hiện tại có hai ngôn ngữ được dùng phổ biến nhất là PHP và ASP.NET.
1.3. Tổng quan về an ninh mạng
1.3.1. Khái niệm về an toàn và an ninh mạng
Trước đây, nói đến an ninh thông tin người ta thường nói đến các biện pháp
bảo mật vật lý sử dụng để bảo vệ cho những thông tin quan trọng khỏi bị truy cập
trái phép và để bảo vệ nó chống lại thay đổi hoặc tiêu hủy. Các biện pháp như lưu
trữ tài liệu có giá trị trong kết sắt hoặc ở những nơi an toàn à hạn chế việc truy
cập vật lý đến các tài liệu đó. Ngày nay, với sự phát triển của CNTT, sự phổ biến
của máy tính và internet, cách truy cập dữ liệu đã thay đổi, các phương pháp bảo
vệ dữ liệu đã thay đổi đáng kể.
Với một chiếc máy tính thường chỉ yêu cầu các công bảo vệ dữ liệu trên
máy tính đó như phần mềm diệt virus hay phần quyền truy cập hệ thống của
người dùng, nhưng với một hệ thống máy tính nối mạng thì cần đòi hỏi nhiều
hơn, ví dụ như dữ liệu vào hệ thống đó được bảo vệ không chỉ từ truy cập địa
phương mà còn từ các truy cập từ xa trái phép và cần phát hiện và ngăn chặn các
thay đổi dữ liệu trong quá trình truyền giữa các hệ thống. An ninh mạng ở dây
không phải là một quy trình, sản phẩm, hay chính sách mà là sự kết hợp của các
sản phẩm và quy trình có hỗ trợ một chính sách quy định.
không gây mất, hỏng dữ liệu hay chiếm quyền tuy cập bất hợp pháp
- Lổ hổng loại B: các lỗ hổng loại này có thể gây ra hiện tượng người sử
dụng có thêm các quyền bất hợp pháp không cần kiểm tra hợp lệ.
Các lỗ hổng cho phép người sử dụng hệ thố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ệ. Loại lỗ hổng này có mức độ
nguy hiểm trung bình, nó có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.
17
- Lỗ hổng loại A: Các lỗ hổng loại 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, có thể thay đổi, xóa hoặc làm phá hủy
toàn bộ hệ thống.
1.5. Một số điểm yếu bảo mật và kỹ thuật tấn công Website
1.5.1. Tấn công SQL Injection
1.5.1.1. SQL Injection là gì
Khi thiết kế và triển khai hệ thống website trên Internet, nhiều khi người lập
trình vẫn nghĩ rằng bảo đảm an ninh và bảo mật để giảm thiểu khả năng tấn công
của hacker là các vấn đề như: như chọn hệ điều hành, quản lý cơ sở dữ liệu, máy
chủ web sẽ chạy ứng dụng... nhưng ngay cả bản thân website đó cũng có thể có
một lỗ hổng bảo mật lớn. Một trong những lỗ hổng này là SQL Injection.
SQL injection có thể hiểu là một cách tấn công, khi đó những kẻ tấn công
lợi dụng lỗ hổng khi xử lý dữ liệu nhập trong các trang web để "tiêm vào" (inject)
các câu lênh SQL bất hợp pháp và thi hành các câu lệnh đó.
Hậu quả của việc này thường rất nghiêm trọng vì những kẻ tấn công có thể
dựa vào đó thực hiện các câu lệnh thêm, sửa, xóa... trên cơ sở dữ liệu (Lê Đình
Duy, 2003)
.
Thoạt nhìn, đoạn mã dường như không chứa bất cứ một lỗ hổng về an toàn
nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và mật khẩu
hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một lỗi
SQL injection. Chính điều này đã cho phép những kẻ tấn công có thể điều khiển
câu truy vấn tiếp theo sẽ được thực hiện. Ví dụ, nếu nhập chuỗi sau vào trong ô
nhập liệu username và password của trang login.htm là:
' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là: SELECT
* FROM T_USERS WHERE USR_NAME ='' OR ''='' and
XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB
USR_PASSWORD= '' OR ''=''
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và
đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người
dùng đăng nhập hợp lệ.
CODE
Nếu trang tìm kiếm sử dụng đoạn mã trên, kẻ tấn công có thể tìm ra sơ hở
và nhập vào ô tên giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable
WHERE ' '='
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực
hiện thêm lệnh tiếp theo sau từ khóa UNION nữa. Tất nhiên các ví dụ nói trên,
dường như không có gì nguy hiểm, nhưng kẻ tấn công có thể xóa toàn bộ cơ sở
dữ liệu bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DROP TABLE.
+ Dạng tấn công sử dụng câu lệnh INSERT:
Các ứng dụng trên web muốn lưu thông tin người sử dụng thường có chức
năng tạo tài khoảng cho người dùng, người dùng có thể đăng ký thông tin khi tạo
tài khoản hoặc điều chỉnh sau khi đăng ký thành công. Trong những việc này, kẻ
tấn công cũng có thể lợi dụng để tấn công SQL injection khi mà hệ thống bỏ qua
việc kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ, với một
XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB
câu lệnh INSERT có cú pháp: INSERT INTO Table_Name VALUES('V1, 'V2',
- Kiểm soát chặt chẽ dữ liệu nhập vào.
Chúng ta có thể kiểm soát chặt chẽ dữ liệu nhập vào bằng cách bảo vệ các
câu lệnh SQL như kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ các đối
tượng Request (Request, Request.QueryString, Request.Cookies, Request.Form,
Request.ServerVariables). Ví dụ, ta có thể giới hạn chiều dài của chuỗi nhập liệu,
hoặc xây dựng hàm EscapeQuotes để thay thế các dấu nháy đơn bằng 2 dấu nháy
đơn như:
CODE
Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một
giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp.
Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không bằng
hàm IsNumeric(). Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa
nguy hiểm như: ;, --, select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía
người dùng để hạn chế các tấn công dạng này:
CODE