《Web安全之机器学习入门》读书笔记总结

发布于:2025-07-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

一、案例总结

1、基础知识

(1)第1章 通向智能安全的旅程

(2)第2章 打造机器学习工具箱

(3)第3章 机器学习概述

(4)第4章 Web安全基础

2、安全案例

(1)第5章 K近邻算法(KNN)

(2)第6章 决策树与随机森林

(3)第7章 朴素贝叶斯算法

(4)第8章 逻辑回归

(5)第9章 支持向量机(SVM)

(6)第10章 K-Means与DBSCAN

(7)第11章 Apriori与FP-growth算法

(8)第12章 隐马尔可夫模型

(9)第13章 图算法与知识图谱

(10)第14章 神经网络

(11)第15章 多层感知机与DNN算法

(12)第16章 循环神经网络算法

(13)第17章 卷积神经网络算法

二、源码部分


本文是《Web安全之机器学习入门》的读书笔记总结,这本书涵盖Webshell检测、用户异常操作检测、DGA域名检测、垃圾邮件/垃圾短信等场景,结合实战案例讲解如何用机器学习和深度学习模型(CNN、RNN等)解决网络安全难题。

  • 第1-4 章为基础内容,主要讲解机器学习和web安全基础知识、以开发环境的搭建等内容。
  • 第5-15章深入讲解机器学习和深度学习在网络安全的应用,书中案例丰富且具实践价值。

总体来讲,本书提供了大量机器学习算法在网络安全中的实践案例,适合AI安全入门者。只这本书是理论讲解的比较浅,代码同样讲解不够深入,好在提供了源码可以让读者复现,但是这本书是基于python2开发,在现在python3为主流开发环境的今天需要修改才可能跑通程序,会稍微麻烦些,我在调试代码上就花费了大量时间。

一、案例总结

1、基础知识

(1)第1章 通向智能安全的旅程

本章阐述了人工智能(AI)、机器学习(ML)与深度学习(DL)的关联,讲解人工智能的发展历程及其在网络安全领域的应用场景,同时本章节以2015年Kaggle发起的恶意代码分类比赛为例,分析了冠军队伍选取的三个特征,分别是恶意代码图像、OpCode N-gram以及Headers的个数等,其检测效果超过传统的恶意软件检测方式。

(2)第2章 打造机器学习工具箱

这一张主要讲解如何搭建python环境,如何搭建Scikit-Learn和TensorFlow、Anaconda配置方法等。当然此时不能完全按照书中的python库版本安装,因为书中使用的python2环境,比如书中的numpy版本是>1.6。如果真的想调通书中配套代码,还是建议大家不要特意为此安装python2,建议将代码改为python3环境 。这本书出版于2017年主要的开发环境用的还是Scikit-Learn和TensorFlow,当前比较主流的环境是pytorch和Keras。

(3)第3章 机器学习概述

本章节浅浅的讲解机器学习的原理,包括监督学习(如分类、回归)与无监督学习(如聚类)的核心概念,并引入评估指标(准确率、召回率),还提到了自然语言特征提取的相关理论。因此,阅读本书建议具备人工智能(含机器学习、深度学习、自然语言处理)基础,否则可能会感到些许吃力。

此外,本章还介绍了本文使用的数据集,包括涵盖 KDD99 入侵检测数据集、SEA 用户行为异常数据集、ADFA-LA入侵检测数据集等。这部分内容是前四章中较为出色的部分,当然,若能阐述得更详尽些,效果会更好。

  • KDD Cup 1999:这是网络安全领域的经典数据集,源于第三届国际知识发现和数据挖掘工具竞赛,与 KDD - 99 第五届知识发现和数据挖掘国际会议同期。其构建目的是打造能区分正常与入侵连接的网络入侵检测器,数据库中的标准数据模拟了军事网络环境里的多样入侵,像 back dos、ipsweep probe 等多种攻击类型均包含其中。
  • HTTP DATASET CSIC 2010:由 CSIC(西班牙国家研究委员会)的 “信息安全研究所” 开发,涵盖自动生成的数千个 web 请求,可用于测试 web 攻击防护系统。其流量针对电子商务 web 应用程序生成,用户能在该程序中购物、注册。此数据集中包含西班牙语字符,共有 36000 个正常请求与 25000 多个异常请求,涉及 SQL 注入、XSS 等多种攻击类型 。
  • SEA 用户行为异常数据集:该数据集聚焦于用户行为的异常检测,涵盖丰富多样的用户行为数据,包括用户操作序列、访问时间、访问频率等多维度信息。这些数据源于对大量用户日常行为的长期监测与收集,能有效反映正常行为模式及各类异常行为的特征。通过对这些数据的分析与挖掘,可助力构建精准的用户行为异常检测模型,广泛应用于网络安全领域的用户账号异常检测、内部威胁发现等场景,为及时识别潜在安全风险提供有力支持 。
  • ADFA - LD 数据集:由澳大利亚国防学院发布,是一套主机级入侵检测数据集合,包含 Linux 系统相关数据 。其主机配置具有代表性,如采用 Ubuntu Linux version 11.04 系统,开启 Apache2.2.17、php5.3.5 、ftp、ssh、mysql14.14 等服务且使用默认端口,并部署存在已知远程 php 代码注入漏洞的 Tikiwiki8.1 。该数据集涵盖 6 种攻击类型,如 ftp 和 ssh 服务的暴力猜解密码攻击等。数据集中的每个数据文件都独立记录一段时间内的系统调用顺序,且各类系统调用已完成特征化,并针对攻击类型进行标注,常用于入侵检测类产品的测试与研究 。
  • Alexa 域名数据集:由 Corley 等人引入,由排名前 100 万的网站的 URL 组成。这些域名依据 Alexa 流量排名进行排序,排名综合考量了网站用户的浏览行为、独立访客数量以及页面浏览量。其中,独立访客指特定日期访问网站的唯一用户数量,页面浏览量是用户对网站 URL 的总请求数,同一网站同一天的多次请求计为一次页面浏览量。在该数据集中,独立访客和页面浏览量综合最高的网站排名最靠前,常被用于网络分析、搜索引擎优化以及研究网站流量分布等相关领域 。
  • Scikit - Learn 数据集:Scikit - learn 库提供了丰富的数据集,可分为几类。一是 Toy datasets(玩具数据集),如鸢尾花、糖尿病、手写数字、葡萄酒、威斯康星乳腺癌等数据集,这些是小型标准数据集,无需从外部网站下载文件,可通过 datasets.load_xx () 便捷加载,常用于快速展示 Scikit - learn 中各类算法的运行效果,但规模较小,对现实世界机器学习任务的代表性有限 。二是 Real world datasets(真实世界数据集),像新闻组(20 Newsgroups)数据集,需通过 sklearn.datasets.fetch_<name>函数从网络下载,适用于更复杂的机器学习任务 。此外,还有 Generated datasets(生成数据集),可通过 make_classification、make_regression 等函数按用户指定参数生成用于分类、回归等任务的数据集 。这些数据集为机器学习算法的开发、测试与比较提供了多样化的数据来源 。
  • Mnist 数据集:是一个经典的用于图像识别的数据集,由手写数字的图像组成。数据集中包含 10 个类别,分别对应数字 0 - 9。图像经过预处理,被转换为标准化的位图形式。其构建过程中,从预印表格中提取手写数字的归一化位图,参与人员共 43 人,其中 30 人贡献数据用于训练集,13 人贡献数据用于测试集 。图像被划分为 32x32 的位图,进一步分割为不重叠的 4x4 块,并统计每个块中的像素点亮数,生成 8x8 的输入矩阵,矩阵元素取值范围为 0 - 16,这一处理既降低了维度,又使数据对小的图像变形具有不变性,在数字识别的模型训练与评估等方面应用广泛 。
  • Movie Review Data 数据集(1000 正面,1000 负面):该数据集专门用于文本情感分析任务,包含 1000 条正面电影评论和 1000 条负面电影评论。评论内容涵盖电影的剧情、表演、画面、音效等多个方面的评价。这些评论来源于真实的用户反馈,能直观反映大众对电影的情感倾向。通过对该数据集的学习与分析,可训练出能够准确判断电影评论情感极性(正面或负面)的模型,在电影口碑分析、推荐系统以及电影产业的市场调研等方面发挥重要作用 。
  • SpamBase 数据集:该数据集主要用于垃圾邮件检测研究。每一条数据记录都包含了邮件的多个特征信息,如邮件中出现的特定字符频率、词语频率、邮件格式相关特征等共计 57 个特征,最后一列为标签,用于标识该邮件是否为垃圾邮件(1 表示是垃圾邮件,0 表示正常邮件) 。通过对这些特征的分析和模型训练,可以构建有效的垃圾邮件分类模型,帮助过滤掉大量无用的垃圾邮件,提高邮件系统的使用效率和用户体验 。
  • Enron 数据集:这是一个与安然公司相关的数据集,包含了大量与安然公司运营、财务、通信等方面相关的数据。其中可能包括公司内部邮件往来记录、财务报表数据、业务合同信息等 。在网络安全领域,可利用该数据集研究企业内部网络安全风险,例如通过分析邮件数据检测钓鱼邮件攻击、识别内部人员的异常行为等;在金融领域,可用于财务欺诈检测等研究,为多领域的分析与决策提供丰富的数据支持 。

(4)第4章 Web安全基础

本章简要介绍了 Web 安全的部分攻击场景,包括 XSS 攻击、SQL 注入、WebShell、僵尸网络等常见攻击的原理,对部分场景下攻击载荷的构造方式也做了简单说明。这部分内容的讲解同样较为浅显,例如 4.3 节的 WebShell 部分仅给出了载荷,却未解释其具体含义,若不是该领域从业者,理解起来会有较大难度。这部分内容需要一定网络安全基础,否则仅看本书第 4 章可能会感到困惑。由于本书本身围绕 Web 安全展开,相信多数读者具备相关基础,有基础的话读起来会十分易懂。

2、安全案例

(1)第5章 K近邻算法(KNN)

本章讲解K近邻(KNN)算法的原理与其在网络安全中的应用,包括检测UNIX异常操作、检测Rookit、检测Webshell等案例,具体如下所示。

《Web安全之机器学习入门》笔记:第五章 5.2 决策树K近邻

《Web安全之机器学习入门》笔记:第五章 5.3 K近邻检测异常操作(一)

《Web安全之机器学习入门》笔记:第五章 5.4 K近邻检测异常操作(二)

《Web安全之机器学习入门》笔记:第五章 5.5 K近邻检测Rootkit

《Web安全之机器学习入门》笔记:第五章 5.6 K近邻检测WebShell

(2)第6章 决策树与随机森林

本文讲解机器学习算法中的决策树与随机森林的原理以及其在网络安全中的应用案例,包括POP3/FTP暴力破解检测、FTP暴力破解攻击检测等案例。

《Web安全之机器学习入门》笔记:第六章 6.2 决策树hello world

《Web安全之机器学习入门》笔记:第六章 6.3决策树检测POP3暴力破解

《Web安全之机器学习入门》笔记:第六章 6.4决策树检测ftp暴力破解

《Web安全之机器学习入门》笔记:第六章 6.5随机森林检测POP3暴力破解

《Web安全之机器学习入门》笔记:第六章 6.6随机森林检测FTP暴力破解

(3)第7章 朴素贝叶斯算法

本文讲解朴素贝叶斯NB算法的原理以及在网络安全中的应用案例,包括检测异常操作、检测WebShell、检测DDoS攻击检测等案例,具体如下所示。

《Web安全之机器学习入门》笔记:第七章 7.2朴素贝叶斯hello world

《Web安全之机器学习入门》笔记:第七章 7.3朴素贝叶斯检测异常操作

《Web安全之机器学习入门》笔记:第七章 7.4朴素贝叶斯检测WebShell(一)

《Web安全之机器学习入门》笔记:第七章 7.5朴素贝叶斯检测WebShell(二)

《Web安全之机器学习入门》笔记:第七章 7.6朴素贝叶斯检测DGA域名

《Web安全之机器学习入门》笔记:第七章 7.7 朴素贝叶斯检测对Apache的DDoS攻击

《Web安全之机器学习入门》笔记:第七章 7.8 朴素贝叶斯识别mnist验证码

(4)第8章 逻辑回归

本文讲解逻辑回归算法的原理以及在网络安全中的应用案例,包括检测Java溢出攻击以及识别MNIST验证码等案例,具体如下所示。

《Web安全之机器学习入门》笔记:第八章 8.2 逻辑回归hello world

《Web安全之机器学习入门》笔记:第八章 8.3 逻辑回归算法检测Java溢出攻击

《Web安全之机器学习入门》笔记:第八章 8.4 逻辑回归算法识别mnist验证码

(5)第9章 支持向量机(SVM)

本章讲解SVM算法的原理和其在网络安全中的应用场景,案例包括XSS攻击识别(URL特征提取)和DGA域名分类(Jaccard系数特征)。

《Web安全之机器学习入门》笔记:第九章 9.2 支持向量机SVM hello world

《Web安全之机器学习入门》笔记:第九章 9.3 支持向量机算法SVM 检测XSS攻击

《Web安全之机器学习入门》笔记:第九章 9.4 支持向量机算法SVM 检测DGA域名

(6)第10章 K-Means与DBSCAN

本章节讲解无监督算法K-Means与DBSCAN,并讲解KMeans算法在DGA域名聚类的应用,具体如下所示。

《Web安全之机器学习入门》笔记:第十章 10.2 K-Means hello world

《Web安全之机器学习入门》笔记:第十章 10.3 K-Means算法检测DGA域名

《Web安全之机器学习入门》笔记:第十章 10.5 DBSCAN hello world

(7)第11章 Apriori与FP-growth算法

本章系统讲解两种关联规则算法在Web攻击检测中的应用(挖掘XSS攻击样本潜在关系,挖掘疑似僵尸主机),具体如下所示。

《Web安全之机器学习入门》笔记:第十一章 11.2 Apriori算法

《Web安全之机器学习入门》笔记:第十一章 11.3 Apriori算法挖掘XSS相关参数

《Web安全之机器学习入门》笔记:第十一章 11.5 Fp-growth算法

《Web安全之机器学习入门》笔记:第十一章 11.6 Fp-growth算法挖掘僵尸主机

(8)第12章 隐马尔可夫模型

本章节讲解通过马尔可夫挖掘时序数据的关系,介绍马尔科夫的概念以及如何识别XSS攻击和DGA域名,具体如下所示。

《Web安全之机器学习入门》笔记:第十二章 12.2 隐式马尔可夫

《Web安全之机器学习入门》笔记:第十二章 12.3 隐式马尔可夫算法识别XSS攻击(一)

《Web安全之机器学习入门》笔记:第十二章 12.4 隐式马尔可夫算法识别XSS攻击(二)

《Web安全之机器学习入门》笔记:第十二章 12.5 隐式马尔可夫算法识别DGA域名

(9)第13章 图算法与知识图谱

本章讲解图算法与知识图谱,并通过多个案例讲解其在网络安全中的应用,具体如下所示。

《Web安全之机器学习入门》笔记:第十三章 13.2 有向图 hello world

《Web安全之机器学习入门》笔记:第十三章 13.3 有向图识别WebShell

《Web安全之机器学习入门》笔记:第十三章 13.4 有向图识别僵尸网络

《Web安全之机器学习入门》笔记:第十三章 13.5 知识图谱 hello world

《Web安全之机器学习入门》笔记:第十三章 13.6 知识图谱在风控领域的应用

《Web安全之机器学习入门》笔记:第十三章 13.7 知识图谱在威胁情报领域的应用

(10)第14章 神经网络

本章节讲解神经网络的理论与案例,通过识别MNIST验证码和检测JAVA两个案例讲解神经网络的实践案例,具体如下所示。

《Web安全之机器学习入门》笔记:第十四章 14.3 神经网络识别验证码

《Web安全之机器学习入门》笔记:第十四章 14.4 神经网络算法检测JAVA溢出攻击

(11)第15章 多层感知机与DNN算法

深入讲解隐藏层大于1的神经网络模型,通过多层感知机和DNN来识别MNIST数字以及检测垃圾邮件,具体如下所示。

《Web安全之机器学习入门》笔记:第十五章 15.4 TensorFlow识别验证码(一)

《Web安全之机器学习入门》笔记:第十五章 15.5 TensorFlow多层感知机识别验证码(二)

《Web安全之机器学习入门》笔记:第十五章 15.6 TensorFlow DNN识别验证码(三)

《Web安全之机器学习入门》笔记:第十五章 15.7与15.8 TensorFlow识别垃圾邮件

(12)第16章 循环神经网络算法

本章节讲解循环神经网络在网络安全领域的应用,处理有时序特点的数据集,包括识别验证码(基于MNIST数据集)、识别恶意负面评论(Movie Review Data 数据集)、学习城市的名称从而自动生成城市的名称、识别Webshell、通过学习常用密码自动生成常用密码、识别异常操作(SEA数据集)。

《Web安全之机器学习入门》笔记:第十六章 16.2 DNN和RNN识别验证码

《Web安全之机器学习入门》笔记:第十六章 16.3 恶意评论识别(一)

《Web安全之机器学习入门》笔记:第十六章 16.3 恶意评论识别(二)

《Web安全之机器学习入门》笔记:第十六章 16.4 生成城市名称

《Web安全之机器学习入门》笔记:第十六章 16.5 识别WebShell

《Web安全之机器学习入门》笔记:第十六章 16.6 生成常用密码

《Web安全之机器学习入门》笔记:第十六章 16.7 识别异常操作

(13)第17章 卷积神经网络算法

本章讲解卷积神经网络CNN的基本概念,本章的卷积神经网络算法与第14章神经网络的区别在于两者的模型不同,具体如下所示。

对比维度 MLP(多层感知机) CNN(卷积神经网络)
网络结构 全连接层堆叠,无空间结构保留 卷积层+池化层交替,保留输入的空间/时序结构
参数共享 无参数共享,参数量大(输入维度×神经元数) 卷积核权重共享,参数量小(与输入尺寸无关)
特征提取 显式学习全局特征,需人工特征工程 自动提取局部特征(如边缘、纹理),具有平移不变性
输入要求 需展平(Flatten)为一维向量,丢失空间信息 直接处理多维数据(如图像H×W×C、时序序列)
应用场景 结构化数据(表格数据、数值特征) 非结构化数据(图像、视频、音频、文本时序)
计算效率 高计算成本(参数量大) 参数高效,适合大规模数据
空间处理 无法自动捕捉局部模式 通过卷积核捕捉局部空间/时序模式

本章节涉及到3个案例,通过案例讲解如何用CNN识别验证码、恶意评论和垃圾邮件。 

《Web安全之机器学习入门》笔记:第十七章 17.2 卷积神经网络CNN识别验证码

《Web安全之机器学习入门》笔记:第十七章 17.3 卷积神经网络CNN识别恶意评论

《Web安全之机器学习入门》笔记:第十七章 17.4 卷积神经网络CNN识别垃圾邮件

二、源码部分

这本书的源码是本书原始代码基于Python 2.7环境开发,而当前主流技术栈已全面转向Python 3.x版本。这个代码基本上想调试成功每个章节的每个源码都需要修改(python2改为python3),要有这个心理准备,并不是代码一跑就直接通了,除了python2和python3的核心语法变化导致需要修改代码外;很多库文件由于基于老的版本,还会有依赖库兼容性问题,比如部分示例使用的第三方库已停止维护。整体来讲需要改很多代码,比较麻烦。

 对于python2的code,由于当前主流技术栈已全面转向Python 3.x版本,想调试成功code要将《Web安全之机器学习入门》书中Python 2环境代码转换为Python 3代码,可以使用Python自带的2to3工具,具体方法如下所示。

(1)对于单个Python文件

2to3 -w 原文件.py

(2)对于整个目录

2to3 -w 目录路径/

网站公告

今日签到

点亮在社区的每一天
去签到