前段时间参加了一次攻防演练,其中有个需求,需要对员工进行钓鱼测试,于是就有了这篇文章。
一、 方案设计
经过一段时间的试坑,发现目标的邮件网关很强大,想用已有的公共邮箱再伪造发件人不可行,最终选择的方案是自建邮件服务器再配合钓鱼网站获取密码。
VPS服务商选择了vultr,虽然默认情况它也会封闭25端口,但提交工单说明自身情况就会帮你打开,这里需要提前准备,因为时差关系,差不多两个工作日才能走完工单流程。
域名方面直接去GoDaddy买了一个与目标近似的域名,目标域名为xxxx.com.cn,我买了一个xxxx.site,只用了十多块。
最终方案:
-
VPS:vultr
-
系统:Centos
-
钓鱼平台:gophish
-
域名:xxxx.site
-
邮件服务器:ewomail
-
话术:伪装成该公司技术中心人员,称公司邮箱进行维护,换了新地址,要求他们尽快登录并反馈问题
二、环境搭建
1. ewomail
VPS的镜像选择Centos,记得选择没有SELinux的版本:
这里要注意,Centos有个默认的防火墙需要关闭,否则无法正常访问后面的服务。
ewomail项目地址如下:
https://gitee.com/laowu5/EwoMail
下载好源码后进入EwoMail/install
目录,执行:
1./start.sh xxxx.site
安装时需要域名,提前选好买下。
在/etc/hosts
中添加解析:
1127.0.0.1 mail.xxxx.site smtp.xxxx.site imap.xxxx.site
之后就可以访问ewomail的管理后台了,地址:http://ip:8010
,默认账号密码为admin/ewomail123
,登录之后修改掉。
进来之后添加邮箱域名:
接着就可以添加邮箱了,这里根据钓鱼的话术来确定:
这里的guoming
就是搜集到的一名技术中心员工。
添加完毕后就可以去邮箱登录地址发件测试了:http://ip:8000
2. gophish
gophish项目地址如下:
https://github.com/gophish/gophish
选择对应的版本并下载,进入目录,config.json
是gophish的配置文件:
1{
2 "admin_server": {
3 "listen_url": "0.0.0.0:3333",
4 "use_tls": true,
5 "cert_path": "gophish_admin.crt",
6 "key_path": "gophish_admin.key"
7 },
8 "phish_server": {
9 "listen_url": "0.0.0.0:80",
10 "use_tls": false,
11 "cert_path": "example.crt",
12 "key_path": "example.key"
13 },
14 "db_name": "sqlite3",
15 "db_path": "gophish.db",
16 "migrations_prefix": "db/db_",
17 "contact_address": "",
18 "logging": {
19 "filename": "",
20 "level": ""
21 }
22}
admin_server
是管理入口,phish_server
是钓鱼网站回传数据的入口,后者最好跟要伪造的目标网站保持一致,迷惑性更强。
修改完毕后,执行./gophish
,第一次运行时会输出管理员用户admin的密码,登录后可以修改,访问地址是https://ip:3333/
:
gophish就搭建完成了。
3. 域名
GoDaddy的DNS解析对国内用户生效很慢,所以这里选择把DNS服务商换为国内的DNSPod:
A记录指向VPS的IP,三个CNAME都指向mail.xxx.site
4. 钓鱼网站
这里我用HTTrack把目标网站克隆了一份下来,但是又遇到一个问题就是gophish导入钓鱼网站模板时需要一个整体的HTML文件,最后囚了公司前端很久让他帮我弄好了。
要想让钓鱼网站发送的数据能被gophish接收到,只需要确保表单能正常提交即可,目标地址留空:
1<form action="" method="POST">
2 <input name="username" type="text" placeholder="username" />
3 <input name="password" type="password" placeholder="password" />
4 <input type="submit" value="Submit" />
5</form>
5. 发件准备
现在做发件前的准备,登录gophish,首先在Sending Profiles
中添加一个新的发送配置:
Username
和Password
与之前创建的邮箱账号保持一致。
随后来到Landing Pages
创建一个新的钓鱼网站模板:
最下面的Redirect to
可以让其输入数据后跳转到真正的邮箱登录页面,用户也只会以为自己刚刚输错了或者网站有点小问题。
接着在 Email Templates
处新建一个钓鱼邮件模板:
{{.URL}}
参数可以自动替换为钓鱼网站的URL,邮件模板可以使用HTML来达到更逼真的效果。
再来到Users & Groups
导入目标的邮件,就可以进入Campaigns
开始发件了:
Send Emails By
这个参数可以控制发件的频率,防止被邮件网关封禁,用法是:例如现在有100封邮件需要发,任务开始运行的时间是下午1:00,设置Send Emails By
为下午1:50,就代表在这段时间内发完100封,即每分钟两封。
三、效果
对方的邮件网关实在强大,我们发过去的邮件其实都进了垃圾箱,还被标注了疑似钓鱼邮件,但防呆不防傻,依然有人上钩:
四、总结
-
钓鱼邮件的限制太多,光邮件网关就足够头疼了,还是加微信发exe实在。
-
钓鱼的基础设施需要提前准备,因为这次演练总时长一周,但到了第四天才开始发送钓鱼邮件。
-
自动化才是王道。
-
请严格遵守网络安全法相关条例!此分享主要用于交流学习,若用于其他用途,一切后果自付。
-END-
如果本文对您有帮助,来个点赞、在看就是对我们莫大的鼓励。
推荐关注:
团队全员均持CISP-PTE(注册信息安全专业人员-渗透测试工程师)认证,积极参与着各类网络安全赛事并屡获佳绩,同时多次高水准的完成了国家级、省部级攻防演习活动以及相关重报工作,均得到甲方的一致青睐与肯定。
原文始发于微信公众号(弱口令安全实验室):记一次钓鱼邮件演练
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论