HarmonyOS取证初探

共 3886字,需浏览 8分钟

 ·

2021-05-13 06:32

关于HarmonyOS(鸿蒙),相信大家在之前的各类新闻报道上都有所了解。从取证角度,现阶段HarmonyOS的取证,我们可以从哪些方面入手,又有哪些新的挑战呢? 

小编在此之前很早就申请了HarmonyOS 开发者Beta公测,在五一期间,终于收到了版本推送。目前的最新版本是2.0.0 Developer Beta2(2.0.0.53),下文也以此系统版本为准。 

2c9e1f76f6473ffb7c757931fc6b6bc6.webp

HarmonyOS介绍(By 官文)

HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备。

  • 对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。

  • 对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。

  • 对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。

HarmonyOS提供了支持多种开发语言的API,供开发者进行应用开发。支持的开发语言包括Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。

HarmonyOS手机取证

USB调试如何打开

与正常Android手机操作无异,关于手机-点击版本号6次-输入锁屏密码,即可打开开发者选项。

8be87356f5520bf3d9763ecdf603bb0b.webp     1d57e39f92333ba96f7a501a15ad0f57.webp

手机数据提取&分析

使用数据线连接手机后,可以看到雷电手机快取已经能够识别到这个设备,并检测操作系统为HarmonyOS,尝试使用高级备份进行应用数据的提取。

40223dfa0aac6afe7ee01e8e68080438.webp高级备份任务可以正常的运行,取证代理应用都可以正常的安装,并且应用数据可以正常提取分析。

3a6c7e7c7b7b37ccb00fd0b9924b3894.webp

看到这里,相信您会觉得Harmony取证跟Android也没什么区别。

Harmony应用提取难点

5b4d185c7aa539b6b70fbbbf4ca0936d.webp

其实在上个版本更新中,系统推送了三个Harmony应用(优酷、新浪新闻和央视影音鸿蒙版),对比Android版本,Harmony应用体积小了很多,目前功能相比Android版本也简陋不少。d5a31243fe52b605b974f705c98fadc1.webp

如下图所示,左侧为Android版本,右侧为Harmony版本。  

6b76655f2f211e9097546e0376bb8797.webp

但是这部分遵循Harmony开发的应用,我们通过现有的取证方式,没有办法获取到他们的应用数据。也是后续主要需要关注和探索的方向。

9af641894910323ba49d6b283c8caf33.webp

Harmony与Android应用区别

应用安装包导出

首先要对比两者的区别,需要先把Harmony的三个应用安装包进行导出,常规的Android应用我们可能最常用的就是使用ADB命令

adb shell pm list packageadb shell pm path com.TestApp   //com.TestApp是想要导出的包名adb pull /system/priv-app/DeviceTest/DeviceTest.apk C:\Users\Administrator\Desktop\// App在手机中的存放路径: /system/priv-app/TestApp/TestApp.apk  // App导出的目标Apk在PC端的存放路径  C:\Users\Administrator\Desktop\

或者可以通过雷电手机快取中的导出安装包功能,快速导出(只需要知道应用名称,不需要知道应用包名)。

a229128455a1c2b011c52f6bd53f6056.webp

但是在Harmony系统上这两种方式都没有成功,最后尝试使用一个APK提取器的小工具,成功得到了三个应用安装包。

e03b1222fe83606bc80d22147bad78d7.webp
Harmony安装包

如上图所示,我得到的是一个apk文件,尝试着安装到别的Android手机上后,应用会闪退。

通过对Harmony应用开发的了解,原因可能如下:   

HarmonyOS的开发工具叫做DevEco Studio,和Android Studio一样,也是基于IDEA。

安装DevEco Studio后,可以尝试创建一个手机示例应用,下载依赖,编译完成后,可以得到一个hap文件,这个文件其实就对应了Android系统中的apk文件。


57b25b98f5bb1686e90d723c246f67f7.webp

解压hap后,可以发现除了常规的文件外,Android的manifest文件变成了config.json,另外hap中还存在一个apk文件。

7f297768336299762bcd1569c235bb3f.webp

解压apk后,可以发现这是一个标准的apk,但是单独安装到Android手机上后,也出现了闪退的情况。

477a009e4127d21f7fd0ba00dae81e5b.webp

使用ADB查看日志后可以发现

05-11 15:22:53.334  7450  7450 E AndroidRuntime:        Caused by: java.lang.ClassNotFoundException: Didn't find class "ohos.abilityshell.HarmonyApplication" on path: DexPathList[[zip file "/data/app/com.example.HMDemo-THrK3d5xftGaJlBnx92w_A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.hello_hm-THrK3d5xftGaJlBnx92w_A==/lib/arm64, /system/lib64, /product/lib64]]05-11 15:22:53.334  7450  7450 E AndroidRuntime:                at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:230)05-11 15:22:53.334  7450  7450 E AndroidRuntime:                at java.lang.ClassLoader.loadClass(ClassLoader.java:379)05-11 15:22:53.334  7450  7450 E AndroidRuntime:                at java.lang.ClassLoader.loadClass(ClassLoader.java:312)05-11 15:22:53.334  7450  7450 E AndroidRuntime:                ... 16 more

Didn't find class,这个apk应该是因为调用了Harmony的新增的framework,所以在Android系统上无法运行。

猜测可能目前阶段,Harmony为了兼容Android的应用生态,做的一个妥协,后续等完全脱离Android,就不需要这个apk文件了。

.app、hap和apk的区别

99b6884940d946318e647ebae6daf2b0.webp

.app文件:HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature两种类型。

hap:hap是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开,它是由一个或多个Ability组成。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。

简单理解下来,Ability就是组件,FA对应安卓的Activity,PA对应安卓Service。Ability加上资源文件打包起来就是hap,对应安卓的apk。

使用jadx查看,可以看到央视影音鸿蒙版Ability的用法

f5be064ffb45ff53282ad69ef891676b.webp

Harmony项目

Harmony项目虽然跟Android很类似,但是项目的布局文件和源码,UI部分代码需要完全重写,不可能兼容Android的Layout和控件。大部分的API都太不一样。如果一个应用不是以Android兼容模式运行,现成的应用要想移植到Harmony,工作量还是很大的,基本上等于要重写。

所以想要期待目前主流应用后续能够很快迁移到Harmony,减少应用的存储、内存占用,路程还比较艰辛。

总结和展望

f53f7aa6227bdaad2f4706046f03bd69.webp

目前阶段,相信大部分应用在Harmony上还将会是Android兼容模式运行,通过现有取证方式,都是可以很好的进行支持。

难点在Harmony应用的提取和分析,如果后续主流应用推出鸿蒙版,对于手机取证会是一个新的挑战,以及后续HarmonyOS带来的物联网、车辆网设备的取证和分析。

不过Harmony手机应用的迁移成本比较高,主流手机应用厂商是否愿意加入Harmony这个新的生态还要拭目以待。


浏览 233
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报