Khi phân tích bảo mật ứng dụng Mini Program (như WeChat), việc bắt và phân tích lưu lượng mạng là bước thiết yếu. Trên macOS, mình sử dụng bộ công cụ Proxifier + Burp Suite — giải pháp linh hoạt và đáng tin cậy, nhưng nhiều tài liệu hướng dẫn hiện hành thiếu cập nhật hoặc bỏ qua cơ chế vận hành thực tế. Bài viết này không chỉ trình bày từng bước cấu hình mà còn giải thích rõ vai trò của từng thành phần để bạn kiểm soát hoàn toàn luồng dữ liệu.
Môi trường thử nghiệm
- Máy chủ: MacBook Pro M1 Pro
- Hệ điều hành: macOS Ventura 13.6
- Proxifier for Mac: phiên bản 4.0.2
- Burp Suite Community Edition: 2024.8.1
- Ứng dụng WeChat: 3.9.2 (build 28745)
Cài đặt phần mềm
Proxifier có thể tải trực tiếp từ trang chủ chính thức (proxifier.com) với bản dùng thử 30 ngày. Burp Suite và WeChat được cài qua DMG hoặc Homebrew — không cần hướng dẫn chi tiết thêm.
Cấu hình Burp Suite
Chỉ cần kích hoạt Proxy Listener ở tab Proxy → Options, thiết lập cổng lắng nghe là 8080 và đảm bảo tùy chọn Bind to port được bật. Không cần thay đổi các thiết lập SSL hoặc TLS trừ khi xử lý chứng chỉ tự ký đặc biệt.
Hiểu kiến trúc Proxifier trước khi cấu hình
Proxifier vận hành dựa trên hai thành phần cốt lõi:
- Proxies: Định nghĩa các điểm trung gian (proxy server) — ví dụ:
127.0.0.1:8080để kết nối tới Burp. - Rules: Quy tắc định tuyến lưu lượng — xác định ứng dụng nào, gửi yêu cầu đến host/port nào, và xử lý như thế nào (chuyển tiếp, bỏ qua hay chặn).
Mỗi yêu cầu mạng từ tiến trình sẽ được so khớp tuần tự với danh sách Rules từ trên xuống dưới. Quy tắc đầu tiên khớp sẽ quyết định hành vi — các quy tắc phía dưới bị bỏ qua.
Thêm proxy đích
- Mở Proxifier → chọn tab Proxies ở thanh bên phải.
- Nhấn Add → nhập địa chỉ
127.0.0.1, cổng8080, chọn giao thức HTTP (không dùng HTTPS tại đây — vì Burp lắng nghe HTTP, dù xử lý HTTPS traffic qua TLS interception). - Lưu lại. Proxy mới sẽ xuất hiện trong danh sách với trạng thái Online.
Tạo quy tắc bắt lưu lượng WeChat Mini Program
Truy cập tab Rules, nhấn Add để tạo rule mới với các thông số sau:
Tên quy tắc (Name)
Đặt tên mô tả, ví dụ: WeChat-MiniProgram-Intercept.
Ứng dụng áp dụng (Applications)
Mini Program trên WeChat macOS chạy trong các tiến trình con riêng biệt. Các bundle ID và đường dẫn thực thi thường gặp:
com.tencent.xinWeChat.WeChatAppEx.helper
WeChatAppEx Helper.app
WeChatAppEx Helper
Để tìm chính xác, mở Terminal và chạy:
mdfind "kMDItemCFBundleIdentifier == 'com.tencent.xinWeChat.*' && kMDItemDisplayName == '*Helper*'"
Sau khi xác định được đường dẫn đầy đủ (ví dụ: /Applications/WeChat.app/Contents/MacOS/WeChatAppEx.app/Contents/Frameworks/WeChatAppEx Framework.framework/Versions/C/Helpers/WeChatAppEx Helper.app), nhấn dấu + bên cạnh trường Applications và chọn file tương ứng.
Bộ lọc đích (Target Hosts / Target Port)
Để bắt toàn bộ lưu lượng từ Mini Program, để trống cả hai trường — tương đương với Any host, any port.
Hành động (Action)
Chọn Proxy → chọn proxy đã tạo ở bước trên (127.0.0.1:8080). Hai tùy chọn khác:
- Direct: Gửi yêu cầu thẳng đến đích, không qua proxy.
- Block: Từ chối yêu cầu ngay lập tức.
Sắp xếp thứ tự quy tắc
Danh sách Rules nên có thứ tự như sau (từ trên xuống):
- Localhost — giữ nguyên, đảm bảo các kết nối
127.0.0.1không bị chuyển hướng. - WeChat-MiniProgram-Intercept — quy tắc vừa tạo.
- Default — giữ nguyên, xử lý tất cả lưu lượng còn lại bằng kết nối trực tiếp.
Nếu đặt quy tắc WeChat phía trên Localhost, các kết nối nội bộ (như giao tiếp giữa các component WeChat) cũng bị đẩy vào Burp — gây lỗi ứng dụng. Nếu đặt dưới Default, lưu lượng WeChat sẽ bị bắt bởi Default trước đó và không bao giờ chạm tới quy tắc riêng.
Kiểm tra và sử dụng
Khởi động lại WeChat, mở một Mini Program bất kỳ, sau đó quan sát tab Proxy → HTTP history trong Burp Suite. Các yêu cầu HTTP/HTTPS sẽ xuất hiện đầy đủ — kèm khả năng phân tích, sửa đổi và phát lại (replay).