说明

  1. 主要分两步

    • 1是部署邮件服务器(已经有邮件服务器或者有相关的账号可以直接从第二步开始)
    • 2是部署钓鱼平台
  2. 为了安全、简单、方便,我比较喜欢用docker,所以下文能用docker的我都用docker了

邮件服务器:EwoMail

下载镜像

EwoMail开源企业邮件系统,先从docker pull下来

docker pull bestwu/ewomail

编写快速启动文件

创建docker-compose.yml文件并写入如下内容,需要给mail.dvwatest.xyz替换成自己的域名

mail:
  image: bestwu/ewomail
  hostname: mail.dvwatest.xyz
  container_name: ewomail
  restart: always
  ports:
    - "25:25"
    - "143:143"
    - "587:587"
    - "993:993"
    - "109:109"
    - "110:110"
    - "465:465"
    - "995:995"
    - "127.0.0.1:8002:80"
    - "8001:8080"
  volumes:
    - ./mysql:/ewomail/mysql/data
    - ./vmail:/ewomail/mail
    - ./rainloop:/ewomail/www/rainloop/data
    - ./ssl/certs/:/etc/ssl/certs/
    - ./ssl/private/:/etc/ssl/private/
    - ./ssl/dkim/:/ewomail/dkim/

可配置参数

  • MYSQL_ROOT_PASSWORD mysql数据库root密码,默认:mysql
  • MYSQL_MAIL_PASSWORD mysql数据库ewomail密码,默认:123456
  • URL 网站链接,后面不要加/线
  • WEBMAIL_URL 邮件系统链接,后面不要加/线
  • TITLE 用户邮统标题
  • COPYRIGHT 邮箱管理后台网站版权
  • ICP 邮箱管理后台网站备案号
  • LANGUAGE 语言选择,默认:zh_CN

启动镜像

docker-compose up -d

启动后就可以访问web页面了 http://ip:8001,用户名:admin,密码:ewomail123

登陆后如下图

image-20220524171025179

配置DNS

要想让域名指向过去,还需要配置一下DNS

主机记录 记录类型 解析线路 记录值 MX优先级 TTL值
@ TXT 默认 v=spf1 ip4:邮件服务器IP -all 600
dkim._domainkey TXT 默认 DKIM值 600
mail A 默认 邮件服务器IP 600
smtp CNAME 默认 mail.dvwatest.xyz 600
pop CNAME 默认 mail.dvwatest.xyz 600
imap CNAME 默认 mail.dvwatest.xyz 600
@ MX 默认 mail.dvwatest.xyz 1 600

DKIM值获取方法:

docker exec ewomail amavisd showkeys

然后需要对这个值进行整理,可使用网站:http://www.ewomail.com/list-20.html

等待10分钟左右测试是否设置正确:

docker exec ewomail amavisd testkeys

如果出现pass就说明正确

配置邮箱

现在一切都准备就绪了,只需要我们去http://ip:8001配置账号就行了(其他一般不用配置,可以浏览一遍检查一下)

系统设置:

image-20220524172833396

添加账号:

image-20220524172902573

特别注意⚠️

只通过上面的流程,会出现如下的问题

邮件发不出去

image-20220526105512696

原因是因为10024端口跑的服务主要用于ewomail中反垃圾反病毒作用,然而docker镜像中没有集成,所以会无法接收到邮件

解决办法:

注释/etc/postfix/main.cf中的(最前面加个#即可)

content_filter = smtp-amavis:[127.0.0.1]:10024

然后重启容器

docker restart ewomail

不能伪造From

可能会遇到如下的情况 Sender address rejected: not owned by user

image-20220526121830577

还是查看日志,发现在postfix/smtpd被拒绝了,解决方案如下:

进入docker容器,编辑/etc/postfix/main.cf文件

# 1. 找到smtpd_sender_login_maps,修改为
smtpd_sender_login_maps = mysql:/etc/postfix/mysql/mysql-sender-login-maps.cf,pcre:/etc/postfix/login_maps.pcre

# 2. 找到smtpd_recipient_restrictions,删除reject_unknown_sender_domain,这样就不会对发送的域进行验证了

然后创建/etc/postfix/login_maps.pcre文件,写入如下内容:

# 意思是允许用户[email protected](你自己的邮箱账户)的用户使用任意domain
/^(.*)$/ [email protected]

刷新配置

postmap /etc/postfix/login_maps.pcre
postfix reload

测试

可以直接用swaks工具来测试

swaks --to [email protected] --from [email protected] --header 'Subject:TEST' --body hello --server smtp.dvwatest.xyz -p 25 -au [email protected] -ap 设置的密码

image-20220526110251873

钓鱼平台:gophish

下载镜像

docker pull gophish/gophish

启动镜像

docker run -it -d --rm --name gophish -p 3333:3333 -p 8003:80 -p 8004:8080 gophish/gophish

登陆系统

https访问3333端口

用户名为admin,密码第一次登陆为随机密码,通过查看日志获取

docker logs gophish

image-20220526111509823

登陆即可

image-20220526112733054

使用

使用暂时我觉得还是没必要说,点点点就会了

效果

image-20220527101642888

特别注意⚠️

捕获不到提交的数据

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

2)导入的前端源码,必须存在严格存在结构

<form method="post" ···><input name="aaa" ··· /> ··· <input type="submit" ··· /></form>

即表单(POST方式)— Input标签(具有name属性)Input标签(submit类型)— 表单闭合的结构,如果不满足则无法捕获到提交的数据

3)在满足第2点的结构的情况下,还需要求<form method="post" ···>在浏览器解析渲染后(即预览情况下)不能包含action属性,或者action属性的值为空。否则将会把表单数据提交给action指定的页面,而导致无法被捕获到.

捕获数据不齐全

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

密码被加密

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

Copyright © d4m1ts 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-09-13 11:25:56

results matching ""

    No results matching ""