Modlishka 反向代理
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/drk1wi/Modlishka
Modlishka
相关技术点
- HTTP、HTTPS反向代理
- 实现新的处理基于浏览器的HTTP流量流的方式,可以透明地代理多域名目标流量,支持TLS和非TLS
- 真实模拟钓鱼攻击和客户端域钩子攻击
- 可用于旧网站的TLS包装、伪装、模糊爬虫机器人和自动扫描器等
- 无需在客户端安装证书即可代理跨域TLS流量
- 提供一些插件,以拓展功能
- Modlishka主要用于安全相关任务,但也可在其他非安全相关的使用场景中发挥作用
项目用途
- 在安全领域可以:
- 支持透明自动反向代理组件的伦理钓鱼渗透测试,具有通用的2FA“绕过”支持
- 自动污染HTTP 301浏览器缓存和永久劫持非TLS URLS
- 诊断和劫持基于浏览器的应用程序HTTP流量,从“客户端域钩子”攻击的角度进行
- 用TLS层包装遗留网站,混淆爬虫机器人和自动扫描器等
- 从非安全相关的使用场景可以:
- 帮助包装网站的安全性,如TLS包装、身份验证、相关安全头等
- 从网站中删除所有加密和安全头(回到90年代的MITM风格)
- 通过模块化插件轻松扩展自己的想法
- Modlishka主要用于安全相关任务,但也可在其他非安全相关的使用场景中发挥作用
..Modlishka(蝉)..
Modlishka是一个强大而灵活的HTTP反向代理。它采用了一种全新而有趣的处理基于浏览器的HTTP流量流的方法,可以透明地代理多域目标流量,包括TLS和非TLS,而无需在客户端安装任何附加证书。这到底意味着什么?简而言之,它具有很多潜力,可以在许多用例方案中使用...
从安全角度来看,Modlishka目前可用于:
- 支持透明且自动化的反向代理组件的道德钓鱼渗透测试,该组件具有通用的2FA“绕过”支持。
- 自动毒化HTTP 301浏览器缓存并永久劫持非TLS URLS。
- 从“客户端域钩住”攻击角度诊断和劫持基于浏览器的应用程序HTTP流量。
- 用TLS层包装旧网站,混淆爬虫机器人和自动扫描器等。
Modlishka最初是作为一种尝试克服标准反向代理限制的方式编写的,并作为个人挑战,以查看有足够动力和额外研究时间可能实现的内容。达到的结果似乎非常有趣,并且该工具最初发布后进行了更新,旨在:
- 强调当前使用的两个因素身份验证(2FA)方案的弱点,以便行业可以创建和实施适当的安全解决方案。
- 支持其他可能受益于通用且透明的反向代理的项目。
- 提高社区对现代钓鱼技术和策略的认识,并支持渗透测试人员的日常工作。
Modlishka主要是为安全相关任务编写的。然而,在其他非安全相关的使用场景中也可能很有帮助。
高效的代理!
特征
最重要的“Modlishka”特征之一:
常规:
- 指定任意域的HTTP和HTTPS反向代理。
- 完全控制用户浏览器的“跨”起源TLS流量流(无需在客户端安装任何附加证书)。
- 通过命令行选项和JSON配置文件进行简单快速的配置。
- 基于模式的JavaScript有效负载注入。
- 为网站提供额外的“安全性”:TLS包装、身份验证、相关安全标头等。
- 从所有加密和安全标头中剥离网站(回到90年代的MITM风格)。
- 无状态设计。可以轻松扩展,以处理任意数量的流量-例如,通过DNS负载平衡器。
- 可以通过模块化插件轻松扩展您的想法。
- 代理域的自动测试TLS证书生成插件(需要自签名CA证书)
- 由Go编写,因此可以在所有平台和架构上工作:支持Windows、OSX、Linux、BSD等...
安全相关:
- 支持大多数2FA身份验证方案(开箱即用)。
- “客户端域钩住”攻击的实际实现。支持诊断插件。
- 用户凭据收集(基于URL参数传递的标识符的上下文)。
- 具有自动收集的凭据摘要和一键式用户会话模拟模块的Web面板插件(概念验证/测试版)。
- 没有网站模板(只需将Modlishka设置为代理目标并启动钓鱼运动)。
- 钓鱼站点自动克隆。
- 支持真正的“模拟”(动态站点)钓鱼方案(基于模式的JavaScript有效负载注入)。
其他:
- 自动毒化HTTP 301浏览器缓存并永久劫持非TLS URLS。
- 监视并记录所有请求和响应。
- 与代理相关的DNS解析。
- 支持多处理器的高性能。
设置
Modlishka可以通过下载二进制文件或从源代码构建来安装。
二进制文件:
我们在“Releases”中提供了预编译二进制文件:https://github.com/drk1wi/Modlishka/releases
源代码:
要构建Modlishka源代码,您需要安装Golang:
$ git clone https://github.com/drk1wi/Modlishka.git
$ cd Modlishka
$ make
操作
有关Modlishka的更多信息和操作:
https://github.com/drk1wi/Modlishka/wiki
示例用法
这是一些基本用法示例:
$./Modlishka -config config.json
$./Modlishka -cert certs/server.crt -key certs/server.key -listen 0.0.0.0 -port 443 -target https://www.example.com
$./Modlishka -cert certs/server.crt -key certs/server.key -listen 0.0.0.0 -port 443 -target https://www.example.com -creds admin:admin
要启用凭据记录(或在Web面板中查看),请在配置文件中指定“credentials_track”选项:
{
"debug": true,
"listen_addr": "0.0.0.0",
"listen_port": "443",
"target": "https://www.example.com",
"ssl_cert": "certs/server.crt",
"ssl_key": "certs/server.key",
"credentials_track": true
}
要启用Web面板,请使用以下命令:
$ ./Modlishka -cert certs/server.crt -key certs/server.key -listen 0.0.0.0 -port 443 -target https://www.example.com -web-host 0.0.0.0 -web-port 80 -web-admin admin:admin
Web面板将在以下位置访问:http://your_ip_address
要启用自动收集的凭据摘要和一键式用户会话模拟,请使用以下命令:
$ ./Modlishka -cert certs/server.crt -key certs/server.key -listen 0.0.0.0 -port 443 -target https://www.example.com -web-host 0.0.0.0 -web-port 80 -web-admin admin:admin -userdb-file users.db
要启用自动模拟钓鱼站点,请在配置文件中指定以下选项:
{
"debug": true,
"listen_addr": "0.0.0.0",
"listen_port": "443",
"target": "https://www.example.com",
"ssl_cert": "certs/server.crt",
"ssl_key": "certs/server.key",
"phish_target": "https://www.example.com/login",
"phish_user": "admin"
}
有关更多信息,请参见“示例配置文件”和“Wiki”中的其他选项。项目名称:Modlishka
博客文章:
- "Modlishka 介绍" "绕过标准2FA机制概念验证"博客文章。
- "通过客户端域钩取劫持浏览器TLS流量"技术论文--如果您对处理流量的方法感兴趣。
许可证
作者:Modlishka由Piotr Duszyński([@drk1wi](https://twitter.com/drk1wi))设计和实现(包括在“客户端域钩取”论文中描述的技术)。您可以在[此处](https://github.com/drk1wi/Modlishka/blob/master/LICENSE)找到相关许可证。版权所有。
该工具的初始版本是作为一个更大的项目的一部分编写的,该项目已被解散并相应地分配了资产。
致谢
所有贡献者💪都要得到赞扬!
Giuseppe Trotta@Giutro对最终代码优化和大力支持表示感谢。
免责声明
此工具仅供教育目的,仅可用于合法的渗透测试或研究。作者不对其用户采取的任何行动承担任何责任。