Cũng giống như phishing thông thường, kẻ xấu tìm cách lừa nạn nhân click vào đường link của những trang tin giả với những cái title rất “kêu”, nhưng thủ đoạn được sử dụng lần này lại nguy hiểm hơn nhiều…


Câu chuyện bắt đầu vào một buổi chiều, khi đang lượn lờ trên page team thì mình bắt gặp bài này:

image

Khi mình comment hỏi xin link thì được anh Juno cung cấp ngay một số thông tin như sau:

image

Đi theo đường link của anh Juno, cảm nhận đầu tiên của mình khi vào trang web là nó chẳng có gì đặc biệt ngoài bài viết và 1 đống quảng cáo trông khá là vô hại.

image

Nhưng mình cũng chưa đi vào phân tích file js kia vội. Nếu biết về phishing thì chắc hẳn bạn cũng thấy rằng để lừa người dùng điền thông tin của mình vào thì cần có một cái form chứ? Vậy sao nó chưa xuất hiện?

Lập tức mình mở cái link ấy lên điện thoại.

Và cái form huyền thoại hiện lên…

image

Lý do mình phản xạ rất nhanh ở đoạn này là do trước đó mình cũng đã nhìn thấy form này khi click vào link tương tự trên điện thoại, nhưng khi đó không để ý cho lắm (tất nhiên là mình chẳng dại gì đi đăng nhập vào rồi :v )

Từ đây mình phỏng đoán được lần tấn công này nhắm vào trình duyệt trên điện thoại, giả thiết sau đó được khẳng định khi anh Juno thử chế độ responsive mode để giả lập độ phân giải điện thoại và cái form xuất hiện.

Sau khi kiếm được phishing form, mình tạo test account để đăng nhập thử và capture HTTP Requests bằng Fiddler.

image

Từ những requests thu được, mình rút ra 5 endpoints thiết yếu sau:

  1. http://api.cit.vn/get.php
  2. https://z-m-graph.facebook.com/v1.0/
  3. https://z-m-api.facebook.com/v1.0/
  4. https://z-m-graph.facebook.com/v2.8/me/feed
  5. http://m.dantrivideo.com/savelogin.php

Tất cả requests log mình để tại đây.

Dựa vào đó mình rút ra được cách thức tấn công:

1. Sau khi form được điền, javascript trên trang web query đến endpoint (1) với dữ liệu gồm:

+ username: Tên đăng nhập hoặc email, sđt mà nạn nhân nhập vào.

+ password: Mật khẩu của nạn nhân.

-> Lấy api_key, sig, và sigv2 từ dữ liệu trả về.

2. Dùng api_key, sigsigv2 từ bước 1 để đăng nhập tài khoản nạn nhân vào app qua endpoint (3)

- Nếu mật khẩu đúng -> access_token được trả về -> Lấy access_tokensession_cookies.

- Nếu mật khẩu sai: Báo sai mật khẩu và yêu cầu nhập lại -> Lặp lại bước 1

3. Dùng access_token -> Lấy friends list của nạn nhân từ endpoint (2)

4. Gửi yêu cầu đăng bài đến endpoint (4), các thành phần quan trọng nhất trong dữ liệu request gồm:

+ link: Đường link chia sẻ trên status (Ở đây là link chứa mã độc)

+ message: Nội dung status.

+ privacy: Quyền riêng tư. (Ở đây được đặt là  {‘value’:'EVERYONE’} -> Công khai)

+ tags: Những người được tag trong friendlist.

+ timeline_visibility: Ẩn/hiện trên timeline. (Ở đây giá trị là hidden -> bài viết sẽ được ẩn trên timeline của nạn nhân).

-> Lấy id bài đăng

5. Gửi yêu cầu đến endpoint (2) kèm id bài đăng và access_token để tắt thông báo bài viết và ẩn thông báo bài viết, gây khó khăn trong việc phát hiện và xóa bài đăng của nạn nhân.

6. Gửi thông tin của nạn nhân đến endpoint (5) để lưu lại.

Mức độ nguy hiểm:

- Nói về cách tấn công thì đây là phương thức phishing cơ bản đánh vào tâm lý tò mò và chủ quan nhằm đánh cắp thông tin người dùng.

- Tuy nhiên lần tấn công này nguy hiểm hơn nhiều ở chỗ nó có khả năng trực tiếp xác nhậncan thiệp vào phiên đăng nhập người dùng. Thay vì phải gián tiếp xác nhận thông tin được gửi lên thì giờ đây kẻ tấn công có được những thông tin đảm bảo chính xác do người dùng đã đăng nhập qua Facebook API, hơn nữa là tự đăng bài và ẩn nó đi qua API luôn. Nói cách khác, người dùng tự tấn công mình.

Làm sao để tự bảo vệ mình?

- Cẩn trọng khi click vào những đường link lạ. Đừng bao giờ điền form đăng nhập ở những trang ngoài không rõ nguồn gốc, không có chứng chỉ bảo mật.

- Nếu đã lỡ điền form thì phải đổi mật khẩu ngay lập tức, cài đặt xác thực từ điện thoại nếu có thể.

- Sử dụng J2TeaM Security, một sản phẩm do J2TeaM phát triển.

Phân tích bởi T-RektJuno_okyo