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

  • WIKI页面:更多关于该工具使用和配置的详细信息。
  • FAQ

博客文章:

许可证

作者:Modlishka由Piotr Duszyński([@drk1wi](https://twitter.com/drk1wi))设计和实现(包括在“客户端域钩取”论文中描述的技术)。您可以在[此处](https://github.com/drk1wi/Modlishka/blob/master/LICENSE)找到相关许可证。版权所有。

该工具的初始版本是作为一个更大的项目的一部分编写的,该项目已被解散并相应地分配了资产。

致谢

所有贡献者💪都要得到赞扬!

Giuseppe Trotta@Giutro对最终代码优化和大力支持表示感谢。

免责声明

此工具仅供教育目的,仅可用于合法的渗透测试或研究。作者不对其用户采取的任何行动承担任何责任。

标签:工具分享