Malware giả mạo tập phim South Park tấn công người dùng Sonarr và qBittorrent
Một đoạn malware tinh vi ngụy trang thành tập phim South Park đã lọt vào hệ thống Sonarr của nhiều người dùng, bên trong là một stealer chuyên đánh cắp mật khẩu, ví crypto và token tài khoản. Bài viết phân tích cách thức hoạt động và đưa ra khuyến nghị bảo mật cho cộng đồng dùng *arr stack.

Một câu chuyện tưởng chừng đơn giản về hệ thống tải phim tự động Sonarr bỗng biến thành một cuộc điều tra malware đáng chú ý. Khi một tập phim South Park "mới" xuất hiện trong hàng đợi tải về với đuôi .exe thay vì .mkv, tác giả bài viết trên blog thereallo.dev quyết định mổ xẻ xem kẻ đứng sau thực sự muốn gì. Kết quả là một stealer phức tạp, được thiết kế bài bản để né tránh phân tích và đánh cắp gần như mọi thứ trên máy nạn nhân.
Tập tin đáng ngờ trên torrent
Khi *arr stack gặp phiền phức
Với những ai vận hành Sonarr, Radarr hay Prowlarr trên NAS, việc tải phim tự động từ các public tracker là thói quen phổ biến. Vấn đề chỉ nổi lên khi dashboard hiện cảnh báo: tập phim South Park S29E03 kẹt trong hàng đợi với đường dẫn kết thúc bằng .exe. Sonarr đã tự động lấy về vì không phân biệt được định dạng tập tin.
Trớ trêu thay, qBittorrent đánh dấu tập tin là "hoàn tất" chỉ hai giây sau khi thêm vào, với total_downloaded: 0, nghĩa là không có dữ liệu nào thực sự được ghi xuống đĩa. Dù vậy, kẻ tấn công đã đạt được mục đích: đưa một chương trình thực thi vào thư mục tải về của nạn nhân, chờ đợi ai đó tò mò nhấp đúp.
Giải phẫu con malware
Tập tin nặng 887 MB, nhưng phần chương trình thực sự chỉ khoảng 118 KB. Phần còn lại là dữ liệu rác được gắn thêm, nhằm khiến các công cụ quét virus bỏ cuộc vì kích thước quá lớn. Đây là thủ thuật cũ nhưng vẫn hiệu quả với nhiều giải pháp bảo mật phổ thông.
Bên trong, malware chứa một lượng lớn mã gây nhiễu kiểu XOR toàn cục — lặp đi lặp lại hàng trăm lần chỉ để làm rối đầu ra của trình dịch ngược. Sau khi loại bỏ lớp ngụy trang này, logic thật sự chỉ gồm sáu bước:
- Mở chính tập tin của nó
- Đọc 64 byte cuối tập tin
- Dùng dữ liệu đó để tìm và giải mã payload ẩn trong phần rác
- Ánh xạ payload như một PE trong bộ nhớ
- Trỏ
PEB->ImageBaseAddressvào đó - Nhảy vào thực thi
Đáng chú ý, mọi thứ diễn ra trong bộ nhớ, không chạm xuống đĩa. Phần footer 64 byte chứa khóa, nonce ChaCha20 và kích thước payload. Nhưng vì khóa nằm ngay trong chính tập tin, chỉ vài dòng Python là có thể trích xuất payload ra ngoài mà không cần chạy. Payload thứ hai là một PE 929 KB, viết bằng C++20, kèm theo thư viện zlib.
Stealer muốn đánh cắp mọi thứ
Khi payload thứ hai được giải mã, sự thật phơi bày: đây là một stealer toàn diện. Các chuỗi ký tự được mã hóa bằng AES-128-CTR với khóa riêng cho từng chuỗi, rải rác qua 672 vị trí gọi hàm. Tác giả bài viết đã dùng Unicorn để mô phỏng các lệnh trước mỗi lời gọi, trích xuất khóa, IV và bản mã, rồi giải mã được 601 trên 672 chuỗi.
Danh sách mục tiêu của nó dài đáng sợ:
- Trình duyệt: Chrome, Edge, Brave, Opera, Opera GX, Vivaldi, Firefox — mật khẩu, cookie, dữ liệu autofill, kể cả cơ chế app bound encryption mới của Chrome
- Ví crypto: Exodus, Electrum, Atomic, Guarda, Coinomi, Ledger Live, Trezor Suite, Wasabi, Sparrow, Monero, Zcash, Armory, cùng các ví dạng tiện ích mở rộng
- Trình quản lý mật khẩu: KeePass, KeePassXC, Bitwarden, 1Password, NordPass, RoboForm, Windows Credential Manager
- Tài khoản: Telegram, token Discord, Steam, cookie Roblox, tài khoản Minecraft, Authy
- Dành cho lập trình viên:
.ssh,.aws,.azure, gcloud,.kube,.docker - Truy cập từ xa: AnyDesk, TeamViewer, WinSCP, FileZilla, mRemoteNG, RDCMan
- Còn lại: Outlook, Thunderbird, cấu hình VPN, thiết lập OBS, Sticky Notes và cả tài liệu trên desktop
Toàn bộ dữ liệu được nén bằng zlib tích hợp rồi gửi đi. Đáng chú ý, không có máy chủ cứng trong mã độc — thay vào đó nó giải mã địa chỉ từ một kênh YouTube tên là "bubblegym" (tạo ngày 14/09/2026) và một GitHub Gist, với khóa XOR là một chuỗi ký tự trông như ai đó đập bàn phím. Địa chỉ cuối cùng dẫn đến beenetprotect[dot]com/lgz/gdata — tên miền cũng đăng ký qua Cloudflare cùng ngày tạo kênh YouTube.
Kênh YouTube bí ẩn
Việc kẻ tấn công đưa địa chỉ máy chủ trực tiếp vào mã độc dù đã dùng đến kỹ thuật dead drop đặt ra câu hỏi lớn về mức độ hiểu biết của kẻ đứng sau. Các chuyên gia đánh giá đây là sự kết hợp giữa kỹ thuật cao và sự cẩu thả đáng kinh ngạc.
Khuyến nghị bảo mật cho cộng đồng *arr
Điểm mấu chốt cần nhấn mạnh: Sonarr và Radarr không thể chạy tập tin .exe, nên bản thân chúng không phải là vấn đề. Rủi ro thực sự đến từ người dùng cuối — người bạn cùng phòng, phụ huynh, hoặc chính bạn lúc 3 giờ sáng lỡ tay nhấp đúp vào tập tin trong thư mục tải về.
Một vài bước thiết lập nhanh nhưng hiệu quả:
- qBittorrent: thêm
*.exe,*.scr,*.lnk,*.bat,*.cmdvào mục "Excluded file names" để chặn tải xuống - Sonarr / Radarr: đưa vào blocklist kèm tùy chọn "Remove from client" ngay khi phát hiện
- Prowlarr: nếu một tracker liên tục phát tán loại tập tin này, hãy hạ ưu tiên hoặc loại bỏ tracker đó
Trong bối cảnh các cuộc tấn công qua chuỗi cung ứng phần mềm ngày càng tinh vi, câu chuyện này là lời nhắc nhở rằng ngay cả những công cụ quen thuộc nhất cũng có thể trở thành cửa ngõ cho malware. Việc cấu hình chặt chẽ và cảnh giác với các tập tin lạ trong thư mục tải về không còn là tùy chọn, mà là điều kiện bắt buộc đối với bất kỳ ai vận hành hệ thống tự động hóa.

