网络安全文章研读:用深度强化学习来逃脱机器学习的检测

0x01 太长不看版

ML技术可以被用来做botnet入侵检测而且效果海星。但是现在可以用对抗性ML构造特定样本来逃脱检测,因为ML模型对扰动很敏感…

这个工作提出来一个基于DRL的通用框架,通过往样本里加扰动来欺骗入侵检测系统IDS。整个过程中,IDS被攻击者当成一个黑盒模型来日,agent会根据feedback(是否被IDS识别)和动作序列a(更改包的时空特征)来更新他扔给黑盒的样本。这么做的结果是黑盒的漏检率大大提高了。

0x02 intro

虽然ML做入侵检测效果很好,但是还是需要模型能预测对手将干什么事情。一般来说,攻击者可能会污染训练集或者搞一些对抗样本。

搞对抗样本的做法是在里面注入一些随机扰动。但是,对抗样本需要保持可用性,即不能乱改数据包,否则可能直接到不了目标主机。

模型设定:
IDS是个黑盒;攻击者只能知道自己发的数据包是否被识别;防御者不会标注入侵变量训练自己。

主要贡献:
提出一个攻击的框架。日穿了决策树和CNN。

0x03 一些背景知识

攻击可以分为三类:基于锑度、基于得分、基于决策。

  1. 基于梯度:模型结构和参数为攻击者所知。则攻击者利用梯度来攻击模型。常见的例如李宏毅机器学习中的“模型攻防”相关内容和GAN。
    这个防御也简单,可以把梯度掩盖掉,比如加入不可微的分类器。
  2. 基于得分:攻击者不知道面对的模型,但是可以通过发包探测来为自己的动作打分。
    防御方法是添加随机元素阻碍梯度的数值估算。
  3. 基于决策:攻击者完全不知道模型啥样,只知道自己发的包被判别为好/坏。

0x04 架构设计

使用技术:DQN

框架结构
在这里插入图片描述使用openAI gym构建上述框架。使用keras-rl构建agent

  • (单步)收益:每一次agent发送的包是不是被检测出来了,未检出收益为R=10,检出为R=0
  • 观测:对当前数据流采样所形成的特征向量
  • Done:0-1变量,标识当前步骤是否完成。

状态空间

botnet发的东西在环境中以比特流的形式存在。使用auto-encoder对流做降维。

在将流放入auto-encoder之前,流被整理成为1024B长度,转化为32*32的灰度图。不够长的话则补0x00。

随后使用卷积auto-encoder,将图像降维成32维特征向量。

动作空间
agent会对流做改动。这些改动不会更改原始功能,也不会破坏流文件格式:

  • 修改时间戳(±0.3ms)
  • 修改数据包长度并随机补0
  • 追加4比特的0
  • 追加4比特随机字符
  • 追加一个良性数据包

上述动作可能会对样本产生干扰,并且在实践中大多数都是随机的。 例如,附加数据包时,新数据包将自动生成,或从良性流中找到的数据包列表中进行选择。

此后进行网络训练,实验结果部分略。

0x05 原文标题

Evading Machine Learning Botnet Detection Models
via Deep Reinforcement Learning

猜你喜欢

转载自blog.csdn.net/weixin_43466027/article/details/116792777
今日推荐