CN108664792A - 一种Android恶意软件的溯源方法 - Google Patents

一种Android恶意软件的溯源方法 Download PDF

Info

Publication number
CN108664792A
CN108664792A CN201810489704.8A CN201810489704A CN108664792A CN 108664792 A CN108664792 A CN 108664792A CN 201810489704 A CN201810489704 A CN 201810489704A CN 108664792 A CN108664792 A CN 108664792A
Authority
CN
China
Prior art keywords
program
ratio
performance
malware
developer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810489704.8A
Other languages
English (en)
Inventor
程绍银
张鹏
蒋凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN201810489704.8A priority Critical patent/CN108664792A/zh
Publication of CN108664792A publication Critical patent/CN108664792A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种Android恶意软件的溯源方法,包括:从对APK数据中的APK安装包进行解压,并对解压结果进行解析,从而提取出程序特征,最终由一系列APK安装包的程序特征形成程序特征库;利用机器学习算法结合程序特征库建立分类模型;将待溯源分析的恶意软件的程序特征作为输入样本输入至分类模型,得到输入样本与分类模型中样本的相似度以及每个程序特征所占的权重;在此基础上,分析提取恶意软件的开发者或者开发组织的关键判定因素,利用人机结合对恶意软件的开发者或者开发组织进行分析。该方法可以提取开发者或者开发组织的特征,并通过分类模型快速判断出恶意软件的开发者或者开发组织,从而从源头遏制恶意软件的泛滥。

Description

一种Android恶意软件的溯源方法
技术领域
本发明涉及互联网技术领域,尤其涉及一种Android恶意软件的溯源方法。
背景技术
自2014年以来Android手机的市场占有率一直是80%以上,2017年第一季度更是达到了85%。在可预期的将来,Android系统将继续保持手机市场的统治地位。但是由于Android系统的巨大市场份额和开源性,它也成为恶意软件开发者的主要攻击目标,Android平台成为移动端恶意软件的“重灾区”。
恶意软件(俗称“流氓软件”)是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。它具备以下某些特征:
1)强制安装:指未明确提示用户或未经用户许可,在用户计算机或其他终端上安装软件的行为。
2)难以卸载:指未提供通用的卸载方式,或在不受其他软件影响、人为破坏的情况下,卸载后仍然有活动程序的行为。
3)浏览器劫持:指未经用户许可,修改用户浏览器或其他相关设置,迫使用户访问特定网站或导致用户无法正常上网的行为。
4)广告弹出:指未明确提示用户或未经用户许可,利用安装在用户计算机或其他终端上的软件弹出广告的行为。
5)恶意收集用户信息:指未明确提示用户或未经用户许可,恶意收集用户信息的行为。
6)恶意卸载:指未明确提示用户、未经用户许可,或误导或欺骗用户卸载其他软件的行为。
7)恶意捆绑:指在软件中捆绑已被认定为恶意软件的行为。
目前对Android恶意软件同源分析,大多只是聚焦于Android恶意软件的家族同源性分析。通过网络流量特征、软件行为特征、申请权限等属性特征建立模型来对恶意软件进行同源性判定,大多只能判定软件之间变种的关系。针对Android恶意软件开发者或者开发组织的溯源追踪技术目前还没有成熟的方法和应用。
发明内容
本发明的目的是提供一种Android恶意软件的溯源方法,可以通过分类模型快速判断出恶意软件的开发者或者开发组织,从而从源头遏制恶意软件的泛滥。
本发明的目的是通过以下技术方案实现的:
一种Android恶意软件的溯源方法,包括:
从对APK数据中的APK安装包进行解压,并对解压结果进行解析,从而提取出程序特征,最终由一系列APK安装包的程序特征形成程序特征库;
利用机器学习算法结合程序特征库建立分类模型;
将待溯源分析的恶意软件的程序特征作为输入样本输入至分类模型,得到输入样本与分类模型中样本的相似度以及每个程序特征所占的权重。
由上述本发明提供的技术方案可以看出,可以提取开发者或者开发组织的特征,并且建立相应的数据库和数据模型。在遇到新的Android恶意软件时,可以通过模型快速判断出恶意软件的开发者或者开发组织,从而从源头遏制恶意软件的泛滥。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种Android恶意软件的溯源方法的流程图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供一种Android恶意软件的溯源方法,该方法提出一系列有关于恶意软件开发者或者组织的特征,并采用机器学习的方法结合所提取的特征建立模型,并提取恶意软件开发者或者开发组织的关键判定因素,利用人机结合对Android恶意软件的开发者或者开发组织进行分析。下面结合附图1对Android恶意软件的溯源方法进行说明。如图1所述,该方法主要包括:
步骤1、从对APK数据中的APK安装包进行解压,并对解压结果进行解析,从而提取出程序特征,最终由一系列APK安装包的程序特征形成程序特征库。
1、对APK安装包进行解压,并对解压结果进行解析
本发明实施例中,对APK安装包进行解压,获得DEX文件、xml文件及图片文件;对DEX文件进行解析获得源代码;对xml文件进行解析获得可读的文件;对图片文件进行解析获得图片字符串。具体如下:
a、解析DEX文件。解压APK安装包获得DEX文件,DEX文件是java源码编译后生成的字节码文件,可以直接在Dalvik或ART等虚拟机中加载运行。利用反编译工具可以将DEX文件转换成普通的jar包。然后利用工具,例如JD-GUI等得到源代码。
b、解析XML文件。解压APK安装包获得xml文件,xml文件是APK中的资源文件和布局文件,利用工具将它解码成可读的文件。
c、解析图片文件。解压APK安装包获得所有的图片文件,然后利用工具提取图片文件中的所有字符串。
2、提取出程序特征。
本发明实施例中,提取出的程序特征包括:程序布局特征、程序结构特征、程序风格特征以及字符串特征。其中,程序布局特征、程序结构特征与程序风格特征从源代码中提取得到,字符串特征则从源代码、可读的文件与字符串中提取的数据汇总得到。具体如下:
a、程序布局特征,所述程序布局特征是程序开发者在编写代码时的一些布局习惯;比如空格的使用、注释符号的使用、各种括号的使用等等。这些是开发者或者开发组织内部在编写代码时形成的习惯。
程序布局特征包括但不限于包括如下内容:
1)代码中‘{’是单独一行占所有‘{’的百分比;
2)代码中‘{’是行代码中第一个字符占所有‘{’的百分比;
3)代码中‘{’是行代码中最后一个字符占所有‘{’的百分比;
4)代码中‘}’是单独一行占所有‘}’的百分比;
5)代码中‘}’是行代码中第一个字符占所有‘}’的百分比;
6)代码中‘}’是行代码中最后一个字符占所有‘}’的百分比;
7)‘{’前的平均空格数;
8)‘{’后的平均空格数;
9)‘}’前的平均空格数;
10)‘}’后的平均空格数;
11)注释行中用‘//’表示的注释行占所有注释行的比例;
12)注释行中有‘/**/’表示的注释行占所有注释行的比例;
13)for循环中‘(’前的平均空格数;
14)for循环中‘(’后的平均空格数;
15)for循环中‘)’前的平均空格数;
16)for循环中‘)’后的平均空格数;
17)while循环中‘(’前的平均空格数;
18)while循环中‘(’后的平均空格数;
19)while循环中‘)’前的平均空格数;
20)while循环中‘)’后的平均空格数;
21)do循环中‘(’前的平均空格数;
22)do循环中‘(’后的平均空格数;
23)do循环中‘)’前的平均空格数;
24)do循环中‘)’后的平均空格数;
25)if条件语句中‘(’前的平均空格数;
26)if条件语句中‘(’后的平均空格数;
27)if条件语句中‘)’前的平均空格数;
28)if条件语句中‘)’后的平均空格数;
29)代码中每一行的平均缩进长度;
30)代码中每一行的平均字符数;
31)代码中每一行的平均空格数;
32)代码中操作符(包括但不限定于+,-,*,/,%,=,+=,-=,/=,%=,==,++,--,&&,||等)左边的平均空格数;
33)代码中操作符(包括但不限定于+,-,*,/,%,=,+=,-=,/=,%=,==,++,--,&&,||)右边的平均空格数;
34)每个程序文件中空白行占所有行数的比例;
35)每个程序文件中注释行占所有行数的比例;
36)每个程序文件中包含注释的代码行占所有行数的比例。
b、程序结构特征,所述程序结构特征是开发者在编写代码时的一些逻辑习惯。比如对循环语句的使用、每个循环里的嵌套个数以及条件判断语句的使用等。特别是某些功能要用到条件判断语句时,如何设置判断语句也是每个开发人员的习惯。
程序结构特征包括但不限于包括如下内容:
1)for循环在while、for、do三种循环中的比例;
2)for循环中单层嵌套循环占所有for循环的比例;
3)for循环中双层嵌套循环占所有for循环的比例;
4)for循环中三层嵌套循环占所有for循环的比例;
5)while循环在while、for、do三种循环中的比例;
6)while循环中单层嵌套循环占所有while循环的比例;
7)while循环中双层嵌套循环占所有while循环的比例;
8)while循环中三层嵌套循环占所有while循环的比例;
9)do循环在while、for、do三种循环中的比例;
10)do循环中单层嵌套循环占所有do循环的比例;
11)do循环中双层嵌套循环占所有do循环的比例;
12)do循环中三层嵌套循环占所有do循环的比例;
13)if条件语句在if、if-else、switch-case三种条件语句中的比例;
14)if-else条件语句在if、if-else、switch-case三种条件语句中的比例;
15)switch-case条件语句在if、if-else、switch-case三种条件语句中的比例;
16)if条件语句中条件判断使用了‘&&’占所有if条件语句的比例;
17)if条件语句中条件判断使用了‘!’占所有if条件语句的比例;
18)if条件语句中条件判断使用了‘||’占所有if条件语句的比例;
19)if-else条件语句中条件判断使用了‘&&’占所有if-else条件语句的比例;
20)if-else条件语句中条件判断使用了‘!’占所有if-else条件语句的比例;
21)if-else条件语句中条件判断使用了‘||’占所有if-else条件语句的比例;
22)单层嵌套for循环中出现if条件语句占所有单层嵌套for循环的比例;
23)双层嵌套for循环中出现if条件语句出现在外循环中占所有双层嵌套for循环的比例;
24)双层嵌套for循环中出现if条件语句出现在内循环中占所有双层嵌套for循环的比例;
25)双层嵌套for循环中出现if条件语句即出现在外循环也出现在内循环中占所有双层嵌套for循环的比例;
26)单层嵌套for循环中出现if-else条件语句占所有单层嵌套for循环的比例;
27)双层嵌套for循环中出现if-else条件语句出现在外循环中占所有双层嵌套for循环的比例;
28)双层嵌套for循环中出现if-else条件语句出现在内循环中占所有双层嵌套for循环的比例;
29)双层嵌套for循环中出现if-else条件语句即出现在外循环也出现在内循环中占所有双层嵌套for循环的比例;
30)单层嵌套while循环中出现if条件语句占所有单层嵌套for循环的比例;
31)双层嵌套while循环中出现if条件语句出现在外循环中占所有双层嵌套for循环的比例;
32)双层嵌套while循环中出现if条件语句出现在内循环中占所有双层嵌套for循环的比例;
33)双层嵌套while循环中出现if条件语句即出现在外循环也出现在内循环中占所有双层嵌套for循环的比例;
34)单层嵌套while循环中出现if-else条件语句占所有单层嵌套for循环的比例;
35)双层嵌套while循环中出现if-else条件语句出现在外循环中占所有双层嵌套for循环的比例;
36)双层嵌套while循环中出现if-else条件语句出现在内循环中占所有双层嵌套for循环的比例;
37)双层嵌套while循环中出现if-else条件语句即出现在外循环也出现在内循环中占所有双层嵌套for循环的比例;
38)单层嵌套do循环中出现if条件语句占所有单层嵌套for循环的比例;
39)双层嵌套do循环中出现if条件语句出现在外循环中占所有双层嵌套for循环的比例;
40)双层嵌套do循环中出现if条件语句出现在内循环中占所有双层嵌套for循环的比例;
41)双层嵌套do循环中出现if条件语句即出现在外循环也出现在内循环中占所有双层嵌套for循环的比例;
42)单层嵌套do循环中出现if-else条件语句占所有单层嵌套for循环的比例;
43)双层嵌套do循环中出现if-else条件语句出现在外循环中占所有双层嵌套for循环的比例;
44)双层嵌套do循环中出现if-else条件语句出现在内循环中占所有双层嵌套for循环的比例;
45)双层嵌套do循环中出现if-else条件语句即出现在外循环也出现在内循环中占所有双层嵌套for循环的比例;
46)双层嵌套循环中外循环是for循环,内循环是while循环占所有双层嵌套循环的比例;
47)双层嵌套循环中外循环是for循环,内循环是do循环占所有双层嵌套循环的比例;
48)双层嵌套循环中外循环是for循环,内循环是for循环占所有双层嵌套循环的比例;
49)双层嵌套循环中外循环是while循环,内循环是while循环占所有双层嵌套循环的比例;
50)双层嵌套循环中外循环是while循环,内循环是do循环占所有双层嵌套循环的比例;
51)双层嵌套循环中外循环是while循环,内循环是for循环占所有双层嵌套循环的比例;
52)双层嵌套循环中外循环是do循环,内循环是while循环占所有双层嵌套循环的比例;
53)双层嵌套循环中外循环是do循环,内循环是do循环占所有双层嵌套循环的比例;
54)双层嵌套循环中外循环是do循环,内循环是for循环占所有双层嵌套循环的比例。
c、程序风格特征,所述程序风格特征是指开发者对各种变量命名时,使用的独特的命令习惯和风格,便于自己内部人员的理解和阅读;每个函数的长度,即对每个函数的功能的划分的不同决定了每个函数的长度,比如每个函数完成的功能很多则,每个函数可能较长,或者多划分一些函数完成,则函数可能较短。以及带各种关键字的代码,每个开发人员使用的频率也不相同。
程序风格特征包括但不限于包括如下内容:
1)程序中用的频率最多的前20个基本数据类型;
2)变量名的平均长度;
3)全部采用小写字母的变量名的平均长度;
4)全部采用小写字母的变量名的比例;
5)全部采用大写字母的变量名的平均长度;
6)全部采用大写字母的变量名的比例;
7)采用小写字母和大写字母的变量名的平均长度;
8)采用小写字母和大写字母的变量名的比例;
9)采用小写字母和数字的变量名的平均长度;
10)采用小写字母和数字的变量名的比例;
11)采用大写字母和数字的变量名的平均长度;
12)采用大写字母和数字的变量名的比例;
13)采用小写字母和下划线的变量名的平均长度;
14)采用大写字母和下划线的变量名的比例;
15)采用小写字母和$符号的变量名和平均长度;
16)采用大写字母和$符号的变量名的比例;
17)采用大写字母、小写字母和下划线的变量名的平均长度;
18)采用大写字母、小写字母和下划线的变量名的比例;
19)采用大写字母、小写字母和$符号的变量名的平均长度;
20)采用大写字母、小写字母和$符号的变量名的比例;
21)采用大写字母、小写字母、数字和下划线的变量名的平均长度;
22)采用大写字母、小写字母、数字和下划线的变量名的比例;
23)采用大写字母、小写字母、数字、下划线和$符号的变量名的平均长度;
24)采用大写字母、小写字母、数字和下划线和$符号的变量名的平均长度;
25)常量名的平均长度;
26)全部采用小写字母的常量名的平均长度;
27)全部采用小写字母的常量名的比例;
28)全部采用大写字母的常量名的平均长度;
29)全部采用大写字母的常量名的比例;
30)采用小写字母和大写字母的常量名的平均长度;
31)采用小写字母和大写字母的常量名的比例;
32)采用小写字母和数字的常量名的平均长度;
33)采用小写字母和数字的常量名的比例;
34)采用大写字母和数字的常量名的平均长度;
35)采用大写字母和数字的常量名的比例;
36)采用小写字母和下划线的常量名的平均长度;
37)采用大写字母和下划线的变量名的比例;
38)采用小写字母和$符号的常量名和平均长度;
39)采用大写字母和$符号的常量名的比例;
40)采用大写字母、小写字母和下划线的常量名的平均长度;
41)采用大写字母、小写字母和下划线的常量名的比例;
42)采用大写字母、小写字母和$符号的常量名的平均长度;
43)采用大写字母、小写字母和$符号的常量名的比例;
44)采用大写字母、小写字母、数字和下划线的常量名的平均长度;
45)采用大写字母、小写字母、数字和下划线的常量名的比例;
46)采用大写字母、小写字母、数字、下划线和$符号的常量名的平均长度;
47)采用大写字母、小写字母、数字和下划线和$符号的常量名的平均长度;
48)自定义函数名的平均长度;
49)全部采用小写字母的自定义函数名的平均长度;
50)全部采用小写字母的自定义函数名的比例;
51)全部采用大写字母的自定义函数名的平均长度;
52)全部采用大写字母的自定义函数名的比例;
53)采用小写字母和大写字母的自定义函数名的平均长度;
54)采用小写字母和大写字母的自定义函数名的比例;
55)采用小写字母和数字的自定义函数名的平均长度;
56)采用小写字母和数字的自定义函数名的比例;
57)采用大写字母和数字的自定义函数名的平均长度;
58)采用大写字母和数字的自定义函数名的比例;
59)采用小写字母和下划线的自定义函数名的平均长度;
60)采用大写字母和下划线的自定义函数名的比例;
61)采用小写字母和$符号的自定义函数名的平均长度;
62)采用大写字母和$符号的自定义函数名的比例;
63)采用大写字母、小写字母和下划线的自定义函数名的平均长度;
64)采用大写字母、小写字母和下划线的自定义函数名的比例;
65)采用大写字母、小写字母和$符号的自定义函数名的平均长度;
66)采用大写字母、小写字母和$符号的自定义函数名的比例;
67)采用大写字母、小写字母、数字和下划线的自定义函数名的平均长度;
68)采用大写字母、小写字母、数字和下划线的自定义函数名的比例;
69)采用大写字母、小写字母、数字、下划线和$符号的自定义函数名的平均长度;
70)采用大写字母、小写字母、数字和下划线和$符号的自定义函数名的平均长度;
71)自定义类名的平均长度;
72)全部采用小写字母的自定义类名的平均长度;
73)全部采用小写字母的自定义类名的比例;
74)全部采用大写字母的自定义类名的平均长度;
75)全部采用大写字母的自定义类名的比例;
76)采用小写字母和大写字母的自定义类名的平均长度;
77)采用小写字母和大写字母的自定义类名的比例;
78)采用小写字母和数字的自定义类名的平均长度;
79)采用小写字母和数字的自定义类名的比例;
80)采用大写字母和数字的自定义类名的平均长度;
81)采用大写字母和数字的自定义类名的比例;
82)采用小写字母和下划线的自定义类名的平均长度;
83)采用大写字母和下划线的自定义类名的比例;
84)采用小写字母和$符号的自定义类名的平均长度;
85)采用大写字母和$符号的自定义类名的比例;
86)采用大写字母、小写字母和下划线的自定义类名的平均长度;
87)采用大写字母、小写字母和下划线的自定义类名的比例;
88)采用大写字母、小写字母和$符号的自定义类名的平均长度;
89)采用大写字母、小写字母和$符号的自定义类名的比例;
90)采用大写字母、小写字母、数字和下划线的自定义类名的平均长度;
91)采用大写字母、小写字母、数字和下划线的自定义类名的比例;
92)采用大写字母、小写字母、数字、下划线和$符号的自定义类名的平均长度;
93)采用大写字母、小写字母、数字和下划线和$符号的自定义类名的平均长度;
94)类或者接口中的平均代码行数;
95)类或者接口中的平均变量个数;
96)类或者接口中的平均函数个数;
97)类或者接口中的平均自定义函数个数;
98)类或者接口中的自定义函数个数;
99)自定义函数中平均参数个数;
100)带有关键字“static”的代码行占所有代码行的比例;
101)带有关键字“extends”的代码行占所有代码行的比例;
102)带有关键字“class”的代码行占所有代码行的比例;
103)带有关键字“abstract”的代码行占所有代码行的比例;
104)带有关键字“implements”的代码行占所有代码行的比例;
105)带有关键字“import”的代码行占所有代码行的比例;
106)带有关键字“interface”的代码行占所有代码行的比例;
107)带有关键字“native”的代码行占所有代码行的比例;
108)带有关键字“new”的代码行占所有代码行的比例;
109)带有关键字“package”的代码行占所有代码行的比例;
110)带有关键字“private”的代码行占所有代码行的比例;
111)带有关键字“public”的代码行占所有代码行的比例;
112)带有关键字“protect”的代码行占所有代码行的比例;
113)带有关键字“this”的代码行占所有代码行的比例;
114)带有关键字“super”的代码行占所有代码行的比例;
115)带有关键字“try”的代码行占所有代码行的比例;
116)带有关键字“throw”的代码行占所有代码行的比例;
117)带有关键字“catch”的代码行占所有代码行的比例;
118)带有关键字“final”的代码行占所有代码行的比例;
119)程序包名的平均长度(以逗号作为分隔符);
120)程序包名中使用了哪些字符串。
d、字符串特征,所述字符串特征是开发者在定义字符串时表现的一些特征。比如开发者使用了何种语言,从这可以看出开发者的语言环境背景。还有开发者使用了哪些域名、ip,有的勒索软件等还会留下不需要实名注册的QQ或者电子邮箱等联系方式。利用源代码、xml文件和从图片中提取的字符串,提取我们需要的特征。
字符串特征包括但不限于包括如下内容:
1)图片字符串、xml文件以及源代码文件中字符串使用了何种语言;
2)图片字符串、xml文件以及源代码文件中字符串里的域名和ip;
3)图片字符串、xml文件以及源代码文件中字符串里的电子邮箱地址。
对于APK数据中的一系列APK安装包都通过上述方式提取程序特征,从而形成程序特征库。
步骤2、利用机器学习算法结合程序特征库建立分类模型。
本发明实施例中,所述机器学习算法包括:朴素贝叶斯、支持向量机、神经网络与随机森林算法。利用机器学习算法与前一步骤形成的程序特征库来建立分类模型。
步骤3、将待溯源分析的恶意软件的程序特征作为输入样本输入至分类模型,得到输入样本与分类模型中样本的相似度以及每个程序特征所占的权重。
在此基础上,还可以分析提取恶意软件的开发者或者开发组织的关键判定因素,利用人机结合对恶意软件的开发者或者开发组织进行分析。
所述关键判定因素是指除了从恶意软件上分析得到的信息。比如利用技术手段追踪到攻击者的ip;还有的攻击者出于炫耀的心理留下一些表示自己身份的标识;以及利用社会工程学等各种手段获取的额外关于攻击者的信息等。
此外,所述待溯源分析的恶意软件同样采用步骤1的方式提取出程序特征,然后作为输入样本输入至分类模型。
本发明实施例上述方案,在面对大量的Android恶意软件的时候,可以快速的部署和应用。利用这种方法可以提取开发者或者开发组织的特征,并且建立相应的数据库和数据模型。在遇到新的Android恶意软件时,可以通过模型快速判断出恶意软件的开发者或者开发组织,从而从源头遏制恶意软件的泛滥。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (6)

1.一种Android恶意软件的溯源方法,其特征在于,包括:
从对APK数据中的APK安装包进行解压,并对解压结果进行解析,从而提取出程序特征,最终由一系列APK安装包的程序特征形成程序特征库;
利用机器学习算法结合程序特征库建立分类模型;
将待溯源分析的恶意软件的程序特征作为输入样本输入至分类模型,得到输入样本与分类模型中样本的相似度以及每个程序特征所占的权重。
2.根据权利要求1所述的一种Android恶意软件的溯源方法,其特征在于,对APK安装包进行解压,获得DEX文件、xml文件及图片文件。
3.根据权利要求2所述的一种Android恶意软件的溯源方法,其特征在于,对DEX文件进行解析获得源代码;对xml文件进行解析获得可读的文件;对图片文件进行解析获得图片字符串。
4.根据权利要求1或2或3所述的一种Android恶意软件的溯源方法,其特征在于,提取出的程序特征包括:
程序布局特征,所述程序布局特征是程序开发者在编写代码时的一些布局习惯;
程序结构特征,所述程序结构特征是开发者在编写代码时的一些逻辑习惯;
程序风格特征,所述程序风格特征是指开发者对各种变量命名时,使用的命令习惯和风格、函数的长度、以及带各种关键字的代码的使用频率;;
字符串特征,所述字符串特征是开发者在定义字符串时表现的一些特征。
5.根据权利要求1所述的一种Android恶意软件的溯源方法,其特征在于,所述机器学习算法包括:朴素贝叶斯、支持向量机、神经网络与随机森林算法。
6.根据权利要求1所述的一种Android恶意软件的溯源方法,其特征在于,再得到输入样本与分类模型中样本的相似度以及每个程序特征所占的权重的基础上,分析提取恶意软件的开发者或者开发组织的关键判定因素,利用人机结合对恶意软件的开发者或者开发组织进行分析。
CN201810489704.8A 2018-05-21 2018-05-21 一种Android恶意软件的溯源方法 Pending CN108664792A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810489704.8A CN108664792A (zh) 2018-05-21 2018-05-21 一种Android恶意软件的溯源方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810489704.8A CN108664792A (zh) 2018-05-21 2018-05-21 一种Android恶意软件的溯源方法

Publications (1)

Publication Number Publication Date
CN108664792A true CN108664792A (zh) 2018-10-16

Family

ID=63777078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810489704.8A Pending CN108664792A (zh) 2018-05-21 2018-05-21 一种Android恶意软件的溯源方法

Country Status (1)

Country Link
CN (1) CN108664792A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110008700A (zh) * 2019-03-20 2019-07-12 北京大学 一种基于朴素贝叶斯的安卓恶意应用的检测方法及装置
CN113691492A (zh) * 2021-06-11 2021-11-23 杭州安恒信息安全技术有限公司 违法应用程序的确定方法、系统、装置及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809395A (zh) * 2015-04-23 2015-07-29 天津大学 一种轻量级安卓恶意软件快速判断方法
CN104933365A (zh) * 2015-07-08 2015-09-23 中国科学院信息工程研究所 一种基于调用习惯的恶意代码自动化同源判定方法及系统
CN107958154A (zh) * 2016-10-17 2018-04-24 中国科学院深圳先进技术研究院 一种恶意软件检测装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809395A (zh) * 2015-04-23 2015-07-29 天津大学 一种轻量级安卓恶意软件快速判断方法
CN104933365A (zh) * 2015-07-08 2015-09-23 中国科学院信息工程研究所 一种基于调用习惯的恶意代码自动化同源判定方法及系统
CN107958154A (zh) * 2016-10-17 2018-04-24 中国科学院深圳先进技术研究院 一种恶意软件检测装置及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
董志强等: "编码心理学分析病毒同源性", 《信息安全与通信保密》 *
郑荣锋等: "基于动态行为指纹的恶意代码同源性分析", 《四川大学学报(自然科学版)》 *
颜颖等: "基于基本块指纹的二进制代码同源性分析", 《网络安全技术与应用》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110008700A (zh) * 2019-03-20 2019-07-12 北京大学 一种基于朴素贝叶斯的安卓恶意应用的检测方法及装置
CN110008700B (zh) * 2019-03-20 2020-12-22 北京大学 一种基于朴素贝叶斯的安卓恶意应用的检测方法及装置
CN113691492A (zh) * 2021-06-11 2021-11-23 杭州安恒信息安全技术有限公司 违法应用程序的确定方法、系统、装置及可读存储介质

Similar Documents

Publication Publication Date Title
Boucher et al. Bad characters: Imperceptible nlp attacks
Bhatia et al. Towards an information type lexicon for privacy policies
US11775749B1 (en) Content masking attacks against information-based services and defenses thereto
Li et al. {TextShield}: Robust text classification based on multimodal embedding and neural machine translation
CN111931935B (zh) 基于One-shot 学习的网络安全知识抽取方法和装置
CN105653949B (zh) 一种恶意程序检测方法及装置
Linoy et al. De‐anonymizing Ethereum blockchain smart contracts through code attribution
Qiao et al. Malware classification based on multilayer perception and Word2Vec for IoT security
Miura et al. Macros finder: Do you remember loveletter?
Hu et al. Champ: Characterizing undesired app behaviors from user comments based on market policies
Park et al. Ontological detection of phishing emails
Linoy et al. Exploring Ethereum’s blockchain anonymity using smart contract code attribution
Chen et al. Nmtsloth: understanding and testing efficiency degradation of neural machine translation systems
CN112580331A (zh) 政策文本的知识图谱构建方法及系统
Hara et al. Machine-learning approach using solidity bytecode for smart-contract honeypot detection in the ethereum
CN108664792A (zh) 一种Android恶意软件的溯源方法
Benavides-Astudillo et al. Comparative study of deep learning algorithms in the detection of phishing attacks based on HTML and text obtained from web pages
CN114580371A (zh) 基于自然语言处理的程序语义混淆方法及系统
Rani et al. TTPHunter: automated extraction of actionable intelligence as TTPs from narrative threat reports
Zhao et al. Demystifying privacy policy of third-party libraries in mobile apps
JP2013114287A (ja) 文字列変換装置、文字列変換方法及び文字列変換プログラム
CN113971284A (zh) 基于JavaScript的恶意网页检测方法、设备及计算机可读存储介质
KR102483004B1 (ko) 유해 url 탐지 방법
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
KR101863569B1 (ko) 머신 러닝 기반의 취약점 정보를 분류하는 방법 및 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20181016

RJ01 Rejection of invention patent application after publication