MetasploitCoop
基于msf的后渗透协作平台
郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。
类别 | 说明 |
---|---|
作者 | Akkuman、三米前有蕉皮 |
团队 | 0x727 未来一段时间将陆续开源工具 |
定位 | 基于 Metasploit Framework 的可视化后渗透协作平台 |
语言 | Ruby, Python, Javascript |
功能 | 类似于 CobaltStrike 的 C2 平台,可视化 Metasploit Framework 操作,支持团队协作 |
此仓库只是以下仓库的说明仓库,如果想查看具体的代码请前往以下仓库进行查看
什么是 MetasploitCoop ?
红队行动中,大家常常选用 CobaltStrike 作为团队的 C2 工具,MetasploitCoop 旨在成为 CobaltStrike 的替代品,最大限度地利用 Metasploit Framework 的现有生态进行内网渗透。
为什么选择 MetasploitCoop ?
功能特性
- 可视化的 Metasploit Framework
- 右键功能直达
- 支持中转文件夹
- 可视化执行模块
- 一键端口转发、路由添加
- 凭据展示
- Metasploit Framework 执行中的任务管理
- 主机列表查看
- 协作聊天
- 主机上模块执行历史记录
- 主机进程管理
- 主机文件管理
- 主机一键截屏
- 可定制化的右键菜单
- 模块说明中文化
- docker重建后的监听恢复
- 原生的 Metasploit Console 支持(多人分离,不污染环境)
还有最最重磅的:
- 理论上支持绝大多数 Metasploit Framework 模块,不需要对模块进行任何修改,也就是说,写一个 Metasploit Framework 模块就能在 MetasploitCoop 中使用该模块
和 Viper 的区别
很多人询问该项目相比于 Viper 有哪些区别?
以下是一些已知区别
- 单用户和多用户,viper使用多个用户可使用单账号root进行登录使用,MetasploitCoop 允许注册用户进行使用
- msf console
- viper 整体面向单用户,对于msf console采用多端同步输入方案,也就是A和B用户同时登录平台打开console,A用户输入的内容会实时同步到B用户屏幕上
- MetasploitCoop 针对 msf console 做了多实例间的隔离,各个用户之间的输入并不干扰或污染环境
- 模块方面,这一部分主要是两个项目的侧重点不同
- viper 要想利用 msf 中的模块需要改写原有的 msf 模块才能进行使用(原因:侧重于对于 msf 的定制化尽量少,能使用模块实现的就使用模块进行实现,并和python中间层之间利用redis来进行消息的发布订阅)
- MetasploitCoop 理论上可以直接使用绝大部分 msf 模块,除了一些特殊模块,比如 screenshare 之类的模块会在本地生成一个 html 然后打开,这部分模块暂不支持(原因:MetasploitCoop 走的另一个方向,对于 msf 的定制化程度稍高一些,所以对这些情况做了特殊处理)
快速开始体验
DockerCompose
$ git clone https://github.com/0x727/MetasploitCoop_0x727.git
$ cd MetasploitCoop
$ sudo docker-compose up -d
可以使用 docker-compose logs
进行日志查看,当出现如下字样表示启动成功
INFO supervisord started with pid 1
INFO spawned: 'homados' with pid 47
INFO spawned: 'msfrpcd' with pid 48
INFO spawned: 'nginx' with pid 49
INFO success: homados entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
INFO success: msfrpcd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
环境变量额外说明(可选)
除了 docker-compose.yml 中列出的环境变量,还支持
TENCENT_TRANSLATE_TOKEN_ID # 腾讯翻译君 api 的 SecretId
TENCENT_TRANSLATE_TOKEN_KEY # 腾讯翻译君 api 的 SecretKey
该环境变量加上后可支持 Metasploit Framework 模块的实时中文翻译(平台目前内置绝大部分翻译)
使用方法
启动 docker 后,打开 https://127.0.0.1:60443,即可进入 MetasploitCoop
输入msfcoop和DptbHd8R(默认值,可以从 docker-compose.yml 中修改)然后保存,即可以进入真正的登录页面
经过注册登录即可,上方的修改服务器地址可以修改真实 c2 服务器的地址,也就是前端可以挂载到其他地方(比如编译成exe),这个此处先不作额外说明
登陆后可在下方给团队成员发送消息
按照一般的流程,我们可以点击上方的 添加监听
来添加一个监听任务
注意:此处的端口号需要对应 docker-compose.yml 中的 7000-7500
范围,不然无法监听,此处的监听地址不要填写 0.0.0.0
,因为后面我们根据该监听生成payload的时候需要这个 ip 用来回连。
生成监听任务后,我们可以在任务管理中找到它,右键它可以生成payload
此处我们可以发现还有一个任务进程
选项,该选项主要用在一些模块执行任务上面,在模块未执行完成时观察模块的实时输出,或者用来结束一些任务。
这里一些生成payload的选项和 Metasploit Framework 类似,就不再赘述了。
执行上线后会有提示。
然后我们可以右键查看一下功能,此处的右键快捷功能也可以在平台设置中进行设置
对主机截屏,截屏文件放在文件中转区内,可以通过文件中转区进行查看
对主机进行进程管理,可以查看对于重要进程会有高亮,此处的高亮列表可以在平台设置中编辑
执行模块,可以像msf中一样填写参数,针对一些参数可以选择文件的,支持直接点击从文件中转区中选择文件
模块执行完成后会自动回显结果,如果模块迟迟没有回显,可以进入任务管理查看模块执行任务,必要时可以结束掉
管理后台支持添加右键自定义菜单、模块翻译管理、进程高亮管理等配置
更多功能等你探索
Change Log
20201018
- 文字聊天功能
- 支持模块执行选项的提示说明
- 支持会话路由操作支持
- 支持查询主机历史会话的命令和模块执行记录
- 截图依据ip存放到不同的目录
- 支持查阅会话历史记录
- 会话添加回连(公网)ip端口展示
- 支持开放或关闭注册功能,增加安全性
- 支持可配置右键菜单
- 文件管理支持无限滚动与搜索,防止渲染过多卡死
- 战利品和凭证列表无限滚动
- 修正:主机用户名的显示
- 修正:一些信息列表支持手动拖拽宽度
- 主机存活状态自动更新
- 增加 https://github.com/0x727/MetasploitModules_0x727 模块
- mssql_powershell: 通过正确的SQL Server口令信息,可启用xp_cmdshell,并获取目标系统session。
- clone_user: 创建登录账户,添加该账户到管理员与远程桌面组,并克隆administrator,从而替代clone.exe( 支持尝试提权,默认随机8位密码,用户不能设置Guest,应用RID劫持技术)
- redis/unauthorized: 批量扫描Redis未授权漏洞,若存在,探测/root/.ssh/与/var/spool/cron/目录权限,可写入id_rsa.pub到目标服务器(id_rsa.pub应设置绝对路径),或提示Cron反弹命令。
- ...更多查看(https://github.com/0x727/MetasploitModules_0x727)
- 增加内存执行exe的模块(post/windows/manage/execute_pe)(需要exe存在.reloc节,比如golang编译的exe,并且payload与目标主机架构需要相同)
- 新增模块或选项后自动翻译
- 重启容器后自动恢复之前的监听
- 支持客户端使用(目前只支持win,后续将添加其他版本客户端)
- 支持执行中的任务输出查看
20201020
- 修复 模块历史记录不显示
- 修复 偶发的终端历史记录解析错误
- 去除前端的basicauth
为 MetasploitCoop 做贡献
MetasploitCoop 是一个免费且开源的项目,我们欢迎任何人为其开发和进步贡献力量。
- 在使用过程中出现任何问题,可以通过 issues 来反馈。
- Bug 的修复可以直接提交 Pull Request 到 dev 分支。
- 如果是增加新的功能特性,请先创建一个 issue 并做简单描述以及大致的实现方法,提议被采纳后,就可以创建一个实现新特性的 Pull Request。
- 欢迎对说明文档做出改善,帮助更多的人使用 ,特别是英文文档。
- 贡献代码请提交 PR 至 dev 分支,master 分支仅用于发布稳定可用版本。
- 如果你有任何其他方面的问题或合作,欢迎发送邮件至 [email protected] 。
提醒:和项目相关的问题最好在 issues 中反馈,这样方便其他有类似问题的人可以快速查找解决方法,并且也避免了我们重复回答一些问题。