1 điểm bởi GN⁺ 2024-03-06 | 1 bình luận | Chia sẻ qua WhatsApp

Phá certificate pinning của Messenger của Meta (macOS)

  • Ứng dụng Messenger cho macOS của Meta tương tự mô hình của Texts.com, một ứng dụng desktop độc lập.
  • Batuhan İçöz, người dẫn dắt dự án nền tảng Meta tại Texts.com, cho rằng bước đầu tiên quan trọng là chặn các yêu cầu mạng.
  • Meta tăng cường bảo mật bằng cách áp dụng certificate pinning và ngăn việc phân tích các yêu cầu máy chủ thông qua tấn công MITM (man-in-the-middle).

Certificate pinning là gì?

  • Khi cấu hình một proxy client, cần thiết lập để tin cậy "certificate authority".
  • Có thể chặn và giải mã thông tin của các yêu cầu bằng cách sử dụng chứng chỉ do certificate authority cấp.
  • Nếu dịch vụ triển khai certificate pinning, nó chỉ chấp nhận các chứng chỉ được cấp bởi những certificate authority cụ thể, khiến không thể dùng chứng chỉ do certificate authority của người dùng cấp.

Hành vi mặc định

  • Nếu không vô hiệu hóa certificate pinning, mọi yêu cầu đều trả về "lỗi nội bộ", và phần mềm proxy hiển thị "SSL handshake failed".
  • Vì yêu cầu không thể hoàn tất vòng đời, không thể suy luận thông tin về yêu cầu đó.

Hành vi mong muốn

  • Có thể dùng tấn công MITM để đọc thành công request, response và header trong công cụ debug mạng.

Các cách tiếp cận khả thi

  • Một trong những cách từng hoạt động là thay đổi chuỗi URL trong binary sang một endpoint tự host không an toàn, không triển khai TLS.
  • Có thể dùng thư viện dynamic instrumentation như Frida, nhưng Messenger đặc biệt dễ bị crash, nhất là khi hooking.
  • Việc dùng Frida đi kèm một quy trình triển khai phức tạp.

Cách tiếp cận

  • Tải Messenger, chuyển nó vào thư mục Applications, rồi import binary ARM vào Hopper.
  • Hopper có thể dùng để disassemble, decompile, recompile, debug và trực quan hóa binary.
  • Tìm các chuỗi như "SSL pinning validation failed" để cố gắng giảm thiểu số lượng chỉnh sửa.
  • Phát hiện chuỗi "Using custom sandbox -> turn off SSL verification" rồi tìm và sửa hàm liên quan.
  • Thiết lập hàm IsUsingSandbox luôn trả về true để vô hiệu hóa certificate pinning.

Kết quả

  • Sau khi export file thực thi mới và gỡ chữ ký, thay thế binary Messenger gốc bằng binary mới.
  • Khi khởi động lại Messenger, công cụ proxy hiển thị header, response body và toàn bộ thông tin request.
  • Đã chặn request thành công chỉ với việc sửa đúng 4 byte trong tổng số 97,477,728 byte của binary.

Triển khai

  • Sau khi biên dịch binary, gửi nó cho Batuhan.
  • Batuhan nhận chứng chỉ ký, cài đặt nó và ký ứng dụng.
  • Sau khi ký xong, anh ấy có thể dùng binary trên hệ thống của mình để xem các request của chính mình.

Ý kiến của GN⁺

  • Bài viết này cung cấp một ví dụ thú vị về cách các nhà nghiên cứu bảo mật vượt qua certificate pinning trong ứng dụng Messenger của Meta.
  • Certificate pinning là một tính năng bảo mật quan trọng để ngăn tấn công man-in-the-middle, nhưng việc các nhà nghiên cứu tìm ra cách vượt qua nó mang lại những góc nhìn quan trọng cho cộng đồng bảo mật.
  • Kỹ thuật này có thể giúp các nhà phát triển tăng cường bảo mật cho ứng dụng hoặc dịch vụ của mình, đồng thời hỗ trợ phát hiện và khắc phục lỗ hổng bảo mật.
  • Tuy nhiên, cũng cần thận trọng khi chia sẻ kết quả nghiên cứu vì chúng có thể bị sử dụng với mục đích xấu.
  • Các công cụ khác cung cấp chức năng tương tự bao gồm công cụ phân tích mạng như Wireshark hoặc Burp Suite, vốn được sử dụng rộng rãi để giám sát và phân tích lưu lượng mạng.

1 bình luận

 
GN⁺ 2024-03-06
Ý kiến trên Hacker News
  • Thắc mắc về khía cạnh pháp lý

    • Tò mò về tính hợp pháp của hành vi này.
    • Từng cho rằng về mặt kỹ thuật đây sẽ là hành vi vi phạm DMCA, nhưng cũng nghi ngờ giả định đó có thể không đúng.
    • Đặt câu hỏi làm sao điều này có thể khả thi về mặt pháp lý.
  • Nỗ lực và sự kiên trì khi thử decompile rồi recompile

    • Đã thử một hướng đi tương tự nhưng bỏ cuộc ở bước decompile/chỉnh sửa/recompile.
    • Bày tỏ sự thán phục trước mức độ tận tâm này và tò mò đã đầu tư bao nhiêu thời gian cho nó.
    • Bản thân thường đặt ra giới hạn thời gian và tuân thủ nó.
  • Sự mai một của kỹ năng kỹ thuật ngày xưa

    • Hồi tưởng về thời của +Orc.
    • Phần lớn kiến thức khi đó, như cách tìm và loại bỏ các nhánh không mong muốn, nay đã bị quên lãng.
    • Hiện tại có quá nhiều kỹ năng khác cần phải học.
  • Nhận xét liên quan đến cơ chế phòng thủ RE của Meta

    • Chỉ ra rằng các biện pháp chống reverse engineering (RE) của Meta, đặc biệt là Messenger, khá dễ dãi.
    • Nói rằng việc loại bỏ IsUsingSandbox() trong bản build production có lẽ sẽ khá đơn giản.
    • Cho rằng ngay cả trước khi dùng đến các kỹ thuật obfuscation nâng cao, các cơ chế phòng thủ này vẫn sẽ dễ vượt qua.
  • Certificate pinning trong chế độ sandbox

    • Đề cập đến cách có thể buộc certificate pinning ngay cả trong chế độ sandbox.
    • Nhớ lại thời đại học từng thử chặn bắt lưu lượng Snapchat bằng tấn công man-in-the-middle (MitM) nhưng thất bại.
  • Tính hữu ích của checksum nhị phân lúc runtime

    • Đặt câu hỏi liệu checksum nhị phân khi runtime có giúp làm cho việc sửa đổi trở nên khó hơn không.
    • Tò mò liệu đây có phải quy trình phổ biến trên ứng dụng di động hay không, và liệu SDK của iOS hay Android có cung cấp tính năng như vậy không.
    • Vì cách giải quyết cuối cùng chỉ là sửa vài byte trong binary, nên cảm thấy lẽ ra biện pháp này có thể đã ngăn chặn được.
  • Câu hỏi về việc sử dụng công cụ proxy

    • Hỏi về công cụ proxy được dùng trong bài viết.
    • Tò mò liệu khi công cụ đó chạy thì toàn bộ lưu lượng của mọi ứng dụng có được định tuyến qua nó hay không.
  • Bảo mật của ứng dụng từ các công ty lớn

    • Thắc mắc vì sao các ứng dụng của các công ty lớn không bị obfuscate hoàn toàn, và cũng không bao gồm các cơ chế bảo vệ khác để từ chối chạy binary đã bị chỉnh sửa.
  • Khả năng chặn bắt lưu lượng của ứng dụng Meta

    • Cho rằng không cần thiết phải chặn bắt lưu lượng của ứng dụng Meta.
    • Cung cấp liên kết tới trang hướng dẫn bug bounty của Meta.
  • Tầm quan trọng của việc giám sát lưu lượng

    • Nhấn mạnh điều này quan trọng để bác bỏ các thuyết âm mưu cho rằng ứng dụng Facebook nghe lén người dùng qua microphone để hiển thị quảng cáo nhắm mục tiêu.
    • Cách dễ nhất để phản bác là giám sát lưu lượng giữa ứng dụng và máy chủ Facebook, nhưng certificate pinning ngăn cản điều đó.
    • Dù rất khó thuyết phục những người tin vào thuyết âm mưu, việc biết rằng kiểu giám sát này là khả thi vẫn rất quan trọng.