Một trong số các vấn đề khó nhất với những ai muốn tìm hiểu về Kiểm thử xâm nhập ứng dụng Android (Pentesting Android applications) là cách cài đặt môi trường kiểm thử. Kiểm thử xâm nhập ứng dụng di động cũng có nhiều điểm tương tự như Kiểm thử xâm nhập ứng dụng web, tuy nhiên việc cài đặt môi trường cho việc kiểm thử xâm nhập ứng dụng di động lại khó hơn nhiều.
Đối với kiểm thử xâm nhập ứng dụng web chúng ta chỉ cần cài Burp Suite, sau đó cài chứng chỉ của Burp vào trình duyệt là có thể làm việc được rồi. Để hỗ trợ thêm cho công việc thì chúng ta có thể cài thêm 1 số extension như EditThisCookie để chỉnh sửa cookie, FoxyProxy để nhanh chóng thay đổi thiết lập proxy, Wappalyzer để phát hiện các công nghệ mà trang web sử dụng,... Rồi cũng có các công cụ mạnh khác như: dirsearch, sqlmap, reNgine,... với cách cài đặt đơn giản là chỉ cần chạy lần lượt các lệnh theo đúng hướng dẫn.
Đối với kiểm thử xâm nhập ứng dụng Android thì cần cài môi trường trên 1 thiết bị giả lập (hoặc máy thật cũng được) đã root để có thể cấu hình proxy và bắt các gói tin giữa ứng dụng và server. Ngoài ra còn cài thêm các công cụ hỗ trợ bypass SSL pinning, bypass root detection,... khá là phức tạp đối với người mới bắt đầu.
Sau đây là các bước cài đặt môi trường kiểm thử xâm nhập ứng dụng Android trên Windows
Cài JDK
Có rất nhiều công cụ kiểm thử ứng dụng Android viết bằng Java, công cụ không thể thiếu - Burp Suite cũng vậy. Vì thế đầu tiên chúng ta phải cài JDK đã.
Link tải JDK: https://www.oracle.com/java/technologies/javase-downloads.html
Phiên bản thì chúng ta có thể tùy ý lựa chọn. Tuy nhiên không nên cài JDK bản cao quá vì có thể Burp Suite không-phải-bản-crack chưa hoạt động được với các bản JDK cao. Mình nghĩ nên cài bản JDK 11 là đủ. Máy của mình thì đang cài JDK 15, vẫn chạy được Burp Suite Pro 2020.12
Sau khi cài JDK thì nhớ phải cài PATH. Có thể tham khảo hướng dẫn tại đây: https://viblo.asia/p/java-post-1-cai-dat-moi-truong-code-java-maGK7pOaZj2/
Cài Python
Ngoài Java ra thì cũng có nhiều công cụ mạnh viết bằng Python. Việc cài đặt python tương tự cài đặt JDK, chỉ cần tải bộ cài về sau đó cài PATH là được.
Link tải Python: https://www.python.org/downloads/
Cài đặt Android Studio
Trước sau gì nếu muốn hiểu về cách hoạt động của ứng dụng android thì cũng phải biết sơ sơ về lập trình android thôi. Nên cài Android Studio là không hề thừa. Bên cạnh đó, cài Android Studio xong thì có thể cài luôn giả lập Android AVD đi kèm với Android Studio luôn.
Link tải Android Studio: https://developer.android.com/studio
Nếu bạn không muốn cài Android Studio mà vẫn cài được giả lập thì hãy kéo xuống phần cài giả lập Genymotion ở bài viết này. Còn nếu thích AVD thì có thể xem bài viết sau để cài AVD mà không cần cài Android Studio: https://viblo.asia/p/pentest-android-cai-dat-android-emulator-sao-cho-ngau-yMnKMjkAZ7P
Cài giả lập Android
AVD
Cho đến giờ thì giả lập Android ngon nhất và được các Pentester dùng nhiều nhất là Genymotion. Để cài đặt Genymotion thì chúng ta bắt buộc phải cài thêm Virtualbox làm môi trường cho máy ảo Android hoạt động.
Nhưng lí do mình vẫn chọn AVD thay vì Genymotion là vì Windows của mình là bản Professional, và mình đang sử dụng Hyper V. Hyper V là một phần mềm chạy máy ảo rất ngon, nó nhanh hơn và tiết kiệm tài nguyên hơn VMware và Virtualbox. Tuy nhiên Virtualbox lại không chơi với Hyper V, khi bật tính năng Hyper V thì mình không thể sử dụng Genymotion được nữa.
Tất nhiên là AVD thì vẫn ngon và hoàn toàn đủ dùng, chúng ta còn có thể viết script để khởi động nhanh nữa.
Bước 1: mở Android Studio lên, click vào icon hình chiếc điện thoại ở góc phải thanh công cụ để mở giao diện AVD Manager. Sau đó thì click nút Create Virtual Device.
Bước 2: chọn loại thiết bị giả lập android. Mình chọn Pixel 3XL cho nhanh. Sau đó click next.
Chú ý: các thiết bị có biểu tượng Play Store sẽ là thiết bị chưa root. Để kiểm thử bảo mật thì chúng ta cần sử dụng thiết bị root.
Bước 3: chọn phiên bản android. Mình khuyên nên cài android 11 (android R) vì bản này có hỗ trợ chạy các ứng dụng sử dụng kiến trúc ARM.
Tốt nhất thì nên cài thêm 1 bản android 5 nữa để kiểm tra tính tương thích của ứng dụng và khả năng hoạt động của ứng dụng trên phiên bản android thấp.
Bước 4: đặt tên thiết bị và click finish để xác nhận tạo thiết bị.
Viết script khởi động nhanh AVD
Sau khi tạo được giả lập rồi, bình thường mỗi khi muốn sử dụng thì lại phải mở Android Studio lên, hoặc truy cập vào AVD Manager để khởi động. Việc này rất bất tiện, vì thế chúng ta nên viết 1 script khởi động, mỗi khi dùng chỉ cần click đúp vào file .bat là xong.
Bước 1: cài path cho emulator.exe
emulator.exe là chương trình quản lý giả lập android. Sau khi cài path cho emulator.exe chúng ta có thể khởi động được AVD từ bất cứ đâu. Cách cài PATH tương tự như cài PATH cho Java.
Đường dẫn: C:\Users\{user}\AppData\Local\Android\Sdk\emulator
Bước 2: tạo 1 file .txt và viết script khởi động giả lập với nội dung như sau.
emulator -avd android_11_root -no-snapshot-load -writable-system -selinux disabled
Trong đó android_11_root
là tên thiết bị lúc tạo. Ví dụ: nếu đặt tên là Pixel 3XL root thì tên thiết bị sẽ là pixel_3xl_root
.
Sau đó lưu file và đổi đuôi thành .bat
Genymotion
Cách cài đặt Genymotion các bạn có thể đọc tại đây: https://viblo.asia/p/cai-dat-genymotion-phan-mem-gia-lap-android-tren-pc-1VgZvazpKAw
Sau khi cài Genymotion thì chúng ta sẽ cài thêm Play Store vào để tiện trong việc cài ứng dụng. Chúng ta cũng có thể tải các ứng dụng trên Play Store về để "luyện tay" nữa. Cách cài Play Store có thể đọc tại đây: https://viblo.asia/p/huong-dan-cai-dat-google-play-services-tren-genymotion-step-by-step-WkwGnWPPv75g
Cài đặt ADB
ADB là công cụ cho phép chúng ta kết nối với shell của thiết bị android, cả giả lập lẫn máy thật. Ngoài ra qua ADB còn có thể cài đặt ứng dụng, kiểm tra danh sách các thiết bị android đang kết nối, chuyển file giữa máy tính và thiết bị android, debug,...
Nếu như cài Genymotion thì nên dùng ADB được cung cấp sẵn trong đường dẫn genymotion/tools/adb.exe
. Còn nếu cài AVD thì sẽ sử dụng ADB tại đường dẫn C:\Users\{user}\AppData\Local\Android\Sdk\platform-tools
.
Tất nhiên là mình cũng cài PATH cho đường dẫn chứa ADB luôn.
Cài đặt Frida
Frida là công cụ hook hỗ trợ cực mạnh cho quá trình phân tích động ứng dụng. Cách dùng Frida mình sẽ giới thiệu trong bài viết khác, bơi vì đây là 1 công cụ cực mạnh, dùng được Frida thì gần như có thể điều khiển toàn bộ ứng dụng luôn rồi.
Frida chia thành client và server:
- Frida client: cài ở máy tính của mình, giúp chúng ta điều khiển Frida server.
- Frida server: cài trong giả lập và thiết bị android.
Cài Frida client
Việc cài đặt Frida tại máy tính thông qua python với lệnh sau:
pip install frida-tools
hoặc
python -m pip install frida-tools
Cài Frida server
Bước 1: tải Frida server tại link: https://github.com/frida/frida/releases
Chú ý: tải phiên bản Frida server trùng với phiên bản Frida client. Có thể kiểm tra phiên bản Frida client bằng lệnh:
frida --version
Phiên bản Frida server cần tải có tên dạng frida-server-{số phiên bản}-linux-x86.xz
Bước 2: sau khi tải về thì giải nén và đổi tên thành frida-server
Bước 3: khởi động giả lập, sau đó thực hiện lần lượt các lệnh sau:
adb root
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"
Bước 4: kiểm tra xem frida đã hoạt động chưa bằng cách chạy lệnh:
frida-ps -U
Nếu kết quả hiển thị ra các tiến trình đang chạy trên giả lập thì chúng ta đã cài đặt Frida thành công.