【人工智能安全实践】基于KNN算法检测RootKit

admin 2022年3月25日16:15:21评论107 views字数 1240阅读4分8秒阅读模式

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

3.特征化函数get_rootkit2andNormal

(1)获取标签,即是否为Rootkit,参考代码如下

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


原文始发于微信公众号(小白嘿课):【人工智能安全实践】基于KNN算法检测RootKit

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月25日16:15:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【人工智能安全实践】基于KNN算法检测RootKithttps://cn-sec.com/archives/841694.html

发表评论

匿名网友 填写信息