Thiết bị Pentesting di động: Sự ra đời của Anarchy

2301
20-06-2018
Thiết bị Pentesting di động: Sự ra đời của Anarchy

Phần I: Lời mở đầu - Root Android

Background

Bizfly Cloud cho biết - Trong game, Watchdogs, hacker 'Aiden Pierce' chỉ sử dụng điện thoại di động của mình để xâm nhập vào các tổ chức hoặc thực hiện MITM (Man in the Middle Attacks - Tấn công xen giữa). Điều này khiến tôi suy nghĩ, sẽ như thế nào nếu như tôi có thể xây dựng thiết bị pentest di động của riêng mình và tôi bắt đầu nghiên cứu.

Sau 2 năm không ngừng nghiên cứu và brick 2 thiết bị Sony Xperia, tôi có thể xây dựng thành công một platform hack chi phí thấp nhưng vẫn hết sức cao cấp dành cho thiết bị di động với sự trợ giúp của Kali và các công cụ dựa trên APK khác và tập lệnh tùy chỉnh. Loạt blog này phác thảo tất cả các phần cứng, phần mềm và hướng dẫn từng bước cần thiết để xây dựng thiết bị pen-testing di động cá nhân của bạn.

End-game

End-game bao gồm những thứ sau đây:

    1. Nên chạy trên phiên bản Android mới nhất

    2. Bảo mật hệ điều hành ngay cả sau khi khởi động các thiết bị (tường lửa dựa trên Iptable và giám sát dịch vụ)

    3. Không có G-Apps (các ứng dụng của Google có xu hướng làm chậm hệ thống vô cớ do các dịch vụ phụ trợ liên tục)

    4. Cửa hàng ứng dụng nguồn mở không cần đăng ký (Aptoide, F-droid và tương tự)

    5. Môi trường chroot Linux (Ubuntu / Kali) cho các thiết bị armhf / armel

    6. Hỗ trợ cấp nhân cho bộ điều hợp mạng USB bên ngoài, SDR, đầu đọc/ghi NFC, tấn công HID và khởi động trực tiếp hệ thống từ thiết bị của tôi

    7. Hỗ trợ Multi-ROM (để thử nghiệm các ứng dụng và hệ điều hành mới)

    8. Sao lưu phục hồi hoàn toàn (nghĩa là sao lưu toàn bộ hệ thống được mã hóa đầy đủ)

    9. Ngân sách giới hạn tối đa 500 USD hoặc tối đa 35000 INR

    10. Hỗ trợ war-driving (Wifi-GPS và Ubertooth)

    11. Hỗ trợ Y-Cable (đối với thẻ alpha và bộ sạc NHR)

    12. ROM với hỗ trợ khung Xposed


Tôi đã đặt tên cho thiết bị là Anarchy (có lời giải thích thỏa đáng trong post tiếp theo!). Và điều tốt nhất ở đây là tất cả các chi phí này chỉ dưới $300 để xây dựng một thiết bị (chi phí này bao gồm tất cả các phần cứng như liệt kê bên trên ngoại trừ bộ ghi thẻ NFC, chỉ riêng nó tốn khoảng $100).

Trước khi chúng ta bắt đầu, chúng ta hãy xem qua một vài khái niệm và thuật ngữ mà tôi sẽ sử dụng trong suốt loạt bài này. Đây là điều quan trọng để hiểu trước khi chúng tôi tiến hành, nếu không bạn có thể kết thúc với một điện thoại chết mà sẽ không bao giờ khởi động lại được!

1. Bootloader

Bootloader chỉ là một đoạn mã nhỏ được thực thi bất cứ khi nào bạn khởi động điện thoại của mình. Nó được thực thi thậm chí ngay trước khi bạn kịp nhìn thấy hình ảnh động bootloader thực tế. Bây giờ, hầu hết mọi người đều nhầm lẫn bootloader với BIOS (hệ thống xuất nhập cơ bản), nhưng cả hai đều khác nhau về bản chất. BIOS nằm trong bộ nhớ flash bên trong của bo mạch chủ, nó khởi động ngay khi máy tính khởi động, chạy một loạt các kiểm tra, và sau đó chuyển thông tin về phần cứng đến bootloader, trong khi đó bootloader khác với hệ điều hành. Và đó là lý do chúng tôi có thể thực hiện multi-boot (nhiều khởi động) hoặc dual boot trong một số lần khôi phục nhất định của Hệ thống Android. Một người bất kỳ cũng có thể hiểu bootloader tốt bằng LILO của Red Hat hoặc LOADLIN và còn tốt hơn GRUB trong Ubuntu, Crux hoặc Debian. Theo mặc định, trong Android, các bootloader luôn bị khóa và chúng cần được mở khóa để root, cài đặt phục hồi tùy chỉnh, ROMS, kernel (nhân hệ điều hành), modem (bộ điều giải), firmwares, và các bản vá lỗi khác vào các tập tin hệ thống.

Chế độ fastboot Nexus 5 để mở khóa bootloader

Thiết bị Pentesting di động: Sự ra đời của Anarchy - Ảnh 1.

Hầu hết các thiết bị có thể được mở khóa dễ dàng với các lệnh fastboot, trong khi một số nhà sản xuất như HTC, Motorola, Sony, Xiaomi có xu hướng sử dụng khóa hay chính thức còn được biết đến như là oem identifier token để khóa bootloader nhằm duy trì tính bảo mật của dữ liệu của người dùng trong trường hợp thiết bị bị lạc. Bạn có thể lấy các khóa này từ trang web của công ty bằng cách đăng ký vào cổng của họ. Bất cứ khi nào bootloader được mở khóa, factory reset toàn bộ điện thoại và tất cả dữ liệu sẽ bị xóa (dữ liệu sdcard sẽ vẫn giữ nguyên, chỉ phân vùng hệ thống, ứng dụng và dữ liệu hệ thống sẽ bị mất). Tuy nhiên, một số thiết bị xấu khét tiếng, có xu hướng làm hỏng hệ thống bất cứ khi nào ai đó cố gắng mở khóa bootloader và thiết bị sẽ tự chạy ngay lập tức bằng cách đi vào boot-loop (khởi động lại liên tục), và bạn sẽ không còn lựa chọn nào khác ngoài cài đặt ROM mới một bootloader mới. Điều này chủ yếu được thực hiện cho sự an toàn của điện thoại và không phải là một bug hoặc lỗi.

Thiết bị Pentesting di động: Sự ra đời của Anarchy - Ảnh 2.

2. Rooting

Root là quá trình giành quyền truy cập quản trị của thiết bị thông qua các khai thác có sẵn. Luôn luôn tồn tại khả năng rò rỉ dữ liệu cho các bên thứ ba nếu quá trình root không được thực hiện đúng cách. Theo mặc định, tất cả các điện thoại di động đều bị khóa và không được khởi động. Hãy nhớ rằng, rooting does not brick your device (rooting không làm hỏng thiết bị của bạn)! Việc root chỉ leo thang đặc quyền từ một người dùng bình thường đến một quản trị viên. Mở khóa bootloader có thể làm hỏng và xóa thiết bị của bạn nhưng rooting thì không. Có quyền truy cập root sẽ cho phép bạn sửa đổi phân vùng hệ thống, trao đổi sdcard nội bộ và bên ngoài để tăng dung lượng lưu trữ thiết bị, về cơ bản cho phép một người có toàn quyền truy cập vào hệ thống. Lý do duy nhất đáng quan tâm là, vì bạn có quyền truy cập root vào thiết bị, do đó, bạn cũng có quyền tương ứng truy cập root vào bất kì ứng dụng nào bạn cài đặt trên điện thoại của mình sau khi khởi động nó; có nghĩa là nếu bằng cách nào đó bạn vô tình cài đặt bất kỳ ứng dụng độc hại nào thì ứng dụng đó có thể giải mã dữ liệu từ điện thoại của bạn mà dữ liệu đó không được phép incase điện thoại thì ứng dụng sẽ không có quyền truy cập root. Đây là lý do tại sao mọi người sử dụng các trình quản lý root như ứng dụng SuperSU khét tiếng từ Chainfire hoặc Superuser từ ClockWorkMod để giữ tất cả các quyền trong kiểm tra.

3. Phân vùng phục hồi

Một phân vùng phục hồi trong Android là một phân vùng riêng biệt hoàn toàn được giữ riêng biệt với phân vùng hệ thống. Người ta không thể truy cập phân vùng phục hồi khi điện thoại được khởi động. Về cơ bản, một người cần boot điện thoại trong chế độ phục hồi và sau đó có thể sửa đổi nội dung của hệ thống tập tin. Theo mặc định, nhà sản xuất chỉ cho phép các bản cập nhật đã ký từ công ty của riêng họ đã được flash qua các lần khôi phục. Vì vậy, nếu chúng ta muốn flash (flash có nghĩa là cài đặt) một ROM mới hay một nhân, sự phục hồi, modem, firmware hoặc thậm chí nếu chúng ta muốn dual boot và sao lưu hệ thống, chúng ta sẽ phải yêu cầu phục hồi tùy chỉnh. Có 2 dạng phục hồi phổ biến sau đây:

    1. Clockwork Recovery Mod (CWM) - một chương trình dùng để phục hồi lại bản Room gốc, cài đặt hay Up Room (Mod, Cook) cho điện thoại hay máy tính bảng chạy Android.

    2. Team Win Recovery Project (TWRP) - phần mềm mã nguồn mở, cho phép người sử dụng thiết bị Android đã root có thể sao lưu, phục hồi dữ liệu, cũng như thay đổi các file hệ thống của thiết bị.

Cá nhân tôi thích TWRP hơn bởi sự hỗ trợ độc nhất và các tính năng mở rộng như cung cấp truy cập bảng điều khiển đầu cuối, sideloading các tệp hình ảnh, inject mã đã sửa đổi vào tệp boot.img tồn tại và nhiều tính năng khác. Boot.img là tập tin quản lý cấu hình khởi động của thiết bị điện thoại di động. TWRP là những gì tôi sẽ sử dụng trong suốt loạt bài cho tất cả các loại flashing ROM, inject hình ảnh và lấy toàn bộ hệ thống và sao lưu phân vùng.

Ảnh chụp màn hình chính TWRP

4. ROM

ROM (Bộ nhớ chỉ đọc) là nơi chứa hệ điều hành thực sự trong hệ thống của bạn, ví dụ như Marshmallow, KitKat, Lollipop. Nhưng hầu hết mọi người tranh luận rằng làm cách nào mà ROM có thể được đọc chỉ khi chúng ta có thể ghi dữ liệu vào sdcard, mà vẫn cài đặt được các ứng dụng trong bộ nhớ trong, v.v…. Lý do là bất cứ khi nào bạn mua một chiếc điện thoại mới, chúng ta không bao giờ nhận được các thiết bị gốc. Các nhà sản xuất luôn có xu hướng cung cấp cho chúng ta một bootloader đã bị khóa và các thiết bị chưa được kích hoạt, có nghĩa là phân vùng hệ thống chính chỉ đọc và không thể chỉnh sửa được trong khi các phần mềm có thể cài đặt khác sẽ nằm trong phân vùng dữ liệu của bộ nhớ trong có thể hiệu chỉnh nhưng chỉ bằng hệ thống. Người ta sẽ không thể xem các cơ sở dữ liệu được lưu trữ của các ứng dụng mà không có quyền truy cập root vào điện thoại. Chỉ sau khi root điện thoại, người ta có thể khiến cho ROM có thể đọc và ghi.

5. Modem firmware (thiết bị quản lý tất cả chức năng liên quan tới ăng ten sóng từ wifi tới bluetooth và tất nhiên cả sóng điện thoại)

Modem chỉ là một loại phần mềm thu phát vô tuyến gửi và nhận dữ liệu qua bất kỳ mạng nào. Modem là một trong những thiết bị chịu trách nhiệm giao tiếp qua GSM, Wi-Fi và Bluetooth. Lần đầu tiên tôi root và thay đổi ROM trong điện thoại di động của mình, tôi đã nhận thấy phạm vi thẻ SIM của tôi bắt đầu dao động như thế nào. Rất nhiều lần mạng 4G của tôi ngừng hoạt động vì sự hỗ trợ cho 4G không bao gồm trong modem firmware của ROM. Theo mặc định, các nhà phát triển của ROM chỉ cho phép bao gồm modem firmware của một vùng cụ thể. Vì vậy, điều này có nghĩa là tần số của băng tần GSM có thể dao động tùy thuộc vào quốc gia nơi bạn sinh sống. Ngoài ra, các modem firmware từ thiết bị này đến các thiết bị khác là khác nhau. Các nhà phát triển trong https://www.xda-developers.com/ khá tuyệt vời khi giữ được một stack modem từ khắp nơi trên thế giới và gần như tất cả các loại thiết bị. Hãy đảm bảo flash modem firmware thích hợp cho thiết bị của bạn sau khi flash ROM được thực hiện, nếu không bạn có thể kết thúc với một thiết bị không có kết nối mạng và một lỗi như muôn thuở vẫn lặp lại - 'không lắp thẻ sim'.

Kết luận lại, bài viết trên đây là tất cả sự giới thiệu về android rooting. Lý do tôi dành toàn bộ một blogpost cho rooting và flashing (trước khi chúng tôi chuyển sang xây dựng hệ điều hành thiết bị) là vì có một thiết bị pentesting thích hợp sẽ tốt ngang với việc tạo ra hệ điều hành của riêng bạn. 

Một người trước hết cần phải hiểu về nhân, hệ điều hành được tải, driver (chương trình điều khiển) cho phần cứng bên ngoài, sự hỗ trợ cho các thiết bị bên ngoài tích hợp vào nhân, và rõ ràng là không thể quên bộ driver mặc định của android cho gia tốc kế, GPS, áp kế, modem, v.v. Do đó, nếu không có kiến thức phù hợp, một người có thể dễ dàng phá hỏng thiết bị của mình mà không bao giờ boot lại được. Tuy nhiên, tôi sẽ đề cập từng biện pháp về cách cấu hình đúng mọi thứ trong một vài blog tiếp theo, nhưng cho đến lúc đó hãy đọc nhiều nhất có thể trên các android firmware và kiến trúc ARM (ARMHF và ARMEL).

Link gốc: http://niiconsulting.com/checkmate/2017/01/the-mobile-pentesting-device-birth-of-anarchy/

                                                                                         via niiconsulting.com

>> Có thể bạn quan tâm: Pentest theo tiêu chuẩn OWASP

SHARE