钓鱼邮件姿势总结

本文从实战角度对钓鱼邮件攻击思路、姿势、场景、搭建进行研究总结…

0x01 攻击方式

1. 恶意链接

简介

LNK(快捷方式或符号链接)是引用其他文件或程序的方法;快捷方式修改的利用方式,在MITRE ATT@CK中的ID是T0123,攻击者可以使用这种方式来实现持久化

Tips

(1) 用超链接,把元素内容改成想要仿冒的域名

(2) 申请一些和目标域名比较相似的域名

(3) IDN punycode转码域名注册

(4) https证书伪造: Let's Encrypt、Cloudlare等免费可信证书

2. 文档攻击

通过携带exe、execl、word等附件(附件中包含中恶意宏代码、远控exe)的方式

(1) 内嵌链接

在PDF、Office文档中内嵌一个跳转链接式,通过文字信息的引导,让受害者点开页面;Office、Adobe等应用软件对打开外部链接都会弹框进行安全提醒,这种方式也比较容易引起警觉

(2) Office宏

宏是Office自带的一种高级脚本特性,通过VBA代码,可以在Office中去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中的一些任务自动化;恶意宏代码在免杀和增加分析难度的手段上多种多样,除了把VBA代码混淆变形外,利用Excel的特性隐藏代码也很常见

(3) CHM文档

CHM是Windows帮助文件(如电子书)使用的扩展名,此文件可以被植入可执行代码,Cobalt Strike就支持CHM钓鱼文件的生成。成功的利用需要欺骗用户打开恶意的CHM文件,该文件可用于执行恶意代码。其缺点就是打开时会出现弹黑框、卡顿,容易被察觉

(4) 漏洞捆绑文档

利用Office、Adobe、IE等应用软件的漏洞,精心制作成诱饵文档,是APT攻击中的常客

(5) 文件后缀RTLO

RTLO字符全名为“RIGHT-TO-LEFT OVERRIDE”,是一个不可显示的控制类字符,其本质是unicode 字符。可以将任意语言的文字内容按倒序排列,最初是用来支持一些从右往左写的语言的文字,比如阿拉伯语,希伯来语。由于它可以重新排列字符的特性,会被攻击者利用从而达到欺骗目标,使得用户运行某些具有危害性的可执行文件

(6) HTA文件

HTA是HTML Application的缩写,直接将HTML保存成HTA的格式,是一个独立的应用软件,本身就是html应用程序,双击就能运行,却比普通网页权限大得多,它具有桌面程序的所有权限。Cobalt Strike也支持HTA钓鱼文件的生成

(7) ⾃解压

把⼀个恶意的⽂件和⼀个图⽚组合在⼀起,打包运⾏后,程序进⾏⾃解压,释放木马

(8) ⾃解压+RLO

把pe⽂件反转成png后缀、修改pe⽂件的ico图标,最后实施⾃解压操作

0x02 场景案例

1. 简历伪造投递

Tips

1. 模拟真实简历投递:在简历钓⻥邮件中,可伪造名字、联系方式、学校、经历等信息,针对不同岗位(技术、运营、产品经历等)伪造合适的简历,尽量写的漂亮

2. 从官网招聘、领英、拉勾⽹、智联招聘、BOSS直聘、脉脉、v2ex、搜索引擎及其他专业论坛等渠道获取各平台留下简历投递的邮箱信息

3. 简历拥有分发属性,针对HR等安全意识薄弱人员,成功率比较高

2. 邮件及网站伪造

购买⼀个相似域名,编写⼀摸⼀样的登录⻚⾯,访问后做引导,告知让其登录更新;或者伪造邮件服务器,发送全员及针对性邮件,诱导其点击查看邮件附件

话术总结

1. 邮箱账号被异常登录、公司邮箱密码泄漏,账号密码过期,提醒修改更新密码

2. 公司福利活动,请登录指定页面下载领取

3. 最新爆发的漏洞通告及大型安全演练漏洞修复,请打漏洞补丁

4. 系统更新迁移,云服务器包年包月过期,影响服务器列表见邮件附件

5. 内部技术交流分享,请点击直播链接、附件PPT观看

6. 转正评估、绩效自评及评估结果查看,请点击指定页面进行操作

7. 构造钓鱼二维码,诱导员工扫描钓鱼二维码,跳转至指定钓鱼页面

3. SRC假漏洞

当⽬标企业存在类似SRC漏洞奖励计划时,可以去提交⼀个假漏洞,把恶意⽂件附在其中,并说是漏洞复现程序,诱导SRC审核人员打开

Tips

1. 最好伪造提交核⼼应⽤高危及严重漏洞,保证“漏洞”的有效性及真实性

2. 当SRC审核⼈员迟迟不点击的时候,可以施加压力,如指出漏洞危害高且影响范围广,若不及时修复承担责任;“指责”SRC人员漏洞审核水平及流程有待提升,审核时间较慢,对安全重视程度低等;其他家SRC流程如何规范、审核时效性如何高等等对比

0x03 平台搭建

1. 环境/工具

a. VPS

VPS(邮件服务器/钓鱼平台//CS Server),推荐购买国外VPS,按时付费;(国内厂商监管严格、限制较多、whois信息易泄露、SMTP 端口限制)

b. 域名

购买与目标公司邮箱相近的域名

c. 邮件服务器

方案一:开源自建邮件服务器 - EwoMail

Ewomail介绍

1
2
3
4
5
6
7
8
9
10
1. 基于Linux的开源邮件服务器软件,集成了一些稳定的组件,可快速搭建,集成组件如下:

Postfix:邮件服务器
Dovecot:IMAP/POP3/邮件存储
Amavisd:反垃圾和反病毒
LNMP:nginx,mysql,php
EwoMail-Admin:WEB邮箱管理后台
Rainloop:webmail

2. 数据可单独存储在个人服务器,防止隐私被盗取,保护数据安全

使用体验

1
2
3
4
5
1. 搭建方便,配置简单,采用自建邮件服务器方案较为推荐

2. VPS一般会封禁25端口,需选择小众VPS厂商自建邮件服务器,或向客服申请25端口开放;对外发送邮件较麻烦

3. 自建邮件服务器发送邮件容易被识别为垃圾邮件,即使配置SPF、DKIM也存在被当成垃圾邮件的情况;维护相对较麻烦

方案二:专业电子邮件托管服务 - Zoho Mail

使用体验

1
2
3
4
5
6
7
1. 基本可以避免被识别为垃圾邮件的情况

2. 配置及维护方便,可避免自建邮件服务器带来的一系列问题

3. 对外发送邮件基本不存在问题,SMTP默认使用465/587端口,加密传输邮件,安全性较高

4. 实际使用中,与gophish钓鱼平台联动效果较好,基本不需要投入过多时间配置

refer: https://www.10besty.com/best-email-hosting-providers/#two

d. 钓鱼平台

Gophish

1
Gophish is a powerful, open-source phishing framework that makes it easy to test your organization's exposure to phishing

e. 红队平台

Cobalt Strike

1
一款优秀的红队攻击平台,主要用于执行有目标的攻击和模拟高级威胁者的后渗透行动;本文主要用此制作钓鱼诱饵、载荷投递及远控,CS的Spear Phish模块也可进行钓鱼测试

2. 邮件服务器

a. Ewomail

参考EwoMail 邮件服务器(开源版文档)进行邮件服务器的搭建

邮件基础

简称 全名 任务
MUA Mail User Agent 供用户写信、读信、寄信的软件。寄信时,以SMTP协议将邮件提交给MTA ;收信时 ,以POP或IMAP协议访问服务器上的邮箱
MTA Mail Transfer Agent 负责接收、递送邮件的服务器软件。决定邮件的递送路径,进行必要的地址改写。应该由本地系统收下的邮件,委托给MDA进行最后的投递操作
MDA Mail Delivery Agent 负责投递本地邮件到适当的邮箱,MDA可以过滤邮件内容,或是依照用户设定的准则,将邮件分类到适当的邮箱;甚至可以将邮件转回给MTA,以寄到另一个邮箱

注意事项

1
2
3
4
5
6
7
8
9
1. 服务器VPS需要干净环境,要求全新干净系统,最好单独供Ewomail使用,不能安装在已有的nginx,mysql的环境中

2. 新版本的杀毒软件占用的内存比较多,可参考(http://doc.ewomail.com/docs/ewomail/reduce_memory)降低内存占用

3. webmail https证书配置:系统自带了本地SSL证书,但未经认证;可使用经互联网经认证的证书,如通过 Let’s Encrypt、Cloudlare等申请免费可信证书

4. 开放端口:必须打开的端口8000(webmail),8010(管理后台),25(SMTP),143(IMAP);可修改

5. DKIM设置:推荐设置域名密钥识别邮件标准,用来防止被判定为垃圾邮件;参考(http://doc.ewomail.com/docs/ewomail/dkim)

问题总结

1
2
3
4
5
6
7
8
9
10
11
1. 无法连接服务器:邮件无法发送、接收等

a. 检查VPS服务商是否开放25端口出站方向,如未开放可通过工单、客服等联系运营商申请开放25端口出站方向;或使用465等其他端口发送邮件

b. 25端口正常的情况下,如果不能链接服务器,请检查域名DNS解析,或做内部通信

2. 域不允许

a. 当显示域不允许的时候,先检查域名解析是否已做好,如果只在本地搭建测试,测试内部通信是否正常

b. 如以上2个步骤还不行,参考自定义访问路径文章(http://doc.ewomail.com/docs/ewomail/custom_path),填上具体的访问地址

配置/命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1. 默认安装及配置目录

/ewomail
.
├── config.ini
├── dkim
├── mail
├── mysql
├── nginx
├── php72
└── www

2. 管理后台、webmail的nginx配置

/ewomail/nginx/conf/vhost

├── ewomail-admin.conf //管理后台
├── phpmyadmin.conf //数据库
├── rainloop.conf //webmail
└── rainloop.conf.ssl //webmail ssl配置

3. PHP配置文件: 可修改后台管理或webmail的访问路径

/ewomail/www/ewomail-admin/core/config.php

├── 'url' => 'ewomail后台访问路径'
└── 'webmail_url' => 'webmail的访问路径'

4. 卸载命令

$ systemctl stop nginx php-fpm mysqld postfix dovecot amavisd

$ rm -rf /ewomail

5. 重启命令

$ systemctl restart nginx php-fpm mysqld postfix dovecot amavisd

6. 组件查找

$ yum install mlocate && updatedb // 安装locate所在文件包并更新搜索数据库

$ locate amavisd //查找邮件内容过滤器amavised相关文件/文件夹

管理后台

Webmail

b. Zoho Mail

参考官方文档 Email Hosting Setup in Zoho 进行申请、配置;配置完成后如下:

SMTP服务配置可参考 SMTP Server Configuration - Zoho Mail,完成后在gophish中进行Sending Profiles-邮箱配置

采用此方案,对外发送邮件基本没什么问题,也不用担心被识别为垃圾邮件

3. 钓鱼平台

安装运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. 下载解压

$ wget https://github.com/gophish/gophish/releases/download/v0.11.0/gophish-v0.11.0-linux-64bit.zip

$ unzip gophish-v0.11.0-linux-64bit.zip -d gophish

2. 修改配置(config.json)

admin_server是后台管理页面,将127.0.0.1 改为 0.0.0.0,默认开放的端口3333。phish_server是钓鱼网站,默认开放80端口

3. 启动运行

$ cd gophish && chmod 640 config.json && chmod +x gophish

$ nohup ./gophish & //后台运行,日志记录至nohup.out文件

成功启动后,在nohup.out文件中的初始账户密码可用来登录控制台

4. 首次登录强制修改密码,要求八位以上字符

地址:https://x.x.x.x:3333/

功能介绍

功能|
简述 ---|--- Dashboard|仪表板,查看整体钓鱼情况 Campaigns|作战配置,每次攻击前需要配置一次 Users & Groups|用户和用户组(添加需要进行钓鱼的邮箱和相关信息) Email Templates|电子邮件模板 Landing Pages|需要伪造的钓鱼页面 Sending Profiles|钓鱼邮箱发送配置 Account Settings|账户、UI、报告等设置

4. CS 平台

搭建及使用可参考A-Team: Cobalt Strike 4.0 手册Cobalt Strike Book

目录简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
➜  CobaltStrike4.1 tree -L 1
.
├── agscript //[拓展应用的脚本]
├── agscript.bat
├── c2lint //[检查c2配置文件语法和预览]
├── c2lint.bat
├── cobaltstrike //[客户端启动程序]
├── cobaltstrike.auth
├── cobaltstrike.bat //[CS Windows客户端启动程序]
├── CobaltStrikeCN.jar //[翻译插件]
├── cobaltstrike.jar //[主体程序]
├── cobaltstrike.store
├── data
├── logs
├── nohup.out //[后台启动日志记录]-个人创建
├── peclone
├── peclone.bat
├── start.sh //[服务端后台启动脚本] -个人创建
├── teamserver //[Linux服务端启动程序]
├── teamserver.bat
└── third-party //[vnc远程功能的dll等第三方工具]

启动运行

1
2
3
4
5
6
7
1. Cobalt Strike 团队服务器建议在VPS Linux 系统上运行,可持久运行,连接便捷

$ nohup sh start.sh & //后台启动,日志记录至nohup.out

启动脚本start.sh:teamserver <server_host> <password> [/path/to/c2.profile] [YYYY-MM-DD]

2. 客户端选用Windows:运行teamserver.bat启动,输入服务端启动时配置的server_host、password即可

0x04 钓鱼实战

1
根据搭建的钓鱼平台、制定的钓鱼方案,选取个人及同事通用邮箱、内部邮箱进行测试;针对全体员工的钓鱼测试修改收件人邮箱账号即可,原理及方法类似;本测试选取邮箱账户密码更新钓鱼场景,其余场景过程类似

1. 创建邮件用户/组

可通过上传CVS文件,进行批量添加邮件账号,批量发送邮件

测试选取了两个外部邮件服务商邮件账号、一个内部邮件账号

2. 钓鱼邮件模板

需在钓鱼邮件模板中的html进行更改和添加,可统计哪些人点开了钓鱼邮件,哪些人打开了钓鱼页面

为了后续记录邮件是否打开,可勾选上AddTrackingImage,它将会在发送的每份邮件源码上插入一个唯一特定的隐藏图片,当邮件被打开时,此隐藏图片则也会被请求,以此来检测该邮件是否被打开,AddFiles则是给邮件添加附件

3. 伪造钓鱼页面

配置好钓鱼邮件后,可以通过LandingPages模块来新建钓鱼网站页面,支持手写 html文件,也可通过导入网站功能,针对目标网页进行克隆; 如以下抓取内部网页邮箱登录界面:

1
2
3
1. 选上CaptureSubmitted Data和CapturePasswords,记录受害者输入的账号和密码,为安全性,暂不选取密码记录

2. Redirect to 是受害者点击完提交按钮后,自动跳转的网站

4. 发起钓鱼攻击

配置Campaigns,填写Name、选择钓鱼邮件模板、选择钓鱼网站模板、填写钓鱼网站 URL、填写发件邮箱、选择受害者邮件组

1
钓鱼网站URL根据实际钓鱼邮件测试情况,填写对应的地址,点击Launch Campaign即可成功发起一次钓鱼邮件攻击测试

5. 仪表板查看

实际测试中,选取了三个邮件账号,一个未打开邮件、一个打开邮件并点击链接、一个打开邮件后点击链接并输入登录账号密码,最终结果如下,和测试结果相同:

1
通过仪表盘可详细看到那些邮件账户打开了邮件、点击了指定链接、并输入了账户和密码信息;钓鱼链接对主机无危害、仅显示那些账号对其进行了访问

本文涉及内容,仅限于网络安全从业者学习交流,切勿用于非法用途…