Thiết lập phòng thí nghiệm Android Pentest & Bảng kiểm tra lệnh ADB

Giới thiệu

Để tìm hiểu android pentest theo cách tiện lợi hơn nhiều, chúng tôi sẽ thiết lập môi trường Android Pentest trong hệ thống của riêng mình thay vì tiến hành thử nghiệm trên thiết bị trực tiếp. Cần lưu ý rằng những thực hành này cũng có thể được thực hiện trên điện thoại có bật tùy chọn gỡ lỗi USB, nhưng chúng tôi sẽ sử dụng một máy ảo Android, còn được gọi là Trình giả lập Android. Genymotion là một ví dụ về trình giả lập Android có sẵn để tải xuống trên thị trường có thể rất hữu ích cho việc thử nghiệm thâm nhập của Android. Đây là lựa chọn ưu tiên khi thiết lập phòng thí nghiệm để kiểm tra bút Android vì nó dễ thiết lập, cung cấp hỗ trợ ADB và hỗ trợ Google Apps. Chúng tôi sẽ sử dụng Genymotion để chứng minh tất cả các ví dụ của chúng tôi trong loạt bài này, nhưng một cá nhân có thể sử dụng bất kỳ trình giả lập nào khác cung cấp hỗ trợ chức năng cơ bản như Genymotion. Hãy bắt đầu nào.

Mục lục

  1. Cài đặt môi trường ảo
  2. Bắt đầu với gỡ lỗi
  3. Bảng lừa đảo lệnh ADB

Cài đặt môi trường ảo

Để tải xuống genymotion miễn phí, hãy truy cập trang web này và tải xuống genymotion. Nếu bạn đã cài đặt VirtualBox, bạn có thể chọn không có phiên bản Virtualbox và nếu không thì với VirtualBox. Sau khi tải xuống, bạn có thể đăng nhập trên màn hình chính và chấp nhận tài liệu cấp phép để bắt đầu.

Tạo máy ảo Android (AVM)

Sau khi đăng nhập, bạn sẽ thấy một màn hình trống có 5 tùy chọn khác nhau trên thanh bên và một nút dấu cộng lớn (+) được sử dụng để tạo máy ảo Android. Bấm vào dấu cộng này.

Khi nhấp vào, bạn sẽ thấy một màn hình như sau sẽ có các tùy chọn khác nhau cho các thông số kỹ thuật khác nhau của máy ảo. Bạn có thể chọn thiết bị thử nghiệm và API Android mà bạn muốn cài đặt. Chúng tôi sẽ sử dụng Google Pixel 2 với Android API 28.

API Android là gì? Android API đề cập đến tập hợp các mô-đun phần mềm khác nhau có các phiên bản khác nhau tạo nên Android SDK. Nói cách đơn giản hơn, Một phiên bản API cụ thể sẽ tương ứng với một bản phát hành Android cụ thể như sau: –

Bạn chỉ nên thực hiện thử nghiệm trên các API mới hơn.

Bước tiếp theo là cấu hình lõi, RAM và chế độ mạng. Tôi sẽ thiết lập 1 lõi để xử lý, 1GB RAM và chế độ NAT như sau

Sau khi nhấp vào nút cài đặt, API tương ứng trước tiên sẽ được tải xuống nếu chưa có sẵn trong SDK và sau đó máy sẽ sẵn sàng khởi chạy như sau. Nhấp chuột phải vào nó và nhấn bắt đầu

Thao tác này sẽ bắt đầu một phiên bản hộp ảo trong cửa sổ của genymotion và điều đầu tiên chúng ta sẽ làm là bắt đầu kết nối mạng trên máy ảo bằng cách nhấp vào biểu tượng tín hiệu.

tiếp theo là chuyển công tắc sang BẬT và chọn bộ điều hợp mạng tương ứng mà bạn muốn phân bổ. Trong trường hợp của tôi, kết nối Wi-Fi đang hoạt động, vì vậy tôi sẽ phân bổ Wi-Fi cho máy.

Tiếp theo là cài đặt các ứng dụng của Google trong máy ảo mà máy này sẽ không được tải trước trong API. Điều này là cần thiết trong các trường hợp phải tải xuống và kiểm tra ứng dụng từ cửa hàng Play hoặc một số ứng dụng google khác phải được sử dụng trong máy ảo này. Chúng tôi sẽ thực hiện việc này bằng cách nhấp vào nút Mở GAPPS.

Đơn giản chỉ cần chấp nhận thỏa thuận và chúng tôi tốt để đi.

QUAN TRỌNG : Trong nhiều trường hợp, kiểu cài đặt này có thể không thực hiện được ” lỗi lưu trữ “. Trong những trường hợp như vậy, bạn nên tải xuống kho lưu trữ Open GApps từ trang web của họ tại đây .

Tôi đã chọn kiến ​​trúc x86 và phiên bản Android 9.0 với biến thể cổ phiếu

Sau khi tải xuống, chỉ cần kéo và thả kho lưu trữ trong cửa sổ genymotion để cài đặt ứng dụng. Sau khi cài đặt và khởi động lại, bạn sẽ thấy Google Apps đã được cài đặt thành công.

Bắt đầu với gỡ lỗi

Bây giờ chúng ta đã hoàn tất việc thiết lập môi trường của mình. Trong các ảnh chụp màn hình trước đây, bạn hẳn đã nhận thấy địa chỉ IP của máy ảo trên thanh tiêu đề. Trong trường hợp của tôi, nó là 192.168.52.104 . Đã đến lúc thử và kết nối với máy ảo này bằng Android Debug Bridge (công cụ adb).

Chúng ta chuyển đến Kali và gõ lệnh sau: –

123apt install adbadb connect 192.168.52.104adb devices -l

Gỡ lỗi USB là gì? Gỡ lỗi là một cách để thiết bị Android giao tiếp với Android SDK qua kết nối USB. Nó cho phép thiết bị Android nhận lệnh, tệp, v.v. từ PC và cho phép PC lấy thông tin quan trọng như tệp nhật ký từ thiết bị Android.

ADB là gì? Android Debug Bridge là một tiện ích cung cấp các tính năng gỡ lỗi cho các thiết bị Android. ADB có thể được sử dụng để tiến hành gỡ lỗi qua USB cũng như qua TCP. Chúng ta sẽ tìm hiểu thêm về ADB một cách chi tiết trong phần tiếp theo.

Bảng lừa đảo lệnh ADB

Khái niệm cơ bản

  1. Shell – Như chúng ta đã biết, Android có nhân Linux. Để tạo một trình bao trong thiết bị được kết nối bằng ADB, chúng tôi sẽ sử dụng lệnh:
123adb connect 192.168.52.104adb shellgetprop | grep abi

Lệnh cuối cùng giúp bạn xem kiến ​​trúc của thiết bị bạn đang sử dụng.

  1. Cài đặt APK trong thiết bị

Giả sử chúng tôi có một APK được lưu trong thư mục tải xuống của hệ thống mà chúng tôi muốn cài đặt trên một trong các thiết bị. Tại đây, tôi đã tải xuống DIVA từ liên kết này . Chúng ta có thể làm điều đó trong adb bằng lệnh sau:

123cd Downloads/tar -xvf diva-beta.tar.gzadb install diva-beta.apk

Và chắc chắn, ứng dụng đã được tìm thấy trong thiết bị.

  1. Xem các ứng dụng đã cài đặt

Tất cả các ứng dụng được cài đặt trong thiết bị được lưu trong thư mục / data / data. Vì vậy, chúng tôi sẽ chỉ cần đi qua thư mục và xem 10 ứng dụng đã cài đặt gần đây.

123adb shellcd data/data/ls | tail -10
  1. Bắt đầu và Dừng dịch vụ adb

Điều này chỉ được thực hiện bằng hai lệnh sau:

12adb start-serveradb kill-server

Xin lưu ý rằng nhiều lệnh trong phần trình diễn sắp tới sẽ yêu cầu bạn chạy chúng dưới dạng root trên thiết bị android và do đó, chúng tôi sẽ chạy adb dưới dạng root. Để chạy nó dưới dạng root, bạn cần các lệnh sau:

1adb root

Để hoàn nguyên về trạng thái unroot:

1adb unroot

Nhật ký

  1. Để theo dõi nhật ký thiết bị, chúng tôi sẽ sử dụng công cụ logcat.
1adb logcat

Như bạn có thể thấy, tất cả các loại nhật ký hiện đã được hiển thị. Chúng tôi nhập số thẻ tín dụng vào một trong các chức năng trong DIVA và số đó cũng hiển thị ở đây chứng tỏ lỗ hổng ghi nhật ký không an toàn.

Chúng ta có thể khám phá nhiều bộ lọc và tùy chọn khác trong logcat dưới trang người dùng như ưu tiên nhật ký, ghi nhật ký vào tệp nhật ký, kết xuất nhật ký, xoay tệp nhật ký, v.v. trong trang chủ ở đây .

Kéo và đẩy tệp

Để sao chép một tệp từ hệ thống sang android và android vào hệ thống, người ta có thể sử dụng thao tác đẩy và kéo adb. Hãy xem xét việc sao chép tệp vào thiết bị Android bằng cách sử dụng push.

12echo “Say my name” > file.txtadb push file.txt /sdcard/

Để đảm bảo rằng tệp đã được chuyển đến vị trí / sdcard / trước tiên chúng ta xóa tệp gốc, sau đó kéo tệp đó và truy cập.

123rm file.txtadb pull /sdcard/file.txt /home/kali/Downloads/new_file.txtcat new_file.txt

công cụ pm

  1. Liệt kê : Quản lý gói trong Android đề cập đến việc quản lý tất cả các gói / ứng dụng đã cài đặt trong Android. ví dụ: tên gói của ứng dụng DIVA là jakhar.aseem.diva hiển thị trong lệnh các gói danh sách bên dưới:
1adb shell pm list packages | tail -10
  1. Liệt kê các ứng dụng hệ thống: Có một số bộ lọc bạn có thể áp dụng để sắp xếp các gói này, chẳng hạn như liệt kê tất cả các ứng dụng hệ thống:
1adb shell pm list packages -s
  1. Liệt kê các ứng dụng của bên thứ ba: Tương tự, để xem tất cả các ứng dụng của bên thứ ba, chúng ta có lệnh:
1adb shell pm list packages –3
  1. Xóa dữ liệu của một ứng dụng : Quá trình này cũng giống như việc chuyển đến cài đặt và xóa dữ liệu của ứng dụng đó . Để làm điều đó, chúng tôi có lệnh sau:
1adb shell pm clear jakhar.aseem.diva
  1. Hiển thị đường dẫn cài đặt của một gói: Có thể thực hiện bằng công cụ pm như:
1adb shell pm path jakhar.aseem.diva

công cụ đổ

  1. Xem các dịch vụ đang chạy trong một gói: Nó được thực hiện bằng cách sử dụng lệnh dumpsys trong shell. Dumpsys là một công cụ chạy trên thiết bị Android và cung cấp thông tin về các dịch vụ hệ thống có thể được gọi từ dòng lệnh bằng cách sử dụng adb. Để xem các dịch vụ đang chạy trong một gói:
1adb shell dumpsys activity services jakhar.aseem.diva

Điều thú vị là nó hiển thị các dịch vụ liên quan đến gói diva. Nếu chúng ta nhập lệnh này mà không có tên gói thì tất cả các dịch vụ sẽ được xuất ra.

  1. Trích xuất thông tin về một gói : Một gói sẽ có các thành phần như hành động, hoạt động, nhà cung cấp nội dung, v.v. như đã đề cập trong bài viết trước và để xem thông tin này về một gói cụ thể, chúng ta sử dụng lệnh sau:
1adb shell dumpsys package jakhar.aseem.diva
  1. Xem hoạt động nền trước: Hoạt động hiện có trên màn hình chính có thể được hiển thị bằng lệnh sau:
1adb shell dumpsys activity activities | grep mResumedActivity
  1. Thông tin về các hoạt động trong một gói cụ thể: Để xem chi tiết các hoạt động như hoạt động hiện tại bị tạm dừng, lịch sử của tất cả các hoạt động đã mở, v.v., hãy nhập lệnh sau:
1adb shell dumpsys activity activities | grep jakhar.aseem.diva
  1. Xem các dịch vụ đang chạy của một gói: Tên gói là tùy chọn trong lệnh này vì nó sẽ mở các dịch vụ đang chạy liên quan đến gói đó. Nó như sau:
1adb shell dumpsys activity services jakhar.aseem.diva
  1. Xem thông tin chi tiết về một gói: Một gói có nhiều thành phần ike chi tiết, thông tin quyền, tên phiên bản và mã, v.v. Để xem các chi tiết này:
1adb shell dumpsys package jakhar.aseem.diva

tôi là công cụ

Các hoạt động là bất kỳ trang nào được mã hóa trong java thực hiện một tác vụ cụ thể. Điều thú vị là những hoạt động này cũng có thể được chơi với adb. Nhiều chức năng trong số này được thực hiện bằng cách sử dụng một công cụ khác có tên am được cài đặt trong Android để cung cấp thông tin về các hoạt động.

  1. Bắt đầu hoạt động: Để bắt đầu một hoạt động, trong trường hợp này, hoạt động chính bằng cách sử dụng adb, chúng tôi nhập lệnh sau:
12adb shell am start -n jakhar.aseem.diva/.APICredsActivityadb shell am start -n jakhar.aseem.diva/.APICreds2Activity

Điều này sẽ mở ra hoạt động APICredsActivity như thế này:

Và các hoạt động khác nữa:

  1. Bắt đầu / Dừng dịch vụ: Để dừng một dịch vụ, chúng tôi sử dụng lệnh sau:
1adb shell am stopservice -n com.android.systemui/.SystemUIService

Lệnh này sẽ dừng giao diện người dùng Hệ thống. Sẽ có một màn hình trống cho đến khi chúng ta bắt đầu lại bằng lệnh này:

1adb shell am startservice -n com.android.systemui/.SystemUIService

Điều khoản khác

  1. Chụp ảnh màn hình: screencap là một công cụ tiện dụng được cài đặt trong Android để chụp ảnh màn hình. Công cụ này đang chạy sau tính năng ảnh chụp màn hình và có thể được gọi bằng cách sử dụng adb như:
1adb shell screencap /sdcard/ss_2.png

nd luận là con đường địa phương nơi các ảnh chụp màn hình sẽ được lưu trữ và chúng ta có thể tùy chỉnh nó. Trong trường hợp này, tôi đã nhập sdcard / làm đường dẫn và chúng tôi đi qua thư mục đó để xem ss_2.png ở đó:

  1. Ghi lại màn hình: Cũng giống như có thể chụp ảnh màn hình, bạn cũng có thể quay video màn hình bằng cách sử dụng công cụ ghi màn hình trong Android với lệnh sau:
1adb shell screenrecord /sdcard/demo.mp4 –size 400×400 –bit-rate 200000 –time-limit 5 –rotate –verbose

/sdcard/demo.mp4 – Đường dẫn để lưu trữ bản ghi

size – Kích thước tính bằng pixelxpixel (heightxwidth) mà video sẽ được quay

tốc độ bit – Nói ngắn gọn là tương ứng với chất lượng của video

giới hạn thời gian – Thời gian tối đa mà màn hình sẽ được ghi

xoay – Làm cho hướng dọc mặc định bị lộn ngược và ngược lại trong bản ghi. Có thể được tùy chỉnh cho các góc cụ thể.

Chúng ta sẽ thấy đầu ra như sau:

  1. Xem ID quy trình của một gói: Điều quan trọng theo quan điểm của người áp dụng là biết ID quy trình của một gói ứng dụng. Điều này có thể được thực hiện bằng cách:
1adb shell pidof jakhar.aseem.diva

Ví dụ: tôi phải kiểm tra nhật ký của gói này, tôi có thể lọc ra bằng cách sử dụng grep và PID như:

1adb logcat | grep 7399
  1. Xem trạng thái pin: Tất cả thông tin, từ điện áp đến mức có thể được kết xuất bằng cách sử dụng lệnh đổ pin:
1adb shell dumpsys battery

Chúng ta có thể thử với mức pin bằng lệnh sau:

1adb shell dumpsys battery set level 0

Chắc chắn rồi, hãy xem pin bây giờ trông như thế nào:

  1. Keyevents trong Android: Mỗi khóa trong Android được mô tả bằng một chuỗi các sự kiện chính. Chúng có thể được mô tả như sau:

Hãy thử keyevent 3. Đây là một trang có hoạt động ngẫu nhiên được mở ra:

Bây giờ, lệnh để gửi sự kiện quan trọng 3 là:

1adb shell input keyevent 3

Sau lệnh, một nút trang chủ đã được nhấn và màn hình trông giống như sau:

  1. Xem nhật ký hạt nhân: Để xem nhật ký hạt nhân cho mục đích thử nghiệm, chúng ta có thể nhập lệnh sau:
1adb shell dmesg

Danh sách sẽ quá dài nên tôi sẽ chỉ xem 20 nhật ký đầu tiên:

1adb shell dmesg | head -20
  1. Thiết bị liệt kê:
  •  Để tìm ra kiểu điện thoại bạn đã kết nối với công cụ getprop trong Android có thể sử dụng được:
1adb shell getprop ro.product.model
  • wm tool – công cụ wm trong android liên quan và cung cấp thông tin về windows. Để tìm ra độ phân giải của cửa sổ, chúng tôi sử dụng lệnh sau:

adb shell kích thước wm

Để tìm thông tin về màn hình hiển thị như DPI, số ID hiển thị, v.v. chúng ta nhập lệnh sau:

1adb shell dumpsys window displays

Chúng tôi cũng có thể sửa đổi độ phân giải màn hình bằng công cụ wm bằng lệnh sau:

12adb shell wm size 480x1024adb reboot

trong đó kích thước tính bằng pixel.

Sau khi khởi động lại, cửa sổ sẽ trông giống như sau:

  • ID Android bảo mật và số IMEI: ID Android bảo mật là số 64 bit được tạo trong lần khởi động đầu tiên. ID này cũng có sẵn trong cài đặt. Điều này vẫn không đổi. Mặt khác, số IMEI là một số điện thoại duy nhất. Chúng có thể được xem bằng các lệnh sau:
12adb shell settings get secure android_idadb shell dumpsys iphonesubinfo

Phần kết luận

Trong bài viết này, chúng tôi đã xem xét cách thiết lập môi trường thử nghiệm trong PC của mình bằng Trình giả lập Android Genymotion và thực hiện các chức năng khác nhau trên đó bằng công cụ ADB mà chúng tôi đã cài đặt trong Kali. Trong các bài viết sắp tới, chúng ta sẽ xem xét nhiều công cụ khác nhau, phương pháp OWASP để kiểm tra, hiểu các lỗ hổng Android là gì và tất nhiên, công cụ tự động để kiểm tra bảo mật Android. Cảm ơn vì đã đọc.

Comments