Tất cả các tiện ích này đều tồn tại một tính năng độc hại nguy hiểm, đó là theo dõi mọi hoạt động của người dùng trong trình duyệt, mỗi trang web mà người dùng truy cập thì tiện ích sẽ gửi URL của trang web đó đến một máy chủ từ xa và có thể chèn mã vào các trang web thương mại điện tử đang được truy cập. Hành động này sửa đổi cookie trên trang web để tin tặc nhận được thanh toán liên kết cho bất kỳ mặt hàng nào mà người dùng đã mua.
Các tiện ích mở rộng độc hại mà các nhà nghiên cứu của McAfee đã phát hiện bao gồm:
Tên tiện ích độc hại |
ID mở rộng |
Số lượt tải xuống |
Netflix Party |
mmnbenehknklpbendgmgngeaignppnbe |
800.000 |
Netflix Party 2 |
flijfnhifgdcbhglkneplegafminjnhn |
300.000 |
FlipShope – Price Tracker Extension |
adikhbfjdbjkhelbdnffogkobkekkkej |
80.000 |
Full Page Screenshot Capture – Screenshotting |
pojgkmkfincpdkdgjepkmdekcahmckjp |
200.000 |
AutoBuy Flash Sales |
gbnahglfafmhaehbdmjedfhdmimjcbed |
20.000 |
Phân tích hành vi đánh cắp dữ liệu
Theo báo cáo của McAfee, tất cả 5 tiện ích mở rộng được phát hiện này đều có hành vi hoạt động tương tự. Bài viết sẽ gửi tới quý độc giả phân tích kỹ thuật hoạt động của tiện ích phổ biến nhất là Netflix Party với 800.000 lượt cài đặt.
Tệp Manifest[.]json
Manifest[.]json là một tệp kê khai ứng dụng web (manifest) quy định cách thức hoạt động của tiện ích mở rộng trên hệ thống, nó đặt trang nền là “bg.html”. Tệp HTML này sẽ tải một tập lệnh đa chức năng (B0[.]js), chịu trách nhiệm gửi dữ liệu duyệt web (URL mà người dùng đang truy cập) để đưa mã vào các trang web thương mại điện tử.
Hình 1. Tệp kê khai quy định cách thức hoạt động của tiện ích mở rộng trên hệ thống
Tệp B0[.]js
Tập lệnh B0[.]js chứa nhiều hàm. Trong nội dung của bài viết sẽ tập trung vào các chức năng chịu trách nhiệm gửi các URL đã truy cập đến máy chủ và xử lý phản hồi.
Tiện ích mở rộng của Chrome hoạt động bằng cách đăng ký các sự kiện, sau đó chúng sử dụng làm trình kích hoạt để thực hiện một hoạt động nhất định. Các tiện ích mở rộng được phân tích và đăng ký các sự kiện thông qua tính năng “chrome.tabs.onUpdated”, nó sẽ kích hoạt khi người dùng điều hướng đến URL mới trong tab (khi tab được cập nhật). Khi sự kiện này kích hoạt, tiện ích sẽ đặt một biến được gọi là “curl” với URL của tab bằng cách sử dụng biến “tab.url”. Nó tạo ra một số biến khác, sau đó được gửi đến địa chỉ “https://d[.]langhort[.]com” (tên miền do tin tặc kiểm soát).
Hình 2. Sử dụng chrome.tabs.onUpdated
Dữ liệu POST sau đó sẽ có định dạng như trong Hình 3 với một số biến như:
- Ref: Một liên kết giới thiệu dưới dạng đường dẫn URL.
- Apisend: ID ngẫu nhiên được tạo cho người dùng.
- Name: URL được mã hóa Base64 đang được truy cập.
- Ext_name: Tên của các tiện ích mở rộng chrome
Hình 3. Định dạng dữ liệu POST khi người dùng truy cập vào một URL mới
Các thông tin như quốc gia, thành phố, mã zip,… được thu thập thông qua “ip-api[.]com” được hiển thị trong Hình 4.
Hình 4. Chức năng trích xuất dữ liệu người dùng và thông tin thu thập được hiển thị
Khi nhận được URL, langhort[.]com sẽ kiểm tra xem nó có khớp với bất kỳ mục nào trên danh sách các trang web mà tin tặc có liên kết đang hoạt động, máy chủ sẽ phản hồi B0[.]js bằng một trong hai hàm “passf_url” và “setCookie”.
Hình 5. Định dạng JSON của dữ liệu trả về, trong đó có 2 hàm passf_url và setcookie
Trong Hình 5, dữ liệu trả về có định dạng JSON. Phản hồi được kiểm tra bằng cách sử dụng “passf_url” và “setCookie”, sẽ gọi các hàm khác tùy thuộc vào phản hồi chứa những gì.
Thứ nhất, nếu kết quả phản hồi là “result[‘c’]” thì tiện ích mở rộng sẽ truy vấn URL được trả về. Sau đó, các tiện ích sẽ kiểm tra phản hồi và nếu trạng thái là 200 hoặc 404, nó sẽ kiểm tra xem truy vấn có phản hồi bằng URL hay không. Nếu có thì sẽ chèn URL nhận được từ máy chủ dưới dạng iframe trên trang web đang được truy cập.
Hình 6. Khai báo của hàm passf_url
Thứ hai, nếu kết quả phản hồi là “result[‘e’]” thì phần mở rộng sẽ chèn kết quả dưới dạng cookie và ra lệnh cho B0[.]js sửa đổi hoặc thay thế nó bằng cookie được cung cấp nếu tiện ích mở rộng đã được cấp các quyền liên quan để thực hiện hành động này.
Hình 7. Khai báo của hàm setCookie
Trì hoãn thời gian để tránh bị phát hiện
Để tránh bị phát hiện, phân tích và gây nhầm lẫn cho các nhà nghiên cứu cũng như sự cảnh giác đến từ người dùng, một số tiện ích mở rộng có tính năng trì hoãn 15 ngày kể từ thời điểm cài đặt trước khi chúng bắt đầu thực hiện các hoạt động trên trình duyêt.
Hình 8. Một số tiện ích mở rộng đợi 15 ngày sau khi cài đặt mới thực hiện hoạt động để tránh bị phát hiện
Kết luận
McAfee khuyến cáo người dùng nên thận trọng khi cài đặt các tiện ích mở rộng của Chrome và chú ý đến các quyền được yêu cầu. Các quyền sẽ được Chrome hiển thị trước khi cài đặt tiện ích mở rộng, vì vậy người dùng nên thực hiện thêm các bước để xác minh tính xác thực nếu tiện ích đang yêu cầu quyền cho phép nó chạy trên mọi trang web mà người dùng truy cập.
Hiện tại, 2 tiện ích mở rộng của Netflix Party cùng với AutoBuy Flash Sales đã bị xóa khỏi cửa hàng Chrome Web Store, nhưng điều này không xóa chúng khỏi trình duyệt web. Các tiện ích còn lại vẫn đang hoạt động, thậm chí tiện ích Full Page Screenshot Capture đang được gắn nhãn “Nổi bật” (Featured) trên cửa hàng ứng dụng. Vì vậy, nếu như đã cài đặt bất kỳ những tiện ích nào trong số này, người dùng nên thực hiện thao tác thủ công để gỡ bỏ chúng ngay lập tức.