20241022
一、理解现阶段的攻击面和利用构建
本周进度:获得系统立足点
为什么要钓鱼?钓鱼的具体目标?钓鱼要具备的要素?
二、理解反向代理
代理的类型和原理
正向代理(Forward Proxy): 正向代理是一种位于客户端和目标服务器之间的代理服务器。它代表客户端向目标服务器发送请求,然后将服务器的响应返回给客户端。客户端需要配置代理服务器的地址和端口。正向代理的主要作用是帮助客户端访问无法直接访问的资源,或隐藏客户端的真实IP 地址。
请求 请求
客户端 --------> 正向代理 --------> 目标服务器
<-------- <--------
响应 响应反向代理(Reverse Proxy): 反向代理是一种位于客户端和一台或多台后端服务器之间的代理服务器。它代表服务器接收客户端的请求,然后将请求转发给后端服务器处理,再将响应结果返回给客户端。客户端无需特殊配置,也无需知道后端服务器的存在。反向代理用于负载均衡、安全防护、缓存优化等,隐藏了服务器的真实 IP 地址和架构。
请求 请求
客户端 --------> 反向代理 --------> 后端服务器
<-------- <--------
响应 响应透明代理(Transparent Proxy): 透明代理指的是客户端无需进行任何特殊配置,也不知道代理的存在。透明代理是一种无需客户端配置的正向代理。它位于客户端和目标服务器之间,通过拦截并重定向客户端的请求,实现代理功能。对客户端而言,代理的存在是"透明"的,他们可能不知道请求被代理了。透明代理常用于网络监控、内容过滤和缓存优化。透明代理中的"透明"确实意味着对客户端而言,代理服务器的存在似乎不存在或不可察觉。客户端无需进行任何特殊的配置设置,也可能完全不知道其网络请求正在被代理服务器拦截和处理。
请求被拦截
客户端 -------> 目标服务器 <-------- 透明代理
<------- -------->
响应 响应2FA和MFA
2FA(Two-Factor Authentication,双因素认证):
2FA 是一种安全验证方法,要求用户在登录或访问资源时提供两种不同类型的身份验证因素。这些因素通常来自以下三类中的两类:知识因素、持有因素和生物特征因素。知识因素指用户知道的东西,例如密码、PIN 码或安全问题的答案;持有因素是用户拥有的物品,如手机、智能卡、硬件令牌或短信验证码;生物特征因素则是用户自身的生物特征,包括指纹、面部识别或虹膜扫描。通过结合这两种不同类型的验证因素,2FA大大提高了账户或系统的安全性。即使攻击者获得了其中一种因素(例如密码),仍然无法成功访问账户,因为他们缺少第二种验证因素。
知识因素(你知道的东西)
密码、PIN码、安全问题
例如:银行卡密码、网站登录密码
持有因素(你拥有的东西)
物理设备或令牌
例如:手机、硬件密钥、智能卡
生物特征因素(你自身的特征)
指纹、面部识别、虹膜扫描、声纹
例如:iPhone的Face ID、指纹解锁
双因素认证(2FA)是使用上述三种因素中的两种来验证用户身份的方法。
想象一下银行ATM机的场景:
你插入银行卡(持有因素:你拥有的东西)
输入PIN码(知识因素:你知道的东西)
这就是一个经典的2FA例子,实际上在ATM机出现之前,我们就已经在使用双因素认证了!
现代的2FA通常是:
输入密码(知识因素)
然后接收并输入发送到手机的一次性验证码(持有因素)
这种方式大大提高了安全性,因为即使黑客知道了你的密码,没有你的手机,他们仍然无法访问你的账户。
MFA(Multi-Factor Authentication,多因素认证):
MFA 是一种更广泛的身份验证方法,要求用户提供两种或两种以上不同类型的身份验证因素。除了 2FA 中提到的知识因素、持有因素和生物特征因素,MFA 还可能包括位置因素和行为因素。位置因素基于地理位置的验证,如 GPS 数据或特定的网络环境;行为因素则涉及用户独特的行为特征,例如打字速度、鼠标移动模式等。MFA 的目的在于通过增加验证因素的数量和多样性,进一步提高安全性。即使一种或多种验证因素被攻破,攻击者仍需突破其他验证层才能获得访问权限,从而显著增强了系统的防护能力。
多因素认证(MFA)是2FA的扩展,它使用两种或更多的不同类型的因素。例如,一个高安全性系统可能需要:
密码(知识因素)
手机验证码(持有因素)
指纹扫描(生物特征因素)
单因素认证: 公共图书馆的门禁卡。你只需要有这张卡(持有因素),就可以进入。如果卡丢了,任何人捡到都能使用。
双因素认证: 保险柜。你需要钥匙(持有因素)和密码(知识因素)才能打开。单独有一个并不够。
多因素认证: 高级安保区域。需要门禁卡(持有因素)、密码(知识因素)和指纹(生物特征因素)才能进入。
安全性对比
从最安全到相对较弱:
硬件密钥 + 生物识别 + 密码(三因素)
认证应用 + 密码(双因素)
短信验证码 + 密码(双因素)
仅密码(单因素)
想象安全保护是筑墙防贼:
单因素认证就像只有一堵墙
每增加一个因素,就是增加一堵墙
黑客可能通过钓鱼或数据泄露获取你的密码,但同时获取你的手机和指纹的难度要大得多。
TLS的演进
SSL(Secure Sockets Layer) 是早期的加密协议,用于保护互联网通信,版本包括 SSL 2.0 和SSL 3.0,但由于存在安全漏洞,SSL 现已被废弃和淘汰。
TLS(Transport Layer Security) 是 SSL 的升级版本,提供了更强的加密和安全性,当前广泛使用的是 TLS 1.2 和 TLS 1.3,它修复了 SSL 的漏洞并优化了协议。尽管 TLS 是正式名称,但人们有时仍习惯使用"SSL"来泛指安全传输协议。
三、Evilginx
Kali Linux 2023.2开始集成evilginx2
Evilginx 是一个中间人攻击框架,用于钓鱼登录凭证和会话cookie,从而绕过双因素认证保护。该工具是2017年发布的 Evilginx 的后续版本,使用了定制版本的 nginx HTTP 服务器,为浏览器和被钓鱼的网站之间提供中间人功能,以作为代理。目前的版本完全用 GO 语言编写为一个独立的应用程序,它实现了自己的HTTP和DNS服务器,使得其设置和使用变得极为简单。这个工具的一些关键特点:
介绍 Introduction
介绍一些有关网络钓鱼的背景、历史以及反向代理网络钓鱼的内容。 A bit of background on phishing, its history and what reversy proxy phishing is about.
简介 Intro
网络钓鱼的演变 Evolution of Phishing
MFA 和网络安全 MFA & Web Security
窃取代币 Stealing The Token
设置 Setup
在这里我们将设置我们的测试环境。 Here we will set up our testing environment.
简介 Intro
准备环境 Preparing The Environment
培训实验室 Training Lab
入门 Getting Started
了解如何创建您的第一个网络钓鱼程序并首次使用 Evilginx 进行自我网络钓鱼! Learn how to create your first phishlet and use Evilginx to phish yourself for the first time!
简介 Intro
预览 Preview
创建 Phishlet Creating a Phishlet
捕捉网络钓鱼 Catching Phish
个性化诱饵 Personalizing Lures
高级网络钓鱼 Advanced Phishing
了解 Evilginx 的更多高级功能以及如何完全自定义您的网络钓鱼活动。 Learn about more advanced features of Evilginx and how to fully customize your phishing campaigns.
简介 Intro
替换内容 Replacing Content
强制 POST 参数 Forcing POST Parameters
处理 JSON 和 LocalStorage Handling JSON & LocalStorage
JavaScript 注入 JavaScript Injection
登陆页面重定向器 Landing Page Redirectors
大规模诱饵瞄准 Mass Lure Targeting
代理反向代理 Proxying The Reverse Proxy
黑名单管理 Blacklist Management
安全加固 Security Hardening
了解网站如何保护其用户免受反向代理网络钓鱼的侵害。我们将探索绕过此类保护的方法,并学习如何实施我们自己的保护。 Learn about how websites can protect their users from reverse proxy phishing. We will explore ways of bypassing such protections and also learning how to implement our own.
简介 Intro
位置验证 Location Validation
秘密令牌验证 Secret Token Validation
远程部署 Remote Deployment
了解如何将 Evilginx 部署到远程服务器并正确设置它以用于网络钓鱼活动。 Learn how to deploy Evilginx to remote server and properly set it up for use in your phishing engagements.
简介 Intro
设置服务器 Set Up Your Server
域设置 Domain Setup
部署 Evilginx Deploy Evilginx
远程网络钓鱼 Remote Phishing
持久性 Persistence
深海网络钓鱼 Deep Sea Phishing
在这里,我将演示如何为不同的网站创建网络钓鱼程序以及如何尝试规避已实施的客户端保护。 Here I will demonstrate the process of how I approach the creation of phishlets for different websites and how I attempt to circumvent the implemented client-side protections.
简介 Intro
Okta:打破保护措施 Okta: Defeating Protections
Okta:会话令牌 Okta: Session Tokens
Okta:Phishlet 模板 Okta: Phishlet Templates
Microsoft 365 个人版 - 创建网络钓鱼小工具 Microsoft 365 Personal - Creating a Phishlet
Microsoft 365 个人版 - 清理 Microsoft 365 Personal - Cleaning Up
Microsoft 365 企业版 - 添加兼容性 Microsoft 365 Enterprise - Adding Compatibility

MITM攻击:evilginx2在目标用户和实际网站之间设置一个代理,从而能够拦截、修改和重放HTTP/HTTPS请求和响应。
绕过2FA:除了捕获用户名和密码,evilginx 还能够捕获会话cookie,这意味着攻击者可以绕过两步验证来访问受保护的账户。
Phishlets:evilginx 使用"phishlets"(小的配置文件)来模拟特定的网站。这些phishlets定义了如何拦截和修改特定网站的流量,使其能够成功模拟多种流行的网站和服务。
完全的HTTPS支持:evilginx 支持HTTPS,因此可以为伪造的网站提供一个有效的SSL证书,从而使钓鱼网站看起来更真实。
自动化流程:evilginx 可以自动化整个攻击流程,从生成钓鱼URL到捕获用户凭证和会话cookie。
Github 库地址: https://github.com/kgretzky/evilginx2
主页 地址:https://academy.breakdev.org/evilginx-mastery
作者一直在更新这个项目,最新版本是3.0.
目前kali的包管理器可以便捷安装evilgnix2。
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# evilginx2 --help
Usage of evilginx2:
-c string
Configuration directory path
-debug
Enable debug output
-developer
Enable developer mode (generates self-signed certificates for all hostnames)
-p string
Phishlets directory path
-t string
HTML redirector pages directory path
-v Show version
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# evilginx2
___________ __ __ __
\_ _____/__ _|__| | ____ |__| ____ ___ ___
| __)_\ \/ / | | / __ \| |/ \\ \/ /
| \\ /| | |__/ /_/ > | | \> <
/_______ / \_/ |__|____/\___ /|__|___| /__/\_ \
\/ /_____/ \/ \/
- -- Community Edition -- -
by Kuba Gretzky (@mrgretzky) version 3.3.0
[10:42:28] [inf] Evilginx Mastery Course: https://academy.breakdev.org/evilginx-mastery (learn how to create phishlets)
[10:42:28] [inf] loading phishlets from: /usr/share/evilginx2/phishlets/
[10:42:28] [inf] loading configuration from: /root/.evilginx
[10:42:28] [inf] blacklist: loaded 0 ip addresses and 0 ip masks
[10:42:28] [war] server domain not set! type: config domain <domain>
[10:42:28] [war] server external ip not set! type: config ipv4 external <external_ipv4_address>
[10:42:28] [inf] obtaining and setting up 0 TLS certificates - please wait up to 60 seconds...
[10:42:28] [inf] successfully set up all TLS certificates
+-----------+-----------+-------------+-----------+-------------+
| phishlet | status | visibility | hostname | unauth_url |
+-----------+-----------+-------------+-----------+-------------+
| example | disabled | visible | | |
+-----------+-----------+-------------+-----------+-------------+
[10:42:28] [!!!] Failed to start nameserver on: :53
[10:42:28] [!!!] listen tcp :443: bind: address already in use
: help
general
config : manage general configuration
proxy : manage proxy configuration
phishlets : manage phishlets configuration
sessions : manage sessions and captured tokens with credentials
lures : manage lures for generation of phishing urls
blacklist : manage automatic blacklisting of requesting ip addresses
test-certs : test TLS certificates for active phishlets
clear : clears the screen
[10:42:30] [war] server domain not set! type: config domain <domain>
[10:42:30] [war] server external ip not set! type: config ipv4 external <external_ipv4_address>
: exit非常强大的工具,需要更多地研究这个工具和钓鱼本身,
可以拓展我们整理的高阶教程:
Evilginx Mastery : https://pan.baidu.com/s/1mc-7Tab-dTvVEWcifrQWxg?pwd=dt4f
也算钓鱼技术专精的课程。
四、Modlishka简介
Modlishka是一个开源的反向代理工具,用于进行实时的凭据钓鱼攻击。它可以有效地帮助渗透测试员进行钓鱼攻击,模拟真实的攻击场景,从而评估目标的安全防范能力。以下是Modlishka的一些关键特点和功能:
实时内容替换:Modlishka可以在代理内容时动态地替换或修改Web页面内容,以适应钓鱼场景。
支持双因素认证:与其他钓鱼工具不同,Modlishka可以绕过一些双因素认证方法,使其更具威胁性。
自动化:Modlishka可以自动化地生成钓鱼域名和相应的TLS证书。
无需模板:使用Modlishka时,渗透测试员无需预先创建或维护钓鱼网站的模板。
透明代理:目标用户与真实网站之间的所有通信都通过Modlishka代理,这意味着用户与真实网站的交互是实时的,但同时也被Modlishka捕获和记录。
"Modlishka" 是波兰语中的 "螳螂"(mantis)的意思。该工具的命名可能暗示了它作为一个"捕食者",等待猎物上钩的能力。螳螂是一种捕食性昆虫,以其伏击猎物的能力而著称,这与网络钓鱼攻击的性质相似,即伏击并捕获不知情的用户。
"Modlishka" 的发音接近于 [mawd-LEESH-kah]。在波兰语中,"ł" 的发音接近于英语中的 "w",而"sz" 的发音类似于 "sh"。因此,你可以尝试将其发音为 "mawd-LEESH-kah" 来近似其在波兰语中的原始发音。
Github项目地址: https://github.com/drk1wi/Modlishka
可参考的中文教程:https://www.freebuf.com/articles/network/217091.html
更多参考:
https://sbasu7241.medium.com/phishing-101-with-modlishka-f3255e31b68b
https://github.com/slowmistio/Modlishka-Phishing-NG
https://blog.duszynski.eu/phishing-ng-bypassing-2fa-with-modlishka/
Red Team Notes
ired.team notes 是什么?
这些是关于所有关注(但不限于)红队和进攻性安全的事情的说明。
这是可公开访问的个人红队笔记,
网址为
https://github.com/mantvydasb/RedTeam-Tactics-and-Techniques
内容是关于我在受控环境中进行的渗透测试/红队实验,其中涉及使用渗透测试人员、红队和实际对手所使用的各种工具和技术。
五、Muraena

Muraena 是一种几乎透明的反向代理,旨在自动化网络钓鱼和网络钓鱼后活动。
Muraena 是一款先进的工具,可自动执行网络钓鱼活动部署过程,使安全专业人员能够更简单、更高效地进行复杂的模拟。与传统的网络钓鱼工具包不同,Muraena 充当反向代理,实时拦截和操纵受害者与合法网站之间的流量,从而实现无缝且令人信服的网络钓鱼场景。
https://muraena.phishing.click
https://github.com/muraenateam/muraena
Muraena 支持以下模块:
配置部分
六、EvilnoVNC

EvilnoVNC是一个随时可用的网络钓鱼平台。
与其他网络钓鱼技术不同,EvilnoVNC 允许通过 noVNC 连接使用真实浏览器绕过 2FA。
此外,该工具还允许我们实时查看受害者的所有操作、对其下载文件的访问以及整个浏览器配置文件,包括 cookie、保存的密码、浏览历史记录等。
https://github.com/JoelGMSec/EvilnoVNC
特色与待办事项
将 Evil-Chromium 配置文件导出到主机
在主机上保存下载文件
禁用 URL 中的参数(例如密码)
禁用组合键(例如 Alt+1 或 Ctrl+S)
禁用对 Thunar 的访问
实时解密cookie
将 cookie 有效期延长至 99999999999999999
来自原始网站的动态标题
预加载页面的动态分辨率
基本键盘记录器
复制真实的用户代理和其他内容
比以往更快
疯狂的新想法
五、工具比较
Gophish 是开源框架,旨在帮助组织测试和提升对钓鱼攻击的防御能力。它的主要特点是用户界面友好,可以自定义钓鱼邮件和登录页面,并提供详细的报告。缺点是主要限于钓鱼模拟,不具备复杂的攻击场景模拟能力。
Swaks(Swiss Army Knife SMTP)是一个多功能的命令行SMTP测试工具,主要用于测试邮件服务器。它的优势在于其灵活性和强大的功能,适合于进行各种SMTP相关测试。然而,由于其基于命令行,对于不熟悉命令行操作的用户可能不太友好。
Evilginx 是一个中间人攻击框架,主要用于劫持HTTP/HTTPS流量,尤其擅长破解双因素认证。这个工具在数据截取和安全绕过方面非常强大,但同时也要求用户有较高的技术知识,容易被安全软件检测到。
Modlishka 也是一个反向代理工具,用于自动化钓鱼攻击和中间人攻击,与 Evilginx 有些类似。它同样能够绕过双因素认证,相较于 Evilginx 来说配置和操作稍微简单一些。不过,使用 Modlishka同样需要一定的技术背景。
那我们用什么?要么Evilginx,要么Modlishka,因为swaks简单测试或者脚本化更适合,刚才我们就是用它完成的最小化测试,gophish就不满足我们需要,太简陋了。用强大且开源的Modlishka吧。
更多钓鱼工具可以关注Muraena、EvilnoVNC、EvilProxy等。
六、深入理解Modlishka钓鱼原理
1. Modlishka官方教程
根据modlishka官方gituhub库的教程: https://github.com/drk1wi/Modlishka/wiki/How-to-use ,为了便于大家理解,我们准备了全文翻译稿:
1). 先决条件
为了开展一场成功的网络钓鱼攻击,你需要准备:一个已注册的域名和一个支持通配符的SSL证书。
注意:如果你不计划通过TLS开展钓鱼攻击或者仅在本地测试,那么这些其实是可选的,不必须注册自己的域名。(你可以使用:loopback.modlishka.io)。
注册域名:
在启动任何电子邮件钓鱼攻击之前,你需要一个看起来可信的域名。显然,为了尽可能降低被目标用户轻易识别的风险,所选的域名应该尽量与原始域名相似。
注册的域名应该指向Modlishka当前运行的主机IP。添加一个指向正确IP地址的"A"记录和一个通配符"CNAME" ''记录。所有子域都应解析到同一IP地址。如果你需要一个临时域名用于本地机器上的测试,你可以使用:"loopback.modlishka.io域名"(解析到127.0.0.1,适用于所有.loopback.modlishka.io查询)
Modlishka目前支持以下两种域名方案:
a. "一对一"域名转换。例如:用victim.cc或victin.com代替目标域名victim.com。出于伪装目的,可以尝试寻找具有不同顶级域或拼写错误的相近域名。
b. "嵌套"域名转换。例如:'victim.com.α.host'。尝试找到尽可能短的域名,并将目标域名作为子域名包含。
选择哪种方式取决于你。有很多不同的域名注册商可以帮助你找到理想的域名。
获取SSL证书:
在大多数情况下,SSL证书会给受害者留下网站是可信的印象。如果你想提高钓鱼的效果,你也应该为你的钓鱼域名配置SSL证书。
Modlishka要求你的钓鱼域名拥有一个通配符证书,你可以通过注册商手动获取,或者使用Let's Encrypt和acme.sh脚本来自动化这一过程。你需要一个PEM格式的证书和密钥以便与Modlishka一起使用。
对于域名,获取一个受信任的证书最简单的方法是使用acme.sh脚本。生成后,你可以使用以下命令将它们转换为配置文件的JSON兼容格式:
awk '{printf "%s\\n", $0}' file译者注: awk '{printf "%s\\n", $0}' file 这条命令是什么意思?为什么这么做? awk 大家都比较熟悉的,是一种用于文本处理和数据提取的编程语言,常用于模式扫描和处理。 {printf "%s\\n", $0} 是 awk 的操作部分。在这里, printf 是用来格式化输出的函数, %s\n 指定了输出格式,即以字符串的形式输出,每个字符串后跟一个换行符。 $0 表示当前处理行的整个内容。这条命令的作用是逐行读取文件中的内容,然后使用 printf 按原样格式化输出每一行,每行后都跟着一个换行符。没错,就是用这条语句将生成的证书文本,准确转换成modlishka配置文件需要的格式。因为证书文本的格式一直要非常标准和严格。
就这样。你的SSL证书设置应该已经准备好。或者,也可以使用autocert插件进行测试:
$ openssl genrsa -out MyRootCA.key 2048
$ openssl req -x509 -new -nodes -key MyRootCA.key -sha256 -days 1024 -out MyRootCA.pem将 plugin/autocert.go 文件中的 _const CA_CERT_ 变量替换为 MyRootCA.pem 文件的内容,以及 _const CA_CERT_KEY_ 替换为 MyRootCA.key 的内容。
在浏览器的证书存储中安装并信任MyRootCA.pem,就完成了。autocert插件会在每次启动工具时自动为你的钓鱼域生成证书。
2). 使用工具
你可以通过命令行参数使用和配置Modlishka。以下命令将在没有任何加密的情况下启动代理,这也是对目标网页进行中间人攻击并从整个通信通道中剥离加密的一种很好的方法。
$ sudo ./dist/proxy -target https://target-domain.com -proxyDomain loopback.modlishka.io -listeningPort 80其中 target 参数指向应该被代理的域名(应包含协议头),而 proxyDomain 定义了钓鱼域名。更好且更方便的方法是使用 JSON 配置文件。你可以在这里找到示例文件。
$ sudo ./dist/proxy -config your.config.json注意:如果你想通过TLS提供页面,请确保在配置文件中添加证书。
示例配置文件:
{
"proxyDomain": "loopback.modlishka.io",
"listeningAddress": "127.0.0.1",
"target": "target-victim-domain.com",
"targetResources": "",
"targetRules": "PC9oZWFkPg==:",
"terminateTriggers": "",
"terminateRedirectUrl": "",
"trackingCookie": "id",
"trackingParam": "id",
"jsRules":"",
"forceHTTPS": false,
"forceHTTP": false,
"dynamicMode": false,
"debug": true,
"logPostOnly": false,
"disableSecurity": false,
"log": "requests.log",
"plugins": "all",
"cert": "",
"certKey": "",
"certPool": ""
}Modlishka支持以下命令行参数:
cert: 如果你出于某种原因希望通过命令行参数提供PEM证书内容。将其Base64编码以形成单一字符串,因为bash对多余字符非常敏感。对于JSON文件,证书不必是base64编码的。只需记得用 \n 替换所有新行。
certKey:与证书相似,将SSL证书密钥进行base64编码。对于JSON文件,证书密钥不必是base64编码的。只需记得用 \n 替换所有新行。
certPool:Base64编码的认证机构证书。对于JSON文件,证书池不必是base64编码的。只需记得用 \n 替换所有新行。
config:JSON配置文件的路径。建议使用命令行参数或配置文件。
credParams:此参数由control_panel插件注册。它是使用组(正则表达式)匹配用户名和密码模式的逗号分隔列表。这些值也是base64编码的。如果你希望Modlishka自动收集凭据,请创建一个正则表达式,以从HTTP正文中提取正确的值。例如:HTTP Post正文包含:
param1=test¶m2=test2&password=secret&username=test,则密码的正则表达式应该是:password=([^\W]+)&",用户名为"username=([^\W]+)。debug:打印来自翻译和代理过程的详细调试信息。
disableSecurity:没有特别理由,不要禁用此选项。"这里有龙"。
红队笔记注:"Here be dragons" 是一种英语世界的表达方式,源自西方古老地图上对未知或危险地区的标记,意味着"前方有未知的或极大的风险",不能等同于我们东方文化对龙的祥瑞理解。在这个上下文中,它暗示禁用该选项可能会带来潜在的风险或不安全因素,建议用户在没有充分理由的情况下不要禁用这个安全选项。
forceHTTPS:从流量中剥离所有明文,并仅通过HTTPS代理。这将迫使代理重写所有URL为https方案,并仅在443/HTTP端口上监听。
forceHTTP:从流量中剥离所有TLS,并仅通过HTTP代理。这将迫使代理重写所有URL为http方案,并仅在80/HTTP端口上监听。
dynamicMode:启用客户端域钩子的动态模式。
jsRules:将被注入的URL模式和JS base64编码有效载荷的逗号分隔列表。例如,如果你想向www.loopback.modlishka.io页面注入alert(1),那么你应使用以下参数值:"jsRules":"www.loopback.modlishka.io:YWxlcnQoIlBoaXNoZWQiKTs=",base64decode("YWxlcnQoIlBoaXNoZWQiKTs=") => 'alert("Phished");'
listeningAddress:Modlishka应监听的网卡地址(默认"127.0.0.1")。如果你想在所有网卡上监听,请使用"0.0.0.0"。否则,端口将被视为关闭。
log:将获取的请求写入或追加到的本地文件。这是收集凭据的主要途径。
proxyDomain:我们将用来创建的代理域名 - 例如:loopback.modlishka.io (127.0.0.1)(不包括url方案:http/https)
plugins:启用的插件名称的逗号分隔列表(默认"all")
postOnly:仅在你想只记录HTTP POST请求时启用
proxyAddress:应使用的代理(socks/https/http) - 例如:http://127.0.0.1:8080
proxyDomain:将使用的代理域名 - 例如:proxy.tld
target:目标网站的URL - 例如:https://target-victim-website-example.com。注意:尽量针对根域名,因为大多数子域将自动处理。
targetRes:需要额外处理的目标子域的逗号分隔列表。有时代理可能无法获取并翻译某些FQDN。在这种情况下,你应该指定这些域名。注意:过多的域名可能产生不希望的效果。确保将此列表保持在最小。
targetRules:所有静态字符串及其替换的逗号分隔字段列表,都是base64编码的。例如:如果你想从html标签响应中移除integrity属性,你可以添加以下参数:
-targetRules "aW50ZXJncml0eT0ic2hh,aW50ZXJncmlhdHk9InNoYQ=="。注意:这目前仅替换HTTP响应中的字符串。如果你想修改HTTP请求,请查看./plugins/template。terminateTriggers:来自目标源的URL的逗号分隔列表,将触发会话终止。示例:account.loopback.modlishka.io - 用户成功登录后将加载的URL。在这种情况下,我们通常不希望让他留在我们的域名上。注意:这个选项将阻止用户在会话被终止后返回。他将始终收到一个HTTP 302(重定向)到目标域名或terminateUrl参数值。
terminateUrl:会话终止触发后重定向客户端的URL。
trackingCookie:用于跟踪受害者的HTTP cookie的名称(默认"id")
trackingParam:用于跟踪受害者的HTTP参数的名称(默认"id")。你将使用此参数创建钓鱼攻击的URL:
https://loopback.modlishka.io/?id=[UUID_identifier]注意:此参数将在首次请求时被剥离(以隐藏id参数,这可能看起来有点可疑)。。注意:此参数将在首次请求时被剥离(以隐藏id参数,这可能看起来有点可疑)。
2. 利用Modlishka绕过双因素认证(2FA)
Modlishka作者绕过双因素验证操作文章译稿,原文链接:Phishing NG. Bypassing 2FA with Modlishka(2009年1月2日)
题目:下一代网络钓鱼:利用Modlishka绕过双因素认证(2FA)
这篇博客文章介绍了我刚刚发布的反向代理工具Modlishka。我希望这个软件能够强调社交工程是一个严重的威胁,不能轻视。
在下面的页面中,我将简要描述如何使用这个工具绕过目前大多数使用的2FA认证方案,包括OTP令牌(Time-based One-time Password,基于时间的一次性口令,如Google的Authenticator、或银行的电子密码器)拦截和身份验证后的用户会话劫持。
Modlishka介绍
在我的多年渗透测试经验中,我发现社交工程是进入内部网络的最简单也是最有效的方法。我知道许多APT组织也有同样的想法......这是因为在面对那些保护网络外围的复杂顶级安全防御时,完全不需要烧掉0day漏洞,通常只需要几封电子邮件或电话就可以轻松破坏内部基础设施和公司敏感数据。
Modlishka的编写目的是为了使这种道德钓鱼攻击尽可能有效,并展示当前的2FA在防御这种形式的攻击上效果并不好。这个工具对于所有想要执行有效钓鱼攻击的渗透测试人员非常有用,也包括作为他们红队任务的一部分。
绕过2FA
简单的介绍之后,让我们进入重点。这将是一个在你的电脑上本地运行的示例设置。
如果你想通过浏览器信任的TLS通道提供页面,这一步是必需的:
将 plugin/autocert.go 文件中的 CA_CERT 替换为 MyRootCA.pem 文件的内容, CA_CERT_KEY 替换为 MyRootCA.key 的内容。
然后,在浏览器的证书存储中安装并设置 MyRootCA CA的正确信任级别。
这里有一个小声明:我并不鼓励对任何特定公司进行攻击。选择示例服务仅基于其受欢迎程度和我相信其安全性非常好,通过使用最受欢迎的服务之一作为概念验证,来提高风险意识。
获取工具
$ go get -u github.com/drk1wi/Modlishka
$ cd $GOPATH/src/github.com/drk1wi/Modlishka/配置autocert插件
$ openssl genrsa -out MyRootCA.key 2048
$ openssl req -x509 -new -nodes -key MyRootCA.key -sha256 -days 1024 -out MyRootCA.pem编译并启动Modlishka
$ make
$ sudo ./dist/proxy -config templates/google.com_gsuite.json在浏览器中查看网页
Modlishka 对一个启用了2FA(短信)认证方案的实例进行攻击的操作见视频:https://vimeo.com/308709275
以下链接可用于查看你启动的测试页面。你可以注意到,在第一次请求时 ident 参数对用户是隐藏的: https://loopback.modlishka.io?ident=user_tracking_param。
收集的凭证、2FA令牌和所有其他请求可以在log文件或其中一个包含的插件中找到。
自定义设置
如果你喜欢这个工具,你可以开始调整你选择的域的配置。Modlishka可以通过一系列可用的命令行选项或JSON配置文件轻松定制。
更多可参见官方文件的Modlishka官方教程
结论
所以问题出现了......2FA是否已破解?
根本没有,但是使用正确的反向代理针对你的域名通过加密的、浏览器信任的通信渠道,人们真的很难注意到有什么严重的问题。再加上不同浏览器的漏洞,允许URL栏欺骗,问题可能更大......。加上用户意识的缺乏,这实际上意味着把你最宝贵的资产拱手相让于你的对手。
总之,如果没有足够的安全意识,即使是最精密的安全防御系统也可能失守。
从技术角度来看,目前解决这个问题的唯一方法是完全依赖基于U2F协议的2FA硬件令牌。然而,正确的用户意识同样重要。
总结一下,你应该:
使用U2F硬件令牌作为你的第二认证因素。
使用密码管理器,确保在粘贴密码之前浏览器中的域名是正确的。
不断提高用户对当前社交工程技术的意识。
为什么我要发布这个工具?我认为,如果没有一个能够真正证明这种威胁存在的有效概念验证,那么这个风险就被当作理论上的,而不会有人采取有效的措施来积极应对。这种现状以及风险意识的缺乏,为那些乐于利用它的恶意行为者创造了完美的条件。
(译稿极小部分有删减——红队笔记注)
3. 更多
这里的实战演示案例也可以参考:Phishing with Modlishka Reverse HTTP Proxy。中文版:通过Modlishka HTTP反向代理进行网络钓鱼
Modlishka在Apple Silicon处理器架构下能使用吗?
Modlishka是用Go语言编写的,因此其对处理器架构的依赖主要取决于Go语言本身的兼容性。Go语言被设计为具有跨平台的能力,能够在多种操作系统和架构上运行。这意味着,尽管Modlishka的代码库并没有特别指出对Apple Silicon(例如M1, M2, M3架构)的兼容性,但由于Go语言本身支持跨架构编译,Modlishka能在这些架构上编译和运行。
在安装Modlishka时,你可以通过编译来生成适用于你的系统架构的可执行文件。例如,使用 make 命令可以编译Modlishka。如果你在使用基于Apple Silicon的Mac,Go语言通常能够自动识别并为该架构编译适当的二进制文件。
评论区