热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxsmtpip伪造,邮箱伪造之搭建匿名SMTP服务器

电子邮件欺骗(emailspoofing)的根本原因是SMTP协议是不需要身份验证的,攻击者可以利用这个特性伪造电子邮件头,从任意电子邮件地址发送任何人

电子邮件欺骗(email spoofing)的根本原因是SMTP协议是不需要身份验证的,攻击者可以利用这个特性伪造电子邮件头,从任意电子邮件地址发送任何人,导致信息看起来来源于某个人或某个地方,而实际却不是真实的源地址。

如果要实现邮箱伪造发件人地址,首先,我们需要一个可以用来发送邮件的SMTP服务器。在这里,我们将介绍如何搭建一个匿名SMTP服务器。

0x01 在线邮件伪造

我们先来使用一个在线伪造邮件地址发送Email邮件的服务,来做一些简单的测试。

查看SPF配置情况:

nslookup -type=txt qq.com

Emkei’s Fake Mailer:https://emkei.cz/

f954861ac95dde55357f213cd7cc86e5.png

1、test.com未配置SPF,伪造发件人邮件为admin@test.com,发送邮件,QQ邮箱成功接收到邮件:

737339811b3ae227889a510b41dcfb8b.png

2、某个域名xxx.net 配置了SPF,伪造admin@xxx.net发送邮件,邮件进入垃圾箱。

107676dba0eeb440a1fce3a0a02bf67a.png

通过以上测试,我们可以得到一个简单的结论,QQ邮箱在接收到邮件时,会检查域名的SPF记录,未配置SPF的域名,邮箱容易被伪造并成功投递到目标邮箱;已经配置了SPF的域名,检验后会被投递到垃圾箱。

其实可以发现,这个在线邮件伪造emkei.cz,通过查看邮件头,可知它是用postfix搭建。那么,我们也可以使用postfix搭建匿名SMTP邮件服务器,以便更灵活地去伪造邮箱任意字段。

0x02 搭建匿名SMTP服务器

使用postfix搭建匿名SMTP服务器

环境:CentOS7

1、安装postfix

#安装postfixyum install postfix

2、修改main.cf配置文件

vi /etc/postfix/main.cf# 75行:设置myhostnamemyhostname = mail.test.com# 83行: 设置域名mydomain = test.com# 99行: 设置myoriginmyorigin = $mydomain# 116行: 默认是localhost,修改成allinet_interfaces = all# 119行: 推荐ipv4,如果支持ipv6,则可以为allinet_protocols = ipv4# 165行: 设置mydestinatiOnmydestination= $myhostname, localhost.$mydomain, localhost, $mydomain# 264行: 指定内网和本地的IP地址范围mynetworks = 192.168.0.0/16,127.0.0.0/8# 419行: 取消注释,邮件保存目录home_mailbox = Maildir/# 572行: 取消注释,设置banner。smtpd_banner = $myhostname ESMTP

3、启动postfix服务

systemctl start postfix#关闭防火墙systemctl stop firewalld.service

4、测试邮件搭建成功的几种方式:

第一种:使用mail发送邮件

#安装mailxyum install mailx#发送邮件测试echo "email content" | mail -s "title" a*****t@163.com

a364480d5d04e949840988e95157763b.png

查看邮件发送记录:

tail -f /var/log/maillogApr 28 09:27:14 centos postfix/smtpd[108012]: connect from localhost[127.0.0.1]Apr 28 09:27:15 centos postfix/smtpd[108012]: 0170D403916: client=localhost[127.0.0.1]Apr 28 09:27:15 centos postfix/cleanup[108015]: 0170D403916: message-id=<20200428012715.0170D403916@mail.abc.com>Apr 28 09:27:15 centos postfix/qmgr[39469]: 0170D403916: from=, size=716, nrcpt=1 (queue active)Apr 28 09:27:15 centos postfix/smtpd[108012]: disconnect from localhost[127.0.0.1]Apr 28 09:27:15 centos postfix/smtp[108016]: connect to mx3.qq.com[240e:ff:f101:10::127]:25: Network is unreachableApr 28 09:27:16 centos postfix/smtp[108016]: 0170D403916: to=, relay=mx3.qq.com[58.251.110.111]:25, delay=1.5, delays=0.03/0.03/0.37/1, dsn=2.0.0, status=sent (250 Ok: queued as )Apr 28 09:27:16 centos postfix/qmgr[39469]: 0170D403916: removed

从邮件日志看到status=sent,确认邮件发送成功。

第二种:通过telnet使用smtp协议发送邮件

telnet localhost 25

ebf18b544533e66b99cb3ca2128ed463.png

测试邮箱成功接收到邮件

c4bc47218e08e1b40a4852225f043865.png

第三种:使用Python脚本发送邮件

#!/usr/bin/python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = &#39;admin@test.com&#39;receivers = [&#39;a*****t@163.com&#39;]message = MIMEText(&#39;Just for test&#39;, &#39;plain&#39;, &#39;utf-8&#39;)message[&#39;From&#39;] = Header("admin") # 发送者message[&#39;To&#39;] = Header("test") # 接收者subject = &#39;SMTP 邮件测试&#39;message[&#39;Subject&#39;] = Header(subject, &#39;utf-8&#39;)try:smtpObj = smtplib.SMTP(&#39;localhost&#39;)smtpObj.sendmail(sender, receivers, message.as_string())print "邮件发送成功"except smtplib.SMTPException:print "Error: 无法发送邮件"

使用第三方邮件服务器,往往会受限于SMTP服务商的限制,但也有一定的好处,这些权威的邮件服务商的地址往往会被大部分邮件服务商加入白名单。

国内主流的邮箱有:QQ邮箱(qq和foxmail)、网易邮箱(包括163、126和yeah邮箱)、新浪邮箱、搜狐闪电邮箱、移动139邮箱、电信189邮箱等等。

国外的第三方SMTP服务商:SendGrid、mailgun等

不同的邮箱系统,接收邮件安全策略是不同;不同的SMTP服务商,发送邮件的限制也是不一样,具体会发生什么样的化学作用,还需具体进一步去测试。



推荐阅读
  • Mysql + keepalive高可用搭建
    Mysql+keepalive高可用搭建系统环境:centos6.8Ip:192.168.137.36主库192.168.137.38从库VIP(虚拟ip浮动ip):192.168.13 ... [详细]
  • 截图html通过seleniun的webdriver打开html文件并截图1importos2importshutil3fromseleniumimportwebdriver4im ... [详细]
  • 群发邮件_python自动群发邮件
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python---自动群发邮件相关的知识,希望对你有一定的参考价值。生活中我们经常发送邮件,那么我们能不能用Python ... [详细]
  • 极客开源-如何使用Java来发送一封带附件的电子邮件?刚接触Java不久的小伙伴们是否有被如何使用Java来发送一封带附件的电子邮件而困扰?别担心,极客开 ... [详细]
  • hadoop完全分布式搭建
    原文链接:hadoop完全分布式搭建主机分配以及地址要求:角色主机名IP地址Namenodemaster192.168.222.201Datanodeslave ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • 邮件服务在网络里的角色是越来越重要,不管是因特网上还是在局域网内部,用户都习惯使用电子邮件来处理日常的工作。而越来越多的企业和单位,也都急切希望能拥有自己的内部邮件服务器,以加强员 ... [详细]
  • OSI七层模型、TCP/IP五层模型
    OSI网络互连的七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;应用层OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,为用户直接提供各种网 ... [详细]
  • **步骤1:在DNS服务器的基础上,修改DNS的正向数据库文件varnamedchrootvarnamedtext.com.zone,添加MX资源记录。具体操作如下。** ... [详细]
  • 伟大的职位,总是不经意之间就出来了,要找好多人呀~~~~~WirelessLightRadioApplicationSoftwareEngineerLocat ... [详细]
  •   ... [详细]
  • 我目前正在努力解决与Scrapy有关的问题.每当我使用Scrapy刮取证书的CN值与服务器域名匹配的HTTPS站点时,Scrapy效果很好!另一方面,每当我尝试抓取证书的CN值与服务器的域名不匹 ... [详细]
  • C#使用System.Net.Mail类实现邮件发送【.Net开发】
    这篇文章介绍了C#使用System.Net.Mail类实现邮件发送的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值, ... [详细]
  • Proof (of knowledge) of exponentiation
    1.ProofofexponentiationProofofexponentiation是基于adaptiverootassumption(充分必要条件࿰ ... [详细]
author-avatar
雪中磐石
人生只有走出来的美丽,没有等出来的辉煌。
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有