Metasploit Meets Machine Learning

文章目录

    • Metasploit Meets Machine Learning
  • 1. Metasploit准备
    • 1.1 与外部项目的合作
      • 1.1.1 启用RPC API
      • 1.1.2 使用RPC API操作Metasploit
  • 2. 创建机器学习模型
    • 2.1 DQN
    • 2.2 A3C
      • 2.2.1 CartPole
      • 2.2.2 分布式学习机制
  • 3. 深度利用
    • 3.1 代理任务
    • 3.2 当前状态
      • 3.2.1 OS类型的获取
      • 3.2.2 “端口号”、“协议”、“产品名称”和“版本”的获取
      • 3.2.3 “漏洞利用模块类型”的获取
      • 3.2.4 获取“利用目标”
    • 3.3 行为
    • 3.4 补偿
      • 3.4.1 确定开发的成功或失败
    • 3.5 神经网络模型
  • 4. 示范
    • 4.1 学习模式
    • 4.2 生产模式
    • 4.3 验证环境
  • 5. 结论

简要介绍

已经发布操作步骤
【DeepExploit】基于Metasploit的自动渗透工具在Kali中详细运行教程

Metasploit Framework(MSF)是用于渗透测试和漏洞判断的审计攻击,包含功能端口扫描、漏洞利用执行和漏洞调查,是命令行工具。

Deep Exploit通过Metasploit与机器学习相结合,自动执行从搜索到入侵目标主机的所有操作。

主要操作

  • 通过Nmap端口扫描收集用于情报收集的主机信息
  • 建模威胁:识别目标主机中的已知漏洞
  • 漏洞分析:确定高效有效的检查方法
  • Exploitation:使用确定的检查方法执行漏洞利用

运行模式两种:学习模式+生产模式

  • 学习模式:参考目标主机的状态(OS类型。可用端口号。正在运行的产品名称),进行训练,每个Exploit模块根据其状态进行加权
  • 生产模式:根据所学结果对目标主机的状态进行利用

1. Metasploit准备

命令

msfconsole

1.1 与外部项目的合作

MSF一般用法是用户进行输入命令,蛋本工具目的是使用机器学习来自动化开发,因此输入主体由人变成机器学习模型。

具体操作:使用MSF中的RPC API来执行来自机器学习模型的命令,并通过RPC API获取执行结果

1.1.1 启用RPC API

msf> load msgrpc ServerHost=192.168.220.144 ServerPort=55553 User=test Pass=NsSJMEI3
[*] MSGRPC Service: 192.168.220.144:55553
[*] MSGRPC Username: test
[*] MSGRPC Password: NsSJMEI3
[*] Successfully loaded plugin: msgrpc

显示Successfully loaded plugin: msgrpc说明已经启用RPC API

1.1.2 使用RPC API操作Metasploit

Meatsploit中实现了很多API, 通过从客户端向RPC服务器发送一个以MessagePack格式化的HTTP POST请求来执行API。

# 导入MessagePack和HTTP通信包
In[2]: import msgpack
In[3]: import http.client# 定义etasploit连接信息
In[4]: host = '192.168.220.144'
In[5]: port = 55553
In[6]: uri = '/api/'
In[7]: headers = {'Content-type' : 'binary/message-pack'}# 连接到Metasploit
In[8]: client = http.client.HTTPConnection(host, port)# 使用 auth.login API 登录 Metasploit
# 要发送的HTTP请求以MessagePack格式序列化(msgpack.packb)
# 收到的 HTTP 响应是从 MessagePack 格式反序列化的 (msgpack.unpackb)
In[9]: user = 'test'
In[10]: password = 'NsSJMEI3'
In[11]: option = [user, password]
In[12]: option.insert(0, 'auth.login')
In[13]: option
Out[13]: ['auth.login', 'test', 'NsSJMEI3']
In[14]: params = msgpack.packb(option)
In[15]: client.request('POST', uri, params, headers)
In[16]: ret = client.getresponse()
In[17]: response = msgpack.unpackb(ret.read())# 如果登录成功,则返回用于认证的Token
In[18]: response
Out[18]: {b'result': b'success', b'token': b'TEMPEfC9t8y1YXyR5j0jgDnX9M07bk2d'}# 使用 console.create API 创建 MSFconsole
In[19]: token = response.get(b'token')
In[20]: option = [token]
In[21]: option.insert(0, 'console.create')
In[22]: option
Out[22]: ['console.create', b'TEMPEfC9t8y1YXyR5j0jgDnX9M07bk2d']
In[23]: params = msgpack.packb(option)
In[24]: client.request('POST', uri, params, headers)
In[25]: ret = client.getresponse()
In[26]: response = msgpack.unpackb(ret.read())# 如果 MSFconsole 创建成功,则返回控制台 ID
In[27]: response
Out[27]: {b'busy': False, b'id': b'0', b'prompt': b'msf > '}# 使用 console.write API 执行任何命令(需要在命令末尾换行)
In[28]: console_id = response.get(b'id')
In[29]: command = 'version\n'
In[30]: option = [token, console_id, command]
In[31]: option.insert(0, 'console.write')
In[32]: option
Out[32]: ['console.write', b'TEMPEfC9t8y1YXyR5j0jgDnX9M07bk2d', b'0', 'version\n']
In[33]: params = msgpack.packb(option)
In[34]: client.request('POST', uri, params, headers)
In[35]: ret = client.getresponse()
In[36]: response = msgpack.unpackb(ret.read())
In[37]: response
Out[37]: {b'wrote': 8}# 使用 console.read API 获取命令执行结果输出到 MSFconsole
In[38]: option = [token, console_id]
In[39]: option.insert(0, 'console.read')
In[40]: option
Out[40]: ['console.read', b'TEMPEfC9t8y1YXyR5j0jgDnX9M07bk2d', b'0']
In[41]: params = msgpack.packb(option)
In[42]: client.request('POST', uri, params, headers)
In[43]: ret = client.getresponse()
In[44]: response = msgpack.unpackb(ret.read())# 如果命令执行成功,则返回执行结果
In[45]: response
Out[45]:
{b'busy': False,b'data': b'\n ___ ...snip... Framework: 4.16.15-dev\nConsole  : 4.16.15-dev\n',b'prompt': b'msf > '}

2. 创建机器学习模型

作为强化学习的模型,我们决定采用一种名为**Asynchronous Advantage Actor-Critic (A3C)**的模型,该模型是在DeepMind 于 2016 年发表的论文《 Asynchronous Methods for Deep Reinforcement Learning 》中提出的。

A3C 也被称为 DQN 的改进模型,故先简要解释一下 DQN 的轮廓。

2.1 DQN

DQN 是基于强化学习的模型,是参照人和动物的奖励系统制作的。

DQN 在学习开始时,不知道合适的行为模式,所以它的行为是随机的。有时你会丢球,有时你会不小心把它弹起来。弹跳球会导致块崩溃,因此认为这是一个好的动作并奖励DQN 。获得奖励后,未来采取相同行动的概率会略有增加。通过在各种情况下重复这一点,可以根据各种情况学习可以很好地发挥的动作。

此外,在学习 DQN 的过程中,人类不需要展示示例或教授游戏规则(不需要教授数据)。如果你提前定义了“状态”、“行为模式”和“给予奖励的规则”,它会根据奖励制度的原理自行**学习。**换句话说,要想成功地学习 DQN,**根据任务适当地设计“状态”、“动作”和“奖励”**是非常重要 的。

2.2 A3C

A3C学习方式和DQN类似,只是增加了以下三个改进:

  1. 优势
  2. 表现-评价
  3. 异步

由于 1 和 2 需要 DQN 的先决知识,我们将在本博客中省略它们,重点介绍第三个特性“异步”。

强化学习基于奖励系统的原理进行学习,因此需要在各种状态下尝试许多不同的动作,学习需要很多时间。

因此,A3C通过异步的多代理分布式学习实现了学习时间的显着加快。DeepMind 的验证表明,在 16 个 CPU 内核上进行分布式训练的 A3C 的训练速度比在 Nvidia K40 GPU 上训练的 DQN 更快。

下面展示了基于学习时间和分数在“Beamrider”、“Breakout”、“Pong”、“Q*bert”和“Space Invaders”五款游戏中比较包括 A3C 和 DQN 在内的各种模型的结果。 .

来源:

https

DeepExploit——当Metasploit遇上机器学习相关推荐

  1. [当人工智能遇上安全] 7.基于机器学习的安全数据集总结

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  2. [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  3. 秒懂机器学习---当机器学习遇上决策树....

    秒懂机器学习---当机器学习遇上决策树.... 一.总结 一句话总结: 多多看图,图的直观效果很好,很多时候文字实在表达不清 1.决策树(Decision Tree)中的各个节点表示什么意思? 每一个 ...

  4. [当人工智能遇上安全] 3.安全领域中的机器学习及机器学习恶意请求识别案例分享

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  5. [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  6. 干货!机器学习遇上运筹优化,助力企业降本增效:一种双层优化方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 运筹帷幄,决胜千里.运筹优化(Operations Research)作为数学.计算机科学.管理学的交叉学科,如今广泛应用在企业的生产. ...

  7. 当深度学习遇上异构并行计算

    当深度学习遇上异构并行计算 近几年来,以深度神经网络(DNN)为代表的深度学习如火如荼,深度学习的研究领域从开始的图像识别(如imagenet比赛)到现在的自然语言处理,几乎有席卷一切机器学习研究领域 ...

  8. 工智能遇上银行反欺诈,到底能帮什么忙

    工智能遇上银行反欺诈,到底能帮什么忙 晚来风急 2017-08-02 11:42:00 浏览39 评论0 深度学习 大数据 算法 人工智能 神经网络 摘要: 说到人工智能,大多会联想到聊天机器人.人脸 ...

  9. 搜推广遇上用户画像:Lookalike相似人群拓展算法

    在<当推荐系统遇上用户画像:你的画像是怎么来的?>一文中,我们介绍了怎么通过TF-IDF的方式得到用户的画像.而在本文中,我们来聊一下在搜索.推荐.计算广告系统中"画像是怎么用的 ...

最新文章

  1. linux添加审计账户_眼镜蛇W眼镜蛇白盒品白源代码审计工具 白帽子版
  2. python shell怎么调字体_Python3设置在shell脚本中自动补全功能的方法
  3. 哈工大理论力学第八版电子版_校史上的这些天(37)| 和你一起在“岁月”中读懂哈工大...
  4. (计算机组成原理)第二章数据的表示和运算-第三节1:浮点数的表示
  5. [React-Native]样式和布局
  6. 信息学奥赛一本通(1040:输出绝对值)
  7. 【三维深度学习】多视角立体视觉模型R-MVSNet
  8. 图卷积神经网络入门详解
  9. “意念打字”终成真!准确率超 99%,还登上了《Nature》封面!
  10. PADS layout 显示叉X怎么回事?
  11. 第五章:Redis pipeline流水线
  12. ip,netstat命令案例
  13. go 实现一个简单的UUID生成器
  14. XML学习之做过的实验——实验一
  15. 混合罚函数c语言程序,混合惩罚函数法.ppt
  16. linux内核的reciprocal_value结构体
  17. 微信小程序等第三方应用接入易班的api
  18. 如果你爱或者恨一个人[转]
  19. python绘制线段_绘制线条点图
  20. C#关键字扫盲——Sealed 密封

热门文章

  1. onkeyup、onkeydown和onkeypress的区别
  2. apache配置指令速查
  3. DataGridView减少闪烁的解决办法
  4. 免费的PDF转PPT网站分享
  5. linux下录音识别成文字软件下载,录音转文字用哪个手机app可以实现?
  6. 小程序管理还能这样做,让小程序管理更高效
  7. 基于paddledetection在ROS中搭建红绿灯检测控制车模运动(3)—— 使用训练结果在ros中仿真红绿灯控制小车运动
  8. 记一次项目中所有用户登录不成功的解决过程
  9. cocoscreator摄像机跟随玩家移动及地图边界的设置
  10. 【图像取证篇】手机拍摄的照片包含有哪些信息?