1.Rootkit是什么?
“Rootkit”中root术语来自于unix领域。由于unix主机系统管理员账号为root账号,该账号拥有最小的安全限制,完全控制主机并拥有了管理员权限被称为“root”了这台电脑。然而能够“root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现了主机遭受入侵并采取清理措施。因此Rootkit的初始含义就在于“能维持root权限的一套工具”。
毫无疑问,这是一个恶意软件
2.kddcup99数据集
该数据集是从一个模拟的美国空军局域网上采集来的9周的网络连接数据,分成具有标识的训练数据和未加标识的测试数据。KDD数据集中每个连接用41个特征来描述,以csv格式写成。
加载数据集
def load_kdd99(filename):
x=[]
with open(filename) as f:
for line in f:
line=line.strip('n')
line=line.split(',')
x.append(line)
return x
def get_rootkit2andNormal(x):
v=[]
w=[]
y=[]
for x1 in x:
if ( x1[41] in ['rootkit.','normal.'] ) and ( x1[2] == 'telnet' ):
if x1[41] == 'rootkit.':
y.append(1)
print('len(x)',len(x1), x1)
else:
y.append(0)
def get_rootkit2andNormal(x):
v=[]
w=[]
y=[]
for x1 in x:
if ( x1[41] in ['rootkit.','normal.'] ) and ( x1[2] == 'telnet' ):
if x1[41] == 'rootkit.':
y.append(1)
print('len(x)',len(x1), x1)
else:
y.append(0)
x1 = x1[9:21]
v.append(x1)
for x1 in v :
v1=[]
for x2 in x1:
v1.append(float(x2))
w.append(v1)
return w,y
if __name__ == '__main__':
v=load_kdd99("./data/kddcup99/corrected")
x,y=get_rootkit2andNormal(v)
clf = KNeighborsClassifier(n_neighbors=3)
print(model_selection.cross_val_score(clf, x, y, n_jobs=-1, cv=10))
结果
本实验为检测基于telnet的Rootkit行为,故而代码中仅仅选取telnet相关的标签,仅为是Rootkit和非Rootkit,如下为打印信息
原文始发于微信公众号(小白嘿课):【人工智能安全实践】基于KNN算法检测RootKit
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论