Tải bản đầy đủ (.pdf) (39 trang)

Bài tập lớn môn an toàn mạng (56)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.81 MB, 39 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN

Học phần: An tồn mạng
Bài báo cáo:
Tìm hiểu cơng cụ Objection
Giảng viên hướng dẫn: TS. Đặng Minh Tuấn
Sinh viên thực hiện:
1. Nguyễn Duy Quốc Khánh
B18DCAT127

HÀ NỘI, 2021


MỤC LỤC
DANH SÁCH THUẬT NGỮ TIẾNG ANH VÀ VIẾT TẮT................................................ 3
DANH MỤC HÌNH ẢNH........................................................................................................ 5
LỜI NĨI ĐẦU .......................................................................................................................... 7
CHƯƠNG 1. GIỚI THIỆU VỀ OBJECTION ...................................................................... 8
I.

Giới thiệu về Objection .............................................................................................................8

II. Lịch sử ra đời .............................................................................................................................8
III.

Các tính năng của cơng cụ Objection ..................................................................................9

CHƯƠNG 2. CÀI ĐẶT VÀ HƯỚNG DẪN SỬ DỤNG OBJECTION ............................. 10
Cài đặt Objection .....................................................................................................................10


I.
1.
2.
3.
4.

Yêu cầu ................................................................................................................................................10
Cài đặt trực tiếp từ mã nguồn trên github .......................................................................................10
Cài đặt thông qua trình quản lý gói pip3 của python .....................................................................11
Cập nhật Objection ............................................................................................................................11

II. Hệ thống tệp lệnh của Objection ............................................................................................12
1.
2.
3.
4.
5.

III.
1.
2.

objection explore .................................................................................................................................13
objection patchapk .............................................................................................................................14
objection pathchipa ............................................................................................................................15
objection run .......................................................................................................................................16
objection signapk ................................................................................................................................16

Cách sử dụng Objection ......................................................................................................17
Sử dụng Objection với hệ điều hành IOS .........................................................................................17

Sử dụng Objection với hệ điều hành Android .................................................................................22

CHƯƠNG 3. THỬ NGHIỆM KHAI THÁC BẰNG OBJECTION .................................. 27
Khai thác ứng dụng WaTF Bank Android bằng Objection ................................................27

I.
1.
2.
3.
4.
5.

Cài đặt WaTF Bank trên Android ....................................................................................................27
Vơ hiệu hố cơ chế phát hiện root .....................................................................................................27
Thu thập thông tin ứng dụng.............................................................................................................29
Theo dõi các lớp, các phương thức của ứng dụng ...........................................................................31
Sử dụng Objection để thay đổi giá trị trả về của phương thức trong một lớp .............................31

II. Khai thác ứng dụng DVIA IOS bằng Objection ...................................................................33
1.
2.
3.

Cài đặt DVIA trên IOS ......................................................................................................................33
Vơ hiệu hố cơ chế phát hiện jailbreak ............................................................................................34
Thu thập thông tin cơ bản về ứng dụng ...........................................................................................36

KẾT LUẬN ............................................................................................................................. 38
TÀI LIỆU THAM KHẢO ..................................................................................................... 39



DANH SÁCH THUẬT NGỮ TIẾNG ANH
VÀ VIẾT TẮT
Thuật ngữ tiếng Anh/Giải thích

Thuật ngữ tiếng Việt/Giải thích
Một thành phần của ứng dụng
Android. Activity đại diện cho một

Activity

chức năng của ứng dụng, là một giao
diện màn hình, nơi user tương tác trực
tiếp với ứng dụng.

Android

Android là một hệ điều hành dựa trên
nền tảng Linux.
Một thành phần của ứng dụng IOS.

Bundles

Bundle là thư mục chứa file thực thi
và các tài nguyên được sử dụng bởi
ứng dụng.
Một tập hợp các thư viện phần mềm,
các trình biên dịch, diễn dịch nhằm

Framework


cung cấp một mơi trường giúp cho
việc lập trình ứng dụng trở lên nhanh
chóng.
Một framework giúp bạn chèn được

Frida

các đoạn mã vào một ứng dụng đang
được cài trên thiết bị.
Một thủ thuật xử lý giúp người dùng

Jailbreak

can thiệp vào hệ thống để phá vỡ
những rào cản bảo mật của iPhone,
iPad.

3


Một kỹ thuật mà bạn có thể đọc, ghi
Hooking

hoặc thực thi đoạn code bất kỳ lên
một chương trình.

IOS

Hệ điều hành trên các thiết bị di động

của Apple.
Một thành phần của ứng dụng
android, có thể thực hiện các hoạt

Service

động lâu dài trong background và nó
khơng cung cấp một giao diện người
dùng.
Một thành phần cửa ứng dụng

Receiver

android, cho phép đăng kí để lắng
nghe những sự kiện từ hệ thống hoặc
ứng dụng .
Quá trình can thiệp trực tiếp vào hệ

Root

thống của thiết bị Android để dành
quyền kiểm soát, tùy chỉnh, thay đổi
với các tập tin gốc của hệ điều hành.

4


DANH MỤC HÌNH ẢNH
Hình 1. Mã nguồn của Objection tại Github............................................................................................8
Hình 2. Phiên bản Objection 1.11.0.........................................................................................................9

Hình 3. Tải mã nguồn Objection từ Github ...........................................................................................10
Hình 4. Cài đặt Objection trực tiếp từ mã nguồn...................................................................................11
Hình 5. Cài đặt Objection thơng qua trình quản lý gói pip3..................................................................11
Hình 6. Cập nhật Objection bằng trình quản lý gói pip3 .......................................................................12
Hình 7. Lệnh objection --help................................................................................................................12
Hình 8. Lệnh objection explore --help...................................................................................................13
Hình 9. Lệnh objection patchapk –help .................................................................................................14
Hình 10. Lệnh objection patchipa –help ................................................................................................15
Hình 11. Lệnh objection run –help ........................................................................................................16
Hình 12. Lệnh objection signapk –help .................................................................................................16
Hình 13. Hiển thị các tiến trình của thiết bị IOS ...................................................................................17
Hình 14. Kết nối Objection với thiết bị IOS ..........................................................................................17
Hình 15. Lệnh env với IOS ....................................................................................................................18
Hình 16. Lệnh ios bundles list_bundles .................................................................................................18
Hình 17. Lệnh ios bundles list_frameworks ..........................................................................................18
Hình 18. Lệnh memory list modules .....................................................................................................19
Hình 19. Lệnh memory list exports <module_name> ...........................................................................19
Hình 20. Lệnh ios hooking list classes ..................................................................................................20
Hình 21. Lệnh ios hooking search classes <search_term> ....................................................................21
Hình 22. Lệnh ios hooking list class_methods <class_name> ..............................................................21
Hình 23. Lệnh ios hooking search methods <search_term>..................................................................22
Hình 24. Hiển thị tiến trình của Android ...............................................................................................23
Hình 25. Kết nối Objection với ứng dụng Android ...............................................................................23
Hình 26. Lệnh env android ....................................................................................................................24
Hình 27. Lệnh android hooking list activities .......................................................................................24
Hình 28. Lệnh android hooking list receivers .......................................................................................25
Hình 29. Lệnh android hooking list services .........................................................................................25
Hình 30. Lệnh android hooking get current_activity .............................................................................26
Hình 31. Lệnh android root disable .......................................................................................................26
Hình 32. Lệnh android sslpinning disable .............................................................................................26

Hình 33. Mã nguồn WaTF Bank ...........................................................................................................27
Hình 34. Cài đặt WaTF Bank android ...................................................................................................27
Hình 35. Ứng dụng WaTF Bank có cơ chế phát hiện root ....................................................................28
Hình 36. Vơ hiệu hố cơ chế phát hiện root ..........................................................................................29
Hình 37. Tìm kiếm thơng tin mơi trường ứng dụng WaTF Bank..........................................................29
Hình 38. Tìm các Activity của ứng dụng WaTF Bank ..........................................................................29
Hình 39. Tìm các phương thức của lớp Login.......................................................................................30
Hình 40. Giao diện Check Pin của ứng dụng WaTF Bank ....................................................................30
Hình 41. Các phương thức của lớp CheckPin .......................................................................................31
Hình 42. Theo dõi lớp Login .................................................................................................................31
Hình 43. Các phương thức của lớp Login được gọi ..............................................................................31
Hình 44. Theo dõi lớp CheckPin ...........................................................................................................32
Hình 45. Các phương thức của lớp CheckPin được gọi ........................................................................32
5


Hình 46. Thay đổi giá trị trả về của phương thức checkPin ..................................................................32
Hình 47. Ứng dụng đã bị vượt qua Check Pin.......................................................................................33
Hình 48. Mã nguồn DVIA .....................................................................................................................33
Hình 49. Ứng dụng DVIA IOS ..............................................................................................................34
Hình 50. Ứng dụng DVIA có cơ chế phát hiện jailbreak ......................................................................35
Hình 51. Vượt qua cơ chế phát hiện jailbreak .......................................................................................36
Hình 52. Tìm thư mục của ứng dụng DVIA ..........................................................................................36
Hình 53. Liệt kê các lớp của ứng dụng DVIA .......................................................................................37

6


LỜI NĨI ĐẦU
Ngày nay các thiết bị di động thơng minh đã trở nên phổ biến. Hầu như

bất cứ ai cũng có thể sở hữu một chiếc điện thoại thơng minh, một số người còn
sử dụng cả đồng hồ thông minh. Các thiết bị này đều cài đặt một trong hai hệ
điều hành chính: Android hoặc iOS. Vì vậy, hầu hết các tổ chức hay các đơn vị
cung cấp dịch vụ như các cơng ty, doanh nghiệp, ngân hàng, chính phủ, giáo
dục, y tế, … đều muốn cung cấp dịch vụ của mình cho các khách hàng, các bên
liên quan thông qua ứng dụng di động.
Tuy nhiên, bên cạnh sự tiện lợi, các ứng dụng trên các thiết bị di động
cũng phải đối mặt với mối nguy rất lớn từ các cuộc tấn công mạng. Hiện nay,
các cuộc tấn công vào các ứng dụng đã trở thành rủi ro rất lớn cho mọi chuyển
đổi kỹ thuật số trên toàn thế giới. Sự bất cẩn trong khâu lập trình và thiếu kiến
thức về bảo mật là những nguyên nhân chính cho sự tồn tại của các loại lỗ hổng
tồn tại trong các hệ thống.
Chính vì vậy, các vấn đề liên quan đến bảo mật và kiểm thử xâm nhập đang
dần trở thành mối quan tâm thiết yếu với bất cứ công ty hay tổ chức nào có các
ứng dụng trực tuyến. Nhận thấy sự thiết yếu đó, có rất nhiều cơng cụ hỗ trợ việc
kiểm thử xâm nhập, đánh giá an tồn thơng tin đã được ra đời.
Objection là một cơng cụ hỡ trợ cho việc phân tích ứng dụng trên cả hệ điều
hành IOS và Android. Với Objection, các nhà nghiên cứu có thể phân tích các
ứng dụng độc hại này để đưa ra phương án ngăn chặn và cảnh báo cho người
dùng.
Trong báo cáo này, em sẽ trình bày kết quả tìm hiểu cơng cụ Objection. Bài
báo cáo của em gồm bốn phần:
- Chương 1 sẽ trình bày khái qt cơng cụ Objection
- Chương 2 sẽ trình bày cách cài đặt công cụ và các cách sử dụng công cụ
Objection
- Chương 3 sẽ trình bày về các kịch bản khai thác trên môi trường thử
nghiệm

7



CHƯƠNG 1. GIỚI THIỆU VỀ
OBJECTION
I.

Giới thiệu về Objection

Objection là công cụ phân tích khi các ứng dụng di động đang chạy. Cơng cụ
này được xây dựng dựa trên Frida, có thể sử dụng cho việc kiểm thử ứng dụng di
động trên cả hai hệ điều hành IOS và Android.

II.

Lịch sử ra đời

Objection là một công cụ mã nguồn mở, được viết bằng Python và bắt đầu
phát triển vào năm 2017 bởi Sensepost. Mã nguồn của Objection được lưu trữ và
cập nhật tại />
Hình 1. Mã nguồn của Objection tại Github

Objection hỗ trợ cả IOS và Android, đồng thời thường xuyên bổ sung các tính
năng và cải tiến mới khi cơng cụ này được sử dụng trong thực tế. Cho tới nay, dự
án đã phát hành 74 phiên bản, với phiên bản mới nhất là 1.11.0 được phát hành
ngày 06/04/2021.

8


Hình 2. Phiên bản Objection 1.11.0


III. Các tính năng của công cụ Objection
- Đối với tất cả các nền tảng được hỗ trợ, Objection cho phép bạn:

-

-

o Nhúng các tiện ích Frida
o Tương tác với hệ thống thư mục, tệp. Cho phép tải lên, tải xuống các
tệp ứng dụng
o Thực hiện các tác vụ khác nhau liên quan đến bộ nhớ như là liệt kê các
mơ-đun có trong bộ nhớ
o Bỏ chức năng phát hiện root / jailbreak
o Tìm kiếm các class của ứng dụng
o Thực hiện bỏ qua SSL Pinning
o Tương tác với cơ sở dữ liệu SQLite
Đối với hệ điều hành IOS, Objection có những tính năng riêng như:
o Kết xuất dữ liệu từ bộ nhớ lưu trữ thông thường như NSUserDefault và
NSHTTPCookieStorage
o Kết xuất định dạng thông tin mà người dùng có thể đọc được
o Theo dõi việc phương thức được thực thi
Đối với hệ điều hành Android, Objection có những tính năng riêng như:
o Liệt kê các Activities, Services, Receivers
o Chạy một Activity có sẵn trong ứng dụng đích
o Xem các phương thức của một lớp

9


CHƯƠNG 2. CÀI ĐẶT VÀ HƯỚNG DẪN

SỬ DỤNG OBJECTION
I.

Cài đặt Objection

Như đã trình bày ở bày ở trên, Objection được viết bằng python. Vì vậy,
Objection có thể cài đặt thơng qua hai cách:
o Cài đặt trực tiếp từ mã nguồn trên github
o Cài đặt thơng qua trình quản lý gói pip của python
1. Yêu cầu
Trước khi cài đặt, đảm bảo bạn đã có những điều kiện sau:
o python phiên bản 3.4 trở lên
o pip3 phiên bản 9.0+
2. Cài đặt trực tiếp từ mã nguồn trên github
Tải mã nguồn trên github về máy của mình
o git clone />
Hình 3. Tải mã nguồn Objection từ Github

Sau khi tải mã nguồn về thành công, chạy lệnh
o python3 setup.py build

10


Hình 4. Cài đặt Objection trực tiếp từ mã nguồn

3. Cài đặt thơng qua trình quản lý gói pip3 của python
Sử dụng trình quản lý gói pip3 để tải Objection

Hình 5. Cài đặt Objection thơng qua trình quản lý gói pip3


o pip3 install objection
4. Cập nhật Objection
Sử dụng lệnh sau để cập nhật Objection lên bản mới nhất
o pip3 install objection –upgrade

11


Hình 6. Cập nhật Objection bằng trình quản lý gói pip3

II.

Hệ thống tệp lệnh của Objection

Người dùng có thể xem mơ tả các tùy chọn cấu hình của Objection thơng qua
câu lệnh:
o objection –help

Hình 7. Lệnh objection --help

Các cấu hình và tuỳ chọn của Objection bao gồm:
12


o -N, --network: Kết nối với điện thông qua mạng thay vì kết nối USB
thơng thường
o -h, --host TEXT: chỉ ra host mà người dùng muốn kết nối
o -p, --port INTEGER: chỉ ra cổng mà người dùng muốn kết nối
o -g, --gadget TEXT: chỉ ra tên của Frida Gadget / tiến trình mà objection

kết nối đến
Các câu lệnh con của Objection
o
o
o
o
o
o
o
o

api: khởi động objection api server
device_type: lấy thông tin về thiết bị kết nối với Objection
explore: bắt đầu phiên phân tích với Objection
patchapk: kết nối với file apk trong thiết bị di động android
patchipa: kết nối với file ipa trong thiết bị di động ios
run: chạy một câu lệnh objection
signapk: ký file apk bằng khố của objection
version: hiển thị thơng tin phiên bản

Người dùng có thể xem mơ tả các tuỳ chọn và cấu hình của các lệnh con thơng
qua câu lệnh:
o objection <câu lệnh con> --help
1. objection explore

Hình 8. Lệnh objection explore --help

Các cấu hình và tuỳ chọn trong chế độ explore:
o -s, --startup-command TEXT: Chạy một câu lệnh Objection khi ứng
dụng khởi động

o -q, --quite: Không hiển hiện logo objection và quá trình khởi động
o -c, --file-commands FILENAME: Một file chứa các câu lệnh Objection,
chạy các câu lệnh này khi ứng dụng khởi động
13


o -S, --startup-script FILENAME: Một script được thêm vào và chạy khi
ứng dụng khởi động
o -P, --plugin-folder TEXT: thêm folder chứa plugin được load
2. objection patchapk

Hình 9. Lệnh objection patchapk –help

Các cấu hình và tuỳ chọn trong chế độ patchapk:
o -s, --source TEXT: Đường dẫn đến file APK
o -a, --architecture TEXT: Kiến trúc mà thiết bị di động kết nối sử dụng
o -V, --gadget-version TEXT: Chỉ ra phiên bản gadget
o -p, --pause: Dừng kết nối trước khi dựng lại APK
o -k, --skip-cleanup: Khơng xố các file tạm khi hồn thành
o -d, --enable-debug: Bật chế độ debug
o -N, --network-security-config: Bao gồm tệp
network_security_config.xml cho phép người dùng đã thêm CA đáng
tin cậy trên Android 7 trở lên. Không thể sử dụng tùy chọn này với cờ -skip-resources.

14


o
o
o

o
o

o
o

-D, --skip-resources: Bỏ qua giải mã tài nguyên như một phần của quá
trình xử lý apktool.
-t, --target-class TEXT: Lớp mục tiêu để patch
-2, --use-aapt2: Sử dụng nhị phân aapt2 thay vì aapt như một phần của
quá trình xử lý apktool.
-c, --gadget-config TEXT: Tập cấu hình tiện ích để sử dụng
-l, --script-source TEXT: Tệp tập lệnh để sử dụng với loại cấu hình
"đường dẫn". Chỉ định "libfrida-gadget.script.so" làm "đường dẫn"
trong cấu hình của bạn.
-n, --ignore-nativelibs: Khơng thay đổi cờ extractNativeLibs trong
AndroidManifest.xml.
-m, --manifest TEXT: Tệp AndroidManifest.xml được giải mã để đọc.

3. objection pathchipa

Hình 10. Lệnh objection patchipa –help

Các cấu hình và tuỳ chọn trong chế độ patchipa:
o -s, --source TEXT: Đường dẫn đến file ipa
o -V, --gadget-version TEXT: Chỉ ra phiên bản gadget
o -c, --codesign-signature TEXT: Mã nhận dạng để sử dụng.
o -P, --provision-file TEXT: Tệp .mobileprovision để sử dụng trong .ipa
đã được vá
o -b, --binary-name TEXT: Tên của hệ nhị phân Mach-O trong IPA

(được sử dụng để vá với Frida)
15


o
o
o
o
o

-k, --skip-cleanup: Không làm sạch các tệp tạm thời sau khi hồn tất.
-p, --pause: Tạm dừng trình vá trước khi xây dựng lại IPA.
-z, --unzip-unicode: Giải nén IPA chứa các ký tự Unicode.
-C, --gadget-config TEXT: Tệp cấu hình tiện ích để sử dụng.
-l, --script-source TEXT: Tệp tập lệnh để sử dụng với loại cấu hình
"đường dẫn". Hãy nhớ rằng sử dụng tên của tệp này trong "đường dẫn"
của bạn. Nó sẽ nằm bên cạnh cấu hình.
o -b, --bundle-id TEXT: Gói hỗ trợ cần đặt khi thiết kế mã IPA
4. objection run

Hình 11. Lệnh objection run –help

Các cấu hình và tuỳ chọn trong chế độ run:
o -d, --hook-debug: In các hook đã biên dịch khi chúng được chạy ra màn
hình và logfile.
5. objection signapk

Hình 12. Lệnh objection signapk –help

Các cấu hình và tuỳ chọn trong chế độ signapk:

o -k, --skip-cleanup: Không làm sạch các tệp tạm thời sau khi hoàn thành

16


III. Cách sử dụng Objection
1. Sử dụng Objection với hệ điều hành IOS
1.1. Kết nối Objection với ứng dụng IOS
- Yêu cầu thiết bị đã jailbreak, và đã cài đặt frida-server
- Sau khi cài đặt mọi thứ, chạy lệnh sau để liệt kê tất cả các tiến trình trên điện
thoại
o frida-ps -Uia

Hình 13. Hiển thị các tiến trình của thiết bị IOS

- Sau khi chạy lệnh sẽ thu được mã định danh của tiến trình, sử dụng lệnh sau để
bắt đầu kết nối Objection với ứng dụng cần kiểm thử
o objection --gadget "<id>" explore

Hình 14. Kết nối Objection với thiết bị IOS

17


1.2.

-

Thu thập thơng tin cơ bản về ứng dụng
Tìm thư mục của app:

o env

Hình 15. Lệnh env với IOS

- Liệt kê Bundles của ứng dụng
o ios bundles list_bundles

Hình 16. Lệnh ios bundles list_bundles

- Liệt kê fameworks mà ứng dụng sử dụng
o ios bundles list_frameworks

Hình 17. Lệnh ios bundles list_frameworks

- Liệt kê các mô đun trong bộ nhớ ứng dụng
o memory list modules

18


Hình 18. Lệnh memory list modules

- Hiển thị mô đun đã được chạy
o memory list exports <module_name>

Hình 19. Lệnh memory list exports <module_name>

- Liệt kê các lớp của ứng dụng
o ios hooking list classes


19


Hình 20. Lệnh ios hooking list classes

- Tìm kiếm classes của ứng dụng
o ios hooking search classes <search_term>

20


Hình 21. Lệnh ios hooking search classes <search_term>

- Liệt kê các phương thức của lớp ứng dụng
o ios hooking list class_methods <class_name>

Hình 22. Lệnh ios hooking list class_methods <class_name>

- Tìm kiếm các phương thức trong ứng dụng
o ios hooking search methods <search_term>

21


Hình 23. Lệnh ios hooking search methods <search_term>

1.3.

-


1.4.

-

-

Bỏ qua các cơ chế bảo mật của ứng dụng
Vơ hiệu hố cơ chế phát hiện jailbreak
o ios jailbreak disable
Vơ hiệu hố cơ chế SSL Pinning
o ios sslpinning disable
Hooking với ứng dụng IOS
Hook tất cả các phương thức của một lớp
o ios hooking watch class <class_name>
Hook một phương thức
o os hooking watch method "-[<class_name> <method_name>]" --dumpargs --dump-return --dump-backtrace
Thay đổi giá trị trả về boolean
o ios hooking set return_value "-[<class_name> <method_name>]"
<boolean_value>

2. Sử dụng Objection với hệ điều hành Android
2.1. Kết nối Objection với ứng dụng Android
- Yêu cầu thiết bị đã root, và đã cài đặt frida-server
- Sau khi cài đặt mọi thứ, chạy lệnh sau để liệt kê tất cả các tiến trình trên điện
thoại
o frida-ps -Uia

22



Hình 24. Hiển thị tiến trình của Android

- Sau khi chạy lệnh sẽ thu được mã định danh của tiến trình, sử dụng lệnh sau để
bắt đầu kết nối Objection với ứng dụng cần kiểm thử
o objection --gadget "<id>" explore

Hình 25. Kết nối Objection với ứng dụng Android

2.2.

-

Thu thập thông tin cơ bản về ứng dụng
Tìm kiếm thơng tin mơi trường của ứng dụng Android
o env
23


Hình 26. Lệnh env android

- Liệt kê các Activity của ứng dụng Android
o android hooking list activities

Hình 27. Lệnh android hooking list activities

- Liệt kê các receiver của ứng dụng Android
o android hooking list receivers

24



Hình 28. Lệnh android hooking list receivers

- Liệt kê các services của ứng dụng Android
o android hooking list services

Hình 29. Lệnh android hooking list services

- Hiển thị Activity hiện tại
25


×