Android Phone Forensic Analysis – Unleash Hidden Evidence

2024-02-28 10:20

本文主要是介绍Android Phone Forensic Analysis – Unleash Hidden Evidence,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载地址:http://www.dataforensics.org/android-phone-forensics-analysis/

ANDROID FILE SYSTEMS

There is no singularly defined file system for Android. Android is developed on Linux kernel and Linux supports many file systems. Each file system are the implementation of VFS (Virtual File System). VFS is the abstract layer of Kernel through which an application’s file and directory operations flows. Each of the file system has separate Kernel module that supports operations. Hence adding a new file system means adding a new kernel module. This implies that Kernel configuration file defines which all file systems should be compiled and hence files systems that are supported by Android varies with devices.
The Android File Systems that are supported by Android Phones can be classified as flash memory file systems and media based file systems. Let’s proceed with Android Phone Forensics:

FLASH MEMORY ANDROID FILE SYSTEMS:

  1. YAFFS2 (Yet Another Flash File System V2)
    It was the default AOSP (Android Open Source Project) flash file system for kernel version 2.6.32. This file system is not supported in the newer kernel versions. But mobile vendors continues support for this file system.
  2. JFFS2 (The Journal Flash File System V2)
    Since Ice Cream Sandwich it is the default flash file system for the AOSP kernels.
  3. F2FS (Flash-Friendly File System)
    An Open Source file Linux system introduced by Samsung
  4. exFAT (extended File Allocation Table)
    It’s the proprietary file system of Microsoft for flash memories. It is not a part of standard Linux Kernel due to licensing requirements.

MEDIA-BASED ANDROID FILE SYSTEMS:

  1. EXT2 / EXT3 / EXT4 (Extended File System)
    It is the standard Linux File system. It is often used as internal memory file system instead of YAFFS2 & JFFS2.
  2. MSDOS
    The FAT12, FAT16 & FAT32 file systems
  3. VFAT
    It is not actually a file system, which are extensions to FAT12, FAT16 & FAT32

ROOTING ANDROID DEVICE

Rooting is the process of attain privileged control of an android devices. It gives yourself the root permission on your device. Rooting Android device helps to overcome the limitations of the devices put by the manufacturers. With a rooted phone we can run apps that require certain system access, flash custom ROMs which adds more features. Rooting can be done through command prompt development interface ADB or using special rooting applications. We can’t access the system files and database files of an un-rooted device as they are encrypted. So analysis of Android systems files are possible only if the device is rooted.

ANDROID FILE SYSTEM STRUCTURE: PARTITIONS

Android uses more than one file system and multiple partitions to organize files and folders in the device. In the file system partitions are represented by directories. There are mainly six partitions used by android devices. They are boot, system, recovery, data, cache, misc. Each of these partitions has its own functionalities. There may be other partitions which differ in each model such as sdcard, sd-ext.

android phone forensics

android mobile forensics
We can check which all partitions are available in a device along with its total, used and free size using adb command in the below image.

android phone forensics analysis

  1. /boot
    It is the boot partition of the android device which includes the android kernel and ramdisk. The device cannot boot without this partition. If we wipe this partition we need to install new ROM which includes /boot partition to boot the system again.
  2. /system
    This partition contain the entire OS including Android GUI and pre-installed system applications. We can enter the recovery or boot loader mode even if we wipe this partition.
  3. /recovery
    This partition is specially designed for backup purpose. It is considered as an alternative boot partition that lets the device to boot in a recovery console.
  4. /data
    This partition is to store user data. It contain all the user data like sms, contacts, settings and all data related to installed applications. When you are doing a factory reset, it actually wipe out data partition.
  5. /cache
    Cache partition stores frequently accessed application and data components. Even if we wipe this partition, it gets automatically rebuilt as you continue using the device.
  6. /misc
    This partition contains miscellaneous system settings. It includes hard ware settings, USB configuration etc. If we wipe this partition, device’s features will not function normally.
  7. /sdcard
    This partition is for the SD card, not for the internal memory. It is used to store any type of data such as media, documents, ROM etc. The SD card can be internal or external SD card depending on the device.
  8. /sd-ext
    This partition is commonly used by custom ROMs and not a standard Android partition. It is an additional partition on SD card that act as data partition in some custom ROMs that have the features like app2sd to get additional storage for installing their apps.
ANDROID LOGS : File Location & Related Artifact Forensic Analysis

The default location of Android log file can be find at /dev/log. We can see the logs if we execute logcat command from terminal inside Android. The logcat command executed using ADB.exe and dumped into text file are shown below. The command to export logs into PC using adb.exe:

adb logcat -v time > E:\log.txt

analysis android mobile forensics

ANDROID COMMON APPLICATION ANALYSIS

Few of most commonly using android applications selected here for analysis are:

  1. Google Chrome
  2. Whatsapp
  3. Android Contacts
  4. Telephony
  5. Bluetooth
  6. WiFi

GOOGLE CHROME

Location: \data\com.android.chrome\app_chrome\Default


DB FILE: COOKIES

  1. Table: cookies – Contains cookiesandroid phone forensics

DB FILE: HISTORY

  1. Table: keyword_search_terms – Contains keyword searched
    android file system
  2. Table: urls – Contains URLs of visited pages
    android file structure

DB FILE: TOP SITES

  1. Table: thumbnails – Contains URLs of websites which are directly entered in tab
    WHATSAPP
    Location: \data\com.whatsapp\databases

DB FILE: AXOLOTL.DB

  1. Table: identities – Contains the contacts (phone number) to which the chat is done
    rooting android phone

DB FILE: MSGSTORE.DB

  1. Table: messages – Contains all messages (both group and individual)
    • The status column indicates message status values (applicable if there atleast single contact in a group satisfies these):
      1. 0 – received message
      2. 13 – sent message seen (blue tick)
      3. 5 – sent message unseen (double tick but not blue tick)
      4. 4 – sent message to Whatsapp server, but not received in recipient Whatsapp app(single tick)
      5. 6 – sent/received calls (key_from_me column specifies whether sent or received call)
    • key_from_me column has values 0 or 1:
      • Value 0 – Not from me (contact’s)
      • Value 1- From me (WhatsApp current user)
    • recipient_count column has 2 kind of values : value 0 for individual chats or shows group member count if it is message in a group
    • read_device_timestamp is empty if message is not seen by everyone in a group
    • media_name column contains name of the media storing in Whatsapp folder, which are sent
    • media_name column contains caption of the media we provided during sending
    • media_url gives location of the media in WhatsApp server
      android log file location
  2. Table: chat_list – Contains all contacts (subject column is empty) and groups (has value in subject column) where chat has been done (both sent & receive).
    • Group has column creation showing creation date
    • message_table_id column field values maps to docid column values in the messages_fts_content table (contains all messages), which says last message (sent/received).
      android phone forensicsandroid phone forensics analysis
  3. Table: group_participants – Contains participants in the group
    • gjid colum contains group id
    • jid column contains group participants id (creator does not has this field)
    • admin colum has values 0 or 1:
      • Value 0 – user
      • Value 1 – admin
        android file structure

DB FILE: WA.DB

  1. Table: wa_contacts – Contains contact’s name display name, phone number and their status
    android phone forensics
    Whatsapp stores profile picture in the location \data\com.whatsapp\files\Avatars with extension [.j]. These can be renamed with extension [.jpg], the images will appear. The files are identified by name which are phone numbers.
    android file system & structure

CONTACTS
Location: data\com.android.providers.contacts\databases


DB FILE: CONTACTS2.DB

  1. Table: data – Contains phone number and name
  2. Table: sync_state – Contains which all accounts has been synced with phone
    DB FILE: CONTACTS2.DB
  3. Table: calls – Contain full call log details.
    calls

    • The column ‘duration’ stores the duration of the call in seconds.
    • ‘type’ column:
      • 1 for incoming call
      • 2 for outgoing call
      • 2 with ‘duration’=0 for outgoing missed call.
      • 3 for incoming missed call
  4. Table: contacts – Contain contact details in the phone and SIM
    Table contacts

    • times_contacted indicate how many times contacted to that number and last_time_contacted is the time stamp of recent contact.
    • has_phone_number field will be 1 if the phone number is provided while saving the contact and else it will be 0.
    • photo_file_id value indicate which photo is given to the contact. The photo with that file name can be obtained from com.android.providers.contacts\files\photos.
    • The photo file details can be found in table photo_files.
      rooting android phone
      img19
    • custom_ringtone indicate the URI of the ringtone for a contact if assigned.
      img20
    • indicate_phone_or_sim_contact column will be -1 if the contact is saved in phone memory and will be 1 if it is saved in SIM memory.
      img21
  5. Table: raw_contacts – Contains a person’s data coming from a single account type and account name.
    1. The column deleted will be 0 for non-deleted contacts and 1 for deleted contacts.
      android mobile forensics
      TELEPHONY
      Location: data\com.android.providers.telephony\databases

DB FILE: TELEPHONY.DB

  1. Table: siminfo – Contains sims which have been inserted

DB FILE: MMSSMS.DB

  1. Table: siminfo – Contains service provider, messages, phone numbers and roaming status
  2. Table: accounts – Contains which all accounts are created – Lcal phone acc., SIM acc., Google, Whatsapp, Viber etc
    android mobile forensics
  3. Table: canonical_addresses – Contains all numbers through which SMS contact took place
    android phone forensics
  4. Table: sms – Contains phone number, size timestamp, message body, service center etc.
    img25

BLUETOOTH

Location: data\com.android.bluetooth\databases


DB FILE: SHARE.DB

  1. Table: btopp – Contains information about Bluetooth transfer
    • Column uri shows the URI of the transferred files
    • Column hint shows the name of the file transferred
    • Column _data shows the location of the received file stored
    • Column direction says whether the file is sent/received and it has 2 values – 0 and 1:
      • Value 0 – Sent
      • Value 1 – Received
    • Column destination shows MAC address of Bluetooth device connected
      android phone forensics

WIFI

Location: \data\misc\bluetooth


FILE NAME: DYNAMIC_AUTO_PAIRING.CONF

The dynamic_auto_pairing.conf file contains basic information about the phone and required details about the WiFi networks which are connected. WiFi details includes:

1. SSID name
2. PSK in plain text
3. Connection/ encryption type
4. Connection priority

这篇关于Android Phone Forensic Analysis – Unleash Hidden Evidence的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755209

相关文章

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

android 免费短信验证功能

没有太复杂的使用的话,功能实现比较简单粗暴。 在www.mob.com网站中可以申请使用免费短信验证功能。 步骤: 1.注册登录。 2.选择“短信验证码SDK” 3.下载对应的sdk包,我这是选studio的。 4.从头像那进入后台并创建短信验证应用,获取到key跟secret 5.根据技术文档操作(initSDK方法写在setContentView上面) 6.关键:在有用到的Mo

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c

android 带与不带logo的二维码生成

该代码基于ZXing项目,这个网上能下载得到。 定义的控件以及属性: public static final int SCAN_CODE = 1;private ImageView iv;private EditText et;private Button qr_btn,add_logo;private Bitmap logo,bitmap,bmp; //logo图标private st

Android多线程下载见解

通过for循环开启N个线程,这是多线程,但每次循环都new一个线程肯定很耗内存的。那可以改用线程池来。 就以我个人对多线程下载的理解是开启一个线程后: 1.通过HttpUrlConnection对象获取要下载文件的总长度 2.通过RandomAccessFile流对象在本地创建一个跟远程文件长度一样大小的空文件。 3.通过文件总长度/线程个数=得到每个线程大概要下载的量(线程块大小)。

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

高仿精仿愤怒的小鸟android版游戏源码

这是一款很完美的高仿精仿愤怒的小鸟android版游戏源码,大家可以研究一下吧、 为了报复偷走鸟蛋的肥猪们,鸟儿以自己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。 源码下载

Android SurfaceFlinger——图形内存分配器(十一)

前面的文章中的图层合成器(HWC),这里我们接着看一下 SurfaceFlinger 中的另一个重要服务——图形内存分配器。 一、简介         android.hardware.graphics.allocator@2.0 是 Android 系统中硬件抽象层(HAL)的一个组件,专门用于图形内存的分配和管理。它是 SurfaceFlinger 在处理图形数据时所依赖的

设置android返回键,保存和取得最高分

1.在.h中声明一些方法 virtual void keyBackClicked();           //Android返回键 bool isHaveSaveFile(); void getHighestHistoryScore(); 在.cpp中实现这个几个方法 void WelcomeLayer::keyBackClicked(