J2TEAM Security: A must-have extension for Chrome users. Install now!

Phân tích mã độc lây lan qua tin nhắn trên Facebook tháng 11/2016

Phân tích mã độc Facebook lây lan qua tin nhắn và hướng dẫn cách ngăn chặn mã độc Facebook tự động gửi tin nhắn cho toàn bộ bạn bè. HTML/SVG
facebook-malware-chat-html-svg

Phân tích mã độc Facebook lây lan qua tin nhắn và hướng dẫn cách ngăn chặn mã độc Facebook tự động gửi tin nhắn cho toàn bộ bạn bè.

Anh em yêu cầu nên tôi cũng cố kiếm một mẫu về mổ xẻ phân tích chơi cho anh em đọc, he he. Bắt đầu nào!

Phân tích mã độc trên Facebook (11/2016)


Có 2 biến thể của con malware này, một con thì gửi tập tin HTML và một thì gửi tập tin SVG. Điểm chung là cả 2 định dạng này đều có thể thực thi JavaScript (mấu chốt của con malware này). HTML thì không có gì để nói; còn SVG - nếu bạn nào không phải dân lập trình web thì có lẽ không biết rằng nó cũng có thể nhúng JavaScript mặc dù nó là định dạng đồ họa vector.

Nếu bạn có lỡ click và tải tập tin đính kèm được gửi qua tin nhắn Facebook thì đừng lo, tại thời điểm này bạn vẫn an toàn. Nhưng sau khi bạn vô tình mở tập tin đó, đoạn JavaScript được nhúng trong các tập tin sẽ được thực thi. Chuyện gì sẽ xảy ra? Chúng ta hãy cùng phân tích đoạn mã nhúng đó!

phan-tich-ma-doc-facebook

Đoạn mã trên sẽ chuyển hướng người dùng tới trang web có địa chỉ: mourid[dot]com/php/trust.php

Và được chuyển hướng tiếp đến trang: kerman[dot]pw/?fb_dsa

Trang vừa load xong, tôi còn chưa kịp nhìn thấy gì thì cái giao diện màu đỏ quen thuộc hiện lên...

ngan-chan-ma-doc-facebook

Chú ý là tại thời điểm viết bài này thì trang web đó chưa được tôi cho vào Cơ sở dữ liệu của J2TeaM Security, quyết định chặn trang web được đưa ra dựa trên việc phân tích mã nguồn trang theo thời gian thực.

Để tiếp tục phục vụ anh em, tôi đành ngậm ngùi tắt chế độ bảo vệ thời gian thực của J2TeaM Security và nhấn F5 😂

Trang thứ 2 này có giao diện giả mạo Youtube. Chỉ cần nhấn nút Play video là một popup hiện lên yêu cầu bạn cài đặt một extension với tên gọi: One


malware-extension

Theo thông tin từ Chrome Store thì extension này được cập nhật lần cuối vào ngày 19/11/2016, đúng tối hôm 19 thì tôi nhận được tin nhắn đầu tiên trên page hỏi về mã độc mới. Và bắt đầu từ ngày 20 thì các bài viết than vãn, cảnh báo mã độc lây lan qua tin nhắn xuất hiện rất nhiều trên News Feed.

Mà vụ giả mạo trang xem video rồi bắt cài đặt extension này nghe quen nhỉ?

Tôi tải mã nguồn của extension này về và mở lên bằng Sublime. Như mọi con malware JS khác, con malware này cũng show ra cả đống code xấu xí đã được làm rối (obfuscated) với mục đích làm nản lòng người xem.

Nhưng với kinh nghiệm chiến đấu với mấy mẫu tương tự lây lan qua tin nhắn, thay vì ngồi deobfuscate thì tôi cài luôn extension vào trình duyệt (tôi sử dụng Sandbox nhé, đề nghị độc giả không bắt chước cài theo), rồi mở DevTools với chế độ xem từ trang nền của extension (background.html) và chuyển qua thẻ Network rồi dùng bộ lọc Ajax thì tôi tóm được truy vấn tới liên kết: http://cerawa[dot]pw/manalovuci/kojakumoda.bg

Khi truy cập bạn sẽ thấy trả về mã lỗi 404 Not Found. Nhưng đừng để bị lừa, đó chỉ là những gì chúng ta thấy. Còn con malware khi tạo truy vấn sẽ nhận được đoạn mã JS như sau:

facebook-malware-extension

Chú ý vào dòng 52, truy vấn tiếp theo sẽ được tạo ra tới liên kết sau: http://cerawa[dot]pw/jiziratepujopo/ozopulohece.js

facebook-malware

facebook-malware

Bóc lớp vỏ bọc đầu tiên bằng cách thay eval thành console.log:

facebook-malware-obfuscated

Nhìn hại não vậy thôi chứ đây chỉ là hình thức nối chuỗi đơn giản. Thực hiện tiếp deobfuscate để bóc lớp vỏ tiếp theo, ta được:

deobfuscated-facebook-malware

Dựa theo đoạn kiểm tra điều kiện: location.hostname.indexOf('facebook.com') >= 0 thì chúng ta có thể nhận thấy đoạn code JS này chỉ thực thi khi người dùng đang truy cập vào Facebook. Tôi liền nhấn F12 (DevTools) rồi mở tab Facebook, đăng nhập vào tài khoản thử nghiệm (Test User).

Ngay khi vừa nhấn Enter và trang vừa tải xong, tôi bỗng cảm thấy trình duyệt đơ vài giây. Theo dõi tab Network thì thấy các truy vấn sau được tạo bởi VM (extension được chạy ở ngữ cảnh tách biệt với các trang web):

malware-hack-facebook-account

Dựa theo thứ tự các truy vấn, chúng ta có thể nhận thấy con malware đã thực hiện những hành động sau đối với nạn nhân (khi đã đăng nhập Facebook):

  1. Gửi truy vấn POST tới https://www.facebook.com/v2.8/dialog/oauth/ để lấy Access Token.
  2. Sử dụng Acccess Token tạo truy vấn GET tới https://graph.facebook.com/ để lấy danh sách bạn bè và trạng thái online hiện tại của họ.
  3. Tạo truy vấn GET tới https://futunga[dot]com/php/html.php?ext=me để lấy mã nguồn của tập tin đính kèm HTML hoặc SVG đã được nhúng JS bên trong. Bằng cách lấy nội dung đính kèm từ server thay vì đặt luôn trong extension thì kẻ tấn công có thể tùy biến mã độc JS bất cứ lúc nào.
  4. Tạo truy vấn POST tới https://upload.facebook.com/ajax/mercury/upload.php để tải tập tin đính kèm lên server của Facebook. Lúc này Facebook sẽ trả về tham số file_id
  5. Tạo truy vấn POST tới https://www.facebook.com/messaging/send/ để gửi tin nhắn cho bạn bè theo ID người dùng của họ đồng thời trỏ tham số đính kèm là file_id tới giá trị nhận được từ bước 4.
  6. Tạo truy vấn GET tới https://futunga[dot]com/php/sonuc.php với chuỗi truy vấn (query string) là ID người dùng hiện tại, ID người vừa nhận tin nhắn. Chúng ta có thể thấy truy vấn cuối cùng này để thống kê số tin nhắn đã gửi và những ai đã nhận được.
  7. Lặp lại bước 5 và 6 cho tới khi hết danh sách bạn bè của người dùng hiện tại.

Ngoài ra, ở phía trang nền (background) thì extension này cũng tạo các truy vấn tới Google Analytics (để thống kê xem có bao nhiêu nạn nhân). Cộng thêm với những quyền hạn khai báo từ Manifest thì extension này hoàn toàn có thể chiếm phiên làm việc, chèn quảng cáo vào các trang web hoặc điều hướng người dùng tới trang bất kỳ để tăng traffic từ đó thu về lợi nhuận.

Làm sao để ngăn chặn mã độc này?


Dựa theo những thông tin mà tôi đã phân tích trong bài viết này, các bạn có 2 cách để ngăn chặn con malware đang tung hoành trên Facebook:

1. Sử dụng tập tin HOSTS của Window


Chúng ta có thể thấy là để có thể lây lan thành công thì con malware này cần tạo ra quá nhiều truy vấn, vậy nên từ phía người dùng thì các bạn có thể đánh chặn bằng cách thêm các dòng sau vào tập tin HOSTS.

Tuy nhiên, cách này mang tính chất thủ công và phải cập nhật thường xuyên vì kẻ tấn công có thể đăng ký tới 4 tên miền chỉ để phát tán 1 con malware thì tôi nghĩ hắn thừa sức đăng ký thêm nhiều hơn nữa. Vì vậy, các bạn có thể dùng cách thứ 2.

2. Sử dụng J2TeaM Security (người tạo ra chính là tác giả bài phân tích này)


Nếu bạn nào đã từng biết tới Facebook Protector thì J2TeaM Security chính là phiên bản tiếp theo của nó với nhiều tính năng hơn, khả năng bảo vệ tốt hơn. Bằng việc phân tích theo thời gian thực, J2TeaM Security có thể chặn bất cứ tên miền mới nào mà kẻ tấn công tạo ra nhằm mục đích lừa bạn cài đặt malware.

Các bạn có thể đọc bài giới thiệu chi tiết hơn tại đây.

Hãy chia sẻ bài viết này với người thân và bạn bè của bạn để giúp họ giữ an toàn trên Facebook nhé! 😉

Thực hiện phân tích bởi Juno_okyoT-Rekt.
Leader at J2TEAM. Website: https://j2team.dev/