# Android Forensics

Phản Ứng Sự Cố và Pháp Y Số Di Động (DFIR) đã trở thành một thành phần quan trọng của các cuộc điều tra hiện đại. Khi điện thoại thông minh và các thiết bị di động tiếp tục đóng một vai trò không thể thiếu trong cuộc sống hàng ngày của chúng ta, chúng cũng đã trở thành nguồn bằng chứng quan trọng trong các vụ án hình sự, các sự cố an ninh mạng và các cuộc điều tra nội bộ.

DFIR di động liên quan đến việc thu thập, phân tích và bảo tồn dữ liệu số từ các thiết bị như điện thoại thông minh, máy tính bảng và thiết bị đeo. Nó sử dụng một loạt các kỹ thuật và công cụ để trích xuất thông tin, bao gồm nhật ký cuộc gọi, tin nhắn văn bản, email, hoạt động trên mạng xã hội, dữ liệu vị trí và việc sử dụng ứng dụng.

## 1. Android File System

Trong phần này, chúng ta sẽ xem xét tổng quan về hệ thống tệp được sử dụng trong hệ điều hành Android và học những điều cơ bản. Giống như tất cả các HĐH khác, HĐH Android (dựa trên kernel Linux) có một hệ thống tệp và các tệp và thư mục trên hệ thống tệp này được tổ chức theo cấu trúc phân cấp.

Nói cách khác, hệ thống tệp Android là một cấu trúc thư mục phân cấp được sử dụng để lưu trữ các ứng dụng và dữ liệu. Tiêu chuẩn hóa trong lĩnh vực này đảm bảo rằng các nhà phát triển ứng dụng sử dụng cùng một ngôn ngữ, do đó đảm bảo rằng các ứng dụng hoạt động đáng tin cậy và lành mạnh trên mọi thiết bị Android.

Bản chất mã nguồn mở của Android cho phép người dùng tích cực tham gia vào sự phát triển của hệ sinh thái, cung cấp quyền truy cập vào các hoạt động và điều chỉnh bên trong của nó, do đó tạo ra một hệ sinh thái ứng dụng động. Để kết hợp tính linh hoạt này với bảo mật, có một số quy tắc thiết kế nhất định mà các ứng dụng phải tuân theo khi truy cập các tệp/thư mục hoặc, nói rộng hơn, dữ liệu.

### 1.1. File System Metadata

Hệ thống tệp Android được tối ưu hóa để phân bổ bộ nhớ và quản lý không gian hiệu quả. Android sử dụng EXT4 (hệ thống tệp mở rộng thứ tư) để có hiệu suất và độ tin cậy; việc phân bổ khối hiệu quả giúp giảm thiểu sự phân mảnh, trong khi cơ chế journaling bảo toàn tính toàn vẹn của dữ liệu trong trường hợp mất điện. Do đó, nó cung cấp một cấu trúc ổn định và mạnh mẽ hơn đáng kể so với các hệ thống tệp trước đây như EXT3 và EXT2.

Android được xây dựng trên Linux (làm định dạng lưu trữ chính) và sử dụng hệ thống tệp EXT4. Nhờ những ưu điểm của EXT4, Android có thể mở rộng quy mô cho các thiết bị lớn hơn và cung cấp hiệu suất vượt trội so với các định dạng cũ hơn. Hệ thống tệp EXT4 là một hệ thống tệp journaling, trong đó mỗi tệp hoặc thư mục có một số inode duy nhất và các chi tiết như quyền truy cập/quyền được theo dõi thông qua các số inode này.

Trong Android, quyền truy cập tệp được kiểm soát thông qua các quyền của ứng dụng, do đó các thay đổi trái phép được ngăn chặn bởi các ứng dụng hoạt động trong các sandbox cô lập. Có một môi trường ảo riêng biệt cho mỗi ứng dụng. Trong các môi trường ảo này, mỗi ứng dụng chỉ có quyền truy cập vào các tệp, dữ liệu và tài nguyên của riêng nó. Các ứng dụng khác không thể truy cập các tệp, dữ liệu hoặc tài nguyên của hệ thống. Bằng cách này, ngay cả khi một ứng dụng chạy mã bị lỗi hoặc độc hại, nó cũng không thể gây hại cho các ứng dụng khác hoặc hệ thống.

Ngoài ra, các kỹ thuật quản lý bộ nhớ như bộ nhớ đệm và hoán đổi được sử dụng để đảm bảo rằng các ứng dụng nền trước có đủ RAM để hoạt động tối ưu.

### 1.2. Hierarchy of Directories (Phân cấp Thư mục)

Hệ thống tệp Android được chia thành các phần sau:

* **Phân vùng Boot (/boot):** Khi điện thoại của bạn khởi động, bộ nạp khởi động trước tiên tải kernel và bộ nạp khôi phục từ phân vùng boot. Kernel chịu trách nhiệm cho các chức năng cốt lõi của hệ điều hành và bộ nạp khôi phục cho phép bạn đặt lại điện thoại về cài đặt gốc hoặc truy cập các tùy chọn nâng cao khác.
* **Phân Vùng Hệ Thống (/system):** Phân vùng hệ thống chứa các tệp cần thiết để hệ điều hành Android hoạt động bình thường. Các tệp này bao gồm các ứng dụng, framework, phông chữ và cài đặt.
* **Phân Vùng Dữ Liệu (/data):** Phân vùng dữ liệu chứa tất cả các ứng dụng và dữ liệu do người dùng cài đặt. Điều này bao gồm các ứng dụng đã tải xuống, ảnh, nhạc, video và các tệp khác.
* **Phân Vùng Lưu Trữ (/storage):** Phân vùng lưu trữ chứa các thiết bị lưu trữ bên ngoài như thẻ SD hoặc ổ USB. Các thiết bị này có thể được sử dụng để cung cấp thêm không gian lưu trữ khi bộ nhớ trong của điện thoại của bạn đã đầy.
* **Phân Vùng Khôi Phục (/recovery):** Phân vùng khôi phục là một phân vùng đặc biệt cho phép bạn khởi động điện thoại vào chế độ khôi phục hoặc bộ nạp khởi động. Chế độ khôi phục cho phép bạn đặt lại điện thoại về cài đặt gốc hoặc truy cập các tùy chọn nâng cao khác.

<figure><img src="/files/Z5dZ0NYpCnIqvAVJ5D8j" alt=""><figcaption></figcaption></figure>

### **1.3. Trình Quét Phương Tiện (Media Scanner)**

Hệ điều hành Android bao gồm nhiều công cụ chuyên dụng được điều chỉnh theo nhu cầu của người dùng thiết bị di động. Một trong những công cụ này là Trình Quét Phương Tiện. Trình Quét Phương Tiện duy trì một cơ sở dữ liệu lập chỉ mục nội dung đa phương tiện trên thiết bị. Nó thường xuyên quét các vị trí lưu trữ vật lý, phát hiện các tệp phương tiện và cập nhật cơ sở dữ liệu Media Store. Ví dụ: Trình Quét Phương Tiện chịu trách nhiệm trích xuất các chi tiết như tên nghệ sĩ, tiêu đề, thời lượng, kích thước tệp, v.v. từ một tệp nhạc mới được thêm vào và lưu trữ chúng trong cơ sở dữ liệu Media Store.

Các ứng dụng đa phương tiện được tải trên thiết bị Android truy cập nội dung đa phương tiện bằng cách giao tiếp với Trình Quét Phương Tiện thay vì lập chỉ mục hệ thống tệp, đảm bảo an toàn.

Ngoài ra, thành phần này cho phép các ứng dụng tạo và duy trì các liên kết tượng trưng đến các thiết bị lưu trữ bên ngoài, cho phép lập chỉ mục nội dung hiệu quả với quyền truy cập đáng tin cậy vào các tệp được lưu trữ ngoài thiết bị.

Các thiết bị Android hỗ trợ một số hệ thống tệp, bao gồm EXT2, EXT3 và FAT32. Tùy thuộc vào nhà sản xuất, một số điện thoại cũng có thể hỗ trợ các hệ thống tệp Linux mã nguồn mở như JFFS2 hoặc YAFFS2.

### 1.4. File System Encryption

Hệ điều hành Android sử dụng các phương pháp mã hóa dữ liệu khác nhau để bảo vệ dữ liệu người dùng trong trường hợp thiết bị bị xâm phạm vật lý bởi các tác nhân độc hại. Nói một cách đơn giản, điều này có nghĩa là dữ liệu trong bộ nhớ chỉ có ý nghĩa đối với hệ điều hành nếu nó được mở khóa bằng mật khẩu mà chỉ người dùng mới biết.

Các phiên bản cũ hơn của hệ điều hành Android đã sử dụng Mã hóa Toàn Bộ Đĩa (FDE). Tuy nhiên, người ta thấy rằng có những vấn đề thực tế với việc mã hóa toàn bộ đĩa về hiệu suất và khả năng sử dụng. Các vấn đề về hiệu suất phát sinh vì toàn bộ bộ nhớ phải được giải mã khi thiết bị được bật, điều này tốn thời gian, sử dụng đáng kể tài nguyên hệ thống và làm cạn kiệt pin.

Đây là lý do tại sao File-Based Encryption (Mã hóa Dựa Trên Tệp) (FBE) được giới thiệu trong Android 7.0. Tùy chọn này chỉ cho phép mã hóa một số tệp nhất định.

Trong các hệ thống có FDE, thiết bị hầu như không thể thực hiện bất kỳ chức năng nào mà không cần người dùng nhập khóa, trong khi trong các hệ thống có FBE, nhược điểm này đã được loại bỏ. Với phương pháp Khởi động Trực tiếp, thiết bị có thể khởi động lên màn hình khóa mà không yêu cầu khóa hoặc xác thực từ người dùng.

Có hai loại lưu trữ được mã hóa trong các hệ thống FBE:

* **Bộ nhớ CE (Credential Encrypted Storage - Bộ Nhớ Mã Hóa Bằng Thông Tin Đăng Nhập):** Đây là bộ nhớ được mã hóa bằng thông tin đăng nhập như mật khẩu màn hình khóa hoặc quét vân tay. Đây là nơi lưu trữ hầu hết dữ liệu được sử dụng bởi các ứng dụng và người dùng. Dữ liệu trong bộ nhớ CE có thể truy cập được sau khi thiết bị được mở khóa. Ví dụ: để truy cập ảnh, tin nhắn và danh bạ được lưu trữ bởi một ứng dụng, bạn cần mở khóa thiết bị.
* **Bộ nhớ DE (Device Encrypted Storage - Bộ Nhớ Mã Hóa Bằng Thiết Bị):** Đây là bộ nhớ được mã hóa bởi phần cứng bảo mật của thiết bị (Trusted Execution Environment - TEE). Nó cung cấp mức bảo mật cao hơn so với bộ nhớ CE. Nó lưu trữ dữ liệu hệ thống, dữ liệu quan trọng từ một số ứng dụng và thông tin quan trọng khác được quản lý bởi TEE. Ngay cả sau khi thiết bị được mở khóa, việc truy cập dữ liệu trong bộ nhớ DE yêu cầu quy trình xác minh TEE. Nói cách khác, việc truy cập dữ liệu quan trọng như hệ điều hành của thiết bị hoặc khóa mã hóa của một ứng dụng đòi hỏi các hoạt động trên phần cứng nơi dữ liệu cư trú. Không phải tất cả các thiết bị đều có thể hỗ trợ tính năng TEE và do đó DE. Phần cứng của thiết bị phải hỗ trợ tính năng này.
  * Trong một số thiết bị Android có bộ xử lý Qualcomm Snapdragon, TEE được cung cấp bởi chip Secure Element (SE) chuyên dụng của Qualcomm.
  * Trong một số thiết bị Android có bộ xử lý Samsung Exynos, TEE được cung cấp bởi chip Knox Vault chuyên dụng của Samsung.
  * Trên một số thiết bị Android có bộ xử lý MediaTek Helio, TEE được cung cấp bởi chip TrustZone chuyên dụng của MediaTek.

### 1.5. File System Permissions

Trên Android, các hệ thống tệp thường có cấu trúc giống như Unix và quyền tệp dựa trên mô hình UNIX. Trong mô hình này, có ba loại quyền cho mỗi tệp hoặc thư mục: đọc, viết và thực thi. Các quyền này có thể được gán khác nhau cho chủ sở hữu tệp, nhóm của tệp và những người dùng khác.

<figure><img src="/files/bTpZuzlWpN9hBxytE5mZ" alt=""><figcaption></figcaption></figure>

Quyền hệ thống tệp Android đã được sửa đổi đáng kể so với những quyền có trong kernel Linux được điều chỉnh cho các thiết bị di động. Các ứng dụng chạy trong các sandbox bị cô lập, hạn chế quyền truy cập vào dữ liệu và tài nguyên hệ thống của các ứng dụng khác.

Hệ điều hành Android sử dụng một hệ thống tệp ảo (VFS) để làm việc với các thiết bị lưu trữ có thể có nhiều và/hoặc các hệ thống tệp khác nhau. VFS cung cấp một giao diện ảo cho các hoạt động hệ thống tệp phổ biến (chẳng hạn như đọc/ghi/mở/đóng) và cung cấp cho các nhà phát triển các API và cấu trúc thư mục quen thuộc, giảm độ phức tạp của mã. Các hoạt động phụ trợ được xử lý bởi VFS bằng tính năng FUSE (Filesystem in Userspace) thường được sử dụng trong các hệ thống Linux.

FUSE (Filesystem in Userspace) là một thành phần của VFS cho phép các ứng dụng sử dụng các môi trường lưu trữ bên ngoài và xử lý các sự phức tạp liên quan như khả năng tương thích của thiết bị và quản lý quyền.

### 1.6. Android SandBox

Trong Android, sandboxing là một biện pháp bảo mật được sử dụng để bảo vệ các ứng dụng hoặc các phần quan trọng của hệ điều hành khỏi các ứng dụng khác. Mỗi ứng dụng Android chạy trong môi trường ảo (sandbox) riêng và bị hạn chế để ngăn nó ảnh hưởng đến các ứng dụng hoặc phần khác của hệ điều hành. Mỗi ứng dụng Android hoạt động trong quy trình riêng của nó. Các quy trình này được cách ly với nhau, có nghĩa là không có quyền truy cập trực tiếp vào bộ nhớ hoặc dữ liệu của một ứng dụng từ các ứng dụng khác.

## 2. Handling Locked Devices

Các thiết bị Android hiện đại sử dụng các phương pháp dựa trên phần cứng để bảo mật dữ liệu cá nhân phong phú, chẳng hạn như ảnh cá nhân và ngăn chặn việc tiết lộ trái phép thông tin nhạy cảm này.

Để hiểu đầy đủ về thiết bị mà chúng ta đang điều tra, chúng ta cần làm quen với các thông số kỹ thuật kỹ thuật của nó. Các chi tiết như nó có sử dụng FDE (Full Disk Encryption - Mã hóa Toàn Bộ Đĩa) hay FBE (File Based Encryption - Mã hóa Dựa Trên Tệp), mà chúng ta đã thảo luận trong bài học trước, là rất quan trọng ở giai đoạn này.

Nói cách khác, việc truy cập một thiết bị Android bị khóa và kiểm tra dữ liệu của nó sẽ yêu cầu các kỹ thuật và phương pháp tiếp cận khác nhau tùy thuộc vào nhà sản xuất, ROM và phiên bản Android. Ở giai đoạn này, điều quan trọng nhất là kiên nhẫn và cẩn thận. Bất kỳ sai sót nào cũng có thể làm hỏng dữ liệu trên thiết bị hoặc phá hủy giá trị bằng chứng của nó.

### 2.1. Preparation

Bảo mật phải luôn là ưu tiên hàng đầu, cho dù bạn là người quản lý CNTT hay người dùng các thiết bị như điện thoại và máy tính bảng Android. Google đã thực hiện nhiều bước để làm cho nền tảng này an toàn nhất có thể. Một trong những biện pháp này là Chế độ khóa (Lock Mode), chế độ này tắt các cảm biến vân tay và các tính năng nhận diện khuôn mặt, chỉ để lại mã PIN hoặc hình vẽ là cách duy nhất để mở khóa thiết bị.

Một tính năng khác được thiết kế để bảo vệ dữ liệu trên điện thoại Android là SandBox ứng dụng (Application SandBox). SandBox gán UID duy nhất cho mỗi ứng dụng và hoạt động trong không gian CPU và RAM của nó. Tính năng này ngăn các ứng dụng độc hại cố gắng truy cập các ứng dụng khác hoặc hệ điều hành. Ngoài ra, Android hỗ trợ SELinux (Security-Enhanced Linux), cũng được sử dụng rộng rãi trong hệ sinh thái Linux và cung cấp bảo vệ bổ sung.

Trình quản lý thiết bị android (Android Device Manager -ADM) là một công cụ hữu ích khác để định vị và khôi phục điện thoại thông minh bị mất hoặc bị đánh cắp. ADM giúp có thể định vị từ xa và xóa điện thoại. Do đó, điều quan trọng là phải thận trọng trước khi đưa thiết bị lên mạng để kiểm tra.

Khi một thiết bị Android được giao cho bạ để phân tích pháp y số, điều đầu tiên bạn cần biết là thông tin truy cập cho thiết bị có được cung cấp bởi người dùng của thiết bị hay không. Tình huống này có thể khác nhau tuỳu thuộc vào loại vụ án. Ví dụ: một người là nạn nhân của một cuộc tấn công mạng có khả năng sẽ hợp tác với bạn trong việc kiểm tra thiết bị của họ. Tuy nhiên, nếu thiết bị mà bạn sở hữu thuộc về một kẻ tấn công chứ không phải nạn nhân, bạn không có khả năng có quyền truy cập vào bất kỳ thông tin đăng nhập nào cho thiết bị.

Nếu việc thu giữ xảy ra khi thiết bị đang bật, bạn nên ngay lập tức cách ly thiết bị khỏi các kết nối mạng.

Bước tiếp theo là tắc các tính năng có thể hạn chế quyền truy cập của bạn, chẳng hạn như mã PIN thiết bị và khóa màn hình, từ menu cài đặt của thiết bị. Tại thời điểm này, điều quan trọng cần nhớ là tùy thuộc vào phiên bản Android, nhà sản xuất,... bạn cũng có thể cần thực hiện xác minh để tắt các biện pháp bảo mật đó. Chúng ta không thể đảm bảo kết quả, nhưng đáng để thử.

Một chi tiết cần chú ý là pháp y số yêu cầu một số bước cơ bản mà chúng ta đã thảo luận trong phần trước. Để tóm tắt, các bước này bao gồm thiết lập chuỗi hành trình pháp lý (chain of custody), giảm thiểu sự can thiệp của bên thứ 3 và ghi lại tất cả các hành động.

### 2.2. Getting Data From a Locked Device

Việc bạn không thể vượt qua khóa màn hình, mã PIN thiết bị hoặc bảo mật vân tay không có nghĩa là mọi thứ đều vô vọng.

Android là một hệ sinh thái lớn với các ứng dụng khác nhau từ các nhà sản xuất khác nhau. Mỗi người dùng cũng có các cấu hình khác nhau. Đây là nơi ADB (Android Debug Bridge) có thể là một công cụ để giúp chúng ta có được một số kết quả.

ADB (Android Debug Bridge) là một công cụ dòng lệnh cho phép bạn kết nối thiết bị Android của mình với máy tính, cho phép bạn phát triển và gỡ lỗi trên thiết bị.

Chúng ta sẽ giải thích cách thiết lập và sử dụng ADB trong các phần sau, nhưng trước tiên, hãy xem ADB có thể làm gì:

* **Cài Đặt và Gỡ Bỏ Ứng Dụng:** Cho phép bạn cài đặt hoặc gỡ bỏ các tệp gói Android (APK) trực tiếp từ một thiết bị đã kết nối.
* **Truyền Tệp:** Cho phép sao chép và truyền tệp giữa máy tính và thiết bị Android của bạn.
* **Thực Thi Lệnh Shell:** Cung cấp quyền truy cập vào dòng lệnh trên thiết bị Android của bạn, cho phép thay đổi ở cấp hệ điều hành.
* **Xem Logcat:** Giúp gỡ lỗi bằng cách cho phép bạn xem nhật ký hệ thống và ứng dụng trong thời gian thực.
* **Chụp Ảnh Màn Hình và Quay Màn Hình:** Cho phép bạn chụp ảnh màn hình hoặc quay màn hình thiết bị của bạn.

Thông thường, việc kết nối với một thiết bị Android bằng ADB yêu cầu một số bước bảo mật: Đầu tiên, thiết bị phải ở 'chế độ nhà phát triển', sau đó gỡ lỗi USB phải được bật và cuối cùng máy tính mà thiết bị được kết nối phải được ủy quyền. Tuy nhiên, để đảm bảo rằng thiết bị đáp ứng các yêu cầu này, tất cả những gì chúng ta phải làm là thử. Nếu may mắn, chúng ta có thể tìm thấy một phiên bản Android không yêu cầu xác thực thiết bị hoặc một tính năng gỡ lỗi đã được người dùng bật. Sau khi kết nối thiết bị với máy tính đã cài đặt Android Platform Tools, chúng ta có thể bắt đầu bằng lệnh bên dưới:

```
adb devices
```

<figure><img src="/files/44CAvgCKWMs52ETndkLI" alt=""><figcaption></figcaption></figure>

Thật không may, như hiển thị trong ảnh chụp màn hình, chúng ta phải đối mặt với một thiết bị yêu cầu "Xác Thực Thiết Bị" (Device Auth) ngay cả khi Chế Độ Nhà Phát Triển (Developer Mode) được bật. Trong trường hợp này, chúng ta cần mở khóa thiết bị và chấp nhận 'Xác Thực Thiết Bị' trên màn hình để tiếp tục. Chúng ta sẽ không thể tiếp tục nếu chúng ta không có thông tin để mở khóa thiết bị.

Sau khi chúng ta hoàn thành bước này, chúng ta có thể kết nối với thiết bị bằng lệnh 'adb shell' để truy cập dữ liệu trên thiết bị:

```
adb shell
```

<figure><img src="/files/fJVgiLgj99gjPgkju893" alt=""><figcaption></figcaption></figure>

Một tính năng hữu ích khác trên các thiết bị Android là MTP (Media Transfer Protocol). MTP thường được sử dụng để dễ dàng sao chép các tệp từ một thiết bị Android vào máy tính. Tính năng này hoạt động khác nhau tùy thuộc vào phiên bản Android, tùy chọn người dùng và cài đặt của nhà sản xuất. Trên một số thiết bị, bạn có thể truy cập các tệp ngay khi bạn kết nối thiết bị với máy tính qua USB, trong khi trên các thiết bị khác, bạn cần mở khóa màn hình thiết bị để cho phép truy cập. Để kiểm tra xem chúng ta có thể truy cập các tệp sau khi kết nối thiết bị qua USB với hệ thống Linux hay không, chúng ta có thể sử dụng lệnh “<mark style="color:red;">`mount | grep gvfs`</mark>” để xem thiết bị MTP có được gắn hay không:

```
mount | grep gvfs
```

<figure><img src="/files/Ab1VmxiVkqPVWaWS3gAV" alt=""><figcaption></figcaption></figure>

Thiết bị được hệ điều hành nhận dạng và gắn trong thư mục "/run/user/1000/gvfs/". Để xác nhận, hãy liệt kê thư mục này:

```bash
ls -h /run/user/1000/gvfs
```

<figure><img src="/files/gplkbyUuuXqGS73F4MBD" alt=""><figcaption></figcaption></figure>

Dooge X95, thiết bị được sử dụng trong phòng thí nghiệm này, dường như được kết nối trong thư mục “ <mark style="color:red;">`mtp=DOOGEE_X95_TE585B1ZM11097115`</mark> ”. Bây giờ chúng ta có thể truy cập các tệp:

```bash
ls -al /run/user/1000/gvfs/mtp\:host\=DOOGEE_X95_TE585B1ZM11097115/
```

<figure><img src="/files/LiYsZbEOOvM2mG7lzj7e" alt=""><figcaption></figcaption></figure>

Như bạn có thể thấy, lần này chúng ta đã may mắn và có thể truy cập hệ thống tệp mà không cần xác thực. Quyền truy cập này không hữu ích bằng quyền truy cập cấp hệ thống được cung cấp bởi ADB, nhưng nó vẫn khá có giá trị đối với pháp y số vì nó cho phép truy cập vào một lượng dữ liệu đáng kể.

Chúng tôi đã sử dụng Linux cho ví dụ ở đây, nhưng bạn thường có thể truy cập các tệp của thiết bị tương tự nếu bạn kết nối thiết bị Android với hệ thống Windows hoặc MacOS. Một chi tiết quan trọng cần lưu ý là phương pháp này kết nối bộ nhớ của thiết bị với máy tính ở chế độ đọc/ghi, điều này có khả năng dẫn đến các vấn đề về chuỗi hành trình pháp lý do các hoạt động được thực hiện bởi hệ điều hành hoặc bất kỳ ứng dụng bảo mật nào. Do đó, bạn nên định cấu hình hệ điều hành để gắn các thiết bị MTP ở chế độ RO (chỉ đọc) trước khi kết nối thiết bị pháp y số. Ví dụ: trên các hệ thống Linux, các thiết bị MTP chỉ được gắn dưới dạng RW (Đọc-Ghi) cho người dùng root và RO (Chỉ Đọc) cho những người dùng khác. Do đó, điều quan trọng là kết nối thiết bị trong một phiên người dùng bình thường và không phải là root cho mục đích pháp y số.

<figure><img src="/files/HrjSJhZunNtl0KJ917Bz" alt=""><figcaption></figcaption></figure>

Nếu các phương pháp được mô tả ở đây không mang lại kết quả, thì hành động tốt nhất sẽ là tìm kiếm sự hỗ trợ từ các công ty thương mại chuyên biệt hoặc sử dụng phần mềm được thiết kế cho mục đích này. Ví dụ: Tenorshare 4uKey cho Android có thể giúp bạn vượt qua khóa và mở khóa điện thoại của mình và nó hoạt động với các thương hiệu lớn như Samsung, LG, Motorola, Xiaomi và Google. Do tính chất của hệ sinh thái Android, với nhiều nhà sản xuất và các cơ chế bảo mật khác nhau, chúng tôi không thể đề cập đến tất cả ở đây, nhưng bạn có thể tìm thấy một tùy chọn phù hợp dựa trên phần cứng của mình.

Ngoài ra, Trình Quản Lý Thiết Bị Android của Google có thể là một tùy chọn hiệu quả để thay đổi mã khóa từ xa. Tuy nhiên, bạn sẽ cần thông tin đăng nhập cho tài khoản Gmail đã cài đặt trên thiết bị.

### 2.3. Unlocking the Android Pattern Lock

Hãy bắt đầu bằng cách lặp lại một điều mà chúng ta đã nói trước đây. Android mang lại cho các nhà sản xuất rất nhiều tính linh hoạt, vì vậy họ có thể sử dụng các biện pháp bảo mật phần mềm và phần cứng khác nhau. Không có phương pháp duy nhất cho các thiết bị Android. Chúng ta vẫn có thể thảo luận về một số phương pháp chung.

Để vượt qua khóa hình Android, hãy xóa tệp "<mark style="color:red;">`gesture.key`</mark>" qua ADB và khởi động lại thiết bị. Để thực hiện việc này, bạn cần bật chế độ nhà phát triển và bật gỡ lỗi USB. Nếu các điều kiện này được đáp ứng, chúng ta có thể xóa tệp như sau:

<figure><img src="/files/nrOMNh6kwM9ZqU3YJppz" alt=""><figcaption></figcaption></figure>

### 2.4. Andriller

Andriller là một công cụ mã nguồn mở và miễn phí được phát triển bằng Python 3 chạy trên các hệ thống Ubuntu. Nó có giao diện người dùng đồ họa và có thể vượt qua bảo mật Android bằng cách sử dụng brute force. Trong bài học tiếp theo, chúng ta sẽ xem xét cách sử dụng ứng dụng này để vượt qua khóa trên thiết bị.

<figure><img src="/files/002LcqikqGOpIOYUGnI9" alt=""><figcaption></figcaption></figure>

Bây giờ chúng ta đã truy cập thành công thiết bị, chúng ta có thể chuyển sang cách phân tích dữ liệu.

## 3. Evidentiary Data on Android

Các thiết bị Android đang ngày càng trở nên phổ biến và khi khả năng của chúng phát triển, chúng có thể đáp ứng tốt hơn nhu cầu của người dùng. Do đó, một lượng lớn dữ liệu được xử lý bởi các thiết bị này. Dữ liệu người dùng được thu thập trên thiết bị, chẳng hạn như dữ liệu vị trí, tin nhắn từ các ứng dụng nhắn tin tức thời khác nhau, ảnh, video, email, nhật ký cuộc gọi và bản ghi SMS, đang trở nên vô cùng có giá trị cho pháp y số. Hãy xem xét kỹ hơn các quy trình liên quan đến việc thu thập và xử lý dữ liệu này.

### 3.1. Identifying the Device (Xác định thiết bị)

Hệ sinh thái Android không xoay quanh phần cứng tiêu chuẩn từ một nhà sản xuất duy nhất như iPhone và iOS. Hệ điều hành Android do Google phát hành được cung cấp cho người dùng trên các tùy chọn phần cứng khác nhau do nhiều nhà sản xuất phát triển, bao gồm Samsung, Google, Huawei, LG và Sony. Sự khác biệt vượt ra ngoài phần cứng. Các sửa đổi và cải tiến do các nhà sản xuất thực hiện đối với hệ thống "Android Gốc" do Google phát hành cũng khác nhau, tạo ra một thế giới với vô số các tùy chọn khác nhau.

Tính bảo mật của dữ liệu người dùng trên thiết bị di động, một trong những lời hứa quan trọng nhất ngày nay, cũng là một lĩnh vực mà các giải pháp của nhà sản xuất khác nhau. Nói cách khác, mỗi nhà sản xuất thêm các tùy chọn bảo mật riêng của mình lên trên các tính năng bảo mật Android cơ bản do Google cung cấp, cung cấp các giải pháp tùy chỉnh cho khách hàng của họ.

Nó không dừng lại ở đó. Người dùng Android có một mạng lưới tích cực và nhiều tình nguyện viên nhiệt tình chia sẻ nhiều sửa đổi khác nhau về kích thước và cấp độ khác nhau trực tuyến để những người dùng khác có thể hưởng lợi từ chúng. Các thành phần như ROM khác nhau từ ROM được phân phối của nhà sản xuất và các bootloader khác nhau được sử dụng rộng rãi.

Mặc dù những khác biệt này có thể không dễ nhận thấy từ góc độ người dùng cuối, nhưng chúng thường trở nên khá khó hiểu khi nói đến pháp y số.

Do đó, khi thực hiện pháp y số trên một thiết bị Android, bước đầu tiên là xác định các đặc điểm của phần cứng và phần mềm hiện có. Các thông tin sau đây là cần thiết để bắt đầu:

* Mẫu Thiết Bị
* Số Sê-ri
* Số IMEI
* Phiên Bản Hệ Điều Hành
* Mức Bản Vá Bảo Mật
* Thiết Bị Đã Root hay Chưa
* Hồ Sơ Người Dùng
* Trạng Thái Khóa Thiết Bị

Sau khi chúng ta đã thu thập thông tin về thiết bị, chúng ta có thể chuyển sang giai đoạn phân tích dữ liệu.

Bước đầu tiên trong cuộc điều tra pháp y số là chụp ảnh hệ thống và xử lý hình ảnh đó để duy trì tính toàn vẹn của chuỗi bằng chứng.

### 3.2. Physical Imaging

Cách đáng tin cậy nhất để tạo ảnh pháp y số của thiết bị Android là tạo ảnh vật lý. Ảnh vật lý là một bản sao bit-for-bit của các khu vực bộ nhớ của thiết bị và chứa tất cả dữ liệu trên thiết bị. Loại ảnh này là nguồn dữ liệu đáng tin cậy và toàn diện nhất cho các cuộc điều tra pháp y. Tuy nhiên, có hai phương pháp khác nhau để tạo ra một hình ảnh như vậy, mỗi phương pháp có những thách thức và rủi ro riêng:

* Phương pháp đầu tiên liên quan đến việc truy cập hệ thống trong môi trường phòng thí nghiệm bằng phần cứng chuyên dụng để sao chép các chip nhớ. Phương pháp này đòi hỏi chuyên môn và thiết bị nâng cao và có nguy cơ gây ra thiệt hại không thể khắc phục cho thiết bị đang được kiểm tra.
* Phương pháp thứ hai liên quan đến việc truy cập thiết bị bằng **`ADB`**, như được mô tả trong phần trước, và sau đó cài đặt các gói hoặc tập hợp các gói cho phép chúng ta hoạt động như người dùng 'root'. Phương pháp này liên quan đến việc sao chép các tệp và ghi dữ liệu vào thiết bị, gây ra rủi ro cho chuỗi bằng chứng. Tuy nhiên, nó là một phương pháp đơn giản hơn và nhanh hơn so với phương pháp đầu tiên.

### 3.3. Logical Imaging

Tùy chọn thứ hai là tạo ảnh logic nếu không thể có được ảnh vật lý. Tạo ảnh logic liên quan đến việc kết nối thiết bị với máy tính và sao chép các tệp từ hệ thống tệp. Mặc dù phương pháp này tương đối đơn giản hơn, nhưng nó cung cấp quyền truy cập hạn chế vào các hệ thống tệp (chúng ta không thể truy cập các khu vực hệ thống) và chỉ cho phép chúng ta làm việc với dữ liệu không gian người dùng. Một cách để truy cập các tệp là sử dụng MTP, như được mô tả trong các phần trước. Dưới đây là ảnh chụp màn hình của một thiết bị được truy cập theo cách này.

<figure><img src="/files/tNAJ5hiHhDlg49JsSYFk" alt=""><figcaption></figcaption></figure>

Một cách khác là sao chép các tệp và thư mục cụ thể bằng lệnh adb. Như hiển thị trong ảnh chụp màn hình bên dưới, trước tiên chúng ta tạo một thư mục mà chúng ta sẽ sao chép dữ liệu từ thiết bị vào đó. Sử dụng lệnh "<mark style="color:red;">`adb pull`</mark>", chúng ta sao chép các tệp từ thư mục "<mark style="color:red;">`/storage`</mark>" trên thiết bị vào thư mục mới được tạo. Lệnh "<mark style="color:red;">`adb pull`</mark>" sao chép đệ quy dữ liệu vào thư mục đích mà không yêu cầu bất kỳ tham số bổ sung nào.

<figure><img src="/files/eVNDdoGewwFDJiLVLEFe" alt=""><figcaption></figcaption></figure>

## 4. Android Forensics Tools

Thay vì tiến hành các quy trình pháp y Android theo cách thủ công, bạn cũng có thể sử dụng phần mềm được thiết kế đặc biệt cho mục đích này. Nhiều công cụ trong số này là thương mại và yêu cầu thanh toán. Các ví dụ về phần mềm như vậy bao gồm X-Ways Forensics, Mobiledit, MSAB và Magnet. Mặc dù mỗi sản phẩm này có các tính năng khác nhau, nhưng chúng thường đi kèm với các bộ công cụ tạo điều kiện thuận lợi cho việc "tạo ảnh" và "phân tích".

Để phù hợp với truyền thống của chúng tôi, chúng tôi sẽ tiếp tục thảo luận về các giải pháp mã nguồn mở trong các khóa học của chúng tôi. Các giải pháp này có sẵn miễn phí cho mọi người.

### 4.1. Andriller

Công cụ đầu tiên là "**`Andriller`**", công cụ này đã được đề cập trong phần trước.

**`Andriller`** là một công cụ dựa trên Python3 với giao diện người dùng đồ họa, có sẵn miễn phí trong phiên bản cộng đồng và chạy trên các hệ thống Ubuntu.

Để cài đặt Andriller:

* Trước tiên, bạn cần cài đặt gói "<mark style="color:red;">`adb`</mark>", mà Andriller sử dụng để giao tiếp với các thiết bị Android, và gói "<mark style="color:red;">`python3-tk`</mark>", cần thiết cho giao diện đồ họa của Andriller:

```bash
sudo apt-get install android-tools-adb python3-tk
```

* Sau đó, tải xuống kho lưu trữ Andriller từ GitHub:

```bash
git clone https://github.com/den4uk/andriller.git
```

* Tiếp theo, điều hướng đến thư mục kho lưu trữ đã tải xuống và sử dụng lệnh "pip" để cài đặt các thư viện Python cần thiết:

```bash
cd andriller
```

```bash
pip3 install -r requirements.txt
```

* Sau các bước này, bạn có thể chạy công cụ Andriller:

```bash
python3 -m andriller
```

Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy một giao diện như hình bên dưới:

<figure><img src="/files/AQzXj5vesvclOfBbptB8" alt=""><figcaption></figcaption></figure>

Điều đầu tiên bạn cần làm là chọn thư mục nơi Andriller sẽ lưu trữ dữ liệu được thu thập. Nhấp vào nút '**`Output`**' trong phần '**`Global Output Location`**' và chọn một thư mục.

Sau khi kết nối thiết bị của bạn với máy tính, hãy nhấp vào nút '**`Check`**' trong phần '**`Extraction (USB)`**'. Nếu Andriller kết nối thành công với thiết bị, số sê-ri của thiết bị đã kết nối sẽ xuất hiện bên cạnh nút dưới dạng "<mark style="color:red;">`Serial ID`</mark>", cho biết rằng mọi thứ đang tiến hành chính xác:

<figure><img src="/files/91V82A2cQbL6BNEeKq3F" alt=""><figcaption></figcaption></figure>

Bây giờ bạn có thể bắt đầu quá trình trích xuất dữ liệu bằng cách nhấp vào nút '**`Extract`**'. Andriller sẽ cố gắng truy xuất các tệp bằng phương pháp '**`Device Backup`**' và sẽ yêu cầu bạn cho phép thiết bị thực hiện sao lưu. Ở giai đoạn này, bạn sẽ cần truy cập thiết bị và ủy quyền.

<figure><img src="/files/o97JnwR06DJVRW1CL61Y" alt=""><figcaption></figcaption></figure>

Bạn sẽ thấy đầu ra tương tự như sau trong khu vực thông tin của màn hình khi quá trình sao chép hoàn tất:

<figure><img src="/files/bq7n9Q9m603nrPoub3DU" alt=""><figcaption></figcaption></figure>

Khi quá trình hoàn tất, bạn sẽ thấy một thư mục có tên "<mark style="color:red;">`DEVICESERIAL_BACKUPDATE`</mark>" trong thư mục "**`Output`**" ban đầu mà chúng ta đã xác định:

<figure><img src="/files/OfvgypySJijyE5jsVkGJ" alt=""><figcaption></figcaption></figure>

Trong thư mục này, bạn sẽ tìm thấy một bản tóm tắt HTML về hoạt động trong tệp "<mark style="color:red;">`REPORT.html`</mark>", danh sách các tệp đã xuất trong tệp "<mark style="background-color:green;">`REPORT.xlsx`</mark>" và thư mục "**`data`**" chứa thông tin về các ứng dụng trên thiết bị Android.

<figure><img src="/files/COIHh8brVtMuwfv99VMZ" alt=""><figcaption></figcaption></figure>

Trong bước tiếp theo, bạn có thể sử dụng các trường '**`Parse (TAR)`**' và '**`Parse (AB)`**' trong Andriller để trích xuất các tệp '<mark style="color:red;">`DataStore.tar`</mark>' và '<mark style="color:red;">`Backup.ab`</mark>' từ hình ảnh thu được. Các thư mục này cũng sẽ được tạo trong thư mục '**`Output`**':

<figure><img src="/files/ZjfVeeUOAy85tB81EbMp" alt=""><figcaption></figcaption></figure>

Trong các thư mục này, bạn có thể lấy các tệp cơ sở dữ liệu quan trọng cho Pháp Y Số, chẳng hạn như:

<table><thead><tr><th width="165">Tên Tệp</th><th>Đường Dẫn</th><th>Nội Dung</th></tr></thead><tbody><tr><td>contacts.db</td><td>/data/data/com.android.providers.contacts/databases/contacts.db</td><td>Danh sách liên hệ, số điện thoại, địa chỉ email và thông tin liên hệ khác</td></tr><tr><td>sms.db</td><td>/data/data/com.android.providers.sms/databases/sms.db</td><td>Tin nhắn văn bản đã gửi và nhận</td></tr><tr><td>calls.db</td><td>/data/data/com.android.providers.contacts/call_log/databases/calls.db</td><td>Nhật ký cuộc gọi, thời lượng cuộc gọi, số điện thoại và các chi tiết khác</td></tr><tr><td>calendar.db</td><td>/data/data/com.android.calendar/databases/calendar.db</td><td>Các sự kiện lịch, ghi chú và cuộc hẹn</td></tr><tr><td>mmssms.db</td><td>/data/data/com.android.providers.mms/databases/mmssms.db</td><td>Tin nhắn đa phương tiện (ảnh, video, tin nhắn thoại)</td></tr></tbody></table>

Ngoài những điều này, bạn cũng có thể tìm thấy dữ liệu liên quan trong các thư mục của các ứng dụng đã cài đặt trong thư mục “<mark style="color:red;">`/data`</mark>”.

### 4.2. Androidqf

Một ứng dụng khác mà chúng ta có thể sử dụng cho pháp y Android là "**`Androidqf`**." Được đặt tên theo Android Quick Forensic, ứng dụng này không cung cấp nhiều chi tiết như các công cụ khác, nhưng nó nhằm mục đích nhanh chóng cung cấp dữ liệu thiết yếu cần thiết cho một hoạt động pháp y số.

Để cài đặt **`Androidqf`**, hãy sao chép kho lưu trữ từ GitHub:

```bash
git clone https://github.com/botherder/androidqf.git
```

Sau khi tải xuống kho lưu trữ, hãy điều hướng đến thư mục "<mark style="color:red;">`build`</mark>" của ứng dụng dựa trên ngôn ngữ GO này và chạy nó:

```bash
cd androidqf/build
```

```bash
androidqf_linux_amd64
```

<figure><img src="/files/yJQpBIuGRVkCgICGmRXW" alt=""><figcaption></figcaption></figure>

Khi bạn chạy ứng dụng, nó sẽ tự động kết nối với thiết bị được kết nối với máy tính và bắt đầu thu thập thông tin về nó. Thông tin được thu thập được ghi vào một thư mục có cùng tên với "**`acquisition id`**" được chỉ định trong phần "**`Starting a new acquisition`**".

Sau đó, bạn sẽ được hỏi liệu bạn có muốn sao lưu hệ thống trước khi tiếp tục hay không. Bạn có thể chọn bằng cách sử dụng các phím mũi tên lên/xuống và tiếp tục bằng cách nhấp vào **`Enter`**.

Chúng tôi đã chọn '**`No backup`**' và Androidqf bắt đầu thu thập nhật ký hệ thống, sau đó là thông tin về các ứng dụng đã cài đặt trên thiết bị và cuối cùng hỏi liệu chúng ta có muốn bản sao của các ứng dụng được tìm thấy hay không.

<figure><img src="/files/GyAtO1Qy1u5xs4eZwK3G" alt=""><figcaption></figcaption></figure>

Vì chúng tôi đã chọn '**`Do not download`**', nên nó đã hoàn thành quy trình ở giai đoạn tiếp theo.

Nội dung của thư mục mà nó đã tạo cho chúng ta như sau:

<figure><img src="/files/CCl67AIjnRB3TDcOamaG" alt=""><figcaption></figcaption></figure>

Trong thư mục này:

* Tệp "<mark style="color:red;">`dumpsys.txt`</mark>" chứa đầu ra của lệnh "<mark style="color:red;">`adb shell dumpsys`</mark>". Tệp này chứa thông tin về các hoạt động đang hoạt động và đã qua, các cửa sổ hiện tại và trạng thái của chúng, trạng thái và lịch sử pin và mức sử dụng bộ nhớ (meminfo).
* Tệp '<mark style="color:red;">`getprop.txt`</mark>' chứa đầu ra của lệnh '<mark style="color:red;">`adb shell getprop`</mark>', cung cấp thông tin chi tiết từ số sê-ri và kiểu máy của thiết bị đến cấu hình phần cứng hiện tại của nó.
* Tệp '<mark style="color:red;">`logcat.txt`</mark>' chứa đầu ra của lệnh '<mark style="color:red;">`adb shell logcat`</mark>', cung cấp các bản ghi nhật ký hệ thống.
* Tệp “<mark style="color:red;">`packages.json`</mark>” liệt kê các APK đã cài đặt trên hệ thống và chi tiết của chúng.
* Tệp “<mark style="color:red;">`processes.txt`</mark>” liệt kê các quy trình đang chạy trên hệ thống và chi tiết của chúng:
* Các tệp “<mark style="color:red;">`Settings_`</mark>” chứa các kết xuất cơ sở dữ liệu liên quan đến cài đặt hệ thống.

<figure><img src="/files/hSQ0279euzXY7TOtg38s" alt=""><figcaption></figcaption></figure>

**Kết luận:**

Pháp y số trên các hệ thống Android là một quá trình phức tạp cần được tiếp cận một cách cẩn thận. Để đạt được kết quả chính xác, điều quan trọng là ban đầu phải xác định phần mềm và phần cứng mà chúng ta đang xử lý và làm việc với các công cụ thích hợp trong khi duy trì hồ sơ và sao lưu ở mọi giai đoạn để ngăn ngừa mất dữ liệu và bảo toàn tính toàn vẹn của chuỗi bằng chứng.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://viettaliii.gitbook.io/home/soc-and-dfir/dfir/android-forensics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
