使用K近邻算法检测Rootkit
基于telnet连接的rootkit检测流程:
KDD 99 数据(41维特征)->筛选与rootkit相关特征->基于tcp内容的特征->向量化->与rootkit相关的特征向量->KNN算法+10折交叉验证->评估效果
1、数据搜集和清洗
这里用的是KDD 99数据集,筛选标记为rootkit和normal且是telnet协议的数据
if(x1[41] in ['rootkit.','normal.']) and (x1[2] == 'telnet'):
if x1[41] == 'rootkit.':
y.append(1)
else:
y.append(0)
2、特征化
挑选与rootkit相关的特征作为样本特征
x1 = x1[9:21]
v.append(x1)
for x1 in v:
v1 = []
for x2 in x1:
v1.append(float(x2))
w.append(v1)
3、训练样本
实例化KNN算法,k设置为3
model = KNeighborsClassifier(n_neighbors=3)
4、效果验证
使用十折交叉验证
model_selection.cross_val_score(model,x,y,n_jobs=-1,cv=10)
完整代码: