社会工程学|centos下搭建邮件服务器
温馨提示:这篇文章已超过626天没有更新,请注意相关的内容是否还可用!
0x01 前言
现在hvv中钓鱼也不怎么让使用了,因为社工稍微不慎,就会反噬自身,现在从一封邮件的生老病死,看
社工中邮件攻击的一些技术点。
0x02邮件发送接收原理图
说到邮件钓鱼,不得不谈谈一封邮件的发送和接收
①、用户A的电子邮箱为:xx@qq.com,通过邮件客户端软件写好一封邮件,交到QQ的邮件服务
器,这一步使用的协议是SMTP,对应图示的①;
②、QQ邮箱会根据用户A发送的邮件进行解析,也就是根据收件地址判断是否是自己管辖的账户,
如果收件地址也是QQ邮箱,那么会直接存放到自己的存储空间。这里我们假设收件地址不是QQ邮箱,
而是163邮箱服务器 发邮件,那么QQ邮箱就会将邮件转发到163邮箱服务器,转发使用的协议也是SMTP,对应图示的
②;
③、163邮箱服务器接收到QQ邮箱转发过来的邮件,也会判断收件地址是否是自己,发现是自己的
账户,那么就会将QQ邮箱转发过来的邮件存放到自己的内部存储空间,对应图示的③;
④、用户A将邮件发送了之后,就会通知用户B去指定的邮箱收取邮件。用户B会通过邮件客户端软
件先向163邮箱服务器请求,要求收取自己的邮件,对应图示的④;
⑤、163邮箱服务器收到用户B的请求后,会从自己的存储空间中取出B未收取的邮件,对应图示
⑤;
⑥、163邮箱服务器取出用户B未收取的邮件后,将邮件发给用户B,对应图示的⑥;最后三步用户
B收取邮件的过程,使用的协议是POP3
0x03搭建
注:abc.com为测试域名,虚构
绑定mail域名(易错)
A记录绑定自己的域名和ip,然后加MX记录解析到域名的ip服务器 发邮件,但是这样做会错,因为会无法识别
mail.abc.com是什么
实际上,应该这样子做:
原因
mail.abc.com用A记录解析到邮件服务器IP(后面的各个客户端配置的域名都写这个A记录的),再把
abc.com用MX记录解析到mail.abc.com(这个是当遇到***@abc.com时会解析到mail.abc.com)。
测试端口telnet命令也要用mail.abc.com,不能用mx记录的abc.com(用这个会解析到A记录解析的
abc.com)。
配置好了之后可以用nslookup测试:
nslookup mail.abc.com
如果返回vps的ip就说明这一步正确
环境:
内网ip为:10.41.161.214
防火墙:全部关闭,防止出现端口没开的情况
操作系统:centos7 x64
移除了centos自带的sendmail服务,防止出现意外:rpm -e sendmail 或者 yum remove sendmail
修改hostname
hostnamectl set-hostname mail.域名
安装发送者和接收者
参考:
从文首的图可以看出,一个邮件服务器应该包含发送者和接收者。发送者一般在25端口,是smtp服务器,我们需要开放我们需要的端口,端口有25(SMTP服务,用于发送邮件),110(pop3服务,用于接收邮件)143(imap服务,用于接收邮件)
POSTFIX(发送者)
安装:
yum install postfix
备份/etc/postfix/main.cf:
cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
修改main.cf:
修改内容:
# 75行: 取消注释,设置hostname
myhostname = mail.abc.com
# 83行: 取消注释,设置域名
mydomain = abc.com
# 99行: 取消注释
myorigin = $mydomain
# 116行: 默认是localhost,我们需要修改成all
inet_interfaces = all
# 119行: 推荐ipv4,如果支持ipv6,则可以为all
inet_protocols = ipv4
# 164行: 添加
hostnamectl set-hostname mail.域名
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 264行: 取消注释,指定内网和本地的IP地址范围
mynetworks = 127.0.0.0/8
# 419行: 取消注释,邮件保存目录
home_mailbox = Maildir/
# 571行: 添加
smtpd_banner = $myhostname ESMTP
# 添加到最后
# 规定邮件最大尺寸为10M
message_size_limit = 10485760
# 规定收件箱最大容量为1G
mailbox_size_limit = 1073741824
# SMTP认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
以上对应的对应的行数位置可能随着版本不同会有差异。具体的一些参数含义在本小节前面有解释
重启:
systemctl restart postfix
systemctl enable postfix
修改MTA,验证是否postfix成功:
alternatives --config mta
dovecot(接收者)
yum install dovecot
vim /etc/dovecot/dovecot.conf
更改内容:
# 26行: 如果不使用IPv6,请修改为*
listen = *
#在主配置文件中的第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数
login_trusted_networks = 192.168.10.0/24更改内容
编辑文件10-auth.conf
vim /etc/dovecot/conf.d/10-auth.conf
更改内容:
# 9行: 取消注释并修改 disable_plaintext_auth = no
# 97行: 添加 auth_mechanisms = plain login
编辑文件10-mail.conf
vim /etc/dovecot/conf.d/10-mail.conf
更改内容(设置邮件存放地址,~代表用户的根目录,每个用户都会存在一个此目录):
# 30行: 取消注释并添加 mail_location = maildir:~/Maildir
编辑文件10-master.conf
vim /etc/dovecot/conf.d/10-master.conf
更改内容:
# 97-99行: 取消注释并添加 # Postfix smtp验证
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
注意:如果我们没有使用ssl的话需要进行下面的操作。使用了则不需要。
编辑文件10-ssl.conf
vim /etc/dovecot/conf.d/10-ssl.conf
更改内容
# 8行: 将ssl的值修改为 ssl = no
启动dovecot并添加到开机自启。
systemctl restart dovecot
systemctl enable dovecot
测试是否搭建成功可用
下载任意一个邮件客户端软件,比如foxmail,本次测试用的是
就是刚才创建的邮箱管理员admin,密码admin
如果进去之后无法成功刷新出邮件,并且报错说密码验证错误,那就改账号为admin,再输入密码admin:
到此,说明发件服务成了;接着创建一个新用户test
useradd tset
passwd test
本地telnet 登陆telnet localhost 110
成功即可说明收件功能也成了:
但是用foxmail无法发送邮件,猜测原因:
1.foxmail本身不支持postfix
2.我搭建的问题
为了验证是哪个问题,决定手动登陆邮箱发件,看看是否可以发送:
从admin发送给test,test也确实收到了:
同样,测试发送给任意匿名邮箱: