红队笔记:钓鱼攻击技术详解
1. 邮件基础与钓鱼攻击概述
1.1 当前攻击环节的思维框架
在当前攻击阶段需要思考为什么被逼到只能使用钓鱼的方法
基于已获得的进度,为什么能够钓鱼以及哪些技术因素可能会终止或影响钓鱼过程
需要思考各种工具的使用场景,以及在什么情况下某些工具会变得无法使用
要结合靶场环境进行思考,了解哪一步该终止,哪一步能继续前进
对于遇到的限制(如邮件发送服务器的限制),需要评估其对钓鱼过程的影响
1.2 Swaks(Swiss Army Knife for SMTP)工具介绍
Swaks是一个开源的邮件发送工具,不是专为钓鱼设计,而是为发送邮件设计的
可以理解为邮件底层实现的雏形,大型邮件服务器底层逻辑与之类似
是一个标准的生产力工具,支持多种协议和安全机制:
支持多种协议
支持安全传输层(TLS)
支持验证机制
工具具有高度灵活性,允许操作邮件的各个字段
能够显示与SMTP服务器交互的详细信息,便于诊断邮件发送过程
严格遵循国际标准RFC邮件规范
1.3 邮件结构与关键字段
邮件由多个字段组成,理解这些字段对钓鱼攻击至关重要:
核心字段:
To: 收件人地址From: 发件人地址Body: 邮件正文内容Subject: 邮件主题Header: 邮件头信息(可以有多个header字段)
重要头部信息:
X-Mailer: 邮件客户端标识,指定由哪个客户端/品牌发送的邮件Message-ID: 邮件的唯一标识符,通常包含发送方的域名信息
为什么头部信息重要:
安全性高的邮件系统会检查这些头部信息
如果缺少这些信息或信息不符合预期,邮件可能会被直接标记为垃圾邮件
例如,如果Message-ID显示为"@kali",会暴露邮件是从Kali Linux发送的
2. Swaks工具的实际应用
2.1 基本命令格式与参数
Swaks工具的基本命令格式及常用参数:
swaks --to 收件人 --from 发件人 --server SMTP服务器 [选项]主要参数:
--to: 指定收件人地址--from: 指定发件人地址--server: 指定SMTP服务器(不指定时会自动查找)--port: 指定端口号(默认25,TLS通常为587,SSL为465)--auth: 认证方式--auth-user: 认证用户名--auth-password: 认证密码--header: 自定义头部信息--body: 邮件正文内容--data: 指定邮件的data部分--attach: 添加附件--tls: 启用TLS连接
2.2 具体应用示例
实际邮件发送示例:
swaks --from service@xiaomi.com --to recipient@example.com --header "Subject: Please Update Your Password" --body "Writing notes" --header "X-Mailer: QQMail" --header "Message-ID: 20241019.939@example.com"此命令创建一封伪装成来自小米服务的邮件,主题是密码更新通知,并设置了自定义的X-Mailer和Message-ID头。
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# swaks --ehlo RedteamNotes --from "service@cloud.tencent.com" --to qbfo225@163.com --header "Subject: 请即刻修改你的密码" --header "X-Mailer: RedteamNotes" --header "Message-Id: 20240123" --header "Content-Type: text/html" --body '<!DOCTYPE html><html><head><title>欢迎来到红队行动Live</title><meta charset="UTF-8"></head><body><h3>欢迎来到红队行动Live</h3><p>学渗透的终极是红队,要学红队就要对自己狠一点。</p><footer><p>2024年10月19日晚</p></footer></body></html>'
=== Trying 163mx02.mxmail.netease.com:25...
=== Connected to 163mx02.mxmail.netease.com.
<- 220 163.com Anti-spam GT for Coremail System (163com[20141201])
-> EHLO RedteamNotes
<- 250-mail
<- 250-PIPELINING
<- 250-AUTH LOGIN PLAIN
<- 250-AUTH=LOGIN PLAIN
<- 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFs1DEUUCa0xDrUUUUj
<- 250-STARTTLS
<- 250-SIZE 73400320
<- 250 8BITMIME
-> MAIL FROM:<service@cloud.tencent.com>
<- 250 Mail OK
-> RCPT TO:<qbfo225@163.com>
<- 250 Mail OK
-> DATA
<- 354 End data with <CR><LF>.<CR><LF>
-> Date: Wed, 12 Mar 2025 03:29:50 -0400
-> To: qbfo225@163.com
-> From: service@cloud.tencent.com
-> Subject: 请即刻修改你的密码
-> Message-Id: 20240123
-> X-Mailer: RedteamNotes
-> Content-Type: text/html
->
-> <!DOCTYPE html><html><head><title>欢迎来到红队行动Live</title><meta charset="UTF-8"></head><body><h3>欢迎来到红队行动Live</h3><p>学渗透的终极是红队,要学红队就要对自己狠一点。</p><footer><p>2024年10月19日晚</p></footer></body></html>
->
->
-> .
<- 250 Mail OK queued as gzga-mx-mtada-g3-4,_____wDX7zvsN9FnXe5NAg--.38586S2 1741764589
-> QUIT
<- 221 Bye
=== Connection closed with remote host.
2.3 HTML内容与高级格式化
可以使用
--data参数指定完整的邮件内容,包括HTML格式内容类型使用
Content-Type: text/html; charset=utf-8指定示例:
swaks --to recipient@example.com --from sender@example.com --data "Content-Type: text/html; charset=utf-8
<html>
<body>
<h1>Important Notice</h1>
<p>Please click <a href='http://malicious-link.com'>here</a> to update your information.</p>
</body>
</html>"2.4 测试与调试功能
Swaks提供了多种测试和调试功能:
测试SMTP服务器延迟
测试SMTP服务器垃圾过滤
显示连接的服务器信息
显示SMTP服务器的响应信息
2.5 SPF记录与实际测试
当从一个域发送邮件时,目标服务器会检查SPF记录以验证发送者身份
测试表明,某些服务器(如测试中的163.com)可能没有严格实施SPF检查
QQ邮件服务器会严格检查SPF,如果失败会拒绝接收邮件
进行钓鱼攻击前应了解目标域的SPF设置及邮件安全机制
3. 钓鱼攻击的关键考量
3.1 真实性和可信度
成功的钓鱼攻击需要确保:
邮件的视觉效果(如企业Logo、HTML格式)要逼真
邮件头信息要完整且可信
所有技术细节都要尽可能真实,以避免被自动过滤系统拦截
要模拟出一个正常人发送的正常邮件,不仅是视觉上的欺骗
3.2 绕过邮件安全机制
理解并绕过SPF(Sender Policy Framework)验证
设置正确的X-Mailer和Message-ID头信息
确保邮件不会因缺少关键头信息而被标记为垃圾邮件
发送前测试邮件格式,确保能够进入收件箱而非垃圾箱
3.3 安全和伦理考量
钓鱼攻击应仅用于安全测试和授权的渗透测试
不应针对个人进行钓鱼攻击,这属于欺诈行为
在进行安全测试时要获得适当授权
需谨慎管理测试用的邮箱账户,避免个人信息泄露
实战中应考虑法律风险和伦理问题
4. GoPhish钓鱼工具详解
4.1 GoPhish概述
GoPhish是一个开源的钓鱼工具包,适用于企业和渗透测试
支持快速设置和执行钓鱼活动及安全意识培训
工具已存在约十年,仍在不断更新
主要功能是钓鱼活动的项目化管理和整合
相比新的钓鱼技术有所局限,特别是在诱饵制作方面
4.2 GoPhish关键组件
4.2.1 仪表盘(Dashboard)
显示钓鱼活动的整体情况
跟踪邮件发送数量、打开率、点击率和数据提交率
提供图形化展示和统计功能
4.2.2 活动(Campaigns)
代表一个完整的钓鱼项目
包含活动名称、开始日期和时间
整合模板、登录页面和目标用户组
设置发送配置文件(Sending Profile)
可以启动、暂停和监控活动
4.2.3 用户和组(Users & Groups)
管理钓鱼目标用户信息
可以按组织结构或职位分组
支持CSV格式批量导入用户
记录每个用户的姓名、邮箱和职位等信息
4.2.4 邮件模板(Email Templates)
创建钓鱼邮件的外观和内容
支持纯文本或HTML格式
可以导入现有的EML格式邮件作为模板
有追踪功能,包括1x1像素的透明图片用于检测邮件是否被打开
支持添加附件和URL链接
可以自定义发件人信息
支持选择是否将所有链接替换为指向登录页面的链接
4.2.5 登录页面(Landing Pages)
创建用户点击钓鱼链接后将看到的网页
可以从现有网站导入或手动创建
支持捕获用户输入的数据(如凭据)
可以设置表单提交后的重定向页面
提供捕获用户凭据的功能,但有安全风险提示
4.2.6 发送配置(Sending Profiles)
配置用于发送钓鱼邮件的SMTP服务器
设置身份验证信息(用户名和密码)
支持自定义邮件头(如X-Mailer和Message-ID)
设置SMTP超时和TLS选项
可以使用不同配置进行测试
4.3 GoPhish使用流程
设置发送配置文件(SMTP服务器和认证)
创建或导入邮件模板
创建或导入登录页面
添加用户/用户组
创建钓鱼活动,整合以上组件
启动活动并监控结果
4.4 GoPhish关键注意事项
发送邮件前应先测试发送给自己,检查EML文件中的所有信息
特别关注默认的X-Mailer头,它可能暴露使用了GoPhish
谨慎处理真实凭据和个人信息
了解自定义头部对邮件投递成功率的影响
注意设置合适的模板和登录页面,以增加真实性
钓鱼链接的处理策略对成功率有重要影响
5. 高级钓鱼技术与注意事项
5.1 临时邮箱的使用与风险
临时邮箱可用于钓鱼活动,但不等同于匿名
即使是宣称"临时"的服务也可能记录IP地址和其他识别信息
如果用于攻击活动,服务提供商可能会配合执法机构
不应完全信任这些服务的匿名性承诺
5.2 基础设施的重要性
成功的红队行动依赖于良好的基础设施
包括安全的通信通道、匿名的操作环境等
需要考虑VPS、代理服务器等基础设施的安全配置
基础设施的搭建往往比技术本身更为关键
5.3 钓鱼邮件测试与检查
在正式发送前必须对邮件进行全面测试
检查EML文件中的所有元数据和头信息
验证是否有暴露自己身份或工具使用的信息
确认邮件能够成功通过垃圾邮件过滤
5.4 红队行动的伦理与法律
任何钓鱼活动都应获得适当授权
不应针对个人实施钓鱼攻击
应遵循行业最佳实践和伦理准则
了解相关法律法规,避免违法行为
5.5 现代钓鱼技术的发展趋势
传统钓鱼技术(如GoPhish)已相对基础化
现代钓鱼技术更注重绕过多因素认证
Model和Evilginx等工具代表了更先进的钓鱼方法
这些将在下一讲中详细介绍
6. 实用命令和参考资料
6.1 Swaks基本命令示例
# 基本邮件发送
swaks --to recipient@example.com --from sender@example.com --server smtp.example.com
# 带认证的邮件发送
swaks --to recipient@example.com --from sender@example.com --server smtp.example.com --port 587 --auth LOGIN --auth-user username --auth-password password
# 发送HTML内容邮件
swaks --to recipient@example.com --from sender@example.com --server smtp.example.com --body "<html><body><h1>Test</h1></body></html>" --header "Content-Type: text/html"
# 带附件的邮件
swaks --to recipient@example.com --from sender@example.com --attach file.pdf
# 自定义头部信息
swaks --to recipient@example.com --from sender@example.com --header "X-Mailer: Outlook" --header "Message-ID: 123456@example.com"
# 使用TLS加密
swaks --to recipient@example.com --from sender@example.com --tls6.2 SPF记录检查命令
# 使用dig命令检查SPF记录
dig +short TXT example.com
# 检查特定域名的SPF记录
dig +short TXT example.com | grep "v=spf1"6.3 有用的资源和文档
Swaks官方文档:包含所有参数和用法详解
GoPhish官方文档:https://docs.getgophish.com/
邮件安全标准(SPF, DKIM, DMARC)官方规范
RFC邮件标准文档:了解邮件协议的标准实现
7. 下一步学习内容预告
7.1 Model和Evilginx工具
将在下一讲中介绍这两个更现代化的钓鱼工具
这些工具能够实现更高级的钓鱼攻击,包括绕过双因素认证
基于反向代理原理实现的钓鱼方法
7.2 获取内网立足点
成功的钓鱼攻击之后如何获取和维持立足点
内网枚举和横向移动技术
信息收集和权限提升策略
7.3 后续攻击阶段
PowerShell专题
COS攻击专题
更复杂的网络渗透技术
总结要点
钓鱼攻击的本质:钓鱼不仅仅是视觉欺骗,还涉及复杂的技术细节和策略考量,需要综合考虑邮件格式、发送机制和目标环境。
工具的选择和使用:从基础的Swaks到项目化的GoPhish,选择合适的工具并理解其工作原理至关重要。
技术细节的重要性:邮件头信息、SPF记录、SMTP服务器配置等技术细节直接影响钓鱼攻击的成功率。
策略与伦理:钓鱼攻击应仅用于授权的安全测试,需遵循行业伦理准则和法律法规。
持续学习:红队技术不断发展,从传统的钓鱼方法到现代的高级技术,需要持续学习和实践。
基础设施建设:成功的红队行动依赖于良好的基础设施,包括安全的通信通道和匿名的操作环境。
测试与验证:任何钓鱼活动在实施前都需要充分测试,确保不会意外暴露自己。
-.-
评论区