FBI vô hiệu hóa mã độc của nhóm tin tặc nổi tiếng ở Nga
Cuộc tấn công nhắm vào Snake - một phần mềm độc hại đa nền tảng phát triển trong hơn hai thập kỷ đã được sử dụng cho hoạt động gián điệp và phá hoại. Snake được phát triển và vận hành bởi Turla, một trong những nhóm APT tinh vi nhất trên thế giới.
Các nhà nghiên cứu từ nhiều công ty bảo mật phần lớn đồng ý rằng Turla đứng sau các vụ xâm phạm Bộ Quốc phòng Hoa Kỳ năm 2008 và gần đây là Bộ Ngoại giao Đức và quân đội Pháp. Nhóm này cũng được biết đến với việc tung ra phần mềm độc hại tàng hình Linux và sử dụng các liên kết Internet dựa trên vệ tinh để duy trì hoạt động bí mật của mình.
Một trong những công cụ mạnh mẽ nhất trong kho vũ khí của Turla là Snake, một công cụ đa năng kỹ thuật số chạy trên Windows, macOS và Linux. Được viết bằng ngôn ngữ lập trình C, Snake xuất hiện dưới dạng một loạt các cấu phần có tính mô-đun cao được xây dựng trên một mạng ngang hàng khổng lồ liên kết một cách bí mật máy tính bị nhiễm với một máy tính khác. FBI cho biết cho đến nay Snake đã lây lan sang hơn 50 quốc gia và lây nhiễm vào các máy tính của các chính phủ thành viên NATO, một nhà báo Mỹ đã đưa tin về Nga và các lĩnh vực liên quan đến cơ sở hạ tầng quan trọng, truyền thông và giáo dục.
Một danh sách ngắn các khả năng của Snake bao gồm một cửa hậu cho phép Turla cài đặt hoặc gỡ cài đặt phần mềm độc hại trên các máy tính bị nhiễm, gửi lệnh và trích xuất dữ liệu mà Nga quan tâm. Là một phần mềm được thiết kế chuyên nghiệp, Snake sử dụng một số lớp mã hóa tùy chỉnh để mã hóa các lệnh và dữ liệu bị rò rỉ. Qua mạng P2P, các lệnh và dữ liệu được mã hóa di chuyển qua một chuỗi các điểm nhảy được tạo thành từ các máy bị nhiễm khác theo cách gây khó khăn cho việc phát hiện hoặc theo dõi hoạt động.
Nguồn gốc của Snake bắt nguồn từ ít nhất là năm 2003, với việc tạo ra tiền thân có tên là “Uroburos”, một biến thể của Ouroboros, là một biểu tượng cổ xưa mô tả một con rắn hoặc rồng đang ăn đuôi của chính nó. Một hình ảnh có độ phân giải thấp của nhà triết học và thần học người Đức Jakob Böhme, được dùng làm chìa khóa cho một cửa hậu dự phòng mà Turla sẽ cài đặt trên một số thiết bị đầu cuối bị tấn công.
FBI cho biết Snake là một trong những phần mềm độc hại phức tạp nhất từng được tìm thấy. Thiết kế mô-đun, các lớp mã hóa tùy chỉnh và chất lượng cao của cơ sở mã đã khiến phần mềm chống vi-rút khó phát hiện nếu không muốn nói là không thể phát hiện được. Tuy nhiên, khi các đặc vụ FBI tiếp tục theo dõi Snake, họ dần phát hiện ra một số điểm yếu đáng ngạc nhiên. Thứ nhất, có một khóa mật mã quan trọng với độ dài chỉ 128 bit, khiến nó dễ bị tấn công bao thanh toán làm lộ khóa bí mật. Khóa yếu này được sử dụng trong trao đổi khóa Diffie-Hellman, cho phép mỗi máy bị nhiễm có một khóa duy nhất khi giao tiếp với máy khác.
Trong một sự cố khác, các nhà phát triển của Snake đã quên xóa mã đã hoàn thành cho một phần của phiên bản mới. Lỗi này đã cung cấp thông tin chi tiết mới quan trọng về cách thức hoạt động của phần mềm độc hại vì nó làm lộ tên hàm, chuỗi ở dạng văn bản rõ và ghi chú của nhà phát triển. Một số tên hàm và lệnh không bị gỡ xuất hiện trong hình bên dưới:
Các nhà điều tra cuối cùng đã phát hiện ra rằng thiết kế HTTP tùy chỉnh được Snake sử dụng để thực hiện bảo trì phiên, cho phép phần mềm độc hại coi nhiều gói HTTP như một phần của một phiên duy nhất được mã hóa bằng khóa yếu. Phát hiện này cho phép các nhà điều tra lấy dữ liệu “vân tay” được gửi từ máy bị nhiễm Snake này sang máy khác.
“Cách triển khai HTTP độc đáo của Turla hoạt động như một loại chữ ký, với thành phần siêu dữ liệu 8 byte của gói Snake-HTTP tăng dần theo kiểu có thể dự đoán được”, đặc vụ FBI Taylor Forry đã viết trong một bản khai có tuyên thệ để hỗ trợ cho yêu cầu lệnh khám xét đã được tòa án chấp thuận. “Theo đó, bằng cách quan sát ít nhất hai hoặc ba gói HTTP, FBI đã học được cách xác định các máy tính đang liên lạc bằng cách sử dụng Snake-HTTP của Turla và có thể suy ra từ hành vi này rằng Snake cấy vào hai máy tính đã tự xác thực là phần mềm độc hại Snake.”
Với những dữ liệu thu thập được trong nhiều năm, các đặc vụ FBI cuối cùng đã phát triển Perseus, một ứng dụng có thể phát hiện khi hai máy giao tiếp với nhau bằng HTTP tùy chỉnh của Snake. Perseus hoạt động bằng cách bắt chước phần đầu của giao thức xác thực phiên Snake để “kích hoạt một thiết bị cấy ghép khả nghi của Snake trên một máy tính khác nhằm cung cấp phản hồi độc đáo cho giao tiếp mạng Snake”, Forry giải thích. Việc trao đổi tương tự như việc một máy tính gửi “ping” đến một máy tính khác để kiểm tra kết nối mạng.
Tiếp đó, FBI tạo ra các chức năng cho phép Perseus tự vô hiệu hóa. Theo Forry, FBI đã phát triển khả năng sử dụng Perseus, để mạo danh những người điều hành Snake và ra lệnh cho phần mềm độc hại Snake tự vô hiệu hóa nó một cách hiệu quả và vĩnh viễn. Bằng cách sử dụng các mã xác thực để cài đặt Snake trên "Máy tính đối tượng" (mà FBI đã thu được), FBI có thể sử dụng Perseus để hoàn thành các giao thức thiết lập phiên và xác thực Snake đầy đủ, đồng thời gửi lệnh đến "Máy tính đối tượng" mà phần mềm độc hại Snake coi như hợp phép và thực hiện.
Cụ thể, FBI đã phát triển một kỹ thuật khai thác một số lệnh tích hợp sẵn của Snake, khi được Perseus truyền từ máy tính do FBI kiểm soát đến phần mềm độc hại Snake trên "Máy tính đối tượng", sẽ chấm dứt ứng dụng Snake và vô hiệu hóa vĩnh viễn phần mềm độc hại Snake bằng cách ghi đè lên các thành phần quan trọng của phần mềm cấy ghép Snake mà không ảnh hưởng đến bất kỳ ứng dụng hoặc tệp hợp pháp nào trên "Máy tính đối tượng".
FBI đã thử nghiệm rộng rãi kỹ thuật này và đã xác nhận rằng nó có hiệu quả trong việc vô hiệu hóa phần mềm độc hại Snake và máy tính bị nhiễm phần mềm độc hại không bị ảnh hưởng bởi kỹ thuật này. Đáng chú ý, các lệnh do Perseus truyền đi được gửi bằng cách sử dụng các giao thức liên lạc tùy chỉnh và mã hóa do Turla phát triển cho phần mềm độc hại Snake, do đó chỉ có thể được diễn giải và thực thi bởi phần mềm cấy ghép của Snake. Vì thế, một máy tính không bị Snake xâm nhập sẽ không thể hiểu các lệnh của Perseus và sẽ bỏ qua chúng.
Thẩm phán Cheryl L. Pollak của quận Eastern (New York) đã phê chuẩn lệnh khám xét, cho phép FBI tiếp tục gửi các lệnh Perseus đến một nhóm địa chỉ IP cụ thể có trong ứng dụng. Các tài liệu tòa án cung cấp một mô tả hấp dẫn nhưng không đầy đủ về cách hoạt động của cuộc tấn công chống lại Turla. Một tài liệu tư vấn chung về an ninh mạng do các cơ quan thực thi pháp luật trên khắp thế giới ban hành đã cung cấp thêm một số chi tiết. Tài liệu cho biết:
Tất cả các giao tiếp của Snake đều bao gồm “các phiên Snake”, bất kể giao thức hợp pháp nào mà Snake đang hoạt động trên đó. Lớp mã hóa trên cùng của Snake, được gọi là lớp enc, sử dụng quy trình gồm nhiều bước để thiết lập khóa phiên duy nhất. Khóa phiên được hình thành thông qua sự kết hợp giữa trao đổi khóa Diffie-Hellman với khóa chia sẻ trước (PSK) mà cả hai bên đều biết. PSK này được lưu trữ ở một trong các kênh liên lạc, được lưu trữ trong hàng đợi.
Việc thiết lập tổng thể khóa phiên yêu cầu 12 bước giao tiếp, sáu bước theo mỗi hướng, liên quan đến việc chia sẻ các giá trị giả ngẫu nhiên được sử dụng trong quy trình trao đổi Diffie-Hellman cũng như các khía cạnh tùy chỉnh của phương pháp dẫn xuất khóa phiên Snake. Khóa phiên được sử dụng để mã hóa các tiêu đề lệnh và tải trọng được mã hóa (bên trong).
Đây là lớp xảy ra lỗi nghiêm trọng khi cung cấp giá trị 128 bit thay vì 128 byte cho lệnh gọi DH_generate_parameters trong thư viện OpenSSL. Do độ dài khóa quá ngắn này, việc phá vỡ phần Diffie-Hellman của trao đổi có thể thực hiện được. Lưu ý rằng trong hình dưới đây, các biến 'p', 'g', 'a' và 'b' được sử dụng trong các mô tả tiêu chuẩn của Diffie-Hellman.
Nguyễn Anh Tuấn (theo ArsTechnica)