- vừa được xem lúc

Cài đặt môi trường Pentest iOS (Phần 1)

0 0 26

Người đăng: Tran Minh Nhat

Theo Viblo Asia

Sẽ là một thiếu sót nếu mình chỉ nói về pentest ứng dụng Android nhưng lại không đề cập gì tới pentest ứng dụng iOS, bởi vì cả hai đều là những hệ điều hành phổ biến nhất dành cho các thiết bị di dộng. Tính ra cũng đã được 1 năm kể từ lần mình đăng bài viết cuối cùng trong series cài đặt môi trường Pentest Android. Có 3 lý do mà cho tới bây giờ mình mới viết về iOS.

Lí do đầu tiên, là mình mới bắt đầu tìm hiểu về pentest iOS hồi đầu năm nay thôi. Giữa ứng dụng Android và ứng dụng iOS có nhiều điểm chung do Google và Apple đều học hỏi lẫn nhau để tạo ra các tính năng tiện dụng hơn cho người dùng. Vì thế nếu đã biết một trong hai thì việc học thêm cái còn lại sẽ không quá xa lạ. Tuy nhiên giữa hai nền tảng Android và iOS vẫn có những sự khác biệt lớn, cần thời gian để nghiên cứu và làm quen.

Lí do thứ hai, là mình cần chờ thiết bị để có thể bắt đầu làm việc. Đối với pentest iOS app thì chúng ta cần có một thiết bị vật lý, có thể jailbreak được để pentest. Bên Android thì có nhiều chương trình "emulator" như: AVD, Genymotion, Bluestack, Nox,... nhưng lại không có iOS "emulator" nào miễn phí cả. Chương trình giả lập trong XCode thì chỉ là "simulator", còn "emulator" dành cho iOS thì lại tính phí cao, trong khi mình thì nghèo.

Lí do thứ ba, là mình bắt đầu lười viết hơn 🤧🥹.

Lí do thì luôn đúng, thật may thì cuối cùng series về pentest iOS cũng được bắt đầu. Sau đây chúng ta sẽ cùng nhau cài đặt môi trường pentest ứng dụng iOS.

1. Jailbreak thiết bị test

1.1. Chọn mua thiết bị

Để pentest ứng dụng iOS thì chúng ta bắt buộc phải chuẩn bị một thiết bị iOS đủ yêu cầu, hoặc chấp nhận trả ít nhất 99$ mỗi tháng cho việc dùng giả lập của Corellium. Để lựa chọn thì tốt nhất là hãy mua lấy một chiếc iphone cũ. Ở Việt Nam hiện tại thì mua một chiếc iphone cũ không hề khó, thậm chí chúng ta còn có thể mua được chiếc iphone có ngoại hình đẹp như mới nếu chịu bỏ thêm tiền.

Cần lưu ý rằng không phải chiếc iphone nào cũng thích hợp. Vì chúng ta cần jailbreak nên sẽ phải tìm được chiếc iphone có thể jailbreak được. Đến hiện tại phần mềm jailbreak mới chỉ hỗ trợ tối đa đến iOS 13.5 thôi. Chúng ta có 1 tin tốt và 1 tin xấu:

  • Tin tốt là: chúng ta không cần bỏ ra nhiều tiền để mua thiết bị test. Chỉ cần 1 - 2 triệu để mua một chiếc iphone 6/6s/7/7s cũ là quá OK rồi.
  • Tin xấu là: để tìm được một chiếc iphone chưa update lên cao hơn iOS 13.5 không hề dễ.

Ngoài iphone ra thì mua ipad cũng được, tuy nhiên sẽ khó hơn mua iphone cũ, việc cài đặt ứng dụng cũng như jailbreak trên iphone cũng tiện nữa. Do đó tốt nhất chúng ta cứ tìm mua một chiếc iphone cũ, mình cũng phải đi hỏi bạn bè mãi mới tìm được một chiếc 6s chưa update iOS với giá 1 triệu.

Để biết hiện tại những phiên bản iOS nào có thể jailbreak, jailbreak kiểu nào và sử dụng công cụ gì, chúng ta sẽ kiểm tra tại trang web https://canijailbreak.com

Để hiểu thêm về jailbreak và các kiểu jailbreak có gì khác nhau thì các bạn có thể đọc bài viết của bạn mình về jailbreak: https://viblo.asia/p/jailbreaking-co-ban-cho-thiet-bi-ios-E375z2eq5GW

1.2. Jailbreak thiết bị

Phiên bản iOS mà con iphone 6s mình đang có là 13.5.1 => Mình có thể lựa chọn trong hai cách jailbreak:

  • Semi-tethered jailbreak bằng checkra1n.
  • Semi-untethered jailbreak bằng unc0ver.

1.2.1. Jailbreak bằng checkra1n

Mình thấy jailbreak bằng checkra1n đơn giản hơn unc0ver, tuy nhiên cần phải có máy tính để thực hiện. Các bước jailbreak như sau:

  • Bước 1: kết nối iphone với máy tính. Lưu ý là sử dụng cáp có thể truyền dữ liệu chứ không phải sợi cáp chỉ sạc.
  • Bước 2: khởi động checkra1n, trong phần "option" tích chọn safe mode.
  • Bước 3: bấm nút "start" để khởi động quá trình jailbreak trên checkra1n, sau đó làm theo hướng dẫn
  • Bước 4: chờ quá trình jailbreak hoàn thành

Sau khi jailbreak thành công, trong iphone sẽ có thêm 2 ứng dụng mới là checkra1n và Cydia.

Vì Semi-tethered jailbreak nên mỗi lần máy để qua đêm hết pin thì mình sẽ phải jailbreak lại.

1.2.2. Jailbreak bằng unc0ver

Jailbreak bằng unc0ver có thể thực hiện ngay trên thiết bị iOS luôn, tuy nhiên cần phải cài unc0ver vào thiết bị trước. Chúng ta có thể cài unc0ver vào thiết bị thông qua Sideloading (tham khảo thêm về cách Sideloading tại đây).

Link tải unc0ver: https://unc0ver.dev

Ở đây mình sẽ sideload bằng ứng dụng Sideloadly: link tải Sideloadly. Nếu như cài trên MacOS thì có thể chúng ta sẽ nhận được thông báo yêu cầu bật plugin Sideloadly trong ứng dụng Mail để có thể cài đặt ứng dụng vào thiết bị iOS.

Để bật plugin thì chúng ta truy cập cài đặt tại Mail > Preferences... > General > Manage Plug-ins... Sau đó tích vào ô Sideload.mailbundle, cuối cùng bấm vào nút Apply and Restart Mail là được.

Bây giờ thì chúng ta có thể sử dụng ứng dụng Sideloadly bình thường, giao diện của ứng dụng rất tối giản và trực quan.

Các bước thực hiện như sau:

  • B1: kết nối thiết bị iOS với máy tính qua cáp truyền dữ liệu.
  • B2: chọn thiết bị trong ứng dụng Sideloadly.
  • B3: nhập email của tài khoản iCloud.
  • B4: chọn tệp tin ipa của ứng dụng muốn cài đặt.
  • B5: bấm nút start.

Sau khi Sideload ứng dụng thành công, trong thiết bị của chúng ta sẽ có thêm ứng dụng unc0ver. Vì ứng dụng không được cài từ app store nên sẽ chưa được chạy ngay. Chúng ta cần vào cài đặt để cho phép chạy ứng dụng: Cài đặt > Cài đặt chung > Quản lý Cấu hình & Thiết bị.

Chúng ta chọn Apple ID tương ứng với email đã nhập khi cài đặt ứng dụng qua Sideloadly.

Bấm vào dòng chữ màu xanh "Tin cậy...", sau đó tiến hành xác nhận lựa chọn.

Giờ chỉ cần mở ứng dụng unc0ver lên và bấm nút Jailbreak, sau đó ngồi đợi ứng dụng hoàn thành là được.

Theo thông tin trên canijailbreak thì unc0ver là Semi-untethered jailbreak, tức là khi chúng ta tắt nguồn sau đó khởi động lại thiết bị thì sẽ không bị mất jailbreak. Nhưng ở con iporn 6s của mình thì vẫn bị mất jailbreak như khi dùng checkra1n. Được cái nếu không có checkra1n thì chúng ta vẫn có thể dễ dàng jailbreak thiết bị vì unc0ver sẽ không tự động xoá.

2. Cài đặt các gói tin vào thiết bị test

Sau khi jailbreak thành công thì chúng ta đã có thể sử dụng Kho ứng dụng Cydia để cài đặt thêm các ứng dụng và gói tin mà bình thường không thể cài đặt qua app store. Chúng ta sẽ cài đặt thêm các gói tin hỗ trợ cho quá trình pentest qua Cydia.

2.1. OpenSSH

Với pentest Android app thì có công cụ ADB để hỗ trợ chúng ta kết nối với thiết bị Android, nhưng với pentest iOS app thì mình chưa thấy có công cụ giống như ADB. Chúng ta không thể chỉ cắm cáp USB truyền dữ liệu vào máy tính, sau đó khởi động công cụ kết nối là được. Với iOS chúng ta sẽ phải cài OpenSSH từ kho ứng dụng Cydia, sau đó SSH vào thiết bị iphone.

Ở ngay trang chủ cũng có hướng dẫn cài và sử dụng OpenSSH rất đầy đủ.

Tại tab "Tìm kiếm" nhập vào từ khoá "openssh", chúng ta sẽ chỉ cài gói tin đầu tiên như đã khoanh trong hình.

Cài gói tin này sẽ tự động cài thêm các chương trình thích hợp, gồm:

  • OpenSSH
  • OpenSSH Clients
  • OpenSSH Global Listerner
  • OpenSSH Server Binaries

Sau khi bấm nút "xác nhận" thì công cụ sẽ bắt đầu cài đặt.

Sau khi quay lại Cydia, chúng ta sẽ thấy OpenSSH đã được cài đặt thành công.

Từ giờ chúng ta đã có thể SSH vào thiết bị iphone.

2.1.1. Cách lấy IP của điện thoại để SSH

Trước tiên, để có thể SSH được thì máy tính và thiết bị iphone cần vào chung một mạng. Cách nhanh nhất để đảm bảo việc này là phát wifi bằng máy tính, sau đó thiết bị iphone sẽ tham gia.

Khi máy tính và thiết bị iphone đã chung một dải mạng rồi, chúng ta sẽ vào phần cài đặt trên thiết bị iphone => chọn mục mạng wifi => chọn cấu hình mạng wifi đang sử dụng.

2.1.2. SSH vào thiết bị iphone

Khi có được địa chỉ IP của thiết bị iphone rồi thì chúng ta có thể SSH vào máy bằng tài khoản root/alpine.

2.1.3. Đổi mật khẩu của tài khoản root

Theo khuyến nghị từ Cydia thì chúng ta nên thay đổi mật khẩu root để tránh việc có người khác SSH được vào thiết bị iphone đã jailbreak của chúng ta. Tuy nhiên mình nghĩ máy test thì cũng chẳng cần thay đổi làm gì vì chúng ta sẽ không kết nối với mạng nào khác trừ mạng wifi do chính chúng ta phát ra. Tuy nhiên nếu muốn yên tâm hơn thì nên đổi mật khẩu tài khoản root bằng command passwd.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 253

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 189

- vừa được xem lúc

Swift: Tạo custom phép toán tử (Operator) của riêng bạn!

Swift cho phép bạn tạo các toán tử có thể tùy chỉnh của riêng bạn. Điều này đặc biệt hữu ích khi bạn xử lý các loại dữ liệu của riêng mình. Operator Types in Swift. Có năm loại toán tử chính trong Swift.

0 0 45

- vừa được xem lúc

Chương 6 Protocol oriented programming.

Cuốn sách này là về lập trình hướng protocol. Khi Apple thông báo swift 2 ở WWDC 2015.

0 0 27

- vừa được xem lúc

Ví dụ về UIActivityViewController

Trên iOS, UIActivityViewController cung cấp giao diện thống nhất để người dùng chia sẻ và thực hiện các hành động trên văn bản, hình ảnh, URL và các mục khác trong ứng dụng. let string = "Hello, world!". let url = URL(string: "https://nshipster.com").

0 0 45

- vừa được xem lúc

Quản lý self và cancellable trong Combine.

. . Công việc quản lý bộ nhớ memory management thường trở nên phức tạp khi chúng ta thực hiện các tác vụ bất đồng bộ asynchronous vì chúng ta thường phải lưu giữ một số object nằm ngoài scope mà object được define trong khi vẫn phải đảm bảo được việc giải phóng object đó được thực hiện đúng quy trìn

0 0 28