Phân tích mã độc giả dạng thông báo comment FB – Phần 2

Bài viết được trích từ blog của J2Team, đem về reblog lại để sau này có thời gian vọc còn có cái tham khảo. :)

Hack Facebook

Trong phần 1 chúng ta đã biết mã độc lây lan thông qua việc cài đặt 1 extension trên trình duyêt.

Phần 2 này tiến hành phân tích đoạn mã chính thực thi công việc đánh cắp tài khoản.

Tổng quan về mã độc

Đoạn mã viết bằng Javascript gồm 14 hàm.

Chi tiết mã độc

Ở dòng đầu tiên, tác giả khởi tạo một đối tượng Image và đặt thuộc tính “src” về trang whos.amung.us – đây là một trang đã có từ lâu và cũng khá nổi tiếng. Nó cung cấp cho bạn một bộ đếm số người đang trực tuyến dưới dạng một widget để nhúng vào trang web của bạn.

Câu lệnh new Image().src=”URL” là thủ thuật nhỏ để tạo ra một truy vấn GET đơn giản (trình duyệt phải tạo truy vấn tới tập tin để nạp ảnh xuống client). Tác giả của mã độc đã sử dụng thủ thuật này để đếm xem có bao nhiêu nạn nhân (đang trực tuyến).

Mã kiểm tra đường dẫn FB

Trong đoạn mã thực thi tiếp theo, tác giả xác định xem trang web hiện tại mà người dùng đang truy cập có phải Facebook hay không bằng cách kiểm tra chuỗi “facebook.com” có nằm trong tên máy chủ (hostname) hay không.

Sau đó, để biết được người dùng đã đăng nhập Facebook hay chưa – tác giả đã đếm phần tử có tên là “fb_dtsg”:

Khi chưa đăng nhập thì số phần tử sẽ bằng 0.

Kiểm tra nạn nhân đăng nhập FB chưa

Nhắc lại 1 chút: “fb_dtsg” chính là một thẻ Input ẩn và giá trị của nó chính là Security Token của Facebook.

Khi đã chắc chắn người dùng đã đăng nhập sẵn vào Facebook, tác giả lưu lại các thông tin quan trọng vào các biến. Trong đó có 2 thứ mà tôi đã bắt gặp ở rất nhiều mã độc Facebook khác là User ID và Security Token của người dùng hiện tại.

Tiếp theo, tiến hành phân tích các hàm quan trọng được thực thi. Thứ tự phân tích dựa trên thứ tự mà chúng được gọi tới.

blockRemove()

Hàm blockRemove()

Hàm này sẽ thực hiện ẩn Dropdown Menu trên góc phải của Facebook. Nó được lặp đi lặp lại sau mỗi… 10 milliseconds với mục đích: không cho người dùng đăng xuất hoặc truy cập vào trang cài đặt tài khoản.

start()

Hàm Start()

Hàm Start() sẽ thiết đặt một số cấu hình mặc định và làm nhiệm vụ điều hướng. Chúng ta có thể thấy 3 hàm được gọi trong hàm này là: arkadas(), privacySetting() và tokencek().

Hàm nguy hiểm nhất – hàm tạo ra thông báo “XXX đã nhắc đến bạn trong một bình luận”.
comment()

Hàm comment()

Đây là một hàm tái tạo truy vấn khi bạn đăng một bình luận. Hãy chú ý vào dòng 258, đây chính là mấu chốt tạo ra thông báo.

Bằng cách sử dụng chuỗi @[User_ID:Name], truy vấn này sẽ thực hiện tag người dùng được chỉ định vào trong một bình luận. Thủ thuật này từng được chia sẻ trên một số trang web hướng dẫn tag bạn bè khi online bằng di động. Để cho dễ hiểu thì nó tương đương với việc bạn gõ @Tên_bạn_bè khi muốn tag ai đó.

Nhưng vấn đề chính là làm sao để trỏ bạn sang một trang web bên ngoài Facebook khi nhấn vào thông báo?

Câu trả lời là hàm trên không tạo ra bình luận trong một trạng thái trực tiếp trên Facebook mà là trên khung bình luận Facebook được nhúng trên các trang web.

Chắc hẳn bạn cũng biết Facebook cung cấp plugin mạng xã hội như nút Like, Share và Comment chứ? Vâng, đây chính là thứ đã tạo ra cái thông báo dẫn bạn tới một trang web khác!

Sử dụng cả API của FB

Ban đầu tôi cũng từng nghĩ rằng nó là bug của Facebook, nào ai ngờ đâu mã độc này dựa trên chính plugin do Facebook cung cấp.

Tổng kết

Một tin vui là Extension hiện đã được gỡ bỏ khỏi Google Chrome do quá nhiều người lạm dụng.

Vậy làm sao để không bị nhiễm thứ này? Đừng có tò mò là được. Chú ý để ý, cứ thấy có gì lạ là bấm vào thì dính là cái chắc.^^

Leave a Reply

1 Comment on "Phân tích mã độc giả dạng thông báo comment FB – Phần 2"

Notify of
avatar
Sort by:   newest | oldest | most voted
trackback

[…] Chi tiết phần phân tích mã độc sẽ được trình bày trong phần 2 tại đây. […]

wpDiscuz