当前位置: 首页 > news >正文

Mallet:一款针对任意协议的安全拦截代理工具

关于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 malletmvn 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传送门】

参考资料

GitHub - netty/netty: Netty project - an event-driven asynchronous network application framework

https://netty.io/

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ant design含嵌套子列数据遍历插入docx table
  • 博世战胜三星,577亿最大笔收购,豪赌杀入自动化新业务
  • No static resource favicon.ico.问题解决
  • AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动
  • 从源码看 Redis:深入理解 redisDb 和 redisObject
  • Python笔试面试题AI答之面向对象常考知识点
  • 图形编辑器基于Paper.js教程10:导入导出svg,导入导出json数据
  • 深度对话安天王小丰:我们应该从微软“蓝屏”事件学到什么?
  • 在云服务器上自动化部署项目,jenkins和gitee
  • 9.Redis的Set类型
  • 绝密!OceanBase OBCP备考模拟题讲解(1)
  • Python数值计算(1)——Numpy中数据的保存和加载
  • 芋道源码yudao-cloud 二开笔记(Feign服务调用,如何定义一个 API 接口)
  • 信息学奥赛初赛天天练-52-CSP-J2019基础题3-抽屉原理、鸽巢原理、乘法原理、二叉树遍历、前序遍历、中序遍历、后序遍历
  • 下属“软对抗”,工作阳奉阴违怎么办?4大权谋术,让他不敢造次
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Fabric架构演变之路
  • JavaScript DOM 10 - 滚动
  • Java到底能干嘛?
  • Laravel Telescope:优雅的应用调试工具
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • mongodb--安装和初步使用教程
  • springMvc学习笔记(2)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 爱情 北京女病人
  • 前端工程化(Gulp、Webpack)-webpack
  • 什么软件可以剪辑音乐?
  • 算法-插入排序
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 栈实现走出迷宫(C++)
  • ionic入门之数据绑定显示-1
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • (145)光线追踪距离场柔和阴影
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (未解决)macOS matplotlib 中文是方框
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET BackgroundWorker
  • /etc/fstab和/etc/mtab的区别
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ C++ ] STL---仿函数与priority_queue
  • [ SNOI 2013 ] Quare
  • [20190113]四校联考
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [C/C++随笔] char与unsigned char区别
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [Git][分支设计规范]详细讲解
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [Java] 模拟Jdk 以及 CGLib 代理原理