31、MADAM:安卓恶意软件的多级异常检测器

MADAM:安卓恶意软件的多级异常检测器

1. MADAM概述

MADAM(Multi - level Anomaly Detector for Android Malware)是一种用于安卓恶意软件的多级异常检测器,它同时在内核级和用户级对安卓系统进行监控,利用机器学习技术来区分标准行为和恶意行为,从而检测真实的恶意软件感染。异常检测问题可视为一个二元分类问题,正常行为被分类为“标准”,异常行为则被分类为“可疑”。

2. MADAM方法
  • 多级检测
    • MADAM结合从多个级别提取的特征,以提供更广泛的监控事件范围,并发现不同级别事件之间的相关性。目前,它考虑内核级和应用程序级两个级别。
    • 内核级:监控系统调用,系统调用能反映用户活动、文件和内存访问、流量、能耗和传感器状态等,攻击者通常需要执行系统调用才能危害系统。
    • 应用程序级:提取的特征包括用户是否空闲以及发送的短信数量。用户空闲状态是一个关键特征,因为设备活动通常在用户与设备交互时更频繁,系统调用的数量取决于设备/用户的状态。
    • 框架包含两个监控器:
      • 内核级监控器:拦截所有关键系统调用,并记录在时间段T内它们的出现次数。如果m是监控的系统调用数量,该监控器在每个时间段T返回一个维度为m的向量。
      • 应用程序级监控器:可分为两个子监控器,分别用于定期测量在时间间隔内发送的短信数量和监控用户空闲状态。
    • 数据集的元素是具有m + 2个特征的向量,其中m是监控的关键系统调用数量,最后两个特征分别表示设备状态(空闲或活跃)和发送的短信数量。收集器接收所有监控器的特征并构建向量,这些向量使用日志记录模块存储在本地文件中,用于构建训练集。训练集用于获得训练好的分类器。在操作阶段,每个监控向量作为输入提供给训练好的分类器,如果被分类为可疑,则立即向用户显示通知。
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(内核级监控器):::process --> B(收集器):::process
    C(应用程序级监控器):::process --> B
    B --> D(日志记录模块):::process
    D --> E(训练集):::process
    E --> F(训练好的分类器):::process
    G(监控向量):::process --> F
    F -->|可疑| H(通知用户):::process
  • 实现
    • 框架在三星Galaxy Nexus HSPA上开发,操作系统为安卓冰淇淋三明治4.0.1版本,Linux内核版本为3.0.1。
    • 最低级组件是系统调用监控器,实现为Linux内核模块,劫持监控的系统调用的执行,每个系统调用都与一个计数器耦合,在执行前递增。该模块仅考虑安卓Linux上所有可用系统调用的一个子集,即那些在安全方面对描述系统行为至关重要的系统调用。内核模块包含一个任务,定期(周期为T)将计数器的实际值记录在与收集器共享的缓冲区中,然后重置所有计数器。包含和执行劫持模块需要超级用户(SU)权限,因此在测试期间设备需要进行root操作。
    • 最高级组件是一个用Java编写的安卓应用程序,使用安卓SDK实现。该应用程序包括:
      • MADAM收集器:定期读取与内核监控器共享的缓冲区、用户状态(空闲/活跃)以及在时间段T内发送的短信数量。为了检测发送的短信,利用安卓系统日志文件(LogCat)。
      • 应用程序级日志记录器:读取收集器构建的向量并将其记录在日志文件中,形成一个矩阵。
      • 分类器:判断收集器构建的向量是好是可疑。如果是可疑的,分类器向用户发送通知,并记录那些被分类为可疑的向量以供进一步分析。使用Weka 3.6.6版本进行分类。
3. 实验结果 - 训练集和分类器
  • 训练集构建
    • 记录用户执行正常操作时手机的行为(通过系统调用),确保设备未感染,只安装来自官方网站(Google Play)的高评分和正面评价的流行应用程序。
    • 发现最能描述设备行为的系统调用包括:open、ioctl、brk、read、write、exit、close、sendto、sendmsg、recvfrom、recvmsg。构建训练集时,标准向量包括系统调用出现次数少且用户空闲的向量,以及系统调用出现次数多且用户活跃的向量。
    • 除了11个系统调用和用户空闲状态这12个特征外,用于分类的向量还包括一个表示在时间间隔T内发送的短信数量的特征。短信使用情况难以仅通过系统调用进行语义监控,且短信可能被用于危害用户,因此记录多个短信发送阶段,并将结果向量添加到数据集中。
    • 手动定义一些可疑元素,包括用户空闲时系统调用出现次数高的向量和用户活跃时系统调用调用次数极高的向量。使用SMOTE(Simple Minority Oversampling TEchnique)方法从这些定义的向量中派生更多恶意向量。
    • 为了表示与短信消息相关的恶意行为,手动定义并添加一些与用户活动相比发送消息数量非常高的向量到训练集。
  • 分类器选择
    • 为了提高检测率,应用程序并行运行两个相同检测框架的实例,采样周期T不同。一个是短期监控器(Tshort = 1秒),另一个是长期监控器(Tlong = 60秒)。短期监控器更有效地检测“尖峰”异常行为,长期监控器旨在检测长时间内持续分布其行为的异常,如间谍软件。
    • 使用K - 最近邻(K - NN)分类器,K = 1(1 - NN)。该分类器性能良好,能轻松适应大量问题,分类元素所需的计算时间少,更新算法简单。经过测试,1 - NN在数据集上的表现优于其他分类器。
系统调用 描述
open 打开文件或设备
ioctl 输入输出控制
brk 改变数据段的大小
read 从文件描述符中读取数据
write 将数据写入文件描述符
exit 终止进程
close 关闭文件描述符
sendto 发送数据报
sendmsg 发送消息
recvfrom 接收数据报
recvmsg 接收消息

MADAM:安卓恶意软件的多级异常检测器

4. 实验结果 - 实验描述

实验过程包含多个阶段,其步骤顺序如下:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(训练阶段):::process --> B(学习阶段):::process
    B --> C(操作阶段):::process
    C --> D(误报率测量):::process
    C --> E(恶意软件测试):::process
  • 训练阶段 :使用之前手动定义的训练集对分类器进行训练。
  • 学习阶段 :此阶段用于学习特定用户的行为,目的是估计误报率(FPR)的趋势,即随着利用误报逐步更新训练好的分类器,误报数量如何减少。
  • 操作阶段
    • 误报率测量 :使用干净的应用程序对设备进行测试,计算每天产生的误报数量。
    • 恶意软件测试 :在设备上安装被植入木马的应用程序,以确定MADAM分类器的检测准确性。

由于学习阶段和误报率测量很大程度上取决于设备的使用情况,这些测试由三名不同的用户进行。

5. 实验结果 - 误报测量
  • 误报率趋势

    • 最初手动定义并提供给短期分类器的训练集包含900个标准向量和100个恶意向量,长期分类器使用250个标准向量和50个恶意向量进行训练。这些数据集相对较小,代表了一些标准和基本的行为,如打电话、输入和发送短信、浏览互联网以及玩流行游戏《愤怒的小鸟》。
    • 分类器启动后,如预期出现了一些误报。误报通常在用户执行与训练集中存储的行为差异很大的新行为时发生。由于安卓可用应用程序数量众多且种类多样,很可能出现未知行为。
    • 为了减少误报的发生,MADAM在一个初始化阶段(学习阶段)学习用户的行为,在此阶段,误报会直接添加到分类器的知识库中,无需用户干预。测试期间,获得合理数量误报的学习阶段平均持续时间为30分钟。用户也可以在需要时主动启动新的学习阶段,例如安装新应用程序后,如果认为该应用程序可信,可以更新分类器。
    • 在实验中,分五个步骤更新分类器:10分钟后,然后每小时更新一次,共更新四次。具体实验数据如下表所示:
      |时间|向量数量|误报数量|误报率|
      | ---- | ---- | ---- | ---- |
      |10分钟|610|156|0.26|
      |60分钟|3050|55|0.015|
      |120分钟|3660|23|0.0061|
      |180分钟|3660|10|0.0028|
      |240分钟|3660|5|0.0011|
  • 误报率测量

    • 使用从学习阶段获得的训练集重新训练分类器,然后进行进一步实验,以估计24小时内产生的误报数量。测试中,其中一部智能手机安装了50多个应用程序并在白天大量使用,另外两部智能手机分别设置为适度使用和基本使用。如预期,使用量最低的智能手机产生的误报数量比第一部少。因此,重点关注大量使用的智能手机的测试结果。
    • 测试返回15个误报(误报率 = 0.000171),其中9个由短期分类器产生(误报率 = 0.000104),6个由长期分类器产生(误报率 = 0.004167)。将收集到的误报更新到分类器中,然后在接下来的两天重复实验。结果如下表所示,平均而言,大量使用的智能手机在24小时内产生的误报少于10个,且呈下降趋势。
      |日期|总体误报率|短期误报率|长期误报率|
      | ---- | ---- | ---- | ---- |
      |第1天|0.000171|0.000104|0.004167|
      |第2天|0.000139|0.000116|0.00137|
      |第3天|0.000114|0.00008102|0.00208|

    • 还使用了一些用于恶意软件检测的应用程序的干净版本进行测试,以检查是否也会产生误报。安装了干净版本的网络浏览器Opera和游戏《仓鼠炸弹》,而它们的木马化版本分别感染了OpFakeA和TGLoader。如预期,未检测到入侵。

综上所述,MADAM作为一种多级异常检测器,通过结合内核级和应用程序级的监控,利用机器学习技术,在安卓恶意软件检测方面表现出了良好的性能,同时通过学习阶段有效降低了误报率。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值