L3: Android Mobile Pentest 101

Bài 5 – Phân Tích Động với BurpSuite


1. Giới Thiệu Phân Tích Động

Phân tích động (Dynamic Analysis) là quá trình kiểm thử và đánh giá ứng dụng trong thời gian thực — tức là ta chạy ứng dụng lên, tương tác với nó, rồi quan sát hành vi, dữ liệu gửi/nhận thay vì chỉ đọc source code như phân tích tĩnh.


2. BurpSuite là gì?

BurpSuite là một ứng dụng Java dùng để kiểm thử xâm nhập (penetration testing) ứng dụng web và mobile, được sử dụng rộng rãi bởi các chuyên gia bảo mật trên toàn thế giới.

Trong ngữ cảnh Android pentest, BurpSuite đóng vai trò như một proxy trung gian (Man-in-the-Middle proxy): mọi HTTP/HTTPS request từ điện thoại ảo đều bị BurpSuite bắt lại trước khi gửi lên server.

[Điện thoại ảo] --> [BurpSuite Proxy] --> [Server]
                 <--                  <--

3. Cấu Hình BurpSuite Proxy cho Điện Thoại Ảo

Bước 1 – Tạo Proxy Listener trên BurpSuite

Vào Proxy > Options > Proxy Listeners, click Add:

  • Bind to port: 8080
  • Bind to address: Chọn IP nằm cùng dải mạng với điện thoại ảo (ví dụ 192.168.56.1)

Sau khi tạo xong, tick vào ô Running để bật listener.

Bước 2 – Cấu Hình Proxy trên Điện Thoại Ảo

Vào Settings > Wi-Fi, giữ (long-press) vào mạng WiFi đang kết nối, chọn Modify network:

  1. Tick Advanced options
  2. Ở mục Proxy, chọn Manual
  3. Điền:
    • Proxy hostname: 192.168.56.1 (IP của máy host mà BurpSuite đang chạy)
    • Proxy port: 8080
  4. Nhấn Save

Bước 3 – Kiểm Tra

Mở trình duyệt trên điện thoại ảo, truy cập bất kỳ trang HTTP nào. Nếu cấu hình đúng, BurpSuite sẽ hiển thị request bị bắt lại trong tab Intercept.

Ví dụ request bị bắt:
GET / HTTP/1.1
Host: tsug0d.com
User-Agent: Mozilla/5.0 (Linux; Android 5.1; ...)
Accept-Encoding: gzip, deflate
Connection: close

4. Các Tính Năng Quan Trọng của BurpSuite

4.1 Intercept

Tab Proxy > Intercept là nơi BurpSuite bắt và giữ request lại trước khi gửi đi. Tại đây bạn có thể:

  • Xem toàn bộ nội dung request (headers, body, params)
  • Sửa payload trước khi forward lên server
  • Drop (hủy) request nếu muốn

4.2 Repeater

Repeater cho phép bạn gửi lại một request nhiều lần mà không cần phải thao tác lại trên app. Rất hữu ích khi:

  • Test nhiều giá trị khác nhau cho một tham số
  • Kiểm tra response thay đổi như thế nào

Cách dùng:

  1. Ở tab Intercept hoặc HTTP history, chuột phải vào request
  2. Chọn Send to Repeater
  3. Chuyển sang tab Repeater, sửa request tùy ý, nhấn Go
  4. Response hiển thị ngay bên phải
Request (sửa tay):                  Response:
POST /devlogin HTTP/1.1             HTTP/1.1 200 OK
...                                 Content-Type: text/html
username=devadmin&password=test     {"message": "Correct Credentials", "user": "devadmin"}

4.3 Intruder – Tấn Công Vét Cạn (Brute Force)

Intruder dùng để tự động hóa việc gửi nhiều request với payload thay đổi, điển hình là brute force mật khẩu.

Cách dùng:

  1. Chuột phải vào request > Send to Intruder

  2. Vào tab Intruder > Positions: đánh dấu vùng cần vét cạn bằng ký tự §

    username=dinesh&password=§dkm§
  3. Chuyển sang tab Payloads: nhập danh sách mật khẩu cần thử, ví dụ:

    1234
    abcde
    Dinesh@123$
    haha
    jack@123
  4. Nhấn Start attack

Đọc kết quả:

Khi tấn công xong, cột Length là manh mối quan trọng nhất. Request nào có độ dài response khác với các request còn lại thường là request đăng nhập thành công.


4.4 HTTP History

Tab Proxy > HTTP history lưu lại toàn bộ lịch sử các request đã đi qua proxy, kể cả những request không bị intercept. Rất hữu ích để:

  • Xem lại các API endpoint mà app đã gọi
  • Tìm endpoint ẩn không hiển thị trên UI
  • Phân tích flow xác thực

4.5 Scanner (Chỉ BurpSuite Pro)

Scanner tự động phân tích request và phát hiện các lỗ hổng phổ biến như:

  • XSS (Cross-Site Scripting)
  • CSRF (Cross-Site Request Forgery)
  • SQL Injection
  • Input reflected in response

Cách dùng:

Trong HTTP history, chuột phải vào request > Do an active scan.


5. Sơ Đồ Luồng Hoạt Động

sequenceDiagram participant App as Android App participant Burp as BurpSuite Proxy participant Server as Backend Server App->>Burp: HTTP Request (POST /login) Burp->>Burp: Intercept & hiển thị request Note over Burp: Analyst xem/sửa payload Burp->>Server: Forward request (đã chỉnh sửa) Server->>Burp: HTTP Response Burp->>App: Trả response về app

6. Kiến Thức Mở Rộng

6.1 Intercept HTTPS (SSL Pinning Bypass)

Trong thực tế, hầu hết ứng dụng dùng HTTPS. Để BurpSuite bắt được HTTPS, cần:

  1. Cài CA Certificate của BurpSuite lên điện thoại ảo (truy cập http://burp trên trình duyệt điện thoại để tải cert)
  2. Nếu app có SSL Pinning (chỉ tin tưởng cert cụ thể), cần bypass bằng:
    • Frida + script bypass SSL pinning
    • objection (wrapper của Frida, dễ dùng hơn)
    • Patch APK với apktool để xóa logic pinning

6.2 Các Attack Type trong Intruder

Thử từng payload vào một vị trí duy nhất. Dùng khi brute force một tham số (ví dụ password).
Đưa cùng một payload vào tất cả vị trí cùng lúc. Dùng khi username và password cần giống nhau.
Dùng nhiều danh sách payload song song, mỗi vị trí dùng một danh sách. Dùng khi có sẵn cặp username:password.
Thử tổ hợp tất cả các payload ở mọi vị trí. Dùng khi cần brute force cả username lẫn password cùng lúc (tốn nhiều request nhất).

6.3 Công Cụ Thay Thế / Bổ Sung

Công cụMục đích
mitmproxyProxy mã nguồn mở, hỗ trợ scripting bằng Python
Charles ProxyProxy có GUI thân thiện, phổ biến trên macOS
FridaDynamic instrumentation, hook vào runtime của app
objectionCLI tool dựa trên Frida, bypass SSL pinning nhanh
DrozerFramework kiểm thử bảo mật Android toàn diện

6.4 Ứng Dụng Thực Hành

Bài này sử dụng InsecureBankv2 — một ứng dụng Android có chủ đích chứa lỗ hổng, dùng để luyện tập: