DeepExploit——当Metasploit遇上机器学习
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 需要 DQN 的先决知识,我们将在本博客中省略它们,重点介绍第三个特性“异步”。
强化学习基于奖励系统的原理进行学习,因此需要在各种状态下尝试许多不同的动作,学习需要很多时间。
因此,A3C通过异步的多代理分布式学习实现了学习时间的显着加快。DeepMind 的验证表明,在 16 个 CPU 内核上进行分布式训练的 A3C 的训练速度比在 Nvidia K40 GPU 上训练的 DQN 更快。
下面展示了基于学习时间和分数在“Beamrider”、“Breakout”、“Pong”、“Q*bert”和“Space Invaders”五款游戏中比较包括 A3C 和 DQN 在内的各种模型的结果。 .
来源:
https
DeepExploit——当Metasploit遇上机器学习相关推荐
- [当人工智能遇上安全] 7.基于机器学习的安全数据集总结
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- 秒懂机器学习---当机器学习遇上决策树....
秒懂机器学习---当机器学习遇上决策树.... 一.总结 一句话总结: 多多看图,图的直观效果很好,很多时候文字实在表达不清 1.决策树(Decision Tree)中的各个节点表示什么意思? 每一个 ...
- [当人工智能遇上安全] 3.安全领域中的机器学习及机器学习恶意请求识别案例分享
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- 干货!机器学习遇上运筹优化,助力企业降本增效:一种双层优化方法
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 运筹帷幄,决胜千里.运筹优化(Operations Research)作为数学.计算机科学.管理学的交叉学科,如今广泛应用在企业的生产. ...
- 当深度学习遇上异构并行计算
当深度学习遇上异构并行计算 近几年来,以深度神经网络(DNN)为代表的深度学习如火如荼,深度学习的研究领域从开始的图像识别(如imagenet比赛)到现在的自然语言处理,几乎有席卷一切机器学习研究领域 ...
- 工智能遇上银行反欺诈,到底能帮什么忙
工智能遇上银行反欺诈,到底能帮什么忙 晚来风急 2017-08-02 11:42:00 浏览39 评论0 深度学习 大数据 算法 人工智能 神经网络 摘要: 说到人工智能,大多会联想到聊天机器人.人脸 ...
- 搜推广遇上用户画像:Lookalike相似人群拓展算法
在<当推荐系统遇上用户画像:你的画像是怎么来的?>一文中,我们介绍了怎么通过TF-IDF的方式得到用户的画像.而在本文中,我们来聊一下在搜索.推荐.计算广告系统中"画像是怎么用的 ...
最新文章
- linux添加审计账户_眼镜蛇W眼镜蛇白盒品白源代码审计工具 白帽子版
- python shell怎么调字体_Python3设置在shell脚本中自动补全功能的方法
- 哈工大理论力学第八版电子版_校史上的这些天(37)| 和你一起在“岁月”中读懂哈工大...
- (计算机组成原理)第二章数据的表示和运算-第三节1:浮点数的表示
- [React-Native]样式和布局
- 信息学奥赛一本通(1040:输出绝对值)
- 【三维深度学习】多视角立体视觉模型R-MVSNet
- 图卷积神经网络入门详解
- “意念打字”终成真!准确率超 99%,还登上了《Nature》封面!
- PADS layout 显示叉X怎么回事?
- 第五章:Redis pipeline流水线
- ip,netstat命令案例
- go 实现一个简单的UUID生成器
- XML学习之做过的实验——实验一
- 混合罚函数c语言程序,混合惩罚函数法.ppt
- linux内核的reciprocal_value结构体
- 微信小程序等第三方应用接入易班的api
- 如果你爱或者恨一个人[转]
- python绘制线段_绘制线条点图
- C#关键字扫盲——Sealed 密封