Các kĩ thuật và giải pháp phát hiện botnet

 


    Bài viết được trích ra từ đồ án tốt nghiệp của mình. Mong rằng nó có thể giúp ích cho các bạn đang và sắp tìm hiểu về botnet.    
        Các phương pháp mà các nhà nghiên cứu bảo mật thường sử dụng để phát hiện botnet là:
             - Phát hiện dựa trên honeypot.
             - Phát hiện dựa trên giám sát và phân tích lưu lượng mạng.
             - Phát hiện dựa trên giám sát và phân tích DNS logs.

I. Phát hiện dựa trên honeypot

        Honeypot là một hệ thống tài nguyên được xây dựng với mục đích giả dạng, đánh lừa những kẻ sử dụng và xâm nhập không hợp pháp, thu hút sự chú ý của chúng, ngăn không cho chúng tiếp xúc với hệ thống thực. Hệ thống tài nguyên thông tin mà honeypot có thể giả dạng chẳng hạn như Mail Server, DNS server, Webserver, …Từ ý tưởng đánh lừa kẻ tấn công, chẳng hạn như phần mềm độc hại tự động, để chúng tấn công vào honeypot. Công việc tiếp theo là các chuyên gia bảo mật sẽ nghiên cứu phần mềm độc hại đó một cách chi tiết để thu thập thông tin về botnet, như nguồn gốc của máy chủ C&C, các thành viên trong botnet, hay các hành vi tấn công của botnet. Honeypot được chia thành hai loại chính là honeypot tương tác thấp và honeypot tương tác cao.

        - Honeypot tương tác thấp: Các dịch vụ hoặc hệ điều hành được mô phỏng ở mức độ tương tác thấp. Mục đích chính của những honeypot này là nắm bắt các mẫu code độc hại, vì thế việc triển khai và duy trì chúng tương đối dễ dàng và cũng ít gặp rủi ro, nhưng bị giới hạn về số lượng dịch vụ. Phổ biến cho loại honeypot này là Nepenthes. Nepenthes được xây dựng với mục đích thu thập càng nhiều mẫu phần mềm độc hại càng tốt. Sau khi đã thu thập được, các chuyên gia sẽ phân tích chúng. Trước tiên sẽ quét để tìm ra đặc tính, sau đó là hành vi thông qua sandbox.

        - Honeypot tương tác cao: Cho phép kẻ tấn công tương tác với một hệ thống thực. Mức độ rủi ro khi triển khai cao hơn, do đó cần thiết lập các biện pháp phòng ngừa và các điều khoản đặc biệt để ngăn chặn các cuộc tấn công chống lại hệ thống. Ngoài ra, honeypot dạng này cũng khó thiết lập triển khai và duy trì hơn. Mục đích chính của các honeypot này là để hiểu rõ các tình huống tấn công, vì thế nó yêu cầu một khả năng tương tác mạnh mẽ đối với kẻ tấn công. Một thiết lập phổ biến nhất cho loại honeypot này là GenII.

        Phương pháp phát hiện botnet dựa vào honeypot mang lại hiệu quả cao trong việc nghiên cứu và phân tích các đặc điểm của botnet, đã được nhiều chuyên gia đánh giá cao. Tuy nhiên, phương pháp này không thực sự có nhiều ý nghĩa trong việc phát hiện sự lây nhiễm của botnet. 

II. Phát hiện dựa trên giám sát và phân tích lưu lượng mạng

Phương pháp này dựa trên việc theo dõi và phân tích lưu lượng mạng mang lại nhiều kết quả trong việc xác định sự tồn tại của các botnet. Có nhiều lưu lượng mạng có thể theo dõi để phát hiện botnet, ví dụ như DNS, Netflow…Các kĩ thuật chính trong phương pháp này là: dựa trên chữ ký, dựa trên bất thường.

1. Dựa trên chữ ký

Một khi botnet được phát hiện, các nhà nghiên cứu sẽ cố gắng phân tích mã và hành vi của bot để tạo ra chữ ký, sau đó chữ ký này có thể được sử dụng bởi một hệ thống phát hiện xâm nhập (IDS). Chữ ký ở đây là một bộ sưu tập thông tin có chứa tất cả các chi tiết liên quan về sự lây nhiễm hay các truyền thông độc hại. Nó gồm các thông tin như tên tệp tin, các URL, một chuỗi các bit hoặc bất kỳ thông tin nào có ích trong việc phát hiện botnet. IDS sau đó sẽ kiểm tra nội dung và tăng cường cảnh báo bất cứ khi nào phát hiện một chữ ký khớp. Hệ thống phát hiện xâm nhập mã nguồn mở Snort là ví dụ điển hình cho trường hợp này.

Chữ ký được thu thập dựa trên thông tin thu thập được từ botnet, vì vậy nên nó chỉ hiệu quả đối với các botnet đã biết. Với các botnet mới, phương pháp này sẽ không phát huy được tính hiệu quả của nó.

2. Dựa trên bất thường

Phát hiện botnet thông qua việc phân tích sự bất thường trong lưu lượng mạng bao gồm độ trễ, sự xuất hiện lưu lượng mạng trên các cổng bất thường hay hệ thống đột ngột nhận được nhiều gói tin hơn dữ kiến. Tất cả đều có thể là dấu hiệu của botnet xuất hiện trong mạng. Phương pháp này có thể chia thành các kỹ thuật sau:

        - Dựa trên máy chủ: Một số kỹ thuật dựa trên máy chủ được thực hiện bằng việc theo dõi và phân tích bên trong của một hệ thống máy tính thay vì lưu lượng mạng được hiển thị bên ngoài gao diện. Trong phương pháp này, các máy tính cá nhân trong hệ thống được theo dõi để tìm ra bất kỳ hành vi đáng ngờ nào, bao gồm việc truy cập vào tệp không hợp lệ hay khả năng xử lý của nó. Nếu phát hiện hoạt động đáng này, hệ thống phát hiện xâm nhập máy chủ sẽ thông báo cho người dùng hoặc quản trị viên. Nếu các tệp quan trọng trên hệ thống bị sửa đổi hoặc xóa, một cảnh báo sẽ được gửi tới quản trị viên để điều tra.

        - Dựa trên giám sát: kĩ thuật này được chia thành hai loại là giám sát chủ động và giám sát thụ động.

            + Giám sát chủ động: Ý tưởng cho kỹ thuật này đó là tiêm các gói thử nghiệm vào mạng, máy chủ hoặc ứng dụng để tìm hoạt động đáng ngờ có thể gây ra bởi con người hoặc bot, chẳng hạn như BotProbe. Kỹ thuật này cho thấy mức độ hiệu quả của việc phát hiện botnet dựa trên IRC.

            + Giám sát thụ động: Giám sát và phát hiện các giao tiếp bất thường trong mạng trong thời gian dài. Phương pháp này tận dụng mô hình giao tiếp giống nhau được sử dụng bởi các bot trong cùng một botnet, ở cả kiến trúc tập trung hoặc phi tập trung. Để tăng hiệu quả, các chuyên gia cũng áp dụng thêm các phương pháp như lý thuyết đồ thị, chia cụm, học máy hay phân tích nhóm.

        - Dựa trên giao thức:

            Giao thức IRC: là giao thức từng được sử dụng rất nhiều bởi các botnet đời đầu, vì vậy phương pháp phát hiện botnet trên giao thức này được giới thiệu từ rất sớm. Phương pháp này tập trung vào việc giám sát các giao tiếp IRC, và phân tích sự tương quan giữa các gói tin mạng thu được và các gói tin mẫu của botnet. Ngoài ra, giải pháp phát hiện botnet trên IRC dựa trên chữ ký cũng là một phương pháp đáng chú ý. Nó có thể phát hiện các IRC nickname và máy chủ IRC đáng ngờ cũng như các cổng bất thường được mở.

          + Giao thức SMTP: được các botnet sử dụng để thực hiện spam với số lượng lớn. Các botnet được tạo ra với mục đích để spam được gọi là spambot. Để phát hiện spambot, công cụ BotMagnifier [10] ra đời. Nó sử dụng các bộ dữ liệu từ DNSBLs (Domain Name System based Blackhole List) và log của spamhaus để phát hiện hành động spam của bot.

          + Peer-to-peer: Các kỹ thuật phát hiện botnet P2P thường sử dụng các số liệu mẫu của các máy tham gia vào giao tiếp P2P và tạo thành fingerprint. Fingerprint sau đó sẽ được sử dụng để so sánh lưu lượng mạng giữa P2P bình thường và P2P botnet.

III. Phát hiện dựa trên giám sát và phân tích DNS logs

        Các kỹ thuật phát hiện botnet dựa trên DNS là sự kết hợp giữa hai phương pháp: dựa trên hành vi và dựa trên khai phá dữ liệu của lưu lượng DNS. Botmaster sử dụng DNS để quản lý botnet của mình. Hơn nữa, botmaster lợi dụng sự nhanh nhạy của DNS để ẩn náu và làm hỏng các nỗ lực phát hiện. Do đó, các truy vấn DNS được thực hiện trong suốt vòng đời của botnet và có thể được sử dụng để phân biệt các truy vấn DNS botnet từ các truy vấn DNS hợp lệ.

Năm 2005, Dagon đã đề xuất một cơ chế xác định máy chủ C&C bằng cách phát hiện các tên miền có tỉ lệ truy vấn DDNS (Dynamic DNS - phương thức ánh xạ tên miền tới địa chỉ IP có tần suất thay đổi cao) cao hoặc bất thường. Kỹ thuật này tương tự như phương pháp được đề xuất bởi Kristoff năm 2004. Tuy nhiên, cả hai kỹ thuật này đều có thể dễ dàng trốn tránh bằng cách sử dụng các truy vấn DNS giả mạo. Hơn nữa, kỹ thuật này tạo ra tỉ lệ dương tính giả khá cao do phân loại sai các tên miền hợp pháp sử dụng DNS với thời gian sống ngắn.

Năm 2006, Schonewille và Van Helmond đã đưa ra một cách tiếp cận khác, dựa trên tỉ lệ trả lời định kỳ bất thường của các NXDomain (Non-Existent Domain). Để phân loại các tỉ lệ trả lời bất thường, họ sử dụng các thuật toán tương tự như các thuật toán mà Dagon đã sử dụng. Theo quan sát của họ, những NXDomain thường là những máy chủ CnC đã bị các cơ quan chức năng gỡ xuống. Các máy tính nhiều lần gửi yêu cầu truy vấn đến đó có thể là một bot hoặc đã bị lây nhiễm. Phương pháp này rất hiệu quả để phát hiện một số tên miền đáng ngờ và có thể có tỉ lệ dương tính giả thấp hơn.

Ramachandran và cộng sự đã đề xuất một phương pháp xác định botnet bằng cách phân tích lưu lượng tra cứu DNSBL (DNS-based Black-hole List). Mục tiêu của phương pháp này là phân biệt các truy vấn DNSBL do các botmaster gửi đến trong số những lưu lượng DNSBL hợp pháp để xác định các đối tượng đáng ngờ có khả năng là bot. Phương pháp này có thể được sử dụng cho các hoạt động trinh sát trong thời gian thực. Các botmaster thường thực hiện hành vi tra cứu trước khi sử dụng các bot trong cuộc tấn công, do đó các thông tin phản hồi DNSBL có thể được sử dụng để đưa ra các cảnh báo sớm. Hơn nữa, kỹ thuật này không đòi hỏi phải liên lạc trực tiếp với bất cứ thành phần nào của botnet và không làm gián đoạn hoạt động của botnet. Tuy nhiên, kỹ thuật này cũng có nhiều rủi ro về cảnh báo dương tính giả, và không thể phát hiện được các cuộc trinh thám dò xét phân tán.

Năm 2007, Choi và cộng sự đã đề xuất một cơ chế phát hiện botnet mới dựa trên sự bất thường bằng cách giám sát các hoạt động nhóm trong lưu lượng DNS. Họ cũng phát triển một cơ chế cho phép phát hiện việc di chuyển máy chủ C&C. Phương pháp này mạnh mẽ hơn các phương pháp trước đó, và nó có thể phát hiện nhiều loại botnet, trong đó có cả các botnet sử dụng các kênh đã được mã hóa vì nó sử dụng các thông tin trong tiêu đề IP. Tuy nhiên, nhược điểm lớn nhất của phương pháp này là thời gian xử lý cao, nhất là đối với việc giám sát một mạng lưới lớn.

Ngoài ra cũng còn nhiều đề xuất khác cho phương pháp phát hiện botnet dựa trên DNS. Trong đó có phương pháp dựa trên học máy.

Hầu hết các botnet đều sử dụng DGA (Domain Generation Algorithms) để liên lạc với botmaster. Các chuyên gia bảo mật phải dịch ngược mã nguồn của bot và tách thuật toán DGA để tìm nguyên lý hoạt động. Đối với các botnet dạng này, ta có thể dùng học máy để dự đoán các tên miền được tạo ra bởi DGA bằng cách phân tích truy vấn DNS. 

Bạn có thể tìm hiểu thêm về botnet ở đây