【钓鱼邮件!】一枚合格的鱼饵是什么味道【上】环境+钓鱼服务器搭建+邮件隐蔽性与可信

0x00 物理环境准备

准备

  • 服务器(需开启25端口)

  • 纯净Centos7/8系统

  • 可以设置 PTR Records

  • 内存大于 1 GB

  • Ewomail最低配置要求:
    CPU:1核
    内存:2G
    硬盘:40G
    带宽:1-3M

在国内,服务器提供商有的限制25端口,有的禁止25端口,大多都不允许自建提供于公网的邮件服务器;PTR 的设置需要提供商设置,有的需要付费,有的禁止。

主要使用 GoPhish开源网络钓鱼系统+EwoMail开源邮件服务器。

其中 GoPhish 可以使用 docker 安装,EwoMail 需要通过 git 下载安装

Gophish可以考虑选择国内的服务器,因为国外发送的邮件很有可能给邮件网关拦截或者到垃圾邮件。当然也有不同的情况,你可以做好两手准备。

注意:对于腾讯云来说,访问 https://console.cloud.tencent.com/secctrl/smtp 通过下面的操作可以解封 25 端口。但是只有(包年包月)云服务器 CVM 才可以解封。

域名提供商和域名的选择

全球有数不清的域名提供商,其中比较出名的是 Godaddy、Enom、TuCows。国内的域名注册用 Whois 查询可能可以获取到注册人的信息,但使用 Godaddy 可以不用担心这个。

域名的选择可以参考这个 https://www.maigoo.com/top/428603.html。其中 .com 、.cn、.us比较常见,这些TLDs 顶级域名可信度较高。如果你选择使用类似于 .space 的域名,会碰到这种情况。

为了增加迷惑性,选择域名时可以选择与目标相关的域名:

  • 目标类似域名(利用特殊相似字符替换某个字母)如:(ba1du.com

  • 功能性域名如:人力资源部门(hrbp.com

邮件服务器

配置域名

配置A记录解析到服务器的IP,配置MX记录解析到域名

其余配置是为了增加可信度,稍后解释

关闭selinux

vi /etc/sysconfig/selinux

SELINUX=enforcing 改为 SELINUX=disabled

检查swap

如果没启动swap,这会导致EwoMail的防病毒组件不能启动,所以在安装前先检查swap是否已经启动,如已启动可跳过该步骤。

查看swap

free -m

如果swap位置都显示是0,那么系统还没创建swap

0x01 钓鱼平台搭建

一键安装Ewomail

git安装 (centos7/8)

gitee安装(centos7/8) 安装方式(一)

gitee 项目地址 https://gitee.com/laowu5/EwoMail

yum -y install git
cd /root
git clone https://gitee.com/laowu5/EwoMail.git
cd /root/EwoMail/install 
#需要输入一个邮箱域名,不需要前缀,列如下面的ewomail.cn 
sh ./start.sh ewomail.cn

国外网络 请在安装域名后面加空格加en,例如 sh ./start.sh ewomail.cn en

github安装 国外 (centos7/8)安装方式(二)

github 项目地址 https://github.com/gyxuehu/EwoMail

yum -y install git
cd /root
git clone https://github.com/gyxuehu/EwoMail.git
cd /root/EwoMail/install
#需要输入一个邮箱域名,不需要前缀,列如下面的ewomail.cn,域名后面要加空格加en 
sh ./start.sh ewomail.cn en

国外网络 请在安装域名后面加空格加en,例如 sh ./start.sh ewomail.cn en

PS

如果使用购买的域名:

sh ./start.sh 你购买的域名

如果遇到:

解决办法:

wget http://mirror.ox.ac.uk/sites/mirror.centos.org/7/os/x86_64/Packages/libjpeg-turbo-1.2.90-8.el7.x86_64.rpm
yum install libjpeg-turbo-1.2.90-8.el7.x86_64.rpm

测试发件

进入服务器8010端口的ewomail后台页面

账号 admin 密码 ewomail123

首先修改默认的管理员密码

然后到邮箱列表中添加一个用于发件的邮箱

邮箱的域名直接使用自己注册的域名即可,当然也可以再创建一个新邮箱域名,然后再添加邮箱。

发件成功

搭建 GoPhish 网络钓鱼系统

安装

可以使用另一台服务器,国内的或国外的都可。

Gophers Github项目地址:https://github.com/gophish/gophish

因为Gophish 的 Linux 安装最适合的发行系统是 Ubuntu ,但我们这里是 Centos 系统,所以我们这里选择使用 docker 进行安装 GoPhish。

yum install docker -y
systemctl start docker
docker pull gophish/gophish
docker run -it -d --rm --name gophish -p 3333:3333 -p 8003:80 -p 8004:8080 gophish/gophish
docker logs gophish(查看安装日志中的登录密码)

后台页面为 https://ip:3333,首次进入后台可修改管理员密码

docker 语句中的 -p 3333:3333 -p 8003:80 -p 8004:8080 为容器映射端口,其中 3333 是 Gophish 的后台访问端口,8003 是伪造的页面地址,。我们可以随意更换映射的端口,例如 -p 13222:3333 -p 25530:80 -p 12430:8080 更改之后我们可以使用 http://IP:13222 来访问 Gophish 后台。这里先按照上面给出的命令进行按照。

如果无法直接访问 3333 端口,请使用 https。

这里的账号是 admin 密码是创建服务时生成的,通过 docker logs gophish命令可以看到密码。

第一次登录需要修改密码。

后台的左侧栏示意。

创建邮箱发送服务配置

进入后台后找到 Sending Profiles

各字段解释:

  • Name 随意填写,为Profile的名称

  • From 别名,为邮件的发送人,这里的格式为 名字<邮件地址>,名字可以任意填写,但邮箱地址必须和下面的Username一致。

  • Host smtp服务地址,因为我们没有做域名解析,所以直接填写 IP地址:25 即可。

  • Username和Password 为上面创建的邮箱用户。

重要性标识

三个发件Header配置,让邮件变醒目。

Importance High
X-MSMail-Priority High
X-Priority 1(Highest)

通过增加这些标识后,在邮件客户端会给该邮件带上重要标识,表现如下:

测试发件

这里可以使用 Send Test Email 来测试是否能发送邮件。在第三个 input 填入收件人邮箱,点击 Send。

测试发送成功

在收件人的邮箱可以看到发送成功。

ps

不知道为什么使用别名会报错,没找到解决办法:

在Email Templates中可以修改

创建邮件内容模板

这里可以使用 GoPhish 的邮件模板导入功能。

去QQ邮箱随意点开一封邮件,例如下面。

点开右上角的更多选项,找到显示邮件原文。

全选显示出来的内容并复制。

点击import mail按钮

粘贴内容并点击导入。这里的 Change Links to Point to Landing Page 意思是将邮件内的链接替换成显示钓鱼页面的地址。因为你还没设置,所以使用 {{.URL}} 暂填代替。

导入后点击 Source 就可以看到邮件内的所有链接替换成了 {{.URL}}。

旁边的小图标,点击之后可以进行预览。可以拿来发现问题。

确认无误后点击保存,这里的 Add Tracking Image 的作用是在你的邮件内添加一张看不到的图片,用来判断是受害者是否点击了该邮件,用来统计数据使用。

ps: outlook 禁止图片加载,可能会影响数据读取。

创建钓鱼页面

在左侧栏找到 Landing Pages,点击新建页面。

这里系统自带的 importsite 可以直接输入要 copy 的网站地址,但是这种方法我尝试了一些网站,有许多网站都不能完美 copy ,这里我介绍一种方法,使用火狐带的插件 Save Page WE 可以完美把网页给 copy 下来,然后把 copy 下的页面源码贴在 HTML 的位置就行了,这里我随便找个后台演示下。

火狐插件 Save Page WE下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/save-page-we/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search

安装好插件,访问后台页面,右上角点击插件图标即可下载后台页面 html。

将下载好的 html 拖入任意编辑器,使用编辑器搜索 <form

将 form 标签内的属性只保留两个。action 必须为空。

然后全选代码复制到 HTML 文本框内,同时你可以使用 Source 旁边的小图标进行预览。下面的两个选项必须勾选才能记录到数据,第三步的跳转页面可以不进行设置,但最好是跳到真实页面。

注意:通常,进行钓鱼的目的往往是捕获受害用户的用户名及密码,因此,在点击Save Page之前,记得一定要勾选 Capture Submitted Data 。

当勾选了 Capture Submitted Data 后,页面会多出一个 Capture Passwords 的选项,显然是捕获密码。通常,可以选择勾选上以验证账号的可用性。如果仅仅是测试并统计受害用户是否提交数据而不泄露账号隐私,则可以不用勾选。

另外,当勾选了Capture Submitted Data后,页面还会多出一个Redirect to,其作用是当受害用户点击提交表单后,将页面重定向到指定的URL。可以填写被伪造网站的URL,营造出一种受害用户第一次填写账号密码填错的感觉。

一般来说,当一个登录页面提交的表单数据与数据库中不一致时,登录页面的URL会被添加上一个出错参数,以提示用户账号或密码出错,所以在Redirect to中,最好填写带出错参数的URL,或着跳到错误页面

添加受害人邮箱发送组

在左侧栏找到 Users & Groups 点击添加组

发送钓鱼邮件测试

在左侧栏找到Campaigns,点击新建,这里表单里面的 URL 就是填充到上面第二部邮件内容里面的 {{.URL}} 处。这里 Gophis 默认起的服务是 80 端口,通过 docker 映射到了 8003 端口,所以这里填入 http://IP:8003。点击完成,就会给受害者的邮箱发送钓鱼邮件了。

点击发送

点击发送后,可以在受害者邮箱内看到邮件信息。

里有个图片没用被加载,所以我们没法从 Gophis 的控制台看到统计。

就算点击“显示图片”也不会加载

点击下面的链接可以看到会跳转到我们指定的URL地址。

点击继续访问就是我们仿冒的网站后台页面。

在gophish控制台中可以看见邮件被打开且链接被点击

在钓鱼页面我们任意输入内容并提交后,理论上就会跳转到我们第三步填写的 Redirect to 里面的地址。

错误钓鱼页面

但没有抓到数据,参考网上资料可能有以下原因:

【捕获不到提交的数据】

导入后要在HTML编辑框的非Source模式下观察源码解析情况,如果明显发现存在许多地方未加载,则有可能导入的源码并非页面完全加载后的前端代码,而是一个半成品,需要通过浏览器二次解析,渲染未加载的DOM。这种情况下,除非能够直接爬取页面完全加载后的前端代码,否则无法利用gophish进行钓鱼,造成的原因是不满足第2点。

【捕获不到提交的数据】

导入的前端源码,必须存在严格存在<form method="post" ···><input name="aaa" ··· /> ··· <input type="submit" ··· /></form>结构,即表单(POST方式)— Input标签(具有name属性)Input标签(submit类型)— 表单闭合的结构,如果不满足则无法捕获到提交的数据 。

【捕获不到提交的数据】

在满足第2点的结构的情况下,还需要求<form method="post" ···>在浏览器解析渲染后(即预览情况下)不能包含action属性,或者action属性的值为空。

否则将会把表单数据提交给action指定的页面,而导致无法被捕获到 。

【捕获数据不齐全】

对于需要被捕获的表单数据,除了input标签需要被包含在中,还需满足该存在name属性。例如<input name="username">,否则会因为没有字段名而导致value被忽略 。

【密码被加密】

针对https页面的import,通常密码会进行加密处理,这时需要通过审计导入的前端代码,找到加密的Java函数(多数情况存在于单独的js文件中,通过src引入),将其在gophish的HTML编辑框中删除,阻止表单数据被加密 。

钓鱼邮箱其他用法

不一定是发送邮件然后让受害者进入我们准备好的界面,这个链接也可以是问卷星收集信息,也可以是被我们插入恶意存储XSS的网页。甚至你可以放入捆绑木马,恶意Office,ZIP + Link 钓鱼,Office里面放恶意仿冒钓鱼链接等,具体看技战法。

0x02 邮件可信与隐蔽性

设置身份验证

通过身份验证的邮件:

  • 有助于为收件人防范钓鱼式攻击邮件等恶意电子邮件。

  • 不容易被 Gmail 拒收或标记为垃圾邮件。

邮件必须通过 SPF 或 DKIM 检查,才能通过身份验证。要通过 DMARC 检查,邮件必须先通过 SPF 或 DKIM 身份验证,而且身份验证网域必须与邮件的 From: 标头中的网域相同。

参考:https://blog.csdn.net/weixin_26722031/article/details/108136360

设置 SPF 记录

SPF 记录是为了防止垃圾邮件而设定的,告知收件方,从设置的允许列表中发出的邮件都是合法的,设置方式为添加一条根域名的 TXT 解析记录

内容为 v=spf1 mx ~all

~all 前缀代表软拒绝,对接收方来说,遇到有软拒绝的域名没有通过SPF校验,通常采取的策略是放行或者标记为垃圾邮件。

检测方式:nslookup -type=txt mydomain.com

设置 A 记录

mail.mydomain.com 的 A 记录指向你的服务器(邮件服务器)IPv4地址

检测方式:nslookup mail.mydomain.com

设置 AAAA 记录

mail.mydomain.com 的 AAAA 记录指向你的服务器(邮件服务器)IPv6地址

检测方式:nslookup mail.mydomain.com

设置 MX 记录

MX 记录就是邮件的解析记录,非常重要的一条记录,配置根域名的 MX 记录为自己的邮件域名地址,优先级为 10

检测方式:nslookup -type=mx mydomain.com

设置 DMARC 记录

DMARC 记录是当收件方检测到伪造邮件等行为时,将根据您的配置进行操作的一个记录,比如拒绝邮件或放入垃圾邮件以及不做处理等,同时会反馈一份检测报告到配置的邮箱地址内。

添加方法就是增加一条 _dmarc 的 TXT 解析,内容为配置选项,v=DMARC1; p=none; pct=100; rua=mailto:dmarc@mydomain.com

检测方式:nslookup -type=txt _dmarc.mydomain.com

在检测中可能会遇到 DMARC 政策不够严格,我们可以设置成 p=quarantine 或者 p=reject,分别是隔离和拒绝政策,我们可以直接设置成 v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@mydomain.com

启用并设置 DNSSEC

域名系统安全扩展(DNS Security Extensions,简称DNSSEC)是用于确定源域名可靠性的数字签名 ,通过在域名中添加DNSSEC记录,可以增强对DNS域名服务器的身份认证,有效防止DNS缓存污染等攻击。

使用cloudflare,到域名管理控制台左侧栏找到 DNS 中的 Settings,进入 DNS 设置页面启用 DNSSEC。

到域名注册商设置 DS 记录

设置 DKIM 记录 【**】

DKIM 可说是避免被判定为垃圾邮件的一大利器,DKIM 属于一种类似加密签名的解析记录,只有包含此加密数据,且公钥与密钥相匹配才属于合法邮件,要设置 DKIM 记录,首先要查询 DKIM 信息。

参考:https://github.com/internetstandards/toolbox-wiki/blob/main/DKIM-how-to.md

Amavisd 查询

如果你的邮件服务器使用的是类似 EwoMail 或者 iRedMail 等大型邮件服务器就可以使用这个方法。

查询 DKIM 可以使用系统命令

amavisd showkeys OR
amavisd -c /etc/amavisd/amavisd.conf showkeys

如果不存在 amavisd 可以使用命令安装 yum --enablerepo=rpmforge,rpmforge-extras install amavisd-new -y

复制输出的信息,打开http://ewomail.com/list-20.html 整理dkim信息

设置DKIM记录

添加新域名的DKIM记录

设置 PTR 反向解析 【**】

反向域名解析纪录(RDNS)就是和正向的DNS解析相反的一种反向解析,正向DNS解析把域名解析成IP地址,RDNS恰恰相反,就是反过来把 IP 解析成域名。反向域名格式如:X.X.X.in-addr.arpa。可逆 DNS(RDNS)的原理和 DNS 解析是完全相同的。

RDNS解析系统是如何反垃圾邮件的

比如用xxx@name.com这个邮箱给xxx@qq.com发一封信,qq邮件服务器接到这封信会查看这封信的信头文件,这封信的信头文件会显示这封信是由哪个IP地址发出来的。然后根据这个IP地址进行反向解析,如果反向解析到这个IP对应的[域名]是name.com发一封信,qq邮件服务器接到这封信会查看这封信的信头文件,这封信的信头文件会显示这封信是由哪个IP地址发出来的。然后根据这个IP地址进行反向解析,如果反向解析到这个IP对应的[域名]是name.com就接收这封邮件,如果反向解析这个IP没有对应到name.com,那么就拒绝这封邮件。

参考PTR 拦截垃圾邮件是如何运作的:https://www.800188.com/index.php/home/reference-news/86-technology/2044-rdns-3?tmpl=component&print=1

联系客服修改

在设置解析的域名,我们需要填写 mail.mydomain.com 而不是 mydomain.com

检测方式:nslookup IP

检查效果

使用网站https://www.mail-tester.com/ 进行测试,向测试邮箱发送邮件后会输出当前邮箱的可信度评分

一天只能免费测试三封邮件,注意把控次数。

扣分比较多是因为域名买了个最便宜的.top域名,如0x00中所说域名的选择可以参考这个 https://www.maigoo.com/top/428603.html。其中 .com 、.cn、.us比较常见,这些TLDs 顶级域名可信度较高。如果你选择使用类似于 .space 的域名,会碰到这种情况。

申请并设置 TLS/SSL 证书

加密邮件的方式有 S/MIME 增强型加密 和 TLS/SSL - 标准加密 两种,因为 S/MIME 比较繁琐,我们选择使用 TLS,即使用 TLS/SSL 自签证书加密。

Acme 脚本申请证书

Acme 脚本申请证书,是我们用到的最常见的一种证书的申请方式,它有很多的申请方法,大家只需要找到一种适合自己的也就好了。

安装 Acme 脚本

curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --register-account -m ca@mydomain.com

其中 ca@mydomain.com,ca 可以任意变更。

增加隐蔽性-设置postfix

正常未做修改时,通过gophish发送的邮件会记录下gophish的服务器地址ip,这是由于邮件服务postfix生成的邮件头带有了客户端发送者的ip,通过修改postfix的配置可以将该信息给隐藏。

未修改的效果:

修改方法:https://www.huiyingwu.com/3759/

修改后的效果:

增加隐蔽性-设置CDN

除此以外,还有例如cloudflare提供的CDN服务用于真实IP,但我尝试之后在ewomail会提示域不允许,还未找到原因,利用官网修改建议也无效。

0x03 参考

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值