文摘
如今,Android恶意软件使用敏感的api来操纵一个Android设备资源的频繁。传统的恶意软件分析使用数据线传输技术来检测这种有害的行为。然而,这种方法正面临着很多问题,如低覆盖率和计算开销。为了解决这个问题,我们提出了HALWatcher,另一种技术来监控资源操作在Android开源项目(AOSP)。通过修改硬件抽象层(HAL)资源访问接口及其实现,我们可以嵌入更多监视功能在关键方法,负责硬件驱动程序和框架之间的数据传输层。因此,HALWatcher提供了一个轻量级和高覆盖率操纵系统能够进行资源监测为Android操作系统。在这篇文章中,我们证明了连接技术是有限的检测资源操作的攻击。除此之外,HALWatcher显示了一个超越检出率低的计算工作。
1。介绍
近年来许多研究已经发表在Android设备上的恶意代码1- - - - - -5]。他们已经投入了巨大的努力来生成有效的抵御Android恶意软件架构(6]。一般来说,检测解决方案有两个主要部分:恶意软件分析和检测算法。分析部分主要可以通过两种方法:静态和动态的方法。最后,这部分提供了一组模式或特征的检测算法。
静态和动态方法试图找出恶意软件的恶意行为。资源操作是最流行的一种有害的攻击。通过不同的技术,恶意程序操纵用户的设备资源,例如,相机,手机,和短信,窃取敏感信息或发送消息收费号码无需用户意识(7]。特权升级攻击更加危险。他们可以接管设备资源,不需要用户交互。这是一个伟大的需要设计资源的探测模型操纵的攻击。
现有的分析技术可以应用于解决这个问题。典型的静态分析的方法之一是建立一个flowgraph基于关键API调用。在此基础上,我们可以推断出什么资源恶意应用程序操纵。然而,Android恶意样本已使用各种逃税混淆或加密技术。这难度大大降低检测精度。动态行为分析似乎是一个不错的补充方案。这种方法使用连接工具,如xPosed,弗里达,等等,来监控和跟踪恶意软件的行为。有许多敏感的api相关的控制设备的资源。连接到所有这些api可能会导致计算开销问题由于移动设备的有限的计算资源。因此,恶意程序通常是分析操作时坠毁。 Moreover, hooking tools are detectable due to its direct interference with the process’s memory.
为了解决连接技术的限制,我们的设计HALWatcher的一般方法监测Android硬件资源内部硬件抽象层(HAL)。想法是哈尔提供Android框架层之间的通信接口,负责处理请求的资源从应用程序或进程,在内核层和硬件驱动程序。通过修改哈尔接口和实现代码,我们可以跟踪所有的操纵硬件资源没有任何知识要求各厂商的硬件驱动程序。此外,HALWatcher不需要root权限,因为它已经是做安卓系统的一部分。此外,检测HALWatcher的系统几乎是不可能的,因为不同的方法修改哈尔在这样大量的开发人员。尽管灵活性不高,我们的方法可以大大减少数据收集从动态分析工作,同时也为Android设备的保护提供足够的信息服务对糟糕的演员。
HALWatcher开发各种应用程序体系结构可以应用于研究和工业领域。它是一个有用的技术来追踪恶意软件的行为,然后构建一个完整的数据集进行动态分析是可以实现的。此外,这项技术适用于所有的Android移动设备硬件,因为它只会干扰硬件抽象层。因此,开发一个硬件资源实际的Android设备上操作系统是简单的。此外,根特权是不必要的HALWatcher,其他连接框架的强烈依赖。
总之,本文有以下贡献。我们证明了连接技术可能不是有用的检测资源操作的攻击。我们提出HALWatcher,一个有效的和轻量级方法检测资源操作的攻击。通过修改哈尔,这个模块运行安卓系统,几乎检测不到。
本文的其余部分组织如下:哈尔的背景和资源操作监控是在第二部分中引入的。在第三节中,我们将讨论如何检测资源操作的攻击。在那之后,我们的礼物HALWatcher,一个基于HAL的资源监控系统运行Android操作系统。实验的实现和设计下一节所示。最后,我们将讨论未来的工作对我们的工作和结论。
2。背景和相关工作
2.1。资源操作
现在Android恶意软件分析是研究[8]。分析技术包括动态分析(9- - - - - -13和静态分析5,14- - - - - -17]。有些框架寻求恶意代码通过应用程序行为进行分类后签名(9,14),而其他的跟踪数据流(15,18]。静态分析是了解应用程序的方式通过的签名恶意代码(例如,应用程序权限已经宣布,api,应用程序使用)。动态分析直接在沙箱环境中执行恶意程序(3),然后收集必要的信息和组织过程。动态分析和静态分析的数据代入算法然后评估应用程序行为。特别是,机器学习的应用和深度学习在恶意程序的分类是由于其精度高(6,12,19- - - - - -22]。
数据收集从动态和静态分析一直面临许多困难和障碍4]。逃避静态分析技术使它难以定位使用api或找出数据的执行流程15]。同时,动态分析有困难想办法自动执行所有被分析应用程序的行为(10),以及大量的信息,可能不需要在运行恶意程序。然而,我们必须认识到当前的动态分析技术的灵活性非常高。混合方法结合了静态分析和动态分析解决每种技术的局限性(4,23]。黄等人提出IntelliDroid [24),生成输入使用静态分析技术的动态分析。
恶意软件行为跟踪是一个常见的问题。的有效方法之一来跟踪恶意行为检测资源被恶意软件从一个Android设备。几乎所有的攻击者的目的是试图窃取敏感数据从用户通过操作手机资源,比如摄像头,麦克风,电话和短信。江等人设计了一个资源管理系统架构来收集数据的行为检测(25]。静态分析是有限的检测未经授权的资源使用情况。孟等人构建了一个基于图模型来描述应用程序的控制流。然而,他们的方法并不是更有效精度为89.5% (26]。赵等人杠杆的力量Androguard提取一组敏感api来表示应用程序的行为(27]。动态分析使用连接技术。使用Java函数连接技术、Soewito和Suwandary成功说明他们的建议适用于数据泄漏预防(28]。易于安装和连接技术可检测监控资源操作。例如,弗里达,一个连接框架,干扰应用程序的内存,这过程需要分析。代理,然后需要高特权访问因为Linux内核不允许任何过程擅自干涉彼此的记忆。因此,使用连接技术,设备必须扎根,或连接框架的经纪人必须附加到他们想要分析的应用程序。
弗里达框架有两种方式的APK钩的功能目标。首先,它需要运行弗里达的服务器在设备作为根用户权限或nonroot权限访问其他进程的内存有足够的能力。的弗里达的服务器然后修改内存覆盖的函数中指定基于javascript的连接脚本。目标应用程序将使用覆盖函数而不是原始的函数的执行。第二种方法使用弗里达,我们需要把frida-agent.so图书馆到目标的APK和重新包装APK文件。frida-agent.so然后作为弗里达的服务器但是没有root特权要求,因为附加剂现在是一个应用程序完全访问其内存的一部分。
Strace是一个可能的解决方案来躲避逃税恶意软件。然而,大规模日志系统调用相当复杂的过程。
2.2。硬件抽象层
哈尔(硬件抽象层)1定义了一个标准接口来实现硬件供应商,使Android是不知道底层驱动程序的实现。使用HAL允许您实现在不影响功能或修改高级或低级别的系统。遗留的老建筑是哈尔斯Android牛轧糖(7.0)和以前的版本。在Android 8.0和更高版本,模块化的架构是设计来满足需求。
3所示。资源操纵攻击检测
目前,动态分析方法可以使用连接的技术检测资源操作的攻击。图1(一)描述了使用弗里达跟踪的方法SendSMS函数。知道应用程序操纵短信资源请求SendSMS与否,我们钩sendTextMessage ()。本例中使用日志方法收集处理信息。我们发现这个方法的一些缺点。
(一)
(b)
监控操作资源修改哈尔是最好的选择,原因很多。首先,所有的硬件资源请求经过哈尔。因此,监控资源基于HAL给高覆盖率。其次,哈尔是独立于硬件的驱动程序。监控模块在哈尔可以广泛的Android设备的正常工作。最后但并非最不重要,甚至攻击旨在基于Android设备,它不能禁用监控模块在哈尔因为这个模块不是作为一个服务运行,Android操作系统的一部分。我们开始调查哈尔源代码,然后来到这些结论。
首先,我们可以简单地添加更多的功能来监视操作资源编码工作。清单1显示了一个简单的日志代码sendSms ()在哈尔函数。第5行是唯一的代码,我们需要添加。另一方面,弗里达(即需要更多的努力。,见清单1钩进sendTextMessage (),将请求发送短信(即。,the same resource of example in Listing1)。
|
第二,哈尔所收集的信息接口或功能是充分的检测资源操作的攻击。有多个Android api相同的行为。例如,两个sendTextMessage ()和sendMultipartTextMessage ()可以通过无线网络发送短消息。此外,sendTextMessage ()有2个不同的重载方法。因此,有必要开发两个连接功能sendTextMessage ()涵盖所有的资源操作api。此外,HALWatcher执行监控程序准确地通过添加一行代码(即。日志记录)sendSms ()(即实现功能。,for the sendSms interface) as shown in Listing2。
|
4所示。HALWatcher:资源操作监控模块
HALWatcher,如图2,然后是Android操作系统的一部分。因此,没有需求的系统或重新包装目标应用程序。所有已安装的包从商店或其他供应商市场可以被监控。除此之外,从一个远程代码执行生成的过程(远端控制设备)攻击也在监视。此外,由于供应商的多样性Android固件(ROM)类型,检测HALWatcher几乎是不可能的。我们的模型生成时硬件资源请求的信息。因此,信息的数量(例如,日志)显著降低,但确保所有资源操作行为记录和报告。在下一小节,我们将如何构建的一些示例HALWatcher在许多类型的硬件资源。
根据前一节的结论检查哈尔源代码,我们提供了详细的设计HALWatcher。首先,所有请求访问硬件信息和资源将从框架层,即Java Native Interface (JNI)。我们认为平等的措施,因为所有的恶意软件攻击或远端控制设备硬件资源操作请求必须通过JNI。的信息将被搬到硬件抽象层(HAL)。在哈尔,接口功能独立;也就是说,没有接口,共享相同的目的。在每个资源的关键方法类型(在下一节中,我们详细讨论),我们嵌入一个或多个代码行来记录任何行动和相关操作资源的信息。这些代码行被称为资源监控模块。清单2显示了一个示例的一个资源监控模块。在第五行中,我们添加了一行代码中RadioImpl: sendSms接口监控短信资源通过记录每次调用这个接口。简而言之,所有资源监控模块开发以下三个步骤:找出资源实现界面源代码在哈尔,嵌入监视功能接口,管理和监控信息发送给监控服务。
5。在哈尔资源操作监控模块
资源监控模块基本上是坐落在许多关键哈尔接口和实现的功能。在这项工作中,我们说明HALWatcher在监控短信、电话、详细和相机资源。对于其他资源,我们进行的模块列表”的位置HALWatcher进行进一步的工作。
5.1。短信和电话
短信和电话权限的Android设备允许应用程序访问运营商服务的权利。Android与载波通信提供商通过SIM(用户识别模块),这需要一个无线基带设备运行广播服务。每个基带设备都有自己的供应商的司机表示为“libril-vendor.so”文件。Android哈尔执行瑞来斯(无线电接口层)连接Android框架和供应商的司机。因此,所有相关的资源使用短信和电话权限经过瑞来斯。在分析RILD的同时,我们发现两种类型的瑞来斯命令:请求和UNSOL。请求命令使用Android框架层(例如,rilj),请求数据(例如,信号强度)或功能(例如,发送短信,进行调用)。UNSOL代表不请自来的反应,来自基带(例如,新的SMS)。
5.2。相机
最近,通过相机敏感信息泄露。Android应用程序可能会作为一个服务运行,没有活动的屏幕。在这种情况下,恶意应用程序或脆弱的应用程序攻击入侵者可以处理一个摄像头资源默默地没有任何通知给用户。哈尔相机接口内部已经实现硬件/相机/设备/ 1.0 / / CameraDevice.cpp违约。
这些接口提供方法等相机硬件驱动程序通信dumpState getCameraInfo (), ()等。一些关注管理相机的内存资源设备(如,CameraHeapMemory ()),其他人打开或关闭相机设备(例如,相机::open()、相机:关闭()),和其他人提供相机的正常任务等功能stopRecording startRecording (), (), takePicture (), cancelPicture ()。为了密切注视相机资源,我们创建日志函数当相机开启和关闭。我们也记录工作时间的相机,因为不规则的使用周期。
5.3。其他资源监控
类似于相机资源,其他资源也有/硬件/ resource_name内部的实现代码。表1展示了硬件资源的列表及其实现的源代码。关于资源监控,我们可以添加更多的功能比日志所需的信息对于那些资源。
5.4。资源操作监控服务
这服务负责的数据监测模块在哈尔。通过使用日志记录方法,该组件不是必需的,因为可以从日志数据logcat命令。哈尔资源操作模块不为任何用户的敏感数据或日志电话所以这日志数据可以是公开的。服务可以是任何应用程序内部或者外部的电话,这是唯一方便用户或分析研究的目的。
6。实施和评价
6.1。实现
我们实现了我们的方法使用AOSP版本9.0.0_r47 Hikey960董事会3。Hikey960的局限性是它不支持完全硬件通常存在于一个真正的电话(例如,振动器)。因此,为了证明哈尔修改资源监控方法是可能的,我们专注于短信和电话资源。这些资源哈尔接口实现在硬件/瑞来斯称为无线电接口层虚拟光驱,站在中间的Android框架层之间的通信(RILJ)和硬件驱动程序(即。,航母基带)。
Hikey960板的硬件设备列表需要相应的哈尔模块。这些组件中定义hikey / device-common.mk和hikey / hikey960 / device-hikey960.mk配置文件。因为Hikey960董事会支持硬件的限制,我们只能看到哈尔修改的影响当我们改变组件的源代码,我们列在表中2。
Hikey960没有SIM卡阅读器。因此,我们使用了华为4 g E173 u盘作为一个SIM卡阅读器。然后我们华为lib-ril(即补充道。,the driver that supports E173 USB stick to work as a baseband device) at the driver layer of the final compiled AOSP. Typically, the Linux kernel will accept USB as a storage device. Therefore, to make the kernel recognize the dongle as a 3 G/4G USB device, we switched the USB mode of the device usingusb_modeswitch工具。然后我们需要定制Hikey960内核(即。,kernel 4.9) and add more kernel module that supports theusb_modeswitch函数。我们也定制瑞来斯守护进程自动开关PPP模式在装货前的USB设备驱动程序。
我们评估我们的方法直接通过修改日志信息通过广播在瑞来斯的方法。总的来说,我们定制一些请求方法,这是最相关的发送短信和电话。我们也可以以同样的方式实现功能。
6.2。评价
6.2.1。高覆盖率
我们使用缺省消息传递AOSP发送正常的短信,溢价短信,电话,和发送USSD。然后,我们试图发送一个短信不使用应用程序。我们找到一种方法,通过发送SMS消息主义服务——在AOSP默认服务。我们表示,弗里达不能工作在这种情况下的监控短信资源。主义服务是由服务调用调用通过亚行shell命令4形式:亚行shell服务调用主义7 0 s16等”com.android.mms.service”s16”+ 1234567890”s16”零”s16”你好”s16”零”s16”零”。证明HALWatcher可以没有root特权,我们删除吗/ xbin /苏二进制和建立了一个non-userdebug版的AOSP迁离亚行壳。最后,我们跑Trojan-SMS根源和nonrooted系统证明弗里达的限制连接。
结果在表3显示,100%的数据可以登录使用HALWatcher。一些样品的Trojan-SMS,他们发现根设备,这样应用程序立即崩溃。一些恶意软件样本使用模糊技术,所以frida-agent.so可能会错误地嵌入并导致崩溃产卵后的应用程序。很明显,HALWatcher执行资源监控比弗里达的框架。
6.2.2。紧凑,完整的数据
与连接技术相比,HALWatcher(即不太灵活。,the need for rebuilding AOSP). However, this method gives compact and complete data that can be used for real-time hardware resources manipulation and malware analysis. To observe this possibility, we comparedHALWatcher与弗里达通过数据线传输到敏感的api,需要使用SMS (27]。我们看了两个数据集,善意的和恶意的应用程序(例如,FakePlayer)。为HALWatcher,我们记录瑞来斯请求相关的短信。弗里达和HALWatcher使用相同的日志记录方法,记录仅被调用的函数的名称和调用的时间戳。我们跑,触发应用程序发送短信,然后终止应用程序。
结果在图3显示的日志HALWatcher小于连接技术,测试应用程序操纵相同的硬件资源。清单3显示了不同的日志大小之间的例子HALWatcher和弗里达监控发送SMS资源。检索到的日志大小从连接正常应用远远大于恶意软件。我们发现正常的消息应用程序调用getSubscriptionId ()API调用之前多次sendTextmessage ()。此外,AOSP调用缺省消息传递应用程序sendTextmessage ()和sendMultipartMessage ()。从一开始就注意收集的日志总是打开应用程序。
|
我们比较的总CPU使用率和内存使用三个场景:(1)样品没有Frida连接和运行HALWatcher;(2)运行样本与弗里达挂钩;(3)运行和样品HALWatcher。Frida挂钩(2),我们只进行了连接目标进展过程。
如图4两个CPU和内存使用率,(2)更高出5%(1)和(3)。我们表示连接脚本注入目标应用程序。然而,在实际的资源监控系统中,我们应该实现仪表运行的进程。当时,系统可能会崩溃(例如,5% extra computational resource for each process). Meanwhile, the indicators are almost no different in (1) and (3) whether the sample is malware or benign. Besides, the crashing samples rate is dramatically increased while we were running the test. This crashing happens because some samples are not suitable in AOSP 9.0; some samples are only crashed while we start Frida for hooking progress.
7所示。结论和讨论
资源操纵攻击是最广泛的恶意行为Android恶意软件。当前的解决方案,包括静态和动态分析,检测这种攻击不够高效。HALWatcher是一种新的方法,修改硬件抽象层监控资源。这种方法解决了连接技术的局限性。HALWatcher提供了一个较低的监控硬件资源的高覆盖率的计算工作。此外,HALWatcher可以应用于建立一个保护机制在实际设备因为nonrooted环境的要求。然而,HALWatcher面临一些限制。首先,需要强大的硬件抽象层开发知识扩展和部署HALWatcher。第二,HALWatcher只有能够监控硬件资源,不是为别人,已经存储在系统存储(如日历、联系人、照片等)。为我们的未来的研究,我们计划研究新的监控方法可以集成其他系统资源HALWatcher做一个完整的资源操作保护框架。
数据可用性
可以找到源代码和日志文件https://github.com/josebeo2016/HALModifying。
信息披露
本文提出的修订版本的海报:“哈尔资源操作监控基于AOSP”2020年低,济州岛,韩国。
的利益冲突
作者宣称没有利益冲突有关的出版。
确认
这项工作得到了学院的信息和通信技术规划和评估由韩国政府(IITP)拨款(MSIT)(没有。2020-0-00952,发展5 g的边安全技术保证5 g +服务的稳定性和可用性)和信息与通信技术研究所支持的规划和评价由韩国政府(IITP)拨款(MSIT)(2019-0-00477,开发安卓系统的安全框架技术使用虚拟可信执行环境)。