法律状态公告日
法律状态信息
法律状态
2017-12-08
授权
授权
2015-07-08
实质审查的生效 IPC(主分类):G06F21/10 申请日:20150305
实质审查的生效
2015-06-10
公开
公开
技术领域
本发明涉及信息安全技术领域,特别是涉及一种基于PE文件的隐蔽信道的检测和限制方法。
背景技术
随着计算机硬件和密码学理论的发展,基于传统加密技术的信息传输的安全性日益受到威胁。目前隐蔽信道技术已经成为信息安全领域一个重要的分支,其研究主要针对网页、图像、音视频和文本等互联网载体,并且取得了较大的研究成果。2000年以来,随着Windows视窗操作系统在个人电脑领域占据绝对优势,PE(Portable Executable Format)文件成为了互联网上传输的最主要的软件产品。近些年,基于PE文件的隐蔽信道技术成为了信息隐藏技术最主要的研究方向之一。吴振强等人首次将PE文件作为掩护媒体引入信息隐藏领域,并且给出了基于PE文件的信息隐藏方案(1.吴振强,冯绍东,马建峰. PE文件的信息隐藏方案与实现. 计算机工程与应用,2005.27:148-150)。根据PE文件资源节的结构特点,徐晓静等人提出了一种新的信息隐藏方案(2.徐晓静,徐向阳,梁海华等. PE文件资源节的信息隐藏研究与方案实现. 计算机应用,2007.3:321-623)。冯立军提出并实现了一种通过增加位图调色板中的颜色数来嵌入数据的信息隐藏算法,设计并实现了一种利用重定位项顺序表示数据的信息隐藏算法(3.冯立军,PE文件格式的信息隐藏技术研究与实现,电子科技大学硕士学位论文,2011.3.)。
基于PE文件的隐蔽信道技术主要目标是在PE文件中嵌入隐蔽信道,并且保证PE文件结构的可执行性。已有的在PE文件中嵌入隐蔽信道的方法有下面几种:(1)在PE文件中新添加的节中嵌入隐蔽信息;(2)在PE文件头的DOS Header段中嵌入隐蔽信息;(3)在PE文件边界对齐时所产生的冗余空间中嵌入隐蔽信息;(4)在PE文件资源节的位图部分中嵌入隐蔽信息;(5)在PE文件重定位节中嵌入隐蔽信息。
但是,截止目前还没有检测和限制基于PE文件的隐蔽信道的方法。
发明内容
本发明主要解决的技术问题是提供一种基于PE文件的隐蔽信道的检测和限制方法,通过在深入分析基于PE文件边界对齐时所产生的冗余空间中嵌入隐蔽信息、在PE文件资源节的位图部分中嵌入隐蔽信息、在PE文件重定位节中嵌入隐蔽信息的基础上,提出了一种检测和限制基于PE文件的隐蔽信道的方法,在基于PE文件的隐蔽信道的检测和限制方法的普及上有着广泛的市场前景。
为解决上述技术问题,本发明提供一种基于PE文件的隐蔽信道的检测和限制方法,包括以下步骤:
(1)发送端读取文件:
将待发送的PE文件读入内存,并把PE文件分拆为5个部分:DOS MZ头、DOS Stub、PE头、Sections Table和Section,然后分别执行以下步骤用以从各部分提取校验码的初始数据:
(1.1)从DOS MZ头和DOS Stub提取数据:DOS MZ头包括字段e_lfanew,DOS Stub包括ImageBase,从DOS MZ头中提取含有字段e_lfanew的16个字节数据,从DOS Stub提取相对于ImageBase的地址为70h-7fh的数据,
(1.2)从PE头提取数据:PE头包括NTFile,从PE头中提取相对于NTFile的地址为00h-0fh的数据,从PE头提取相对于NTFile的地址为10-1fh的数据,从PE头提取相对于NTFile的地址为20-2fh的数据,从PE头提取相对于NTFile的地址为30-3fh的数据, 从PE头提取相对于NTFile的地址为40-4fh的数据, 从PE头提取相对于NTFile的地址为50-5fh的数据,
(1.3)从Sections Table提取数据:Sections Table包括资源表和重定位表,从Sections Table中提取第一结构体和第二结构体,其中所述第一结构体包括资源表的起始地址和资源表的大小,并从资源表的起始地址开始提取16个连续字节,所述第二结构体包括重定位表的起始地址和重定位表的大小,并从重定位表的起始地址开始提取16个连续字节,
(1.4)对资源表的关键字段提取数据:令所述资源表的起始地址为Address1、所述资源表的大小为Size1, 令ResourceAddress = NTFile + Address1,执行算法:
(a)令J=1,
(b)判断ResourceAddress与ResourceAddress+Size1的大小关系,
(c)当ResourceAddress小于ResourceAddress+Size1,计算ResourceAddress+i*16并赋值给ResourceAddress,然后将ResourceAddress开始的16个连续字节复制给DJ,再令J+1赋值给J,然后返回步骤(b)继续执行,
(d)当ResourceAddress大于或者等于ResourceAddress+Size1,结束执行,设此算法结束后J=m,
(1.5)对重定位表的关键字段提取数据:令所述重定位表的起始地址为Address2、所述重定位表的大小为Size2, 令BaseRelocAddress = NTFile + Address,执行算法:
(e)令J=1,
(f)判断BaseRelocAddress与BaseRelocAddress+Size2的大小关系,
(g)当BaseRelocAddress小于BaseRelocAddress+Size2,计算BaseRelocAddress+i*16并赋值给BaseRelocAddress,然后将BaseRelocAddress开始的16个连续字节复制给DJ,再令J+1赋值给J,然后返回步骤(f)继续执行,
(h)当BaseRelocAddress大于或者等于BaseRelocAddress+Size2,结束执行,设此算法结束后J=n,
Sections Table中包括NTHeader,所述NTHeader包括248个字节数据,并将所述248个字节数据定义为F8,令Temp = NTFile + F8,然后从地址为Temp处提取16个连续的16字节数据;
(2)数据加权:
令SDi = (取加权值),把SDi转化为二进制SDi’,令D = ;
(3)生成验证码:
收发双方约定一个4字节的生成多项式,把D表示成包括16字节数据 + 4字节校验码的20字节的二进制CRC校验码,然后写入相对于PE文件中ImageBase的地址为20h-33h的PE文件中,用于接收端的校验;
(4)接收端判断有无隐藏信息:
接收端利用收发双方约定的4字节生成多项式检验PE文件中相对于ImageBase的地址为20h-33h的数据,如果结果为零,则说明该PE文件没有嵌入隐藏信息,算法结束,如果为非零,则说明该PE文件中可能含有隐藏信息,继续执行;
(5)接收端读取文件:
把接收到的PE文件读入内存,把PE文件分拆成5个部分,分别是:DOS MZ头、DOS Stub、PE头、Sections Table和Section,执行以下步骤用以提取有效数据:
(5.1)判断有无资源节位图:所述DOS MZ头包括e_lfanew字段,从DOS MZ头提取出e_lfanew字段,如果(ImageBase+80h)=(ImageBase+e_lfanew),则执行步骤(5.2),否则,把地址在(ImageBase + 80h)—(ImageBase+e_lfanew)范围内的数据全部设置为0,
(5.2)破坏资源节位图的隐藏信息:所述PE文件包括设有第三结构体的DataDirectory部分,所述第三结构体包括第三资源表,从PE文件得DataDirectory部分的第三结构体提取第三资源表的相对虚拟地址设为RVA,遍历PE文件的Sections,根据提取出的RVA,提取该节的PointerToRawData和VirtualAddress两个字段,计算第三资源表在文件中的偏移地址=(PointerToRawData+RVA-VirtualAddress),依次遍历资源节结构的前三层,从第四层中提取出资源对应的IMAGE_RESOURCE_DATA_ENTRY结构,从第五层资源数据提取OffsetToData和Size,则资源数据在PE文件中的地址=(OffsetToData–VirtualAddress + PointerToRawData),通过这个地址和Size就可以找到并读取资源数据;
(5.3)判断有无重定位节并破坏隐藏信息:把步骤(5.2)中提取出的位图文件读入内存,根据位图文件机构分离出文件头、信息头、调色板和位图数据,执行下面的限制算法:
把调色板中原有颜色值的后面4个字节的数据都修改为0,把PE文件读入内存,遍历PE文件中的所有节,查找重定位节“.reloc”,如果该PE文件中不存在重定位节,则退出,否则遍历PE文件的重定位节,并提取重定位节中每个区段所包含的重定位项数目,令所有重定位项的数目= R,对这R个数进行全排列,则有R!种可能,取其中的一种可能,把重定位项重新排列。
在本发明一个较佳实施例中,步骤(1.1)中的所述字段e_lfanew为4个字节。
在本发明一个较佳实施例中,步骤(c)中的i为一个随机数。
本发明的有益效果是:本发明基于PE文件的隐蔽信道的检测和限制方法能检测出目前基于PE文件的隐蔽信道,在不破坏PE文件结构、保证PE文件可执行的基础上,限制隐蔽信道中的隐蔽信息,把威胁降低到系统可以接受的范围内,在基于PE文件的隐蔽信道的检测和限制方法的普及上有着广泛的市场前景。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的发送端对PE文件的处理流程;
图2是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的对资源节关键字段的数据提取算法;
图3是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的接收端对PE文件的处理流程;
图4是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的资源节的结构图;
图5是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的位图文件的结构图;
图6是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的提取的PE文件资源树图;
图7是本发明基于PE文件的隐蔽信道的检测和限制方法一较佳实施例的提取的PE文件重定位表。
具体实施方式
下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1-图7,本发明实施例包括:
一种基于PE文件的隐蔽信道的检测和限制方法,包括以下步骤:
(1)发送端读取文件:
将待发送的PE文件读入内存,并把PE文件分拆为5个部分:DOS MZ头、DOS Stub、PE头、Sections Table和Section,然后分别执行以下步骤用以从各部分提取校验码的初始数据:
(1.1)从DOS MZ头和DOS Stub提取数据:DOS MZ头包括字段e_lfanew,DOS Stub包括ImageBase,从DOS MZ头中提取含有字段e_lfanew的16个字节数据,从DOS Stub提取相对于ImageBase的地址为70h-7fh的数据,
(1.2)从PE头提取数据:PE头包括NTFile,从PE头中提取相对于NTFile的地址为00h-0fh的数据,从PE头提取相对于NTFile的地址为10-1fh的数据,从PE头提取相对于NTFile的地址为20-2fh的数据,从PE头提取相对于NTFile的地址为30-3fh的数据, 从PE头提取相对于NTFile的地址为40-4fh的数据, 从PE头提取相对于NTFile的地址为50-5fh的数据,
(1.3)从Sections Table提取数据:Sections Table包括资源表和重定位表,从Sections Table中提取第一结构体和第二结构体,其中所述第一结构体包括资源表的起始地址和资源表的大小,并从资源表的起始地址开始提取16个连续字节,所述第二结构体包括重定位表的起始地址和重定位表的大小,并从重定位表的起始地址开始提取16个连续字节,
(1.4)对资源表的关键字段提取数据:令所述资源表的起始地址为Address1、所述资源表的大小为Size1, 令ResourceAddress = NTFile + Address1,执行算法:
(a)令J=1,
(b)判断ResourceAddress与ResourceAddress+Size1的大小关系,
(c)当ResourceAddress小于ResourceAddress+Size1,计算ResourceAddress+i*16并赋值给ResourceAddress,然后将ResourceAddress开始的16个连续字节复制给DJ,再令J+1赋值给J,然后返回步骤(b)继续执行,
(d)当ResourceAddress大于或者等于ResourceAddress+Size1,结束执行,设此算法结束后J=m,
(1.5)对重定位表的关键字段提取数据:令所述重定位表的起始地址为Address2、所述重定位表的大小为Size2, 令BaseRelocAddress = NTFile + Address,执行算法:
(e)令J=1,
(f)判断BaseRelocAddress与BaseRelocAddress+Size2的大小关系,
(g)当BaseRelocAddress小于BaseRelocAddress+Size2,计算BaseRelocAddress+i*16并赋值给BaseRelocAddress,然后将BaseRelocAddress开始的16个连续字节复制给DJ,再令J+1赋值给J,然后返回步骤(f)继续执行,
(h)当BaseRelocAddress大于或者等于BaseRelocAddress+Size2,结束执行,设此算法结束后J=n,
Sections Table中包括NTHeader,所述NTHeader包括248个字节数据,并将所述248个字节数据定义为F8,令Temp = NTFile + F8,然后从地址为Temp处提取16个连续的16字节数据;
(2)数据加权:
令SDi = (取加权值),把SDi转化为二进制SDi’,令D = ;
(3)生成验证码:
收发双方约定一个4字节的生成多项式,把D表示成包括16字节数据 + 4字节校验码的20字节的二进制CRC校验码,然后写入相对于PE文件中ImageBase的地址为20h-33h的PE文件中,用于接收端的校验;
(4)接收端判断有无隐藏信息:
接收端利用收发双方约定的4字节生成多项式检验PE文件中相对于ImageBase的地址为20h-33h的数据,如果结果为零,则说明该PE文件没有嵌入隐藏信息,算法结束,如果为非零,则说明该PE文件中可能含有隐藏信息,继续执行;
(5)接收端读取文件:
把接收到的PE文件读入内存,把PE文件分拆成5个部分,分别是:DOS MZ头、DOS Stub、PE头、Sections Table和Section,执行以下步骤用以提取有效数据:
(5.1)判断有无资源节位图:所述DOS MZ头包括e_lfanew字段,从DOS MZ头提取出e_lfanew字段,如果(ImageBase+80h)=(ImageBase+e_lfanew),则执行步骤(5.2),否则,把地址在(ImageBase + 80h)—(ImageBase+e_lfanew)范围内的数据全部设置为0,
(5.2)破坏资源节位图的隐藏信息:所述PE文件包括设有第三结构体的DataDirectory部分,所述第三结构体包括第三资源表,从PE文件得DataDirectory部分的第三结构体提取第三资源表的相对虚拟地址设为RVA,遍历PE文件的Sections,根据提取出的RVA,提取该节的PointerToRawData和VirtualAddress两个字段,计算第三资源表在文件中的偏移地址=(PointerToRawData+RVA-VirtualAddress),依次遍历资源节结构的前三层,从第四层中提取出资源对应的IMAGE_RESOURCE_DATA_ENTRY结构,从第五层资源数据提取OffsetToData和Size,则资源数据在PE文件中的地址=(OffsetToData–VirtualAddress + PointerToRawData),通过这个地址和Size就可以找到并读取资源数据;
(5.3)判断有无重定位节并破坏隐藏信息:把步骤(5.2)中提取出的位图文件读入内存,根据位图文件机构分离出文件头、信息头、调色板和位图数据,执行下面的限制算法:
把调色板中原有颜色值的后面4个字节的数据都修改为0,把PE文件读入内存,遍历PE文件中的所有节,查找重定位节“.reloc”,如果该PE文件中不存在重定位节,则退出,否则遍历PE文件的重定位节,并提取重定位节中每个区段所包含的重定位项数目,令所有重定位项的数目= R,对这R个数进行全排列,则有R!种可能,取其中的一种可能,把重定位项重新排列。
优选地,步骤(1.1)中的所述字段e_lfanew为4个字节。
优选地,步骤(c)中的i为一个随机数。
具体实施例为:
发送方Alice:
步骤1:发送方Alice和接收方Bob约定使用的生成多项式,其表示成二进制是:1001 1010 0010 1110 0100 1100 0111 1001;
步骤2:表1是Alice从PE文件中提取的数据;
步骤3:对Di(1 <= i <= 48)取加权值,然后转化为二进制数,最后对48个二进制数取校验和,把二进制校验和转化为16进制数据,结果为:C4 66 0B 00 64 00 00 00 00 30 0C 00 D8 03 00 00 10 10 0D 00;
步骤4:把步骤3得到的校验码写入相对于ImageBase的地址为20h-33h的PE文件中。
接收方Bob:
步骤1:先把十六校验码转化为二进制,并根据生成多项式检查检验和段的数据,结果不是零,说明该PE文件中可能嵌入了隐藏信息执行步骤2;
步骤2:把地址在(ImageBase + 80h)—(ImageBase + e_lfanew)范围内的数据全部设置为0;
步骤3:资源节的RVA = 50000h, PointerToRawData = 1800h, VirtualAddress = 5000h;
步骤4:根据步骤3得到的资源节位图地址,把位图文件读入内存,把调色板中原有颜色值的后面4个字节的数据都修改为0。图6是提取出的资源树,其中Icon Entry含有28项数据,Menu、Dialog、String、Accelerators、Version和Manifest各含有1项数据,Group含有2项数据;
步骤5:重定位节的RVA = 8000h,根据此地址遍历重定位节,得到此PE文件重定位表的详细信息,如图6所示。
步骤6:此时把RVA = 00401000h的Items中的60项做一个全排列,有60!种可能,把第一个和最后一个的Offset项互换。
从实例可以看出,在接收端成功检测出该PE文件中含有隐蔽信道;执行限制算法后,破坏了该PE文件中含有的隐蔽信道。
为了表述方便,本实例只选取了.dll类型的PE文件。表2给出了其他PE文件类型的数据内容。
表1 PE文件中的数据(16进制);
表2 不同PE文件类型的数据内容(16进制);
本发明基于PE文件的隐蔽信道的检测和限制方法的有益效果是:
一、通过在PE文件中添加校验码,使得接收端可以检测出该PE文件中是否有隐蔽信道;
二、通过在含有隐蔽信道的PE文件中执行限制算法,限制隐蔽信道中的隐蔽信息,把威胁降低到系统可以接受的范围内。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
机译: 基于错误识别的隐蔽信道检测设备在自动化系统的测试节点中
机译: 用于车辆的安全带的带力限制器的操作方法,涉及基于检测到的安全带的带角度来减小带力限制器的力水平,并且通过传感器和检测单元来检测带角度。
机译: 在2000年11月28日提交的美国临时专利申请No.60 / 253,612中,本发明的实施例(与相关申请的交叉引用)对通信系统中的救济连接过程的重试限制是“那些要求优先权的”。限制,以检查呼叫缓解信道过程的限制)和RetryLimitforDropCallRescueChannelProcedures,以及2001年10月16日提交的美国专利申请第09/978974号“ ForwardLinkdBasedRescueChannelMethod andApparatusforTelecommunicationSystem”,涉及“(一种通信系统的设备转发和基于链路的救援信道方法),出于任何目的,我将其内容通过引用合并于此。