TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGH THÔNG TIN ỆMã đề tài: 1415 ĐỒ ÁN T T NGHIỆP ĐẠI HỌC Ố Hà N i ộ - Năm 2022 Chuyên ngành: Mạng và An toàn h ệ thống TÌM HIỂU VỀ SNORT VÀ ỨNG DỤNG TR
TÌM HIỂU CHUNG VỀ AN TOÀN VÀ TẤN CÔNG MẠNG
Khái niệm chung về an ninh và bảo mật mạng
1.1.1 An ninh mạng là gì?
Chúng ta đang sống trong thời đại bùng nổ thông tin trên Internet, với nhu cầu sử dụng tài nguyên mạng từ nhiều vị trí địa lý ngày càng tăng Tuy nhiên, điều này dẫn đến tình trạng phân tán và mất mát tài nguyên, đồng thời gia tăng nguy cơ xâm nhập và tấn công Do đó, việc nhanh chóng tìm kiếm các giải pháp hiệu quả là rất cần thiết để bảo vệ an toàn thông tin.
An ninh mạng đã được ra đời nhằm bảo vệ sự toàn vẹn của thông tin cũng như nguồn tài nguyên chung
Trước đây, An ninh mạng chỉ đề cập đến các biện pháp bảo mật vật lý nhằm bảo vệ thông tin quan trọng của chính phủ và doanh nghiệp khỏi tấn công bên ngoài Tuy nhiên, với sự gia tăng kết nối và chia sẻ thông tin qua Internet hiện nay, khái niệm An ninh mạng đã được mở rộng để bao gồm nhiều khía cạnh bảo vệ dữ liệu và tài nguyên trực tuyến.
An ninh mạng là quá trình bảo vệ phần cứng và phần mềm máy tính khỏi các cuộc tấn công từ mạng Nó cũng đảm bảo tính toàn vẹn và chính xác của thông tin, dữ liệu, ngăn chặn những tác động có thể gây ra gián đoạn hoặc làm sai lệch chức năng của các dịch vụ.
An ninh mạng, theo Khoản 1, Điều 2 Luật An ninh mạng, được định nghĩa là sự bảo đảm hoạt động trên không gian mạng không gây phương hại đến an ninh quốc gia, trật tự, an toàn xã hội, cũng như quyền và lợi ích hợp pháp của các cơ quan, tổ chức và cá nhân Hiện nay, an ninh mạng trở thành một vấn đề quan trọng đối với tất cả các quốc gia và vùng lãnh thổ trên thế giới, xuất phát từ đặc trưng, nhu cầu kết nối và tính xuyên biên giới của không gian mạng.
1.1.2 Những đặc điểm cơ bản của an ninh mạng
An ninh mạng là quá trình bảo vệ hệ thống điện tử, mạng máy tính, thiết bị di động, phần mềm và dữ liệu khỏi các cuộc tấn công kỹ thuật số độc hại có chủ đích từ các đối tượng xấu.
An ninh mạng bảo vệ cả kết nối có dây và không dây, đóng vai trò như một lá chắn hiệu quả chống lại các cuộc tấn công xâm nhập và làm sai lệch hệ thống Một chiến lược an ninh mạng mạnh mẽ là cần thiết để bảo vệ dữ liệu nhạy cảm được lưu trữ.
An ninh mạng hoạt động qua một hệ thống cơ sở hạ tầng chặt chẽ, được chia thành nhiều loại tùy thuộc vào từng tình huống và đối tượng cụ thể An ninh mạng đảm bảo an toàn cho dữ liệu kỹ thuật số trên mạng, máy tính và thiết bị cá nhân trước các cuộc tấn công và phần mềm độc hại Bảo mật thông tin bảo vệ nơi lưu trữ dữ liệu và tính toàn vẹn, riêng tư của dữ liệu trong quá trình lưu trữ và chuyển tiếp Bảo mật ứng dụng tập trung vào việc bảo vệ thiết bị và dữ liệu khỏi các mối đe dọa, thường xảy ra trong giai đoạn thiết kế Bảo mật hoạt động bao gồm quy trình bảo vệ tài sản dữ liệu và quyền truy cập mạng của người dùng, xác định cách thức và vị trí lưu trữ dữ liệu Cuối cùng, phục hồi sau tấn công là quá trình khắc phục hậu quả từ các cuộc tấn công, đảm bảo tính liên tục trong lưu thông thông tin và khôi phục dữ liệu như trước sự cố.
1.1.3 Các đối tượng tấn công an ninh mạng phổ biến
Các cuộc tấn công mạng thường do một cá nhân hoặc tổ chức cụ thể thực hiện, được gọi là Hacker Tùy thuộc vào mục đích của họ, Hacker được phân loại thành nhiều loại khác nhau Dưới đây là một số loại hacker phổ biến hiện nay.
Hacker mũ trắng là những cá nhân thực hiện tấn công không nhằm mục đích xấu, mà để tiến hành kiểm thử bảo mật (pentest) Họ tìm kiếm lỗ hổng trong hệ thống để giúp các tổ chức kịp thời phát hiện và khắc phục, từ đó bảo vệ an toàn thông tin.
Các hacker mũ trắng thường là những chuyên gia có trình độ cao, thường tốt nghiệp từ các chương trình đào tạo về công nghệ thông tin (CNTT) hoặc có kiến thức sâu rộng trong lĩnh vực này Nhiều người trong số họ còn sở hữu các chứng chỉ chuyên môn, khẳng định năng lực và sự am hiểu của mình trong ngành.
IT quan trọng mà không phải ai cũng lấy được
Hacker mũ đen, hay còn gọi là crackers, là những cá nhân chuyên bẻ khóa và thực hiện các cuộc tấn công trái phép nhằm vào hệ thống nội bộ hoặc website với mục đích xấu.
Hành vi nghe lén, đánh cắp dữ liệu, phá hoại hạ tầng và tống tiền nạn nhân đều là những hệ quả nghiêm trọng từ các cuộc tấn công của hacker mũ đen.
Hacker mũ xám là sự kết hợp giữa hacker mũ trắng và hacker mũ đen, thường thực hiện tấn công vào hệ thống để phát hiện lỗ hổng Sau khi tìm ra các điểm yếu, họ thông báo cho chủ sở hữu hệ thống kèm theo các điều khoản nhất định Nếu chủ sở hữu không đáp ứng, hacker mũ xám có thể công khai thông tin về các lỗ hổng này trên mạng.
Hacker mũ xanh là đội ngũ chuyên tìm kiếm lỗ hổng bảo mật trong hệ thống và đánh giá nguy cơ tấn công đối với các sản phẩm công nghệ sắp ra mắt Họ cũng chịu trách nhiệm vá và khắc phục những lỗ hổng này một cách nhanh chóng nhất.
Đội ngũ hacker mũ đỏ hiện nay được đánh giá cao hơn cả hacker mũ trắng, vì họ trực tiếp xâm nhập vào mạng và hệ thống của hacker mũ đen để phát hiện và ngăn chặn các cuộc tấn công Ngoài ra, hacker mũ đỏ còn phát triển phần mềm độc hại nhằm chống lại những kẻ xấu, đồng thời thắt chặt và tăng cường an ninh cho hệ thống.
Thực trạng an ninh mạng hiện nay qua việc sử dụng website của người dùng
Công nghệ thông tin đang phát triển nhanh chóng, buộc nhiều tổ chức phải chuyển sang hoạt động trực tuyến Điều này dẫn đến việc các công ty phải thiết lập hệ thống cho nhân viên làm việc online Tuy nhiên, đây cũng là cơ hội cho các đối tượng xấu khai thác lỗ hổng và tấn công, gây ra hậu quả nghiêm trọng.
Trong thập kỷ qua, nhiều cuộc tấn công mạng đã xảy ra, ảnh hưởng nghiêm trọng đến các công ty lớn, đặc biệt trong lĩnh vực công nghệ Một ví dụ điển hình là vụ tấn công vào hệ thống của Adobe vào tháng 10 năm 2013, dẫn đến việc rò rỉ hơn 40GB mã nguồn ứng dụng và khoảng 150 triệu tài khoản người dùng, trong đó có hơn 38 triệu tài khoản vẫn hoạt động Ngoài ra, cuộc khủng hoảng của Sony vào tháng 4 năm 2011 cũng là một minh chứng rõ ràng cho những hậu quả nghiêm trọng khi không lắng nghe cảnh báo từ các hacker.
Khi nhu cầu lưu trữ và chia sẻ dữ liệu trực tuyến ngày càng tăng, các cuộc tấn công của tin tặc vẫn tiếp tục gia tăng cả về số lượng, quy mô và hậu quả.
UpGuard, một startup chuyên nghiên cứu khả năng phục hồi mạng dữ liệu, đã phát hiện rằng công ty Accenture đã để lại ít nhất 4 bộ lưu trữ AWS S3 không được bảo mật vào năm 2017.
Các cuộc tấn công đã tập trung vào việc khai thác các chi tiết xác thực không được kiểm soát, dữ liệu API bí mật, chứng chỉ kỹ thuật số, khóa giải mã, thông tin người dùng và thông tin thẻ meta.
Dữ liệu phân tích bảo mật từ UpGuard cho thấy có 137GB dữ liệu dễ dàng truy cập công khai, bị kẻ tấn công lợi dụng để bôi nhọ và tống tiền người dùng Một phần thông tin đã bị rao bán trên dark web.
Vào tháng 8/2021, Accenture đã trở thành nạn nhân của cuộc tấn công từ phần mềm tống tiền LockBit, mặc dù đã phát hiện sớm, nhưng tin tặc vẫn thành công trong việc đánh cắp 6TB dữ liệu Các hacker yêu cầu một khoản tiền chuộc lên tới 50 triệu USD cho khối dữ liệu này.
Năm 2017, Nice Systems, một nhóm thuần tập bên thứ ba của Verizon, đã để lộ thông tin PPI của người dùng do cấu hình AWS S3 không an toàn, dẫn đến các cuộc tấn công vào hệ thống của Verizon trong ngành viễn thông.
Năm 2020, Verizon ghi nhận 29.207 sự cố bảo mật, trong đó có 5.200 trường hợp được xác nhận là vi phạm Từ vị thế của một gã khổng lồ viễn thông, Verizon đã trở thành mục tiêu hấp dẫn cho các cuộc tấn công DDoS Nguyên nhân chính dẫn đến các lỗ hổng và sự gia tăng các cuộc tấn công mạng được cho là do mô hình làm việc từ xa trong bối cảnh đại dịch.
Năm 2021, Verizon đã công bố bản kiểm tra chiến lược an ninh mạng dựa trên khung VERIS, cung cấp một nghiên cứu điển hình cho doanh nghiệp và người dùng Khoảng 61% các cuộc tấn công liên quan đến việc sử dụng thông tin đăng nhập trái phép, trong khi tỷ lệ lừa đảo đã tăng từ 25% lên 36% so với năm 2019.
- Vụ tấn công ransomware tại Kaseya
Vào tháng 7/2021, Kaseya, nhà cung cấp giải pháp CNTT, đã chịu một cuộc tấn công ransomware nghiêm trọng nhắm vào các công cụ giám sát từ xa và hệ thống bảo mật Cuộc tấn công này đã chiếm quyền kiểm soát hành chính đối với dịch vụ của Kaseya, dẫn đến việc tê liệt các máy chủ SaaS của công ty và ảnh hưởng đến các giải pháp VSA mà khách hàng của Kaseya sử dụng tại hơn mười quốc gia và vùng lãnh thổ.
Cuộc tấn công vào Kaseya, mặc dù được phát hiện sớm và xử lý nhanh chóng, đã mang lại nhiều bài học quý giá về việc củng cố an toàn cho hệ thống bảo mật.
- Vụ tấn công nhắm vào gã khổng lồ an ninh mạng Cognyte
Mặc dù nhiều người tin rằng các công ty an ninh mạng có khả năng ứng phó và khắc phục hậu quả tốt hơn khi bị tin tặc tấn công, nhưng câu chuyện của gã khổng lồ an ninh mạng Cognyte đã chỉ ra một khía cạnh đáng lưu tâm về sự phức tạp trong lĩnh vực này.
Vào tháng 5 năm 2021, Cognyte, một công ty phân tích an ninh mạng, đã gặp phải một sai lầm nghiêm trọng khi để người dùng truy cập vào cơ sở dữ liệu mà không cần xác thực Điều này được cho là nguyên nhân chính dẫn đến cuộc tấn công mạng, làm lộ đến 5 tỷ hồ sơ người dùng Thật trớ trêu, dữ liệu bị rò rỉ lại chứa các cảnh báo dành cho khách hàng về vi phạm dữ liệu của bên thứ ba.
Ngoài thông tin tài khoản, tin tặc đã công bố miễn phí một số dữ liệu tình báo của Cognyte Mặc dù công ty đã khắc phục thiệt hại nhanh chóng, vụ việc này đã để lại những bài học quý giá về bảo mật hệ thống và thông tin cho Cognyte cũng như toàn bộ ngành công nghiệp.
Các hình thức tấn công an ninh mạng phổ biến
1.3.1 Tấn công bằng phần mềm độc hại – Malware Attack
Malware Attack là một trong những kỹ thuật tấn công phổ biến hiện nay, sử dụng phần mềm độc hại để xâm nhập hệ thống Những phần mềm này chứa mã độc có khả năng vô hiệu hóa hệ thống bảo vệ máy tính Các loại phần mềm độc hại bao gồm mã độc tống tiền (ransomware), phần mềm gián điệp (spyware), virus và worm, với khả năng lây lan nhanh chóng.
Khi hệ thống bị tấn công, phần cứng có thể hỏng hóc và gây gián đoạn hoạt động Thông tin và dữ liệu dễ dàng bị đánh cắp, trong khi hacker có khả năng chặn quyền truy cập vào các file nhất định và theo dõi âm thầm hoạt động của người dùng đã bị xâm phạm.
- Hiện nay, các phần mềm được xếp vào nhóm kỹ thuật Malware Attack có thể kể đến như: o Trojan horse
Tên loại mã độc này xuất phát từ điển tích “Con ngựa thành Tơ roa”, vì nó được ẩn giấu trong các phần mềm máy tính có vẻ uy tín và chính chủ Tuy nhiên, điều này mở ra cánh cổng cho nhiều hậu quả nghiêm trọng mà người dùng khó có thể dự đoán.
Sau khi được cài đặt vào thiết bị, mã độc sẽ tấn công vào thời điểm thích hợp, đánh cắp dữ liệu hoặc thậm chí làm tê liệt và chiếm quyền điều khiển thiết bị Đáng chú ý, loại mã độc này không tự lây lan mà phải dựa vào một phần mềm khác để phát tán.
Trojan được phân loại thành nhiều loại dựa trên cách hoạt động, trong đó BackDoor, Adware và Spyware là ba loại phổ biến nhất hiện nay Virus cũng là một khái niệm quen thuộc đối với người dùng máy tính.
Nhiều người thường nhầm lẫn giữa virus và mã độc, nhưng thực tế, virus chỉ là một loại mã độc với khả năng lây lan rất nhanh chóng.
Và nếu không kịp thời phát hiện và xử lý thì rất khó để có thể dọn sạch virus trên thiết bị
Với sự tiến bộ của công nghệ hiện nay, virus máy tính đã trở nên ít phổ biến hơn, chiếm chưa đến 10% tổng số mã độc được sử dụng.
Mã độc được chia thành ba loại phổ biến: Hoax, Scripting và File, mỗi loại có những đặc điểm riêng và ảnh hưởng đến các vấn đề khác nhau Hậu quả của chúng thường rất khó lường Trong số đó, ransomware là một loại mã độc tống tiền phổ biến, ngăn chặn người dùng truy cập dữ liệu và sử dụng thiết bị Để khôi phục dữ liệu hoặc quyền kiểm soát thiết bị, nạn nhân thường phải trả tiền cho tin tặc.
Ransomware thường xâm nhập vào thiết bị thông qua email rác, các website lừa đảo hoặc được cài đặt cùng với Trojan, nhằm tăng cường khả năng tấn công và kiểm soát nhiều thiết bị của nạn nhân.
Worm, hay còn gọi là sâu máy tính, là một loại mã độc có khả năng lây lan và phát triển nhanh chóng Chúng thường được phát tán qua email với nội dung hấp dẫn để thu hút người dùng click vào Nhờ vào phương thức này, Worm có thể lây lan theo cấp số nhân Nhiều hacker đã tận dụng khả năng của Worm bằng cách tích hợp thêm các tính năng tấn công mạnh mẽ, như tấn công hệ thống và đánh cắp thông tin, gây ra những hậu quả khó lường.
Rootkit, mặc dù là một loại mã độc “sinh sau đẻ muộn”, nhưng sức tàn phá của nó không thua kém bất kỳ loại mã độc nào hiện nay Đây là chương trình được thiết kế để xâm nhập sâu vào hệ thống, đồng thời che giấu sự hiện diện của chính nó và các mã độc khác Nhờ vào Rootkit, các phần mềm độc hại khác trở nên khó phát hiện qua các phương pháp thông thường, thậm chí còn có thể vượt qua sự rà soát của phần mềm diệt virus Điều này tạo điều kiện cho các mã độc khác tấn công mạnh mẽ vào hệ thống, dẫn đến những hậu quả khó lường.
- Ngoài ra, trong quá trình phát triển, các loại mã độc còn sinh ra nhiều biến thể với sức công phá ngày một mạnh mẽ
1.3.2 Tấn công giả mạo - Phishing Attack
Tấn công giả mạo, hay còn gọi là Phishing Attack, là hình thức tấn công mà tin tặc giả danh các tổ chức hoặc cá nhân uy tín nhằm chiếm đoạt lòng tin của người dùng Qua đó, chúng sẽ thực hiện việc đánh cắp dữ liệu nhạy cảm như thông tin cá nhân, tài khoản ngân hàng và thẻ tín dụng.
- Hiện nay, các tin tặc thực hiện việc tấn công giả mạo chủ yếu qua hai cách là tấn công bằng email hoặc tấn công thông qua website
Giả mạo email là một trong những kỹ thuật tấn công phổ biến mà tin tặc thường sử dụng, trong đó họ mạo danh các tổ chức hoặc cá nhân uy tín để gửi email lừa đảo Mục tiêu của các email này là khiến người dùng nhấp vào các liên kết đính kèm, dẫn đến việc tải xuống mã độc có khả năng đánh cắp dữ liệu cá nhân Tin tặc thường tạo ra các địa chỉ email giả mạo rất tinh vi, chỉ khác nhau ở cách sắp xếp các chữ cái, như ví dụ giữa infomation.abc@gmail.com và infomation.acb@gmail.com.
Giả mạo website là một kỹ thuật tấn công mà tin tặc tạo ra các trang web lừa đảo, thiết kế gần như giống hệt với trang web thật, khiến người dùng khó phân biệt Những trang web giả mạo thường có khung điền thông tin để thu thập dữ liệu cá nhân và khuyến khích người dùng cung cấp thông tin qua các ưu đãi hoặc quà tặng.
- Vậy làm thế nào để phòng tránh được Phishing Attack?
Để bảo vệ bản thân khỏi các cuộc tấn công phishing, người dùng cá nhân cần thận trọng khi trả lời các email lạ, đặc biệt là những email yêu cầu thông tin cá nhân Họ nên tránh nhấn vào các liên kết trong email rác và không tải xuống phần mềm hay file lạ nếu không chắc chắn về độ an toàn Ngoài ra, việc sử dụng tường lửa và phần mềm diệt virus là cần thiết để bảo vệ thiết bị của mình.
HỆ THỐNG PHÁT HIỆN TẤN CÔNG SQL INJECTION -
Giới thiệu chung về SNORT
Snort là phần mềm IPS mã nguồn mở do Martin Roesh phát triển, ban đầu được xây dựng trên nền tảng Unix và sau đó mở rộng sang nhiều hệ điều hành khác Với khả năng phát hiện xâm nhập xuất sắc, Snort được đánh giá cao trong cộng đồng bảo mật Mặc dù miễn phí, nó sở hữu nhiều tính năng ấn tượng Nhờ kiến trúc module, người dùng có thể dễ dàng nâng cấp và tùy chỉnh hệ thống Snort của mình Snort hỗ trợ chạy trên nhiều nền tảng như Windows, Linux, OpenBSD, FreeBSD và Solaris.
Bên cạnh việc có thể hoạt động như một ứng dụng bắt gói tin thông thường, Snort còn được cấu hình để chạy như một NIDS
Trên thực tế, Snort không phải là ứng dụng phát hiện tấn công duy nhất được sử dụng Vậy tại sao Snort lại trở nên phổ biến như vậy?
Nguyên lý hoạt động của Snort cho phép người quản trị hiểu rõ cách thức làm việc của hệ thống, từ vị trí tập tin cấu hình cho đến các quy tắc hiện có Họ có khả năng tùy chỉnh cấu hình theo nhu cầu và thậm chí tạo ra các quy tắc mới để nâng cao hiệu quả bảo mật.
− Snort là phần mềm mã nguồn mở:
Snort là phần mềm mã nguồn mở được phát hành dưới giấy phép GNU/GPL, cho phép mọi người sử dụng miễn phí, bao gồm cả doanh nghiệp và người dùng cá nhân Với một cộng đồng người dùng lớn, Snort cung cấp sự hỗ trợ tận tình cho những ai có thắc mắc về phần mềm này.
− Có thể chạy trên nhiều nền tảng khác nhau:
Snort không chỉ hoạt động trên các hệ điều hành nguồn mở như GNU/Linux mà còn có khả năng chạy trên các nền tảng thương mại như Microsoft Windows, Solaris, và HP-UX.
− Snort thường xuyên được cập nhật:
Các phiên bản và bộ luật mới của Snort liên tục được cập nhật để phản ánh các hình thức xâm nhập mới Người dùng có thể dễ dàng tải xuống từ trang web http://www.snort.org.
Kiến trúc của SNORT
Snort là một hệ thống phát hiện xâm nhập (IDS) bao gồm nhiều thành phần, mỗi phần đảm nhận một chức năng riêng biệt Các thành phần này phối hợp với nhau để phát hiện các kiểu tấn công cụ thể và tạo ra kết quả theo định dạng đã được quy định trước Một IDS dựa trên Snort bao gồm các thành phần chính như: bộ phân tích gói tin, bộ phát hiện, và hệ thống quản lý sự kiện.
● Module giải mã gói tin
● Module log và cảnh báo
● Module kết xuất thông tin
Mô hình kiến trúc của Snort:
Khi Snort hoạt động, nó lắng nghe tất cả các gói tin di chuyển qua nó Các gói tin bị bắt sẽ được chuyển vào module giải mã, sau đó vào module tiền xử lý và module phát hiện Tùy thuộc vào việc có phát hiện xâm nhập hay không, gói tin có thể được bỏ qua để tiếp tục lưu thông tin hoặc được chuyển vào module Log và cảnh báo để xử lý Khi các cảnh báo được xác định, module kết xuất thông tin sẽ đưa ra cảnh báo theo định dạng mong muốn.
2.2.1 Module giải mã gói tin
Snort chỉ sử dụng thư viện pcap để bắt mọi gói tin trên mạng lưu thông qua hệ thống
Hình 2.2 Xử lý một gói tin Ethernet
Sau khi được giải mã, gói tin sẽ được chuyển đến module tiền xử lý, nơi thực hiện phân tích gói dữ liệu thô từ mạng Nhiệm vụ chính của hệ thống này là phục hồi gói dữ liệu hoàn chỉnh ở lớp application, cung cấp đầu vào cho hệ thống detection engine Quá trình phục hồi diễn ra từ lớp Datalink đến lớp Application theo thứ tự của Protocol Stack.
Module này đóng vai trò quan trọng trong bất kỳ hệ thống nào, giúp chuẩn bị gói dữ liệu cho Module phát hiện phân tích Nó thực hiện ba nhiệm vụ chính.
Khi gửi dữ liệu lớn, thông tin không được đóng gói toàn bộ mà được phân mảnh thành nhiều gói tin Snort nhận các gói tin này và cần kết nối lại để tái tạo gói tin ban đầu Module tiền xử lý giúp Snort hiểu và quản lý các phiên làm việc khác nhau.
Việc giải mã và chuẩn hóa giao thức là rất quan trọng trong công tác phát hiện xâm nhập, vì nhiều khi các dấu hiệu nhận dạng không đủ để kiểm tra các giao thức có dữ liệu biểu diễn đa dạng Chẳng hạn, một máy chủ web có thể nhận nhiều dạng URL khác nhau, như URL được viết dưới dạng hexa/unicode hoặc URL có dấu gạch chéo (/) Nếu Snort chỉ thực hiện so sánh đơn thuần với dấu hiệu nhận dạng, sẽ dẫn đến việc bỏ sót các hành vi xâm nhập Do đó, một số module tiền xử lý của Snort cần thực hiện nhiệm vụ giải mã và chỉnh sửa, sắp xếp lại thông tin đầu vào để nâng cao hiệu quả phát hiện.
Phát hiện xâm nhập bất thường là một chức năng quan trọng trong bảo mật mạng, với các plugin như portscan và bo được tích hợp trong phiên bản hiện tại của Snort Plugin portscan giúp cảnh báo khi kẻ tấn công quét cổng để tìm kiếm lỗ hổng, trong khi plugin bo cảnh báo về sự nhiễm trojan backoffice Những công cụ này giúp xử lý các xâm nhập mà các luật thông thường khó phát hiện, từ đó nâng cao khả năng bảo vệ hệ thống.
2.2.3 Module phát hiện Đây là module quan trọng nhất của Snort Nó chịu trách nhiệm phát hiện các dấu hiệu xâm nhập Module phát hiện sử dụng các luật được định nghĩa trước để so sánh với dữ liệu thu thập được, từ đó xác định xem có xâm nhập xảy ra hay không
Một trong những thách thức lớn đối với module phát hiện xâm nhập (IDS) là thời gian xử lý gói tin IDS thường phải xử lý một lượng lớn gói tin và có nhiều luật để áp dụng, dẫn đến nguy cơ bỏ sót hoặc phản hồi không kịp thời khi lưu lượng mạng tăng cao Khả năng xử lý của module này phụ thuộc vào nhiều yếu tố, bao gồm số lượng luật, tốc độ hệ thống và băng thông mạng.
Một module phát hiện có khả năng tách các phần của gói tin ra và áp dụng luật lên từng phần của gói tin:
● Header ở tầng transport: TCP, UDP
● Header ở tầng application: DNS, HTTP, FTP …
● Phần tải của gói tin
Trong Snort, các luật được đánh số theo thứ tự ưu tiên, vì vậy khi một gói tin bị phát hiện bởi nhiều luật khác nhau, cảnh báo sẽ được đưa ra dựa trên luật có mức ưu tiên cao nhất.
2.2.4 Module log và cảnh báo
Tùy thuộc vào khả năng nhận dạng xâm nhập của module phát hiện, gói tin có thể được ghi log hoặc phát ra cảnh báo Các file log là dữ liệu có thể được lưu dưới nhiều định dạng khác nhau, chẳng hạn như tcpdump.
2.2.5 Mod ule kết xuất thông tin
Module này thực hiện các thao tác khác nhau tùy thuộc vào việc cấu hình lưu kết quả xuất ra như thế nào
● Ghi cảnh báo vào cơ sở dữ liệu
● Cấu hình lại Router, firewall
● Gửi các cảnh báo được gói trong gói tin sử dụng giao thức SNMP
Bộ luật của SNORT
Trong Snort, "luật" có thể được hiểu đơn giản như các quy tắc trong thế giới thực Điều này có nghĩa là mỗi luật sẽ mô tả một trạng thái cụ thể và hành động sẽ diễn ra khi trạng thái đó được xác nhận.
Một trong những điểm đáng giá nhất của Snort là khả năng cho phép người sử dụng tự viết các luật cá nhân hoặc tùy biến các luật có sẵn để phù hợp với hệ thống mạng của mình Ngoài việc cung cấp một cơ sở dữ liệu lớn mà người dùng có thể tải về từ trang chủ của Snort, người quản trị còn có thể tự phát triển các luật cho hệ thống của mình Điều này giúp họ không phải phụ thuộc vào nhà cung cấp bên ngoài hoặc cập nhật khi có một cuộc tấn công mới Người quản trị có thể viết riêng một luật dành cho hệ thống khi nhận thấy các lưu lượng mạng bất thường và so sánh với bộ luật được cộng đồng phát triển Ưu điểm của việc tự viết các luật là có thể tùy biến và cập nhật một cách cực kỳ nhanh chóng khi hệ thống mạng gặp sự cố bất thường.
Ví dụ: “Nếu nh p sai m t kh u 3 lậ ậ ẩ ần thì điện thoại sẽ bị khóa.”
Phân tích ở đây ta hành động “điện tho i b khóaạ ị ” sẽ được th c hi n n u có ự ệ ế dấu hiệu là “nhập sai m t kh u 3 lậ ẩ ần”
Trong hệ thống mạng, việc sử dụng ngôn ngữ tự nhiên để mô tả dấu hiệu hay trạng thái của hệ thống là rất quan trọng Ví dụ, nếu có một kết nối SSH với địa chỉ IP công cộng kết nối tới máy chủ web, điều này có thể cho thấy tình trạng hoạt động của hệ thống mạng.
Mặc dù Snort có một mô hình cụ thể, nhưng nó vẫn có những hạn chế trong việc hiểu rõ Luật trong Snort giúp chúng ta dễ dàng mô tả dữ liệu theo ngôn ngữ mà Snort có thể tiếp nhận và xử lý.
2.3.1 Cấu trúc luật của SNORT Để biết cách viết một luật từ các dữ liệu của hệ thống ta cần phải hiểu cấu trúc của luật trong Snort như thế nào Một luật trong Snort được chia thành hai phần đó là phần header và options
Hình 2.3 Cấu trúc luật của SNORT
Phần Header của luật chứa thông tin về hành động mà luật sẽ thực hiện khi phát hiện xâm nhập trong gói tin, đồng thời cũng quy định tiêu chuẩn áp dụng luật đối với gói tin đó.
Phần Option trong gói tin chứa thông điệp cảnh báo và thông tin liên quan đến các thành phần của gói tin, nhằm tạo ra cảnh báo hiệu quả Ngoài ra, phần này cũng bao gồm các tiêu chuẩn bổ sung để so sánh với gói tin, giúp nâng cao tính chính xác và độ tin cậy của cảnh báo.
2.3.2 Cấu trúc của phần Header
The header section includes key elements such as rule action, protocol, source IP address, destination IP address, subnet mask, source port, and destination port The options section contains warning messages and details about the components of the packet that will be examined to determine the applicable action.
Action| Protocol| Address| Port| Direction| Address| Port| | Alert| TCP| 192.168.0.0/22| 23| ->| Any| Any
Phần Header của gói tin chứa thông tin xác định nguồn gốc, địa điểm và nội dung của gói tin, cùng với hướng dẫn xử lý khi các thuộc tính trong luật được kích hoạt Mục đầu tiên trong mỗi luật là phần hành động (rule action), cho phép Snort biết cách xử lý các gói tin phù hợp với các quy tắc đã định Snort có năm hành động mặc định: alert (cảnh báo), log (ghi log), pass (cho qua), active (kích hoạt) và dynamic Khi chạy Snort ở chế độ inline, còn có thêm các tùy chọn như drop, reject và sdrop.
Giao thức cụ thể cần phân tích Có 4 giao thức mà Snort hiện đang phân tích các hành vi bất thường đó là TCP, UDP, ICMP và IP
Địa chỉ nguồn và địa chỉ đích là hai thành phần quan trọng trong phần header, giúp xác định nơi đi và nơi đến của gói tin Địa chỉ IP có thể đại diện cho một máy đơn hoặc một lớp mạng, với từ khóa “any” dùng để chỉ định một địa chỉ bất kỳ Địa chỉ IP được viết dưới dạng ip_address/netmask, trong đó netmask xác định loại lớp mạng: /24 tương ứng với lớp mạng C, /16 với lớp mạng B, và /32 chỉ một máy đơn.
Ví dụ: địa chỉ 192.168.1.0/24 có nghĩa là một dải máy có địa chỉ IP từ 192.168.1.1-192.168.1.255
Trong một luật Snort, có hai địa chỉ IP: một là địa chỉ IP nguồn và một là địa chỉ IP đích Việc phân biệt địa chỉ nguồn và địa chỉ đích dựa vào ký hiệu “→”.
Toán tử phủ định “!” trong Snort cho phép bỏ qua việc kiểm tra địa chỉ IP của gói tin Người dùng có thể định nghĩa danh sách các địa chỉ IP bằng cách viết chúng liên tiếp, cách nhau bởi dấu “,”.
Xác định cổng nguồn và cổng đích của gói tin là rất quan trọng Port có thể được định nghĩa theo nhiều cách khác nhau Sử dụng từ khóa "any" giống như địa chỉ IP cho phép sử dụng bất kỳ port nào Ngoài ra, bạn cũng có thể gán một port cố định, chẳng hạn như gán kiểm tra ở một port cụ thể.
Sử dụng port 80 cho HTTP hoặc port 22 cho SSH là các lựa chọn phổ biến Bên cạnh đó, bạn có thể áp dụng toán tử phủ định để loại trừ một port cụ thể hoặc để liệt kê một dải port nhất định.
Ví dụ: log udp any any → 192.168.1.0/24 1:1024 - port bất kỳ tới dãy port từ 1 -
1024 log udp any any → 192.168.1.0/24 :6000 - port bất kỳ tới dãy port nhỏ hơn
Phần này chỉ ra địa chỉ nguồn và địa chỉ đích, với toán tử hướng “→” phân biệt rõ ràng giữa chúng Địa chỉ IP và port bên trái được xem là địa chỉ nguồn và port nguồn, trong khi bên phải là địa chỉ đích và port đích Ngoài ra, toán tử “” cho phép Snort xem cặp địa chỉ/port nguồn và đích là tương đương, nghĩa là nó sẽ ghi lại và phân tích dữ liệu ở cả hai phía của cuộc hội thoại.
Hướng dẫn cài đặt và cấu hình SNORT trên hệ điều hành Ubuntu
SNORT có khả năng cài đặt và sử dụng trên nhiều hệ điều hành khác nhau Trong bài viết này, tôi sẽ hướng dẫn cài đặt và sử dụng SNORT trên hệ điều hành Ubuntu phiên bản 18.04.
2.4.1 Chuẩn bị hệ thống trước khi tiến hành cài SNORT
− Bước 1: Chuẩn bị sẵn một máy ảo được cài đặt hệ điều hành Ubuntu phiên bản 18.04 LTS trên VMware
− Bước 2: Khởi động máy ảo và mở terminal
− Bước 3: Chuyển sang user root
Hình 2.4 Khởi động và chuyển quyền user
− Bước 4: Tiến hành cập nhật và nâng cấp hệ thống bằng lệnh: sudo apt update sudo apt upgrade
Hình 2.5 Cập nhật và nâng cấp hệ thống
2.4.2 Cài đặt các gói bắt buộc và SNORT
2.4.2.1 Cài đặt các gói bắt buộc và thư viện
− Bước 1: Tiến hành cài đặt các thư viện cần thi t ế
Hình 2.6 Tiến hành cài đặt các thư viện cần thiết
− Bước 2: Tải và cài đặt DAQ
Hình 2.7 Tải mã nguồn daq từ trang chủ của SNORT
Hình 2.8 Tiến hành giải nén file vừa cài đặt
Hình 2.9 Biên dịch và cài đặt DAQ Vậy là h ệthống đã sẵn sàng để có thể cài đặt, cấu hình và s d ng SNORT ử ụ
− Bước 1: t i xu ng mã ngu n Snort v i wget ả ố ồ ớ
Hình 2.10 Tải xuống mã nguồn của SNORT
− Bước 2: Gi i nén file v a t i và tiả ừ ả ến hành cài đặt
Hình 2.11 Giải nén file vừa tải và tiến hành cài đặt
SNORT có khả năng hoạt động ở nhiều chế độ khác nhau, nhưng để phát hiện và đưa ra cảnh báo hiệu quả, cần cấu hình SNORT chạy ở chế độ NIDS (Network Intrusion Detection System).
− Bước 1: Cập nhật các thư viện dùng chung
− Bước 2: Thiết lập tên người dùng và cấu trúc thư mục
Hình 2.12 Tạo thư mục và người dùng mới sau đó cấp quyền
Để xác định các mối đe dọa tiềm ẩn, bước 3 là tải xuống các quy tắc phát hiện mà Snort sẽ tuân theo Snort cung cấp ba tầng bộ quy tắc: quy tắc cộng đồng, quy tắc đã đăng ký và quy tắc của người đăng ký Trong trường hợp này, bạn nên chọn sử dụng quy tắc cộng đồng.
Hình 2.13 Tải xuống bộ quy tắc cộng đồng
Hình 2.14 Tiến hành giải nén và cài đặt
− Bước 4: Cấu hình mạng và bộ quy tắc cho SNORT
Hình 2.15 Cấu hình mạng và đặt đường dẫn cho các bộ quy tắc
− Bước 5: Xác thực cài đặt SNORT
Hình 2.16 Chạy SNORT dưới chế độ test để xác thực cài đặt
2.4.4 Demo hoạt động của SNORT
− Bước 1: Ki m tra hoể ạt động c a SNORT b ng cách t o thêm m t luủ ằ ạ ộ ật mới để phát hi n các k t nệ ế ối ICMP đến vào t p local.rules ệ
Hình 2.17 Tạo thêm luật mới
− Bước 2: Chạy SNORT ởchế độ NIDS v i câu l nh: ớ ệ sudo snort -A console -i ens33 -u snort -g snort -c /etc/snort/snort.conf
− Bước 3: Ti n hành ping t ế ừ 1 máy bên ngoài đến máy đã cài SNORT
Hình 2.19 Ping từ 1 máy bên ngoài tới máy có cài SNORT
− Bước 4: Ki m tra hoể ạt động c a SNORT ủ
Hình 2.20 SNORT hoạt động và có thể đưa ra cảnh báo.
KỸ THUẬT TẤN CÔNG CƠ SỞ DỮ LIỆU SQL INJECTION 46 3.1 Tấn công SQL Injection là gì?
Các dạng tấn công SQL Injection
SQL Injection có thể được phân loại thành nhiều loại khác nhau dựa trên cách thức thực hiện, khả năng tác động và các đặc tính riêng biệt của kỹ thuật Ba loại cơ bản của SQL Injection bao gồm: In-band SQLi (Classic), Inferential SQLi (Blind) và Out-of-band SQLi.
Kẻ tấn công tận dụng cùng một kênh liên lạc để thực hiện các cuộc tấn công và thu thập kết quả Sự đơn giản và hiệu quả của In-band SQLi đã khiến nó trở thành một trong những kiểu tấn công SQLi phổ biến nhất hiện nay.
Có hai biến thể phụ của phương pháp này:
Hacker thực hiện tấn công SQLi dựa trên lỗi bằng cách gây ra các thông báo lỗi từ cơ sở dữ liệu Những thông báo này cung cấp thông tin quý giá, giúp hacker thu thập dữ liệu về cấu trúc của cơ sở dữ liệu.
Kỹ thuật SQLi dựa trên UNION lợi dụng toán tử UNION trong SQL để kết hợp nhiều câu lệnh từ cơ sở dữ liệu, nhằm thu thập phản hồi HTTP Phản hồi này có thể chứa dữ liệu giá trị mà kẻ tấn công có thể khai thác.
Hacker gửi các data payload đến server và theo dõi phản ứng của nó để hiểu cấu trúc của server Phương pháp này được gọi là Blind SQLi, vì dữ liệu không được truyền từ cơ sở dữ liệu của trang web đến hacker.
Do đó hacker không thể nhìn thấy thông tin về cuộc tấn trong in-band
Blind SQL injection dựa trên phản ứng và các hành vi hoạt động của server
Do đó chúng thường thực thi chậm hơn, nhưng có thể gây ảnh hưởng tương tự Blind SQL injection có thể được phân loại thành:
Hacker sử dụng truy vấn SQL để tương tác với cơ sở dữ liệu, dẫn đến việc ứng dụng trả về kết quả khác nhau tùy thuộc vào tính chính xác của truy vấn Kết quả này ảnh hưởng đến thông tin trong phản hồi HTTP, và từ đó, hacker có thể xác định tính đúng đắn của thông báo được tạo ra.
Hacker dựa trên thời gian phản hồi của Cơ sở dữ liệu để xác định tính đúng sai của một truy vấn SQL Khi gửi truy vấn, Cơ sở dữ liệu sẽ phải chờ đợi trong vài giây trước khi hoạt động trở lại Thời gian này cho phép hacker phân tích và tạo ra một phản hồi HTTP, từ đó xác định thông báo trả về mà không cần truy cập vào dữ liệu bên trong Cơ sở dữ liệu.
Hacker chỉ có thể thực hiện hình thức tấn công này khi một số tính năng nhất định được kích hoạt trên server cơ sở dữ liệu của ứng dụng web Hình thức này chủ yếu được sử dụng để thay thế cho các kỹ thuật in-band và inferential SQLi.
Out-of-band SQLi là phương pháp tấn công mà hacker không thể sử dụng cùng một kênh để khởi động và thu thập thông tin do server chậm hoặc không ổn định Kỹ thuật này dựa vào khả năng của server trong việc tạo ra các yêu cầu DNS hoặc HTTP để truyền dữ liệu cho kẻ tấn công.
Những phần dễ bị tấn công bởi SQL Injection
Bất kỳ phần nào của website đều có thể bị tấn công bằng phương pháp SQL Injection Tin tặc sẽ lựa chọn các khu vực khác nhau để thực hiện các cuộc tấn công dựa trên mục đích của họ.
- Tuy nhiên, có một số phần được đánh giá là rất dễ bị tấn công bằng SQL Injection Đó là:
● Các form đăng nhập của website
● Các form tìm kiếm dữ liệu
● Các form đánh giá, nhận xét
● Các liên kết của website
● Các trường lưu hoặc trường nhập dữ liệu đầu vào
Mặc dù các phần của hệ thống có thể dễ dàng bị tấn công bởi tin tặc, nhưng không thể coi nhẹ những hậu quả nghiêm trọng mà SQL Injection gây ra Mọi thành phần trong hệ thống đều có khả năng trở thành mục tiêu của các cuộc tấn công SQL Injection, dẫn đến rủi ro lớn cho toàn bộ hệ thống.
Một số câu lệnh tấn công SQL Injection
Tùy thuộc vào mục đích tấn công, kỹ thuật của tin tặc và vị trí bị xâm nhập, các câu lệnh tấn công SQL Injection sẽ khác nhau Dưới đây là một số câu lệnh SQL Injection phổ biến thường gặp.
Câu lệnh "a' or '1'='1" là một trong những phương pháp phổ biến nhất để tấn công vượt qua đăng nhập Khi sử dụng tên người dùng và mật khẩu là "a' or '1'='1", truy vấn sẽ trở thành một mệnh đề luôn đúng, cho phép kẻ tấn công truy cập trái phép vào hệ thống.
SQL: select * from user where username = 'a' or '1'='1' and password = 'a' or '1'='1'
Khi có lỗ hổng bảo mật, bất kỳ ai nắm bắt được thông tin này đều có khả năng đăng nhập và thao tác với dữ liệu lưu trữ.
− sql = "select * from user where id = '$id' ;
Câu lệnh này thường được áp dụng khi lập trình viên hoặc người dùng không xác định rõ ràng đầu vào dữ liệu hoặc bỏ qua bước kiểm tra dữ liệu Hành động này vô tình tạo ra lỗ hổng mà tin tặc có thể lợi dụng để thực hiện các cuộc tấn công.
Câu lệnh trên cho thấy rõ ràng rằng id là một trường số (kiểu int) Tuy nhiên, khi người dùng nhập vào chuỗi ký tự thay vì số, nó có thể tạo ra một câu truy vấn SQL hoàn chỉnh mới.
Ví dụ, ta thiết lập giá trị của biến id là: 1;DROP TABLE users
Khi đó, câu lệnh truy vấn sẽ được hiểu thành:
SELECT * FROM user WHERE id=1;DROP TABLE user;
Dấu chấm phẩy (;) trong SQL được sử dụng để phân tách các câu lệnh, điều này tạo cơ hội cho tin tặc chèn thêm các lệnh nguy hiểm như UPDATE, SELECT, INSERT, DELETE vào câu lệnh gốc, có thể gây ra ảnh hưởng tiêu cực đến cơ sở dữ liệu.
Demo tấn công bằng SQL Injection
Hiện nay, có nhiều website hỗ trợ việc demo tấn công và phòng thủ qua SQL Injection Bên cạnh đó, người dùng cũng có thể tự xây dựng mô hình website để thực hiện các bài demo này.
3.5.1 Tấn công vượt qua đăng nhập
Các thao tác demo tấn công SQL Injection được thực hiện trên website Altoro Mutual, một nền tảng phổ biến cho việc kiểm tra lỗ hổng SQL Injection.
Hình 3.2 Hình ảnh website được sử dụng để demo tấn công
● Bước 1: Truy cập vào form đăng nhập của website
Hình 3.3 Form đăng nhập của website
● Bước 2: Tiến hành sử dụng mệnh đề luôn đúng bằng cách sử dụng câu lệnh: ' or 1=1
Hình 3.4 Sử dụng mệnh để luôn đúng để tấn công vượt qua đăng nhập
Bước 3: Chúng ta đã có thể truy cập vào hệ thống với quyền admin, cho phép thực hiện các thao tác với quyền cao nhất.
Hình 3.5 Vượt qua đăng nhập thành công
3.5.2 Tấn công phá hoại cơ sở dữ liệu
Tùy thuộc vào mục đích, tin tặc sử dụng các câu lệnh khác nhau để tấn công cơ sở dữ liệu Dưới đây là một số ví dụ về việc tấn công nhằm mục đích lấy thông tin từ cơ sở dữ liệu trên DVWA, một ứng dụng mã nguồn PHP/MySQL giúp phát hiện các lỗ hổng bảo mật trong mã nguồn PHP với mức độ bảo mật "Low".
Để bắt đầu, đăng nhập vào DVWA với tài khoản “admin” và mật khẩu “password” Tiếp theo, thiết lập mức độ bảo mật của DVWA ở chế độ “Low” và chọn SQL Injection để tiến hành tấn công Tại hộp nhập dữ liệu của User ID, khi nhập ID từ 1 đến 5, hệ thống sẽ hiển thị tất cả bản ghi trong cơ sở dữ liệu.
Hình 3.6 Lấy dữ liệu từ database
Từ đó thấy được d ữliệu được truy xu t v i câu l nh là : ấ ớ ệ
$getid = “SELECT first_name, last_name FROM users WHERE user_id =
Từ đó, ta có thể thực hiện lấy toàn bộ thông tin bên trong cơ sở dữ liệu như sau:
− Trường hợp 1: Hiển thị tất c các b n ghi trong CSDL ả ả
Khi đó, truy vấn sẽ được hiểu thành: mysql> SELECT first_name, last_name
FROM users WHERE user_id = ‘%’ or ‘0’=’0′ Và sau khi xác nh n thì s ậ ẽ hiển thị đượ ấc t t cả các b n ghi ở trong CSDL ả
Hình 3.7 Hiển thị tất cả các bản ghi trong CSDL
− Trường hợp 2: Hiển thị phiên b n c a CSDL Mysql ả ủ
Nhập chuỗi “%’ or 0=0 union select null, version() #” vào khung nhập text và nhấn submit Hàm union được sử dụng để kết hợp chuỗi và hàm version() để hiển thị phiên bản của cơ sở dữ liệu Hành động này không chỉ cho phép kẻ tấn công truy cập vào các bản ghi trong cơ sở dữ liệu mà còn tiết lộ phiên bản của hệ quản trị cơ sở dữ liệu đang sử dụng.
Hình 3.8 Hiển thị phiên bản của CSDL Mysql
− Trường hợp 3: Hiển thị tên của CSDL
Nhập ID là “%’ or 0=0 union select null, database() #” sau đó chọn submit Hàm database() sẽ lấy ra và hiển thị tên của CSDL và ghi ở bản ghi cuối cùng
Hình 3.9 Hiển thị tên của CSDL
− Trường hợp 4: Hi n thị nội dung các cột c a b ng User trong ể ủ ả
Nhập vào ô user ID truy vấn “%’ and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #” và ch n submit ọ
Kết quả nhận được sẽ bao gồm nội dung của các cột trong bảng người dùng, có chứa thông tin về tài khoản và mật khẩu Mặc dù đã được mã hóa, hiện nay có nhiều công cụ và website hỗ trợ việc giải mã, giúp kẻ xấu có thể lấy được tài khoản và mật khẩu của người dùng, từ đó thực hiện hành vi đánh cắp tài khoản và tác động đến cơ sở dữ liệu.
Hình 3.10 Hiển thị nội dung các cột của bảng User trong CSDL
ỨNG DỤNG SNORT VÀO VIỆC PHÁT HIỆN VÀ XÂY DỰNG PHƯƠNG PHÁP PHÒNG CHỐNG TẤN CÔNG SQL INJECTION
Phát hiện tấn công SQL Injection cho website bằng cách sử dụng
Khi hoạt động dưới chế độ NIDS, Snort có khả năng lắng nghe và phân tích lưu lượng mạng, giúp phát hiện các cuộc tấn công SQL Injection nhằm thu thập thông tin từ hệ thống cơ sở dữ liệu của các máy chủ web.
Snort là một công cụ phát hiện xâm nhập giúp giám sát lưu lượng truy cập độc hại trong mạng Nó ghi lại lưu lượng truy cập này và thông báo cho quản trị viên mạng ngay lập tức, giúp họ chú ý đến các hoạt động đáng ngờ Nhờ đó, quản trị viên có thể đưa ra phán đoán và thực hiện các biện pháp ngăn chặn kịp thời khi phát hiện tấn công.
− H ệthống tri n khai ể : o IDS: SNORT o Ứng d ng web s dụ ử ụng để ể tri n khai th c nghi m: Dhakkan ự ệ
− Các bước tiến hành và k t qu ế ả
❖ Trường h p 1: Phát hiện Error Based SQL Injection ợ
Trong phương pháp tấn công SQL Injection dựa trên lỗi, tin tặc khai thác các ký tự như dấu ngoặc đơn (‘) hoặc dấu ngoặc kép (“) để làm rối loạn truy vấn SQL, từ đó xác định và khai thác lỗ hổng bảo mật trong hệ thống.
Để phát hiện và ngăn chặn lỗi, chúng ta cần thiết lập một quy tắc trong SNORT nhằm phân tích các cuộc tấn công SQL Injection dựa trên lỗi Quy tắc này sẽ giúp theo dõi các truy vấn SQL không hợp lệ trên máy chủ, ngăn chặn những kẻ tấn công cố gắng truy cập vào cơ sở dữ liệu mà không có quyền truy cập hợp lệ.
First, I will add two rules to detect Error Based SQL Injection in the local.rules file by executing the command `sudo gedit /etc/snort/rules/local.rules` This will open the editing interface for modifications.
Hình 4.1 Thêm luật phát hiện SQL Injection
− Sau đó lưu lại và ti n hành chế ạy SNORT dưới chế độ NIDS
− Truy c p vào website cậ ủa Dhakkan và l a ch n chự ọ ế độ ấn công đơn t giản
− Tiến hành thực hiện tấn công bằng câu lệnh “192.168.64.139/sqli/Less- 1/?id=1’ ” v i 192.168.64.139 là IP cớ ủa máy đang tiến hành thực nghi m ệ
Hình 4.3 Tiến hành tấn công
− Website ngay l p t c báo truy v n có l i Cùng thậ ứ ấ ỗ ời điểm đó, SNORT cũng đã phát ra cảnh báo có tín hi u cệ ủa t n công SQL Injection ấ
Hình 4.4 Website ngay lập tức báo lỗi
Hình 4.5 SNORT cũng đồng thời đưa ra cảnh báo rằng có tấn công
Dựa trên các cảnh báo từ SNORT, quản trị viên có thể đưa ra những phán đoán và biện pháp ngăn chặn kịp thời, nhằm đảm bảo an toàn cho hệ thống và cơ sở dữ liệu.
4.2 Các phương pháp phòng chống tấn công SQL Injection phổ biến hiện nay
Mặc dù SQL Injection không phải là kỹ thuật tấn công phổ biến hiện nay, nhưng hậu quả của nó vô cùng nghiêm trọng So với nhiều phương pháp tấn công khác, SQL Injection được đánh giá là nguy hiểm hơn vì nó có khả năng ảnh hưởng trực tiếp và phá hoại cơ sở dữ liệu.
Vì thế mà việc phòng tránh loại hình tấn công này lại càng trở nên cần thiết
4.2.1 Xác thực và lọc dữ liệu đầu vào ngay từ phía người dùng
Để giảm thiểu nguy cơ tấn công SQL Injection, việc đảm bảo rằng dữ liệu đầu vào từ người dùng được lọc sạch là vô cùng quan trọng Các phần dễ bị tấn công trên website thường liên quan đến dữ liệu mà người dùng nhập vào.
Quá trình xác thực dữ liệu là bước quan trọng để kiểm tra tính hợp lệ của thông tin mà người dùng nhập vào hệ thống Việc này không chỉ đảm bảo rằng kiểu dữ liệu, độ dài và định dạng đều đúng yêu cầu, mà còn giúp hệ thống chấp nhận chỉ những giá trị đã được xác thực Nhờ vào quá trình này, hệ thống có khả năng chống lại các lệnh tấn công được chèn vào thông qua chuỗi input.
Các cá nhân và đơn vị quản lý website có thể áp dụng các bộ lọc để loại bỏ kí tự đặc biệt hoặc từ khóa có khả năng gây ra biến đổi trong cơ sở dữ liệu do người dùng nhập, nhằm giảm thiểu nguy cơ tấn công bằng SQL Injection.
Xác thực nên được áp dụng với các trường cho phép người dùng nhập đầu vào, mà bạn còn nên quan tâm đến các tình huống sau:
Sử dụng biểu thức chính quy để tạo danh sách trắng cho các dữ liệu có cấu trúc như tên, tuổi, thu nhập và mã bưu điện nhằm đảm bảo rằng đầu vào được xác thực một cách hợp lệ.
Khi sử dụng một bộ giá trị cố định như danh sách thả xuống, cần xác định giá trị được trả về Dữ liệu đầu vào phải phù hợp với một trong những tùy chọn đã được cung cấp.
4.2.2 Lựa chọn sử dụng tham số thay vì các câu lệnh truy vấn trực tiếp Đối với các ứng dụng hay website có kết nối trực tiếp với CSDL thì việc sử dụng các câu lệnh truy vấn trực tiếp là rất phổ biến và có thể diễn ra một cách thường xuyên Tuy nhiên, đây lại chính là một trong những lỗ hổng mà các tin tặc có thể sử dụng để xác định CSDL và thực hiện tấn công
Để giảm thiểu nguy cơ tấn công từ tin tặc, việc sử dụng tham số (parameter) thay vì các câu lệnh truy vấn trực tiếp là rất quan trọng Nếu dữ liệu đầu vào không hợp lệ, SQL Engine sẽ tự động phát hiện lỗi và ngăn chặn các cuộc xâm nhập.
4.2.3 Cân nhắc để phân quyền rõ ràng cho các user trong DB
Việc cho phép tất cả các tài khoản truy cập vào database tiềm ẩn nhiều rủi ro không lường trước được, đặc biệt khi tài khoản bị hack và kiểm soát bởi hacker, có thể gây ra hậu quả nghiêm trọng Thay vì cấp quyền truy cập cho mọi tài khoản, nên cân nhắc và chỉ định một số tài khoản nhất định để đảm bảo an toàn cho hệ thống.
TRIỂN KHAI THỰC NGHIỆM TRÊN WEBSITE
Khảo sát thực trạng môi trường thực nghiệm
Du lịch đang trở thành một nhu cầu phát triển mạnh mẽ, khiến du khách ngày càng quan tâm đến việc tìm hiểu thông tin về các địa điểm và trải nghiệm du lịch Nhằm đáp ứng nhu cầu này, website CLOUDTRAVEL đã được ra đời để chia sẻ kinh nghiệm du lịch, giúp du khách có được chuyến đi trọn vẹn hơn.
Hình 5.1 Hình ảnh trang chủ website
CLOUDTRAVEL cung cấp cho những người yêu thích du lịch một kho tàng kiến thức bổ ích và những kinh nghiệm quý giá để tận hưởng chuyến đi trọn vẹn Tuy nhiên, sau khi khảo sát, tôi nhận thấy website này có một số ưu điểm và nhược điểm nhất định.
− Công nghệ được sử dụng: PHP7.x và MySQL 5.x
Website hiện tại chưa bị tấn công, nhưng qua khảo sát, đã phát hiện các lỗ hổng bảo mật, đặc biệt là khả năng bị tấn công SQL Injection Các trường nhập dữ liệu của người dùng không được kiểm soát và lọc, tạo điều kiện cho kẻ tấn công xâm nhập và thực hiện các cuộc tấn công vào website.
B ng 5.1 Các l h ng c a website CloudTravel ả ỗ ổ ủ
Lỗ hổng của website Mô tả cụ thể
Form đăng nhập Không tiến hành lọc các ký tự đặc biệt, từ đó ta có thể tấn công vượt qua đăng nhập
Kết hợp sử dụng SNORT để phát hiện tấn công và Modsercurity để thực hiện phòng chống
ModSecurity là một module tường lửa tích hợp cho các máy chủ ứng dụng web như Apache, IIS và Nginx, cho phép phân tích và ghi nhật ký luồng dữ liệu Đặt trước Web Server, nó hoạt động như một firewall để kiểm soát truy cập vào và ra khỏi Web Server ModSecurity đảm bảo kiểm soát chặt chẽ thông tin từ bên ngoài vào và từ bên trong ra, nhằm ngăn chặn các mối đe dọa có thể gây hại cho Web Server cũng như ngăn chặn rò rỉ thông tin nhạy cảm từ Web Server đến Client.
5.2 Triển khai tấn công bằng SQL Injection đối với hệ thống của website
5.2.1 Mô hình th c hi n t n công ự ệ ấ
Trong quá trình sử dụng website, tin tặc sẽ lợi dụng các lỗ hổng bảo mật để chèn mã độc vào các truy vấn và câu lệnh, nhằm thực hiện các cuộc tấn công.
Khi bị tấn công, các lỗ hổng bảo mật có thể cho phép kẻ tấn công vượt qua tường lửa, ảnh hưởng đến web server và sau đó là cơ sở dữ liệu Điều này có thể dẫn đến việc cơ sở dữ liệu bị tác động, ảnh hưởng nghiêm trọng và thậm chí bị sửa đổi hoàn toàn.
5.2.2 Tri n khai t n công SQL Injection trên website CloudTravel ể ấ
− Bước 1: Truy c p vào trang login cậ ủa website
Hình 5.3 Giao diện login của website
− Bước 2: Ti n hành tế ấn công vượt qua đăng nhập v i câu lớ ệnh “a’ or
Hình 5.4 Tấn công vượt qua đăng nhập
− Bước 3: Nhấn Enter và chúng ta đã có thể truy c p vào website vậ ới quy n cao nh t là admin ề ấ
Triển khai xây dựng phương án phòng chống
Hình 5.6 Mô hình phát hiện và phòng chống tấn công phát hi n và phòng ch ng t n công k p th i, ta k t h p s d ng c IPS Để ệ ố ấ ị ờ ế ợ ử ụ ả
SNORT và tường lửa ứng dụng web ModSecurity
Khi tin tặc thực hiện tấn công SQL Injection vào website, SNORT sẽ đảm nhiệm việc lắng nghe, phân tích và đưa ra cảnh báo, trong khi Mod Security sẽ tiến hành ngăn chặn các cuộc tấn công, bảo vệ server và dữ liệu khỏi bị ảnh hưởng.
5.3.2.1 Cài đặt Modsecurity cho hệ thống
− Bước 1: Cài đặt Apache Web server
Hình 5.7 Update hệ thống trước khi tiến hành cài đặt
Hình 5.8 Cài đặt apache2 bằng apt Vậy là h ệthống đã sẵn sàng để cài đặt Modsecurity
Hình 5.10 Kiểm tra module xem đã được bật hay chưa
Hình 5.11 Tiến hành cấu hình cho Modsecurity
Hình 5.12 Tải xuống bộ quy tắc mới cho Modsecurity từ Github
Hình 5.13 Cấu hình và đổi tên file để modsecurity có thể hoạt động trên apache2
− Bước 4: Kiểm tra hoạt động của ModSecurity
Hình 5.14 Sau đó, thực hiện tấn công lại thì modsecurity đã tiến hành ngăn chặn
5.3.2.2 Triển khai ngăn chặn tấn công SQL Injection bằng Modsecurity cho website CloudTravel
Sau khi cài đặt xong Modsecurity, ta tiến hành thực hiện demo hoạt động phòng ch ng trên website CloudTravel ố
Hình 5.15 Bật Modsecurity và chạy lại apache2
- Bước 2: Truy c p lậ ại trang đăng nhập của website
Hình 5.16 Truy cập lại trang đăng nhập của website
- Bước 3: Th c hiự ện t n công v i câu lấ ớ ệnh “a’ or ‘1’=’1”
Hình 5.17 Thực hiện tấn công lại bằng câu lệnh
- Bước 4: Modsecurity đã thực hiện phòng ch ng thành công ố
Hình 5.18 Kết quả là Modsecurity thực hiện phòng chống thành công