客户端服务器与网段聚类识别总结
标签(空格分隔): ml
客户端服务器识别:
利用dns数据进行监督建模并输出模型,难点在于如何收集数据标签,对数据进行预先标注,并利用分类模型进行训练和解释。
数据标注
数据标注结合了dhcp的数据和部分已知网段和人工标注。具体的方法如下:
1 将访问域名中明显包含手机域名而且一天超过2-3次的client标记为客户端,同样的方法标记服务器
2 将10.16.0.0/16 整个网段的机器标记为服务器
3 人工标记10.19.1.0/255 将10.19.1.25 10.19.1.122 标记为客户端
4 将dhcp数据里包含'DESKTOP%' and '%MBP%' 的ip 标记为客户端
特征的提取与检验
总的来讲参考了在峰的一些统计特征。
fqdn_cnt: fqdn个数确认
sld_cnt query_cnt: sld访问数量
alexa_top_20k_cnt: alexa top 2w
mini_rank_cnt: prevalence<4.5
hour_stat: 每小时访问量统计
online_hour: 在线小时数
hour_visit:
query_gini:24小时访问集中度
alexa_top_20_cnt: alexa top20 访问量占比
avg_fqdn_cnt: query_cnt/fqdn_cnt
alexa_top20_ratio: alexa_top_20/query_cnt
训练
利用lightgbm树模型对这些特征进行分类不断拟合当前的标记的数据并将方差降低到最低。 利用optuna 进行与训练快速得到最优的参数,并利用最优参数得到树模型。可利用shap进行树模型的解释。
从树模型的特征重点排序上可以看出
avg_fqdn_cnt
sld_cnt
alexa_top20_ratio
query_gini
online_hour
query_gini
fqdn_cnt
alexa_top_20_cnt
结果
整体数据准确率0.9676
从我执行多次和在峰数据对比上看,2%不同。
网段识别
整体探索思路
- 分析整体24段中的客户端服务器的比例,预先分类出服务器客户端网段
客户端再划分出来办公网段和wifi网段
2 根据网段客户端和访问 时间序列来进行网段相似度的划分。
### 计算客户端和服务器的占比
1 过滤整个16网段中client_ip数量小于10的网段
2 根据过滤出来16网段统计网段中服务端和客户端数中占比超过0.9的各自归类到相应的网段中去。
3 在客户端网段中访问统计手机域名的client_ip的数量和占比,手机访问域名占比较高的网段归到wifi网段
4 根据判定的客户端的网段来进行网段划分领域的探索
网段划分的思考
0.0.0.0
2 4 8 16 32 64 128
从24->16
如果是根据某种规律划分那么划分的网段那么应该可以划分出 不同的群集 以及层次划分,我把这类问题定在了层次聚类。
层次聚类的基础特征是以时间序列为主要特征,使用了
1 基于时间序列特征和部分网段统计特征进行层次聚类
2 基于DTW 进行时间序列的聚类
从层次的结果上来看并没有很好的发现有比较好的划分结果,究其原因有以下两点:
1 聚类个数不能确定
2 聚类的合并需要满足临近网段相似的特征才能合并。
附录:思维导图
本文由 妖言君 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jun 3, 2022 at 02:52 pm