标准差测端口的随机性判定DNS缓存中毒
摘要
端口使用的随机性是评估是否有DNS缓存中毒危险的一个重要标准。
本文主要介绍使用概率论的方法来判断DNS端口使用的随机性,首先将介绍相关的理论知识,然后通过一个43g的DNS解析日志文件作为测试文件,通过hadoop来存储文件,用mapreduce来求解标准差,最后通过java绘制结果来进行DNS源端口的测试。
相关理论
(1)离散均匀分布
若随机变量有n个不同值,具有相同概率,则我们称之为离散均匀分布,通常发生在我们不确定各种情况发生的机会,且认为每个机会都相等,例如:投掷骰子等.
设离散随机变量 X之可能变量有1,2,3….n,若其概率函数为
(1)
则称X 服从离散均匀分布.
DNS的源端口使用的是0-25535之间的任意整数,使用具有随机性,所以我们可以将该事件看作一种离散均匀分布
(2)离散均匀分布的数字特征
(2)
根据DNS解析日志文件我们可以得到样本的实际标准差,通过
(3)
求得样本的标准差。
考虑一个样本的标准偏差,我们可以估算样本大小的二进制位数为:
由公式(2) 可得
(4)
给出测试的标准,如表 1所示:
表 1 Scoring
Score GREAT GOOD POOR
S Range 10.0 – 13.75 0 – 10.0 0 – 296
bits Range 13.75 – 16.0 3980 – 20,000+ 296 – 3980
数据测试
根据以上分析得到的判断指标对DNS解析日志进行分析,DNS解析日志的格式如表 1所示。
表1 log表
列名 数据类型 允许Null值 说明
Userip Varchar(16)
DNS Varchar(16) DNS
Domain Varchar(40) 域名
Qtype Varchar(7) 请求类型
Flag int 未知
answer Varchar(16) 返回结果
Atype Int 返回类型
Port Bigint 端口号
Time Varchar(16) 时间
根据DNS解析日志的信息按照如图Figure 2所示流程图计算用户端口随机性。
测试结果如图
(1) 一个用户的测试结果,如Figure 3所示:
(1) 一天中所有用户的计算结果,如Figure 4所示:
共同学习,写下你的评论
评论加载中...
作者其他优质文章