0x00 前言
本文记录基于兜哥《Web安全之深度学习实战》、论文《A Semantic Approach to Host-Based Intrusion Detection Systems Using Contiguous and Discontiguous System Call Patterns》和数据集ADFA-LD,利用机器学习解决信息安全问题。
0x01 数据集介绍
“The ADFA Intrusion Detection Datasets”为澳大利亚国防学院用于测试HIDS生成的数据集,++数据集介绍、相关论文及下载地址++。ADFA数据及分为基于linux操作系统的The ADFA Linux Dataset(ADFA-LD)和和基于windows操作系统的The ADFA Windows Dataset(ADFA-WD)。本文中使用的数据集为ADFA-LD,采集系统配置如下表。1
系统 | 版本 |
---|---|
Ubuntu Linux | 11.04 |
Apache | 2.2.17 |
PHP | 5.3.5 |
TikiWiki | 8.1 |
其中Ubuntu打上了所有的补丁,TikiWiki 8.1版本存在已知远程注入漏洞,这样的配置能够提供一个较为安全但存在漏洞的实验环境(官方数据更新时间为2013年)。ADFA-LD数据集解压后包括三个文件夹,如下表所示。
名称 | 描述 | 数量 |
---|---|---|
Attack_Data | 标记为恶意的数据 | 833 |
Training_Data | 标记为正常的数据 | 60 |
Validation_Data | 评估模型误报率 | 4372 |
其中Attack_Data中包含6类攻击,分别为Adduser、Hydra_FTP、Hydra_SSH、Java_Meterpreter、Meterpreter、Web_Shell。在Gideon Creech和Jiankun Hu论文中对攻击数据进行了解释,攻击包含web-based exploitation、simulated social engineering、poisoned executables、emotely triggered vulnerabilities、remote password brute force、system manipulation using the C100 webshell。结合论文中的描述和参考文献1,对6类攻击描述如下表。
名称 | 描述 |
---|---|
Adduser | 通过各种姿势添加root权限用户 |
Hydra_FTP | Hydra暴力破解FTP |
Hydra_SSH | Hydra暴力破解SSH |
Java_Meterpreter | metasploit - java meterpreter |
Meterpreter | metasploit - meterpreter |
Web_Shell | C100 webshell |
数据集已经对捕获的系统调用进行了处理,对每一个捕获的系统调用都使用唯一的数字进行代替,对应关系文件下载地址++ADFA-LDSyscallList.txt++。
0x02 机器学习实战
本文分别提取2-gram, 3-gram, (2-3gram), (1-5gram)作为特征向量,词袋大小为1000
|
|
并使用tf-idf优化
|
|
选择kaggle比赛神器xgboost和深度学习mlp来进行测试。
使用train_test_split将Attack_Data和Training_Data随机取70%作为训练集,30%作为测试集,并将Validation_Data数据输入生成的模型检查误报数。
train_test_split(x, y, test_size=0.3)
测试结果如下表所示。
xgboost | precision | recall | f1-score | 误报数(误报率) |
---|---|---|---|---|
2-gram | 0.98 | 0.98 | 0.98 | 679(15.53%) |
3-gram | 0.99 | 0.99 | 0.99 | 655(14.98%) |
2-3gram | 0.99 | 0.99 | 0.99 | 665(15.21%) |
1-5gram | 0.87 | 0.84 | 0.84 | 655(14.98%) |
mlp | precision | recall | f1-score | 误报数 |
---|---|---|---|---|
2-gram | 1 | 1 | 1 | 609(13.93%) |
3-gram | 1 | 1 | 1 | 684(15.64%) |
2-3gram | 1 | 1 | 1 | 693(15.85%) |
1-5gram | 0.99 | 0.99 | 0.99 | 684(15.65%) |
0x03 小结
- 本文并未进行调参,所得结论不一定准确或者一定不准确。
- 从测试集评分和Validation_Data数据集误报率看,选择2-gram和mlp具有最好的实验效果。
- 测试集评分mlp高于xgboost,Validation_Data数据集误报率xgboost优于mlp,mlp过拟合现象比xgboost严重。
- 由于没有调参,mlp参数设置不合理。
- 训练样本太少。
- xgboost做分类就是强
- 从误报率看,使用n-gram特征能够取得一定的实验效果,但高误报率依然存在,无法直接用于生产。
参考文献
- ADFA数据集介绍
- Web安全之深度学习实战