Cài đặt môi trường Pentest Android trên Windows (Phần 2)
Bài đăng này đã không được cập nhật trong 3 năm
Sau phần 1 của series thì chúng ta đã có được môi trường java, python và máy ảo Android rồi. Trong phần 2 này chúng ta sẽ tiến hành cài đặt môi trường trong máy ảo để hỗ trợ pentest, cụ thể là cài root CA.
Burp Suite và Burp CA
Phần mềm Burp Suite có lẽ không còn xa lạ gì với những người đã chơi CTF mảng Web hay đã biết về Kiểm thử xâm nhập ứng dụng Web. Để Burp có thể chặn bắt được các gói tin từ trình duyệt thì chúng ta phải cài chứng chỉ của Burp vào trình duyệt trước. Với máy ảo Android cũng vậy.
Trong thiết bị Android cũng được cài đặt sẵn 1 số chứng chỉ, và chúng ta cũng có thể tự thêm chứng chỉ nếu muốn. Trong thiết bị Android có 2 kho chứng chỉ là root certificate (system) và user certificate. Để có thể chặn bắt các gói tin bằng Burp Suite thì chúng ta phải thêm chứng chỉ vào kho root certificate.
Tuy nhiên với AVD thì chúng ta chỉ có quyền root khi sử dụng ADB mà thôi, do đó chứng chỉ tự thêm sẽ không vào được root certificate.
Với Genymotion thì chúng ta có thể sử dụng phần mềm root certificate manager để đưa chứng chỉ tự thêm thành chứng chỉ root một cách rất đơn giản.
Dưới đây mình sẽ hướng dẫn cài chứng chỉ root cho máy ảo AVD.
Cài root certificate trên Android 11
Kể từ phiên bản Android 10 trở lên thì các chứng chỉ có thời hạn quá lâu (lớn hơn 39 tháng) sẽ không được chấp nhận nữa, và các ứng dụng sẽ chỉ chấp nhận chứng chỉ của hệ thống (root) mà thôi. Do đó chứng chỉ của Burp sẽ không thể sử dụng được nữa, chúng ta bắt buộc phải tự tạo ra chứng chỉ riêng.
Tạo chứng chỉ
Bước 1: cài openssl. Ở đây mình cài vào máy ảo Kali (Hyper V).
sudo apt-get install openssl
cp /usr/lib/ssl/openssl.cnf ./
Bước 2: tạo chứng chỉ, chúng ta có thể điền tùy ý
openssl req -x509 -days 730 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca -config openssl.cnf
Bước 3: chuyển định dạng tệp tin server.key để sử dụng trong Burp Suite
openssl rsa -in server.key -inform pem -out server.key.der -outform der
openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der -nocrypt
Cài chứng chỉ
Bước 1: đổi đuôi tệp tin ca.der thành ca.cer
Bước 2: khởi động máy ảo và chỉ cần kéo - thả vào AVD là tệp tin ca.cer sẽ được copy vào thư mục sdcard/Download
Bước 3: tiến hành cài đặt chứng chỉ này bằng chức năng trong phần cài đặt của máy ảo AVD (Security > Encryption & credentials > Install a certificate > CA certificate). Sau khi cài đặt thành công, chứng chỉ sẽ có trong phần User certificate.
Các thông tin hoàn toàn khớp với thông tin khi chúng ta tạo chứng chỉ:
Đưa chứng chỉ vào kho System certificate
Trước khi đưa chứng chỉ thành Root CA thì chúng ta phải cài vào kho User CA vì các chứng chỉ trong thiết bị Android sẽ được lưu dưới dạng {hash-của-tệp-tin}.0
Việc cài đặt User CA trước sẽ khiến thiết bị Android tự động tạo đúng định dạng cho chúng ta, lúc này chỉ cần sử dụng adb pull
để lấy tệp tin .0 về và chuyển nó vào kho System CA.
Bước 1: copy chứng chỉ đã cài đặt tại "/data/misc/user/0/cacerts-added"
# Khởi động ADB với quyền root
adb root
# kiểm tra tên tệp tin chứng chỉ đã cài
adb shell "ls /data/misc/user/0/cacerts-added"
# kéo chứng chỉ về máy Windows
adb pull "/data/misc/user/0/cacerts-added/46f37c33.0" ./
Bước 2: chạy lần lượt các lệnh sau để có quyền ghi vào thư mục system
adb root
adb shell avbctl disable-verification
adb disable-verity
adb reboot
Sau khi AVD khởi động lại thì chạy lần lượt các lệnh sau:
adb root
adb remount
adb push .\46f37c33.0 /system/etc/security/cacerts/
Khi thành công thì chúng ta đã có chứng chỉ nằm trong System CA.
Chặn bắt gói tin với Burp Suite
Bước 1: thêm IP sử dụng làm proxy
Bước 2: thêm chứng chỉ tự tạo vào Burp Suite. Chúng ta cần đổi chứng chỉ sang định dạng ca.der để thêm được vào Burp.
Bước 3: cài đặt proxy trong máy ảo Android
Bước 4: thử dùng Burp Proxy để chặn bắt gói tin từ trình duyệt Chrome
Như vậy là chúng ta đã thành công cài đặt AVD để có thể chặn bắt các gói tin. Với các ứng dụng không sử dụng SSL/TLS pining thì chúng ta có thể dễ dàng bắt được các gói tin theo cách trên. Còn với các ứng dụng có sử dụng SSL/TLS pining thì chúng ta phải thực hiện bypass mới có thể bắt được. Yên tâm, sau này mình nhất định sẽ có bài viết hướng dẫn bypass SSL pining
Cài root certificate trên Android 7
Với các thiết bị Android sử dụng phiên bản hệ điều hành thấp hơn Android 10 (Android Nougat) thì cách làm tương tự. Với các phiên bản thấp hơn Android 10 thì không cần bước tự tạo chứng chỉ, chúng ta có thể sử dụng luôn chứng chỉ của Burp Suite.
All rights reserved