DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt NVD National Vulnerability Database Cơ sở dữ liệu về lỗ hổng bảo mật quốc gia OOP Object Oriented Programming Lập tr
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI
-
LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP PHÒNG CHỐNG TẤN CÔNG ỨNG DỤNG WEB
NGUYỄN TRUNG KIÊN
HÀ NỘI – 2016
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI
-
LUẬN VĂN THẠC SỸ
CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP PHÒNG CHỐNG TẤN CÔNG ỨNG DỤNG WEB
NGUYỄN TRUNG KIÊN
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.018
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN
Trang 3LỜI CAM ĐOAN
Tác giả xin cam đoan rằng:
Số liệu và kết quả nghiên cứu trong luận văn này là hoàn toàn trung thực và chưa từng được sử dụng hoặc công bố trong bất kỳ công trình nào khác
Mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cám ơn và các thông tin trích dẫn trong luận văn đều được ghi rõ nguồn gốc
Tác giả luận văn
Trang 4Cuối cùng, tác giả xin chân thành cảm ơn gia đình và bạn bè đã động viên, khích lệ, sẻ chia, giúp đỡ và đồng hành trong cuộc sống cũng như trong quá trình học tập, nghiên cứu
Hà Nội, ngày … tháng … năm 2016
Tác giả luận văn
Trang 5MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT vi
DANH MỤC CÁC BẢNG viii
DANH MỤC HÌNH VẼ, BIỀU ĐỒ ix
LỜI MỞ ĐẦU 1
CHƯƠNG 1 CÁC DỊCH VỤ WEB VÀ NGUY CƠ BỊ TẤN CÔNG 3
1.1 Các khái niệm trong ứng dụng web 3
1.1.1 Công nghệ Web 2.0 4
1.1.2 Ngôn ngữ lập trình 4
1.1.3 Hosting và tên miền 8
1.1.4 Cơ sở dữ liệu 9
1.1.5 Phiên làm việc 9
1.1.6 Web service 11
1.2 Tình hình an ninh mạng trong nước và trên thế giới 17
1.3 Nguy cơ bị tấn công của ứng dụng web 19
1.4 Kết luận 20
CHƯƠNG 2 KỸ THUẬT TẤN CÔNG VÀ BIỆN PHÁP PHÒNG TRÁNH 21
2.1 Tấn công từ chối dịch vụ 21
2.1.1 Khái niệm 21
2.1.2 Cách thức tấn công 22
2.1.3 Các dạng tấn công 22
2.1.4 Khó khăn trong việc phòng chống 24
2.1.5 Biện pháp phòng chống 25
2.2 Tấn công SQL Injection 28
2.2.1 Khái niệm 28
2.2.2 Cách thức tấn công 28
2.2.3 Các dạng tấn công 30
Trang 62.2.4 Biện pháp phòng tránh 31
2.3 Tấn công XSS 31
2.3.1 Khái niệm 31
2.3.2 Cách thức tấn công 32
2.3.3 Các dạng tấn công 33
2.3.4 Biện pháp phòng chống 34
2.4 Cross-site Request Forgery (CSRF) 35
2.4.1 Khái niệm 35
2.4.2 Cách thức tấn công 36
2.4.3 Các dạng tấn công 36
2.4.4 Biện pháp phòng chống 36
2.5 Một số hình thức tấn công khác 37
2.5.1 Lỗi Heartbleed 37
2.5.2 Khai thác qua Phishing 37
2.5.3 Tấn công bằng phần mềm độc hại 38
2.6 Một số công cụ tấn công 40
2.6.1 Maxisploit Scanner 40
2.6.2 Paros Proxy 42
2.6.3 Havij 42
2.6.4 Sqlmap 43
2.7 Kết luận 45
CHƯƠNG 3 THỰC NGHIỆM PHÒNG CHỐNG TẤN CÔNG WEBSITE SỬ DỤNG KỸ THUẬT SQL INJECTION 46
3.1 Đặt bài toán 46
3.1.1 Mô tả bài toán tấn công và phòng thủ 46
3.1.2 Tìm hiểu website 47
3.2 Tấn công ứng dụng web 51
3.2.1 Chọn website tấn công 51
Trang 73.2.2 Xác định số cột trong bảng 51
3.2.3 Xem tên và phiên bản cơ sở dữ liệu 52
3.2.4 Xem danh sách bảng 52
3.2.5 Xem trường dữ liệu 53
3.2.6 Xem dữ liệu trong bảng 54
3.3 Kết quả thực nghiệm 57
3.4 Giải pháp phòng chống tấn công 57
3.5 Kết luận 58
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59
TÀI LIỆU THAM KHẢO 61
Trang 8DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
Viết tắt Tiếng Anh Tiếng Việt
NVD National Vulnerability
Database
Cơ sở dữ liệu về lỗ hổng bảo mật quốc gia
OOP Object Oriented Programming Lập trình hướng đối tượng
Php Hypertext Preprocessor Ngôn ngữ lập trình PHP
FTP File Tranfer Protocol Giao thức truyền tải file
HTTP HyperText Transfer Protocol Giao thức truyển tải siêu văn bản XML Extensible Markup Language Ngôn ngữ đánh dấu mở rộng
HTML HyperText Markup Language Ngôn ngữ đánh dấu siêu văn bản SMTP Simple Mail Transfer Protocol Giao thức truyền tải thư đơn giản SOAP Simple Object Access Protocol Giao thức truy cập đối tượng đơn giản
WSDL Web Service Description
UDDI Universal Description,
Discovery and Integration
Quy tắc đăng ký, tìm kiếm thông tin Web service
SGML Standard Generalized Markup
Language
Ngôn ngữ đánh dấu tổng quát hóa chuẩn
API Application Programming
JMS Java Message Services Gửi và nhận tin giữa client-server SSL Secure Sockets Layer Tầng đệmbảo mật
HTTPS Hypertext Transfer Protocol
Secure
Giao thức truyền tải siêu văn bản kèm bảo mật
PKI Public Key Infrastructure Hạ tầng cơ sở khóa công khai
DDoS Distributed Denial of Service Tấn công từ chối dịch vụ phân tán XSS Cross Site Scripting Tấn công chèn mã độc
DNS Domain Name System Hệ thống tên miền
Trang 9POP3 Post Office Protocol version 3 Giao thức lấy thư điện tử
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên trên máy
tính CPU Central Processing Unit Bộ xử lý trung tâm
DOM Document Object Model Mô hình đối tượng tài liệu
CSRF Cross Site Request Forgery Kỹ thuật tấn công dựa vào tài khoản
xác thực VPN Virtual Private Network Mạng riêng ảo
Trang 10DANH MỤC CÁC BẢNG
Bảng 3.1 Thống kê dữ liệu trong bảng danh mục sản phẩm 55 Bảng 3.2 Thống kê dữ liệu trong bảng sản phẩm 55 Bảng 3.3 Thống kê dữ liệu trong bảng đặt mua của khách hàng 56
Trang 11DANH MỤC HÌNH VẼ, BIỀU ĐỒ
Hình 1.1 Mô hình cấu trúc ứng dụng website 3
Hình 1.2 Các thành phần của Web service 13
Hình 2.1 Mô hình tấn công DDoS cơ bản 21
Hình 2.2 Mô hình tấn công DDoS 23
Hình 2.3 Mô hình Firewall 26
Hình 2.4 Màn hình đăng nhập trên một số website ngân hàng có Internet Banking 27 Hình 2.5 Mô hình tấn công Sql Injection 28
Hình 2.6 Cấu trúc tấn công Cross-Site Scripting 32
Hình 2.7 Mô hình tấn công Cross-site Request Forgery 35
Hình 2.8 Giao diện chính của MAXISPLOIT SCANNER 41
Hình 2.9 Giao diện chính của Havij 42
Hình 2.10 Giao diện chính của SQLMAP 45
Hình 3.1 Giao diện website doanh nghiệp Flaptop 47
Hình 3.2 Giao diện danh mục sản phẩm của website 48
Hình 3.3 Giao diện chức năng giỏ hàng 49
Hình 3.4 Giao diện chức năng thanh toán đơn hàng 50
Hình 3.5 Đường dẫn kiểm tra lỗi SQL injection 51
Hình 3.6 Lỗi kiểm tra SQL injection 51
Hình 3.7 Đường dẫn xác định số cột trong bảng 51
Hình 3.8 Thông báo cột bị lỗi 52
Hình 3.9 Đường dẫn xác định tên cơ sở dữ liệu 52
Hình 3.10 Tên cơ sở dữ liệu đã lấy được 52
Hình 3.11 Danh sách các bảng trong cơ sở dữ liệu 53
Hình 3.12 Công cụ online chuyển text sang hex 54
Hình 3.13 Danh sách cột trong bảng datab_category 54
Hình 3.14 Hiển thị dữ liệu trong bảng datab_category 55
Trang 12LỜI MỞ ĐẦU
Ngày nay, website đã trở nên phổ biến trong mọi mặt hoạt động đời sống xã hội thông tin, đặc biệt trong các hoạt động thương mại điện tử Website được sử dụng như một công cụ để quảng cáo, lưu trữ, giao dịch các thông tin quan trọng của con người Một số thông tin quan trọng được giữ bí mật trên website có độ an toàn kém Do đó, website luôn trở thành mục tiêu tấn công của tin tặc Các tin tặc tìm mọi cách lợi dụng các lỗ hổng bảo mật trên website nhằm phá hoại, chiếm đoạt tài nguyên, dữ liệu Điều này ngày càng trở thành vấn đề đáng lo ngại Sự quan tâm và đầu tư thích đáng của các đơn vị chủ sở hữu website đến an toàn hệ thống là rất cần thiết Chủ động phòng và chống các vụ tấn công đem lại nhiều lợi ích cho các đơn
vị để bảo vệ nội dung dữ liệu của đơn vị tránh được nguy cơ bị mất và các gian lận thương mại xảy ra
Việc đi sâu tìm hiểu về các dạng tấn công vào các website sẽ giúp cho chúng
ta hiểu hơn về những lỗ hổng trong công tác quản lý website Dựa trên cơ sở đó, những giải pháp giúp các nhà quản lý có biện pháp khắc phục, ngăn chặn sự thâm nhập từ bên ngoài và bên trong Đồng thời, việc tìm hiểu cũng nhấn mạnh vai trò quan trọng trong việc triển khai ứng dụng những công nghệ mới an toàn và bảo mật
hơn Chính vì vậy, tác giả đã chọn đề tài “Các hình thức tấn công và giải pháp
phòng chống tấn công ứng dụng web” làm đề tài luận văn của mình
Luận văn được trình bày theo cấu trúc thành: phần mở đầu, các chương nội dung chính (3 chương) và phần kết luận
Chương 1 Trình bày tổng quan về tình hình an ninh bảo mật trong và ngoài
nước, những khái niệm cơ bản về ứng dụng web, các thành phần có liên quan trong môi trường web và nêu ra một số vấn đề bảo mật đối việc bảo vệ website trước nguy cơ tấn công của tin tặc
Chương 2 Trình bày chi tiết các lỗ hổng bảo mật đang tồn tại trên website từ
mức khái niệm, dạng tấn công và cách thức tấn và từ đó đưa ra những phương pháp phòng chống phù hợp
Trang 13Chương 3 Trình bày về thực nghiệm tấn công website bằng kỹ thuật SQL
Injection Phân tích và đánh giá một số kết quả trong việc phát hiện và phòng chống các lỗ hổng bảo mật ứng dụng web
Phần cuối là kết luận và hướng phát triển cho luận văn
Trang 14CHƯƠNG 1 CÁC DỊCH VỤ WEB VÀ NGUY CƠ BỊ TẤN CÔNG
1.1 Các khái niệm trong ứng dụng web
Ứng dụng web là một chương trình chạy trên nền tảng web, thường được cài đặt trên máy chủ của một Web Server trên mạng Người dùng kết nối vào mạng
và sử dụng ứng dụng thông qua một trình duyệt Ứng dụng web có ưu điểm là truy cập dễ dàng, tiện lợi và không cần cài đặt trên máy cá nhân Giao diện của ứng dụng web có thể tùy biến linh hoạt, đẹp và phong phú giúp người sử dụng có thể dễ dàng thao tác
Tầng hiển thị
Tầng logic
Tầng cơ sở dữ liệu
Web server
Hình 0.1 Mô hình cấu trúc ứng dụng website
Cấu trúc một ứng dụng web thường có ba tầng gồm: Tầng trình bày, tầng logic và tầng cơ sở dữ liệu Tầng trình bày có nhiệm vụ hiển thị dữ liệu người dùng theo bố cục trang web thông qua trình duyệt web Tầng logic xử lý thông tin yêu cầu từ phía người dùng, có thể lấy thông tin từ cơ sở dữ liệu và trả về tầng hiển thị cho người dùng, như vậy tầng logic được xem như cầu nối Tầng cơ sở dữ liệu là nơi lưu trữ thông tin, quản lý file và phân quyền truy cập Các hệ quản trị cơ sở dữ liệu như My SQL, Sql Server, Postgre SQL, Mongodb, …
Trang 151.1.1 Công nghệ Web 2.0
Chúng ta đang được sống trong thời đại Web 2.0, thời đại các ứng dụng web
có thể tương tác hay cộng tác với người dùng Công nghệ Web 2.0 đã được giới thiệu từ những năm 1999 bởi Darcy DiNucci nhưng phải đến năm 2004, công nghệ này mới được phổ biến Công nghệ Web 2.0 không đưa ra nhiều cập nhật hoặc tính năng kỹ thuật mới Tuy nhiên, công nghệ này có ảnh hưởng tới cách thiết kế và trải nghiệm người dùng trong ứng dụng web
Trước đây, công nghệ Web 1.0 được đưa ra bởi Tim Berners-Lee vào khoảng năm 1989, nó bao gồm phần lớn là web tĩnh, các trang web được phát triển với số lượng ít Web 1.0 chỉ là một cổng thông tin, người truy cập thụ động tiếp nhận thông tin, không có khả năng tương tác Chúng ta có thể hiểu đơn giản hơn là với Web 1.0 thì người sử dụng chỉ có thể đọc và xem
Xu hướng Web 2.0 đang diễn ra mạnh mẽ và là một điều tất yếu Các ứng dụng Web 2.0 có thể kể đến mạng xã hội, nhật ký web, ứng dụng doanh nghiệp, … Các ứng dụng này mang đến cho người dùng sự giao tiếp, tương tác với trang web, với người dùng khác Ví dụ, Facebook là một ví dụ phổ biến trong số các mạng xã hội với khoảng 1.65 tỷ người dùng hàng tháng Ở Việt Nam, khoảng 1/3 dân số sử dụng khoản Facebook Mạng xã hội Facebook mạng lại cho người dùng nhiều những tính năng tương tác như đọc báo, nhắn tin, gọi điện, … kết nối con người gần nhau hơn
1.1.2 Ngôn ngữ lập trình
Ngôn ngữ lập trình là một dạng ngôn ngữ chuẩn hóa dùng để biểu diễn các thuật toán trên máy tính Ngôn ngữ này có đặc điểm là dễ hiểu và dễ sử dụng cho người lập trình Bên cạnh đó, nó phải miêu tả đầy đủ các tiến trình hoạt động để chạy trên các máy tính Ngôn ngữ lập trình được chia làm 3 loại:
Ngôn ngữ máy: Các lệnh yêu cầu máy tính thực hiện được mã hóa bằng các kí hiệu 0 và 1 Chương trình được viết trên ngôn ngữ máy có thể được nạp vào bộ nhớ và thực hiện ngay
Trang 16Hợp ngữ: Sử dụng các từ viết tắt để diễn tả câu lệnh Các từ này sử dụng ngôn ngữ tự nhiên là tiếng Anh
Ngôn ngữ bậc cao: Các lệnh được mã hóa bằng một ngôn ngữ gần với ngôn ngữ tự nhiên Các chương trình viết bằng ngôn ngữ bậc cao phải sử dụng trình dịch để chuyển đổi thành chương trình trên ngôn ngữ máy Chương trình dịch có thể là biên dịch hoặc thông dịch Trình thông dịch sẽ dịch từng câu lệnh theo yêu cầu thực thi và chương trình đích vừa tạo ra sẽ không được lưu lại Trong khi đó, trình biên dịch sẽ dịch toàn bộ chương trình, cho ra chương trình đích được lưu lại trong máy tính rồi mới thực hiện chương trình Lập trình bằng ngôn ngữ bậc cao dễ viết hơn
vì các lệnh được mã hóa gần với ngôn ngữ tự nhiên
Mỗi ngôn ngữ lập trình có những đặc điểm về dữ liệu, cấu trúc dữ liệu, câu lệnh, dòng điều khiển, tên, các tham số, các cơ chế tham khảo và sự tái sử dụng, Trong lịch sử của ngôn ngữ lập trình, các phương pháp tiếp cận lập trình cũng rất đa dạng Các phương pháp có thể kể tới như :
Lập trình tuyến tính: Chương trình thực hiện tuần tự các câu lệnh từ đầu đến cuối Ưu điểm của phương pháp này là đơn giản và dễ sử dụng, chỉ
sử dụng cho các chương trình đơn giản Nhược điểm của lập trình tuyến tính là không thể sử dụng cho các bài toán phức tạp
Lập trình cấu trúc: Chương trình được chia thành các chương trình con, mỗi chương trình con thực hiện 1 công việc xác định Mỗi chương trình con có thể được thực hiện lặp đi lặp lại Một vấn đề của phương pháp này
là phải kết hợp chặt chẽ giữa cấu trúc dữ liệu và giải thuật Tư duy của phương pháp này chỉ phù hợp với những bài toán nhỏ Khi áp dụng với bài toán lớn và phức tạp, các module trong chương trình tỏ ra không hiệu quả
Lập trình hướng đối tượng: Là một phương pháp để thiết kế một chương trình bởi sử dụng các lớp và các đối tượng Dữ liệu được đóng gói cho các lớp đối tượng Các dữ liệu này được truy cập thông qua những phương thức của đối tượng Các lớp, đối tượng có thể kế thừa thuộc tính
Trang 17và phương thức của các lớp, đối tượng khác nên có thể sử dụng lại mã nguồn Phương pháp lập trình này phù lớp với những bài toán lớn và phức tạp
Một ứng dụng web thường được xây dựng bằng các ngôn ngữ chạy phía Web server như Php, Java, C#… Mỗi ngôn ngữ có những đặc điểm và cấu hình môi trường hoạt động khác nhau
Java là ngôn ngữ lập trình hướng đối tượng được phát triển bởi James Gosling năm 1991 Ban đầu, Java có tên gọi là Oak có nghĩa là cây sồi vì quanh nơi làm việc của ông có rất nhiều loại cây này Năm 1995 Oak được đổi tên thành Java
và được tạp chí Times bình chọn là một trong mười sản phẩm tốt nhất Java được sử dụng để làm các ứng dụng cá nhân, ứng dụng web, ứng dụng cho doanh nghiệp và ứng dụng điện thoại Một chương trình Java được biên dịch thành bytecode, sau đó
sẽ chạy trên môi trường thực thi Java là sự lựa chọn của nhiều lập trình viên vì một
chương trình Java có thể chạy trên mọi nền tảng đúng với tiêu chí “write one, run
anywhere” viết một lần, chạy nhiều nơi
Java có rất nhiều đặc điểm và tính năng nổi bật so với các ngôn ngữ khác
Đơn giản: Cú pháp của Java dựa trên ngôn nghữ C++, đã được loại bỏ
một số tính năng ít sử dụng như con trỏ tường minh, nạp chồng toán tử,
… và hỗ trợ dọn rác tự động
Hướng đối tượng: Lập trình hướng đối tượng (OOP) là một phương
pháp làm đơn giản hóa việc phát triển và duy trì phần mềm bằng việc cung cấp một số quy tắc Một số khái niệm cơ bản của hướng đối tượng là: Đối tượng, lớp, tính kế thừa, tính đa hình, tính trừu tượng, tính bao đóng
Độc lập nền tảng: Một nền tảng là môi trường phần cứng hoặc phần
mềm chương trình chạy Có hai loại nền tảng chủ yếu: Dựa trên phần mềm và dựa trên phần cứng Java cung cấp Nền tảng Java khác với nhiều nền tảng khác ở chỗ nó chạy ở trên các nền tảng phần cứng khác
Trang 18Bảo mật: Chương trình Java chạy trong môi trường thực thi ảo Ngoài ra,
ngôn ngữ Java cũng cung cấp các tính năng bảo mật riêng như hạn chế sử dụng con trỏ, cung cấp trình quản lý bảo mật,
Ngôn ngữ mạnh : Java sử dụng hệ quản trị bộ nhớ mạnh mẽ Bên cạnh đó còn có trình dọn rác tự động, xử lý ngoại lệ và kiểm tra kiểu Tất cả những thành phần đó làm cho Java trở thành một ngôn ngữ mạnh
Độc lập cấu trúc: Đó là không có đặc điểm nào mà phụ thuộc vào trình
triển khai
Portable: Chương trình được biên dịch thành Java Bytecode và chạy bất
cứ nền tảng nào
Hiệu suất cao: Sử dụng Just-In-Time compilers là một trình biên dịch hỗ
trợ biên dịch các chức năng tương tự cùng lúc, giảm thời gian biên dịch Trình biên dịch này giúp ngôn ngữ Java nâng cao hiệu năng, phát hiện lỗi
và gỡ lỗi được dễ dàng, nhanh chóng
Phân tán: Chúng ta có thể tạo các ứng dụng phân tán trong Java Chúng
ta có thể truy cập các file bằng việc gọi các phương thức từ bất cứ thiết bị nào trên Internet
Đa luồng: Luồng thực thi giống như một chương trình riêng rẽ, thực thi
một cách đồng thời Chúng ta có thể viết các chương trình Java mà xử lý nhiều tác vụ cùng một lúc bằng việc định nghĩa nhiều luồng Lợi thế chính của đa luồng là nó chia sẻ cùng bộ nhớ
Khác với Java, Php là một ngôn ngữ kịch bản, thông dịch và mã nguồn mở Php là ngôn ngữ có cú pháp đơn giản, dễ sử dụng và thời gian xây dựng sản phẩm ngắn Php có thể nhúng vào trong các trang html để thực thi chức năng Hiện nay, Php đã phát hành phiên bản Php 7, cung cấp nhiều tính năng mới Các ứng dụng lớn
sử dụng Php có thể kể tới Wordpress, Facebook,
PHP chạy trên môi trường Webserver và lưu trữ dữ liệu thông qua hệ quản trị cơ sở dữ liệu nên PHP thường đi kèm với Apache, My SQL và hệ điều hành Linux (LAMP)
Trang 19Apache là một phần mềm web server có nhiệm vụ tiếp nhận yêu cầu từ trình duyệt người dùng sau đó chuyển giao cho PHP xử lý và gửi trả lại cho trình duyệt
My SQL cũng tương tự như các hệ quản trị cơ sở dữ liệu khác (Postgress, Oracle, SQL server ) đóng vai trò là nơi lưu trữ và truy vấn dữ liệu
Linux là hệ điều hành mã nguồn mở được sử dụng rất rộng rãi cho các web server Thông thường các phiên bản được sử dụng nhiều nhất là RedHat Enterprise Linux, Ubuntu
C# là một ngôn ngữ lập trình đơn giản, hiện đại, mục đích tổng quát, hướng đối tượng được phát triển bởi Microsoft Ngôn ngữ này được phát triển bởi Anders Hejlsberg và các cộng sự của ông trong khi phát triển Net Framework C# cho phép
sử dụng các ngôn ngữ cấp cao đa dạng trên các nền tảng và cấu trúc máy tính khác nhau Các ứng dụng WinForm, WebForm được xây dựng với Net Framework Ngôn ngữ này được lập trình bằng công cụ Visual Studio kết hợp với cơ sở dữ liệu Sql Server hoặc Oracle Ứng dụng viết bằng ngôn ngữ này không thể chạy trên server Linux và rất khó lập trình nếu như không có Visual Studio
Còn nhiều ngôn ngữ lập trình khác cũng đang trở lên phổ biến để xây dựng ứng dụng như Javascript, Python, Ruby, Go lang, Các kỹ thuật tấn công vào một website ngày nay chủ yếu tập trung vào những lỗ hổng trong quá trình tạo ứng dụng của những nhà sản xuất website hơn là tấn công vào hệ thống mạng hoặc hệ điều hành
1.1.3 Hosting và tên miền
Hosting là không gian lưu trữ trên máy chủ có cài đặt các dịch vụ như world wide web (www), truyền file (FTP), Mail, Hosting là nơi diễn ra tất cả các hoạt động trao đổi thông tin giữa website với người sử dụng Một doanh nghiệp có thể thuê hosting của nhà cung cấp dịch vụ hoặc tự trang bị máy chủ riêng tùy vào kinh phí cũng như mục đích sử dụng Dung lượng hosting là không gian lưu trữ trên server Băng thông là một thông số chỉ ra giới hạn dung lượng đối đa của các thông tin mà website lưu trữ qua lại trong mỗi tháng
Trang 20Tên miền là một địa chỉ định danh trên Internet đại diện cho một website Website được truy cập bằng cách viết tên miền trên trình duyệt Tên miền cũng có rất nhiều loại được phân biệt với nhau bằng đuôi như tên miền tổ chức chính phủ org, tên miền giáo dục edu hoặc tên miền công ty, doanh nghiệp, tổ chức com hoặc tên miền quốc gia vn, Mỗi tên miền là duy nhất trên thế giới, việc mua bán tên miền có thể thực hiện thông qua dịch vụ của nhà cung cấp
1.1.4 Cơ sở dữ liệu
Để xây dựng một website có nội dung được cập nhật liên tục, không thể thiếu được đó là một cơ sở dữ liệu lưu trữ thông tin, dữ liệu của website Cơ sở dữ liệu được thiết kế phù hợp cho mỗi ứng dụng web riêng Trong cơ sở dữ liệu, các dữ liệu được lưu trữ thành các bản ghi có cấu trúc, có các trường dữ liệu và có mối quan hệ ràng buộc với nhau Mô hình cơ sở dữ liệu được chia thành:
Cơ sở dữ liệu dạng file
Cơ sở dữ liệu quan hệ
Cơ sở dữ liệu bán cấu trúc
Cơ sở dữ liệu hướng đối tượng
Các ngôn ngữ lập trình sẽ truy vấn dữ liệu từ cơ sở dữ liệu và hiển thị lên trang web Ngoài ra, các hệ quản trị cơ sở dữ liệu như My SQL, SQL Server, Postgres, được phát triển để thao tác với cơ sở dữ liệu
1.1.5 Phiên làm việc
1.1.5.1 Cookie
Cookie là một đoạn dữ liệu được ghi vào đĩa cứng hoặc bộ nhớ của máy người sử dụng Nó được trình duyệt đính kèm vào header của request gửi lên web server Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví
dụ thời điểm lần cuối ta ghé thăm website, đánh dấu ta đã login hay chưa,
Cookie được tạo ra bởi web server dựa vào những thông tin của người truy cập, sau đó, web server được gửi về trình duyệt Ngoài ra, mỗi trình duyệt quản lý
Trang 21và lưu trữ cookie theo cách riêng của mình, cho nên hai trình duyệt cùng truy cập vào một website sẽ nhận được hai cookie khác nhau
Một máy ở phía người dùng có thể lưu được số lượng lớn cookies, khoảng
300 cookies Kích thước tối đa cho một cookies là 4KB Mỗi website giới hạn khoảng 20 cookies Nếu vượt quá giới hạn lưu trữ, máy phía người dùng tự động xóa đi những cookies ít sử dụng hoặc không còn sử dụng
1.1.5.2 Session
Session là phiên làm việc, mục đích của nó giản để lưu trữ một biến và duy trì biến đó tồn tại từ trang này sang trang khác Nếu như với các biến thông thường, khi trang web bắt đầu thực thi, biến đó sẽ được cấp phát bộ nhớ, lưu giá trị và thu hồi vùng nhớ sau khi trang kết thúc Session sẽ khác, nó có thể được tạo ra, tồn tại trên server, có thể xuyên từ trang này sang trang khác, chỉ mất đi khi ta xóa, hết hạn hoặc tắt trình duyệt
Session khi sinh ra được lưu trên một file có tên dài dòng, khó đoán và được tạo ngẫu nhiên là session id trên máy chủ, và đồng thời ở máy client cũng có một cookie sinh ra có nội dung đúng như session ID đối với mỗi ngôn ngữ lập trình web
sẽ có tên cookie quy định như Php là PHPSESSID, Jsp là JSESSIONID, … Các giá trị của biến session sẽ được lưu trong file
Thông thường session được ứng dụng vào việc quản lý đăng nhập, đăng xuất của thành viên Với những tác vụ cần xác nhận là thành viên mới sử dụng được, chúng ta cần yêu cầu thành viên đăng nhập vào hệ thống Nhưng nếu chỉ dùng biến thông thường thì mỗi lần cần thực hiện lại phải đăng nhập vào Trong khi ấy, nếu dùng session thì sau khi đăng nhập, một biến session được tạo ra, thì biến này sẽ tồn tại từ trang này sang trang khác, như thế khi cần thực hiện tác vụ khác cần đăng nhập, ta chỉ cần kiểm tra xem có tồn tại biến session này hay chưa là đủ Nếu chưa tồn tại thì người dùng cần đăng nhập để thực hiện tiếp chức năng
Trang 221.1.6 Web service
Web service là dịch vụ web khác với khái niệm web và website thông thường Web service trả về người dùng các thông tin dữ liệu dạng thô, các ứng dụng như ứng dụng web, ứng dụng điện thoại, … sẽ chế biến dữ liệu sau đó hiển thị cho người dùng cuối trên giao diện Các ứng dụng có thể sử dụng một hoặc nhiều Web service để thực hiện theo chức năng của ứng dụng Với sự phát triển và lớn mạnh của Internet, Web service thật sự là một công nghệ đáng được quan tâm để giảm chi phí và độ phức tạp trong tích hợp và phát triển hệ thống
1.1.6.1 Đặc điểm
Web service mô tả một cách thức chuẩn để tích hợp các ứng dụng dựa trên nền tảng Web, sử dụng các chuẩn XML (Extensible Markup Language), UDDI (Universal Description Discovery and Integration), SOAP (Simple Object Acces Protocol), WSDL (Web Services Description Language) thông qua giao thức Internet
Web service có khả năng giúp cho việc tương tác trong những môi trường khác nhau trở lên đơn giản Các ứng dụng web thường được triển khai trên các môi trường phù hợp với ngôn ngữ lập trình Khi được xây dựng trên môi trường khác nhau, các thành phần trong ứng dụng cần một chuẩn để giao tiếp và trao đổi thông tin với nhau Môi trường kết nối giữa các thành phần có thể trong mạng cục bộ hoặc qua mạng Internet Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví
dụ như Apache, My SQL Server, Jboss hay Net, …
Ngày nay, các ứng dụng tích hợp Web service đã phát triển rất mạnh mẽ, đặc biệt trong điều kiện thương mại điện tử đang bùng nổ và phát triển không ngừng Bất kì một lĩnh vực nào trong cuộc sống cũng có thể tích hợp công nghệ Web service Tích hợp Web service mang lại sự tiện lợi và khả năng tái sử dụng cao Do vậy, việc phát triển và tích hợp các ứng dụng với Web service đang là hướng đi đúng đắn trong tương lai
Trang 231.1.6.2 Ưu điểm và nhược điểm của Web service
a Ưu điểm của Web service
Web Services có những ưu điểm chính sau:
Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình, chức năng nghiệp vụ đóng gói trong giao diện Web service
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác
Khả năng vượt tường lửa: Web Service hoạt động trên nền HTTP nên sử dụng cổng 80, là cổng mà tường lửa cho phép
Hoạt động trên đa môi trường: Web Service dựa trên công nghệ XML được hỗ trợ bởi tất cả các hệ điều hành kể cả môi trường di dộng
Tính linh hoạt, dễ chuyển đổi: Web Service chỉ bao gồm các hàm nên việc thay đổi dễ dàng và giảm chi phí đường truyền do truyền dữ liệu không định dạng HTML
Sử dụng các giao thức và chuẩn mở Giao thức và định dạng dữ liệu dựa trên văn bản, giúp các lập trình viên dễ dàng hiểu được
b Nhược điểm của Web service
Mặc dù Web service có nhiều ưu điểm như trên, nó vẫn còn tồn tài một số
nhược điểm như:
Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt
Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
Phụ thuộc nhiều vào công nghệ
Có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành
1.1.6.3 Các thành phần của Web service
Các thành phần trong Web service được mô tả trong Hình 1.2
Trang 24Tầng xử lý nghiệp vụ (Business Process)
Tầng dịch vụ (Service)Tầng mô tả dịch vụ ( Service Descript)
Tầng giao thức tương tác dịch vụ ( Service
Communication Protocol)Tầng vận chuyển (Transport Layer)
Hình 0.2 Các thành phần của Web service
Tầng giaovận (TransportLayer) có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm các giao thức như HTTP, SMTP,
Tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP SOAP cho phép người dùng triệu gọi một service từ xa thông qua một message XML Có nhiệm vụ giải mã các thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng
Tầng mô tả dịch vụ (Service Description) sử dụng để miêu tả các giao diện chung cho một Web service cụ thể với công nghệ chuẩn là WSDL và XML WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML Web service sẽ sử dụng ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web cung cấp
Tầng dịch vụ (Service) cung cấp các chức năng của service
Tầng xử lý nghiệp vụ (Business Process) tiến hành các bước xử lý thông tin đầu vào để cho kết quả đầu ra theo yêu cầu, là các hoạt động có tính chất nghiệp vụ
Tầng đăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI UDDI dùng cho cả người dùng và SOAP server, nó cho phép đăng ký
Trang 25dịch vụ để người dùng có thể gọi thực hiện service từ xa qua mạng, hay nói cách khác một service cần phải được đăng ký để cho phép các client
có thể gọi thực hiện
a XML - Extensible Markup Language
XML là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được
sử dụng để định nghĩa các thành phần dữ liệu trên trang web XML là viết tắt của Extensible Markup Language, tạm dịch là ngôn ngữ đánh dấu mở rộng XML là ngôn ngữ xây dựng cấu trúc tài liệu văn bản, được thiết kế dựa trên SGML theo tiêu chuẩn ISO 8879 nhằm phục vụ việc quản trị các tài liệu điện tử XML được xây dựng từ dưới sự chỉ đạo của W3C từ năm 1996 và chính thức thông qua vào 2/1998
Do Web service là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp XML là công
cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một Web service, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML Khi đó, các thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML- RPC và có thể tương tác với nhau trong một thể thống nhất
Ngôn ngữ XML không chỉ dùng để mô tả sự trình bày nội dung tài liệu và còn có phương pháp định ra nội dung, sắp xếp cấu trúc, từ vựng và cú pháp của dữ liệu XML có cấu trúc mã chặt chẽ, tách biệt nội dung ra khỏi hình thức của dữ liệu
và mang lại thông tin đầy đủ về dữ liệu góp phần hỗ trợ cho việc tìm kiếm và sử dụng thông tin được dễ dàng hơn, cho phép hiển thị cùng một tài liệu trên một số ứng dụng hoặc thiết bị ngoại vi khác nhau mà không phải tạo ra phiên bản tài liệu mới
Trang 26viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở
Các thẻ XML không được định nghĩa trước mà do người lập trình tự định nghĩa XML xây dựng cấu trúc tài liệu và dữ liệu cho phép trao đổi, chia sẻ và sử dụng thông tin phân tán trên các hệ thống khác nhau XML hỗ trợ người dùng thông qua khả năng tạo nội dung động, hỗ trợ việc thay thế những hệ thống cũ và các yêu cầu hợp nhất dữ liệu
Cấu trúc của XML
Một tài liệu XML bao gồm 2 phần:
Cấu trúc logic: Định nghĩa các phần tử, các thuộc tính, các kiểu dữ liệu…
Cấu trúc vật lý: Chứa dữ liệu và các phần tử chứa dữ liệu như text, image, media
b UDDI - Universal Description, Discovery and Integration
UDDI là một thư mục để lưu trữ các thông tin về các Web Service Để có thể
sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách
sử dụng và biết được đối tượng nào cung cấp dịch vụ UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng Web service Những thông tin về Web service được sử dụng và công bố lên mạng sử dụng giao thức này Nó sẽ kích hoạt các ứng dụng để tìm kiếm thông tin của Web service khác nhằm xác định xem dịch vụ nào
sẽ cần đến nó
UDDI là một nơi mà các nhà cung cấp cho phép khách hàng đăng kí dịch vụ
để sử dụng các chức năng của web service UDDI sẽ định vị các thông tin về các web service được cung cấp bởi các nhà cung cấp dịch vụ, danh sách các nhà cung cấp dịch vụ trên web service nào đó, chi tiết về kĩ thuật sử dụng web service do mình đưa ra
UDDI cung cấp các chuẩn kỹ thuật để mô tả, khám phá và tập hợp các cài đặt dựa trên Internet Các đặc tính kĩ thuật phát triển nhanh chóng vì nó nhận được phản hồi nhanh nhạy từ các cài đặt, những cài đặt này xác nhận các khái niệm và
Trang 27Trong kinh doanh, nó giúp mở rộng và đơn giản hóa các giao dịch giữa các doanh nghiệp, tạo mối quan hệ giữa nhà sản xuất với các khách hàng khác nhau, mỗi khách hàng ứng với một tập các giao thức và các chuẩn hỗ trợ miêu tả dịch vụ rất linh hoạt sử dụng bất kỳ giao thức tương tác nào, lấy dữ liệu từ các nhà cung cấp khác trong cùng một lĩnh vực có liên quan UDDI dựa vào những chuẩn đã có như
là ngôn ngữ đánh dấu mở rộng và giao thức truy cập đối tượng đơn giản SOAP để xây dựng nền tảng cho việc đăng ký, các đặc tính, giải quyết những vấn đề quan trọng cho việc phát triển dịch vụ web như: Bảo mật, tăng cường quốc tế hóa, khả năng tương tác nội bộ và hàng loạt các cải tiến hàm API để cải tiến công cụ tốt hơn
c. WSDL – Web Service Description Language
WSDL định nghĩa cách mô tả Web service theo cú pháp tổng quát của XML, bao gồm các thông tin
Tên dịch vụ
Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của Web service
Loại thông tin: thao tác, tham số, những kiểu dữ liệu
Một WSDL hợp lệ gồm hai phần: phần giao và phần thi hành mô tả thông tin truy xuất cơ sở dữ liệu Cả hai phần này sẽ được lưu trong 2 tập tin XML tương ứng
là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác với dịch vụ Web được đưa vào thư mục của WSDL
WSDL thường được sử dụng kết hợp với lược đồ XML và SOAP để cung cấp Web service qua Internet Một client khi kết nối tới Web service có thể đọc WSDL để xác định những chức năng sẵn có trên server Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL
d SOAP – Simple Object Access Protocol
Các dịch vụ Web có thể được truy xuất bằng một giao thức là Simple Object Access Protocol SOAP là một giao thức giao tiếp có cấu trúc như XML Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều
Trang 28ngôn ngữ và các hệ điều hành khác nhau SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP
Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client Cả SMTP và HTTP đều là những giao thức ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay nó có thể làm việc rất tốt với cơ sở hạ tầng Internet Thông điệp theo định dạng SOAP là một văn bản XML bình thường bao gồm các phần tử sau:
Phần tử gốc – envelop: Phần tử bao trùm nội dung thông điệp, khai báo văn bản XML như là một thông điệp SOAP
Phần tử đầu trang – header: Chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản Header còn có thể mang những dữ liệu chứng thực, những chứ ký số, thông tin mã hóa hay cài đặt cho các giao dịch khác
Phần tử khai báo nội dung chính trong thông điệp, chứa các thông tin yêu cầu và thông tin được phản hồi
Phần tử đưa ra các thông tin về lỗi, cung cấp thông tin lỗi xảy ra trong quá trình xử lý thông điệp
1.2 Tình hình an ninh mạng trong nước và trên thế giới
Thống kê 6 tháng đầu năm 2015, trung tâm ứng dụng ngăn chặn (ADC) [5]
đã phân tích 297,954 vụ tấn công và 22,850,023 cảnh báo trên 198 ứng dụng website Ngoài ra, tổ chức này còn phân tích kỹ lưỡng hành vi của những kẻ tấn công Các lỗ hổng nguy hiểm được đánh giá theo tác động bảo mật của chúng cao hay thấp, chẳng hạn như lỗ hổng cho phép tin tặc thực thi các mã độc từ xa được xem là lỗ hổng phổ biến và gây nguy cơ mất an ninh cao Theo phân tích của ADC, năm 2015, một số xu hướng tấn công từ năm 2014 tiếp tục được thực hiện Cụ thể, các vụ tấn công sử dụng Sql Injection và Cross-Site-Script đã tăng lên
Một website tồn tại quá nhiều lỗ hổng bảo mật là cơ sở để các tin tặc truy cập
và đánh cắp cơ sở dữ liệu của cá nhân, tổ chức như thông tin thẻ tín dụng, danh sách khách hàng, báo cáo tài chính, làm sai lệch quy trình hoạt động, hoạt động vì mục
Trang 29đích bất hợp pháp, … Tháng 6-2015, tin tặc đã phát hiện được lỗ hổng và tấn công vào Văn phòng quản lý nhân sự ở Mỹ Cuộc tấn công này kiến cho thông tin cá nhân của hơn 20 triệu người bị đánh cắp, trong đó có khoảng 5.6 triệu người bị đánh cắp cả dữ liệu vân tay
Ở Việt Nam, thống kê năm 2015 [17] của công ty an ninh mạng Bkav, có 5.226 website của các cơ quan, doanh nghiệp tại Việt Nam bị hacker xâm nhập, trong đó có 340 website của cơ quan chính phủ gov.vn và tổ chức giáo dục edu.vn
Trong diễn biến căng thẳng trước tình hình biển Đông, hacker Trung Quốc cũng tăng cường tấn công vào các cơ quan nhà nước Có 1.597 trường hợp trong đó nhiều nhóm hacker Trung Quốc tấn công thay đổi giao diện các trang web đặt tại Việt Nam, trong đó, có khoảng 10 trang thuộc các cơ quan quản lý nhà nước Gần đây nhất là vụ tấn công vào hệ thống của hãng hàng không Việt Nam Airline vào cuối tháng 7/2016 Sự việc đã gây ra những hậu quả vô cùng nghiêm trọng với một
hệ thống lớn và có tầm quan trọng đối với quốc gia như vậy Khoảng 400.000 dữ liệu khách hàng của Việt Nam Airline đã bị đánh cắp Nhóm hacker tấn công website Vietnam Airlines tự xưng là 1937CN Tuy rất nổi tiếng với nhiều vụ tấn công tương tự với các quốc gia khác nhưng cho đến nay thông tin về nhóm hacker này còn khá ít
Đầu tháng 11/2016, website https://www.vietnamworks.com chuyên về lĩnh vực tìm việc và tuyển dụng quy mô lớn ở Việt Nam đã bị tin tặc tấn công và đánh cắp nhiều thông tin thành viên Sau đó, Cục an toàn thông tin – Bộ Thông tin và Truyền thông đã đưa ra khuyến cáo đối với người dùng có tài khoản Sự việc thậm chí còn tệ hơn khi tin tặc lấy được thông tin mật khẩu chưa được mã hóa của người dùng Qua kiểm tra ngẫu nhiên, nhiều người dùng sử dụng chung mật khẩu cho nhiều tài khoản khác nhau kể cả tài khoản ngân hàng Hiện tại, tin tặc tấn công vẫn chưa bị phát hiện nên trong thời gian tới những cuộc tấn công có thể tiếp tục xảy ra Những vụ tấn công liên tiếp xảy ra trong thời gian gần đây nhằm vào những công ty lớn cho thấy nguy cơ mất an toàn an ninh có thể xảy ra ở bất kỳ đâu Các biện pháp phòng tránh sẽ không bao giờ thừa để bảo vệ thông tin cho công ty, doanh nghiệp trong thời đại số ngày nay
Trang 301.3 Nguy cơ bị tấn công của ứng dụng web
Với các cá nhân, tổ chức hay doanh nghiệp thì website là công cụ hữu ích để quảng cáo, quản lý thông tin hỗ trợ đắc lực mang lại lợi nhuận và hiệu quả kinh tế cao Tuy nhiên, nhiều doanh nghiệp lại không quan tâm, coi trọng công tác bảo mật cho website Các mối nguy hiểm đe dọa đến từ môi trường mạng ngày càng khó lường, nhiều lỗ hổng bảo mật mới được phát hiện và khai thác bởi các tin tặc làm cho thế giới mạng trở lên phức tạp Bảo mật website, đưa ra những giải pháp phòng chống tấn công cho website đã trở thành một điều thiết yếu với sự sống còn của doanh nghiệp
Xu hướng tấn công theo thống kê năm 2015 là tin tặc phát tán các mã độc hại trên mạng và khi người dùng bấm vào các đường link chứa mã độc hại đó, thông tin
cá nhân của họ sẽ bị đánh cắp Và một kiểu tấn công khác là các cuộc tấn công từ chối dịch vụ nhắm vào các website hoặc hệ thống mạng Các cuộc tấn công này không xâm nhập được vào hệ thống, không lấy cắp được dữ liệu nhưng lại có thể làm cho dịch vụ của website bị ngưng trệ hoàn toàn Việc phòng chống các cuộc tấn công đang là một bài toán khó cho các cơ quan, doanh nghiệp hoạt động phụ thuộc vào Internet
Vì vậy, an ninh mạng nói chung và bảo mật website nói riêng đang là một vấn đề quan trọng và cần phải được nghiên cứu, tìm hiểu và đưa ra các giải pháp và
kỹ thuật mới để phòng chống, đồng thời cá nhân, tổ chức và doanh nghiệp cũng cần dành nhiều thời gian, kinh phí, nhân lực kỹ thuật để đảm bảo cho hệ thống mạng cũng như website của mình hoạt động tốt, có khả năng chống chọi và ngăn chặn trước các mối nguy hiểm và các cuộc tấn công
Việc truy cập vào ứng dụng web diễn ra ở mọi nơi có mạng Internet cũng dẫn đến việc phát hiện các lỗ hổng bảo mật và bị khai thác bởi tin tặc càng cao Một tin tặc muốn tấn công vào một website cần tìm hiểu thông tin của website như web server, port… Việc thu thập thông tin là vô cùng quan trọng Tiếp đó, tin tặc sẽ tiến hành tấn công chiếm đoạt thông tin, đưa dữ liệu bẩn, chiếm quyền kiểm soát hệ thống… Cuối cùng, xóa dấu vết xâm nhập tấn công hệ thống Tùy vào mục đích mà
Trang 31tin tặc sẽ xây dựng kịch bản tấn công khác nhau dựa vào thông tin đã thu thập được ban đầu
Dù tấn công bằng bất cứ hình thức nào thì hậu quả để lại cũng vô cùng nguy hiểm, thông tin trong cơ sở dữ liệu có thể không bị mất nhưng phải xem lại rằng nó
có bị làm bẩn hay không Việc phòng chống và khắc phục hậu quả cần phải làm ngay
1.4 Kết luận
Những năm gần đây, các cuộc tấn công vào các hệ thống của doanh nghiệp ngày càng phổ biến Thiệt hại từ các cuộc tấn công khiến nhiều công ty, doanh nghiệp trong và ngoài nước thực sự đau đầu Những giải pháp và công nghệ mới đã được đưa ra nhưng việc triển khai gặp nhiều khó khăn Nhưng song song với nó, nhiều vấn đề bảo mật chưa được giải quyết triệt để Tin tặc có thể lợi dụng lỗ hổng bảo mật để thực hiện hành vi xấu Vì vậy, không thể xem nhẹ trước nguy cơ tấn công của tin tặc vào hệ thống
Trang 32CHƯƠNG 2 KỸ THUẬT TẤN CÔNG VÀ BIỆN PHÁP PHÒNG TRÁNH
2.1 Tấn công từ chối dịch vụ
2.1.1 Khái niệm
Tấn công từ chối [2] dịch vụ (hay còn gọi là DoS - Denial of Service) là một trong những thủ đoạn của tin tặc nhằm ngăn cản những người dùng hợp pháp truy cập và sử dụng các tài nguyên của dịch vụ nào đó Các cuộc tấn công có thể được thực hiện nhằm vào bất kì một thiết bị mạng nào bao gồm là tấn công vào các thiết
bị định tuyến, hệ thống web, thư điện tử và hệ thống DNS Loại tấn công này có thể làm ngưng trệ, gián đoạn mọi hoạt động của một máy tính, web server, một mạng nội bộ thậm chí cả một hệ thống mạng rất lớn
Máy chủ Web server
Hình 0.1 Mô hình tấn công DDoS cơ bản
Về bản chất của DoS, một kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ và làm mất khả năng xử lý các yêu cầu dịch
vụ cho những người dùng khác Tấn công DoS nhìn chung không nguy hiểm như các kiểu tấn công khác, vì kẻ tấn công ít có khả năng thâm nhập hay chiếm được
Trang 33thông tin dữ liệu của hệ thống Tuy nhiên, nếu máy chủ tồn tại mà không thể cung cấp thông tin, dịch vụ cho người sử dụng thì sự tồn tại này là không có ý nghĩa, đặc biệt là các hệ thống phục vụ các giao dịch điện tử thì thiệt hại là vô cùng lớn như hệ thống ngân hàng, cổng thanh toán thẻ tín dụng Đối với hệ thống máy chủ được bảo mật tốt, khó thâm nhập, việc tấn công từ chối dịch vụ DoS được các hacker sử dụng để phá hủy hệ thống đó
Phương pháp tấn công: Tấn công gậy ngập lụt, tấn công logic
Mức độ tự động: Tấn công thủ công, tấn công bán thủ công, tấn công tự động
Giao thức mạng: Tấn công vào tầng mạng hoặc giao vận, tấn công vào tầng ứng dụng
Phương thức giao tiếp: Tấn công dựa trên agent-handler, tấn công dựa trên IRC, tấn công dựa trên web, tấn công dựa trên P2P
Cường độ tấn công: Tấn công cường độ cao, tấn công cường độ thấp, tấn công cường độ hỗn hợp, tấn công cường độ liên tục, tấn công cường độ thay đổi
Khai thác lỗ hổng an ninh: Tấn công gây cạn kiệt băng thông, tấn công gây cạn kiệt tài nguyên
2.1.3 Các dạng tấn công
Ngày nay, tin tặc không chỉ sử dụng một máy tính để tấn công vào các hệ thống mà trong các cuộc tấn công từ chối dịch vụ tin tặc có thể huy động hàng nghìn máy để tấn công vào một hệ thống Các cuộc tấn công ngày nay cũng trở lên
đa dạng và phức tạp hơn như:
Tấn công từ chối dịch vụ phân tán DDoS (Distributed Denial of Service)
Trang 34Tin tặc
Máy chủ
Máy bị kiểm soát
Hình 0.2 Mô hình tấn công DDoS
Tấn công từ chối dịch vụ phân tán DDoS có sức mạnh tăng gấp nhiều lần so với tấn công thông thường Hầu hết các cuộc tấn công DDoS nhằm vào việc chiếm dụng băng thông gây nghẽn mạch hệ thống, dẫn đến ngưng hoạt động hệ thống Để thực hiện DDoS, kẻ tấn công tìm cách chiếm dụng và điều khiển nhiều máy tính tạo thành mạng máy tính ma hay botnet Mạng máy tính ma đồng loạt gửi ồ ạt các gói tin với số lượng rất lớn nhằm chiếm dụng tài nguyên và làm tràn ngập đường truyền của một mục tiêu xác định nào đó
Tấn công từ chối dịch vụ phản xạ nhiều vùng DRDoS (Distributed Reflection Denial of Service)
Tấn công từ chối dịch vụ phản xạ phân tán - DRDoS lại là kiểu tấn công mới nhất, mạnh nhất trong các kiểu tấn công DoS Trong suốt quá trình máy chủ bị tấn
Trang 35công bằng DRDoS, không một máy khách nào có thể kết nối được vào máy chủ đó Tất cả các dịch vụ chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3 đều bị vô hiệu hóa Về cơ bản, DRDoS là sự phối hợp giữa hai kiểu DoS và DDoS Kẻ tấn công thực hiện bằng cách giả mạo địa chỉ của máy chủ mục tiêu rồi gửi yêu cầu đến các máy chủ lớn như Yahoo, Microsoft, Google để các máy chủ này gửi các gói tin trả lời đến máy chủ mục tiêu Quá trình cứ lặp lại liên tục với nhiều máy chủ lớn tham gia nên máy chủ mục tiêu nhanh chóng bị quá tải, băng thông bị chiếm dụng bởi máy chủ lớn, dẫn đến máy chủ mục tiêu không thể hoạt động bình thường
Không cần tổ chức tấn công DDoS đồng thời từ một hệ thống nhiều máy tính, hiện nay các hacker còn có thể tấn công bằng cách sử dụng phần mềm tạo SPAM: Spam Forgery để truy cập tốc độ nhanh với số laafntruy cập rất lớn vào một địa chỉ
2.1.4 Khó khăn trong việc phòng chống
Hoạt động tấn công từ chối dịch vụ diễn ra ngày càng phức tạp, nhưng công tác đấu tranh phòng chống đối phó với các cuộc tấn công từ chối dịch vụ còn nhiều hạn chế, cụ thể như sau:
Thứ nhất, công tác nắm bắt thông tin về các cuộc tấn công từ chối dịch vụ còn muộn Để thực hiện hành vi tấn công DDoS, các đối tượng phải xây dựng một hệ thống mạng máy tính ma Hành vi tấn công từ chối dịch vụ thường được phát hiện khi và đối tượng đã tấn công và gây hậu quả
Thứ hai, công tác đấu tranh phòng, chống các cuộc tấn công này còn mang tính thụ động, thiếu sự hợp tác, cũng như thiếu sự trao đổi thông tin chặt chẽ giữa các bên liên quan Nhiều nạn nhân còn không thừa nhận việc website của mình bị tấn công từ chối dịch vụ do nhiều nguyên nhân khác nhau mà chỉ cho rằng lưu lượng tăng đột biến, có thể tự khắc phục
Thứ ba, xuất phát từ tính chất, đặc điểm phức tạp của loại hành vi này,
mà hoạt động điều tra, xác định nguồn gốc tấn công và đối tượng tin tặc gặp nhiều khó khăn Tin tặc sử dụng nhiều server nước ngoài đã gây rất nhiều khó khăn trong việc xác định chính xác nguồn gốc tấn công
Trang 36Hành vi tấn công từ chối dịch vụ hoàn toàn có thể phòng, chống được Tuy nhiên, việc phòng, chống đối với hành vi nguy hiểm này lại phải phụ thuộc vào quy
mô, cường độ tấn công và hạ tầng mạng của đơn vị đang bị tấn công Về cơ sở hạ tầng, cần được chú trọng đầu tư tăng cường số lượng cũng như cấu hình máy chủ (RAM, ổ cứng, CPU…), phần mềm an ninh Bởi vì, bản chất của tấn công từ chối dịch vụ là chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ… dẫn đến mất khả năng phản hồi các yêu cầu hợp pháp từ phía người dùng Do đó, nếu hạ tầng đơn vị yếu, ít được đầu tư thì sẽ giảm khả năng chống đỡ đối với các cuộc tấn công mạng
Sử dụng firewall trong phòng chống tấn công DDoS cũng là phương pháp hữu hiệu Firewall là một thiết bị phần cứng và/hoặc một phần mềm hoạt động trong một môi trường máy tính nối mạng để thiết lập một rào chắn nhằm ngăn chặn
sự truy cập không mong muốn từ ngoài vào hệ thống nội bộ cũng như truy cập từ trong ra ngoài Để phân loại tường lửa cần dựa vào 3 tiêu chí
Theo phạm vi: Tường lửa cá nhân và tường lửa mạng
Theo tầng giao thức: Tường lửa tầng mạng, tường lửa tầng ứng dụng và tường lửa ứng dụng
Theo trạng thái: Tường lửa có trạng thái và tường lửa phi trạng thái Các loại tường lửa có thể phòng, chống một số loại tấn công dịch vụ web như:
Tường lửa tầng mạng: Sử dụng Iptable đưa ra các quy tắc riêng để ngăn chặn, hạn chế tấn công DDoS
Tường lửa ứng dụng: Sử dụng tường lửa tầng ứng dụng web (WAF) có thể bảo vệ ứng dụng web khỏi các lỗi XSS, SQL Injection, WAF được