收到了邮件伪造相关的漏洞,记录下学到的知识
通信过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| C: telent SMTP.163.com 25 //以telenet方式连接163邮件服务器 S: 220 163.com Anti-spam GT for Coremail System //220为响应数字,其后的为欢迎信息 C: HELO SMTP.163.com //除了HELO所具有的功能外,EHLO主要用来查询服务器支持的扩充功能 S: 250-mail S: 250-AUTH LOGIN PLAIN S: 250-AUTH=LOGIN PLAIN S: 250 8BITMIME //最后一个响应数字应答码之后跟的是一个空格,而不是'-' C: AUTH LOGIN //请求认证 S: 334 dxNlcm5hbWU6 //服务器的响应——经过base64编码了的“Username”= C: Y29zdGFAYW1heGl0Lm5ldA== //发送经过BASE64编码了的用户名 S: 334 UGFzc3dvcmQ6 //经过BASE64编码了的"Password:"= C: MTk4MjIxNA== //客户端发送的经过BASE64编码了的密码 S: 235 auth successfully //认证成功 C: MAIL FROM: bripengandre@163.com //发送者邮箱 S: 250 … . //“…”代表省略了一些可读信息 C: RCPT TO: bripengandre@smail.hust.edu.cn //接收者邮箱 S: 250 … . // “…”代表省略了一些可读信息 C: DATA //请求发送数据 S: 354 Enter mail, end with "." on a line by itself C: Enjoy Protocol Studing C: . S: 250 Message sent C: QUIT //退出连接 S: 221 Bye
|
一些知识点
1) 邮件服务商之间转发邮件是不需要认证的,也就是说MTA 到MTA之间转发邮件是不需要认证的,这是SMTP协议本身定义的。 所以协议钓鱼邮件就可以伪称来自某某MTA发送钓鱼邮件;
2) 互联网上有一些邮件域名没有配置SPF记录 或者SPF记录值设置不当,就会被用作伪造邮件的mail_from 后缀域名;
比如88mmmoney.com
3) 我们平常必须登录才能发送邮件(一般用的发邮件工具称作MUA,比如foxmail等),这是因为邮件服务商人为要求的,这不是SMTP协议本身要求的,SMTP协议本身是不需要身份认证的
4) mail_from 和from 的区别
mail_from: 是信封上的发件人,由[前缀@域名]组成,是实际发件人
from: 信封内容里的发件人。 也就是我们平时收到邮件所看到的发件人,称为:显示发件人
如果mail_from (实际发件人) 和 from (宣称的发件人) 不一致,则收到的邮件会显示 本邮件由<实际发件人>代发, 以提醒收件人两者的不同。
关于防止垃圾邮件的两种技术
SPF
DKIM
伪造工具
swaks: https://github.com/jetmore/swaks
参考 https://www.freebuf.com/articles/web/138764.html