ĐẠ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

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu khoa học độc lập của riêng

tôi. Các số liệu sử dụng phân tích trong luận văn có nguồn gốc rõ ràng, đã công

bố theo đúng quy định. Các kết quả trong luận văn do tôi tự tìm hiểu, phân tích

một cách trung thực, khách quan và phù hợp với thực. Các kết quả này chưa

từng được công bố trong bất kỳ nghiên cứu nào khác.

Tôi xin hoàn toàn chịu trách nhiệm với lời cam đoan của mình. HỌC VIÊN

Nguyễn Ngọc Khánh

3

LỜI CẢM ƠN

Em xin chân thành cảm ơn Khoa Công nghệ thông tin trường Đại học Công

nghệ, Đại học Quốc gia Hà Nội đã tạo điều kiện thuận lợi cho em học tập và

thực hiện luận văn tốt nghiệp này.

Em xin bày tỏ lòng biết ơn sâu sắc đến thầy Lê Quang Minh đã tận tình

hướng dẫn, chỉ bảo em trong quá trình thực hiện luận văn này.

Em xin chân thành cảm ơn quý thầy cô trong Khoa Công nghệ thông tin đã

tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm

học vừa qua.

Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho

phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót. Em rất mong nhận

được sự góp ý, tận tình chỉ bảo của quý thầy cô.

HỌC VIÊN

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 ...................................................................... 12

1.1.4. Địa chỉ URL ............................................................................ 12

1.1.5. HTML ..................................................................................... 13

1.1.6. Tên miền ................................................................................. 14

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 .......................................................... 18

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

1.5.3. Tấn công từ chối dịch vụ DOS (Denial of Service) .................. 27

CHƯƠNG 2: TẤN CÔNG THAY ĐỔI NỘI DUNG VÀ MỘT SỐ THUẬT TOÁN PHÁT HIỆN SỰ THAY ĐỔI ............................................. 32

2.1. Khái niệm Tấn công thay đổi nội dung (Deface website) ............... 32

2.2. Vì sao website bị Deface? .............................................................. 32

2.3. Thực trạng tấn công thay đổi nội dung tại Việt Nam ...................... 33

2.4. Làm thế nào để phát hiện bị Deface? ............................................. 35

2.5. Các bước xử lý khi phát hiện bị Deface ......................................... 35

2.6. Một số lời khuyên để website an toàn hơn ..................................... 37

2.7. Một số thuật toán phát hiện sự thay đổi.......................................... 38

2.7.1. Hàm băm ................................................................................ 38

2.7.2. Thuật toán đối sánh chuỗi ....................................................... 41

2.7.3. Dấu vân tay tài liệu (Document Fingerprint) .......................... 42

5

2.7.4. Thuật toán Rabin Fingerprint ................................................. 43

2.7.5. Thuật toán Rabin Fingerprint cải tiến ..................................... 45

2.7.6. Thuật toán tìm sự khác nhau của hai văn bản "An O(ND) Difference Algorithm" .............................................................................. 46

2.7.7. Thuật toán tìm sự khác nhau của hai hình ảnh ........................ 47

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

Hình 4. Một mô hình tấn công từ chối dịch vụ DOS ......................................... 28

Hình 5. Mô hình tấn công SYNFlood Attack .................................................... 30

Hình 6. Giao diện Website Sở KH&CN BR- VT bị tấn công ........................... 34

Hình 7. Giao diện Website sân bay Tuy Hòa bị tấn công .................................. 34

Hình 8. Sơ đồ Merkel-Damgard ....................................................................... 40

Hình 9. Mô tả thuật toán Rabin Fingerprint ...................................................... 45

Hình 10. Minh hoạ cải tiến giải thuật ............................................................... 46

Hình 11. Mô hình thác nước ............................................................................. 51

Hình 12. Biểu đồ usecase ................................................................................. 53

Hình 13. Biểu đồ trình tự kiểm tra trang web ................................................... 54

Hình 14. Biểu đồ trình tự so sánh nội dung ...................................................... 54

Hình 15. Giao diện phần mềm .......................................................................... 62

Hình 16. Giao diện thêm trang web .................................................................. 63

Hình 17. Giao diện thêm so sánh sự khác nhau về hình ảnh ............................. 63

Hình 18. Giao diện thêm so sánh sự khác nhau của mã nguồn .......................... 64

7

DANH MỤC BẢNG

Bảng 1. Lịch sử phát triển .NET framework ......................................................... 56

Bảng 2. Kết quả thử nghiệm lần 1 ........................................................................ 65

Bảng 3. Kết quả thử nghiệm lần 2 ........................................................................ 65

Bảng 4. Kết quả thử nghiệm lần 3 ........................................................................ 65

Bảng 5. Kết quả thử nghiệm tại máy tính của trường THCS Dịch Vọng Hậu ....... 66

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

LỜI MỞ ĐẦU

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 hệ thống bảo mật tốt hơn.

3. Bố cục luận văn:

Chương 1: Tổng quan về website.

Trong chương 1 luận văn nêu lên một số các khái niệm cơ bản về web, thực

trạng an ninh Web trên thế giới và tại Việt Nam, một số lỗ hổng an ninh trên

Website, một số điểm yếu bảo mật và kỹ thuật tấn công Website.

Chương 2: Tấn công thay đổi nội dung và một số thuật toán phát hiện sự

thay đổi

Trong chương 2 luận văn nêu khái niệm tấn công thay đổi nội dung,

nguyên nhân và cách khắc phục cùng với một số thuật toán phát hiện sự thay đổi

đó.

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

nội dung trang web.

Trong chương này, dựa trên những kiến thức ở chương 1 và chương 2, tác

giả đã mô tả các bước để xây dựng hệ thống giám sát những thay đổi về nội

dung trang web và đưa ra cảnh báo kịp thời khi phát hiện có sự thay đổi.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

CHƯƠNG 1: CÔNG NGHỆ WEB VÀ MỘT SỐ VẤN ĐỀ AN NINH

1.1. Tổng quan về Website

1.1.1. Khái niệm Web

Web là viết tắt của World Wide Web, là mạng lưới toàn cầu mà mọi người

có thể truy cập (đọc và viết) qua máy tính hoặc các thiết bị kết nối với mạng

Internet. Thuật ngữ này thường được hiểu nhầm là từ đồng nghĩa với chính thuật

ngữ Internet, nhưng thực ra web chỉ là một trong các dịch vụ chạy trên Internet

(Theo wikipedia.org).

Các dữ liêu trang web được lưu trữ trong hệ thống các siêu máy chủ nối

mạng Internet. Để xem được các trang web, người dùng cần sử dụng một

chương trình được chuyên cho việc này gọi là trình duyệt web. Chương trình sẽ

nhận dữ 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ử

dụng giao thức HTTP để truyền thông tin trang web. HTTP được sử dụng rộng

rãi nhất là HTTP/1.1. Các trang được định vị bằng cách thức của một URL (bộ

định vị tài nguyên chung), được coi như là một địa chỉ, bắt đầu bằng cụm http:

để truy cập HTTP.

Định dạng của một trang web thường là file HTML (ngôn ngữ đánh dấu

siêu văn bản), sử dụng giao thức HTTP và sử dụng kiểu nội dung MIME. Hầu

hết các trình duyệt đều hỗ trợ nhiều định dạng file khác ngoài HTML, như các

định dạng ảnh JPEG, GIF, PNG, PDF... ngoài ra nếu sử dụng các plug-in, các

định dạng có thể mở rộng để hỗ trợ nhiều hơn.

Một số trình duyệt web phổ biến hiện nay bao gồm Internet Explorer,

Mozilla Firefox, Safari, Google Chrome, Opera,…

1.1.4. Địa chỉ URL

URL là viết tắt của Uniform Resource Locator (dịch là Định vị Tài nguyên

thống nhất), URL dùng trong Internet và để tham chiếu tới tài nguyên nào đó, nó

mang lại khả năng liên kết cho các trang mạng. Các tài nguyên nhau sử dụng địa

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

chỉ để tham chiếu, đó là URL, còn tên gọi nữa là địa chỉ mạng, liên kết mạng

hay gọn là liên kết.

Mỗi URL là một dạng của ULI, và chúng đều tuân theo tiêu chuẩn cú pháp,

gồm có nhiều phần được liệt kê dưới đây:

- URI scheme hay phương pháp truy cập thường là tên giao thức (ví dụ:

http, ftp) nhưng cũng có thể là một cái tên khác (ví du: news, mailto).

- Tên máy chủ (ví dụ: vi.wikipedia.org)

- Chỉ định thêm cổng (có thể không cần)

- Đường dẫn tuyệt đối của tài nguyên (ví dụ: trang/muc)

- Các truy vấn (có thể không cần)

- Chỉ định mục con (có thể không cần)

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ụ ) và thường là sẽ được khai báo thành

một cặp, bao gồm thẻ mở và thẻ đóng (ví dụ 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ụ

Đây là chữ in đậm). 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ẻ

).

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 nào nói chung, website nói riêng có thể được di chuyển đến một địa chỉ

vật lý khác trong cấu trúc liên kết địa chỉ mạng, có thể là toàn cầu hoặc chỉ cục

bộ trong một mạng intranet. Việc dịch từ các tên miền sang địa chỉ IP và ngược

lại là do hệ thống DNS trên toàn cầu thực hiện (Theo wikipedia.org).

Với việc sử dụng các địa chỉ dạng chữ cái thay cho các địa chỉ IP, tên miền

cho phép người dùng Internet có thể nhớ dễ dàng và dễ dàng tìm kiếm các trang

web. Ngoài ra, tính uyển chuyển của mình, trong hệ thống tên miền, nhiều địa

chỉ IP có thể cùng được gán cùng vào một tên miền, và ngược lại, nhiều tên

miền đều cùng chỉ đến một địa chỉ IP. Theo quy định, một tên miền chỉ có thể có

tối đa 67 ký tự, các ký tự đó chỉ gồm các chữ cái, chữ số và 1 vài ký tự đặc biệt.

Phân loại theo miền mở rộng, một số tên miền mở rộng thông dụng:

.com: Dùng cho các tổ chức, công ty thương mại.

.net: Dùng cho các tổ chức, công ty về mạng, dịch vụ mạng.

.org: Dùng cho các tổ chức phi lợi nhuận.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

.gov: Dùng cho các tổ chức chính phủ.

.edu: Dùng cho các tổ chức giáo dục, trường học.

.biz: Dùng cho các công ty thương mại trực tuyến.

1.2. Tổng quan về Webserver

Webserver (máy chủ web) là từ được dùng để chỉ phần mềm máy chủ, hoặc

phần cứng dành riêng để chạy các phần mềm trên máy chủ, để từ đó có thể cung

cấp các dịch vụ World Wide Web. Một máy chủ web xử lí các yêu cầu (request)

từ các client (trong mô hình server - client) thông qua giao thức HTTP và một số

giao thức liên quan khác.

Chức năng cơ bản nhất của máy chủ web là lưu trữ, xử lí và phân phối nội

dung các trang web đến khách hàng, cụ thể ở đây là máy tính người dùng, hay

còn gọi là client trong mô hình server-client. Giao tiếp giữa của máy tính người

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.

1.3.2. Sự cần thiết phải bảo vệ thông tin

Trong thời đại công nghệ thông tin, bất cứ doanh nghiệp hay tổ chức nào

cũng có các yếu tố quan trong, cần được bảo vệ như:

- Tài nguyên: con người, hệ thống và đường truyền.

- Dữ liệu.

- Danh tiếng của công ty.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Nếu không thực sự xác định được tầm quan trọng của vấn đề an toàn thông

tin thì khi gặp phải sự cố, tác hại đến doanh nghiệp không nhỏ:

- Tốn kém chi phí.

- Tốn kém thời gian.

- Ảnh hưởng đến tài nguyên hệ thống.

- Ảnh hưởng đến danh dự, uy tín của doanh nghiệp.

- Mất cơ hội kinh doanh.

1.4. Một số lỗ hổng an ninh trên Website

Các lỗ hổng bảo mật có trên một hệ thống là các điểm yếu mà dựa vào đó,

kẻ tấn công có thể tấn công hệ thống, thêm quyền hoặc cho phép các truy nhập

không hợp pháp vào hệ thống. Các lỗ hổng bảo mật có thể ở nhiều nơi trong hệ

thống, có thể ở ngay trong các dịch vụ, tiện ích như web, mail, file... hoặc ở

ngay trong các ứng dụng, ngay trên hệ điều hành.

Có nhiều tổ chức khác nhau đã tiến hành phân loại các dạng lỗ hổng. Bộ

quốc phòng Mỹ đã nghiên cứu và phân loại các lỗ hổng bảo mật trên hệ thống

thành các loại:

- 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 từ chối dịch vụ theo (DoS - Dinal of Services). Loại lỗ hổng này có

mức độ nguy hiểm thuộc loại thập, đa phần chỉ ảnh hưởng đến tốc độ và chất

lượng của dịch vụ, nặng hơn có thể làm gián đoạn hoạt động của hệ thống,

nhưng 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)

.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Hình 2. Mô hình tấn công SQL Injection

1.5.1.2. Các dạng tấn công bằng SQL Injection

SQL Injection có 4 dạng tấn công thường gặp, đó là: sử dụng câu lệnh

INSERT, sử dụng câu lệnh SELECT, vượt qua kiểm tra lúc đăng nhập, sử dụng

các stored-procedures.

+ Dạng tấn công vượt qua kiểm tra đăng nhập:

Đây là dạng tấn công mà tin tặc có thể vượt qua các trang đăng nhập, làm

được điều này nhờ vào việc khai thác lỗi khi dùng các câu lệnh SQL thao tác

trên cơ sở dữ liệu của ứng dụng web.

Một ví dụ điển hình, thông thường khi cho phép người dùng truy cập vào

các trang web được bảo mật, một hệ thống thường xây dựng trang đăng nhập để

yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người

dùng nhập thông tin, hệ thống sẽ tiến hành kiểm tra tên đăng nhập cùng với mật

khẩu có hợp lệ hay không để quyết định cho phép thực hiện tiếp hay không.

Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển

thị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người

dùng.

19

Ví dụ:

CODE

Username:

Password:

CODE

<%

Dim vUsrName, vPassword, objRS, strSQL

vUsrName = Request.Form("fUSRNAME")

vPassword = Request.Form("fPASSWORD")

strSQL = "SELECT * FROM T_USERS " & _

"WHERE USR_NAME=' " & vUsrName & _

" ' and USR_PASSWORD=' " & vPassword & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

If (objRS.EOF) Then

Response.Write "Invalid login."

Else

Response.Write "You are logged in as " & objRS("USR_NAME")

End If Set objRS = Nothing %>

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ệ.

+ Dạng tấn công sử dụng câu lệnh SELECT:

Đây là dạng tấn công phức tạp, kẻ tấn công thường có kiến thức về cơ sở

dữ liệu và có khả năng tìm ra các sơ hở trong thông báo lỗi của hệ thống, từ đó

làm tiền đề để tấn công. Xét một ví dụ rất thường gặp trong các website về tin

tức. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy

vấn nội dung của tin có ID này. Mã nguồn cho chức năng này thường được viết

khá đơn giản theo dạng.

CODE

<%

Dim vNewsID, objRS, strSQL

vNewsID = Request("ID")

strSQL = "SELECT * FROM TNEWS WHERE NEWS_ID =" &

vNewsID 3

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin

có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên, giống

như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection

khác.

Kẻ tấn công có thể thay thế ID mặc định bằng cách gán một giá trị khác

cho ID đó, đó là cách khởi đầu cuộc tấn công, ví dụ như: abc OR 1=1, câu lệnh

truy vấn SQL lúc này sẽ là câu lệnh tìm kiếm tất cả từ bảng dữ liệu vì nó sẽ có

dạng:

21

SELECT * FROM T_NEWS WHERE NEWS_ID=abc or 1=1

Một trường hợp khác, ví dụ như trang tìm kiếm, đây là trang cho phép

người dùng tìm kiếm các thông tin như họ, tên, ngày sinh..., ví dụ:

CODE

<%

Dim vAuthorName, objRS, strSQL

vAuthorName = Request("fAUTHOR_NAME")

strSQL = "SELECT * FROM TAUTHORS WHERE

AUTHOR_NAME =' " & _

vAuthorName & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

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',

'V3').

Nếu đoạn mã có dạng:

CODE

<%

strSQL = "INSERT INTO TableName VALUES(' " & strV1

& " ', ' " _ & strV2 & " ', ' " & strV3 & " ') "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

Set objRS = Nothing

%>

Thì sẽ bị lỗi SQL injection, để chứng minh điề này, trong trường thứ nhất

ta nhập: ' + (SELECT TOP 3 FieldName FROM Table_Name) + '. Khi này máy

sẽ thực hiện câu lệnh truy vấn: INSERT INTO TableName VALUES(' ' +

(SELECT TOP 3 FieldName FROM Table_Name) + ' ', 'aaaa', 'bbbbb'). Kết quả

nhận được ngoài lệnh xem thông tin, máy còn thực hiện một lệnh nữa đó là:

SELECT TOP 3 FieldName FROM Table_Name.

1.5.1.3. Cách phòng chống tấn công SQL

Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập

trình viên phát triển ứng dụng web khi xử lí các dữ liệu nhập vào để xây dựng

câu lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào môi trường và cách

cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu

cơ sở dữ liệu - owner) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ

liệu, tạo các bảng dữ liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản

trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị cơ sở dữ liệu và với quyền

hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để

điều khiển hệ thống của bạn. Để phòng tránh, ta có thể thực hiện ở hai mức:

23

- 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

<%

Function EscapeQuotes(sInput)

sInput = replace(sInput, " ' ", " ' ' ")

EscapeQuotes = sInput

End Function

%>

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

<%

Function KillChars(sInput)

dim badChars

dim newChars

badChars = array("select", "drop", ";", "--", "insert", "delete",

"xp_")

newChars = strInput

for i = 0 to uBound(badChars)

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

newChars = replace(newChars, badChars(i), "")

next

KillChars = newChars

End Function

%>

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

1.5.2.1. XSS là gì

XSS là viết tắt của Cross-Site Scripting, đây là một kĩ thuật tấn công mà kẻ

tấn công sẽ chèn vào các website động những đoạn mã có thể thực thi một câu

lênh bất hợp pháp. Các đoạn mã đó thường được viết bằng JavaScript, DHTML,

JScript và cũng có thể là cả các thẻ HTML.

Hiện nay, XSS là kỹ thuật tấn công khá phổ biến, đây cũng là một vấn đề

bảo mật đáng quan tâm của những người phát triển web cũng như của những

người sử dụng. Ngay cả đối với những trang như www.fbi.gov, www.ebay.com,

www.yahoo.com cũng từng bị lỗi XSS. Vì vậy, khi mà những trang web cho

phép người dùng đăng những thông tin đều có thể tiềm ẩn các lỗi XSS nếu

không có sự kiếm soát chặt chẽ.

Cũng giống như SQL Injection hay Source Injection, về mặt cơ bản XSS

cũng là các yêu cầu được gửi từ các máy trạm tới máy chủ nhằm chèn vào các

thông tin vượt quá tầm kiểm soát của máy chủ.

1.5.2.2. Tấn công XSS

+ Nhận biết website bị mắc lỗi XSS:

Thường thì XSS có thể xảy ra tại những nơi mà người dùng có thể nhập dữ

liệu vào, sau đó sẽ nhận được một kết quả gì đó. Nên thường chúng ta sẽ kiểm

tra ở những ô đăng nhập (login form) đầu vào. Khi nhập một chuỗi kí tự nào đó

mà kết quả của server trả về có dính tới chuỗi mà bạn nhập thì rất có khả năng

trang đó bị mắc lỗi XSS .

25

Hình 3. Mô hình tấn công XXS (Cross-Site Scripting)

Thông thường kẻ tấn công (attacker) sử dụng XSS để lấy các thông tin

quan trọng: cookie, user name và password. Ở đây sử dụng XSS để đánh cắp

cookie của nạn nhân (victim).

+ Cách chèn script:

Sử dụng Java script:

Code:

javascript: alert(document.cookie)

Dùng file.php:

CODE

javascript:location="http://hostcuaban/cookie.php?cookie="+(docum

ent.cookie)

Hàm location để chuyển trình duyệt đến 1 trang khác, lúc đó

document.cookie sẽ thay bằng giá trị cookie.

XSS giúp đánh cắp (steal) được cookie của nạn nhân (victim), khai thác

trên trình duyệt như sau:

CODE

http://sitexss.com/index.php?act=

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

1.5.2.3. Phòng chống tấn công bằng XSS

Nếu sử dụng các mã nguồn được xây dựng sẵn, có thể truy cập các trang

web securityfocus.com, securiteam.com,...để tham khảo danh sách các lỗ hổng

bảo mật. Tuy nhiên không thể áp dụng phương pháp trên nếu tự viết mã nguồn

các website. Trong trường hợp này cần dùng đến các chương trình dò tìm kiếm

(scanner) tự động. Nếu sử dụng trong môi trường Windows, có những chương

trình quét tìm chất lượng như AppScan hay N-Stealth, nó không tìm ra những

lỗi XSS mà nó còn có thể kiểm tra các lỗi khác trong website đó.

Tuy XSS khá nguy hiểm nhưng để ngăn ngừa cũng không quá khó khăn.

Chúng ta có thể giải quyết vấn đề này bằng nhiều cách như:

+ Chỉ chấp nhận những dữ liệu hợp lệ.

+ Từ chối nhận các dữ liệu hỏng.

+ Liên tục kiểm tra và thanh lọc dữ liệu.

Tuy nhiên trong thực tế, có nhiều trường hợp phải chấp nhận mọi loại dữ

liệu hay không có một bộ lọc phù hợp, vì vậy cần phải có những cách riêng để

giải quyết. Khi gặp trường hợp này, chúng ta có thể dùng cách mã hoá các kí tự

đặc biệt trước khi in ra website, đây là một cách khá hữu hiệu và có thể áp dụng

đối với nhiều ngôn ngữ Web Application (ASP, PHP...).

1.5.3. Tấn công từ chối dịch vụ DOS (Denial of Service)

1.5.3.1. Khái niệm

Theo Nguyễn Thanh Nghị (2008), trong cuốn “Tấn công từ chối dịch vụ

Dos, Ddos, DRDos”, tấn công DOS là một kiểu tấn công mà kẻ tấn công làm

cho hệ thống không thể sử dụng, hoặc làm cho hệ thống chậm đi một cách đáng

kể so với bình thường, bằng cách làm quá tải tài nguyên của hệ thống.

Tuy kiểu tấn công này, kẻ tấn công không thể đăng nhập vào hệ thống

nhưng chúng có thể làm cho hệ thống ngưng trệ, thậm trí sụp đổ và không có

khả năng phục vụ người dùng bình thường, làm gián đoạn các dịch vụ mà hệ

thống đó cung cấp.

27

1.5.3.2. Mục đích của tấn công DOS

Hầu hết những cuộc tấn công DOS đều chiếm băng thông mạng và làm

ngập (flood) hệ thống mạng, khi đó những yêu cầu dịch vụ bình thường hệ thống

sẽ không còn khả năng đáp ứng, chúng còn gây ra sự ngắt kết nối giữa các máy

tính, quá trình truy cập vào dịch vụ cũng bị gián đoạn, mục đích kẻ tấn công là:

- Tạo ra sự khan hiếm, những giới hạn và không đổi mới tài nguyên.

- Mục tiêu của tấn công DOS còn là chiếm băng thông mạng, ổ đĩa, bộ

nhớ, cơ sở dữ liệu.

- Tấn công vào các hệ thống, thứ để vụ cho mạng máy tính như: điều hoà,

hệ thống làm mát, hệ thống điện...

- Phá hoại hoặc thay đổi các thông tin cấu hình.

- Phá hoại tầng vật lý, các thiết bị mạng như điều hoà, nguồn điện…

Hình 4. Một mô hình tấn công từ chối dịch vụ DOS

1.5.3.3. Tấn công từ chối dịch vụ DOS

Là phương thức xuất hiện đầu tiên, giản đơn nhất trong kiểu tấn công từ

chối dịch vụ. Các kiểu tấn công thuộc phương thức này rất đa dạng:

+ Tấn công chiếm dụng tài nguyên (Resource Depletion):

Bằng cách lạm dụng quá trình giao tiếp của giao thức mạng hoặc những gói

tin dị thường, kẻ tấn công sẽ chiếm dụng nguồn tài nguyên hệ thống như bộ 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

(RAM) và bộ vi xử lý (CPU)… khiến cho người dùng chia sẻ không truy xuất

được hệ thống do hệ thống không đủ khả năng xử lý.

+ Tấn công SYN:

Được xem là một trong những kiểu tấn công DOS kinh điển nhất. Trong

thủ tục “bắt tay ba chiều” của TCP có những sơ hở mà kẻ tấn công chó thể lợi

dụng như mỗi khi máy khách muốn thực hiện kết nối tới máy chủ thì nó cần

thực hiện việc bắt tay ba lần (three-ways-handshake) thông qua các gói tin, từ đó

khởi đầu cho cuộc tấn công.

- Bước 1: Máy trạm sẽ gửi các gói tin (packet chứa SYN=1) đến máy chủ

để yêu cầu kết nối.

- Bước 2: Khi nhận được gói tin này, máy chủ sẽ gửi lại gói tin SYN/ACK

để thông báo cho máy trạm biết là nó đã nhận được yêu cầu kết nối và chuẩn bị

tài nguyên cho việc yêu cầu này. Máy chủ khi đó sẽ giành một phần tài nguyên

hệ thống như bộ nhớ đệm (cache) để nhận và truyền dữ liệu. Ngoài ra, các thông

tin khác của máy trạm client như địa chỉ IP và cổng (port) cũng được ghi nhận.

- Bước 3: Cuối cùng, máy trạm hoàn tất việc bắt tay ba lần bằng cách hồi

âm lại gói tin chứa ACK cho máy chủ và tiến hành kết nối.

Do TCP là thủ tục tin cậy trong việc giao nhận (end-to-end) nên trong lần

bắt tay thứ hai, server gửi các gói tin SYN/ACK trả lời lại máy trạm mà không

nhận lại được hồi âm của máy trạm để thực hiện kết nối thì nó vẫn bảo lưu

nguồn tài nguyên chuẩn bị kết nối đó và lập lại việc gửi gói tin SYN/ACK cho

máy trạm đến khi nào nhận được hồi đáp của máy máy trạm.

Điểm mấu chốt là ở đây là làm cho máy trạm không hồi đáp cho máy chủ.

Và có nhiều máy trạm như thế trong khi máy chủ vẫn tiếp tục lặp lại việc gửi gói

tin (packet) đó và giành tài nguyên để chờ phản hồi trong lúc tài nguyên của hệ

thống là có giới hạn. Kẻ tấn công sẽ tìm cách để đạt đến giới hạn đó.

29

Nếu quá trình đó kéo dài, máy chủ sẽ nhanh chóng trở nên quá tải, dẫn đến

tình trạng treo (crash), nên các yêu cầu hợp lệ sẽ bị từ chối không thể đáp ứng

được.

Hình 5. Mô hình tấn công SYNFlood Attack

Về nguyên tắc, các website đặt trên máy chủ khi chạy sẽ tiêu lượng tài

nguyên máy chủ nhất định, nhất là lượng bộ nhớ (RAM) và bộ vi xử lý (CPU).

Dựa vào việc tiêu hao đó, những kẻ tấn công đơn giản là dùng các phần mềm

như Smurf chẳng hạn để liên tục yêu cầu máy chủ phục vụ trang web đó để

chiếm dụng tài nguyên. Cách tấn công này tuy không làm máy chủ ngừng cung

cấp dịch vụ hoàn toàn nhưng sẽ làm cho tốc độ phục vụ của toàn bộ hệ thống

giảm mạnh, người dùng sẽ cảm nhận rõ ràng việc phải chờ lâu hơn để trang web

hiện ra trên màn hình. Nếu thực hiện tấn công ồ ạt và có sự phối hợp nhịp

nhàng, phương thức tấn công này hoàn toàn có thể làm tê liệt máy chủ trong một

thời gian dài.

+ Tấn công chiếm dụng băng thông:

Có 2 loại tấn công chính:

- Thứ nhất là làm ngập bằng cách gửi liên tục các gói tin có kích thước lớn

đến hệ thống nạn nhân, làm nghẽn băng thông nạn nhân.

- Thứ hai là sử dụng mạng khuếch đại, kẻ tấn công gửi thông tin đến một

địa chỉ phát quảng bá (broadcast), tất cả hệ thống trong mạng con nạn nhân

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

(victim) trong phạm vi bởi địa chỉ quảng bá sẽ gửi lại hệ thống nạn nhân một

thông điệp phản hồi cho máy nạn nhân chấp nhận trao đổi dữ liệu. Phương pháp

này khuếch đại dòng lưu lượng làm cho hệ thống nạn nhân giảm băng thông

đáng kể.

1.5.3.4. Phòng chống tấn công DOS

Để phòng chống tấn công DOS, có ba giai đoạn chính cần quan tâm:

- Giai đoạn ngăn ngừa gồm: tối thiểu hóa lượng Agent, tìm và vô hiệu hóa

các Handler.

- Giai đoạn đối đầu: đó là khi phát hiện ra cuộc tấn công, lúc đó cần ngăn

chặn, làm suy giảm, dừng hoặc chuyển hướng cuộc tấn công.

- Giai đoạn sau khi tấn công: sau khi cuộc tấn công sảy ra cần phân tích các

dữ liệu để tìm các chứng cứ và rút kinh nghiệm để phòng chống các cuộc tấn

công sau.

31

CHƯƠNG 2: TẤN CÔNG THAY ĐỔI NỘI DUNG VÀ MỘT SỐ

THUẬT TOÁN PHÁT HIỆN SỰ THAY ĐỔI

Trong chương 1 luận văn nêu lên một số các khái niệm cơ bản về web, thực

trạng an ninh Web trên thế giới và tại Việt Nam, một số lỗ hổng an ninh trên

Website, một số điểm yếu bảo mật và kỹ thuật tấn công Website.

Với những lỗ hổng an ninh đó đều có thể làm tiền đề cho những cuộc tấn

công vào hệ thống website, trong đó có Tấn công thay đổi nội dung (Deface

website).

2.1. Khái niệm Tấn công thay đổi nội dung (Deface website)

Deface website được định nghĩa là tấn công thay đổi nội dung website,

thông qua một điểm yếu nào đó của website, hacker sẽ thay đổi nội dung

website của nạn nhân. Việc thay đổi nội dung này nhằm một số mục đích:

- Mục đích tốt: cảnh báo quản trị viên biết website đang tồn tại lỗ hỏng bảo

mật, điểm yếu nghiêm trọng….

- Mục đích không tốt: chứng tỏ năng lực bản thân, thú vui….

- Mục đích xấu: thù hằn, nội dung thay đổi thường là lăng mạ nạn nhân

hoặc nội dung liên quan đến chính trị, tôn giáo, quốc gia…

2.2. Vì sao website bị Deface?

Có rất nhiều nguyên nhân bị Deface, chủ yếu nhất là website tồn tại điểm

yếu bảo mật nghiêm trọng như đã nêu trong mục "Một số lỗ hổng an ninh trên

Website" hoặc có thể do một số nguyên nhân khác như:

- Đặt mật khẩu quản trị quá yếu ( không đủ độ dài ký tự, không có các ký

tự viết hoa, ký tự đặc biệt,... ), thiếu cơ chế chống brute force khiến kẻ tấn công

có thể dò password admin.

- Cài đặt các module, plugin, extension,... trong các mã nguồn mở hiện nay

( thường là các website joomla, wordpress,...).

- Để lộ mật khẩu quản trị....

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

2.3. Thực trạng tấn công thay đổi nội dung tại Việt Nam

Đã có hơn 1.500 sự cố tấn công mạng nhắm vào Việt Nam trong hai tháng

đầu năm 2018. Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam (VNCERT)

công bố số liệu vừa nêu hôm 7 tháng 3 năm 2018.

Theo VNCERT trong số 1.500 trường hợp tấn công, có 962 tấn công giao

diện (deface), 324 trường hợp dùng mã độc tấn công (malware) và 218 tấn công

lừa đảo (phishing).

Cũng theo thống kê của VNCERT, các sự cố mạng tại Việt Nam tăng mạnh

từ năm 2017 với tổng cộng 134.375 sự cố tấn công mạng trong năm 2017, bao

gồm cả 3 loại hình phổ biến nhất hiện nay là Deface, Malware và Phishing.

Đã có rất nhiều website lớn bị tấn công Deface gây thiệt hại không nhỏ về

vật chất cũng như uy tín của tổ chức, doanh nghiệp, có thể kẻ đến như website

của Tổng công ty Hàng không Việt Nam (vietnamairlines.com) ngày 29/7/2016,

website của Sở TT&TT Nam Định (sotaichinh.namdinh.gov.vn) ngày 1/8/2016,

website của báo Sinh viên Việt Nam (svvn.vn) ngày 05/8/2016, 10 trang thông

tin điện tử của một số cơ quan nhà nước tỉnh Bà Rịa - Vũng Tàu ngày ngày

5/2/2017, một số website của các cảng hàng không như: Tân Sơn Nhất, Rạch

Giá, Tuy Hòa trong hai ngày 8-9/3/2017.

33

Hình 6. Giao diện Website Sở KH&CN BR- VT bị tấn công

(Ảnh: ictnews.vn)

Hình 7. Giao diện Website sân bay Tuy Hòa bị tấn công (Ảnh:

Dantri.com.vn)

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

2.4. Làm thế nào để phát hiện bị Deface?

Nếu một cuộc tấn công thông thường, tấn công Deface thay đổi hoàn nội

dung trang web, người sử dụng sẽ phát hiện khi thấy sự thay đổi của website.

Nhưng nếu hacker chỉ thay đổi một phần rất nhỏ, hoặc không thay đổi giao

diện, chỉ thay đổi các đường dẫn, thậm chí tải các mã độc lên trang web thì

người sử dụng khó thể phát hiện. Đây cũng là một vấn đề mà khá nhiều trang

web đang gặp phải và chưa có giải pháp nào thực sự tối ưu.

Hiểu được thực trạng đó, Luận văn đã đề xuất xây dựng hệ thống giám sát

website nhằm phát hiện kịp thời các cuộc tấn công (như đã nêu) bằng hệ thống

đa kiểm tra dựa trên nhiều thuật toán nhằm phát hiện thay đổi để đảm bảo tính

toàn vẹn của trang web đồng thời tạo ra thông điệp cảnh báo có ý nghĩa và phục

hồi lại các trang web đã bị tấn công.

2.5. Các bước xử lý khi phát hiện bị Deface

Bước 1. Cách ly website

Trước tiên cần sao lưu backup lại trạng thái của website để phục vụ các

bước điều tra sau này. Cần liên hệ ngay với nhà cung cấp dịch vụ để được hỗ trợ

kiểm tra, cung cấp các bản backup.

Có thể thay thế trang chủ bởi nội dung “Website đang được bảo trì và nâng

cấp, Xin vui lòng quay lại sau!” hoặc chặn tất cả các kết nối đến website sử

dụng firewall hoặc .htaccess.

Tiếp đó cần kiểm tra lại các tài khoản trên hệ thống xem hacker có tạo mới

tài khoản không, nếu có thì xóa các tài khoản đó đi, đồng thời thực hiện thay đổi

tất cả các thông tin tài khoản hiện tại bao gồm: tài khoản website, database, tài

khoản quản lý hosting, FTP, encryption key..

Bước 2. Khôi phục lại hoạt động của website.

Trong trường hợp có bản sao lưu của mã nguồn hoàn chỉnh, có thể thực

hiện restore lại website để website trở lại hoạt động.

35

Trong trường hợp không có bản sao lưu hoàn chỉnh, có thể sử dụng các

cách sau để tìm file bị hacker sửa đổi:

- Tìm và sắp xếp các file theo thời gian bị sửa đổi:

$ find /var/www/html -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

- Tìm các file bị sửa đổi trong một khoảng thời gian:

+ 60 phút: $ find /var/www/html -type f -mmin -60

+ 7 ngày trước: $find /var/www/html -type f -mtime -7

Kiểm tra các các file đó

Bước 3. Làm sạch website

Các file backdoors hacker để lại thường có tên gần giống với mã nguồn,

cần kiểm tra kĩ các file đó.

Nên sử dung các công cụ tìm kiếm và loại các loại mã độc hoặc cũng có thể

download mã nguồn về máy và dùng các phần mềm antivirus để kiểm tra

Làm sạch Database: Hacker có thể lưu trữ backdoor ở trong database, cần

mở database và tìm kiếm trong các bảng các từ khóa spam hoặc các hàm php.

Lưu ý nhớ backup database trước khi thực hiện.

Bước 4: Điều tra nguyên nhân website bị hack

Đây là bước khó nhất, nó đòi hỏi kinh nghiệm và kiến thức để có thể kiểm

tra chính xác nguyên nhân và cách khắc phục. Có thể sử dụng các kiến thức về

lỗ hổng an ninh và kỹ thuật tấn công trong Chương 1 để tiến hành điều tra. Bước

này nếu thực sự cần thiết có thể nhờ các công ty an ninh mạng.

Sau khi đã biết được cách mà hacker đã khai thác, tấn công website, cần vá

lại các lỗ hổng mà hacker đã khai thác, cập nhật các bản vá mới mới nhất cho

mã nguồn và phần mềm để fix các lỗi bảo mật.

Sau đó ban kiểm tra lại lần cuối và tạo một bản backup để sử dụng khi cần thiế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

2.6. Một số lời khuyên để website an toàn hơn

Thường xuyên kiểm tra dữ liệu website.

Có kế hoạch backup dữ liệu cụ thể, định kì.

Luôn đặt mật khẩu phức tạp để đăng nhập và đổi mật khẩu định kỳ.

Không nên cài đặt các theme, module, plugin, extension,… bản null, không

thật sự cần thiết và không rõ nguồn gốc.

Thường xuyên update mã nguồn lên phiên bản mới nhất để hạn chế các lỗi

bảo mật trong các phiên bản trước.

Sử dụng phần mềm phát hiện và cảnh báo khi bị tấn công.

37

2.7. Một số thuật toán phát hiện sự thay đổi

2.7.1. Hàm băm

2.7.1.1. Giới thiệu hàm băm

Hàm băm (hash function) là giải thuật với đầu vào là những khối dữ liệu và

kết quả đầu ra là các giá trị băm tương ứng với mỗi giá trị đầu vào. Ở đây giá trị

băm có thể được coi như một khóa để phân biệt các dữ liệu với nhau, tuy vẫn

còn hiện tượng trùng khóa hay còn gọi là đụng độ nhưng điều này vẫn được

chấp nhận và mọi người vẫn đang tìm cách để cải thiện giải thuật nhằm giảm

thiểu sự đụng độ đó. Để giảm chi phí tính toán khi tìm một khối dữ liệu trong

một tập hợp, người ta sử dụng bảng băm.

Nhận thấy rằng hàm băm h không phải là một song ánh. Do đó, với một

thông điệp m bất kỳ, tồn tại thông điệp m’ ≠ m sao cho h(m) = h(m’). Lúc này,

ta nói rằng “có xảy ra sự đụng độ”.

Một hàm băm h được gọi là an toàn (hay “ít bị đụng độ”) khi khó có thể

xác định được (bằng cách tính toán) cặp thông điệp m và m’ thỏa mãn m ≠ m’

và h(m) = h(m’). Trên thực tế, các thuật toán băm là hàm có tính một chiều, tức

là, khi có thông điệp rút gọn rất khó để xây dựng lại thông điệp ban đầu.

Cúng ta có thể sử dụng hàm băm để xác định được tính toàn vẹn dữ liệu

hay của thông tin, mọi thay đổi, dù là rất nhỏ, trên thông điệp cho trước, ví dụ

như thay đổi giá trị 1 bit, đều làm thay đổi thông điệp rút gọn tương ứng. Đây là

tính chất khá hữu ích trong việc kiểm tra chữ ký điện tử, chứng nhận các thông

điệp...

Hàm băm là nền tảng cho nhiều ứng dụng mã hóa. Có nhiều thuật toán để

thực hiện hàm băm, trong đó, phương pháp SHA-1 và MD5 thường được sử

dụng khá phổ biến từ thập niên 1990 đến nay.

Hàm băm mật mã ứng dụng nhiều trong an ninh thông tin, điển hình là

kiểm tra tính toàn vẹn của dữ liệu, mã hóa mật khẩu, xác minh tệp tin, chứng

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

thực thông điệp, chữ ký số, và các dạng ứng dụng khác mà chứa hàm băm mật

mã bên trong. Hàm băm mật mã còn được sử dụng như các hàm băm thường,

phục vụ cho bảng băm như chúng ta đã biết. Vì mã băm của một đối tượng là

duy nhất, mã băm đó có thể được dùng như dấu vân tay để nhận dạng đối tượng.

Ví dụ để chỉ ra một người sử dụng, cách tốt nhất là sử dụng dấu vân tay là mã

băm mật mã dành cho người đó, trong khi mã nhận dạng kiểu khác có thể không

rõ ràng và bị trùng lặp.

2.7.1.2. Tính một chiều của hàm băm

Hàm băm được xem là hàm một chiều khi cho trước giá trị băm, khó có thể

tái tạo lại thông điệp ban đầu, hay còn gọi là “tiền ảnh” (“pre-image”). Thật vậy,

với bài toán tìm “tiền ảnh” tương ứng với một giá trị băm, trong trường hợp lý tưởng, cần phải thực hiện hàm băm cho khoảng 2n thông điệp.

Cách tấn công nhằm tạo ra một thông điệp khác với thông điệp ban đầu nhưng

có cùng giá trị băm gọi là tấn công “tiền ảnh thứ hai” (second pre-image attack).

Hàm băm mật mã phải có khả năng chống lại các loại tấn công mật mã, tối

thiểu phải đảm bảo có 3 tính chất sau:

+ Kháng tiền ảnh (Pre-image resistance): Với một mã băm h bất kỳ, khó

tìm được một thông điệp m nào mà h = hash(m). Điều này làm chúng ta liên

tưởng tới tính một chiều của hàm số. Trong góc độ hàm toán học, mã băm là ảnh

còn thông điệp là tạo ảnh của mã băm, hay gọi là tiền ảnh. Sức kháng cự tấn

công từ ảnh ngược về tiền ảnh gọi là kháng tiền ảnh. Một hàm băm có kháng

tiền ảnh yếu là lỗ hổng cho các cuộc tấn công tiền ảnh.

+ Kháng tiền ảnh thứ hai (Second pre-image resistance): Với một thông

điệp m1 bất kỳ, khó tìm được một thông điệp thứ hai m2 sao cho m1 ≠

m2 và hash(m1) = hash(m2). Xác suất xảy ra biến cố có thông điệp m2 như thế

tương tự biến cố “Cùng ngày sinh”. Một hàm băm có kháng tiền ảnh thứ hai yếu

là lỗ hổng cho các cuộc tấn công tiền ảnh thứ hai.

+ Kháng xung đột (Collision resistance): Khó tìm được một cặp thông

điệp m1 và m2 sao cho m1 ≠ m2 và hash(m1) = hash(m2). Cặp như thế được gọi là xung

39

đột băm mật mã. Tính chất này đôi khi còn được gọi là kháng xung đột mạnh. Nó yêu

cầu chiều dài băm ít nhất phải dài hơn hai lần so với yêu cầu của kháng tiền ảnh, nếu

không xung đột có thể xảy ra bởi một cuộc tấn công “Ngày sinh”.

2.7.1.3. Cấu trúc hàm băm

Các hàm băm hầu hết đều có chung cấu trúc giải thuật như sau:

+ Cho dữ liệu đầu vào M có độ dài bất kỳ. Có thể thêm vào M một số bit để

nhận được dữ liệu có độ dài là bội của hằng số cho trước. Chia nhỏ thông điệp

thành từng khối có kích thước bằng nhau: M1, M2, …Ms

+ Gọi H là trạng thái có kích thước n bit,

+ Gọi f là hàm dùng để trộn khối dữ liệu với trạng thái hiện hành

 - Khởi tạo, gán H0 bằng một vector khởi tạo nào đó

 - Hi = f(Hi-1 ,Mi) với i = 1, 2, 3, …,s

+ Hs chính là thông điệp rút gọn của thông điệp M ban đầu

Hình 8. Sơ đồ Merkel-Damgard

Quá trình băm thực hiện trên từng khúc dữ liệu, mỗi khúc được băm một số

vòng (số vòng lặp đang sử dụng hiện nay là 64 vòng hoặc 80 vòng). Thuật toán

duy trì các biến tương ứng với các từ của mã băm, mỗi từ 32 bits hoặc 64 bits,

mỗi vòng thực hiện tính toán các biến trên cơ sở khúc dữ liệu và các thao tác

khác. Khúc dữ liệu, tùy theo loại hàm băm có thể được sơ chế hoặc không, được

chia thành các mảnh nhỏ cỡ 32 bits hoặc 64 bits và được “trộn” dần vào các

vòng băm. Trong mỗi vòng băm, “gia vị” được bổ sung là hằng số, đối với đa số

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

hàm băm hằng số được lấy từ một hay hai mảng cho trước, trong đó có mảng

các giá trị của một hàm phi tuyến hoặc mảng của các số nguyên tố đầu tiên. Dữ

liệu được “băm” sử dụng kết hợp các phép toán trên bit. Cuối một vòng, thuật

toán thực hiện “trộn” dữ liệu bằng cách gán một số biến đầu ra bằng với một số

biến đầu vào nhưng hoán vị. Các biến với giá trị mới lại trở thành biến đầu vào

cho vòng tiếp theo. Chúng ta thấy rằng dữ liệu được băm là dữ liệu hỗn hợp,

nhưng mô tả rõ hơn thì, thuật toán thực hiện băm các biến trong khi thả mảnh dữ

liệu và gia vị vào, rồi trộn các biến, tính toán, khởi tạo các biến cho vòng sau,

rồi lại băm tiếp. Khi kết thúc tất cả các vòng băm của một khúc, khúc dữ liệu coi

như được nén vào các biến.

Việc tính toán được bắt đầu với một giá trị hash khởi tạo, coi như mã băm

hiện hành của khúc dữ liệu đầu tiên. Ở đầu chu kỳ của một khúc, các biến được

gán với các từ tương ứng của mã băm hiện hành. Sau khi đi qua hết các vòng

băm, các biến kết quả được cộng tương ứng vào các từ của mã băm hiện hành để

tạo ra mã băm mới. Quá trình băm thực hiện băm đi băm lại trên từng khúc dữ

liệu, mã băm mới của chu kỳ này được dùng làm mã băm hiện hành của chu kỳ

tiếp theo, cho tới khúc cuối cùng. Giá trị nối các từ của mã băm sau cùng là mã

kết quả của hàm băm.

2.7.2. Thuật toán đối sánh chuỗi

2.7.2.1. Khái niệm đối sánh chuỗi

Đối sánh chuỗi là việc so sánh một hoặc vài chuỗi (thường được gọi là

mẫu hoặc pattern) với toàn bộ văn bản để tìm ra nơi và số lần xuất hiện của

chuỗi đó trong văn bản.

Đối sánh chuỗi là một chủ đề rất quan trọng trong lĩnh vực rộng hơn của

xử lý văn bản. Các thuật toán đối sánh chuỗi là những thành phần cơ bản

được sử dụng trong việc triển khai các phần mềm thực tiễn tồn tại trong hầu

hết các hệ điều hành. Hơn nữa, chúng làm nổi bật các phương pháp lập trình

phục vụ như là các mẫu trong các lĩnh vực khác của khoa học máy tính (thiết

41

kế hệ thống và phần mềm). Cuối cùng, các thuật toán đối sánh chuỗi cũng

đóng một vai trò quan trọng trong khoa học máy tính lý thuyết bằng cách

cung cấp những bài toán thách thức.

2.7.2.2. Phân loại thuật toán đối sánh chuỗi

- Theo thứ tự đối sánh:

+ Từ trái sang phải

+ Từ phải sang trái

+ Đối sánh tại vị trí cụ thể

+ Không theo thứ tự nhất định

- Theo số lượng pattern:

+ Đối sánh chuỗi đơn pattern

+ Đối sánh đa chuỗi pattern

- Theo độ sai khác đối sánh:

+ Đối sánh chuỗi chính xác

+ Đối sánh chuỗi gần đúng

- Theo sự thay đổi của pattern và văn bản

+ Pattern thay đổi, văn bản cố định

+ Pattern cố định, văn bản thay đổi

+ Pattern thay đổi, văn bản thay đổi

2.7.3. Dấu vân tay tài liệu (Document Fingerprint)

Trong khoa học máy tính, dấu vân tay nhận dạng duy nhất dữ liệu gốc cho

tất cả các mục đích thực tiễn giống như là việc nhận dạng duy nhất dấu vân tay

người trong thực tế. Dấu vân của tài liệu là tập hợp các mã được sinh ra tù các

khóa nội dung của tài liệu đó. Mỗi mã đó được gọi là một giá trị băm.

Thông thường, ta chọn chuỗi con từ văn bản ban đầu sau đó áp dụng một

hàm toán học cho mỗi chuỗi con đã chọn để tạo ra dấu vân tay tài liệu. Hàm này,

giống như một hàm băm, tạo ra một giá trị băm. Giá trị băm này sau đó được lưu

trữ trong một chỉ mục (index) để truy cập nhanh khi truy vấn . Khi một tài liệu

truy vấn (query document) sẽ được so sánh với tập hợp các số nguyên đã được

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

lưu trữ đó, dấu vân tài liệu cho các truy vấn đó sẽ được tạo ra. Đối với mỗi giá

trị băm trong dấu vân tay tài liệu, chỉ mục của truy vấn và một danh sách các

dấu vân tay đối sánh được lấy ra. Số lượng giá trị băm chung giữa dấu vân tay

truy vấn và mỗi dấu vân tay trong tập hợp đã lưu trữ xác định tài liệu tương ứng

đó.

Có một vài phương pháp để lấy dấu vân tay tài liệu dựa trên 4 sự biến đổi

của các thông số thiết kết sau:

- Chiến lược lựa chọn (được sử dụng để chọn các chuỗi con từ tài liệu đã

cho).

- Kích thước của các chuỗi con (được trích ra từ tài liệu).

- Số lượng giá trị băm (được sử dụng để xây dựng một tài liệu dấu vân tay).

- Hàm Fingerprint (được sử dụng để tạo ra một giá trị băm từ chuỗi con

trong tài liệu, như là các checksum, hàm băm, hàm băm mật mã, và chữ kí số).

2.7.4. Thuật toán Rabin Fingerprint

Thuật toán Rabin Fingerprint là một trong nhiều thuật toán Fingerprint thực

hiện khóa công khai sử dụng các đa thức trên một trường giới hạn.

Thuật toán Rabin Fingerprint điển hình tạo ra một giá trị băm từ chuỗi con trong

các trang web (web pages), bởi vì đây là một thuật toán nhanh và dễ để thực thi, và nó

cũng đi kèm với một phân tích chính xác toán học của xác suất đụng độ (hai tập tin

có dấu vân tay giống nhau).

Thuật toán được sử dụng trong hệ thống như sau:

Đầu vào: Tài liệu (trang web công khai)

Đầu ra: Dấu vân tay tài liệu (các giá trị băm của tài liệu đó)

Bước 1: Bắt đầu.

Bước 2: Xử lý văn bản, xoá hết tất cả khoảng trắng và các kí tự đặc biệt (như: <, >, %, !, …) từ mã HTML (mã trang web) để thu được một khối văn bản thuần túy (pure text block).

43

Bước 3: Chia khối văn bản đã xử lý đó thành các chuỗi con có độ dài K.

// Số lượng chuỗi con có độ dài K và số lượng giá trị băm (mã

băm) bằng (m-K+1), với m là kích thước của tài liệu.

Bước 4: Tính toán giá trị băm đối với mỗi chuỗi con bằng cách tính H(P)

như sau:

// H(P) là một tuyến tính trong n (n là độ dài của P)

Khởi tạo:

Count=K

Tr = T[r..r+n-1]

H(S) = S(n) + 2*S(n-1) + 4*S(n-2) + … + 2n-1*S(1)

Do while Count > 0

Sử dụng Hp(P) = H(P) mod p như là một giá trị băm

(fingerprint) của P

Hp(Tr) = [2*Hp(Tr-1) - (2n mod p) * T(r-1) + T(r+n-1)] mod p

//Tính giá trị băm cho các chuỗi con tiếp theo.

Until Count = 1

Bước 5: Lưu lại các giá trị băm.

Bước 6: Kết thúc.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Hình 9. Mô tả thuật toán Rabin Fingerprint

2.7.5. Thuật toán Rabin Fingerprint cải tiến

Thuật toán cải tiến được đề xuất trong hệ thống như sau:

Đầu vào: Tài liệu (trang web công khai)

Đầu ra: Dấu vân tay tài liệu (các giá trị băm của tài liệu đó)

Bước 1: Bắt đầu.

Bước 2: Xử lý văn bản, xoá hết tất cả khoảng trắng và các kí tự đặc biệt

(như: <, >, %, !, …) từ mã HTML (mã trang web) để thu được một

khối văn bản thuần túy (pure text block).

Bước 3: Từ văn ban M, chia ra thành K khối với kích thước n mỗi khối (n

nguyên dương)

Bước 4: Tính mã băm cho các chuỗi con:

Khởi tạo:

Tr = T[r..r+n-1];

K=0;

H(S) = S(n) + 2*S(n-1) + 4*S(n-2) + … + 2n-1*S(1);

While (K

{

for (r=K*n; r<=K*n+n; r++)

45

{

Hp(Tr)= (Hp(Tr) + T(r)) mod p //Tính giá trị băm

cho các chuỗi con, p là số nguyên tố lớn.

}

K++;

}

Bước 5: Lưu lại các giá trị băm.

Bước 6: Kết thúc.

Hình 10. Minh hoạ cải tiến giải thuật

2.7.6. Thuật toán tìm sự khác nhau của hai văn bản "An O(ND)

Difference Algorithm"

Thuật toán này được xuất bản lần đầu tiên cách đây 30 năm dưới tựa đề

"An O(ND) Difference Algorithm and its Variations" của Eugene Myers, trong

cuốn Algorithmica Vol. 1 số 2, 1986, trang 251. Trong bài này, tác giả có đề cập

đến định nghĩa của thuật toán theo cách đệ quy, và sử dụng một số mã của ngôn

ngữ lập trình hiện có.

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ách hoạt động:

So sánh các ký tự của hai tệp văn bản lớn không dễ thực hiện và có xu

hướng chậm. Để việc so sánh được dễ hơn, cần so sánh đưới dạng dấu vân, do

đó, bước đầu tiên là tính dấu vân cho các dòng văn bản. Nếu các dòng văn bản

giống hệt nhau thì sẽ cho các dấu vân giống nhau và ngược lại.

Có một số tùy chọn có thể lựa chọn trước khi tính dấu vân, tùy theo yêu

cầu người dùng hay tùy theo một số loại văn bản như xóa những khoảng trống,

xóa các từ khóa, id, thẻ...

Phần chính của thuật toán là cách so sánh hai mảng dấu vân và tìm sự khác

nhau giữa chúng. Cốt lõi của thuật toán được xây dựng bằng hai phương pháp:

LCS (Longest common subsequence): Là việc thực hiện các thuật toán chia

để trị để giải quyết bài toán tìm chuỗi con chung dài nhất.

SMS (Shortest Middle Snake): Phương pháp tìm đường ngắn nhất.

+ Cải tiến:

Thuật toán gốc thực hiện bằng cách sử dụng phương pháp tiếp cận đệ quy,

so sánh các trình tự được lập chỉ mục, và truyền các phần của các chuỗi này

thành các tham số, trích xuất các mảng con và nối lại chúng.

Thuật toán cải tiến bằng cách thêm một số mã vào chức năng LCS để nhận

được kết quả ngay lập tức trên các mảng con giống nhau, đã bị xóa hoàn toàn

hoặc chèn vào thay vì phân tích đệ quy chúng.

Kết quả được lưu trữ trong hai mảng chứa đối tượng môC tả sự khác biệt

đã tìm thấy.

2.7.7. Thuật toán tìm sự khác nhau của hai hình ảnh

Việc tìm sự khác nhau của hai hình ảnh cơ bản là sự so sánh trực tiếp các

điểm ảnh của hai ảnh.

+ Cải tiến:

47

Việc lấy thông số các điểm ảnh trong C# thường sử dụng 2 phương thức set

và get, tuy nhiên khi bạn gọi 2 phương thức này hệ thống sẽ Lock ảnh lại đến

khi kết thúc phương thức vừa gọi tự động sẽ UnLock ảnh đó cho việt truy cập

lần sau. Chính việc Lock rồi Unlock liên tục đã làm đã làm cho việc xử lý ảnh

chậm, nhất là với ảnh có kích thước lớn.

Vì vậy thuật toán có thể cải tiến bằng cách sử dụng kỹ thuật LockBits, lưu

các thông tin của ảnh vào mảng để xử lý.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

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

Trong chương 2 luận văn nêu khái niệm tấn công thay đổi nội dung,

nguyên nhân và cách khắc phục cùng với một số thuật toán phát hiện sự thay đổi

đó.

Từ những thuật toán đó, tôi đã nghiên cứu 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 giới thiệu ở Chương 3.

3.1. Giới thiệu

Như đã giới thiệu ở Chương 2, những cuộc tấn công thay đổi website được

thực hiện để xâm phạm tính toàn vẹn của web bằng một trong những hình thức

sau:

Thay đổi nội dung của trang web.

Thay đổi bất kỳ phần nào của nội dung trang web.

Thay thế toàn bộ trang web.

Sử dụng lại trang web cũ.

Thay đổi bề ngoài của trang web.

Chuyển hướng trang web.

Phá hủy hoặc xóa bỏ trang web.

Chèn mã độc vào trang web

Có nhiều biện pháp để giữ cho web được an toàn hơn, nhưng không có biện

pháp nào hoàn toàn tối ưu, bởi vì các cuộc tấn công như vậy không thể được

ngăn chặn ở các lớp (layer) mạng cao hơn, do đó những cơ chế an ninh tốt hơn

cần được cung cấp.

Luận văn đã đề xuất xây dựng hệ thống giám sát website nhằm phát hiện

kịp thời các cuộc tấn công (như đã nêu) bằng hệ thống đa kiểm tra dựa trên

49

nhiều thuật toán nhằm phát hiện thay đổi để đảm bảo tính toàn vẹn của trang

web đồng thời tạo ra thông điệp cảnh báo có ý nghĩa và phục hồi lại các trang

web đã bị tấn công.

3.2. Xác định mô hình phát triển

Mô hình phát triển phần mềm là một thể hiện trừu tượng của quy trình phần

mềm. Nó biểu diễn các đặc tả về quy trình từ những khía cạnh cụ thể; do đó, nó

chỉ cung cấp một phần thông tin về quy trình phần mềm.

Các pha của mô hình thác nước bao gồm:

- Phân tích và xác định các yêu cầu

- Thiết kế hệ thống và phần mềm

- Cài đặt và kiểm thử đơn vị

- Tích hợp và kiểm thử hệ thống

- Vận hành và bảo trì.

Trong mô hình thác nước, năm pha trên phải được thực hiện một cách tuần

tự; kết thúc pha trước, rồi mới được thực hiện pha tiếp theo. Vì vậy, khó khăn

trong việc thay đổi các pha là nhược điểm chính của mô hình này. Giả sử, pha

phân tích và xác định yêu cầu đã hoàn tất và chuyển sang pha kế tiếp, nhưng lúc

này lại có sự thay đổi yêu cầu của người sử dụng; thì chỉ còn cách là phải thực

hiện lại từ đầu.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Hình 11. Mô hình thác nước

3.3. Khảo sát

Tác giả đã khảo sát tại một số công ty, doanh nghiệp, những người quản lý

website để tìm hiểu những nhu cầu thực tế về phần mềm. Kết quả thu được các

yêu cầu chính sau:

+ Phát hiện ngay lập tức những thay đổi.

+ Có thể kiểm tra sự thay đổi toàn bộ trang web hoặc một phần của trang

web.

+ Có thể kiểm tra sự thay đổi trong mã nguồn trang web

+ Giám sát liên tục, có thể cài đặt các khung giờ giám sát.

+ Chỉ rõ những chỗ thay đổi nội dung trong mã nguồn và trên giao diện.

+ Có thể giám sát nhiều trang web một lúc.

+ Có hệ thống lưu trữ dữ liệu.

+ Có cảnh báo trên máy tính hoặc bằng tin nhắn khi phát hiện thay đổi.

+ Giao diện đẹp, thân thiện phù hợp với yêu cầu khách hàng

51

+ Dễ sử dụng với các đối tượng người dùng, thuận tiện trong cài đặt, dễ

bảo trì.

+ Chạy ổn định, liên tục trong thời gian dài

3.4. Mô tả yêu cầu hệ thống

3.4.1. Các yêu cầu chức năng

+ Quản lý danh sách trang web: gồm các thông tin về địa chỉ và tên trang

web, thời gian kiểm tra, khu vực kiểm tra với các chức năng:

- Thêm trang web

- Xóa trang web

- Sửa thông tin trang web

- Chuyển trang web thành hình ảnh

- Tìm mã dấu vân của đoạn đã chọn trong mã nguồn trang web

+ Giám sát:

- Quản lý khoảng thời gian giữa mỗi lần kiểm tra

- Các chức năng bắt đầu, tạm dừng giám sát

- So sánh dấu vân

- So sánh hình ảnh

- Chức năng cài đặt các tùy chỉnh cho quá trình giám sát

+ Hiển thị kết quả:

- Hiển thị thông tin trang web

- Hiển thị hình ảnh trang web

- So sánh 2 hình ảnh khác thời gian của trang web, khoanh vùng thay đổi

- So sánh 2 mã nguồn khác thời gian của trang web, chỉ ra thay đổi

+ Cảnh báo

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ảnh báo bằng màu sắc

- Cảnh báo bằng âm thanh

- Cảnh báo bằng tin nhắn

+ Quản lý dữ liệu hệ thống:

- Lưu dữ liệu trang web

- Load dữ liệu trang web

- Lọc dữ liệu theo ngày

3.4.2. Các yêu cầu phi chức năng

+ Ổn định, chạy được lâu dài

+ Tương thích với các phiên bản của Windows

+ Giao diện đẹp, thân thiện, dễ sử dụng

Cài đặt cấu hình website

Quản lý danh sách web site

Xem thông tin website

So sánh 2 hình ảnh của website

Cài đặt thời gian mỗi lần giám sát

Người sử dụng

So sánh 2 mã nguồn của website

Bắt đầu/ tạm dừng giám sát

Xem lịch sử giám sát

3.5. Biểu đồ

Hình 12. Biểu đồ usecase

53

Hình 13. Biểu đồ trình tự kiểm tra trang web

Hình 14. Biểu đồ trình tự so sánh nội dung

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

3.6. Thiết kế cơ sở dữ liệu

Để lưu dữ liệu trong quá trình giám sát web, chương trình sử dụng cơ sở dữ

liệu SQLite, với 2 bảng là Web và LichSu

CREATE TABLE [Web] (

[WebID] INTEGER PRIMARY KEY NULL,

[TenWeb] STRING NULL,

[DiaChi] STRING NULL,

[ThoiGian] INTEGER NULL,

[ThongTin] String NULL

)

CREATE TABLE [LichSu] (

[ID] INTEGER PRIMARY KEY NOT NULL,

[WebID] INTEGER NULL,

[ThoiGian] DATETIME NULL,

[Anh] TEXT NULL,

[Html] TEXT NULL,

[Ping] INTEGER NULL

)

3.7. Công cụ và môi trường phát triển

3.7.1. Kiến trúc .NET framework

.NET Framework là một sản phẩm của Microsoft, đây vừa là một nền tảng

dành cho lập trình và cũng là một nền tảng dành cho thực thi, các ứng dụng

.NET Framework chủ yếu chay trên hệ điều hành Microsoft Windows.

.NET framework chưa các thư viện lập trình lớn, những thư viện này hỗ trợ

rất nhiều việc xây dựng các chương trình phần mềm như lập trình giao diện; truy

cập, kết nối cơ sở dữ liệu; ứng dụng web; các giải thuật, cấu trúc dữ liệu; giao

tiếp mạng.... (Dương Quang Thiện, 2013)

55

Việc viết ứng dụng sẽ được đơn giản hóa đi rất nhiều với .NET framework

bởi vì nó cung cấp nhiều thành phần được thiết kế sẵn, người lập trình chỉ cần

biết cách sử dụng những thành phần đó, và tùy theo sự sáng tạo của mình để kết

hợp chúng với nhau, và điển hình là công cụ Visual Studio.

Lịch sử phát triển:

Ngày phát hành

Visual Studio

Phiên bản

Số hiệu phiên bản

Được phát hành kèm theo

1.0

1.0.3705.0 13

tháng 2 năm

Visual Studio.NET

2002

Windows XP Tablet and Media Center Editions

tháng 4 năm

Studio.NET

Windows Server 2003

1.1

Visual 2003

1.1.4322.5 73

24 2003

tháng 11 năm

Visual Studio 2005

2.0

Windows Server 2003 R2

2.0.50727. 42

7 2005

Vista,

tháng 11 năm

3.0

Windows Windows Server 2008

3.0.4506.3 0

6 2006

Visual Studio 2008

3.5

Windows 7, Windows Server 2008 R2

3.5.21022. 8

19 tháng 11 năm 2007

tháng 4 năm

Visual Studio 2010

4.0

4.0.30319. 1

12 2010

4.5

4.5.50709

tháng 8 năm

Visual Studio 2012

15 2012

Windows 8, Windows Server 2012

4.6

tháng 7 năm

Visual Studio 2015

Windows 10

20 2015 Bảng 1. Lịch sử phát triển .NET framework

3.7.2. Ngôn ngữ C#

C# (đọc là "C thăng" hay "C sharp" ("xi-sáp")) cũng là một sản phẩm của

Microsoft, là một ngôn ngữ lập trình hướng đối. Microsoft phát triển C# dựa

trên C++ và Java, vì vậy nhiều người nhận xét C# là ngôn ngữ có sự cân bằng

giữa C++, Java và Visual Basic.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

3.7.3. SQLite

SQLite là sản phẩm của Richard Hipp, đây là một hệ thống cơ sở dữ liệu

quan hệ. Đặc điểm của SQLite là tính nhỏ gọn, hoàn chỉnh, có thể cài đặt bên

trong các trình ứng dụng khác dưới dạng thư viện.

+ Ưu điểm:

SQLite có các ưu điểm sau:

Tin cậy: khi hoạt động, các chuyển giao trong cơ sở dữ liệu luôn trọn vẹn,

khi gặp sự cố phần cứng cũng không gây lỗi.

Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ)

Không cần cài đặt cấu hình

Kích thước chương trình gọn nhẹ, với cấu hình đầy đủ chỉ không đầy 300 kB

Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu

khách/chủ khác

Không cần phần mềm phụ trợ

Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng

+ Các binding:

Cũng như các thư viện nguồn mở nói chung, SQLite được phát triển các

binding (gói kèm) các ngôn ngữ thông dụng: PHP, Perl, Java, Python, Ruby,

Tcl...

3.8. Xây dựng hệ thống

Bằng cách sử dụng các thuật toán đã nghiên cứu, tôi đã xây dựng các hàm

để thực hiện các công việc cụ thể:

3.8.1. Hệ thống So sánh thay đổi nội dung mã nguồn web

Việc so sánh thay đổi nội dung mã nguồn, có thể so sánh toàn bộ mã nguồn

hoặc chỉ so sánh một phần nội dung (VD: những nội dung xuất hiện trên giao

57

diện, bỏ qua các thẻ...). Hai phần này đều có chung quy trình, chỉ khác so sánh

một phần nội dung cần có thêm bước tiền xử lý.

Sau khi có phần văn bản cần so sánh sử dụng thuật toán Rabin Fingerprint

cải tiến để lấy giá trị băm của văn bản để so sánh chúng với nhau, nếu giá trị

băm khác nhau thì hai văn bản khác và đã có sự thay đổi.

class CaitienRB { long ht = 0; long htt = 0; long Q = 10000007; long D = 2; long dM = 1; public ArrayList mangluu_giatriban = new ArrayList(); public void KR(String text, int K) { int m; m = text.Length; dM = (dM * D) % Q; int khoi = 0; while (khoi < m / K) { for (int i = khoi * K; i < khoi * K + K; i++) { htt = (htt * D + text[i]) % Q; } khoi++; mangluu_giatriban.Add(htt); } } }

Rabin Fingerprint cải tiến:

Nếu phát hiện sử thay đổi, sử dụng Thuật toán tìm sự khác nhau của hai

văn bản để tìm những chỗ thay đổi:

public static Item[] DiffText(string TextA, string TextB, bool trimSpace, bool

ignoreSpace, bool ignoreCase)

{ Hashtable h = new Hashtable(TextA.Length + TextB.Length); DiffData DataA = new DiffData(DiffCodes(TextA, h, trimSpace,

ignoreSpace, ignoreCase));

DiffData DataB = new DiffData(DiffCodes(TextB, h, trimSpace,

ignoreSpace, ignoreCase));

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

h = null; int MAX = DataA.Length + DataB.Length + 1; int[] DownVector = new int[2 * MAX + 2]; int[] UpVector = new int[2 * MAX + 2]; LCS(DataA, 0, DataA.Length, DataB, 0, DataB.Length, DownVector,

UpVector); Optimize(DataA); Optimize(DataB); return CreateDiffs(DataA, DataB); }

3.8.2. Hệ thống chuyển đổi Trang web thành hình ảnh

protected void Capture(object sender, EventArgs e) { string url = txtUrl.Text.Trim(); Thread thread = new Thread(delegate() { using (WebBrowser browser = new WebBrowser()) { browser.ScrollBarsEnabled = false; browser.AllowNavigation = true; browser.Navigate(url); browser.Width = 1024; browser.Height = 768; browser.DocumentCompleted += new

WebBrowserDocumentCompletedEventHandler(DocumentCompleted);

while (browser.ReadyState != WebBrowserReadyState.Complete) { System.Windows.Forms.Application.DoEvents(); } } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); } private void DocumentCompleted(object sender,

WebBrowserDocumentCompletedEventArgs e)

{ WebBrowser browser = sender as WebBrowser; using (Bitmap bitmap = new Bitmap(browser.Width, browser.Height)) { browser.DrawToBitmap(bitmap, new Rectangle(0, 0, browser.Width,

browser.Height));

using (MemoryStream stream = new MemoryStream()) { bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); byte[] bytes = stream.ToArray(); imgScreenShot.Visible = true; imgScreenShot.ImageUrl = link + Convert.ToBase64String(bytes); } } }

Trong c# có hỗ trợ công cụ giúp 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

Sau khi đã có hình ảnh trang web, sử dung Thuật toán tìm sự khác nhau của

hai hình ảnh đã cải tiến để tìm sự khác nhau giữa hai ảnh, giá tri trả về là một

public Bitmap SoSanh(Image bm1, Image bm2) { Bitmap bmp1 = new Bitmap(bm1); Bitmap bmp2 = new Bitmap(bm2); int w1 = bmp1.Width; int h1 = bmp1.Height; int w2 = bmp2.Width; int h2 = bmp2.Height; int wkq, hkq, x, y; Color b1, b2; if (w1 < w2) wkq = w1; else wkq = w2; if (h1 < h2) hkq = h1; else hkq = h2; Bitmap bitmap = new Bitmap(wkq, hkq); bool[,] k = new bool[wkq, hkq]; bool[,] l = new bool[wkq, hkq]; bool[,] m = new bool[wkq, hkq]; for (y = 0; y < hkq - 1; y++) for (x = 0; x < wkq - 1; x++) k[x, y] = true; for (y = 0; y < hkq - 1; y++) { for (x = 0; x < wkq - 1; x++) { b1 = bmp1.GetPixel(x, y); b2 = bmp2.GetPixel(x, y); bitmap.SetPixel(x, y, Color.FromArgb(b1.R, b1.G, b1.B)); byte g1 = Convert.ToByte(b1.R + b1.G + b1.B); byte g2 = Convert.ToByte(b2.R + b2.G + b2.B); if (Math.Abs(g1 - g2) > 15) k[x, y] = false; } } for (y = 0; y < hkq - 1; y++) for (x = 0; x < wkq - 1; x++) if (k[x, y] == false) { b1 = bmp1.GetPixel(x, y); bitmap.SetPixel(x, y, Color.FromArgb(255, 0, 0)); } return bitmap; }

ảnh được bôi đỏ những chỗ thay đổi

3.8.4. Hệ thống Quản lý thời gian thực

Sử dụng công cụ Timer trong c# để liên tục kiểm tra sự thay đổi

private void timer1_Tick(object sender, EventArgs e) {

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

KiemTra(); }

public void ThemWeb(string Ten, string DiaChi, string ThongTin) { conn.Open(); SQLiteCommand command = conn.CreateCommand(); command.CommandText = SQLInsertWeb; command.Parameters.AddWithValue("TenWeb", Ten); command.Parameters.AddWithValue("DiaChi", DiaChi); command.Parameters.AddWithValue("ThongTin", ThongTin); command.ExecuteNonQuery(); conn.Close(); } public void XoaWeb(string Id) { conn.Open(); SQLiteCommand command = conn.CreateCommand(); command.CommandText = SQLDelete; command.Parameters.AddWithValue("WebId", Id); command.ExecuteNonQuery(); conn.Close(); } public void ThemLichSu(string WebId, DateTime ThoiGian, string Anh, string Html,

string Ping)

{ conn.Open(); SQLiteCommand command = conn.CreateCommand(); command.CommandText = "INSERT INTO LichSu(WebId, ThoiGian, Anh, Html,

Ping) VALUES(?, ?, ?, ?, ?)";

3.8.5. Hệ thống Lưu dữ liệu

command.Parameters.AddWithValue("WebId", WebId); command.Parameters.AddWithValue("ThoiGian", ThoiGian); command.Parameters.AddWithValue("Anh", Anh); command.Parameters.AddWithValue("Html", Html); command.Parameters.AddWithValue("Ping", Ping); command.ExecuteNonQuery(); conn.Close(); }

61

3.9. Thiết kế giao diện

Hình 15. Giao diện phần mềm

+ Giao diện chính gồm thanh công cụ, thời gian mỗi lần kiểm tra, danh

sách website, ngày tháng, bảng thông tin hiện hành và các bảng thông tin chi

tiết.

+ Thanh công cụ gồm các chức năng bắt đầu, dừng lại, thêm, xóa và cài

đặt.

+ Thời gian mỗi lần kiểm tra là một numericUpDown có thể thay đổi.

+ Danh sách website gồm các website đang theo dõi sự thay đổi, khi có sự

thay đổi, phần cảnh báo sẽ xuất hiện ở đây.

+ Bảng ngày tháng hiện ngày hiện hành và các ngày đã lưu dữ liệu.

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

+ Bảng hiện hành thển hiện các lệnh đang thực thi.

+ Các bảng thông tin chi tiết thể hiện chi tiết các thông tin đã giám sát.

Hình 16. Giao diện thêm trang web

Hình 17. Giao diện thêm so sánh sự khác nhau về hình ảnh

63

Hình 18. Giao diện thêm so sánh sự khác nhau của mã nguồn

3.10. Thử nghiệm và những kết quả đạt được

- Tiến hành thử nghiệm tại máy tính của tác giả:

+ Cấu hình máy: Laptop HP, HĐH: Windows 8 - 64bit, CPU: Core i5 -

4210U - 2.4 GHz, RAM: 4GB, ổ cứng HDD 500GB.

+ Mục địch thử nghiệm: Thử nghiệm tính ổn định, chính xác, mức chiếm

bộ nhớ RAM và dung lượng trên ổ cứng của hệ thống.

+ Kịch bản: Chạy chương trình 1 giờ, 5 giờ, 1 ngày với thời gian kiểm tra

là 10 phút/lần, vùng kiểm tra là vùng chứa các nội dung chính, có lưu dữ liệu mã

nguồn, ảnh chụp website với các trang web:

dantri.com: website của TW Hội Khuyến học Việt Nam

google.com: website tìm kiếm của google

vietnamairlines.com: website của Tổng công ty Hàng không Việt Nam

thcsdichvonghau.com: (web của trường THCS Dịch Vọng Hậu, nơi tác giả

đang công tác)

+ Kết quả thử nghiệm:

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Lần 1, chạy 1 giờ từ 19h00 đến 20h05 ngày 24/04/2018

STT

Website

lần

Số lần KT

Kết luận

chiếm bộ nhớ RAM

Số phát hiện thay đổi

Tình trạng bất thường

tổng dung lượng trên ổ cứng

dantri.com

7

1

2

google.com

7

2

0

Không

206 KB

6,1 MB

vietnamairlines.com

7

3

0

thcsdichvonghau.com

7

4

0

Bảng 2. Kết quả thử nghiệm lần 1

Lần 2, chạy 5 giờ từ 14h00 đến 19h05 ngày 25/04/2018

STT

Website

lần

Số lần KT

Kết luận

chiếm bộ nhớ RAM

Số phát hiện thay đổi

Tình trạng bất thường

tổng dung lượng trên ổ cứng

Không

dantri.com

31

1

7

208 KB

26,3 MB

google.com

31

2

0

vietnamairlines.com

31

3

1

thcsdichvonghau.com

31

4

0

Bảng 3. Kết quả thử nghiệm lần 2

Lần 3, chạy 1 ngày từ 19h00 ngày 26/04/2018 đến 19h05 ngày 27/04/2018

STT

Website

lần

Số lần KT

Kết luận

chiếm bộ nhớ RAM

Số phát hiện thay đổi

Tình trạng bất thường

tổng dung lượng trên ổ cứng

Không

dantri.com

145

18

1

207 KB

124,7 MB

google.com

145

0

2

vietnamairlines.com

145

2

3

thcsdichvonghau.com

145

1

4

Bảng 4. Kết quả thử nghiệm lần 3

+ Kết luận: Hệ thống chạy ổn định, không bị lỗi, cảnh báo chính xác bằng

âm thanh khi phát hiện thay đổi, mức độ chiếm bộ nhớ RAM ổn định, không

tăng khi hệ thống chạy lâu dài, dung lượng lưu trữ dữ liệu kiểm tra 1 website

65

trên ổ cứng trung bình 200KB/lần kiểm tra (gồm ảnh chụp, dữ liệu lưu trong

database). Nếu tiến độ kiểm tra 10 phút/lần thì 1 ngày 1 website lưu dữ liệu tốn

30MB dung lượng.

- Tiến hành thử nghiệm tại máy tính của trường THCS Dịch Vọng

Hậu:

+ Cấu hình máy: Máy tính để bàn của giáo viên Tin học quản lý website,

HĐH: Windows 7 - 32bit, CPU: Core E5500 - 2.4 GHz, RAM: 2GB, ổ cứng

HDD 500GB.

+ Mục địch thử nghiệm: Thử nghiệm tính ổn định, chính xác, đáp ứng các

yêu cầu của người sử dụng, mức chiếm bộ nhớ RAM và dung lượng trên ổ cứng

của hệ thống.

+ Kịch bản: Chạy chương trình trong 3 ngày để theo dõi website

thcsdichvonghau.com với thời gian kiểm tra là 10 phút/lần, vùng kiểm tra là

vùng chứa các nội dung chính, chỉ lưu dữ liệu mã nguồn, không lưu ảnh chụp

website. thcsdichvonghau.com: Website của trường THCS Dịch Vọng Hậu.

Ngày

Thời gian

lần

Số lần KT

Kết luận

chiếm bộ nhớ RAM

Số phát hiện thay đổi

Tình trạng bất thường

tổng dung lượng trên ổ cứng

ngày 1

145

2

Không

196 KB

từ 9h00 ngày 2/5 đến 9h00 ngày 3/5

1,3 MB

ngày 2

144

0

Không

198 KB

từ 9h00 ngày 3/5 đến 9h00 ngày 4/5

2,5 MB

ngày 3

144

1

Không

197 KB

từ 9h00 ngày 4/5 đến 9h00 ngày 5/5

3,8 MB

Bảng 5. Kết quả thử nghiệm tại máy tính của trường THCS Dịch Vọng Hậu

+ Kết luận: Hệ thống chạy ổn định trong suốt quá trình thử nghiệm, không

xuất hiện lỗi, lúc 10h00 ngày 2/5, 11h00 ngày 2/5 và 14h30 ngày 14/5 quản trị

web có thêm bài viết, hệ thống đã cảnh báo chính xác bằng âm thanh khi phát

hiện thay đổi, mức độ chiếm bộ nhớ RAM ổn định, trong 3 ngày, chỉ lưu trữ dữ

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

liệu lịch sử và mã nguồn web tốn 3,8 MB dung lượng ổ cứng, số liệu này rất khả

quan cho việc giám sát lâu dài.

Ngoài ra hệ thống cũng được tiến hành thử nghiệm tại một số công ty, cá

nhân và nhận được những phản hồi tích cực cũng như những góp ý từ phía

người sử dụng.

Trên cơ sở những góp ý đó, tác giả đang từng bước hoàn thiện sản phẩm

theo đúng quy trình phát triển của phần mềm.

67

KẾT LUẬN

Qua đề tài này, nhờ sự hướng dẫn tận tình của thầy Lê Quang Minh và các

thầy cô trong khoa Công nghệ thông tin trường Đại học Công nghệ, Đại học

Quốc gia Hà Nội, em đã có thêm nhiều kiến thức và kinh nghiệm trong vấn đề

web và an ninh cũng như việc xây dựng hệ thống phần mềm trong lĩnh vực này,

cụ thể:

- Về mặt lý thuyết:

+ Hiểu được về Website, an ninh mạng, lỗ hổng bảo mật và kỹ thuật tấn

công cũng như cách phòng chống.

+ Hiểu được số thuật toán phát hiện sự thay đổi, và ứng dụng của nó

+ Củng cố kiến thức lập trình và đặc biệt là ngôn ngữ C#, kiến trúc .NET

framework và hệ thống cơ sở dữ liệu quan hệ SQLite.

- Về mặt ứng dụng:

+ Giải quyết cơ bản các yêu cầu đặt ra.

+ Đã thử nghiệm hệ thống trong thực tế, đáp ứng được yêu cầu của người

dùng.

Tuy nhiên do giới hạn về thời gian và có nhiều kiến thức chưa thể nghiên

cứu hết, hệ thống giám sát vẫn còn nhiều hạn chế cần được nghiên cứu, cải tiến

trong các phiên bản tiếp theo, hướng phát triển:

+ Tiếp tục cải thiện, nâng cao tính chính xác của hệ thống.

+ Thêm chức năng giám sát thay đổi trong mã nguồn (PHP, ASP...)

+ Khi có sự thay đổi, đánh giá được mức độ nguy hiểm của thay đổi đó để

cảnh báo.

+ Xây dựng chức năng lưu dữ liệu trên server, đăng nhập bằng tài khoản

online để thuận tiện hơn cho việc quản lý.

TÀI LIỆU THAM KHẢO

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Tiếng Việt:

[1] Lê Đình Duy, “ Tấn Công Kiểu SQL Injection – Tác Hại Và Cách Phòng

Tránh”. 2003

[2] Nguyễn Thanh Nghị, “Tấn công từ chối dịch vụ Dos, Ddos, DRDos” 2008

[3] Dương Anh Đức và Trần Minh Triết Đại. “Mã hóa và Ứng dụng”. 2005

[4] Dương Quang Thiện, .Net toàn tập, tập 1 + tập 2. 2013

[5] Tocbatdat, Tấn công và bảo vệ hệ thống, trang 112-137

[6] https://moinakg.wordpress.com/tag/rabin-fingerprint/

[7] https://github.com/joeltucci/rabin-fingerprint-c

Tiếng Anh:

[8] Eugene Myers. "An O(ND) Difference Algorithm and its Variations".

Algorithmica Vol. 1 số 2, 1986, trang 25

[9] Dr. Mazin S. Al-Hakeem, “ANTI WEB SITE DEFACEMENT SYSTEM

(AWDS)”.

[10] Abdulkader A. Alfantookh, College of Computer and information

Sciences, Kin Saud University, Saudi Arabia, 2006 "WHDRM".

[11] Selvitri F, 2004 “High Performance Issues in Web Search Engines”.

[12] Các hướng dẫn có trong chương trình Visual Studio

69