在大型企业边界安全做的越来越好的情况下,不管是APT攻击还是红蓝对抗演练,钓鱼和水坑攻击被越来越多的应用。(水坑攻击感觉也很牛掰的样子)
说起钓鱼,突然想起来小薛同学在大一收到一个钓鱼邮件,结果还真真实实的上当了哈哈,因为那时候玩英雄联盟很投入,之后突然收到一个幸运召唤师的邮件,做的真的很真,后来学了安全才知道就是最典型的XSS钓鱼。
今天学的更倾向于在企业中的这种社工钓鱼,跟大众用户钓鱼还是有一些不同的侧重点的
SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。
查看SPF配置情况
nslookup -type=txt ***.com/.cn
或者
dig -t txt 163.com
如果出现了spf字样就是有SPF防御的
注意:SPF可以配置为ip,也可以配置为域名
且甲方企业一般没有SPF
例如:当邮件服务器收到自称发件人是[email protected]的邮件,那么到底它是不是真的gmail.com的邮件服务器发过来的呢,我们可以查询gmail.com的SPF记录,以此防止别人伪造你来发邮件。
参考http://www.renfei.org/blog/introduction-to-spf.html
DKIM让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送, 电子邮件收件人则可以使用签名来证实邮件确实来自该企业。可确保邮件内容不被偷窥或篡改。
DMARC是txt记录中的一种,是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。
邮件为什么可以被伪造呢,最根本的原因就是SMTP协议不会验证发送者的身份,当邮件在两个不同的SMTP邮件服务器中被传输时,我们可以通过伪造来源欺骗接收者的SMTP服务器。
没有配置SPF,邮件服务器就不会去验证发件人,就可以直接进行伪造了。
1.swaks的邮件伪造工具,kali中自带
swaks --to xxxx@qq.com --from info@XXX.com --ehlo XXX.com --body hello --header "Subject: hello"
--to <收件人邮箱>
--from <要显示的发件人邮箱>
--ehlo <伪造的邮件ehlo头>
--body <邮件正文>
--header <邮件头信息,subject为邮件标题>
2.fastmail工具
3.也可以自己在vps上搭建邮件服务器
4.使用第三方的邮件服务器
邮件伪造服务:http://tool.chacuo.net/mailanonymous
用一些权威的邮件服务商去发送邮件了如sendgrid,mailgun,这些权威邮件服务商,会被大部分邮件服务商加到白名单中,这样他们的邮件就不会进到垃圾箱(但是一般都需要$$$$$)
修改昵称伪造发件人
如果拿权威的邮件服务商发送依旧被拦截,可以尝试一种绝对不会被拦截发信的方式,但基本只对通过手机查看邮件的收件人有效。修改发件人昵称为伪造对象的以及邮箱地址。如果受害者通过手机查看邮件那么有极大的几率会认为此邮件为正常邮件。
适当控制发信的频率,如果短时间内向同一个邮箱地址发信,也会容易被标记为垃圾邮件。最好向同一邮箱发信间隔在2-5天
将较大的收件人列表分割成若干个小的,分时间段发送
使用变量,一般来说,邮件服务器多次收到来自同一个邮件IP地址的相同内容邮件,很容易就被判定为垃圾邮件。在进行邮件编辑时,多采用变量设置,像公司名、收件人,可以进行变量添加,避免邮件内容完全一致
钓鱼邮件通常有两大类,一种是链接钓鱼邮件,通常是想各种办法让目标打开网站,输入密码。另一种是附件钓鱼邮件,但不管哪一类,都需要一个好的文案来让目标点击或者下载。
一封成功的钓鱼邮件,一个好的文案是必须的,一个让人看了后可能会去点的文案,需要具备以下几个要素:
重要性
首先得让体现出来邮件的重要性,来驱使目标去查看邮件。
合理性
其次文案得基本合理,这个就需要结合目标的身份,日常习惯,所在公司的情况及业务进行综合考量,来编写出一个合理的文案。
紧迫性
最后文案最好有一些紧迫性,来促使目标尽快的去按照文案引导,进行点击、输入等操作。
账号被异常登录
账号密码过期
系统更新,迁移
领取礼品
让邮件看起来真实性更高呢?最简单的就是用超链接,把元素内容改成想要仿冒的域名,在邮箱页面上,就会直接显示元素的内容
但这种点击完之后,跳转浏览器的时候就会显示真实的域名,所以,要想让钓鱼的成功率更高一些,就需要对域名做一些处理。比如申请一些和目标域名比较相似的域名,比如用0代替o,用1代替l,用vv代替w等等
币安“惊魂夜”钓鱼的案例
用于替换字母n的字符为:ṇUnicode编码为:U+1E47
真正的字母n的Unicode编码为:U+006E
这样的域名是怎么注册的呢?在了解怎么注册一个这样的域名前,需要先了解什么是国际域名IDN。
IDN是指在域名中包含至少一个特殊语言字母的域名,特殊语言包括中文、法文、拉丁文等。在DNS系统工作中,这种域名会被编码成ASCII字符串,并通过Punycode进行翻译。
Punycode是一个根据RFC
3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用於DNS系统的编码。
目前,因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域名解析,所有中文域名的解析都需要转成punycode码,然后由DNS解析punycode码。其实目前所说的各种主流浏览器都完美支持IDN域名,浏览器里面会自动对IDN域名进行Punycode转码,而地址栏依旧显示的是原始输入的IDN域名。
所以,要想注册特殊符号的这个域名
其实只需要注册他经过punycode转码后的域名
www.biṇaṇce.com
www.xn–biace-4l1bb.com
punycode在线转换工具:http://tools.jb51.net/punycode/index.php
UniCode编码表https://www.cnblogs.com/csguo/p/7401874.html
关于https证书
前边仿冒的再像,但如果浏览器上直接出现了不安全警告或者红斜杠,也很容易引起目标的警惕。所以在条件允许的情况下,尽量做戏做全套,现在普通的https证书也是很便宜的