Đối với các phương pháp phát hiện botnet trực tuyến, phát hiện sớm là một thách thức do phải xử lý thông tin với lưu lượng kích thước lớn trong một môi trường mạng đặc thù đòi hỏi một lượng tính toán khổng lồ. Bên cạnh đó, các chiến lược phát hiện hiện nay chưa phân tích và kiểm soát được xu hướng thay đổi theo thời gian của lưu lượng mạng cũng như biểu hiện của bot, do đó cần có các phương pháp phát hiện mới. Ngoài ra, kích thước và đặc trưng của dữ liệu, lưu lượng mạng thay đổi nhanh chóng, tạo ra thách thức mới về khả năng thích nghi của bộ dò quét lý tưởng (không đòi hỏi huấn luyện lại nhiều mà vẫn đủ khả năng thực hiện các chức năng của nó) khi thay đổi hoặc cập nhật tập hợp tính năng được lựa chọn. Bài viết này giới thiệu hai phương pháp mới phát hiện botnet trực tuyến là: phương pháp sử dụng bộ dò quét và phương pháp BotMiner. Khi kết hợp hai phương pháp này có thể giải quyết được hai trong số ba thách thức nêu trên là phát hiện sớm và phát hiện mới botnet.
Hai phương pháp lựa chọn hai nhóm botnet trên nền HTTP làm mẫu thử là botnet Weasel và botnet BlackEnergy. Trong đó, Weasel là một botnet được thiết kế cho mục đích nghiên cứu, còn BlackEnergy là một botnet đã được tạo ra bởi Jose Nazario và các cộng sự vào năm 2007. Nhóm đầu tiên sử dụng một kênh thông tin được mã hóa hoàn toàn và một tập hợp hành vi động. Nhóm thứ hai không triển khai mã hóa mà sử dụng một tập hợp các hành vi tĩnh có thể cấu hình được. Hai botnet này được chọn làm mẫu botnet để thực nghiệm, bởi vì cả hai đều chưa được thiết kế của bộ dò quét biết đến và cũng không nằm trong tập dữ liệu huấn luyện trong hầu hết các phương pháp phát hiện botnet hiện có.
Cài đặt các mẫu thử
Botnet Weasel
Botnet Weasel được thiết kế với ý tưởng cung cấp một nền tảng mã nguồn mở để nghiên cứu lưu lượng botnet với trọng tâm phát triển là thực hiện và bảo mật cho các kênh thông tin, mối quan tâm chủ yếu là triển khai an toàn thông tin giữa các bot và bot điều khiển. Kết cấu của Weasel gồm có 3 môđun phân biệt: môđun bot, môđun ra lệnh và môđun điều khiển.
Môđun bot được coi như là một máy chủ, nhận các kết nối khe cắm từ môđun ra lệnh. Môđun ra lệnh là các máy trạm thành phần thực trong hệ thống botnet. Nó thực hiện việc gửi mệnh lệnh của bot điều khiển. Cả môđun ra lệnh và môđun bot đều tương tác với dịch vụ web RESTful Python. Dịch vụ này bao gồm các chức năng cập nhật trạng thái bot và lưu giữ lịch sử các lệnh đã gửi. Đây chính là môđun điều khiển.
Để điều phối hành vi giữa các môđun, Weasel sử dụng cơ sở dữ liệu PostgreSQL được chia sẻ. Các môđun ra lệnh và môđun điều khiển có thể truy cập trực tiếp vào cơ sở dữ liệu, trong khi đó, các bot phải thông qua dịch vụ web mới có thể truy cập được. Cơ sở dữ liệu này có các phần dùng để theo dõi trạng thái bot, lịch sử lệnh, thành phần lệnh và chứng chỉ người sử dụng. Weasel cung cấp một giao diện web có mã hóa trên nền HTTPS như là một phần của môđun điều khiển trong đó chứa một số khung thông tin cơ bản về trạng thái hiện tại của botnet. Đặc biệt, giao diện này chỉ cung cấp quyền truy cập cho phép đọc đối với các thông tin về trạng thái bot, lịch sử lệnh và tài khoản người sử dụng. Việc truy cập đến giao diện này được kiểm soát bằng bảng tài khoản cơ sở dữ liệu C&C, dựa trên cơ sở địa chỉ IP và mật khẩu của máy khách. Tầng bảo mật này để đảm bảo các thông tin nhạy cảm được truyền trong mạng bot chỉ được “nhìn thấy” bởi các máy chủ mà bot điều khiển chỉ định. Khi đó, việc vận hành môđun thông tin botnet là một sự giao tiếp đơn giản bằng các lệnh điều khiển được chia sẻ giữa bot điều khiển và các bot.
Weasel không mã hóa bất kỳ thông tin nào về loại lệnh sẽ được đưa ra, thay vào đó, các lệnh được viết dưới dạng tệp tin kịch bản Python, rồi sau đó truyền đến các bot để thực thi. Điều này cho thấy botnet Weasel ngoài việc được sử dụng để tấn công DDoS, phát tán thư rác còn có thể sử dụng cho mục đích không gây độc hại, ví dụ như tính toán phân tán.
Bảo mật thông tin giữa bot và bot điều khiển được thực hiện bằng mã hóa HTTPS. Khi khởi động, thực thi một lệnh của bot điều khiển hay dừng hoạt động bot sẽ đề xuất một yêu cầu HTTP GET đến máy chủ C&C để thông báo cho máy chủ hành vi hiện tại. Các thông báo hành vi này được gửi để bot điều khiển không thông tin với các bot không liên quan, đồng thời để bot điều khiển biết được về bot mới được hình thành. Để tránh sự chiếm đoạt quyền điều khiển của botnet, các bot sử dụng chứng chỉ và xác thực thông điệp cơ bản. Khi nhận một lệnh từ bot điều khiển, bot đề xuất một yêu cầu xác thực đến máy chủ C&C, bao gồm hàm hash MD5 của nội dung nhận được. Máy chủ quét danh sách lịch sử lệnh đã được đưa ra trong vòng 10 giây trước, và nếu giá trị hàm hash đã lưu trùng với giá trị hàm hash được gửi đến, dịch vụ xác định lệnh này là hợp lệ. Công đoạn này giúp hạn chế sự lặp lại của thông tin.
Botnet BlackEnergy
BlackEnergy là một bonet được thiết kế và sử dụng trong tấn công DDoS. Máy chủ ra lệnh và điều khiển sử dụng một giao diện web được xây dựng bằng PHP và MySQL để ra lệnh. Bộ mẫu thử được sử dụng trong bài này là bộ BlackEnergy 1.7. Tất cả các thông tin liên lạc trong mạng botnet BlackEnergy đều được khởi tạo từ các bot, sử dụng thông tin HTTP được mã hóa theo hệ cơ số 64. Đầu tiên các bot định kỳ gửi yêu cầu HTTP GET đến máy chủ C&C. Máy chủ phản hồi lại trạng thái hiện tại của bot bằng cách xác định thông tin trong cơ sở dữ liệu C&C. Sau đó, các bot sẽ đọc, phân tích phản hồi HTTP và cập nhật cấu hình hành vi tương ứng của nó. BlackEnergy chỉ đưa ra một số lệnh được thiết kế với mục đích duy nhất là thực thi tấn công DDoS. Các lệnh này bao gồm: làm tràn một máy chủ bằng các yêu cầu HTTP GET, tràn ICMP ping.... Sau đó, mỗi hành vi này ánh xạ trực tiếp đến một chức năng đã được mã hóa của bot. Tiếp theo, các chức năng này được biểu thị bởi nhiều giá trị cấu hình và nhúng vào trong phản hồi của các máy chủ C&C gửi đến bot. Đặc biệt, BlackEnergy có khả năng điều chỉnh tần suất yêu cầu, kích thước gói, địa chỉ bị mạo danh và sử dụng dòng các điều khiển (thread usage).
Thực nghiệm
Dưới đây trình bày hai phương pháp mới được thực nghiệm trên các mẫu thử đã được cài đặt ở phần trên.
Phương pháp sử dụng bộ dò quét
Trong bài này, thuật toán được sử dụng để phát hiện ngoại tuyến cũng như trực tuyến được áp dụng trong môi trường thực nghiệm. Để thực hiện các đánh giá sâu sắc hơn cũng như mô tả tính hiệu quả của nó, cần xây dựng một hệ thống phát hiện trên nền web để có thể triển khai trong cài đặt trực tuyến. Quy trình này bắt đầu bằng việc tải lên các tệp tin huấn luyện, ví dụ như các tệp tin pcap bao gồm các dữ liệu độc hại và không độc hại. Người sử dụng có thể chỉ định một thiết bị và một giao diện để bắt các gói trên đó tại một thời điểm cho trước để tạo ra tệp tin. Dữ liệu được đưa lên hoặc tải xuống sẽ được sử dụng để tạo ra một chữ ký sau này sẽ dùng để phát hiện botnet. Đối với phát hiện botnet trực tuyến, người sử dụng buộc phải lựa chọn một thiết bị và một giao diện để bắt các gói và thực hiện phát hiện trực tuyến. Còn đối với phát hiện botnet ngoại tuyến, người sử dụng phải tải lên và chỉ định các lưu lượng tệp tin sẽ được xử lý bởi bộ dò để kiểm tra sự hiện diện của các botnet.
Bộ dò trực tuyến sử dụng lưu lượng mẫu Weasel và BlackEnergy được thu một cách độc lập (các mẫu huấn luyện đó được thu thập từ các mạng khác nhau). Tập dữ liệu BlackEnergy bao gồm 19 MB lưu lượng độc hại được tạo ra bởi 3 bot mà bot điều khiển kiểm soát (gồm 3154 lưu lượng độc hại). Tập dữ liệu Weasel bao gồm 80 MB lưu lượng (gồm 623 lưu lượng độc hại và 2902 lưu lượng thông thường). Dữ liệu được thu thập trong thực nghiệm được thiết kế sao cho bot điều khiển có thể đưa ra một lệnh được lựa chọn ngẫu nhiên (từ một tổ hợp các tệp tin kịch bản có khả năng) đến bot, 4 tiếng một lần. Cả dữ liệu Weasel và BlackEnergy đều không được sử dụng trong thiết kế hay huấn luyện bộ dò. Các botnet sẽ được triển khai trên một máy chủ web công cộng không có tường lửa (các bảng IP), cho phép tất cả các lưu lượng đến và đi. Kết quả, dữ liệu thu thập được bao gồm cả các thông tin độc hại và thông thường. Cửa sổ thời gian mặc định được sử dụng là T=300 giây.
Bảng 1 biểu diễn các kết quả thu được sau khi sử dụng bộ dò đã được huấn luyện trên mỗi tập dữ liệu thử nghiệm.
Bảng 1: Các kết quả phát hiện tính mới không lọc.
Từ Bảng 1 ta thấy, đối với botnnet BlackEnergy, có tất cả 3154 cảnh báo đối với tất cả các địa chỉ IP trong tập dữ liệu. Nói cách khác, tất cả các máy độc hại đều đã được đánh dấu một cách thành công. Do tập dữ liệu này chỉ bao gồm lưu lượng độc hại, điều này có nghĩa là không có tỷ lệ dương tính sai nào trong trường hợp này.
Còn đối với bonnet Weasel, có 3525 cảnh báo được tạo ra. Nhưng không giống như tập dữ liệu BlackEnergy, tập dữ liệu Weasel là sự kết hợp của lưu lượng độc hại và thông thường.Trong 3525 cảnh báo đó, có 623 lưu lượng độc hại của bot hoặc bot điều khiển được đánh dấu độc hại một cách chính xác (đạt tỷ lệ phát hiện 100%). Tuy nhiên, điều này có nghĩa là có 2902 lưu lượng thông thường cũng bị cảnh báo nên tỷ lệ dương tính sai tương ứng là 82%.
Tuy các kết quả trên cho thấy mô hình phát hiện lưu lượng botnet mới là tốt, đáp ứng được hai yêu cầu là phát hiện sớm (thời gian chỉ khoảng 300 giây) và phát hiện mới (phát hiện được 100% các lưu lượng độc hại mới), nhưng nó cũng gặp phải khó khăn khi xử lý lưu lượng thông thường chưa được biết đến, khi biểu hiện của lưu lượng này có nét tương đồng với lưu lượng độc hại. Phương pháp chung để giải quyết khó khăn này là cải thiện nhận biết về môi trường của bộ dò bằng cách kết hợp các thông tin liên quan đến cấu trúc liên kết của mạng mục tiêu hoặc huấn luyện bộ dò (trước khi vận hành hoàn chỉnh) với các mẫu lưu lượng thông thường thu thập từ mạng mục tiêu (đây là phương pháp tự nhiên và hiệu quả), hoặc bằng phương pháp BotMiner.
Phương pháp BotMiner
Năm 2010, nhóm tác giả Guofei Gu thuộc Trung tâm công nghệ và an toàn thông tin Georgia đã giới thiệu một phương pháp phát hiện botnet trực tuyến có tên là BotMiner. Phương pháp này sử dụng việc lọc lưu lượng có đích đến đã được xác định là máy chủ hợp lệ. Khi đó, việc phân tích số lượng dương tính sai cho thấy một vài trường hợp trong số đó có thể được ngăn chặn khi được lọc đầy đủ. Điều đó cho thấy việc cải tiến bộ dò sử dụng một danh sách trắng các đích đến đáng tin cậy kết hợp với lọc cổng có thể làm giảm đáng kể số lượng dương tính sai. Tuy nhiên, phương pháp BotMiner có hạn chế trong việc phát hiện botnet mới, bởi thực tế là nếu một bot mới có khả năng giả mạo các dịch vụ hợp lệ thì nó hoàn toàn có thể vượt qua phương pháp này. Ví dụ, bot có thể “đầu độc” một máy chủ web của doanh nghiệp bằng cách cài đặt một ứng dụng web độc hại chạy trong máy chủ web và có thể dễ dàng vượt qua được kỹ thuật lọc phân tích cổng.
Khi kết hợp phương pháp BotMiner với phương pháp sử dụng bộ dò quét ở trên, sử dụng mẫu lưu lượng thông thường thu thập được từ mạng mục tiêu (để giám sát) với kỹ thuật lọc cổng sử dụng một danh sách trắng các địa chỉ đích đến đáng tin cậy sẽ nâng cao tính hiệu quả cho bộ dò và cho phép cải thiện được số dương tính sai và khả năng phát hiện bot mới. Việc loại bỏ các dương tính sai phụ thuộc vào tỷ lệ chính xác mà mẫu có được. Ví dụ, Bảng 2 đưa ra thống kê chi tiết dương tính sai (tức là các lưu lượng thông thường) với từng giao thức/ứng dụng được sử dụng trong mẫu botnet Weasel. Tỷ lệ này chính xác 100%, do đó khi sử dụng mẫu này kết hợp với phương pháp dò quét ở trên sẽ có thể loại bỏ được tất cả các dương tính sai ở Bảng 1.
Bảng 2: Thống kê 2902 dương tính sai đối với từng giao thức
Kết luận
Đánh giá thực tiễn cho thấy, hai phương pháp được đề xuất trong bài này khi kết hợp với nhau có thể đạt tỷ lệ dương tính đúng trên 90% và tỷ lệ dương tính sai dưới 5%. Phương pháp sử dụng bộ dò quét còn có khả năng xác định các mối đe dọa mới mà không cần huấn luyện tập dữ liệu độc hại hiện có, bằng cách thử nghiệm các mẫu botnet mới. Phương pháp này có nhiều ưu điểm vượt trội so với các phương pháp truyền thống dựa trên biểu hiện theo nhóm và phát hiện bất thường như là: không đòi hỏi hành vi độc hại phải diễn ra trước khi phát hiện, vì nó có thể nhận ra các tín hiệu ra lệnh và điều khiển; không yêu cầu các biểu hiện theo nhóm của các botnet trước khi đưa ra quyết định. Hai phương pháp được đề xuất trong bài đã giải quyết được hai trong số các thách thức trên, đó là phát hiện sớm và phát hiện mới. Nó cho phép phát hiện hành vi bot ngay cả trong giai đoạn ra lệnh và điều khiển và giai đoạn tấn công dựa trên quan sát các đặc trưng dòng mạng trong các khoảng thời gian nhất định. Chính việc phát hiện trong giai đoạn ra lệnh và điều khiển đã giải quyết được thách thức phát hiện sớm sự hiện diện của bot trước khi có bất kỳ hành vi độc hại nào diễn ra.