Trong phần một bài phân tích mã độc mới trên Facebook ngày 15/11, chúng ta đã biết được mã độc yêu cầu người dùng cài đặt một Extension để thực thi mã độc từ xa.
Trong phần hai, tôi sẽ tiếp tục phân tích đoạn mã độc chính được yêu cầu thực thi bởi Extension.
Tổng quan về mã độc
Đoạn mã được viết bằng JavaScript bao gồm 14 hàm.
start
arkadas
privacySetting
like
getConfirmHash
confirmLike
gelLinkID
comment
confirmComment
tokencek
randoms
rastgele
deSerialize
blockRemovePhân tích chi tiết mã độc
new Image().src = "https://whos.amung.us/swidget/usersxxx0";
Ở 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. 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).
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.
location.hostname.indexOf("facebook.com") >= 0
Sau đó, để xác định xem người dùng đã đăng nhập Facebook hay chưa thì tác giả thực hiện đếm phần tử có tên là "fb_dtsg":
fb_dtsg_list = document.getElementsByName('fb_dtsg'); if (!document.getElementById("isrun") && fb_dtsg_list.length > 0) { // OK }
Khi chưa đăng nhập thì số phần tử sẽ bằng 0.
Chú ý: Nếu như các bạn từng đọc những bài phân tích mã độc Facebook của tôi trên SecurityDaily.net thì chắc sẽ nhớ rằng "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.
profile_id = document.cookie.match(/c_user=(\d+)/)[1]; fb_dtsg = fb_dtsg_list[0].value;
Tiếp theo, tôi sẽ 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 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 thiết lập.
start()
Hàm Start() sẽ thiết đặt một số cấu hình mặc định