配套实验资源
感谢您关注我们的《移动安全》教材。如果您想要相关资源以及答案,请将您的姓名、教育邮箱、学校及学院信息发送至 xxxxx@xxx.com。
请您放心,我们承诺将严格保护您的信息安全。感谢您的信任与支持!
一、实验目标
1. 理解恶意软件检测的基本原理和挑战;
2. 熟悉常见的机器学习算法和模型,了解它们的优缺点和适用场景;
3. 能够构建恶意软件检测的机器学习模型,并对其进行评估和优化。
二、前置准备
1. 理论知识学习
进行本实验前请先完成教材第8章的理论学习和机器学习、深度学习模型的基本使用。
2. 实验环境
• Python环境
• 机器学习模型:使用scikit-learn库实现
• 深度学习模型:基于Pytorch或者Keras实现
三、任务描述
任务1 恶意软件分类
基于给定的移动应用特征数据集,分别利用传统机器学习模型和深度学习模型,设计并训练一个二分类器,用于区分恶意软件和正常软件。你需要在上述两类模型中分别选择至少一种模型来完成本次实验。
1. 评价指标
模型在测试集上的Precision(精确率),recall(召回率)和F1-score。本次实验中,正类代表恶意软件,负类代表正常软件。
Precision(精确率):Precision 衡量的是模型预测为正类别的样本中,有多少是真正的正类别样本。计算公式如下:
其中,TP表示真正例(True Positive),即模型将正类别样本预测为正类别的数量;FP表示假正例(False Positive),即模型将负类别样本预测为正类别的数量。
Recall(召回率): Recall 衡量的是真正的正类别样本中,有多少被模型正确预测为正类别。计算公式如下:
其中,$FN$ 表示假负例(False Negative),即模型将正类别样本预测为负类别的数量。
F1-Score: F1-Score 是 Precision 和 Recall 的调和平均值,综合了两者的性能指标。计算公式如下:
F1-Score 能够同时考虑 Precision 和 Recall,适用于评估模型在不同类别的样本上的性能。
2. 数据介绍和使用要求
共包含3个数据集,分别存放在train,validation,test文件夹下。注意,你选择的模型只能在train和validation数据集上进行训练和验证,test仅用作模型的最终评估。
任务2 实现Burp Suite扩展
在该任务中,我们需要实现一个简单的Burp Suite扩展,从而能够自动化地实现任务1的目标(即获取两个secret)。读者可以在官网学习Burp Suite扩展的知识。
具体来说,我们需要实现两个功能:
1. 使用Burp Suite扩展修改请求报文(request),使得我们能够在按下“购买”按钮后能够直接获得flag
2. 使用Burp Suite扩展修改响应报文(response),使得我们能够在按下“购买”按钮后可以在当前页面看到ID
四、结果提交形式
1. lab7_code.zip:本次实验中的实验代码,需要包含数据预处理以及模型训练和评估的代码
2. lab7.docx:本次实验的实验报告,包括实验目标、实验过程、实验结果和实验心得等
五、评分标准
1. 完成任务1(70%):分别使用任意一个机器学习模型和深度学习模式完成恶意软件的二分类,各占35%
2. 实验报告(30%):
• 内容完整性和原创性(20%)
• 报告包含实验目的、详细步骤、结果、总结思考等关键部分
• 代码设计遵循代码规范,有必要的解释说明
• 报告撰写和表达(10%)
• 报告格式规范,语言表达清晰
• 能够适当使用图表等辅助说明报告内容
六、附件内容说明
1. 数据集data.zip
• 数据组成:41,382 恶意样本 & 36,755 正常样本
• 数据格式:
* csv文件存储,每个数据集中都包含malware.csv和benign.csv两个文件,分别代表恶意软件数据和正常样本数据 。需要从这两个文件中读取数据,以获取提取好的软件样本特征。
* 每个样本包含样本名称、标签(恶意样本标签为1 ,正常样本标签为0 )以及 474 个特征数据
• 特征描述:
类别
特征
数量
字段示例
描述
动态 - 系统调用
系统调用
288
execve
, getuid32
, SYS_300
应用程序在运行时发出的系统调用集中的每个系统调用的绝对频率
系统调用总数
1
nr_syscalls
应用程序在运行时发出的系统调用总数
静态 - 权限相关
标准权限
166
ACCEPT_HANDOVER
, WRITE_VOICEMAIL
二进制特性,表明应用程序是否请求了标准Android权限(即1)或未请求(即0)
标准权限类型
3
normal
, dangerous
, signature
请求的正常、危险和签名权限的总数
标准权限总数
1
nr_permissions
应用程序请求的标准权限总数
自定义权限
1
custom_yes
二进制特性,表明应用程序是否声明了任何自定义权限(即,如果有,则为1,如果没有,则为0)
自定义权限总数
1
nr_custom
应用程序定义的自定义权限总数
静态 - 文件统计特征
文件大小
2
CFileSize
, UFileSize
压缩(apk)文件大小和未压缩的文件大小(即所有原始apk内部文件大小的总和)
文件数量
1
FilesInsideAPK
apk内的文件数量(即内部文件)
静态 - Activities & Services 统计特征
活动和服务总数
2
Activities
, NrServices
应用程序定义的活动总数和服务总数
一、实验目标
1. 理解恶意软件检测的基本原理和挑战;
2. 熟悉常见的机器学习算法和模型,了解它们的优缺点和适用场景;
3. 能够构建恶意软件检测的机器学习模型,并对其进行评估和优化。
二、前置准备
1. 理论知识学习
进行本实验前请先完成教材第8章的理论学习和机器学习、深度学习模型的基本使用。
2. 实验环境
• Python环境
• 机器学习模型:使用scikit-learn库实现
• 深度学习模型:基于Pytorch或者Keras实现
三、任务描述
任务1 恶意软件分类
基于给定的移动应用特征数据集,分别利用传统机器学习模型和深度学习模型,设计并训练一个二分类器,用于区分恶意软件和正常软件。你需要在上述两类模型中分别选择至少一种模型来完成本次实验。
1. 评价指标
模型在测试集上的Precision(精确率),recall(召回率)和F1-score。本次实验中,正类代表恶意软件,负类代表正常软件。
Precision(精确率):Precision 衡量的是模型预测为正类别的样本中,有多少是真正的正类别样本。计算公式如下:
其中,TP表示真正例(True Positive),即模型将正类别样本预测为正类别的数量;FP表示假正例(False Positive),即模型将负类别样本预测为正类别的数量。
Recall(召回率): Recall 衡量的是真正的正类别样本中,有多少被模型正确预测为正类别。计算公式如下:
其中,$FN$ 表示假负例(False Negative),即模型将正类别样本预测为负类别的数量。
F1-Score: F1-Score 是 Precision 和 Recall 的调和平均值,综合了两者的性能指标。计算公式如下:
F1-Score 能够同时考虑 Precision 和 Recall,适用于评估模型在不同类别的样本上的性能。
2. 数据介绍和使用要求
共包含3个数据集,分别存放在train,validation,test文件夹下。注意,你选择的模型只能在train和validation数据集上进行训练和验证,test仅用作模型的最终评估。
任务2 实现Burp Suite扩展
在该任务中,我们需要实现一个简单的Burp Suite扩展,从而能够自动化地实现任务1的目标(即获取两个secret)。读者可以在官网学习Burp Suite扩展的知识。
具体来说,我们需要实现两个功能:
1. 使用Burp Suite扩展修改请求报文(request),使得我们能够在按下“购买”按钮后能够直接获得flag
2. 使用Burp Suite扩展修改响应报文(response),使得我们能够在按下“购买”按钮后可以在当前页面看到ID
四、结果提交形式
1. lab7_code.zip:本次实验中的实验代码,需要包含数据预处理以及模型训练和评估的代码
2. lab7.docx:本次实验的实验报告,包括实验目标、实验过程、实验结果和实验心得等
五、评分标准
1. 完成任务1(70%):分别使用任意一个机器学习模型和深度学习模式完成恶意软件的二分类,各占35%
2. 实验报告(30%):
• 内容完整性和原创性(20%)
• 报告包含实验目的、详细步骤、结果、总结思考等关键部分
• 代码设计遵循代码规范,有必要的解释说明
• 报告撰写和表达(10%)
• 报告格式规范,语言表达清晰
• 能够适当使用图表等辅助说明报告内容
六、附件内容说明
1. 数据集data.zip
• 数据组成:41,382 恶意样本 & 36,755 正常样本
• 数据格式:
* csv文件存储,每个数据集中都包含malware.csv和benign.csv两个文件,分别代表恶意软件数据和正常样本数据 。需要从这两个文件中读取数据,以获取提取好的软件样本特征。
* 每个样本包含样本名称、标签(恶意样本标签为1 ,正常样本标签为0 )以及 474 个特征数据
• 特征描述:
类别 | 特征 | 数量 | 字段示例 | 描述 |
---|---|---|---|---|
动态 - 系统调用 | 系统调用 | 288 | execve , getuid32 , SYS_300 |
应用程序在运行时发出的系统调用集中的每个系统调用的绝对频率 |
系统调用总数 | 1 | nr_syscalls |
应用程序在运行时发出的系统调用总数 | |
静态 - 权限相关 | 标准权限 | 166 | ACCEPT_HANDOVER , WRITE_VOICEMAIL |
二进制特性,表明应用程序是否请求了标准Android权限(即1)或未请求(即0) |
标准权限类型 | 3 | normal , dangerous , signature |
请求的正常、危险和签名权限的总数 | |
标准权限总数 | 1 | nr_permissions |
应用程序请求的标准权限总数 | |
自定义权限 | 1 | custom_yes |
二进制特性,表明应用程序是否声明了任何自定义权限(即,如果有,则为1,如果没有,则为0) | |
自定义权限总数 | 1 | nr_custom |
应用程序定义的自定义权限总数 | |
静态 - 文件统计特征 | 文件大小 | 2 | CFileSize , UFileSize |
压缩(apk)文件大小和未压缩的文件大小(即所有原始apk内部文件大小的总和) |
文件数量 | 1 | FilesInsideAPK |
apk内的文件数量(即内部文件) | |
静态 - Activities & Services 统计特征 | 活动和服务总数 | 2 | Activities , NrServices |
应用程序定义的活动总数和服务总数 |