freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

Mallet:一款针对任意协议的安全拦截代理工具
2024-07-23 15:26:00

关于Mallet

Mallet是一款功能强大的协议安全分析工具,该工具支持针对任意协议创建用于安全审计的拦截代理,该工具本质上与我们所熟悉的拦截Web代理类似,只是通用性更强。

工具运行机制

Mallet建立在Netty框架之上,并且依赖于Netty管道概念,即允许以图形方式组装处理程序图。在Netty世界中,处理程序实例提供帧分隔(即消息从哪里开始和结束)、协议解码和编码(将字节流转换为Java对象,然后再转换回来,或者将字节流转换为不同的字节流),以及更高级别的逻辑。通过仔细区分编解码器与实际操作消息的处理程序,Mallet可以从现有的大量编解码器库中受益,并避免重新实现许多协议。

Mallet 不一定只用于安全审查。由于Mallet是建立在Netty框架之上的,因此一旦使用 Mallet制作了管道原型,我们就可以毫不费力地将代码迁移到普通的Netty应用程序中。

下面给出的是一个简单的SOCKS 代理的示例,可作为我们理解Mallet处理网络流量的一个概览:

一旦我们了解了流量的实际情况,就可以开始在管道中添加适当的ChannelHandler类了。

工具要求

1、最新版本的Java运行时环境;

2、Maven;

工具安装

由于该工具基于Java开发,因此我们首先需要在本地设备上安装并配置好最新版本的Java运行时环境。

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

git clone https://github.com/sensepost/mallet.git

然后切换到项目目录中,使用Maven对项目源码进行编译:

cd mallet

mvn package

工具使用

cd target/

java -jar mallet-1.0-SNAPSHOT-spring-boot.jar

项目的examples/目录中提供了一些示例图,其中JSON图要求 JSON客户端通过localhost:9998/tcp连接到 Mallet,而真实服务器则位于localhost:9999/tcp。只有最后一个JSON图(json5.mxe)对传递的 JSON消息的结构做出了任何假设,因此它们应该适用于发送JSON消息的任何应用程序。

demo.mxe显示了一张复杂的图,其中包含两个管道,即TCP和UDP。TCP管道分别支持端口80和443上的HTTP和HTTPS以及WebSockets,同时将任何其他流量直接中继到其目的地。UDP管道用于处理localhost:1053/udp上的DNS请求,将对google.com的查询替换为对www.sensepost.com的查询,并将请求转发到Google DNS服务器。

项目地址

Mallet:【GitHub传送门

参考资料

https://github.com/netty/netty/

https://netty.io/

https://netty.io/4.1/api/io/netty/channel/ChannelHandler.html

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