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ý.
69 trang |
Chia sẻ: yenxoi77 | Lượt xem: 596 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận vă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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
f 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.
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
29
(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 đó.
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
31
(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.
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
33
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.
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
35
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.
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
37
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.
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
39
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
độ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
41
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
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
43
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).
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) - (2
n 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
45
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<m/n)
{
for (r=K*n; r<=K*n+n; r++)
{
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
47
+ 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:
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
49
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
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
51
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
+ 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
53
- 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
3.5. Biểu đồ
Hình 12. Biểu đồ usecase
Quản lý danh
sách web site
Cài đặt cấu
hình website
Cài đặt thời gian
mỗi lần giám sát
Xem thông
tin website
Xem lịch sử
giám sát
So sánh 2 hình
ảnh của website
So sánh 2 mã
nguồn của website Bắt đầu/ tạm dừng
giám sát
Người sử dụng
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
55
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)
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:
Phiên
bản
Số hiệu
phiên bản
Ngày phát hành Visual Studio Được phát hành kèm
theo
1.0 1.0.3705.0 13 tháng 2 năm
2002
Visual Studio.NET Windows XP Tablet
and Media Center
Editions
1.1 1.1.4322.5
73
24 tháng 4 năm
2003
Visual Studio.NET
2003
Windows Server 2003
2.0 2.0.50727.
42
7 tháng 11 năm
2005
Visual Studio 2005 Windows Server 2003
R2
3.0 3.0.4506.3
0
6 tháng 11 năm
2006
Windows Vista,
Windows Server 2008
3.5 3.5.21022.
8
19 tháng 11 năm
2007
Visual Studio 2008 Windows 7, Windows
Server 2008 R2
4.0 4.0.30319.
1
12 tháng 4 năm
2010
Visual Studio 2010
4.5 4.5.50709 15 tháng 8 năm
2012
Visual Studio 2012 Windows 8, Windows
Server 2012
4.6 20 tháng 7 năm
2015
Visual Studio 2015 Windows 10
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
57
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
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.
Rabin Fingerprint cải tiến:
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);
}
}
}
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
59
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
Trong c# có hỗ trợ công cụ giúp 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);
}
}
}
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
ảnh được bôi đỏ những chỗ thay đổi
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;
}
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
61
KiemTra();
}
3.8.5. Hệ thống Lưu dữ liệu
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(?, ?, ?, ?, ?)";
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();
}
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
63
+ 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
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
65
Lần 1, chạy 1 giờ từ 19h00 đến 20h05 ngày 24/04/2018
STT Website Số lần
KT
Số lần
phát
hiện
thay đổi
chiếm
bộ nhớ
RAM
tổng
dung
lượng
trên ổ
cứng
Tình
trạng
bất
thường
Kết
luận
1 dantri.com 7 2
206
KB
6,1
MB
Không
2 google.com 7 0
3 vietnamairlines.com 7 0
4 thcsdichvonghau.com 7 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 Số lần
KT
Số lần
phát
hiện
thay đổi
chiếm
bộ nhớ
RAM
tổng
dung
lượng
trên ổ
cứng
Tình
trạng
bất
thường
Kết
luận
1 dantri.com 31 7 208
KB
26,3
MB
Không
2 google.com 31 0
3 vietnamairlines.com 31 1
4 thcsdichvonghau.com 31 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 Số lần
KT
Số lần
phát
hiện
thay đổi
chiếm
bộ nhớ
RAM
tổng
dung
lượng
trên ổ
cứng
Tình
trạng
bất
thường
Kết
luận
1 dantri.com 145 18 207
KB
124,7
MB
Không
2 google.com 145 0
3 vietnamairlines.com 145 2
4 thcsdichvonghau.com 145 1
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
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 Số lần
KT
Số lần
phát
hiện
thay đổi
chiếm
bộ nhớ
RAM
tổng
dung
lượng
trên ổ
cứng
Tình
trạng
bất
thường
Kết
luận
ngày 1 từ 9h00 ngày 2/5
đến 9h00 ngày 3/5
145 2 196
KB
1,3
MB
Không
ngày 2 từ 9h00 ngày 3/5
đến 9h00 ngày 4/5
144 0 198
KB
2,5
MB
Không
ngày 3 từ 9h00 ngày 4/5
đến 9h00 ngày 5/5
144 1 197
KB
3,8
MB
Không
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
67
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.
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
69
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
Các file đính kèm theo tài liệu này:
- luan_van_xay_dung_he_thong_giam_sat_va_canh_bao_su_thay_doi.pdf