chương I, đồ án sẽ trình bày về bài toán phát hiện Botnet đồng thời tìm hiểu về mã độc, Botnet, cụ thể hơn là định nghĩa, cách phân loại. Ngoài ra, đồ án sẽ đưa ra các phương pháp, kỹ thuật phát hiện Botnet hiện đang có trên thế giới. Khái quát về Botnet 1. Giới thiệu về mã độc 1.
Định nghĩa Mã độc (Malicious Software/Malware) là một dạng chương trình hoặc một đoạn chương trình được chèn vào chương trình khác với mục đích thực hiện các loại hành vi gây hại đến các thành phần máy tính như: máy khách, máy chủ, hệ thống mạng. và mục đích cuối cùng thường sẽ gây hại tới người dùng [1]. Các phần mềm độc hại này sẽ thực hiện các hành vi xâm phạm tới các thuộc tính của an toàn thông tin (bí mật, toàn vẹn, sẵn dùng). Mục đích mà mã độc được tạo ra và sử dụng thường là lấy trộm thông tin hoặc tạo cửa hậu (backdoor) trong hệ thống để có thể truy cập vào tài nguyên, dữ liệu mà không cần sự cho phép của chủ sở hữu.
Phân loại Có nhiều phương pháp phân loại các phần mềm độc hại, trong đó một phương pháp được thừa nhận rộng rãi là chia các phần mềm độc hại thành 2 nhóm chính: - Các phần mềm độc hại cần chương trình chủ, vật chủ (host) để ký sinh và lây nhiễm. Các phần mềm độc hại thuộc nhóm này gồm: Logic bomb, Trojan horses, Virus, Rootkit, Adware (Phần mềm quảng cáo) và Spyware (Phần mềm gián điệp), Ransomware, Cryptojacking [1, 2]. - Các phần mềm độc hại không cần chương trình chủ, vật chủ để lây nhiễm. Các phần mềm độc hại thuộc nhóm này gồm Worms (Sâu) và Zombies hay Bots [1, 2].
Trong số các phần mềm độc hại, các phần mềm độc hại có khả năng tự lây nhiễm (self- infection), hay tự nhân bản (self-replicate) gồm Virus, Worm và Bot. Các dạng còn lại không có khả năng tự lây nhiễm. Việc phân loại các phần mềm độc hại kể trên mang tính chất tương đối do hiện nay có một số phần mềm độc hại có các đặc tính của cả Virus, Worm và Bot. Các phần mềm độc hại cần chương trình chủ: - Virus: là một đoạn mã độc được gắn kèm vào một phần mềm khác (đầu hoặc cuối mã nguồn), khi phần mềm này được thực thi, thường do sự không để ý của người dùng, virus sẽ theo đó mà khởi động và tiến hành nhân bản, phát tán mã độc bằng cách chỉnh sửa các chương trình khác khi chèn chính nó vào mã nguồn của những NGUYỄN QUỐC TUẤN – B17DCAT201 12 ĐỒ ÁN TỐT NGHIỆP chương trình này [2, 3].
Mục đích thường là đánh cắp dữ liệu nhạy cảm, khởi động một cuộc tấn công DDoS hoặc nhắm tới tấn công Ransomware. Hình 1-1: Phân loại mã độc - Trojan: hay Trojan Horse, là một trong các loại malware nguy hiểm nhất. Nó thường giả dạng thành một phần mềm hữu dụng nào đó như: game, app, bản cập nhật phần mềm, hoặc được nhúng trong mail,. để lừa người dùng cài đặt.
Một khi người dùng tải và cài đặt Trojan, attacker đằng sau nó có thể vượt quyền và kiểm soát được máy tính, hệ thống. Khác với virus, Trojan không được thiết kế để có khả năng tự nhân bản [3]. Mục đích thường để truy cập tới những dữ liệu nhạy cảm, sửa đổi, xóa dữ liệu, hoặc nhắm tới tấn công Ransomware. - Logic bomb: (Bom logic) là các đoạn mã độc thường được “nhúng” vào các chương trình bình thường và thường hẹn giờ để “phát nổ” trong một số điều kiện cụ thể.
Điều kiện để bom “phát nổ” có thể là sự xuất hiện hoặc biến mất của các file cụ thể, một thời điểm cụ thể, hoặc một ngày trong tuần. Khi “phát nổ” bom logic có thể xoá dữ liệu, file, tắt cả hệ thống. - Spyware: là loại mã độc được sử dụng để bí mật thu thập dữ liệu cá nhân người dùng, cụ thể nó sẽ theo dõi hành vi sử dụng máy tính và gửi tới một bên thứ ba mà không cần sự cho phép của người dùng [1, 2]. Mục đích thường để đánh cắp dữ liệu cá nhân.
Một loại Spyware tiêu biểu là Keylogger, có khả năng ghi lại hành vi gõ phím từ người dùng. NGUYỄN QUỐC TUẤN – B17DCAT201 13 ĐỒ ÁN TỐT NGHIỆP - Rootkit: là loại mã độc, thường là tập hợp các công cụ phần mềm độc hại, cho phép hacker có được quyền truy cập từ xa với quyền hạn admin trong hệ thống mục tiêu, còn được biết đến là quyền truy cập “root”. Rootkit không có khả năng tự nhân bản, nên sẽ không lây lan được, nó phải được người dùng cài đặt trên thiết bị máy tính. Bởi vì nơi mà nó được vận hành (trong OS kernel hoặc trong BIOS), Rootkit rất khó có thể bị phát hiện và thậm chí càng khó hơn trong việc xóa bỏ [1, 2].
- Adware: là một loại phần mềm được thiết kế để thu thập dữ liệu người dùng trên máy tính, từ đó đưa ra quảng cáo phù hợp, thường là trên trình duyệt web. Adware sử dụng phương thức ngụy trang thành ứng dụng hợp pháp hoặc nó sẽ lợi dụng ứng dụng khác để lừa người dùng cài đặt [1, 2]. - Ransomware: là loại mã độc được sử dụng để khóa người dùng khỏi thiết bị/tài nguyên trên thiết bị của chính họ, hoặc mã hóa các file trong máy tính từ đó buộc người dùng phải thanh toán một khoản phí chuộc để lấy được khóa giải mã. Ransomware những năm gần đây trở thành một loại vũ khí lợi hại của tội phạm mạng bởi nó đòi hỏi người dùng phải thanh toán nhanh chóng bằng tiền điện tử - loại tiền mà không thể truy vết [1, 2].
- Cryptojacking: (hay Malicious cryptomining) là loại malware đang thịnh hành, thường được cài đặt bởi Trojan. Nó cho phép việc sử dụng máy tính người dùng để tiến hành đào tiền ảo như Bitcoin. Sau đó số tiền ảo đào được sẽ được gửi về tài khoản của attacker. Nói cách khác, Cryptojacking lợi dụng tài nguyên máy tính người dùng để kiếm tiền cho kẻ tấn công [4].
Các phần mềm độc hại không cần chương trình chủ: - Worm: là một phần mềm mã độc độc lập, có điểm tương đồng với Virus. Điểm giống nhau này nằm ở khả năng tự nhân bản của Worm, tuy vậy Worm có một điểm khác biệt rõ ràng so với Virus, chính là nó có thể tự lây lan tới các thiết bị trong mạng mà không cần tới phần mềm phụ thuộc như Virus, cũng như không cần tới tương tác của người dùng [1, 2]. Worm thường lây nhiễm một thiết bị qua một file được download hoặc trong một kết nối mạng trước khi nó nhân bản và phát tán tới mọi thiết bị trong mạng theo cấp số mũ. Mục đích thường là đánh cắp dữ liệu, khởi động một cuộc tấn công DDOS hoặc nhắm tới tấn công Ransomware.
- Bots/Botnets: Bot là một ứng dụng phần mềm mà thực hiện những tác vụ một cách tự động theo lệnh. Chúng được sử dụng với mục đích hợp pháp như đánh chỉ mục cho công cụ tìm kiếm, nhưng khi sử dụng cho mục đích xấu, chúng sẽ được thiết kế để có thể xâm nhập vào máy tính, tự động phản hồi hoặc thực thi những lệnh được gửi tới bởi C&C server. Bots có thể tự nhân bản (như Worm) hoặc nhân bản NGUYỄN QUỐC TUẤN – B17DCAT201 14 ĐỒ ÁN TỐT NGHIỆP qua tương tác với người dùng [1, 2]. Một mạng lưới nhiều bots sẽ tạo nên Botnet, thường được dùng để khởi động cuộc tấn công DDoS.
Giới thiệu về Botnet Trong phần này, đồ án sẽ tiến hành giới thiệu về Botnet, cụ thể hơn là về định nghĩa, cách thức phân loại Botnet theo các đặc điểm của nó, vòng đời của một Botnet. Ngoài ra, đồ án sẽ chỉ ra một số hành vi của các loại Botnet phổ biến. Botnet thuật ngữ đầy đủ là “Bot network” dùng để chỉ một mạng lưới các máy tính bị chi phối bởi một người nào đó (Botmaster hay Bot herder), cụ thể là bị điều khiển bởi một máy tính khác từ xa [6]. Các máy tính bị nhiễm malware và trở thành một thành phần trong Botnet được gọi là “Zombie”.
Một mạng lưới Botnet có thể gồm hàng trăm nghìn thậm chí hàng triệu máy Zombie. Hình 1-2: Mô hình tấn công của Botnet [6] Một Botnet sẽ gồm 3 thành phần chính [7]: - Botnet operator (Bot master): là kẻ nắm quyền điều khiển các máy chủ C&C đưa ra lệnh cho các bot trong Botnet. - Command & Control Server (C&C): là máy chủ điều khiển các bot. Máy chủ này được dùng để phát ra các lệnh cho các bot trong mạng.
- Zombies (Bots): là các máy tính bị xâm nhập, bị cài phần mềm độc hại và chịu sự điều khiển của C&C Server. Ở phần tiếp theo đồ án sẽ giới thiệu về các kiến trúc và hoạt động của Botnet. NGUYỄN QUỐC TUẤN – B17DCAT201 15 ĐỒ ÁN TỐT NGHIỆP 1. Kiến trúc và hoạt động của Botnet 1.
Kiến trúc Kiến trúc của một Botnet là cấu trúc liên hệ giao tiếp giữa C&C Server và các bots trong mạng đó. Các loại kiến trúc Botnet: có thể chia Botnet thành 3 loại: - Kiến trúc Centralized Client – Server - Kiến trúc Decentralized Peer-to-Peer (P2P) - Kiến trúc Unstructured a. Kiến trúc Client – Server Hình 1-3: Kiến trúc Client-Server của Botnet Thế hệ đầu tiên của Botnet được triển khai trên kiến trúc Centralized Client-Server, C&C Server kiểm soát toàn bộ các Bots/Zombies. Trong kiến trúc này, mọi điều khiển sẽ được đưa ra từ Botmaster, đưa tới C&C Server để rồi cuối cùng mỗi C&C Server sẽ truyền đi lệnh điều khiển tới những Bots/Zombies nằm dưới quyền kiểm soát của nó [7].
Nhờ sự đơn giản, kiến trúc Centralized vẫn được sử dụng phổ biến ngày nay. Tuy vậy, nhược điểm của kiến trúc này so với kiến trúc P2P là tính “nhạy cảm” của nó đối với mỗi điểm kết nối thất bại [7]. Kiến trúc P2P Thế hệ mới của Botnet là kiến trúc Decentralized peer-to-peer (P2P). Một mạng P2P là mạng mà mỗi node trong mạng có thể vừa hoạt động như client vừa hoạt động như server [7].
NGUYỄN QUỐC TUẤN – B17DCAT201 16 ĐỒ ÁN TỐT NGHIỆP Hình 1-4: Kiến trúc P2P của Botnet Trong P2P Botnet, các bot có thể nhận lệnh từ bot khác mà không cần phải từ Botmaster. Do đó, kể cả khi số lượng bot trong mạng được xác định, các chuyên gia an toàn mạng cũng không có bất kỳ thông tin gì để xác định được Botmaster. P2P Botnet có khá nhiều ưu điểm so với kiến trúc Centralized Botnet, mỗi bot là một máy độc lập trên kênh truyền nên nếu một bot bất kỳ bị lỗi sẽ không ảnh hưởng gì tới Botnet. Tuy nhiên, việc thiết kế hệ thống P2P là phức tạp hơn kiến trúc Centralized rất nhiều, cũng như không đảm bảo đường truyền và độ trệ [7].