一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法技术

技术编号:15725071 阅读:65 留言:0更新日期:2017-06-29 12:22
本发明专利技术涉一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,属于信息安全技术领域,步骤为:反编译Android APK,生成APK的函数调用关系图;根据节点中的代码对节点进行分类、添加标签值;拆分多属性节点;在图中添加隐式调用边;删除无害节点,得到裁剪后的函数调用图;对经过裁剪后的函数调用图进行可视化设置;利用可视化软件与函数调用图帮助安全人员分析程序。本发明专利技术在可视化界面中帮助安全人员快速识别已知的、未知的恶意代码,精准发现代码中包含的恶意行为。

【技术实现步骤摘要】
一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法
本专利技术涉及一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,属于信息安全

技术介绍
根据德国网络安全公司GDATA最新公布的一份调查报告显示,2015年Android恶意软件样本数量达到了2333777个。形象点来描述就是差不多每隔11秒就会出现一个新的Android恶意样本。Android恶意软件增长速度极快,该数值同比2014年增长了50%。而在2015年第四季度,新出现的Android恶意软件数量达到了758133个,同比2014年第四季度增长了32%。目前Android系统与我们的工作生活息息相关,如何快速识别新型的Android恶意软件对于信息安全人员是一个严峻的挑战。近年来,研究人员已经采用了多种自动化Android恶意软件分析技术来帮助识别恶意软件。虽然在Android恶意软件分析领域已经有了不少有效的方法,但是在恶意软件可视化方面仍有很多需要研究的地方。现有的恶意软件分析方法可以大致分为静态分析、动态分析和机器学习。但是这些方法和流行的反病毒引擎都存在不小的漏报率和误报率,人工分析的准确率依然优于机器分析。对于已有的、新出现的恶意软件,安全分析人员和研究人员都会想深入了解它们包含的具体的恶意行为以帮助日后的研究工作,可是这些信息很难从网络上获取。现有的Androguard技术可以在java代码层生成Android软件的基本的调用图和控制流图。但是它的调用图规模庞大且调用链通常是不完整的,也不能给出不同的类之间调用的相关性。
技术实现思路
针对现有技术的缺陷,本专利技术的目的是实现一种先自动化分析Android软件再将其可视化的辅助人工恶意软件分析的方法。本方法在极大程度的缩小函数调用关系图的规模的同时保存恶意软件中包含的核心恶意行为,另外还可以完整的显示恶意行为触发过程的调用链。本方法还可以帮助人工分析提高恶意软件分析的效率及准确率。为了实现上述目的,本专利技术采用了如下技术方案:一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,包括如下步骤。一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,其特征在于包括如下步骤。(1)生成函数调用关系图:反编译AndroidAPK,用节点表示基本代码块,节点间的有向调用边表示控制流路径,生成APK的函数调用关系图,即CallGraph(CG);对函数调用关系图中的节点,根据节点中的类名、方法名、代码以及分类规则为节点分类并添加标签值,得到一张新图称之为添加标签值的函数调用关系图。该图中节点共有9种分类,第1类为普通,第2类为活动Activity,第3类为服务Service,第4类为广播接收器BroadcastReceiver,第5类为用户行为user-behavior,第6类为事件event,第7类为额外的被调用者callee-extra,第8类为调用者caller,第9类为危险接口riskyapi,其中第2、3、4、7类统称为被调用者callee;每个节点可能属于其中一种或者多种分类,只属于2至9类中一类的节点为单属性节点,属于2至9类中两种及以上分类的节点为多属性节点;(2)拆分多属性节点:将步骤(1)所得的添加标签值的函数调用关系图中多属性节点拆分为多个节点,使得每个节点只包含原多属性节点的一个标签值;将所有多属性节点拆分后,得到一张新图称之为经过拆分的函数调用关系图;(3)添加隐式调用边:在步骤(2)所得的经过拆分的函数调用关系图中,为存在隐式调用关系的节点之间添加调用边;得到一张新图称之为添加隐式调用边的函数调用关系图;这种根据隐式调用关系添加的调用边称之为隐式调用边;(4)裁剪:对步骤(3)所得的添加隐式调用边的函数调用关系图进行裁剪,删除不直接或者间接调用riskyapi类节点的非riskyapi类节点,得到一张新图称之为经过裁剪的函数调用关系图;(5)添加颜色和尺寸:为步骤(4)所得的经过裁剪的函数调用关系图中的节点根据节点类型设置尺寸和颜色,得到经过裁剪及自定义设置的函数调用关系图,即PMCG;(6)采用现有或自开发的可视化界面,利用可视化软件打开PMCG中的文件,可视化展示PMCG,协助用户分析判断是否存在恶意行为。所述步骤(1)中,根据节点中的类名、方法名、代码以及分类规则为节点分类并添加标签值,具体如下:J.第1类为普通节点,分类规则为:2至9类以外的节点,没有标签值;K.第2类为活动Activity节点,分类规则为:节点中代码的类继承于Activity,方法名为OnCreate,标签值为:Activity;L.第3类为服务Service节点,分类规则为:节点中代码的类继承于Service,方法名为OnCreate,标签值为:Service;M.第4类为广播接收器BroadcastReceiver节点,分类规则为:节点中代码的类继承于BroadcastReceiver,方法名为OnReceive,标签值为:BroadcastReceiver&这个广播接收器监听的广播;N.第5类为用户行为user-behavior节点,分类规则为:节点中代码属于用户触发的事件,标签值为:该节点的方法名;O.第6类为事件event节点,分类规则为:节点中代码属于用户触发事件以外的事件,标签值为:该节点的方法名;P.第7类为额外的被调用者callee-extra节点,分类规则为:节点中代码的方法名属于用户自定义的(caller,callee)对列表中callee类中的方法名,标签值为:该节点的方法名;Q.第8类为调用者caller节点,分类规则为:包含调用callee类节点函数的节点,调用callee类节点的函数集合可以根据Android操作系统变化以及用户自定义(caller,callee)对列表进行调整,标签值为:调用callee类节点所用到的函数名;R.第9类为危险接口riskyapi节点,分类规则为:节点中代码使用了用户自定义的敏感应用程序编程接口API列表中的API,敏感API列表用户可以根据自身需要进行定义,标签值为:代码中的敏感API。所述步骤(2)中,多属性节点拆分为多个节点的方法为:对每个多属性节点执行以下步骤:E.设多属性节点属于n个类;F.生成n-1个新节点,为新节点设置编号;G.n-1个新节点与原多属性节点每个节点不重复的保存原多属性节点的一个分类及该分类对应的标签值;H.添加原多属性节点到这n-1个新节点的双向边。所述步骤(3)中,为存在隐式调用关系的节点之间添加调用边的方法为:I.对于每一个代码中包含启动活动Activity的函数的节点,它属于caller,查找到它启动的Activity节点。被启动的Activity节点为该caller节点对应的callee节点,为该caller节点与其对应的callee节点之间添加一条调用边;J.对于每一个代码中包含启动服务Service的函数的节点,它属于caller,查找到它启动的Service节点。被启动的Service节点为该caller节点对应的callee节点,为该caller节点与其对应的callee节点之间添加一条调用边;K.对于每一个代码中包含注册Broad本文档来自技高网...
一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法

【技术保护点】
一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,其特征在于包括如下步骤:(1)生成函数调用关系图:反编译Android APK,用节点表示基本代码块,节点间的有向调用边表示控制流路径,生成APK的函数调用关系图,即Call Graph(CG);对函数调用关系图中的节点,根据节点中的类名、方法名、代码以及分类规则为节点分类并添加标签值,得到一张新图称之为添加标签值的函数调用关系图;该图中节点共有9种分类,第1类为普通,第2类为活动Activity,第3类为服务Service,第4类为广播接收器Broadcast Receiver,第5类为用户行为user‑behavior,第6类为事件event,第7类为额外的被调用者callee‑extra,第8类为调用者caller,第9类为危险接口riskyapi,其中第2、3、4、7类统称为被调用者callee;每个节点可能属于其中一种或者多种分类,只属于2至9类中一类的节点为单属性节点,属于2至9类中两种及以上分类的节点为多属性节点;(2)拆分多属性节点:将步骤(1)所得的添加标签值的函数调用关系图中多属性节点拆分为多个节点,使得每个节点只包含原多属性节点的一个标签值;将所有多属性节点拆分后,得到一张新图称之为经过拆分的函数调用关系图;(3)添加隐式调用边:在步骤(2)所得的经过拆分的函数调用关系图中,为存在隐式调用关系的节点之间添加调用边;得到一张新图称之为添加隐式调用边的函数调用关系图;这种根据隐式调用关系添加的调用边称之为隐式调用边;(4)裁剪:对步骤(3)所得的添加隐式调用边的函数调用关系图进行裁剪,删除不直接或者间接调用riskyapi类节点的非riskyapi类节点,得到一张新图称之为经过裁剪的函数调用关系图;(5)添加颜色和尺寸:为步骤(4)所得的经过裁剪的函数调用关系图中的节点根据节点类型设置尺寸和颜色,得到经过裁剪及自定义设置的函数调用关系图,即PMCG;(6)采用现有或自开发的可视化界面,利用可视化软件打开PMCG中的文件,可视化展示PMCG,协助用户分析判断是否存在恶意行为。...

【技术特征摘要】
1.一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,其特征在于包括如下步骤:(1)生成函数调用关系图:反编译AndroidAPK,用节点表示基本代码块,节点间的有向调用边表示控制流路径,生成APK的函数调用关系图,即CallGraph(CG);对函数调用关系图中的节点,根据节点中的类名、方法名、代码以及分类规则为节点分类并添加标签值,得到一张新图称之为添加标签值的函数调用关系图;该图中节点共有9种分类,第1类为普通,第2类为活动Activity,第3类为服务Service,第4类为广播接收器BroadcastReceiver,第5类为用户行为user-behavior,第6类为事件event,第7类为额外的被调用者callee-extra,第8类为调用者caller,第9类为危险接口riskyapi,其中第2、3、4、7类统称为被调用者callee;每个节点可能属于其中一种或者多种分类,只属于2至9类中一类的节点为单属性节点,属于2至9类中两种及以上分类的节点为多属性节点;(2)拆分多属性节点:将步骤(1)所得的添加标签值的函数调用关系图中多属性节点拆分为多个节点,使得每个节点只包含原多属性节点的一个标签值;将所有多属性节点拆分后,得到一张新图称之为经过拆分的函数调用关系图;(3)添加隐式调用边:在步骤(2)所得的经过拆分的函数调用关系图中,为存在隐式调用关系的节点之间添加调用边;得到一张新图称之为添加隐式调用边的函数调用关系图;这种根据隐式调用关系添加的调用边称之为隐式调用边;(4)裁剪:对步骤(3)所得的添加隐式调用边的函数调用关系图进行裁剪,删除不直接或者间接调用riskyapi类节点的非riskyapi类节点,得到一张新图称之为经过裁剪的函数调用关系图;(5)添加颜色和尺寸:为步骤(4)所得的经过裁剪的函数调用关系图中的节点根据节点类型设置尺寸和颜色,得到经过裁剪及自定义设置的函数调用关系图,即PMCG;(6)采用现有或自开发的可视化界面,利用可视化软件打开PMCG中的文件,可视化展示PMCG,协助用户分析判断是否存在恶意行为。2.根据权利要求1所述的基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,其特征在于:所述步骤(1)中,根据节点中的类名、方法名、代码以及分类规则为节点分类并添加标签值,具体如下:A.第1类为普通节点,分类规则为:2至9类以外的节点,没有标签值;B.第2类为活动Activity节点,分类规则为:节点中代码的类继承于Activity,方法名为OnCreate,标签值为:Activity;C.第3类为服务Service节点,分类规则为:节点中代码的类继承于Service,方法名为OnCreate,标签值为:Service;D.第4类为广播接收器BroadcastReceiver节点,分类规则为:节点中代码的类继承于BroadcastReceiver,方法名为OnReceive,标签值为:BroadcastReceiver&这个广播接收器监听的广播;E.第5类为用户行为user-behavior节点,分类规则为:节点中代码属于用户触发的事件,标签值为:该节点的方法名;F.第6类为事件event节点,分类规则为:节点中代码属于用户触发事件以外的事件,标签值为:该节点的方法名;G.第7类为额外的被调用者callee-extra节点,分类规则为:节点中代码的方法名属于用户自定义的(caller,callee)对列表中callee类中的方法名,标签值为:该节点的方法名;H.第8类为调用者caller节点,分类规则为:包含调用callee类节点函数的节点,调用callee类节点的函数集合可以根据Android操作系统变化以及用户自定义(caller,callee)对列表进行调整,标签值为:调用callee类节点所用到的函数名;I.第9类为危险接口riskyapi节点,分类规则为:节点中代码使用了用户自定义的敏感应用程序编程接口API列表中的API,敏感API列表用户可以根据自身需要进行定义,标签值为:代码中的敏感API。3.根据权利要求1所述的基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,其特征在于:所述步骤(2)中,多属性节点拆分为多个节点的方法为:对每个多属...

【专利技术属性】
技术研发人员:张妍彭贵王雅哲
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1