分析装置、分析方法和分析程序与流程

文档序号:12513048阅读:223来源:国知局
分析装置、分析方法和分析程序与流程

本发明涉及分析装置、分析方法和分析程序。



背景技术:

以往,已知对于路过式下载攻击等的网络攻击,通过浏览器的模拟器(以下,称作浏览器模拟器)执行恶性代码,并对执行结果进行分析,从而检测恶性代码的手法(例如,参照非专利文献1、非专利文献2)。

该路过式下载攻击(Drive-by Download攻击)使用JavaScript(注册商标)等的代码,在经由多个网站(以下,称作踏板URL(Uniform Resource Locator))之后,将客户转发给执行攻击代码的恶性网站(以下,称作攻击URL)。如果客户访问攻击URL,则恶意利用浏览器或浏览器的插件(以下,称作插件)的脆弱性的攻击代码会被执行,使得客户下载、安装计算病毒等的恶性程序。

浏览器模拟器以函数单位监视网站中包含的代码的执行,检测具有脆弱性的浏览器或插件的函数的恶意使用,由此检测恶性代码。恶性代码恶意使用浏览器或插件所准备的函数的脆弱性,通过输入较长的字符串或较大的数值,由此引起不当改写计算的存储器区域的缓存溢出或不当操作存储器的分配方法的堆喷射(heap spray),从而执行攻击代码。因此,浏览器模拟器通过监视代码中的脆弱插件的使用或向函数中的字符串输入、数值输入,由此检测恶性代码。

例如,浏览器模拟器关注于作为Internet Explorer(注册商标)的插件的ActiveX(注册商标),预先准备好针对脆弱的ActiveX(注册商标)组件的函数的攻击代码以作为签名,并且在代码执行时与签名匹配的情况下,将该网站判定为恶性网站(参照非专利文献1)。

此外,还研究出了浏览器模拟器收集在操作JavaScript(注册商标)的字符串的函数(例如,substring())或动态生成代码的函数(例如,eval())的执行次数或函数中使用的自变量信息,进行基于所收集的信息的机械学习的检测手法(参照非专利文献2)。

另一方面,恶性代码对大范围的应用(例如,浏览器为Internet Explorer(注册商标)、Firefox(注册商标)、Opera(注册商标)等,插件为Adobe Acrobat(注册商标)、Adobe Flash Player(注册商标)、Oracle JRE(注册商标)等)的脆弱性进行恶意使用。被恶意使用的脆弱性的种类按照每种OS(Operating System:操作系统)或浏览器、插件的种类或版本(以下,称作客户环境)而被细化,形式多种多样。

此外,在JavaScript(注册商标)中,通过使用对访问网站的客户环境进行识别的浏览器指纹识别(Browser Fingerprinting),由此能够取得客户环境信息。

在路过式下载攻击的踏板URL中,使用该浏览器指纹识别取得客户环境信息,通过基于客户环境信息的控制语句,仅对具备作为攻击对象的客户环境的客户执行向攻击URL转发的代码(以下,称作转发代码)或取得包含攻击代码的内容的HTML(HyperText Markup Language:超文本标记语言)标签的插入代码(以下,称作内容取得代码)(以下,称作环境依赖攻击。参照非专利文献3)。因此,在上述现有技术中,在浏览器模拟器中被设定的客户环境与攻击对象的客户环境不同的情况下,由于无法到达攻击URL,因此恶性代码的检测技术不会有效地发挥功能。

另一方面,还提出了使用抽象语法树或程序切片等技术,全面地分析代码,提取被嵌入到JavaScript(注册商标)中的URL的手法(参照非专利文献4)。抽象语法树(Abstract Syntax Tree,AST)指的是通过抽象的树结构来表现程序结构的数据结构。通过搜索抽象语法树,由此能够全面地分析程序。即,能够在不依赖于程序结构的情况下分析代码,因此也能够对不通过JavaScript(注册商标)的控制语句执行的的代码进行静态分析。

此外,程序切片(Program Slicing)是从程序中提取被称作切片基准(Slicing Criteria)<s,v>的与在程序内的任意的语句s中关注的变量v关联的一部分语句集合的技术(参照非专利文献5)。按照切片基准而被提取的语句集合被称作切片(Slice)。作为该提取切片的手法,已知基于数据流程的程序切片手法和基于依赖曲线图的程序切片手法。

在非专利文献4中,使用访问网站时取得的JavaScript(注册商标)整体的抽象语法树,确定被使用URL的代码。此后,使用程序切片去除与URL不存在关系的代码,然后进行JavaScript(注册商标)解释器对代码的执行。然而,在独自的JavaScript(注册商标)解释器上安装了手段,与参照客户的插件信息的代码不对应。此外,由于以搜索引擎的覆盖范围的提高为目的,因此一并提取出被用作攻击URL的可能性较低的在a标签或form标签等中使用的URL。

在先技术文献

非专利文献

非专利文献1:Jose Nazario,“PhoneyC:A Virtual Client Honeypot”,In Proceedings of the USENIX Workshop on Large-Scale Exploits and Emergent Threats(LEET),April2009,[2014年9月2日检索],因特网<URL:https://www.usenix.org/legacy/events/leet09/tech/full_papers/nazario/nazario.pdf>

非专利文献2:Marco Cova,Christopher Kruegel,Giovanni Vigna,“Detection and Analysis of Drive-by-Download Attacks and Malicious JavaScript Code”,In Proceedings of the World Wide Web Conference(WWW),April 2010,[2014年9月2日检索],因特网<URL:http://www.cs.ucsb.edu/~vigna/publications/2010_cova_kruegel_vigna_Wepawet.pdf>

非专利文献3:高田雄太、秋山满昭、针生刚男,“在路过式下载攻击中使用的恶性JavaScript的实态调査”,电子信息通信学会,信息通信系统安全研究会,2014年3月,[2014年9月2日检索],因特网<URL:http://www.ieice.org/ken/paper/20140327QBlZ/>

非专利文献4:Qi Wang,Jingyu Zhou,Yizhou Zhang,Jianjun Zhao,“Extracting URLs from JavaScript via Program Analysis”,In Proceedings of the 9th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering,August 2013,[2014年9月2日检索],因特网<URL:http://stap.sjtu.edu.cn/images/2/2e/ExtractingAnalysis.pdf>

非专利文献5:Mark Weiser,“PROGRAM SLICING”,In Proceedings of the 5th International Conference on Software Engineering,1981,[2014年9月2日检索],因特网<URL:http://dl.acm.org/citation.cfm?id=802557>



技术实现要素:

发明欲解决的课题

现有技术未考虑到依赖于代码的控制语句的转发代码或内容取得代码,因此例如存在不会通过进行路过式下载攻击的代码的控制语句被转发给踏板URL或攻击URL的问题。其结果是,恶性代码的检测技术未能有效发挥功能,存在无法检测恶性代码的可能。

例如,在某个踏板URL上,使用浏览器指纹识别取得JRE(注册商标)的版本信息,使用被施加了仅对JRE(注册商标)版本7执行发往攻击URL的转发代码的控制的JavaScript(注册商标)代码的情况下,在未安装JRE(注册商标)的客户环境或安装了JRE(注册商标)版本7以外的JRE(注册商标)的客户环境下,无法执行转发代码。其结果是,来自客户的访问不被转发给踏板URL或攻击URL,因此恶性代码的检测技术未有效发挥功能,无法检测恶性代码。

于是,本发明的课题在于解决所述问题,对依赖于客户环境进行路过式下载攻击的代码进行分析。

用于解决课题的手段

为了解决所述课题,本发明提供一种分析装置,其分析网页内容中包含的代码,其特征在于,该分析装置具有:语法分析部,其通过进行所述网页内容中包含的代码的语法分析,从所述代码中搜索发往其他网站的转发代码或内容取得代码,确定在作为所述搜索的结果而发现的转发代码或内容取得代码中使用的对象、对象的属性和函数中的至少任意一方;以及程序切片部,其根据所述确定的对象、对象的属性和函数中的至少任意一方,提取与所述转发代码或内容取得代码具有依赖关系的代码。

发明的效果

根据本发明,能够对依赖于客户环境进行路过式下载攻击的代码进行分析。其结果是,例如能够从该代码中提取出在路过式下载攻击中被用于攻击URL或踏板URL的可能性较高的URL。

附图说明

图1是表示系统的结构例的图。

图2是表示浏览器模拟器管理器的结构例的图。

图3是表示程序分析部的分析对象的代码的示例的图。

图4是表示转发代码和内容取得代码的示例的图。

图5是表示抽象语法树的示例的图。

图6是表示程序依赖曲线图的示例的图。

图7是表示切片的示例的图。

图8是表示被登记在分析信息数据库中的分析信息的示例的图。

图9是表示系统的处理步骤的示例的流程图。

图10是表示图9的代码分析的处理步骤的示例的流程图。

图11是表示图9的代码分析的处理步骤的示例的流程图。

图12是表示系统的结构例的图。

图13是表示浏览器模拟器管理器的结构例的图。

图14是表示程序分析部的分析对象的代码的示例的图。

图15是表示脚本转发代码、标签转发代码、在代码中使用的HTML标签及其属性名的对的示例的图。

图16是表示程序依赖曲线图的示例的图。

图17是表示根据切片基准<14、location.href>而成为提取对象的节点的示例的图。

图18是用于说明根据切片基准<14、location.href>而被提取的切片的图。

图19是用于说明通过执行路径搜索部而被提取的切片的图。

图20是表示根据切片基准<5、if>而成为提取对象的节点的示例的图。

图21是用于说明根据切片基准<5、if>而被提取的切片的图。

图22是表示被存储在分析信息数据库中的分析信息的示例的图。

图23是表示系统的处理步骤的示例的流程图。

图24是表示图23的代码分析的处理步骤的示例的流程图。

图25是表示图23的代码分析的处理步骤的示例的流程图。

图26是表示图23的代码分析的处理步骤的示例的流程图。

图27是表示图25和图26的切片的提取的处理步骤的示例的流程图。

图28是表示执行分析程序的计算的图。

具体实施方式

以下,根据附图,对用于实施本发明的方式(实施方式)进行说明。本发明并不限定于本实施方式。

[第1实施方式]

首先,使用图1说明第1实施方式的系统的结构例。系统例如图1所示,具有网络1和网络2。网络1和网络2通过分组转发装置3而被连接起来。

网络1具有分析对象网站12。网络1既可以是如因特网那样广域的网络,也可以如法人网络那样是中小规模的网络或云环境以及托管环境的网络。

分析对象网站12是浏览器模拟器管理器(分析装置)23的分析对象的网站。该分析对象网站12例如是在被公开的恶性网站的黑名单上登载的网站等。

此外,网络2具有浏览器模拟器管理器23和分析信息数据库24。网络2既可以是如局域网那样小规模的网络,也可以是如法人网络那样中小规模的网络或云环境以及托管环境的网络。

浏览器模拟器管理器23管理1个以上的浏览器模拟器25,使该浏览器模拟器25访问规定的网站(分析对象网站12)。并且,浏览器模拟器管理器23将浏览器模拟器25所访问的网站的URL或通过从该网站取得的代码的分析而得到的URL等蓄积在分析信息数据库24中。

浏览器模拟器25是模拟浏览器的动作的装置。该浏览器模拟器25例如可使用由Honeynet工程提供的浏览器模拟器或作为开放源代码而被开发的HtmlUnit或Selenium。该浏览器模拟器25的详细情况将在后文描述。另外,在图1中浏览器模拟器25被描绘为构建在浏览器模拟器管理器23内,而其当然也可以被构建在浏览器模拟器管理器23外。

分析信息数据库24蓄积(保存)浏览器模拟器25所访问的网站的URL或通过从该网站取得的代码的分析而得到的URL等。该分析信息数据库24的数据的保存既可以使用RDBMS(Relational DataBase Management System:关系数据库管理系统),也可以通过文本形式保存。该分析信息数据库24的详细情况将在后文描述。

另外,在本实施方式中,将浏览器模拟器25、浏览器模拟器管理器23和分析信息数据库24配置在相同的网络中,然而也可以将它们分别配置在不同的网络中。此外,将各结构与安全装置连接起来,因此可以使用现存的加密技术对通信信息加密,或者将配置有各装置的网络间或各结构间通过VPN(Virtual Private Network:虚拟专用网络)连接起来。

下面,使用图2具体说明浏览器模拟器管理器23和浏览器模拟器25。浏览器模拟器管理器23具有浏览器模拟器25和控制部27。控制部27在主系统26上使浏览器模拟器25进行动作。该主系统26例如使用浏览器模拟器管理器23具有的OS。控制部27的详细情况将在后文描述。

(浏览器模拟器)

下面,说明浏览器模拟器25。浏览器模拟器25具有客户环境模拟部251、访问部252、HTML/CSS(HyperText Markup Language/Cascading Style Sheets:超文本标记语言/层叠样式表)分析库253和脚本解释器部254。

客户环境模拟部251设定浏览器模拟器25应模拟的客户环境(例如,OS、浏览器、插件等)的信息。

访问部252进行网站(例如,图1的分析对象网站12)与HTTP(HyperText Transfer Protocol:超文本传输协议)或HTTPS(HyperText Transfer Protocol Secure:安全超文本传输协议)的通信,从该网站取得网页内容。这里,访问部252在HTTP或HTTPS的通信时,在HTTP报头的User-Agent字段使用通过客户环境模拟部251设定的客户环境。由此浏览器模拟器25模拟客户环境。该访问部252例如使用作为自由软件而被开发的cURL。

此外,访问部252将对网站的访问结果记录在访问日志中。例如,访问部252将所访问的网站的URL或访问的日期时间记录在访问日志中。此外,访问部252在访问该网站的结果是转移到其他网站的情况下,将该转移目的地的URL等也记录在访问日志中。

HTML/CSS分析库253分析通过访问部252取得的网页内容。此外,HTML/CSS分析库253在分析网页内容的结果是该网页内容中包含代码的情况下,使用脚本解释器部254分析代码。

脚本解释器部254分析网页内容中包含的代码。例如,在代码通过JavaScript(注册商标)而被记述的情况下,脚本解释器部254使用作为开放源代码而被开发的SpiderMonkey或V8JavaScript(注册商标)Engine等的JavaScript(注册商标)解释器、通过Java(注册商标)记述的作为JavaScript(注册商标)解释器的Rhino等分析代码。

(控制部)

下面,说明控制部27。控制部27具有URL列表制作部271、访问指示部272、程序分析部273、登记处理部278和URL分析部279。

URL列表制作部271制作作为各浏览器模拟器25巡回的网站(分析对象网站12)的URL列表的巡回对象URL列表。例如,URL列表制作部271根据在被公开的恶性网站的黑名单上登载的网站的URL制作巡回对象URL列表。

访问指示部272对各浏览器模拟器25的访问部252指示对于巡回对象URL列表(URL列表)所示的URL的访问。

程序分析部273进行从访问目的地的网站取得的网页内容中包含的程序(代码)的分析。该程序分析部273的详细情况在后文叙述。

登记处理部278取得各浏览器模拟器25的访问日志,并登记在分析信息数据库24中。此外,登记处理部278将通过程序分析部273的代码分析(后述的切片的执行)而得到的URL登记在分析信息数据库24中。

URL分析部279分析被蓄积在分析信息数据库24中的访问日志或通过代码分析而得到的URL(分析信息),并输出该分析结果。例如,URL分析部279从访问日志中包含的URL或通过代码分析得到的URL中提取出可能是攻击URL或踏板URL的URL并输出。

下面,具体说明程序分析部273。程序分析部273具有语法分析部274、程序依赖曲线图构建部275、程序切片部(提取部)276和切片执行部277。

语法分析部274进行通过浏览器模拟器25取得的网页内容中包含的代码的语法分析。具体而言,在浏览器模拟器25的脚本解释器部254分析网页内容中包含的代码的脚本的过程中,进行脚本的语法分析,从网页内容中包含的代码中搜索发往其他网站的转发代码或内容取得代码。并且,语法分析部274确定作为搜索的结果而被发现的转发代码或在内容取得代码中使用的对象、对象的属性、函数。

说明该语法分析的具体例。这里的分析对象的代码例如是通过图3所示的JavaScript(注册商标)而被记述的代码。另外,图3所示的代码是根据JRE的版本信息执行了控制命令后,执行向其他网站的转发的转发代码或执行从其他网站取得内容的内容取得代码的代码。此外,被语法分析部274作为搜索对象的转发代码和内容取得代码是图4的符号401和符号402所示的代码。另外,符号402所示的内容取得代码是根据在规定的HTML标签中被代入规定的属性名中的URL取得外部内容的代码。在该内容取得代码中使用的HTML标签与指定其外部内容的URL的属性名的对例如是符号403所示的HTML标签和属性名的对。与这些代码有关的信息(搜索对象代码信息)被存储在浏览器模拟器管理器23的存储部(省略图示)的规定区域内,可由管理者等适当设定。

例如,语法分析部274使用被搭载在Rhino上的JavaScript(注册商标)代码的抽象语法树分析功能,将图3的代码的控制语句部分(图3的第5行至第12行)变换为图5所示的抽象语法树。下面说明在该抽象语法树上的各节点(以下,称作AST节点)上标记的标签。

IfStatement表示JavaScript(注册商标)的if语句,从子AST节点的左侧开始表示条件语句、THEN语句、ELSE语句。Scope表示代码中的域的范围({}),ExpressionStatement表示包含示出语句的结尾的分号(;)的一行语句。在相当于第7行的抽象语法树中包含的FunctionCall表示函数执行,从子AST节点的左方起接连有函数名、自变量1、自变量2···。相当于FunctionCall的函数名的PropertyGet表示对象的属性参照,Name表示对象名或函数名、属性名。相当于FunctionCall的自变量1的StringLiteral表示字符串。进而,自变量2的InfixExpression表示二项运算,子AST节点分别表示左边和右边。在相当于图3的代码的第11行的抽象语法树中包含的Assignment表示代入语句,子AST节点分别表示左边和右边。此外,图5中的三角形的节点的SubTree1~3中,SubTree1表示图3的代码的第5行的条件语句,SubTree2表示图3的代码的第6行的语句,SubTree3表示图3的代码的第8行的语句,并且与其他情况同样地包含有抽象语法树。

例如,语法分析部274从图5所示的抽象语法树中搜索通过图5中的粗线强调的AST节点(setAttribute、location、href的AST节点),作为与图4所示的转发代码和内容取得代码关联的AST节点。

语法分析部274如上全面地搜索抽象语法树,由此还能够指定在不根据控制语句执行的转发代码或内容取得代码中使用的对象、对象的属性、函数。

另外,语法分析部274当然还可以通过上述的方法以外的方法进行代码的语法分析。

图2的程序依赖曲线图构建部275在语法分析部274的搜索结果是发现了搜索对象的代码(即,转发代码或内容转发代码)时,将从网页内容取得的代码的各语句作为节点,构建表示节点间的数据依赖关系和控制依赖关系的程序依赖曲线图。并且,程序依赖曲线图构建部275使用所构建的程序依赖曲线图,指定与所发现的转发代码或内容转发代码关联的节点。

例如,程序依赖曲线图构建部275构建将JavaScript(注册商标)代码中的变量定义语句、代入语句、函数定义语句、函数执行语句、返回语句、条件分支语句、循环语句、例外处理语句等作为程序依赖曲线图(Program Dependence Graph)上的节点(以下,称作PDG节点),并将节点间的数据依赖关系或控制依赖关系作为边界(以下,称作PDG边界)的程序依赖曲线图。

例如,程序依赖曲线图构建部275根据图3所示的代码构建图6所示的程序依赖曲线图。下面说明在图6所示的程序依赖曲线图的各PDG节点上标记的标签。VariableInitializer表示变量定义,一并标记出成为定义对象的变量名。IfStatement、Assignment、FunctionCall与图5所示的抽象语法树上的标签的意义相同,一并标记出条件语句或对象名、函数名。此外,通过图6所示的程序依赖曲线图的实线箭头示出的PDG边界表示数据依赖关系,通过虚线箭头示出的PDG边界表示控制依赖关系。例如,在图6所示的程序依赖曲线图中,示出FunctionCall ifr.setAttribute与VariableInitializer src、VariableInitializer jre、VariableInitializer ifr具有数据依赖关系,此外,还与IfStatement jre[1]==“6”具有控制依赖关系。

程序依赖曲线图构建部275根据这种程序依赖曲线图,指定与通过语法分析部274确定的代码(AST节点)关联的PDG节点。例如,在语法分析部274指定了在图5所示的抽象语法树中通过粗线强调的AST节点(setAttribute、location、href)的情况下,程序依赖曲线图构建部275指定通过图6的粗线强调的PDG节点(FunctionCall ifr.setAttribute、Assignment location.href),作为与该AST节点关联的PDG节点。

图2的程序切片部276将从网页内容取得的代码中的通过程序依赖曲线图构建部275指定的程序依赖曲线图的节点(例如,通过图6的粗线强调的PDG节点)的语句作为切片基准,并从程序依赖曲线图中提取出切片。即,程序切片部276使用程序依赖曲线图上的数据依赖关系(参照图6的实线箭头)使用逆向切片,提取与转发代码或内容取得代码关联的切片。另外,通常在提取切片时,会考虑到程序依赖曲线图上的控制依赖关系,而程序切片部276不考虑程序依赖曲线图上的控制依赖关系,而使用考虑到数据依赖关系的逆向切片,由此提取不依赖于代码的控制语句的切片。

程序切片部276例如使用图6所示的程序依赖曲线图,将通过粗线强调的PDG节点(FunctionCall ifr.setAttribute、Assignment location.href)的语句作为切片基准(图3所示的代码的第7行的setAttribute():<7,setAttribute>和第11行的location.href:<11,location.href>),并提取切片。例如,程序切片部276根据切片基准<7,setAttribute>,将与图3所示的代码的第7行的setAttribute的语句具有数据依赖关系的语句中作为切片提取(参照图7的符号701→符号702)。另外,这里省略了说明,而程序切片部276关于切片基准<11,location.href>也同样地提取切片。

图2的切片执行部277使脚本解释器部254执行通过程序切片部276提取的切片。即,切片执行部277使脚本解释器部254分析通过程序切片部276提取的切片,并在该分析的过程中,监视在转发代码或内容取得代码中使用的对象、对象的属性、被代入函数中的值的自变量,提取URL。

例如,考察浏览器模拟器25模拟安装有JRE(注册商标)版本7的客户环境的情况。这种情况下,切片执行部277若使浏览器模拟器25的脚本解释器部254执行图7的符号702所示的切片,监视在转发代码或内容取得代码中使用的对象、对象的属性、被代入函数中的值的自变量,则例如从正在监视的setAttribute()函数的自变量2中提取出http://example.com/exploit/?jre=7的URL。

其中,切片执行部277以能够执行操作DOM(Document Object Model:文档对象模型)的代码的方式,在DOM的读入完成的时机(例如,Firefox(注册商标)、Google Chrome(注册商标)中的DOMContentLoaded事件即将开始前)执行切片。此外,切片执行部277以使得执行切片的结果不会对原本的JavaScript(注册商标)等的处理带来影响的方式执行切片的时刻的DOM信息(DOM树的结构或值)和JavaScript(注册商标)的上下文信息(例如,变量定义或函数定义等)用于切片执行而被复制,在执行切片后被废弃。

此外,浏览器模拟器25的访问部252访问通过切片的执行而被提取的URL(例如,图8所示的分析信息的“切片”是“1”的URL),由此进而取得网页内容,在所取得的网页内容中包含代码的情况下,与上述同样地执行脚本解释器部254的脚本的分析、以及语法分析部274、程序依赖曲线图构建部275、程序切片部276和切片执行部277的处理。即,浏览器模拟器管理器23对通过切片的执行而被提取的URL进行递归的分析。由此,浏览器模拟器管理器23能够更多地提取存在作为攻击URL或踏板URL的可能性的URL。

另外,可以根据监视对象的对象或对象的属性、函数,由系统的管理者等适当设定浏览器模拟器管理器23对通过上述的切片的执行而被提取的URL是否进行递归的分析。

(分析信息数据库)

下面说明分析信息数据库24。如上所述,分析信息数据库24存储分析信息。分析信息例如图8所示,是将作为分析信息的识别信息的分析ID、作为浏览器模拟器25访问分析对象网站的URL时所访问的URL的“访问URL”、表示访问该URL的日期时间的“时戳”、表示该URL是否为通过程序切片而被提取的URL的“切片”等对应起来的信息。另外,该分析信息中的“切片”的项目为“1”的URL表示该URL是通过程序切片被提取的URL,“切片”的项目为“0”的URL表示该URL不是通过程序切片被提取的URL。此外,“访问URL”不仅包含分析对象网站的URL,还包含通过对该URL的访问而被转发的网站的URL。另外,分析信息当然还可以包含上述以外的信息。

根据以上说明的系统,全面地搜索从网页内容中取得的代码,确定转发代码或内容取得代码。并且,从该确定的转发代码或内容取得代码中提取URL。其结果是,系统能够提取出在依赖于客户的环境进行的路过式下载攻击中存在作为攻击URL或踏板URL的可能性的URL。

(处理步骤)

下面,使用图9,说明系统的处理步骤的示例。首先,URL列表制作部271制作巡回对象URL列表(S1)。例如,URL列表制作部271根据被公开的恶性网站的黑名单制作巡回对象URL列表。

并且,访问指示部272对浏览器模拟器25输入巡回对象URL列表的URL(S2),浏览器模拟器25访问通过访问部252在S2输入的URL(S3)。并且,访问部252从访问目的地的URL取得网页内容。

另外,在S2中,访问指示部272既可以使1个浏览器模拟器25访问多个URL,也可以使多个浏览器模拟器25分别访问不同的URL。

在S3之后,浏览器模拟器25的HTML/CSS分析库253分析所取得的网页内容,如果在脚本解释器部254所取得的网页内容中包含代码,则分析该代码,在程序分析部273中进行代码分析(S4)。该代码分析的详细情况在后文描述。

在S4之后,访问部252输出访问日志(S5)。即,访问部252将对于通过访问指示部272被输入的URL的访问结果作为访问日志输出。并且,登记处理部278对在S5中输出的访问日志、通过S4的代码分析被输出的URL进行整形(S6),将被整形后的数据蓄积在分析信息数据库24(参照图8)中(S7)。

这里,如果被设定有对通过切片执行部277的切片的执行而被提取的URL进行分析的内容(S8的Yes),则访问指示部272从分析信息数据库24的分析信息中读出通过切片的执行而被提取的URL,将该URL作为巡回对象URL的URL进行S2起的处理。即,浏览器模拟器管理器23对通过切片的执行而被提取的URL进行递归的分析。

另外,在S8中如果未设定对通过切片的执行而被提取的URL进行分析的内容(S8的No),在巡回对象URL列表中存在下一个巡回URL(S9的Yes),则返回S2。另一方面,如果在巡回对象URL列表中不存在下一个巡回URL(S9的No),则结束处理。

如上所述在分析信息数据库24中蓄积有分析信息时,URL分析部279进行分析信息的URL的分析处理,例如提取作为攻击URL或踏板URL的可能性较高的URL。

下面,使用图10和图11,具体说明图9的S4的代码分析处理。这里,举例说明在语法分析部274进行代码的语法分析时,使用抽象语法树(参照图5)的情况。

首先,语法分析部274将从网页内容中取得的代码变换为抽象语法树(参照图5)(图10的S11)。这里,在抽象语法树上存在成为搜索对象的抽象语法树节点的情况下(S12的Yes),程序依赖曲线图构建部275构建程序依赖曲线图(参照图6)(S13)。另一方面,在抽象语法树上不存在成为搜索对象的抽象语法树节点的情况下(S12的No),进入图11的S18。

此外,在S13之后,成为搜索对象的抽象语法树节点是与转发代码或内容取得代码关联的节点的情况下(S14的Yes),程序依赖曲线图构建部275确定与该抽象语法树节点关联的程序依赖曲线图节点(S15)。并且,程序依赖曲线图构建部275将在S15中确定的程序依赖曲线图节点作为用于切片基准的节点进行保持(S16)。另一方面,在S14中成为搜索对象的抽象语法树节点是与转发代码、内容取得代码都不相关联的节点的情况下(S14的No),进入S17。

在S17中程序依赖曲线图构建部275判断为存在成为下一个搜索对象的抽象语法树节点时(S17的Yes),返回S13。另一方面,在判断为不存在成为下一个搜索对象的抽象语法树节点时(S17的No),进入图11的S18。

在图11的S18中,程序依赖曲线图构建部275在判断为存在作为切片基准而保持的程序依赖曲线图节点时(S18的Yes),程序切片部276将在S16中保持的程序依赖曲线图节点的语句作为切片基准,进行切片的提取(S19)。另外,在S18中,程序依赖曲线图构建部275判断为不存在作为切片基准保持的程序依赖曲线图节点时(S18的No),结束处理。

在S19之后,切片执行部277执行在S19中被提取的切片(S20),从在转发代码或内容取得代码中使用的对象或对象的属性、被代入函数中的值或自变量中提取URL并输出(S21)。在S21之后,如果还存在成为下一个切片基准的程序依赖曲线图节点(S22的Yes),则返回S19,如果不存在成为下一个切片基准的程序依赖曲线图节点(S22的No),则结束处理。

根据以上说明的系统,全面地搜索从网页内容取得的代码,确定转发代码或内容取得代码。并且,从该确定的转发代码或内容取得代码中提取URL。其结果是,系统能够提取出在依赖于客户的环境进行的路过式下载攻击中存在作为攻击URL或踏板URL的可能性的URL。

另外,在语法分析部274确定的对象、对象的属性、函数不限于与转发代码或内容取得代码有关的内容,可以根据目的适当变更。

此外,在程序依赖曲线图构建部275中,JavaScript(注册商标)代码的语句中的作为程序依赖曲线图上的程序依赖曲线图节点的语句是变量定义语句、代入语句、函数定义语句、函数执行语句、返回语句、条件分支语句、循环语句、例外处理语句等,而除此以外还可以由系统的管理者等适当追加、变更。

另外,作为程序分析部273进行代码分析的结果而输出的信息可以是URL以外的信息。例如,如果事先得知用于攻击代码的对象或对象的属性、函数的信息,则程序分析部273可以使用这些信息确定攻击代码,输出在所确定的攻击代码中使用的各种信息。

此外,系统使用浏览器模拟器25访问分析对象网站12,然而也可以使用浏览器模拟器25以外(例如,实际的客户环境)访问分析对象网站12。

此外,系统的程序切片部276未考虑通过程序依赖曲线图构建部275而构建的程序依赖曲线图上的控制依赖关系,而根据数据依赖关系提取切片,然而不限于此。例如,程序切片部276可以使用程序依赖曲线图上的控制依赖关系的一部分和数据依赖关系提取切片。进而,程序切片部276使用程序依赖曲线图提取切片,然而只要能够把握各代码的控制依赖关系和数据依赖关系,则可以不使用程序依赖曲线图。

[第2实施方式]

下面,使用图12说明第2实施方式的系统的结构例。在第2实施方式中,说明考虑到控制依赖关系的切片的提取方法以及为进行转发而确定必要的客户环境的方法。第2实施方式的特征在于,具有:执行路径搜索部270a,其在所提取的切片中包含执行路径的情况下,为了全面地提取URL,按照每个执行路径提取切片;以及程序切片部276a,其为了对为向存在所提取的攻击URL或踏板URL的可能性的URL转发而需要的客户环境进行确定,将表示程序依赖曲线图上的条件分支语句的节点也作为切片基准添加。例如图12所示,系统具有网络1a和网络2a。网络1a和网络2a通过分组转发装置3a而被连接起来。

网络1a具有分析对象网站12a。网络1a既可以是如因特网那样广域的网络,也可以是如法人网络那样的中小规模的网络或云环境以及托管环境的网络。

分析对象网站12a是浏览器模拟器管理器(分析装置)23a的分析对象的网站。该分析对象网站12a例如是被登载在被公开的恶性网站的黑名单上的网站等。

此外,网络2a具有浏览器模拟器管理器23a和分析信息数据库24a。网络2a既可以是如局域网那样的小规模的网络,也可以是如法人网络那样的中小规模的网络或云环境以及托管环境的网络。

浏览器模拟器管理器23a管理1个以上的浏览器模拟器25a,使这些浏览器模拟器25a访问规定的网站(分析对象网站12a)。并且,浏览器模拟器管理器23a将浏览器模拟器25a所访问的网站的URL或通过从该网站取得的代码的分析而得到的URL等蓄积在分析信息数据库24a中。

浏览器模拟器25a是模拟浏览器的动作的装置。该浏览器模拟器25a例如可使用Honeynet工程提供的浏览器模拟器(参照http://www.honeynet.org/node/827)或作为开放源代码而被开发的HtmlUnit或Selenium。该浏览器模拟器25a的详细情况在后语句描述。另外,图12中浏览器模拟器25a被描绘为构建在浏览器模拟器管理器23a内,然而当然也可以被构建在浏览器模拟器管理器23a外。

分析信息数据库24a蓄积(保存)浏览器模拟器25a所访问的网站的URL或通过从该网站取得的代码的分析而得到的URL等。作为该分析信息数据库24a的数据的保存,既可以使用RDBMS(Relational DataBase Management System:关系数据库管理系统),也可以通过文本形式保存。该分析信息数据库24a的详细情况在后文描述。

另外,在本实施方式中,将浏览器模拟器25a、浏览器模拟器管理器23a和分析信息数据库24a配置在同一网络中,然而也可以将它们分别配置在不同的网络中。此外,将各结构与安全装置连接起来,因此可以使用现存的加密技术对通信信息进行加密,或者将配置有各装置的网络间或各结构间通过VPN(Virtual Private Network:虚拟专用网络)连接起来。

下面,使用图13具体说明浏览器模拟器管理器23a和浏览器模拟器25a。浏览器模拟器管理器23a具有浏览器模拟器25a和控制部27a。控制部27a在主系统26a上使浏览器模拟器25a进行动作。该主系统26a例如使用浏览器模拟器管理器23a具有的OS。控制部27a的详细情况在后文描述。

(浏览器模拟器)

下面,说明浏览器模拟器25a。浏览器模拟器25a具有客户环境模拟部251a、访问部252a、HTML/CSS(HyperText Markup Language/Cascading Style Sheets:超文本标记语言/层叠样式表)分析库253a和脚本解释器部254a。

客户环境模拟部251a设定浏览器模拟器25a应模拟的客户环境(例如,OS、浏览器、插件等)的信息。

访问部252a进行基于网站(例如,图12的分析对象网站12a)和HTTP(HyperText Transfer Protocol:超文本传输协议)或HTTPS(HyperText Transfer Protocol Secure:安全超文本传输协议)的通信,并从该网站取得网页内容。这里,访问部252a在基于HTTP或HTTPS的通信时,在HTTP报头的User-Agent字段上使用通过客户环境模拟部251a设定的客户环境。由此浏览器模拟器25a模拟客户环境。该访问部252a例如使用作为自由软件而被开发的cURL。

此外,访问部252a将对网站的访问结果记录在访问日志中。例如,访问部252a将所访问的网站的URL或访问的日期时间记录在访问日志中。此外,访问部252a在对该网站访问的结果是转移到其他网站的情况下,也将该转移目的地的URL等记录在访问日志中。

HTML/CSS分析库253a是对通过访问部252a取得的网页内容进行分析的内容分析库。此外,HTML/CSS分析库253a在对网页内容进行分析的结果是在该网页内容中包含代码的情况下,使用脚本解释器部254a分析代码。

脚本解释器部254a对网页内容中包含的代码进行分析。例如,代码通过JavaScript(注册商标)而被记述的情况下,脚本解释器部254a使用作为开放源代码而被开发的SpiderMonkey或V8JavaScript(注册商标)Engine等的JavaScript(注册商标)解释器、通过Java(注册商标)记述的作为JavaScript(注册商标)解释器的Rhino等分析代码。

(控制部)

下面,说明控制部27a。控制部27a具有URL列表制作部271a、访问指示部272a、程序分析部273a、登记处理部278a和URL分析部279a。

URL列表制作部271a制作作为各浏览器模拟器25a巡回的网站(分析对象网站12a)的URL列表的巡回对象URL列表。例如,URL列表制作部271a根据在被公开的恶性网站的黑名单上登载的网站的URL制作巡回对象URL列表。

访问指示部272a对各浏览器模拟器25a的访问部252a指示向通过巡回对象URL列表(URL列表)示出的URL的访问。

程序分析部273a进行在从访问目的地的网站取得的网页内容中包含的程序(代码)的分析。该程序分析部273a的详细情况在后文描述。

登记处理部278a取得各浏览器模拟器25a的访问日志,并将其登记在分析信息数据库24a中。此外,登记处理部278a将通过程序分析部273a的代码的分析(后述的切片的执行)而得到的URL或客户环境信息(环境信息)登记在分析信息数据库24a中。

URL分析部279a分析被蓄积在分析信息数据库24a中的访问日志或通过代码分析得到的URL(分析信息),并输出该分析结果。例如,URL分析部279a从访问日志中包含的URL或通过代码分析得到的URL中提取存在作为攻击URL或踏板URL的可能性的URL并输出。

(程序分析部)

下面,具体说明程序分析部273a。程序分析部273a具有语法分析部274a、程序依赖曲线图构建部275a、程序切片部276a、切片执行部277a和执行路径搜索部270a。

语法分析部274a进行在通过浏览器模拟器25a取得的网页内容中包含的代码的语法分析。具体而言,在浏览器模拟器25a的脚本解释器部254a分析网页内容中包含的代码的脚本的过程中,进行脚本的语法分析,根据网页内容中包含的代码确定发往其他网站的转发代码。

下面说明该语法分析的具体例。这里的分析对象的代码例如是通过图14所示的JavaScript(注册商标)记述的代码。另外,图14所示的代码是在根据在客户端安装的Java(注册商标)的版本信息而执行条件分支语句后,执行向其他网站的转发的脚本转发代码。此外,被语法分析部274a作为特定对象的转发代码例如是图15的符号401a所示的脚本转发代码。另外,图15的符号402a所示的标签转发代码是根据在规定的HTML标签中被代入规定的属性名中的URL,取得外部内容的代码。在该标签转发代码中使用的HTML标签与指定其外部内容的URL的属性名的对例如是图15的符号403a所示的HTML标签和属性名的对。与这些代码有关的信息(特定对象代码信息)被存储在浏览器模拟器管理器23a的存储部(省略图示)的规定区域内,可由系统管理者等适当设定。

例如,语法分析部274a使用抽象语法树将代码变换为树结构数据,通过搜索树结构数据而确定转发代码。另外,关于该使用抽象语法树的数据变换或转发代码确定等的分析手法,例如可以使用非专利文献3的技术。语法分析部274a通过抽象语法树的全面性搜索,例如确定在图15所示的转发代码中使用的对象或对象的属性、函数。在图14所示的代码中,第14行的location.href成为确定对象。

另外,语法分析部274a还可以通过上述的方法以外的方法进行语法分析。此外,图14和图15是用于说明程序分析部273a而示出的例子,并不限定于此。

图13的程序依赖曲线图构建部275a在语法分析部274a的语法分析时,构建将从网页内容取得的代码的各语句作为节点,示出节点间的数据依赖关系和控制依赖关系的程序依赖曲线图。并且,程序依赖曲线图构建部275a使用所构建的程序依赖曲线图,确定与通过语法分析部274a确定的转发代码关联的节点。

例如,程序依赖曲线图构建部275a构建出以JavaScript(注册商标)代码中的变量定义语句、代入语句、函数定义语句、函数执行语句、返回语句、条件分支语句、循环语句、例外处理语句等作为程序依赖曲线图(Program Dependence Graph)上的节点(以下,称作PDG节点),将节点间的数据依赖关系或控制依赖关系作为边界(以下,称作PDG边界)的程序依赖曲线图。

例如,程序依赖曲线图构建部275a根据图14所示的代码,构建图16所示的程序依赖曲线图。下面说明在图16所示的程序依赖曲线图的各PDG节点上记述的标签。VariableInitializer表示变量定义,一并记述成为定义对象的变量名。IfStatement和Assignment分别表示条件语句、变量代入,一并记述条件式或变量名。此外,在PDG节点上记述的编号表示图14所示的代码的行数。通过图16所示的程序依赖曲线图的实线箭头示出的PDG边界表示数据依赖关系,通过虚线箭头示出的PDG边界表示控制依赖关系。

例如,在图16所示的程序依赖曲线图中,IfStatement jre[1]==“6”表示与VariableInitializer jre具有数据依赖关系,此外,IfStatement jre[1]==“6”表示与Assignment url和IfStatement jre[1]==“7”具有控制依赖关系。

程序依赖曲线图构建部275a根据这种程序依赖曲线图,确定与通过语法分析部274a确定的代码关联的PDG节点。例如,语法分析部274a根据图14所示的代码确定了第14行的location.href的情况下,程序依赖曲线图构建部275a确定通过图16的粗线强调的PDG节点(Assignment location.href)。

图13的程序切片部276a以从网页内容取得的代码中的通过程序依赖曲线图构建部275a确定的程序依赖曲线图的节点(例如,通过图16的粗线强调的PDG节点)的语句作为切片基准,从程序依赖曲线图中提取出切片。

另外,一般在提取切片时,递归性地跟踪程序依赖曲线图上的数据依赖关系和控制依赖关系。然而,本实施方式的程序切片部276a首先递归性地跟踪程序依赖曲线图上的数据依赖关系,由此提取与变量的定义参照关联的语句(节点),接着在规定数以下(例如,一次)跟踪控制依赖关系,由此提取与所提取的语句的控制流程关联的语句,将所提取的语句作为切片。此时,在所提取的切片中包含函数定义语句(function语句)的情况下,通过程序切片部276a一并提取出相应的函数调用语句。此外,在函数定义语句中包含自变量的情况下,程序切片部276a同样提取与相应的函数调用语句的自变量存在关联的语句。

另外,这里关于控制依赖关系进行规定数以下(例如,一次)跟踪的原因在于,如果对控制依赖关系递归性跟踪,则存在将与切片基准(关注的语句,例如,图16的Assignment location.href)关联较少的语句也被提取的可能性。即,本实施方式的程序切片部276a在对程序依赖曲线图上的数据依赖关系递归地跟踪后,对控制依赖关系限制在规定数以下(例如,一次)进行跟踪,由此能够提取出与切片基准(关注的语句、例如图16的Assignment location.href)关联较高的语句。

程序切片部276a例如使用图16所示的程序依赖曲线图,将通过粗线强调的PDG节点(Assignment location.href)的语句作为切片基准(相当于图14所示的代码的第14行的location.href:<14,location.href>),提取切片。例如,程序切片部276a根据切片基准<14,location.href>,首先与图14所示的代码的第14行的location.href的语句递归地考虑数据依赖关系,提取PDG节点,接着,提取仅考虑了一次控制依赖关系的PDG节点(即,从图16所示的程序依赖曲线图中提取出图17所示的PDG节点)。并且,程序切片部276a例如根据图17所示的PDG节点,提取图18的符号701a→符号702a所示的切片。

图13的执行路径搜索部270a在通过程序切片部276a提取的切片中包含多个执行路径的情况下(即,在考虑到控制依赖关系时包含条件分支语句等的情况下),通过语法分析部274a对该切片进行语法分析,由此提取每个执行路径的切片。即,执行路径搜索部270a使语法分析部274a对搜索对象代码(切片)进行语法分析,在语法分析的过程中,确定了基于条件分支语句等的多个执行路径时,提取各个执行路径的切片,由此提取不依赖于控制流程的切片。例如,执行路径搜索部270a从图19的符号801a(或图18的符号702a)所示的代码(切片)中,提取出图19的符号802a~804a所示的3个切片。

另外,执行路径搜索部270a不依赖于控制流程而提取切片,因此分别生成将条件分支语句或循环语句、例外处理语句等削除后的切片。

图13的切片执行部277a使脚本解释器部254a执行通过程序切片部276a或执行路径搜索部270a提取的切片。即,切片执行部277a使脚本解释器部254a分析通过程序切片部276a或执行路径搜索部270a提取的切片,并在该分析的过程中,监视在转发代码或内容取得代码中使用的对象、对象的属性、被代入函数中的值的自变量,提取URL。

例如,切片执行部277a使浏览器模拟器25a的脚本解释器部254a分别执行图19的符号802a~804a所示的切片,监视在转发代码中使用的对象或函数的自变量、属性的代入值,例如从所监视的location.href属性中提取出http://A.example/mal1/、http://A.example/mal2/、http://B.example/benign/的URL。

其中,切片执行部277a以能够执行操作DOM(Document Object Model:文档对象模型)的代码的方式,在DOM的读入完成的时机(例如,Firefox(注册商标)、Google Chrome(注册商标)中的DOMContentLoaded事件即将开始前)执行切片。此外,切片执行部277a以使得执行切片的结果不会对原本的JavaScript(注册商标)等的处理带来影响的方式执行切片的时刻的DOM信息(DOM树的结构或值)和JavaScript(注册商标)的上下文信息(例如,变量定义或函数定义等)用于切片执行而被复制,在执行切片后被废弃。

此外,浏览器模拟器25a的访问部252a访问通过切片的执行而被提取的URL(例如,图22所示的分析信息的“切片”是“1”的URL),由此进而取得网页内容,在所取得的网页内容中包含代码的情况下,与上述同样地执行脚本解释器部254a的脚本的分析、以及语法分析部274a、程序依赖曲线图构建部275a、程序切片部276a、执行路径搜索部270a和切片执行部277a的处理。即,浏览器模拟器管理器23a对通过切片的执行而被提取的URL进行递归的分析。由此,浏览器模拟器管理器23a能够更多地提取存在作为攻击URL或踏板URL的可能性的URL。

另外,可以根据监视对象的对象或对象的属性、函数,由系统的管理者等适当设定浏览器模拟器管理器23a是否对通过上述的切片的执行而被提取的URL进行递归的分析。

根据以上说明的程序分析部273a,全面地分析从网页内容取得的代码,确定转发代码。并且,从该确定的转发代码中提取出URL。此外,该程序分析部273a确定用于向所提取的URL转发而需要的客户环境信息。下面说明该程序分析部273a的客户环境信息的确定。

(客户环境信息的确定)

程序分析部273a在通过切片执行部277a能够提取URL的情况下,在通过程序切片部276a提取出的切片内包含条件分支语句时,将该条件分支语句作为切片基准。并且,程序切片部276a使用该切片基准提取切片,通过切片执行部277a执行所提取的切片。其结果是,在网页内容中包含的代码中,如果通过能够提取出URL的转发代码前段的条件分支语句进行了使用客户环境信息的条件判定,则可知该转发代码是依赖于客户环境的转发代码。

在这种使用客户环境信息的条件分支语句中,为了评价浏览器或插件的主版本和子版本,在与使用字符串操作函数的版本信息的分割进行了结合后,大多进行条件判定(参照图14所示的代码的第2行的语句或非专利文献5)。因此,切片执行部277a使脚本解释器部254a分析通过程序切片部276a提取的切片,在该分析的过程中,监视与在切片中使用的字符串操作等关联的对象或函数的自变量、属性的代入值,由此确定基于切片的执行的客户环境信息的使用。即,切片执行部277a将所提取的URL与向该URL的转发所需的客户环境信息关联起来。

例如,在将图18的符号702a(或图19的符号801a)所示的切片中包含的条件分支语句作为切片基准(图18的符号702a所示的代码的第5行的if语句:相当于<5,if>)的情况下,成为提取对象的PDG节点在图20中示出。另外,在此省略了说明,而程序切片部276a对于切片基准<8,if>也同样地提取切片。

并且,程序切片部276a例如根据图20所示的PDG节点,提取图21的符号1001a→符号1002a所示的切片。

例如,考察浏览器模拟器25a模拟被安装有Java(注册商标)的版本“1.6.0.22”的客户环境的情况。这种情况下,切片执行部277a使浏览器模拟器25a的脚本解释器部254a执行图21的符号1002a所示的切片,监视与字符串操作等关联的对象或函数的自变量、属性的代入值。并且,确定为通过切片执行部277a监视的作为与字符串操作关联的函数的split函数的String对象是“1.6.0.22”的Java(注册商标)的版本值,由此能够确定为在所提取的切片的执行中使用了Java(注册商标)的环境信息。

另外,切片执行部277a在确定网页内容中包含的代码的客户环境信息的使用时,例如既可以根据通过浏览器模拟器25a模拟的客户环境的名称信息或版本信息的完全一致来进行确定,也可以生成使用了正规表现的客户信息的签名,通过该签名进行确定。

其中,切片执行部277a与URL的提取时同样地,复制执行切片的时刻的DOM信息和JavaScript(注册商标)的上下文信息以用于切片执行,并在执行了切片后将其废弃。另外,在切片执行时监视的函数或属性不限于上述内容,也可以由系统管理者等适当追加或删除监视对象的函数或属性。

此外,作为与所提取的URL关联的客户环境信息的确定方法,还存在使用在URL中使用的文件扩展符信息的方法或使用在标签转发代码中使用的HTML标签信息的方法。该使用文件扩展符信息的方法中,例如在URL是使用“.jar”的文件扩展符的URL的情况下,能够将该URL确定为与Java(注册商标)关联的URL。此外,在使用HTML标签信息的方法中,例如在标签转发代码是使用object标签的代码的情况下,对data属性指定URL,对type属性指定MIME类型。因此,在type属性例如是“application/pdf”的情况下,能够将被指定给data属性的URL确定为与PDF关联的URL。

这样使用文件扩展符信息或HTML标签信息的与URL关联的客户环境信息的确定方法可以与上述的程序分析部273a的确定方法一并使用。由此,程序分析部273a可增加能够确定客户环境信息的URL数。

(分析信息数据库)

下面说明分析信息数据库24a。如上所述,分析信息数据库24a存储分析信息。分析信息例如图22所示,是将作为分析信息的识别信息的“分析ID”、作为浏览器模拟器25a访问分析对象网站的URL时所访问的URL的“访问URL”、表示访问该URL的日期时间的“时戳”、表示该URL是否为通过程序切片被提取的URL的“切片”、以及在该URL是依赖于客户环境而被转发的URL的情况下,表示为进行转发而需要的客户环境信息的“环境信息”等对应起来的信息。

另外,该分析信息中的“切片”的项目是“1”的URL表示相应URL是通过程序切片而被提取的URL,“切片”的项目是“0”的URL表示该URL并非通过程序切片而被提取的URL(即,是通过通常访问而被提取的URL)。此外,“访问URL”不仅包含分析对象网站的URL,还包含通过对该URL的访问而被转发的网站的URL。另外,分析信息还可以包含上述以外的信息。

根据以上说明的系统,能够根据从网页内容取得的代码全面地提取URL。其结果是,系统能够提取出在依赖于客户环境进行的路过式下载攻击中存在作为攻击URL或踏板URL的可能性的URL。此外,系统还能够确定为向所提取的URL转发而需要的客户环境信息。

(处理步骤)

下面,使用图23,说明系统的处理步骤的示例。首先,URL列表制作部271a制作巡回对象URL列表(S101)。例如,URL列表制作部271a根据所公开的恶性网站的黑名单制作巡回对象URL列表。

并且,访问指示部272a对浏览器模拟器25a输入巡回对象URL列表的URL(S102),浏览器模拟器25a通过访问部252a访问在S102中被输入的URL(S103)。并且,访问部252a从访问目的地的URL取得网页内容。

另外,在S102中,访问指示部272a既可以使1个浏览器模拟器25a访问多个URL,也可以使多个浏览器模拟器25a分别访问不同的URL。

在S103之后,浏览器模拟器25a的HTML/CSS分析库253a分析所取得的网页内容,如果在通过脚本解释器部254a取得的网页内容中包含有代码,则分析该代码,通过程序分析部273a进行代码分析(S104)。该代码分析的详细情况在后文描述。

在S104之后,访问部252a输出访问日志(S105)。即,访问部252a将对于通过访问指示部272a被输入的URL的访问结果作为访问日志输出。并且,登记处理部278a对在S105中输出的访问日志、通过S104的代码分析输出的URL和环境信息进行整形(S106),并将整形后的数据蓄积在分析信息数据库24a(参照图22)中(S107)。

这里,如果被设定了对通过切片执行部277a的切片的执行而被提取的URL进行分析的内容(S108的Yes),则访问指示部272a从分析信息数据库24a的分析信息中读出通过切片的执行被提取的URL,并将该URL作为巡回对象URL的URL进行S102起的处理。即,浏览器模拟器管理器23a对通过切片的执行被提取的URL进行递归的分析。

另外,在S108中,如果未设定对通过切片的执行被提取的URL进行分析的内容(S108的No),在巡回对象URL列表中存在下一个巡回URL(S109的Yes),则返回S102。另一方面,如果在巡回对象URL列表中不存在下一个巡回URL(S109的No),则结束处理。

如上所述在分析信息数据库24a中蓄积有分析信息时,URL分析部279a进行分析信息的URL的分析处理,例如提取出作为攻击URL或踏板URL的可能性较高的URL。

下面,使用图24、图25和图26,具体说明图23的S104的代码分析处理。

首先,语法分析部274a对从网页内容取得的代码的各语句进行语法分析(S1010)。这里,存在作为语法分析的对象的语句的情况下(S1011的Yes),程序依赖曲线图构建部275a构建程序依赖曲线图(参照图16)(S1012)。另一方面,不存在作为语法分析的对象的语句的情况下(S1011的No),进入图25的S1016。

此外,在S1012之后,语法分析对象的语句是与特定对象的转发代码关联的程序依赖曲线图节点(PDG节点)的情况下(S1013的Yes),程序依赖曲线图构建部275a将该PDG节点作为切片基准保持(S1014)。另一方面,在S1013中,语法分析对象的语句是不与特定对象的转发代码关联的PDG节点的情况下(S1013的No),进入S1015。

在S1015中,语法分析部274a判断为存在作为语法分析对象的下一个语句时(S1015的Yes),返回S1012。另一方面,在判断为不存在作为语法分析对象的下一个语句时(S1015的No),进入图25的S1016。

在图25的S1016中,程序分析部273a判断为存在S1014中作为切片基准而保持的PDG节点时(S1016的Yes),程序切片部276a将所保持的节点(PDG节点)作为切片基准,通过程序切片提取切片(S1017)。该程序切片部276a的切片提取处理的详细情况在后文描述。另外,在S1016中,程序分析部273a判断为不存在S1014中作为切片基准而保持的PDG节点时(S1016的No),结束处理。

在S1017之后,执行路径搜索部270a判断为在S1017中提取的切片包含多个执行路径时(S1018的Yes),按照每个执行路径提取切片(S1019)。另一方面,在执行路径搜索部270a判断为在S1017中提取的切片中不包含多个执行路径时(S1018的No),进入S1020。

在S1020中,切片执行部277a在S1017所提取的切片中不包含多个执行路径的情况下,执行在S1017中被提取的切片,而在S1017中提取出的切片中包含多个执行路径的情况下,执行在S1019中被提取的切片(S1020)。此时,切片执行部277a监视与转发代码关联的对象或函数的自变量、属性的代入值,由此提取在转发代码中使用的URL并输出(S1021)。在S1021之后,进入图26的S1023。

在图26的S1023中,在图25的S1017所提取的切片中包含条件分支语句的情况下(S1023的Yes),程序切片部276a将该条件分支语句作为切片基准,通过程序切片提取切片(S1024)。该程序切片部276a的切片提取处理的详细情况与S1017同样在后文描述。另外,在S1023中,在图25的S1017所提取的切片中不包含条件分支语句的情况下(S1023的No),进入图25的S1022。

在S1024之后,切片执行部277a执行在S1024被提取的切片(S1025)。此时,切片执行部277a监视与字符串操作关联的对象或函数的自变量、属性的代入值,由此确定基于通过S1024被提取的切片的执行的客户环境信息的使用(S1026)。

在S1026之后,如果在所提取的切片中包含下一个条件分支语句(S1027的Yes),则返回S1024,如果在所提取的切片中不包含下一个条件分支语句(S1027的No),则进入图25的S1022。

在图25的S1022中,如果存在作为下一个切片基准的PDG节点(S1022的Yes),则返回S1017,如果不存在作为下一个切片基准的PDG节点(S1022的No),则结束处理。

下面,使用图27,具体说明图25的S1017和图26的S1024的处理(切片提取处理)。

首先,程序切片部276a将切片基准的节点(PDG节点)作为分析对象节点保持(S1028),并将所保持的分析对象节点追加到切片对象节点中(S1029)。接着,程序切片部276a在所保持的分析对象节点具备的数据依赖关系的PDG边界上沿反方向跟踪一次,将跟踪目的地的所有PDG节点作为分析对象节点保持(S1030)。在被保持的分析对象节点上的任意一个存在数据依赖关系的边界(PDG边界)的情况下(S1031的Yes),返回S1029,而在被保持的分析对象节点中的任意一个不存在数据依赖关系的PDG边界的情况下(S1031的No),进入S1032。

在S1032中,程序切片部276a在切片对象节点(即,通过在程序依赖曲线图的数据依赖关系的PDG边界上跟踪而提取出的PDG节点)具备的控制依赖关系的PDG边界上沿反方向跟踪一次,将跟踪目的地的所有PDG节点追加到切片对象节点中(S1032)。在S1032之后,程序切片部276a将作为被保持的切片对象节点的PDG节点作为切片提取(S1033),并结束处理。

下面举出上述的处理的一例。例如,程序切片部276a在图16所示的程序依赖曲线图上将切片基准的PDG节点((14)Assignment location.href)作为分析对象节点时,在该PDG节点(Assignment location.href)具备的数据依赖关系的PDG边界上沿反方向跟踪一次,将跟踪目的地的所有的PDG节点((6)Assignment url、(9)Assignment url、(12)Assignment url和(4)VariableInitializer url)作为新的分析对象节点保持。此外,图16的(6)Assignment url和(9)Assignment url的PDG节点还具有数据依赖关系的PDG边界,因此程序切片部276a在该PDG边界上沿反方向跟踪,将(3)VariableInitializer d的PDG节点也作为新的分析对象节点保持。这里,在被保持的分析对象节点中的(6)Assignment url、(9)Assignment url和(12)Assignment url存在控制依赖关系的PDG边界,因此在该PDG边界上沿反方向跟踪一次,将跟踪目的地的所有的PDG节点、即(5)IfStatement jre[1]==“6”和(8)IfStatement jre[1]==“7”的PDG节点追加到切片对象节点中。并且,程序切片部276a将被保持的PDG节点、即(14)Assignment location.href、(6)Assignment url、(9)Assignment url、(12)Assignment url、(4)VariableInitializer url、(3)VariableInitializer d、(5)IfStatement jre[1]==“6”和(8)IfStatement jre[1]==“7”作为切片提取。例如,程序切片部276a根据图17所示的PDG节点,提取图18的符号701a→符号702a所示的切片。

此外,例如程序切片部276a在图16所示的程序依赖曲线图中将切片基准的PDG节点((5)IfStatement jre[1]==“6”)作为分析对象节点时,在该PDG节点((5)IfStatement jre[1]==“6”)具备的数据依赖关系的PDG边界上沿反方向跟踪一次,将跟踪目的地的所有的PDG节点((2)VariableInitializer jre)作为新的分析对象节点保持。此外,(2)VariableInitializer jre的PDG节点还具有数据依赖关系的PDG边界,因此程序切片部276a在该PDG边界上沿反方向跟踪,将(1)VariableInitializer jre_version的PDG节点也作为新的分析对象节点保持。另外,这种情况下,在(1)VariableInitializer jre_version的PDG节点上不存在控制依赖关系的PDG边界,因此程序切片部276a将(5)IfStatement jre[1]==“6”、(2)VariableInitializer jre和(1)VariableInitializer jre_version作为切片提取。例如,程序切片部276a根据图20所示的PDG节点,提取图21的符号1001a→符号1002a所示的切片。

根据这种系统,能够对依赖于客户环境进行路过式下载攻击的代码详细地进行分析。其结果是,例如,能够在不依赖于客户环境的情况下从该代码中全面地提取出在路过式下载攻击中存在作为攻击URL或踏板URL的可能性的URL。此外,系统能够确定用于向存在作为所提取的攻击URL或踏板URL的可能性的URL而需要的客户环境。其结果是,能够有效地确定在通过现有的蜜罐技术进行环境依赖攻击的分析的情况下,设定何种客户环境能够到达攻击URL或踏板URL。此外,通过按照每种客户环境集中URL,由此能够优化根据各客户的客户环境而应导入的URL黑名单。

[其他的实施方式]

另外,通过语法分析部274a确定的对象、对象的属性、函数不限于与转发代码或内容取得代码有关的内容,可以根据目的而适当变更。

此外,在程序依赖曲线图构建部275a中,JavaScript(注册商标)代码的语句中的作为程序依赖曲线图的程序依赖曲线图节点的语句是变量定义语句、代入语句、函数定义语句、函数执行语句、返回语句、条件分支语句、循环语句、例外处理语句等,还可以由系统的管理者等适当追加、变更除此以外的内容。

另外,作为程序分析部273a进行代码分析的结果而输出的信息可以是URL以外的信息。例如,若事先知悉在攻击代码中使用的对象或对象的属性、函数的信息,则程序分析部273a可以使用这些信息确定攻击代码,输出在所确定的攻击代码中使用的各种信息。

此外,系统使用浏览器模拟器25a访问分析对象网站12a,也可以使用浏览器模拟器25a以外(例如,实际的客户环境)访问分析对象网站12a。

进而,程序切片部276a使用程序依赖曲线图提取切片,然而只要能够把握各代码的控制依赖关系和数据依赖关系,就可以不必使用程序依赖曲线图。

另外,在程序分析部273a进行的URL提取之后,使用程序分析部273a实施了客户环境信息的使用确定,然而也可以变更为不由系统管理者等实施。

此外,浏览器模拟器25a使用HTML/CSS分析库253a作为内容分析库,然而也可以使用对在Adobe Acrobat(注册商标)中使用的PDF文件或在Adobe Flash Player(注册商标)中使用的SWF文件等的网页内容进行分析的内容分析库。另外,在分析PDF文件的情况下,将JavaScript(注册商标)作为分析代码,脚本解释器部254a使用JavaScript(注册商标)的解释器。此外,在分析SWF文件的情况下,将ActionScript作为分析对象代码,脚本解释器部254a使用ActionScript的解释器。

此外,程序分析部273a还可以将JavaScript(注册商标)以外的代码、例如VBScript作为分析对象代码,这种情况下,脚本解释器部254a使用VBScript的解释器。

此外,程序分析部273a在通过切片执行部277a能够提取URL,并且在通过程序切片部276a提取的切片中包含条件分支语句的情况下,进行将该条件分支语句作为切片基准的切片的提取,然而不限于此。例如,若在通过程序切片部276a提取的切片中包含条件分支语句,则无论通过切片执行部277a能否提取出URL,程序分析部273a都可以进行将该条件分支语句作为切片基准的切片的提取。

(程序)

此外,还可以制作并执行通过计算机可执行的语言记述由上述实施方式的浏览器模拟器管理器23、23a执行的处理的程序。这种情况下,通过由计算机执行程序,可获得与上述实施方式同样的效果。进而,还可以通过将该程序记录在计算机可读取的记录介质中,并使计算机读入在该记录介质中记录的程序并执行,由此实现与上述实施方式同样的处理。以下,说明执行实现与浏览器模拟器管理器23同样的功能的控制程序的计算的一例。

图28是表示执行分析程序的计算的图。如图28所示,计算机1000例如具有存储器1010、CPU(Central Processing Unit:中央处理单元)1020、硬盘驱动器接口1030、磁盘驱动器接口1040、串行端口接口1050、视频适配器1060和网络接口1070。这些各部通过总线1080而连接起来。

存储器1010包括ROM(Read Only Memory:只读存储器)1011和RAM(Random Access Memory:随机存取存储器)1012。ROM1011例如存储BIOS(Basic Input Output System:基本输入输出系统)等的引导程序。硬盘驱动器接口1030与硬盘驱动器1090连接。磁盘驱动器接口1040与磁盘驱动器1100连接。磁盘驱动器1100例如供磁盘或光盘等的可拆装的存储介质插入。串行端口接口1050例如供鼠标1110和键盘1120连接。视频适配器1060例如供显示器1130连接。

这里,如图28所示,硬盘驱动器1090例如存储OS1091、应用程序1092、程序模块1093和程序数据1094。在上述实施方式中说明的搜索对象代码信息、访问日志以及通过分析而被提取的URL等例如被存储在硬盘驱动器1090或存储器1010中。

此外,分析程序例如作为记述有通过计算机1000执行的指令的程序模块而被存储在硬盘驱动器1090中。具体而言,记述有由上述实施方式中说明的浏览器模拟器管理器23执行的各处理的程序模块被存储在硬盘驱动器1090中。

此外,在基于分析程序的信息处理中使用的数据作为程序数据而例如被存储在硬盘驱动器1090中。并且,CPU1020根据需要将被存储在硬盘驱动器1090中的程序模块1093或程序数据1094读出到RAM1012中,从而执行上述各步骤。

另外,分析程序的程序模块1093或程序数据1094不限于被存储在硬盘驱动器1090中的情况,例如还可以被存储在可拆装的存储介质中,通过磁盘驱动器1100等而被CPU1020读出。或者,控制程序的程序模块1093或程序数据1094可以被存储在通过LAN(Local Area Network:局域网)或WAN(Wide Area Network:广域网)等的网络而连接的其他计算机中,通过网络接口1070而被CPU1020读出。

标号说明

1、1a、2、2a 网络

3、3a 分组转发装置

12、12a 分析对象网站

23、23a 浏览器模拟器管理器

24、24a 分析信息数据库

25、25a 浏览器模拟器

26、26a 主系统

27、27a 控制部

251、251a 客户环境模拟部

252、252a 访问部

253、253a HTML/CSS分析库

254、254a 脚本解释器部

270a 执行路径搜索部

271、271a URL列表制作部

272、272a 访问指示部

273、273a 程序分析部

274、274a 语法分析部

275、275a 程序依赖曲线图构建部

276、276a 程序切片部

277、277a 切片执行部

278、278a 登记处理部

279、279a URL分析部

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1