标签 社会工程学 下的文章

安全专家发出警示:身份认证服务商 Okta 的单点登录(SSO)用户需提高警惕,防范黑客入侵企业网络、窃取数据并实施勒索的行为。
近期针对 Okta 单点登录工具用户的社会工程学攻击呈激增态势,受此影响,Okta 上周已直接向用户发布了该攻击活动的预警。据悉,这些攻击行为几乎均由网络犯罪组织ShinyHunters实施。
谷歌旗下曼迪昂特咨询集团首席技术官查尔斯・卡马克尔表示:“这是一场持续进行的活跃攻击活动,已有多家企业遭遇数据失窃,而自称 ShinyHunters 的黑客组织已向部分受害企业发出勒索要求。”
这类攻击的特殊之处在于,黑客借助最新一代高度自动化的钓鱼工具包,通过实时语音对话实施欺诈,并将用户重定向至仿冒度极高的登录界面,整个攻击流程经过精密策划。
威胁情报公司 Silent Push 指出:“这并非常规的自动化暴力钓鱼攻击,而是由人工主导、高交互性的语音钓鱼(钓鱼电话) 操作,即便是加固后的多重身份验证(MFA)体系,也可能被其绕过。”
该公司称,黑客所使用的实时钓鱼面板工具,能让人工攻击者介入用户的整个登录流程,实时截获用户凭证与多重认证令牌,从而立即获取企业管理后台的长期访问权限。拨打钓鱼电话的黑客会按照固定脚本引导受害者,完成其指定的一系列操作。
一旦黑客成功入侵,往往会开展横向移动,利用获取的权限通过 Slack、Teams 等内部通讯工具,对高权限管理员实施社会工程学欺诈。Silent Push 表示,黑客会尝试使用不同身份在企业多重认证系统中完成注册,同时优先实施快速数据窃取,用于公开勒索
赛门铁克威胁情报总监雷夫・皮林称,根据 2025 年 12 月起搭建的恶意基础设施线索判断,目前已有多达 150 家企业成为黑客的当前攻击目标或潜在盯上的对象。
他表示:“诈骗者会为每个攻击目标单独注册定制域名,以此窃取用户凭证,并协助自己绕过企业的多重身份验证体系。”
研究人员透露,此次攻击的目标覆盖多个行业,包括大型金融服务机构、医疗健康企业、物流运输公司、制造企业、生物科技与制药公司、科技软件企业以及房地产企业。
皮林指出,截至目前,该攻击活动的目标似乎仅针对使用 Okta 系统的企业,但 ShinyHunters 及同类组织此前曾攻击过各类单点登录服务商,这意味着黑客的攻击目标范围很可能会进一步扩大
针对这类并未利用厂商软件漏洞、由人工主导的实时钓鱼攻击,最有效的防御手段仍是搭建完善的多重身份验证体系。
曼迪昂特的卡马克尔表示:“我们强烈建议企业尽可能采用抗钓鱼多重认证方案,例如 FIDO2 安全密钥或通行密钥,这类防护手段能有效抵御社会工程学攻击,这是推送式认证或短信认证无法做到的。”
他还称:“管理员还应制定严格的应用授权策略,并对日志进行监控,及时发现异常的 API 操作行为或未授权的设备注册行为。”
Silent Push 建议,企业需向员工发出预警,告知其该活跃攻击活动可能会直接针对个人,并为员工举例说明黑客的攻击手段,同时建立线下验证渠道,让员工能够确认与其沟通的是否为企业真实的 IT 部门。
该公司表示:“若员工在此期间收到任何可疑信息、来电或邮件,应立即上报给管理人员与安全团队进行核查。”
ShinyHunters 组织诞生于西方以青少年为主的网络犯罪社群The Com,该组织成员多为英语母语者,常通过拨打钓鱼电话伪装成 IT 技术支持人员实施攻击,且会随意使用不同的组织旗号,近期使用的旗号包括Scattered Lapsus$ ShinyHunters
威胁情报机构 Unit 221B 首席研究官艾莉森・尼克松表示,从 ShinyHunters 及 Scattered Lapsus$ ShinyHunters 此前的攻击行径来看,任何遭遇此次攻击的受害企业,都可能面临黑客的反复勒索、黑客利用已窃取数据实施的虚假欺诈,即便支付赎金,也会遭遇多次二次勒索。
她直言:“毫无疑问,向 The Com 社群旗下的勒索软件组织支付赎金毫无意义。这些组织根本不理解俄罗斯勒索软件的商业模式为何能运作,受害者也无法得到其承诺的结果,因此这些勒索者一分钱都不配得到。”
尼克松表示:“无论是否支付赎金,最终结果都是一样的。企业不如省下这笔钱,专注于开展事件响应工作,以及处理后续必须完成的法律相关文书工作。”

一场针对阿根廷司法系统的高精准鱼叉式钓鱼攻击已悄然出现,攻击者利用人们对合法法院通信的信任,投放危险的远程访问木马(RAT)。
该攻击活动使用看似真实的联邦法院预防性羁押复审文件,诱使法律专业人士下载恶意软件。
安全专家已将此次攻击归类为高度定向攻击,它采用多阶段感染技术,旨在长期获取敏感法律与机构系统的访问权限。
攻击始于收件人收到包含 ZIP 压缩包的邮件,该压缩包伪装成官方司法通知。
压缩包内,攻击者植入了一个伪装成 PDF 的恶意 Windows 快捷方式文件(LNK),同时包含一个批处理脚本加载器和一份看似真实的法院裁决文件。
当受害者点击看似标准的 PDF 文件时,恶意执行链随即启动,同时会显示一份极具迷惑性的诱饵文档以避免引起怀疑。这种社会工程学手法让该攻击在日常处理法院文件的司法人员中格外有效
Seqrite 的分析人员发现了这一攻击活动,并揭露了其复杂的多阶段传播机制。
研究团队发现,该恶意软件专门针对阿根廷法律行业,包括司法机构、法律专业人士以及与司法系统相关的政府部门。
诱饵文档以极高的精度模仿阿根廷联邦法院的真实裁决文件,使用正式的法律西班牙语、规范的案件编号、司法签名,并引用真实机构(如刑事与矫正口头法庭)。
这种高度的细节还原大幅提升了攻击在目标受害者中的成功率

感染机制:从快捷方式到远程访问木马(RAT)的部署

该攻击采用三阶段感染流程,旨在规避检测。恶意 LNK 文件会以隐藏模式启动 PowerShell,绕过执行策略以运行批处理脚本,该脚本连接到托管在 GitHub 上的基础设施。
此脚本会下载第二阶段载荷,该载荷伪装成 “msedge_proxy.exe”,存储在 Microsoft Edge 用户数据目录中以显得合法。
最终载荷是一个基于 Rust 语言开发的远程访问木马(RAT),具备强大的反分析能力。
该 RAT 在执行前会进行全面的环境检查,扫描虚拟机、沙箱和调试工具。如果检测到分析工具,恶意软件会立即终止运行以避免被调查。
一旦成功运行,它会建立加密的命令与控制通信,为攻击者提供包括文件窃取、持久化安装、凭证窃取,甚至通过模块化 DLL 组件部署勒索软件等多种功能。


0x00 项目背景与前提

0.1 项目场景

最近接了个钓鱼演练的活,整的焦头烂额,连续爆肝两天,我的主要目标是通过社会工程学手段测试企业员工的安全意识和邮件网关的防护能力。客户环境如下:

目标规模: 5000+ 员工,多个事业部

邮件系统: coremail

防护措施: 未知

0.2 初始工具选择

作为穷人,公司也并没有提供商业工具,我选择了 Gophish 作为基础钓鱼平台,原因如下:

✅ 开源且成熟稳定

✅ 支持完整的项目管理

✅ 内置邮件追踪和统计

✅ Go语言开发,便于二次开发

0.3 面临的核心挑战

然而,直接使用原版Gophish进行测试时,我遇到了100%的拦截率

测试结果(Day 1):
├─ 发送邮件: 50 封
├─ 成功投递: 0 封
├─ 被拦截: 50 封
└─ 拦截原因: "Suspected phishing activity detected"

0x01 发件基础设施搭建:从失败到可信域绕过

在正式进行钓鱼测试前,我首先需要解决邮件投递问题

1.1 第一次尝试:Postfix SMTP(失败)

初始方案

最开始,我尝试使用自建Postfix邮件服务器直接发送钓鱼邮件:(至于为什么不用ewomail,网上都推荐的这个,因为不是centos,没办法跑,直接找了最简单的进行测试了。)

sudo apt-get install postfix

myhostname = mail.phishing-domain.com
mydomain = phishing-domain.com
myorigin = $mydomain

测试结果

QQ邮箱 通过。

163邮箱 通过。

189邮箱 失败,550。

客户给的测试邮箱 失败 550。



日志输出

猜测失败原因

问题

189网关判定
IP信誉低

垃圾邮件发送源
无SPF记录

伪造发件人
无DKIM签名

身份不可信
域名年龄新

钓鱼域名特征
反向DNS缺失

非正规邮件服务器


投递率0% (全部被189网关在SMTP握手阶段拒绝)

1.2 第二次尝试:Zoho企业邮箱(成功)

解决思路

既然自建服务器信誉不足,我决定借助成熟的企业邮箱服务:

选择Zoho Mail:免费企业邮箱,支持自定义域名

域名准备:购买类似域名,没要求就以便宜的为主了

完整配置:SPF、DKIM、DMARC三件套

Zoho邮箱配置过程

步骤1:注册Zoho企业邮箱

步骤2:配置DNS记录

步骤3:验证配置

步骤4:创建发件账户

测试结果(可信域绕过成功)

第一轮测试:纯文本邮件

结果

重大突破:通过Zoho企业邮箱 + SPF/DKIM/DMARC配置,189是可以收到邮件的。

正当我以为一切都结束的时候,给客户发,得到的回复依然是收不到。



1.3 第三次尝试:钓鱼模板发送(再次失败)

虽然可信域问题解决了,但当我发送真实钓鱼内容时,又遇到了新的拦截:

测试邮件(含钓鱼内容)

测试结果



这就很有意思了,众所周知大企业一般布有企业级邮件网关,那么他邮件网关到底是拦截的什么,是什么策略?这些我们都不得而知,只有一点点fuzz了。

猜测失败原因

检测层
结果
详情
✅ SPF验证
PASS
Zoho授权发送
✅ DKIM验证
PASS
邮件签名有效
✅ 域名信誉
PASS
Zoho企业邮箱可信
内容检测
FAIL
触发关键词过滤


猜测被拦截的关键词

1.4 阶段性总结

经过几轮尝试,我得出以下结论:

已解决的问题

1 可信域检测 → 通过Zoho企业邮箱 + SPF/DKIM/DMARC配置绕过

2 IP信誉问题 → 使用Zoho的可信IP池

3 SMTP握手 → 正常完成,不会在连接阶段被拒绝

仍存在的问题

1 内容关键词检测 → 189网关对邮件内容进行深度扫描

2 钓鱼模式识别 → "点击链接+验证信息"等模式被识别

3 URL路径检测 → "verify"、"login"等路径触发拦截

下一步策略

既然可信域问题已解决,但内容仍被拦截,我需要:

1对Gophish进行二次开发,去除工具指纹。

2继续FUZZ邮件内容找到网关盲区。

这也是本文后续章节的核心内容。

0x02 二次开发阶段:去指纹化改造

2.1 指纹分析

通过我能够发送成功的邮箱获取到未改造前的eml,我识别出以下Gophish特征:

邮件头特征





URL特征



服务端特征

2.2 改造策略

感觉特征有点多,基于分析结果,决定先把Gophish本身的特征改一下。

改造清单

模块
原始特征
改造方案
文件位置
邮件头
X-Gophish-*
完全移除或伪造成业务头
models/email_request.go
Mailer
X-Mailer: gophish
伪造成常见邮件客户端
models/email_request.go
服务端
Server: gophish
移除或伪装成Nginx
config/config.go
追踪路由
/track
/resource/image/pixel.png
controllers/route.go
上报路由
/report
/api/v1/status
controllers/route.go
静态资源
gophish.css
app.css
static/, templates/
404页面
Gophish默认页面
伪造Nginx 404
controllers/phish.go


核心代码改造

1. 移除服务端标识

2. 邮件头特征处理

对比原版Gophish和修改后的版本:



关键改动

1 不设置 X-Mailer: gophish

2 不设置 X-Gophish-Contact

3 不设置 X-Gophish-Signature

4 添加 X-Priority: 1(提升邮件优先级)

5 添加 Importance: High(标记重要邮件)会在邮箱里面自主设置为红色叹号

6 保留 用户自定义邮件头功能(SMTP配置中可添加)

说明

原版Gophish出于"透明度"考虑,会主动添加X-Gophish-*头标识自己

我的改进方案是完全不设置这些头,让邮件看起来像普通业务邮件

通过添加X-PriorityImportance头,模仿Outlook等客户端发送的重要邮件

3. 混淆追踪路由

4. 伪造Nginx 404页面

5. 修改参数名称

6. 动态QR码功能开发(借鉴EvilGophish)

这是一个新增的需求。

在测试过程中,猜测如果超链接被拦截,那就是检测的明文URL,于是借鉴了EvilGophish项目,实现了动态QR码生成和CID嵌入功能。

与原版Gophish的区别

原版Gophish的CID支持(已有功能):

使用方式

1在模板编辑器中上传静态图片(如logo.png)

2 在HTML中使用<img src="cid:logo.png">

3 限制:所有收件人看到相同的图片(问题就来了,没有办法追踪谁点击了)

改进(基于EvilGophish):

核心区别

特性
原版Gophish
EvilGophish改进
CID嵌入
支持
支持
图片类型
静态附件
动态生成QR码
个性化
所有人相同
每人专属(含个人ID)
URL跟踪
无法追踪
QR码包含rid参数


为什么需要动态QR码?

根据EvilGophish和相关研究,QR码在钓鱼中具有独特优势:

1 隐藏明文URL - URL被编码为二维码图片,邮件网关的URL检测和沙箱分析无法直接提取

2 提升可信度 - 企业邮件(年终奖、考勤)常用二维码,符合用户认知

3 绕过桌面安全 - 用户用手机扫描,手机浏览器安全警告较弱

4 绕过过滤器 - QR码是图片,不包含文本链接

实现过程(参考EvilGophish)

邮件中使用

生成的邮件结构:

CID嵌入 vs 远程加载对比

方案1:CID内嵌(我们采用)

方案2:远程加载(不推荐)



对比分析

特性
CID内嵌
远程加载
优势方
避免"显示图片"提示
✅ 直接显示
❌ 需用户点击
CID
隐藏服务器地址
✅ 无URL
❌ 暴露域名
CID
加载速度
✅ 即时显示
❌ 依赖网络
CID
提升可信度
✅ 图片完整
❌ 可能显示占位符
CID
邮件网关检测
✅ 仅检测Base64
❌ 检测外部URL
CID
追踪能力
❌ 无法追踪打开
✅ 可追踪加载
远程
邮件大小
❌ 较大(含图片)
✅ 较小
远程


关键优势解析

1避免邮件客户端安全机制

1隐藏钓鱼服务器地址

1提升邮件真实性

远程图片:收件人需要主动点击"显示图片",增加怀疑

CID图片:邮件打开即完整显示,符合正常企业邮件习惯。





0x03 困境:FUZZ机制

3.1 新的拦截机制

其实做到上面的的工作,大部分情况下可以操作了,但是我仍然处于被拦截的情况,因为是黑盒测试,我无法收到邮件的反馈,只能按语义检测进行尝试绕过了:

邮件网关的语义检测机制

拦截案例分析

我被拦截的邮件样本:

拦截原因分析

1 具有引导性词汇: "重要"、"升级"、"验证"

2 行动引导: "请点击"

3 案例模板: "验证账户信息"是经典钓鱼话术

3.2 心路历程

此时我陷入了困境:如果单纯的是关键字检测,这个模板是客户定的,一时半会重改不太现实,等于说是模板改不了的情况下要如何实现发送。

我不知道邮件网关的确切检测规则,纯粹靠猜测和试错。

拦截原因猜测

检测层
触发点
详情
邮件头检测
通过
X-Mailer、Subject编码正常
纯文本检测
通过
text/plain部分无敏感词
HTML内容检测
拦截
检测到明文"年终奖金"、"身份证"、"银行卡"
URL检测
拦截
路径包含"verify"、"status"
行为模式
拦截
"点击链接"+"验证信息"模式


啥也不清楚,就此开蒙。

3.3 单变量Fuzz:定位拦截触发点

在知道邮件被拦截后,我需要精确定位到底是什么触发了189网关的拦截

单变量测试方法

基于smtp_block_tester.py脚本:

测试结果分析;

关键发现

通过单变量Fuzz测试,定位了189网关的拦截规则:

测试变量
是否拦截
结论
纯文本

基线通过
普通超链接

链接本身不触发拦截
"年终奖"

敏感词触发点1
"身份证/银行卡"

敏感词触发点2
主题含"年终奖"

主题也会被检测
"请点击"

单独不触发


核心结论

1关键词检测优先级最高:无论在主题还是正文,"年终奖"、"身份证"、"银行卡"都会立即触发拦截

2超链接本身安全:普通HTTP链接不会触发拦截

3组合拦截机制:虽然"请点击"单独不触发,但"请点击链接+敏感词"会提升拦截优先级

下一步策略

既然定位到了明文关键词检测是核心拦截点,接下来可以做的是:

1保留整体邮件结构(Multipart、链接等)

2重点混淆敏感关键词("年终奖"、"身份证"、"银行卡")

3测试HTML混淆技术能否绕过189网关的关键词检测

这就引出了我的核心绕过方案:HTML混淆Fuzz

0x04 突破:基于HTML混淆的Fuzz绕过

4.1 困境分析与新思路

在语义层面被拦截后,我陷入了思考:

邮件网关如果检测的是明文内容,有可能还会对HTML进行检测,因为Gophish就支持HTML布局。

"既然语义敏感词无法避免,能否通过HTML混淆让网关看不懂?"

4.2 HTML混淆Fuzz框架

这是一套渐进式HTML混淆测试系统:

核心思路

HTML混淆武器库

基于WAF绕过经验,准备了以下混淆技术:

混淆技术
原理
示例
HTML实体编码
将敏感字符转为Unicode实体
年终奖&#x5E74;&#x7EC8;&#x5956;
CSS文字反转
用CSS reverse文字顺序
年终奖<span class="r">奖终年</span>
HTML注释截断
在敏感词中插入注释
验证验<!-- x -->证
零宽字符插入
插入不可见字符分割
身份证身<span style="display:none">_</span>份证
字体大小0隐藏
通过CSS隐藏干扰字符
银行卡银<span style="font-size:0">.</span>行卡


自动化Fuzz测试工具

4.3 Fuzz测试实战过程

第一轮:单一混淆技术测试

针对"年终奖"关键词,测试各种混淆:

结论:所有混淆技术都有效!邮件网关只检测明文,不解析HTML混淆。

第二轮:组合混淆测试

测试实际钓鱼场景的完整邮件:

测试结果

组合方式
投递结果
说明
全部明文
✗ 拦截
基线
仅CSS反转
✓ 成功
单一混淆有效
仅HTML实体
✓ 成功
单一混淆有效
混合混淆
✓ 成功
多种混淆叠加最佳
混合+注释
✓ 成功
可读性和绕过兼顾


第三轮:Multipart/Alternative测试

结论:添加纯文本版本可显著提升投递率!

测试对比

邮件格式
投递率
说明
纯HTML(混淆)
68%
部分网关仍拦截
HTML+TXT(TXT安全)
89%
显著提升!
HTML+TXT(两者都混淆)
72%
TXT也会被检测


最佳实践:纯文本使用安全词汇,HTML中进行混淆

第四轮:CID图片嵌入测试

为了进一步提升可信度,我测试了CID图片(邮件内嵌图片):

测试结果

CID图片不会被URL检测拦截

可以隐藏真实钓鱼链接

提升邮件可信度(看起来像官方邮件)

4.4 Fuzz成果总结

经过几天的持续测试,得出以下结论:

有效的HTML混淆技术

黄金组合方案

最终测试数据对比

0x05 最终解决方案:Gophish集成与模板优化

基于Fuzz测试的发现,我将混淆技术集成到Gophish平台中。

5.1 Gophish邮件生成改造

核心改动

我在gophishV4Modified/models/email_request.go中实现了Multipart/Alternative支持:

改造要点

1 引入html2text库:自动将HTML转换为纯文本

2 Multipart/Alternative结构

先设置text/plain(安全内容)

再添加text/html(混淆内容)

1 业务邮件头:添加X-PriorityImportance提升信任度

5.2 钓鱼邮件模板设计

基于Fuzz测试结果,我创建了新的钓鱼模板:

钓鱼模板.html(真实版本)

对应的纯文本版本(可选)

如果手动指定Text模板,使用安全词汇:

策略:纯文本完全干净,邮件网关检测纯文本时无异常;用户打开邮件时默认显示HTML(包含混淆的敏感内容)。

5.3 动态模板生成器(可选)

为了避免重复模板被机器学习识别,可以实现变体生成:

5.4 URL路由混淆增强

配合HTML混淆,我也优化了追踪链接:

5.5 最终方案架构

0x06 最终测试与成果

6.1 全量测试

应用所有绕过技术后,我189的测试邮箱终于进信了。



同时以此策略改了以下邮件标题换为行政通知不出现年终奖等内容,防止邮件title检测,发送了一份测试邮件到客户的企业邮箱:



第二天就收到了好消息:





我擦累终于完事了。

提供一个发送成功的EML信息以供fuzz。

AI分析如下:





开始大批量的进行安全测试:







0x07 后记

这次从0到1的绕过之旅,历时4天,最终完成这个需求。

随着AI技术的发展,邮件网关的检测能力会越来越强。下一步的研究方向可能包括:

利用合法平台(如Google Docs、OneDrive)进行跳转

转向SMS钓鱼(Smishing)等其他渠道

安全对抗是一场永无止境的竞赛。保持学习,持续创新。

附录

A. Gophish改造Checklist

B. 参考资源

Gophish官方资源

Gophish官方文档

Gophish GitHub仓库

Gophish二次开发与改造

Sprocket Security - Customizing Gophish - 详细介绍Gophish去指纹化改造方法

EvilGoPhish - Gophish与Evilginx3集成方案,支持MFA绕过

sneaky_gophish - Docker化的隐蔽Gophish部署方案

FreeBuf - Gophish钓鱼平台二次开发 - 二维码替换功能实现

CSDN - 基于Gophish的钓鱼渗透测试平台 - 平台化二次开发思路

Evilginx与MFA绕过

Evilginx2 官方GitHub - 高级中间人钓鱼框架

Evilginx3 文档 - 最新版本使用指南

outpost24 - Evilginx与Gophish组合使用 - 红队钓鱼基础设施搭建

邮件网关绕过技术

邮件头安全最佳实践 (RFC 5322)

Fuzzing技术概述 (OWASP)

社会工程学防御指南 (SANS)

红队钓鱼实战

Red Team Cafe - Phishing Infrastructure - 红队钓鱼基础设施搭建

HackenProof - Advanced Phishing Techniques - 高级钓鱼技术

腾讯安全 - 钓鱼演练工具Gophish部署 - 企业钓鱼演练实践

END


相关代码已开源至GitHub:https://github.com/25smoking/GophisModified