个初始字符串 平均分为两组,随机抽取一个数(如"255"),则取第一组中的第255个字符串(如"adsl27"), 抽取第二组中的第745(其中,745 = 1000-255)个字符串(如"3D4Y91T ),组成新的随机字符 串"ads 1273D4Y9U"。然后,从在步骤S1中确定的Cd个顶级域中例如随机选择一个顶级域(如 "CC"),把字符串和该顶级域通过号连接生成域名"adsl273D4Y9U.cc"。并随后按照 RFC1035中对查询名的规定对该域名进行格式化,例如将域名"www.adsl273D4Y9U.cc"格式 化为"3wwwl2adsl273D4Y9U2cc(T。由此,可W生成问题部分的查询名。
[0080] S5:将在步骤S2中所确定的固定部分与在步骤S4中所确定的动态部分组合成一个 DNS查询包,将DNS查询包的数量加1,并继续步骤S3。
[0081] 本领域的技术人员应理解,用于确定DNS查询包动态部分的步骤(即上述实施例中 的步骤S4)不依赖于用于确定DNS固定部分的步骤(即上述实施例中的步骤S2)的结果。因此 在本发明的其它实施例中,还可W不必在步骤S4前实施步骤S2(例如可W同步地实施步骤 S2和S4,或者在步骤S4后实施步骤S2),而仅在预处理的步骤S1之后、并且在将固定部分和 动态部分合成DNS查询包的步骤S5前完成步骤S2和S4即可。
[0082] 为了方便理解,W下结合一个具体的实例来详细介绍本发明的方法。
[0083] 首先,算出所需要的随机字符串的数量,假设每秒发送不同查询包的数量为10万 个,要求在2000秒内DNS服务器收到的都是不同的查询,现有可用的查询类型为20种、顶级 域名为10个,那么根据公式
可知需要2000个字符串。将运2000个字 符串分为两组,每组1000个字符串。准备10个顶级域,例如com、cn、edu、org等。
[0084] 并且,生成DNS查询包的固定部分的6个字段。从0至化5535之间随机地选择数值(如 1221)并将其赋值给标识字段。对标志中的字段依次赋值:作为查询报文,将化it的QR字段 赋值为0;采用标准查询,将4bi t的opcode字段赋值为0;没有授权字段,将AA字段赋值为0; 报文大小大约是80字节左右,不会超过UDP报文的总长度,将Ibit的TC字段赋值为0;对DNS 服务器进行攻击,期望它进行递归进一步消耗它的资源,将Ibit的TD字段赋值为1;将其余 字段都赋值为0。并且,将查询问题、资源记录数、授权资源记录数、额外资源记录数分别赋 值为1、〇、〇、〇。
[0085] 最后,快速生成不同DNS查询包。分别从预处理的AB两组中选取一个字符串,如分 别为albc23和A47D3E,连接起来,再选择一个顶级域名如com,用点号连接起来,成为 a化。23447036.。〇111。将域名日化。23447036.。〇111进行格式化为12日化。234470363。〇1110。设置查 询类型为1,表示根据域名请求IP;查询类设置为1,表示查询类是换联网类。由此生成DNS查 询的动态部分。然后,把预先生成的固定部分拷贝过来并修改相应的字段值(如标识、不期 望递归、反向查询),和刚刚生成的动态部分组合成一个查询包。重复该过程,就能快速生成 大量不同的查询包。
[0086] 为了验证本发明的方法的效果,发明人进行了仿真实验,所采用的实验环境在表3 中列出。
[0087] 表3实验环境 [008引
[0089] 图巧日图3示出了分别采用根据本发明的方法和传统方法来生成DNS查询包的仿真 结果。图4是采用两种方法生成DNS查询包的速度的对比图。
[0090] 由图2、图3和图4可知,采用本发明的方法能生成更多的不同DNS查询包(在相同条 件下,即采用相同数量的用于生成域名的字符串时,本发明可W生成10万个不同DNS查询 包,而采用传统方法只能生成2000个不同查询包),并且本发明生成DNS查询包的速度更快, 可W提高约42 %的速度。
[0091] 最后所应说明的是,W上实施例仅用W说明本发明的技术方案而非限制。尽管参 照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方 案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明 的权利要求范围当中。
【主权项】
1. 一种生成DNS查询包的方法,包括: 1) 生成DNS查询包中的动态部分; 2) 将DNS查询包中的固定部分和所述动态部分组合成DNS查询包; 其中,在多个所述DNS查询包之间,固定部分的内容保持不变,而动态部分的内容改变。2. 根据权利要求1所述的方法,其中步骤1)所述生成DNS查询包中的动态部分的方法, 包括: 1-1)根据用于生成二级域的字符串和顶级域生成查询名; 1-2)根据所述查询名、查询类和查询类型生成DNS查询包中的动态部分。3. 根据权利要求2所述的方法,其中步骤1)还包括: 1-01)确定用于生成所述用于生成二级域的字符串的初始字符串的数量V,并确定生成 的初始字符串的长度M的最小值Mmin; 1-02)从所述V个初始字符串中的一部分中选出一个字符串,并从所述V个初始字符串 中的另一部分中选出一个字符串,将运两个字符串组合成所述用于生成二级域的字符串。4. 根据权利要求3所述的方法,其中所述的初始字符串的数量其中,C是在每秒中所需要的不同DNS查询包的数量,T是需要在时间T内不允许有重复 的查询包,Ct表示用户所选择的查询类型的数量,Cd表示可用的顶级域的数量。5. 根据权利要求3或4所述的方法,其中所述的初始字符串由数字和大小写字母构成。6. 根据权利要求5所述的方法,其中初始字符串的长度M的最小值Mmin满足数字和字母 的组合数应该大于所需初始字符串的数量X 其中,e訟表示所述初始字符串中包括从'0-9'的10种数字中选取了Ln个的数字,C||.表 示所述初始字符串中包括从'a-z'和'A-Z'的52种大小写字母选取了Ln个的字母。7. 根据权利要求5所述的方法,其中,所述查询类型为在已有的各种查询类型中除去反 向查询W外的查询类型。8. 根据权利要求5所述的方法,其中,所述初始字符串由一半数字字符和一半大小写字 母字符母组成。9. 根据权利要求5所述的方法,其中,将所述V个初始字符串平均分成两部分,W作为步 骤1-02)中的所述一部分和所述另一部分。10. -种生成DNS查询包的设备,包括: 用于生成DNS查询包中的动态部分的装置; 用于将DNS查询包中的固定部分和所述动态部分组合成DNS查询包的装置; 其中,在多个所述DNS查询包之间,固定部分的内容保持不变,而动态部分的内容改变。
【专利摘要】本发明提供一种生成DNS查询包的方法,包括:确定DNS查询包中的固定部分,所述固定部分包括标识、标志、问题数、资源记录数、授权资源记录数和额外资源的字段中的至少一个;并生成一个或多个DNS查询包中的动态部分,所述动态部分为DNS查询包中除固定部分以外的其他字段;将所述固定部分和一个或多个所述动态部分组合成一个或多个DNS查询包。本发明可以分开实现DNS查询包的固定部分和动态部分,以简化生成查询包的操作;并且在采用同等字符串数量的条件下,可以生成更多数量的DNS查询包;还可以通过简单的操作快速地生成不同的动态部分,从而快速地将DNS查询包的固定部分和动态部分合成DNS查询包。
【IPC分类】H04L29/12, H04L12/26, H04L29/06
【公开号】CN105656939
【申请号】
【发明人】李锦文, 王淼, 孟绪颖, 张玉军
【申请人】中国科学院计算技术研究所
【公开日】2016年6月8日
【申请日】2016年3月14日