《机器学习与安全》读书笔记


我看的是《Machine Learning and Security》的翻译版,原书应该是安全数据科学领域一本比较不错的而且较为基础的书,奈何翻译的太差而且本人水平有限,对书中的许多内容了解的不多,而且书中的代码部分并没有自己亲自实现,只是选取了安全领域的异常检测、恶意软件分析和网络流量分析三个部分做了笔记。希望在学习一段时间之后,能够对之前不了解的内容有所掌握,并且实现一下书中的实战部分。另外如果再读此书的话,一定要读英文版。

1 异常检测

(1)AI for security分为两类:模式识别和异常检测

  • 模式识别:发现数据中的特性,将其提炼成特征集
  • 异常检测:建立一个描述正常状态的特征,所有偏离该状态的情况都被视为异常

(2)shell命令可以形成一个时间序列,因此可以从时间序列分析的角度进行异常检测

(3)主机入侵检测

  • 工具框架:osquery(收集低层级OS Metics,可以使用基于SQL的接口进行查询)、Linux auditd
  • 可以利用第三方工具将上述两种工具集成到自动化业务流程框架中,如:Chef、Puppet、 Ansible、SaltStack、Kolide、doorman
  • Indicator Of Compromise

(4)网络入侵检测

  • 流量分析工具:tcpdump、Bro、Snort
  • 检测单位是流量
  • 提取网络流量元数据
    • 基于状态数据包检测(stateful packet inspection,SPI)
    • 工作在3、4层
    • 检查数据包的头尾而不触及数据包上下文
    • 保持先前收到的数据包的状态、从而能够将新接收到的数据包与先前的相关联
  • 检查网络流量内容
    • 深度包检测(Deep packet inspection、DPI)
    • 工作在应用层
    • Bro(可以检测HTTP请求POST的字符串,从而可以检测SQL注入和XSS)
    • 如果要在使用了TLS/SSL加密的环境中进行检测,只能在监测点取消加密

(5)Web应用程序入侵检测

  • 标准Web服务器以NCSA通用日志格式来生成日志

(6)异常检测方法——预测(监督学习)

  • 适用于一维实值度量序列
  • 思想:将预测与观测之间的偏差视为异常
  • ARIMA (autoregressive integrated moving average,自回归积分移动平均模型),通过使用正常的数据集,由序列与以前时间点自身之间的相关性(autocorrelation,自相关),来预测接下来的时间段内的状态。在预测相对准确的情况下(预测结果与实际观测到的非异常状态拟合度较高),如果观测值与预测结果之间的差值超过了某个threshold,则认为发生了异常。
  • 人工神经网络(Particularly,长短期记忆网络(long short-term memory,LSTM))
  • 注意:预测适合novelty detection(训练集中不包含异常数据),而不适合outlier detection(离群点检测,训练集中包含异常数据)。即适合训练集中没有异常数据,如果训练集包含异常数据的话,容易造成在训练过程中对预测数据的过拟合,从而使观测到的异常状态与预测值之间的差值变小,异常检测效果下降。

(7)统计度量

  • 绝对中位差(median absolute deviation,MAD):去查找一群数据中的离群值,表示为数列中位数的绝对偏差的中位数
    import numpy as np
import numpy as np
# Input data series
x = [1, 2, 3, 4, 5, 6]
# Calculate median absolute deviation
mad = np.median(np.abs(x - np.median(x)))
# MAD of x is 1.5
  • Grubbs的离群值检测
  • Goodness-of-fit——椭圆包络拟合(Elliptic envelope itting (covariance estimate itting))

(8)异常检测方法——无监督学习

  • 单类支持向量机
  • 孤立森林
    • 随机森林非常适合高维数据的异常检测,适合时间序列数据的实时异常检测
    • 思想:异常数据和正常数据相比,可以用较少的次数将其与正常数据分隔开
  • K均值

(9)异常检测方法——基于密度的方法

  • KNN
  • 局部离群因子(Local outlier factor,LOF)

(10)入侵检测面临的问题

  • 错误代价高
  • 语义鸿沟
  • 可解释性

2 恶意软件分析

(1)恶意软件类别划分依据:family

(2)可以用静态签名匹配来判断是否是恶意软件

(3)使用机器学习进行恶意软件分类的优势

  • 模糊匹配:给出了两个实体之间的相似程度,而不是简单的yes or no
  • 自动特征加权和选择
  • 适应性:适应不断变化的输入,跟踪恶意软件的进化

(4)使用机器学习进行恶意软件分类的挑战:特征工程

(5)二进制可执行文件的特征生成:

  • 静态方法:
    • 结构分析:查看程序的文件构成
    • 静态分析:查看程序的代码
  • 动态分析:运行程序分析(沙箱)
    • 调试
    • 动态插桩:通过挂钩正在运行的进程,并将自定义逻辑注入到应用程序中,从而修改应用程序或环境的运行时行为
      可用做特征的指标:

(6)程序请求权限

  • 系统调用
  • 操作码n-gram(一个包含其它特征的序列)
  • 网络行为
  • logcat

(7)特征选择:

  • 单变量分析:迭代地对每个单独特征进行分析,在只考虑该特征的情况下,模型执行会有多好;从而可以得到对特征好坏的评估
  • 递归特征消除:从完整的特征集开始,分析特征的排除对模型情况的影响
  • 潜在特征值表示:奇异值分解(SVD)、主成分分析(PCA)
  • 特定模型中通过特征权重减小或消除某些特征对模型的影响

3 网络流量分析

(1)无监督特征学习:指的是从原始数据自动生成特征,不同于无监督学习

(2)TSL/SSL数据包可以被解密

(3)攻击分为被动攻击和主动攻击

  • 被动攻击:不会启动与网络中节点的通信,也不会与网络数据交互或修- 改网络数据;而是进行信息收集和侦察活动。
  • 主动攻击
    • 漏洞:用过远程服务器发送的命令,可以使用基于机器学习模糊匹配来检测
    • 欺骗:DNS欺骗、ARP欺骗
    • 横向移动
    • 拒绝服务

(4)C&C服务器控制僵尸网络,C&C服务器的体系结构如下:

  • 星形/集中式网络
  • 多重网络:解决了a中的单点故障、可以缓和物理距离带来的问题
  • 分层网络:为了解决指令必须集中发布的问题
  • 随机P2P网络:僵尸网络管理员可以向僵尸网络中的任何一个节点发布指令,然后指令在网络中以多点传送的方式进行传播

(4)使用NSLKDD数据金构建网络攻击分类预测模型

  • 数据由TCPDump产生有标记的数据集,包含38种攻击类型,只有24种在训练集中出现,攻击属于下面四大类:
    • dos:拒绝服务
    • r2l:来自远程服务器的未授权的访问
    • u2r:提权尝试
    • probe:探测性暴力破解攻击
  • 我们的任务是设计一个通用的分类器,将数据分为五类:4类攻击+良性
  • 类不平衡问题:训练集中属于r2l和u2l的数据占比非常少,因此在测试集中对这两类数据的分类效果极差,由于训练集中benign数据占比最大,因此这两类数据大部分都被预测为benign数据。
  • 处理类不平衡的方法:
    • 欠采样:在占比较大的数据中进行采样,选取一部分进行使用,而不是用全部的数据集
    • 过采样:为占比较少的数据类智能合成数据点
    • 流行的做法是先过采样,再欠采样
Intrusion detection and analysis has received a lot of criticism and publicity over the last several years. The Gartner report took a shot saying Intrusion Detection Systems are dead, while others believe Intrusion Detection is just reaching its maturity. The problem that few want to admit is that the current public methods of intrusion detection, while they might be mature, based solely on the fact they have been around for a while, are not extremely sophisticated and do not work very well. While there is no such thing as 100% security, people always expect a technology to accomplish more than it currently does, and this is clearly the case with intrusion detection. It needs to be taken to the next level with more advanced analysis being done by the computer and less by the human. The current area of Intrusion Detection is begging for Machine Learning to be applied to it. Convergence of these two key areas is critical for it to be taken to the next level. The problem is that I have seen little research focusing on this, until now. After reading Machine Learning and Data Mining for Computer Security, I feel Dr Maloof has hit the target dead centre. While much research has been done across Computer Security independently and Machine Learning independently, for some reason no one wanted to cross-breed the two topics. Dr Maloof not only did a masterful job of focusing the book on a critical area that was in dire need of research, but he also strategically picked papers that complemented each other in a productive manner. Usually reading an edited volume like this, the chapters are very disjointed with no connection between them. While these chapters cover different areas of research, there is a hidden flow that complements the previous chapter with the next. While Dr Maloof points out in his Preface the intended audience, I feel that there are two additional critical groups. Firstly, I feel that any vendor or solution provider that is looking to provide a competitive a
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值