发明名称 一种基于比特熵的DNS流量识别方法
摘要 一种基于比特熵的DNS流量识别方法,本方法基于DNS报文都是具有DNS格式结构,其字节比特熵也比较接近,而端口号为53的非DNS报文由于不是DNS报文结构,由此它们的比特熵距离比较远;本方法在测量之前首先采集部分DNS报文作为样本,计算DNS报文样本字节的比特熵,对检测到端口为53的报文,同样计算其字节比特熵,比较端口号为53报文的字节比特熵和DNS报文样本比特熵的距离,如果检测的比特熵之间的距离大于设定的阀值,则认为该53号端口报文是非DNS报文,否则认为是DNS报文;本发明和现有方法相比计算速度快,使用系统存储也非常少,同时节省处理网络流量的时间。
申请公布号 CN106533829A 申请公布日期 2017.03.22
申请号 CN201610970282.7 申请日期 2016.11.04
申请人 东南大学 发明人 程光
分类号 H04L12/26(2006.01)I;H04L29/06(2006.01)I;H04L29/12(2006.01)I 主分类号 H04L12/26(2006.01)I
代理机构 南京苏高专利商标事务所(普通合伙) 32204 代理人 柏尚春
主权项 一种基于比特熵的DNS流量识别方法,其特征在于,步骤一:设置一个DNS分类阀值H,设置采集DNS报文样本数量m,设置检测源端口或宿端口是53的报文的结束时间T,进入步骤二;步骤二:从网络流量中采集报文的源端口或宿端口是53的报文,采用DNS协议识别的方法抓取m个DNS报文,进入步骤三;步骤三:统计采集到m个DNS报文的荷载字节数k,每个字节有8个比特,统计这8个比特的每个比特熵值,累加统计这k个字节中每个字节的第1个比特且值为1的出现个数b1,第1个比特熵值e1=‑(b1/k)*log<sub>2</sub>(b1/k)‑(1‑b1/k)*log<sub>2</sub>(1‑b1/k),累加统计这k个字节中每个字节的第2个比特且值为1的出现个数b2,第2个比特熵值e2=‑(b2/k)*log<sub>2</sub>(b2/k)‑(1‑b2/k)*log<sub>2</sub>(1‑b2/k),累加统计这k个字节中每个字节的第3个比特且值为1的出现个数b3,第3个比特熵值e3=‑(b3/k)*log<sub>2</sub>(b3/k)‑(1‑b3/k)*log<sub>2</sub>(1‑b3/k),累加统计这k个字节中每个字节的第4个比特且值为1的出现个数b4,第4个比特熵值e4=‑(b4/k)*log<sub>2</sub>(b4/k)‑(1‑b4/k)*log<sub>2</sub>(1‑b4/k),累加统计这k个字节中每个字节的第5个比特且值为1的出现个数b5,第5个比特熵值e5=‑(b5/k)*log<sub>2</sub>(b5/k)‑(1‑b5/k)*log<sub>2</sub>(1‑b5/k),累加统计这k个字节中每个字节的第6个比特且值为1的出现个数b6,第6个比特熵值e6=‑(b6/k)*log<sub>2</sub>(b6/k)‑(1‑b6/k)*log<sub>2</sub>(1‑b6/k),累加统计这k个字节中每个字节的第7个比特且值为1的出现个数b7,第7个比特熵值e7=‑(b7/k)*log<sub>2</sub>(b7/k)‑(1‑b7/k)*log<sub>2</sub>(1‑b7/k),累加统计这k个字节中每个字节的第8个比特且值为1的出现个数b8,第8个比特熵值e8=‑(b8/k)*log<sub>2</sub>(b8/k)‑(1‑b8/k)*log<sub>2</sub>(1‑b8/k),其中log<sub>2</sub>是以2为底的对数,进入步骤四;步骤四:采集待处理一个源端口或宿端口是53的报文,进入步骤五;步骤五:统计采集到源端口或宿端口是53的报文荷载字节数h,累加统计这h个字节中每个字节的第1个比特且值为1的出现个数p1,第1个比特熵值f1=‑(p1/h)*log<sub>2</sub>(p1/h)‑(1‑p1/h)*log<sub>2</sub>(1‑p1/h),累加统计这k个字节中每个字节的第2个比特且值为1的出现个数p2,第2个比特熵值f2=‑(p2/h)*log<sub>2</sub>(p2/h)‑(1‑p2/h)*log<sub>2</sub>(1‑p2/h),累加统计这h个字节中每个字节的第3个比特且值为1的出现个数p3,第3个比特熵值f3=‑(p3/h)*log<sub>2</sub>(p3/h)‑(1‑p3/h)*log<sub>2</sub>(1‑p3/h),累加统计这h个字节中每个字节的第4个比特且值为1的出现个数p4,第4个比特熵值f4=‑(p4/h)*log<sub>2</sub>(p4/h)‑(1‑p4/h)*log<sub>2</sub>(1‑p4/h),累加统计这h个字节中每个字节的第5个比特且值为1的出现个数p5,第5个比特熵值f5=‑(p5/h)*log<sub>2</sub>(p5/h)‑(1‑p5/h)*log<sub>2</sub>(1‑p5/h),累加统计这h个字节中每个字节的第6个比特且值为1的出现个数p6,第6个比特熵值f6=‑(p6/h)*log<sub>2</sub>(p6/h)‑(1‑p6/h)*log<sub>2</sub>(1‑p6/h),累加统计这h个字节中每个字节的第7个比特且值为1的出现个数p7,第7个比特熵值f7=‑(p7/h)*log<sub>2</sub>(p7/h)‑(1‑p7/h)*log<sub>2</sub>(1‑p7/h),累加统计这h个字节中每个字节的第8个比特且值为1的出现个数p8,第8个比特熵值f8=‑(p8/h)*log<sub>2</sub>(p8/h)‑(1‑p8/h)*log<sub>2</sub>(1‑p8/h),进入步骤六;步骤六:计算待检测的源端口或宿端口是53的报文和DNS报文之间的比特熵值距离a,aa=(e1‑f1)<sup>2</sup>+(e2‑f2)<sup>2</sup>+(e3‑f3)<sup>2</sup>+(e4‑f4)<sup>2</sup>+(e5‑f5)<sup>2</sup>+(e6‑f6)<sup>2</sup>+(e7‑f7)<sup>2</sup>+(e8‑f8)<sup>2</sup>,a=sqrt(aa/8),其中,aa表示中间值,进入步骤七;步骤七:根据比特熵值距离a和DNS分类阀值H比较,如果a小于H,则被检测的源端口或宿端口是53的报文为DNS报文,否则被检测的53号端口报文不是DNS报文,进入步骤八;步骤八:如果现在测量时间小于结束时间T,返回步骤四,否则结束方法。
地址 210088 江苏省南京市浦口区泰山新村东大路6号