Đó là tất cả về Bỏ qua Android SSL Pinning và Chặn Proxy Các ứng dụng không biết.

Nov 27 2022
Hola H3ckers, Tất cả chúng ta đều biết có rất nhiều bài viết về “Cách chặn lưu lượng HTTPS của ứng dụng Android”, Vì vậy, ở đây chúng tôi sẽ không đề cập đến chúng. Nếu bạn chưa tìm thấy, hãy tham khảo phần sau: Định cấu hình thiết bị Android để hoạt động với Burp — Điều kiện tiên quyết của PortSwigger: Quen thuộc với proxy BurpSuite, Kiểm tra Android cơ bản và các công cụ như adb, frida, Phản đối, ứng dụng Magisk, Dịch ngược/Biên dịch lại APK và ký APK.

Hola H3ckers,

Tất cả chúng ta đều biết có rất nhiều bài viết về “Cách chặn lưu lượng HTTPS của ứng dụng Android”, vì vậy ở đây chúng tôi sẽ không đề cập đến chúng. Nếu bạn chưa tìm thấy, hãy tham khảo những điều sau đây:

Định cấu hình thiết bị Android để hoạt động với Burp — PortSwigger

điều kiện tiên quyết:

Quen thuộc với proxy BurpSuite, Kiểm thử Android cơ bản và các công cụ như adb, frida, Phản đối, ứng dụng Magisk, Dịch ngược/Biên dịch lại APK và ký APK.

Mục lục

  1. Ứng dụng mục tiêu của tôi có ghim SSL không?
  2. Đợi đã, Làm thế nào chúng ta có thể xác nhận Ghim?
  3. Thời gian để bỏ qua
  4. Tại sao tôi không thể chặn lưu lượng truy cập ứng dụng ngay cả khi ứng dụng đang Hoạt động với HTTP

Tôi hiểu rồi, điều đó nghe giống như một trò đùa, bởi vì các bạn biết đấy. Nếu việc ghim được thực hiện, thì chúng tôi sẽ không thể nắm bắt được lưu lượng HTTPS của ứng dụng Android mục tiêu của mình.

2. Đợi đã, Làm cách nào chúng tôi có thể xác nhận Ghim?

Sau khi thiết lập proxy trong cả thiết bị và máy chủ proxy (Burp), Khởi động ứng dụng đích, sau đó thực hiện một số hoạt động tạo liên lạc giữa ứng dụng đích và máy chủ của chúng.

Đã đến lúc theo dõi bảng điều khiển của Burp, cụ thể là phần Nhật ký. Nếu Pinning đúng vị trí thì chúng ta sẽ có thể thấy lỗi Chứng chỉ như sau:

2. Thời Gian Bỏ Qua

2.1 Chứng chỉ di chuyển — Mô-đun Magisk:

Nếu thiết bị của bạn được root bằng Ứng dụng Magisk, thì mô-đun Move Certificate là một trong những lựa chọn tốt.

Mô-đun này sẽ di chuyển các chứng chỉ được người dùng tin cậy vào kho lưu trữ hệ thống, làm cho hệ thống (root) tin tưởng vào Chứng chỉ mà người dùng cài đặt (Chứng chỉ CA proxy của chúng tôi)

2.2 Công cụ phản đối

Repo: sensepost/objection: phản đối — khám phá di động thời gian chạy (github.com)

Bước 1 : Đảm bảo máy chủ frida đang chạy trên thiết bị Android

Bước 2: Đính kèm ứng dụng mục tiêu phản đối bằng lệnh sau:

Phản đối -g <pkg name/ PID> khám phá

Sau đó thực hiện lệnh “ android sslpinning disable

Thế là xong, tập lệnh sẽ tìm các lớp ghim SSL và nối chúng trong thời gian chạy để bỏ qua việc ghim.

2.3 Khung Frida

Repo: Frida (github.com)

Ở đây có phương pháp phổ biến nhất và được sử dụng rộng rãi.

Bước 1 : Đảm bảo máy chủ frida đang chạy trên thiết bị Android

Bước 2: Đính kèm ứng dụng mục tiêu của bạn với frida và chạy tập lệnh bỏ qua SSL yêu thích của bạn.

Sau đây là các kịch bản yêu thích của tôi:

https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

2.4 Sử dụng Khung Xposed

Nếu thiết bị của bạn được root bằng khung Xposed , thì bạn có thể thử các mô-đun sau để bỏ qua việc ghim

  1. ac-pm/SSLUnpinning_Xposed: Mô-đun Android Xposed để bỏ qua xác thực chứng chỉ SSL (Ghim chứng chỉ). (github.com)
  2. ViRb3/TrustMeAlready: Tắt xác minh SSL và ghim trên Android, toàn hệ thống (github.com)

apk-mitm là một ứng dụng CLI tự động chuẩn bị các tệp APK Android để kiểm tra HTTPS bằng cách sửa đổi các tệp apk và đóng gói lại.

Mua lại:

shroudedcode/apk-mitm: Một ứng dụng CLI tự động chuẩn bị các tệp APK Android để kiểm tra HTTPS (github.com)

apk-mitm có thể được rút ra bằng cách sử dụng npm.

Bước 1: Chạy apk-mitm như hình bên dưới.

Vậy là xong, apk-mitm đã hoàn thành phần việc của mình. Bây giờ chúng ta có thể cài đặt apk đã vá và chặn lưu lượng ứng dụng.

2.6 Sửa đổi tệp network_security_config.xml

Cấu hình Bảo mật Mạng cho phép các ứng dụng tùy chỉnh cài đặt bảo mật mạng của chúng thông qua tệp cấu hình khai báo . Toàn bộ cấu hình được chứa trong tệp XML này và không cần thay đổi mã.

Nguồn : Cấu hình an ninh mạng | Nhà phát triển Android

Cấu hình bảo mật mạng hoạt động trong Android 7.0 trở lên.

Bước 1 : Dịch ngược ứng dụng android bằng apktool hoặc các giải pháp thay thế. Và định vị tệp network_security_config.xml trong /res/xml.

Bước 2 : Tệp có thể trông như thế này nếu ứng dụng đã ghim chứng chỉ CA của riêng nó.

Nguồn hình ảnh: developer.android.com

Bước 3 : Xóa phần thẻ <pin-set>… </pin-set> đó và thêm vào như sau:

Bước 4: Bây giờ hãy lưu tệp và Đóng gói lại ứng dụng bằng apktool và uber-apk-signer (Để ký apk đã sửa đổi).

Thế là xong, hãy cài đặt apk mới của chúng tôi và bạn đã sẵn sàng để sử dụng.

3. Điều gì sẽ xảy ra nếu ứng dụng không bị chặn và cũng không hiển thị bất kỳ lỗi nào!!

Ở đây, điều đầu tiên xuất hiện trong đầu tôi là “ Rung rinh ”. Các ứng dụng dựa trên rung về cơ bản là " Proxy không biết ".

Vì vậy, đây là anh hùng của chúng ta “ Reflutter ”:

Khung này trợ giúp với kỹ thuật đảo ngược ứng dụng Flutter bằng cách sử dụng phiên bản vá lỗi của thư viện Flutter đã được biên dịch và sẵn sàng để đóng gói lại ứng dụng. “

Mua lại:https://github.com/Impact-I/reFlutter

Bước 1: cài đặt reflutter bằng pip

Bước 2: Thực hiện theo các lệnh được minh họa trong ảnh chụp màn hình bên dưới.

Bước 3: Ký ứng dụng bằng uber-apk-signer hoặc bất kỳ lựa chọn thay thế nào và cài đặt nó.

Bước 4: Bây giờ trong Burp proxy, Bắt đầu nghe cổng 8083 và cũng bật “ Hỗ trợ Proxy vô hình ”.

Vậy là xong, bạn đã sẵn sàng để đi… !

4. Ứng dụng của tôi chỉ sử dụng HTTP nhưng tôi vẫn không thể chặn!!

Hmm..Điều đó hơi kỳ lạ, Nhưng đôi khi nó xảy ra.

Các ứng dụng có hành vi này, về cơ bản được gọi là ứng dụng “ Proxy Unaware ”. Các ứng dụng như vậy định tuyến lưu lượng truy cập trực tiếp vào internet mà không cần hợp tác với cài đặt Proxy trên toàn hệ thống.

Thời gian để bỏ qua:

Đối với phương pháp này, tôi muốn cảm ơn anh Faris ❤.

(60) Faris Mohammed | LinkedIn

Bước 1: Tìm địa chỉ miền mà Ứng dụng đang liên lạc bằng Wireshark. Hiển thị bên dưới.

Bước 2: Dịch ngược ứng dụng bằng apktool

Bước 3: Vào thư mục đã dịch ngược và dùng công cụ ack/grep để tìm ra file chứa tên miền.

Bước 4: Thay tên miền bằng địa chỉ IP và Port của BurpSuite.

Bước 5: Đóng gói lại ứng dụng, ký tên và cài đặt trên thiết bị Android.

Bước 7: Trong proxy BurpSuite, Từ tab Xử lý yêu cầu, đặt máy chủ chuyển hướng và cổng làm địa chỉ miền ban đầu được ứng dụng sử dụng ngay từ đầu.

Bước 8: Thiết lập khớp và thay thế trong các tùy chọn proxy để thay thế giá trị tiêu đề Máy chủ từ địa chỉ IP của trình nghe burp thành địa chỉ miền gốc của ứng dụng

Đó là nó. Giờ đây, lưu lượng HTTP của ứng dụng sẽ được ghi lại trong proxy Burp của chúng tôi.

Lưu ý: — Tại đây, Vì chúng tôi thay thế miền ứng dụng được mã hóa cứng, nên chúng tôi không cần thiết lập proxy thiết bị vì ứng dụng giao tiếp trực tiếp với miền được mã hóa cứng (Chúng tôi đã thay thế miền đó bằng IP proxy của chúng tôi).

Vì vậy, tôi nghĩ rằng tôi đã làm cho bây giờ. Trên thực tế, có một số phương pháp khác mà chúng ta có thể sử dụng để vượt qua Ghim SSL của Android. Tôi sẽ cố gắng tạo Phần 2 dựa trên phản hồi của bạn.

Cảm ơn peeps, hack vui vẻ :)