在大型企业边界安全做的越来越好的情况下,不管是APT攻击还是红蓝对抗演练,钓鱼邮件攻击使用的越来越频繁,也是一种高效的攻击手法。
常见的钓鱼邮件攻击大致分为以下三种。
URL钓鱼:附有超链接;
二维码钓鱼:通过二维码内嵌链接;
恶意附加钓鱼:通过携带EXE、PPT、WOED等附件(附件中要么包含恶意宏代码、要么是远控exe)。
引用图表:E-phishing2020邮件钓鱼演练分析(1)钓鱼邮件类型
在基准测试中的中招率和使用率对比,如下图所示:
其中URL钓鱼的使用率最高为74.5%,中招率为25.1%;
二维码钓鱼的中招率最高为30.1%,但使用率最低为5.1%;
恶意附件钓鱼的中招率比较低为17.80%,使用率为20.40%。
选择在9点-10点、14点-15点做钓鱼演练可能会得到比较令人满意的数据结果。
(3)模板主题
大致将主题分为4大类:OA升级类、员工福利类、热点场景、第三方通知类。
0A升级类和员工福利类主题在基准测试中获得了最高的钓鱼邮件中招率分别为27.4%和24.3%,使用率也高达41.1%和31.2%。
热点场景类有极强的实时性,需要不断根据现实场景更改内容,例如现如今的的疫情检查等方式。
(1)利用伪造域名
urlcrazy-i-rfreebuf.com(-fhumanreadable)|more-c(建议使用more或者less辅助查看)
valid为false的就是没有人使用的,我们就可以挑一个便宜的注册一个。
(2)伪造发件人
有时候我们找不到比较合适的域名,或者就是单纯的穷没办法买域名,这个时候我们就需要去伪造发件人。
电子邮件工作的整个过程如下图所示:
这里推荐使用swaks(邮件里的瑞士jun刀(敏感词检测))进行伪造,下文会演示利用。
(1)学习/测试
一台Virtualprivateserver(本文中邮件服务器和钓鱼平台就安装在一起)。
(2)实战/演习
两台Virtualprivateserver,1台搭建邮件服务器、1台搭建Gophish。
近似域名(具体购买类似可根据下文来定,在经费充足的情况下尽量购买IDN域名)。
setoolkit全程Social-EngineerToolkit,即社会工程学工具集,可以辅助制作钓鱼网站,kali内置
(1)Setoolkit安装
(2)钓鱼活动测试
这里使用kail进行演示。
选择1,Social-EngineeringAttacks(社会工程学攻击)。
翻译:1)社会工程学攻击2)快速追踪测试3)第三方模块4)升级软件5)升级配置6)帮助99)退出②选择载体选择2,WebsiteAttackVectors(网站攻击载体)。
翻译:1)鱼叉式网络钓鱼攻击2)网页攻击3)传染媒介式(俗称木马)4)建立payloaad和listener5)邮件群发攻击6)Arduino基础攻击7)无线接入点攻击8)二维码攻击9)Powershell攻击10)第三方模块99)返回上级③攻击方法选择3,WebsiteAttackVectors(凭证收割攻击方法)
翻译:1)javaapplet攻击2)Metasploit浏览器漏洞攻击3)钓鱼网站攻击4)标签钓鱼攻击5)网站jacking攻击6)多种网站攻击方式7)全屏幕攻击99)返回上级④攻击类型选择2,SiteCloner(网站克隆)
输入本机ip,就是[]里面的(也可以不输)
输入要克隆的网站url。
只要不是特别复杂的样式,基本就是一模一样的,如下模仿的南京大学商学院的界面。
在钓鱼网站中输入账号和密码,提交之后在控制台就可以看到输入的信息了,网站也会返回到原来被克隆的网站,不易被人发现。
实际应用的时候,需要布置在公网上,并配合域名共同伪造。
目前使用下来,只能适用一些简单的钓鱼场景,内部的很多工具比较鸡肋,有兴趣的同学可以自己试一下。
(1)Gophish安装
Gophish安装运行非常简单:
unzipgophish-v0.11.0-linux-64bit.zip修改配置文件
admin_server是后台管理页面,将127.0.0.1改为0.0.0.0,默认开放的端口3333。我这里稳定起见,端口修改为443。
phish_server是钓鱼网站,默认开放80端口。
提权启动
第一次进入系统需要强制修改密码,初始密码在启动时的命令行中提示,如下图所示。
(2)邮件服务器的搭建
在搭建gophish的同一台Virtualprivateserver上开始搭建邮件服务器:
Yuminstallpostfix修改配置vim/etc/postfix/main.cf修改项:
PS:如果此处使用国内厂商的Virtualprivateserver需要首先解封25端口,不然收不到邮件。
点击“NewProfile”新建一个策略,依次来填写各个字段:
name
为新建的发件策略进行命名,不会影响到钓鱼的实施。可以取名为项目的名称。
InterfaceType:
From:
From是发件人,即钓鱼邮件所显示的发件人。这里为了容易理(sheng)解(qian),就暂时以自己的域名为例。(在实际使用中,一般需要购买近似域名进行伪造)。
此时需要在DNS管理页面(CF、狗爹等)增加两条记录。
Host:
Username:
Password:
配置如下图所示,就可以按SendTestEmail测试一下试试,发现收到了:
如下图成功收到测试邮件,至此钓鱼平台就基本搭建成功了。
此模块可以设置钓鱼邮件的模板。
方法1:手动编辑生成钓鱼邮件,适合范围:二维码钓鱼、附件钓鱼
方法2:导入现有邮件内容。使用记事本打开邮件eml文件,复制进下面的输入框内进行导入。适合范围:all。
需要注意,在点击Import之前需要勾选上ChangeLinkstoPointtoLandingPage,该功能实现了当创建钓鱼事件后,会将邮件中的超链接自动转变为钓鱼网站的URL。
③Users&Groups(用户和组)
一般项目中或者真实测试中需要批量发送邮件,因此可通过上传CVS文件,进行批量添加。
导出固定表格,按照格式要求进行填写(中文会报错)。
表格如下所示:
导入表格,即可完成用户组的添加。
配置好钓鱼邮件后,就可以通过LandingPages模块来新建钓鱼网站页面,此处支持手写html文件,也可通过导入网站功能,针对目标网页进行克隆,克隆如下登陆页面。
importSite
与钓鱼邮件模板的编辑一样,钓鱼页面的设计也提供了两种方式,第一种则是ImportSite。
点击ImportSite后,填写被伪造网站的URL,再点击Import,即可通过互联网自动抓取被伪造网站的前端代码。
HTML
这是编辑钓鱼页面的第二种方法,但是绝大多数情况下,它更偏向于用来辅助第一种方法,即对导入的页面进行源码修改以及预览。
点击预览后的界面。
CaptureSubmittedData
通常,进行钓鱼的目的往往是捕获受害用户的用户名及密码,因此,在点击SavePage之前,记得一定要勾选CaptureSubmittedData。
当勾选了CaptureSubmittedData后,页面会多出一个CapturePasswords的选项,显然是捕获密码。通常,可以选择勾选上以验证账号的可用性。如果仅仅是测试并统计受害用户是否提交数据而不泄露账号隐私,则可以不用勾选。
另外,当勾选了CaptureSubmittedData后,页面还会多出一个Redirectto填写该页面真实的地址,方便受害者点击完提交按钮后,自动跳转至真正的网站,营造出一种受害用户第一次填写账号密码填错的感觉。
(当然钓鱼站点存在输入错误账户后系统跳转的页面,可以填写此链接,这样更加逼真。但若系统无反应可以直接填写钓鱼页面的URL)。
填写好以上参数,点击SavePage,即可保存编辑好的钓鱼页面。
Campaigns的作用是将上述四个功能SendingProfiles、EmailTemplates、LandingPages、Users&Groups联系起来,并创建钓鱼事件。
点击NewCampaign新建一个钓鱼事件。
URL
需要保证的是该URL对于目标用户组的网络环境是可达的。例如填写内网IP,则该钓鱼事件仅能够被内网目标用户所参与,而外网目标用户网络不可达。
如果部署了gophish的是公网服务器,URL填写公网IP或域名,则需要保证目标用户的内网环境能够访问该公网服务器的IP。
SendEmailsBy
例如,LaunchDate的值为2022.01.01,00:00,SendEmailsBy的值为2022.01.21,00:10,该钓鱼事件需要发送10封钓鱼邮件。
那么经过以上设定,从00:00到0:10共有10个发件点,被50封邮件平分,即每个发件点将发送1封,也就是每分钟仅发送1封。
填写完以上字段,点击LaunchCampaign后将会创建本次钓鱼事件(注意:如果未修改LaunchDate,则默认在创建钓鱼事件后S就立即开始发送钓鱼邮件)。
至此,一次在gophish发起的钓鱼事件所需实施步骤就已经全部完成,接下来就等着鱼儿上钩。
观测dashboard,查看截取数据。
具体依次点击Campaigns-ViewResults-展开Details(左侧小三角)。
可以看到在钓鱼页面提交的账密信息。
上述所说的V-P-S-IP均需要更换为伪造的域名,并且需要在DNS服务商设置A记录。
注:.tk域名不能在国内提交域名备案。
设置结果如下图所示:
附件内容均可设置为病毒,例如word、pdf、exe等格式,只要能上线就行。
不管哪一类的钓鱼邮件,都需要通过一个好的文案来让目标点击或者下载。
一封成功的钓鱼邮件,一个好的文案是必须的,一个让人看了后可能会去点的文案,需要具备以下几个要素:
重要性
首先得让体现出来邮件的重要性,来驱使目标去查看邮件。
针对性
其次文案得具有针对性,需要结合目标的身份并结合该公司的情况及业务。
例如:
当面向所有公司成员时,可以冒充公司科技部门、安全部门和行政部门发送钓鱼邮件。
当面向销售、行政、财务、法务时,伪装供应商、客户、渠道发送钓鱼邮件。
当面向HR时,伪造面试候选人发送钓鱼邮件
紧迫性
由于邮件文案只是过程,真正的目的是驱使目标点击附件或者进入伪造的网站输入自己的信息,因此文案需要一些紧迫性,尽快的引导目标进行点击、输入等操作。
模板一:
攻击者伪装成管理员,让目标点击钓鱼邮件中的链接来修改各种各样的密码:
当发现目标存在招聘情况的时候可以尝试使用简历投毒的方式
攻击者伪装成系统管理员,让受害者点击钓鱼邮件中的链接解冻账号。
模板二:
可以假装行政给公司员工发送
这也促成了以下几种安全协议的产生:
SPF,全称为SenderPolicyFramework,即发件人策略框架。SPF出现的目的,就是为了防止随意伪造发件人。
SPF记录实际上是服务器的一个DNS记录,原理其实很简单:
假设邮件服务器收到了一封邮件,来自主机的IP是1.1.1.1,并且声称发件人为xx@example.com。为了确认发件人不是伪造的,邮件服务器会去查询example.com的SPF记录。如果该域的SPF记录设置允许IP为1.1.1.1的主机发送邮件,则服务器就认为这封邮件是合法的;如果不允许,则通常会退信,或将其标记为垃圾/仿冒邮件。
在Linux查询SPF记录:dig-ttxtfreebuf.com
Windows下查询SPF的方法:nslookup-type=txtfreebuf.com
DKIM全称为DomainKeysIdentifiedMail,即电子邮件验证标准,是一种在邮件中嵌入数字签名的技术。和SPF一样的是,是为了解决最为严重的电子邮件欺诈问题。和SPF不一样的是,DKIM是对邮件内容进行验证。
启用DKIM的服务器发送邮件时,DKIM签名会对邮件中的部分内容进行HASH计算,最后在邮件头中增加一个DKIM-Signature头用于记录签名后的HASH值,并使用私钥进行进行加密,并附在邮件的DATA部分的header中,私钥由发送者保存,公钥存放在DNS服务器中,方便自动获取。接收方接收到邮件后会使用夹带在邮件头中的私钥和在DNS上自己获取公钥,然后进行比对,以此判断。寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。
一个典型的DKIM签名头如下:
DKIM-Signature:v=1;a=rsa-sha256;d=example.net;s=brisbane;c=relaxed/simple;q=dns/txt;l=1234;t=1117574938;x=1118006938;h=from:to:subject:date:keywords:keywords;bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR当收到一封邮件后,支持DKIM的服务商就会查询brisbane._domainkey.example.net的txt记录,同样通过dig或者nslookup也能获取解密密钥
一个保存dkim公钥的txt记录如下:v=DKIM1\;k=rsa\;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRDG9+KjIHtJXilSxHtbS92dsEuKZ1mSWBu/e9L3ZpkDpYlOYsqiD8grXafNoIuwrxBpXW2lg2LbwkvugNDjJtQ7SQTPpP6b5hL23i8ezCYKeMTA8XM1618BtO2ZWHmWBOEvlEC11vmCZuuQc0RAxXa1H6hz0C13W+Qg/Qz+xYNQIDAQAB
DMARC全称是Domain-basedMessageAuthentication,ReportingandConformance,是一种基于SPF和DKIM协议的可扩展电子邮件认证协议,通常情况下,它与SPF或DKIM结合使用,并告知收件方服务器当未通过SPF或DKIM检测时该如何处理。
不同点:
又称SMTP界的瑞士jun刀(敏感词检测),是kali中自带的一个邮件伪造工具Swaks,可以伪造邮件每一个参数,当目标未配置SPF策略的时候,swaks就可以大展身手了。
基础使用:
IDN是指在域名中包含至少一个特殊语言字母的域名,特殊语言包括中文、法文、拉丁文等。在DNS系统工作中,这种域名会被编码成ASCII字符串,并通过Punycode进行翻译。
说人话就是:利用这些域名看起来比较像但实际上字母不一样的域名
以freebuf.com为例(第1个e的uncode编码为0x435),freebuf部分通过Punycode编码转换为frebuf-5of,然后以xn--作为前缀,因此DNS记录将会变成xn--frebuf-5of.com。
也可以直接通过在线转换工具进行查看freebuf的真实域名
当前主流的浏览器均会自动对IDN域名进行Punycode转码,避免出现误判。
因此只需要找到这些长的一样域名,然后再把这个经过punycode转码后的域名买下来,邮件一发,神仙难辨。
具体字符可以查看Unicode字符表:
也可以直接对照此表,直接替换对应字母:
如果仅仅主域名设置了spf,但子域名未进行设置,我们还是可以以子域名身份发送邮件
但是针对于不存在的子域名,若使用其发送邮件,会被直接送到垃圾箱中。
示例:
当目标是admin@xxx.com时,虽然xxx.com设置了SPF策略,但是admin@it.xxx.com上未配置,我们就可以伪造it.xxx.com域下的任何用户进行绕过。虽然欺骗的效果不如直接伪造的,但也有较强的欺骗力度。
URL隐藏方法可以参考如下方式,
在word/wps内点击插入-超链接,对此处信息进行编辑。(构造超链接有很多种方式,这里只演示一种)
实际操作中可以通过邮件中的具体环境构造超链接
直接通过二维码进行转换,二维码可以有效的规避鼠标悬停对邮件中链接的检查,增加识别钓鱼邮件的困难度。
方式一:站点直接转化
方式二:Setoolkit二维码攻击
使用数字0-字母o/O,用数字1-字母l/i,字母vv-字母w等方式替换出域名极为相似的部分。
在这里,我们需要使用一些用"-"分隔的,如果受害者是某员工,那么我们可以使用类似公司缩写或者工号等。
例如使用百度来伪造Freebuf的时候,有这两种方式:
示例一:
此类方法需要伪造足够长的无关字符,让地址超出屏幕,使得从物理上蒙蔽别人,看不到真实,粗体部分可以任意替换(除了-,其他的保留字符不能使用,除非通过URL编码),也算是此类方式的缺陷。
示例二:
相较于方法一,这个发现几率较大,由于直接把真实域名前置了,眼尖的人一眼就能看出异常,不做推荐。
例如存在漏洞的url往往都具有以下格式:
后面的url就是其跳转的url,一般由于regist、login、logout这些位置在操作完之后都会有跳转操作,URL重定向攻击也多出现于这类位置。