CN110177085A - 适用于云环境的跨主机动态污点追踪方法及系统 - Google Patents
适用于云环境的跨主机动态污点追踪方法及系统 Download PDFInfo
- Publication number
- CN110177085A CN110177085A CN201910344787.6A CN201910344787A CN110177085A CN 110177085 A CN110177085 A CN 110177085A CN 201910344787 A CN201910344787 A CN 201910344787A CN 110177085 A CN110177085 A CN 110177085A
- Authority
- CN
- China
- Prior art keywords
- stain
- data
- message
- host
- received
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种适用于云环境的跨主机动态污点追踪方法及系统,属于隐私数据访问监控领域,包括:持续监控云环境中各主机端应用程序的API调用行为;若检测到网络发送相关的API被调用,则在源主机端网络缓冲区中的待发送报文包含污点数据时,生成一个或多个污点数据包,发送所生成的污点数据包;污点数据包大小不超过MTU值;若检测到网络接收相关的API被调用,则在目的主机端网络缓冲区中的待接收报文中包含污点数据时,解析网络接收缓冲区中的污点数据包的污点头部,利用属于待接收报文的污点数据包重组待接收报文,并在目的主机中对待接收报文中数据的污点属性进行设置。本发明能够提高跨主机动态污点追踪的准确度,为云环境中的应用提供可靠支持。
Description
技术领域
本发明属于隐私数据访问监控领域,更具体地,涉及以一种适用于云环境的跨主机动态污点追踪方法及系统。
背景技术
动态污点追踪是一种基于数据流的动态二进制分析方法,基本思想是在程序执行过程中,追踪需要分析的数据在系统中的传播过程,如用户输入、网络报文等,以掌握被追踪的目标程序对这些数据的详细处理流程,从而为进一步的分析提供依据。通常,被追踪的数据是外来的或是不可信的数据(用户输入、输入文件等),也称为污点数据,引入污点数据的数据对象被称为污点源。
动态污点追踪主要涉及两部分内容,首先是污点数据的标记,其次是污点数据的追踪。污点数据的标记是指在目标程序执行过程中,截获被目标程序访问的外来的或不可信的数据,将这些数据视为被污染的数据并将其标记为污点数据;在程序执行过程中,污点数据可能作为源操作数参与运算,运算结果(目的操作数)的污点属性往往依赖于源操作数的污点属性,因此,需要根据污点传播规则对目的操作数的污点属性进行相应的设置;污点数据的追踪,是指在目标程序执行过程中通过分析指令的语义,并根据污点传播规则实现相应的污点属性的拷贝、覆盖、清除和合并操作,动态标记并追踪污点数据的传播流向。
污点数据的追踪主要包括主机内动态污点追踪和跨主机动态污点追踪;在主机内动态污点追踪过程中,被跟踪的目标程序的整个数据流都在跟踪工具的监控之下,因此可以准确判断目标程序是否存在恶意行为或者是否将敏感数据泄漏到外部网络,也可以记录污点数据在主机内的传播过程作为离线分析的依据;但是,这种方法只能在一台主机内进行污点追踪,因此存在很大局限性。跨主机动态污点追踪,能够在污点数据发生跨主机传播时,通过在源主机端给包含污点数据的报文加上污点头部后,再传输到目的主机,使得目的主机能够根据污点头部识别出该报文包含污点数据。但是,现有的跨主机动态污点追踪方法,只是简单的通过污点头部标示报文包含污点数据,实际在跨主机动态污点追踪的过程中,存在大量误报、漏报的情况,整体的追踪准确度较低,并不能为云环境中的应用提供可靠支持。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种适用于云环境的跨主机动态污点追踪方法及系统,其目的在于,提高跨主机动态污点追踪的准确度,为云环境中的应用提供可靠支持。
为实现上述目的,按照本发明的一个方面,提供了一种适用于云环境的跨主机动态污点追踪方法,包括:
(1)持续监控云环境中各主机端应用程序的API(Application ProgrammingInterface,应用程序编程接口)调用行为,若检测到主机中应用程序调用了网络发送相关的API,则将该主机作为源主机并转入步骤(2);若检测到主机中应用程序调用了网络接收相关的API,则将该主机作为目的主机并转入步骤(4);
(2)在源主机端检测网络发送缓冲区中的待发送报文是否包含污点数据,若是,则转入步骤(3);否则,直接发送待发送报文,转入步骤(1);
(3)根据待发送报文中数据的污染情况,生成一个或多个污点数据包,发送所生成的污点数据包以完成对待发送报文的发送,并转入步骤(1);
其中,污点数据包的长度不超过MTU(Maximum Transmission Unit,最大传输单元)值,污点数据包由污点头部和污点载荷组成,污点载荷为一个完整报文或报文的一个分片,根据同一报文生成的所有污点数据包的污点载荷可重组得到该报文;
污点头部包括标识、分片标识、数据长度以及校验和;标识用于唯一标识报文并标明该报文中是否包含污点数据;分片标识用于记录污点载荷在报文中的偏移并标明该污点载荷是否为报文中的最后一个分片;数据长度用于记录污点载荷的长度;校验和用于验证报文是否被正确传输;
(4)在目的主机端检测网络接收缓冲区中的待接收报文中是否包含污点数据,若是,则转入步骤(5);否则,直接接收待接收报文,转入步骤(1);
(5)解析网络接收缓冲区中的污点数据包的污点头部,利用属于待接收报文的污点数据包重组待接收报文,并在目的主机中对待接收报文中数据的污点属性进行设置,从而完成对待接收标报文的接收,转入步骤(1)。
上述适用于云环境的跨主机动态污点追踪方法,通过监控主机中应用程序的网络传输行为,识别网络传输数据中的污点数据,并通过污点头部对其进行标识,使得可以通过解析污点头部及时发现污点数据的跨主机传播,并相应地在目的主机端对污点数据进行准确标记,由此实现了云环境中对污点数据的跨主机动态追踪。
由于污点头部会与报文内容一起经过网络传输,而网络传输的数据量受限于MTU值,如果直接给报文加上污点头部后进行传输,可能由于附加污点头部以后的报文长度超过MTU值,此时在网络层会发生分片,导致只有第一个分片含有污点头部,而其他分片无污点头部;进一步地,在目的主机端接收分片后会无法正常解析污染信息,导致报文中的非污点数据被打上了污点标签,而报文中的污点数据则没有被打上污点标签,即发生误报和漏报的情况。本发明通过分片的方法,保证加上污点头部后,所生成的污点数据包的大小不会超过MTU值,能够有效避免对污点数据误报和漏报的情况,从而提高跨主机动态污点追踪的准确度;在本发明中,污点头部记录的信息包括标识、分片标识、数据长度,根据这些信息,可以在目的主机端准确组装出原始的报文内容,保证了数据的可靠传输,进一步保证了污点追踪的准确性;在本发明中,污点头部记录的信息包括还包括校验和,进一步保证了数据的可靠传输。总的来说,本发明能够有效提高跨主机动态污点追踪的准确度,为云环境中的应用提供可靠支持。
进一步地,污点头部还包括:污染信息,用于记录污点载荷的污染情况;
污染信息包括一个或多个表项,每一个表项对应污点载荷中一段连续的污点数据;
每一个表项记录的信息包括:污点数据类型、污点数据段在污点载荷中的偏移量以及长度;
实际经网络传输的报文中污点数据的分布可能并不连续,上述适用于云环境的跨主机动态污点追踪方法,通过分段记录连续的污点数据段的污染情况,并将该信息记录在污点头部的污染信息字段中,能够实现细粒度的污点追踪,从而提高对动态污点追踪的准确度。
更进一步地,每一个表项记录的信息还包括:污点数据段对应的位图,用于记录该污点数据段中的每一比特位数据是否被污染;
上述适用于云环境的跨主机动态污点追踪方法,利用位图记录污点数据段中每一比特位数据的污染情况,能够实现对污点数据中每一比特位数据的追踪,最大程度地提高了动态污点追踪的精度。
更进一步地,污点头部还包括:头部长度,用于记录污点头部的长度;
通过在污点头部中记录头部长度,能够在污点数据包中准确识别污点头部的边界,从而可以支持变长的污点头部,提高了污点数据包的灵活性,并且保证了能够准确从污点数据包中解析出数据包的分片信息。
进一步地,污点数据包中的污点头部经过了无损数据压缩,由此能够提高传输效率。
进一步地,污点数据的标定方法为:
将键盘缓冲区、敏感文件和敏感内存作为污点源;
若被追踪的目标程序访问了键盘缓冲区中的数据,则将被访问的数据标记为污点数据;
若目标程序访问了敏感文件中的数据,则将被访问的敏感文件中所有的数据均标记为污点数据;
若分配给目标程序的内存空间中出现了预先定义的特征字符串,则将内存中被目标程序访问过的数据标记为污点数据;
其中,敏感文件为保存有不能被泄漏的信息的文件,敏感内存为出现了预先定义的特征字符串的内存。
在实际应用中,被恶意软件污染的污点数据通常为上述三类,本发明仅以将键盘缓冲区、敏感文件和敏感内存作为污点源,能够较为全面覆盖恶意软件的攻击行为,同时能够避免在污点数据标记的过程中引入大量计算。
进一步地,步骤(1)还包括:若检测到主机中应用程序调用了在本地访问污点数据的API,则根据污点传播规则,对各指令目的操作数的污点属性进行拷贝、合并、覆盖或者清除,由此能够实现主机内的动态污点追踪。
更进一步地,还包括:若主机中应用程序在本地访问污点数据时,将污点数据写入了非敏感文件,则将该文件标记为敏感文件。
进一步地,步骤(1)中,对应用程序的API调用行为的监控是通过在VMM层插桩实现的;
本发明通过在VMM(Virtual Machine Monitor,虚拟机监控器)层进行插桩实现对API调用行为的监控,能够实现目标程序和分析代码的隔离,同时对污点头部的处理不会影响目标程序的进程空间,由此提供了一种透明的跨主机污点追踪服务。
按照本发明的另一方面,提供了一种适用于云环境的跨主机动态污点追踪系统,包括:监控模块、第一发送模块、第二发送模块、第一接收模块以及第二接收模块;
监控模块用于持续监控云环境中各主机端应用程序的API调用行为;
第一发送模块用于在监控模块检测到主机中应用程序调用了网络发送相关的API时将该主机作为源主机,在源主机端检测网络发送缓冲区中的待发送报文是否包含污点数据,并在待发送报文中不包含污点数据时直接发送待发送报文;
第二发送模块用于在第一发送模块检测到待发送报文中包含污点数据时,生成一个或多个污点数据包,并发送所生成的污点数据包以完成对待发送报文的发送;
第一接收模块用于在监控模块检测到主机中应用程序调用了网络接收相关的API时将该主机作为目的主机,在目的主机端检测网络接收缓冲区中的待接收报文中是否包含污点数据,并在待接收报文中不包含污点数据时,直接接收待接收报文;
第二接收模块用于在第一接收模块检测到待接收报文中包含污点数据时,解析网络接收缓冲区中的污点数据包的污点头部,利用属于待接收报文的污点数据包重组待接收报文,并在目的主机中对待接收报文中数据的污点属性进行设置,从而完成对待接收标报文的接收;
其中,污点数据包的长度不超过MTU值,污点数据包由污点头部和污点载荷组成,污点载荷为一个完整报文或报文的一个分片,根据同一报文生成的所有污点数据包的污点载荷可重组得到该报文;
污点头部包括标识、分片标识、数据长度以及校验和;标识用于唯一标识报文并标明该报文中是否包含污点数据;分片标识用于记录污点载荷在报文中的偏移并标明该污点载荷是否为报文中的最后一个分片;数据长度用于记录污点载荷的长度;校验和用于验证报文是否被正确传输。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的适用于云环境的跨主机动态污点追踪方法及系统,通过为跨主机传播的包含污点数据的报文加上头部,并通过分片的方法,保证加上污点头部后,所生成的污点数据包的大小不会超过MTU值,能够有效避免对污点数据误报和漏报的情况,从而提高跨主机动态污点追踪的准确度;而且,本发明中,污点头部记录的信息包括标识、分片标识、数据长度以及校验和,根据这些信息,能够保证数据的可靠传输,进一步保证跨主机动态污点追踪的准确性。总的来说,本发明能够有效提高跨主机动态污点追踪的准确度,为云环境中的应用提供可靠支持。
(2)本发明所提供的适用于云环境的跨主机动态污点追踪方法及系统,在其优选方案中,通过分段记录连续的污点数据段的污染情况,并将该信息记录在污点头部的污染信息字段中,能够实现细粒度的污点追踪,从而提高对动态污点追踪的准确度;利用位图记录污点数据段中每一位数据的污染情况,能够实现对污点数据中每一个比特的追踪,最大程度地提高了动态污点追踪的精度。
(3)本发明所提供的适用于云环境的跨主机动态污点追踪方法及系统,本发明通过在VMM层进行插桩实现对API调用行为的监控,相比于传统的在Guest OS(OperatingSystem,操作系统)内进行插桩的动态污点追踪方法,本发明能够实现目标程序和分析代码的隔离,同时对污点头部的处理不会影响目标程序的进程空间,由此提供了一种透明的跨主机污点追踪服务。
附图说明
图1为本发明实施例提供的适用于云环境的跨主机动态污点追踪方法流程图;
图2为本发明实施例提供的污点头部示意图;
图3为本发明实施例提供的跨主机动态污点追踪示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明所提供的适用于云环境的跨主机动态污点追踪方法,如图1所示,包括:
(1)持续监控云环境中各主机端应用程序的API调用行为,若检测到主机中应用程序调用了网络发送相关的API,则将该主机作为源主机并转入步骤(2);若检测到主机中应用程序调用了网络接收相关的API,则将该主机作为目的主机并转入步骤(4);
其中,网络发送相关的API包括send和sendto等函数,网络接收相关的函数包括recv和recvfrom等函数,具体可通过API Hook技术对被监控的API进行拦截;
在一个可选的实施方式中,步骤(1)中,对应用程序的API调用行为的监控是通过在VMM层插桩实现的;
通过在VMM层进行插桩实现对API调用行为的监控,能够实现目标程序和分析代码的隔离,同时对污点头部的处理不会影响目标程序的进程空间,由此提供了一种透明的跨主机污点追踪服务;
(2)在源主机端检测网络发送缓冲区中的待发送报文是否包含污点数据,若是,则转入步骤(3);否则,直接发送待发送报文,转入步骤(1);
(3)根据待发送报文中数据的污染情况,生成一个或多个污点数据包,发送所生成的污点数据包以完成对待发送报文的发送,并转入步骤(1);
其中,污点数据包的长度不超过MTU值,污点数据包由污点头部和污点载荷组成,污点载荷为一个完整报文或报文的一个分片,根据同一报文生成的所有污点数据包的污点载荷可重组得到该报文;
污点头部包括标识、分片标识、数据长度以及校验和;标识用于唯一标识报文并标明该报文中是否包含污点数据;分片标识用于记录污点载荷在报文中的偏移并标明该污点载荷是否为报文中的最后一个分片;数据长度用于记录污点载荷的长度;校验和用于验证报文是否被正确传输;
在一个可选的实施方式中,污点头部还包括:污染信息,用于记录污点载荷的污染情况;
污染信息包括一个或多个表项,每一个表项对应污点载荷中一段连续的污点数据;
每一个表项记录的信息包括:污点数据类型、污点数据段在污点载荷中的偏移量以及长度;
实际经网络传输的报文中污点数据的分布可能并不连续,本发明通过分段记录连续的污点数据段的污染情况,并将该信息记录在污点头部的污染信息字段中,能够实现细粒度的污点追踪,从而提高对动态污点追踪的准确度;
每一个表项记录的信息还可包括:污点数据段对应的位图,用于记录该污点数据段中的每一比特位数据是否被污染;
利用位图记录污点数据段中每一比特位数据的污染情况,能够实现对污点数据中每一比特位数据的追踪,最大程度地提高了动态污点追踪的精度;
污点头部还可包括:头部长度,用于记录污点头部的长度;
通过在污点头部中记录头部长度,能够在污点数据包中准确识别污点头部的边界,从而可以支持变长的污点头部,提高了污点数据包的灵活性,并且保证了能够准确从污点数据包中解析出数据包的分片信息;
图2所示为一个具体的污点头部示意图,所包括的字段依次为:标识、分片标识、头部长度、数据长度、校验和以及污染信息;应当理解的是,图2所示的污点头部格式仅仅是一种示例性的说明,不应理解为是对本发明的限制;
根据所定义的污点头部,在一个可选的实施方式中,当待发送报文中包含污点数据时,根据待发送报文中数据的污染情况,生成一个或多个污点数据包的方法为:
通过路径MTU发现技术获取MTU值;
判断当前数据包嵌入污点头部以后的长度是否已经超过了MTU值,若是,则对该报文进行分片,每一个分片作为一个污点载荷,根据分片的信息填充污点头部的各个字段以生成各分片对应的污点头部,将污点头部和对应的分片组合为一个污点数据包,在此生成的污点数据包中污点头部的标识是相同的;否则,直接将该报文作为污点载荷,根据报文信息填充污点头部的各个字段以生成对应的污点头部,将污点头部和该报文组合为一个污点数据包;
为了提高传输效率,在组合污点头部和对应的污点载荷以生成对应的污点数据包之前,可以先对污点头部进行无损数据压缩,再利用压缩之后的污点头部组合得到污点数据包;具体可采用NACU(N-mode Adaptive Compression Unit,N模式自适应压缩器)对污点头部进行压缩,也可采用其他的方法对污点头部进行无损数据压缩;
在发送报文或污点数据包时,网卡驱动程序会为其加上TCP/UDP头部和IP头部;
(4)在目的主机端检测网络接收缓冲区中的待接收报文中是否包含污点数据,若是,则转入步骤(5);否则,直接接收待接收报文,转入步骤(1);
(5)解析网络接收缓冲区中的污点数据包的污点头部,利用属于待接收报文的污点数据包重组待接收报文,并在目的主机中对待接收报文中数据的污点属性进行设置,从而完成对待接收标报文的接收,转入步骤(1);
在解析过程中,若污点数据包的污点头部是经过了无损压缩的,则先对污点头部进行解压,再进行解析;否则,直接对污点头部进行解析;
对污点头部进行解析时,先判断污点头部中的校验和是否有差错,若是,则直接丢弃该报文;否则,就提取污点头部中的其余信息;
根据所提取的信息,首先判断当前污点数据包中的污点载荷是一个完整的报文还是一个分片,如果只是一个分片,则根据标识获得属于同一报文的所有污点数据包,然后根据这些数据包中的分片标识和数据长度对其中的分片进行重组,以得到完整的报文;
上述适用于云环境的跨主机动态污点追踪方法,通过监控主机中应用程序的网络传输行为,识别网络传输数据中的污点数据,并通过污点头部对其进行标识,使得可以通过解析污点头部及时发现污点数据的跨主机传播,并相应地在目的主机端对污点数据进行准确标记,由此实现了云环境中对污点数据的跨主机动态追踪。
在一个可选的实施方式中,污点数据的标定方法为:
将键盘缓冲区、敏感文件和敏感内存作为污点源;
若被追踪的目标程序访问了键盘缓冲区中的数据,则将被访问的数据标记为污点数据;典型的会访问键盘缓冲区的恶意软件有Trojan-Spy.MSIL.KeyLogger.brse等;
若目标程序访问了敏感文件中的数据,则将被访问的敏感文件中所有的数据均标记为污点数据;其中,敏感文件为保存有不能被泄漏的信息的文件,例如,Linux系统中的passwd文件和shadow文件;在本发明中,敏感文件具体包括两种,一种是用户指定的文件,另一种是包含已知污点数据的文件;典型的会窃取敏感文件的恶意软件有WannaCry等;
若分配给目标程序的内存空间中出现了预先定义的特征字符串,则将内存中被目标程序访问过的数据标记为污点数据;其中,当目标程序访问firefox cookie、firefoxhistory和SSL private key等数据时,在内存中会出现对应的特征字符串,具体可利用Volatility插件获取所有特征字符串的列表,也可采用其他方式获取所有特征字符串的列表;敏感内存为出现了任意一个特征字符串的内存;典型的窃取内存中数据的恶意软件有HeartBleed等;
在实际应用中,被恶意软件污染的污点数据通常为上述三类,本发明仅以将键盘缓冲区、敏感文件和敏感内存作为污点源,能够较为全面覆盖恶意软件的攻击行为,同时能够避免在污点数据标记的过程中引入大量计算。
为了实现主机内的动态污点追踪,上述适用于云环境的跨主机动态污点追踪方法,步骤(1)还包括:若检测到主机中应用程序调用了在本地访问污点数据的API,则根据污点传播规则,对各指令目的操作数的污点属性进行拷贝、合并、覆盖或者清除;
污点传播规则记录了各指令中源操作数和目的操作数污点属性的依赖关系,在本发明中,污点传播规则具体为:对于数据移动类指令(包含位运算符)和DMA操作指令,当且仅当源操作数被污染时,即源操作数是污点数据时,目的操作数被污染;对于算术类指令,源操作数中的任何字节被污染,目的操作数均会被污染;对于异或(XOR)操作指令,如果源操作数与目的操作数相等,并且源操作数被污染,则执行该指令之后,该操作数不再是污点数据;
上述适用于云环境的跨主机动态污点追踪方法,在进行主机内的动态污点追踪时,还包括:若主机中应用程序在本地访问污点数据时,将污点数据写入了非敏感文件,则将该文件标记为敏感文件。
在本发明中,在源主机端或目的主机端进行污点数据标记的方法,具体是利用影子内存(Shadow Memory)完成的,即将内存分为两个部分,一个部分作为常规内存,用于存储数据,另一个部分作为影子内存,用于记录所存储的数据的污点属性;如果常规内存中某一个存储地址处的数据为污点数据,则在影子内存中相对应的存储地址处会被置为特殊值,例如0xff;如图3所示,表示在源主机中,地址为0x0012fd9c~0x0012fd9f的存储单元中的数据为污点数据,在常规内存中,地址为0x0012fd9c~0x0012fd9f的存储单元中存储数据值,映射到影子内存中,地址为0x08219ad2~0x08219ad5的存储单元中存储0xff以实现对污点数据的标记;当这些污点数据被跨主机传播后,在目的主机的影子内存中,地址为0x08219ad2~0x08219ad5的存储单元中存储0xff以实现对污点数据的标记。
本发明还提供了一种适用于云环境的跨主机动态污点追踪系统,用于实现上述适用于云环境的跨主机动态污点追踪方法,该系统包括:监控模块、第一发送模块、第二发送模块、第一接收模块以及第二接收模块;
监控模块用于持续监控云环境中各主机端应用程序的API调用行为;
第一发送模块用于在监控模块检测到主机中应用程序调用了网络发送相关的API时将该主机作为源主机,在源主机端检测网络发送缓冲区中的待发送报文是否包含污点数据,并在待发送报文中不包含污点数据时直接发送待发送报文;
第二发送模块用于在第一发送模块检测到待发送报文中包含污点数据时,生成一个或多个污点数据包,并发送所生成的污点数据包以完成对待发送报文的发送;
第一接收模块用于在监控模块检测到主机中应用程序调用了网络接收相关的API时将该主机作为目的主机,在目的主机端检测网络接收缓冲区中的待接收报文中是否包含污点数据,并在待接收报文中不包含污点数据时,直接接收待接收报文;
第二接收模块用于在第一接收模块检测到待接收报文中包含污点数据时,解析网络接收缓冲区中的污点数据包的污点头部,利用属于待接收报文的污点数据包重组待接收报文,并在目的主机中对待接收报文中数据的污点属性进行设置,从而完成对待接收标报文的接收;
其中,污点数据包的长度不超过MTU值,污点数据包由污点头部和污点载荷组成,污点载荷为一个完整报文或报文的一个分片,根据同一报文生成的所有污点数据包的污点载荷可重组得到该报文;
污点头部包括标识、分片标识、数据长度以及校验和;标识用于唯一标识报文并标明该报文中是否包含污点数据;分片标识用于记录污点载荷在报文中的偏移并标明该污点载荷是否为报文中的最后一个分片;数据长度用于记录污点载荷的长度;校验和用于验证报文是否被正确传输;
在本发明实施例中,各模块的具体实施方式可参考上述方法实施例中的描述,在此将不再复述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种适用于云环境的跨主机动态污点追踪方法,其特征在于,包括:
(1)持续监控云环境中各主机端应用程序的API调用行为,若检测到主机中应用程序调用了网络发送相关的API,则将该主机作为源主机并转入步骤(2);若检测到主机中应用程序调用了网络接收相关的API,则将该主机作为目的主机并转入步骤(4);
(2)在所述源主机端检测网络发送缓冲区中的待发送报文是否包含污点数据,若是,则转入步骤(3);否则,直接发送所述待发送报文,转入步骤(1);
(3)根据所述待发送报文中数据的污染情况,生成一个或多个污点数据包,发送所生成的污点数据包以完成对所述待发送报文的发送,并转入步骤(1);
其中,所述污点数据包的长度不超过MTU值,所述污点数据包由污点头部和污点载荷组成,所述污点载荷为一个完整报文或报文的一个分片,根据同一报文生成的所有污点数据包的污点载荷可重组得到该报文;
所述污点头部包括标识、分片标识、数据长度以及校验和;所述标识用于唯一标识报文并标明该报文中是否包含污点数据;所述分片标识用于记录污点载荷在报文中的偏移并标明该污点载荷是否为报文中的最后一个分片;所述数据长度用于记录污点载荷的长度;所述校验和用于验证报文是否被正确传输;
(4)在所述目的主机端检测网络接收缓冲区中的待接收报文中是否包含污点数据,若是,则转入步骤(5);否则,直接接收所述待接收报文,转入步骤(1);
(5)解析所述网络接收缓冲区中的污点数据包的污点头部,利用属于所述待接收报文的污点数据包重组所述待接收报文,并在所述目的主机中对所述待接收报文中数据的污点属性进行设置,从而完成对所述待接收报文的接收,转入步骤(1)。
2.如权利要求1所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,所述污点头部还包括:污染信息,用于记录污点载荷的污染情况;
所述污染信息包括一个或多个表项,每一个表项对应污点载荷中一段连续的污点数据;
每一个表项记录的信息包括:污点数据类型、污点数据段在污点载荷中的偏移量以及长度。
3.如权利要求2所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,每一个表项记录的信息还包括:污点数据段对应的位图,用于记录该污点数据段中的每一比特位数据是否被污染。
4.如权利要求2所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,所述污点头部还包括:头部长度,用于记录污点头部的长度。
5.如权利要求1所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,所述污点数据包中的污点头部经过了无损数据压缩。
6.如权利要求1所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,污点数据的标定方法为:
将键盘缓冲区、敏感文件和敏感内存作为污点源;
若被追踪的目标程序访问了键盘缓冲区中的数据,则将被访问的数据标记为污点数据;
若所述目标程序访问了敏感文件中的数据,则将被访问的敏感文件中所有的数据均标记为污点数据;
若分配给所述目标程序的内存空间中出现了预先定义的特征字符串,则将内存中被所述目标程序访问过的数据标记为污点数据;
其中,所述敏感文件为保存有不能被泄漏的信息的文件,所述敏感内存为出现了预先定义的特征字符串的内存。
7.如权利要求6所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,所述步骤(1)还包括:若检测到主机中应用程序调用了在本地访问污点数据的API,则根据污点传播规则,对各指令目的操作数的污点属性进行拷贝、合并、覆盖或者清除。
8.如权利要求7所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,还包括:若主机中应用程序在本地访问污点数据时,将污点数据写入了非敏感文件,则将该文件标记为敏感文件。
9.如权利要求1所述的适用于云环境的跨主机动态污点追踪方法,其特征在于,所述步骤(1)中,对应用程序的API调用行为的监控是通过在VMM层插桩实现的。
10.一种适用于云环境的跨主机动态污点追踪系统,其特征在于,包括:监控模块、第一发送模块、第二发送模块、第一接收模块以及第二接收模块;
所述监控模块用于持续监控云环境中各主机端应用程序的API调用行为;
所述第一发送模块用于在所述监控模块检测到主机中应用程序调用了网络发送相关的API时将该主机作为源主机,在所述源主机端检测网络发送缓冲区中的待发送报文是否包含污点数据,并在所述待发送报文中不包含污点数据时直接发送所述待发送报文;
所述第二发送模块用于在所述第一发送模块检测到所述待发送报文中包含污点数据时,生成一个或多个污点数据包,并发送所生成的污点数据包以完成对所述待发送报文的发送;
所述第一接收模块用于在所述监控模块检测到主机中应用程序调用了网络接收相关的API时将该主机作为目的主机,在所述目的主机端检测网络接收缓冲区中的待接收报文中是否包含污点数据,并在所述待接收报文中不包含污点数据时,直接接收所述待接收报文;
所述第二接收模块用于在所述第一接收模块检测到所述待接收报文中包含污点数据时,解析所述网络接收缓冲区中的污点数据包的污点头部,利用属于所述待接收报文的污点数据包重组所述待接收报文,并在所述目的主机中对所述待接收报文中数据的污点属性进行设置,从而完成对所述待接收标报文的接收;
其中,所述污点数据包的长度不超过MTU值,所述污点数据包由污点头部和污点载荷组成,所述污点载荷为一个完整报文或报文的一个分片,根据同一报文生成的所有污点数据包的污点载荷可重组得到该报文;
所述污点头部包括标识、分片标识、数据长度以及校验和;所述标识用于唯一标识报文并标明该报文中是否包含污点数据;所述分片标识用于记录污点载荷在报文中的偏移并标明该污点载荷是否为报文中的最后一个分片;所述数据长度用于记录污点载荷的长度;所述校验和用于验证报文是否被正确传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910344787.6A CN110177085B (zh) | 2019-04-26 | 2019-04-26 | 适用于云环境的跨主机动态污点追踪方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910344787.6A CN110177085B (zh) | 2019-04-26 | 2019-04-26 | 适用于云环境的跨主机动态污点追踪方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110177085A true CN110177085A (zh) | 2019-08-27 |
CN110177085B CN110177085B (zh) | 2020-09-08 |
Family
ID=67690163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910344787.6A Active CN110177085B (zh) | 2019-04-26 | 2019-04-26 | 适用于云环境的跨主机动态污点追踪方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110177085B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965627A (zh) * | 2020-07-02 | 2022-01-21 | 北京瀚海云星科技有限公司 | 一种发送数据的方法、低延时接收数据的方法及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050276386A1 (en) * | 2004-06-15 | 2005-12-15 | Cisco Technology, Inc. | System and method for end-to-end communications tracing |
US20130055339A1 (en) * | 2011-08-29 | 2013-02-28 | Paul Apostolescu | Security event management apparatus, systems, and methods |
CN104766012A (zh) * | 2015-04-09 | 2015-07-08 | 广东电网有限责任公司信息中心 | 基于动态污点追踪的数据安全动态检测方法及系统 |
CN106548074A (zh) * | 2016-12-09 | 2017-03-29 | 江苏通付盾科技有限公司 | 应用程序分析监测方法及系统 |
CN107665191A (zh) * | 2017-10-19 | 2018-02-06 | 中国人民解放军陆军工程大学 | 一种基于扩展前缀树的私有协议报文格式推断方法 |
CN109583200A (zh) * | 2017-09-28 | 2019-04-05 | 中国科学院软件研究所 | 一种基于动态污点传播的程序异常分析方法 |
-
2019
- 2019-04-26 CN CN201910344787.6A patent/CN110177085B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050276386A1 (en) * | 2004-06-15 | 2005-12-15 | Cisco Technology, Inc. | System and method for end-to-end communications tracing |
US20130055339A1 (en) * | 2011-08-29 | 2013-02-28 | Paul Apostolescu | Security event management apparatus, systems, and methods |
CN104766012A (zh) * | 2015-04-09 | 2015-07-08 | 广东电网有限责任公司信息中心 | 基于动态污点追踪的数据安全动态检测方法及系统 |
CN106548074A (zh) * | 2016-12-09 | 2017-03-29 | 江苏通付盾科技有限公司 | 应用程序分析监测方法及系统 |
CN109583200A (zh) * | 2017-09-28 | 2019-04-05 | 中国科学院软件研究所 | 一种基于动态污点传播的程序异常分析方法 |
CN107665191A (zh) * | 2017-10-19 | 2018-02-06 | 中国人民解放军陆军工程大学 | 一种基于扩展前缀树的私有协议报文格式推断方法 |
Non-Patent Citations (2)
Title |
---|
任飞飞等: "跨主机动态污点跟踪技术研究", 《计算机工程》 * |
金志刚编著: "第7.2.5节 IP数据报的分片与重组", 《计算机网络》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965627A (zh) * | 2020-07-02 | 2022-01-21 | 北京瀚海云星科技有限公司 | 一种发送数据的方法、低延时接收数据的方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110177085B (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8122436B2 (en) | Privacy enhanced error reports | |
US7685640B2 (en) | Methods and apparatus for interface adapter integrated virus protection | |
Lv | Security of internet of things edge devices | |
US9189627B1 (en) | System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection | |
Ji et al. | Enabling refinable {Cross-Host} attack investigation with efficient data flow tagging and tracking | |
Bos et al. | Assessing the feasibility of single trace power analysis of Frodo | |
US20190325145A1 (en) | Management of Security Vulnerabilities | |
CN110728575A (zh) | 一种电力交易平台web安全深度监控方法 | |
CN111967044B (zh) | 一种适用于云环境的被泄漏隐私数据的追踪方法及系统 | |
CN106355092A (zh) | 用于优化反病毒测定的系统和方法 | |
Briongos et al. | Modeling side-channel cache attacks on aes | |
Haas et al. | itimed: Cache attacks on the apple a10 fusion soc | |
US10356108B2 (en) | System and method of detecting malicious multimedia files | |
CN113206850B (zh) | 恶意样本的报文信息获取方法、装置、设备及存储介质 | |
CN110177085A (zh) | 适用于云环境的跨主机动态污点追踪方法及系统 | |
CN116743619B (zh) | 网络服务的测试方法、装置、设备及存储介质 | |
CN109951527B (zh) | 面向虚拟化系统的hypervisor完整性检测方法 | |
CN104639313A (zh) | 一种密码算法的检测方法 | |
CN109688139B (zh) | 云平台安全检测系统 | |
CN113672416B (zh) | 硬buffer泄漏的原因定位方法及装置 | |
Tang et al. | Dynamic taint analysis for vulnerability exploits detection | |
TWI578158B (zh) | 偵測一隱私資訊有無可能被竊取的裝置及方法 | |
Liu et al. | Anatomist: Enhanced Firmware Vulnerability Discovery Based on Program State Abnormality Determination with Whole-System Replay | |
Huster et al. | To Boldly Go Where No Fuzzer Has Gone Before: Finding Bugs in Linux'Wireless Stacks through VirtIO Devices | |
CN116842526A (zh) | 漏洞检测方法、装置、计算机设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |