freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

信安三十六计——企业邮件钓鱼演练
2021-07-15 11:02:15

邮件钓鱼作为一种攻击成本小,技术门槛低,却往往能收获奇效的攻击方式,常为攻击者所喜闻乐见。有攻亦须防,安全宣贯长篇大论的说教,不如一次实际的钓鱼演练效果来的立竿见影。

1.  场景设计

演练场景为:冒充公司某部门(运维、行政等)人员,给演练目标小白鼠发送钓鱼邮件【邮件实例见图1),邮件内容中包含自建钓鱼网站链接,钓鱼网站可仿冒公司OA、企业邮箱等系统搭建【示例见图2),引诱小白鼠们点击链接并输入敏感信息。

图 1 钓鱼邮件

图 2 钓鱼网站

此时还不知情的小白鼠猪油蒙了心,输入了用户名密码并尝试登录时,哦豁........

图 3 跳转提示页

登录后将会跳转到演练提示页,此时小白鼠才恍然大悟,明白自己已经上了钓鱼网站的套了。

与此同时,演练系统后台已经默默记录下了小白鼠查看钓鱼邮件、访问钓鱼链接、输入敏感信息的全过程。

图 4 成果展示界面

2.  邮件钓鱼第一计——瞒天过海

邮件钓鱼演练最重要的一步,是如何瞒天过海,批量发送一封不会被邮件网关丢进垃圾箱的邮件。

邮件发送可以通过写脚本,连接SMTP服务器进行批量邮件发送,在SMTP服务器的选择上,可以自建邮件服务器,也可以使用邮件服务提供商的SMTP服务。经过实际测试,自建邮件服务器发出的邮件由于公信力较低,通常会被目标邮件网关丢进垃圾箱。

所以为了能让小白鼠们正常接收到“诈骗“邮件,可以选择阿里云”邮件推送“服务作为发送跳板。邮件推送服务配合一个特定的域名,可设置具有迷惑性的发件人邮箱,增加钓鱼邮件的可信度。(当然阿里云邮件推送,每日可免费发送200封邮件才是选择他的最主要原因!)

图 5 邮件批量发送脚本

3.  邮件钓鱼第二计——知己知彼

既然是演练,组织者必然希望了解小白鼠们的中招情况,如何知己知彼,知悉目标是否查看了钓鱼邮件呢?

图片定位法便是一个高效的获知邮件是否被阅读的有效方法。

设计钓鱼邮件时,在邮件正文中插入一个透明的网络图片,该图片存储在自建的web服务器上,每当目标查看插入了定位图片的邮件时,web服务器的访问日志中将会生成一条访问记录。如果在批量发送邮件时,自动生成并插入具有标识性名称的网络图片,便可以通过分析web服务器日志来知悉某一封邮件是否被查看。

图 6 定位图片

当发往houby@xxxx.com地址的邮件被查看时,web服务器中将产生如下日志:

223.104.210.235- - [13/Jul/2021:08:14:52 +0000] "GET /mail/houby@xxxx.com_SNWSOA.png HTTP/2.0" 200 176 "-" "Mozilla/5.0 (Linux; Android 10; LIO-AL00 Build/HUAWEILIO-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 mailapp/6.2.1" "-"

表示在“SNWSOA“这次演练中发给houby@xxxx.com的邮件被查看,日志中记录了查看时间和来源IP,以及查看邮件时使用的设备类型。

在搭建图片定位的web服务器时,建议在阿里云平台上购买域名,申请免费的SSL证书并绑定,并且通过https的方式发布定位图片,因为在实际测试过程中发现,QQ邮箱、网易邮箱中查看邮件时,会自动将正文中的网络图片链接替换为https://url/picture_path,故使用http协议的图片资源将会导致图片定位失效。

此外web服务器的监听端口不建议使用80和443端口,因为云服务器的80和443端口资源必须进行ICP备案方可访问,为了方便可监听其他大端口避免备案流程。

4.  邮件钓鱼第三计——偷梁换柱

邮件钓鱼的最终目的是为了获取信息,在本次演练场景中,偷梁换柱,通过设计钓鱼网站来钓取信息。

钓鱼网站可以选择公司常用的内部管理平台(OA或邮件系统)作为克隆目标,可以使用WinHTTrack工具克隆目标网站。修改网页前端代码,将用户名密码的提交请求发送到自建服务器上【见图7中1】。

此外为了辨别用户名密码是哪个邮箱跳转过来并输入的,在设计邮件正文时,插入钓鱼链接也将拼接成http://url/index.html?id=email_address。通过id参数来识别敏感信息的输入来源。

图 7 钓鱼网站源码参考

自然在设计钓鱼网站时就要考虑读取当前页面的id值,并作为标识参数,与用户名密码一起POST到系统后台【见图7中的2】。

接收数据的后台使用了Flask框架,接收到敏感数据直接打印到日志文件中留存。

图 8 数据接收后台

5.  邮件钓鱼第四计——关门捉"贼”

小白鼠们在我们的坑蒙拐骗下不断中招,而他们一步又一步落入我们陷阱的证据都留存在了web服务器日志和Flask输出的日志中。下一步便是关门捉“贼“,从日志中筛选出小白鼠们中招的记录。

日志数据的采集、分析和展示过程是通过ELK框架来实现。过滤出关键日志,绘制可视化图表,帮助演练组织者可以快速的输出演练成功报表。详细的成果展示界面可见上文图4。

图 9 邮件钓鱼成果展示

6.  快速开展邮件钓鱼演练

综上所述,一计又一计,别说小白鼠,观众老爷都绕晕了!难道真的要我自己急头白咧去搭建数据分析平台,编写邮件发送脚本嚒?

of couse NOT

为了方便快速部署邮件钓鱼演练系统,已经将邮件发送脚本、图片定位服务器、数据分析、演练结果展示等一众组件通通打包在了docker中,只需要简单配置便可快速开展邮件钓鱼演练。

No.1 资源准备

在正式开始邮件钓鱼演练前,需要准备一台拥有公网IP的服务器;另外需要购买一个和目标用户邮箱域名相似的域名,比如目标邮箱为aaa@huawei.com,可注册一个相似域名如:huawei.fun(.fun的域名相对比较便宜);接下来再在阿里云上申请一张免费的SSL证书,生成Nginx服务器下的证书文件(.key和.pem);最后开通阿里云邮件推送服务(免费),并根据阿里云官方文档完成配置。

No.2 镜像下载

本机安装完成docker后,联网下载镜像包:

# docker pull haspen/phishing_sys

镜像包含:

邮件发送脚本和配置文件

nginx服务器(图片定位和钓鱼网站)

ELK组件(数据采集、分析和展示)

Flask框架和后端数据接收程序

镜像下载完成后,启动docker容器:

# docker run -d --privileged=true -p 5601:5601 -p 8843:8843 -p 9891:9891 haspen/phishing_sys /usr/sbin/init

No.3 SSL证书上传

将No.1步骤中保存的证书文件(.key和.pem)上传到容器中的/etc/nginx/cert/路径下。

修改/etc/nginx/nginx.conf文件的67、68行,将xxxxx.key和xxxxx.pem分别修改为上述文件名称;

修改/opt/mailspoof/http_data.py文件的49行,将xxxxx.key和xxxxx.pem分别修改为上述文件名称;

No.4 基本配置

邮件钓鱼演练相关脚本的存放路径为/opt/mailspoof,其中存放的文件分别为:

py:接收敏感信息的后端Flask程序;

json:批量发送邮件程序的配置文件;

txt:钓鱼邮件正文(html格式)

txt:接收邮件的目标邮箱

sendmail:批量发送邮件程序,当前目录下./sendmail直接执行

图 10 文件目录结构

需要配置的文件主要是mailspoof.json、mail.txtresseeList.txt

mail.txt中是要发送的邮件内容(html格式),在QQ邮箱的编辑邮件-A格式-</>中便可自动生成对应格式的html源码。

图 11 邮件正文

图 12 邮件html源码

将邮件html源码复制进mai.txt中即可。

resseeList.txt中输入发送的目标邮箱地址。

图 13 目标列表

mailspoof.json是批量发送邮件程序的配置文件,具体的配置内容可参加下图:

图 14 邮件发送程序配置文件

No.5 程序启动

执行命令启动相关组件:

# systemctl start elasticsearch

# systemctl start kibana

# systemctl start nginx

# /usr/share/logstash/bin/logstash -f /etc/logstash/001-nginx-access/001-logstash.conf --path.data /etc/logstash/001-nginx-access/run &

# /usr/share/logstash/bin/logstash -f /etc/logstash/002-auth-info/002-logstash.conf --path.data /etc/logstash/002-auth-info/run &

# python3 /opt/mailspoof/http_data.py &

No.6 开始钓鱼

完成基本配置,正常启动程序后,在/opt/mailspoof/路径下执行./sendmail命令开始批量发送钓鱼邮件。

图 15 邮件发送成功

浏览器访问http://域名or IP:5601点击侧边栏-Analytics-Dashboard即可查看“邮件钓鱼演练成果展示“图表。

图 16 查看演练成果

如需查看某一次演练的成果,在图表中的筛选栏中,输入演练标识(即mailspoof.json配置文件中的tag字段的值),即可获取相关数据。

图 17 筛选某一次演练

至此,一次完整的邮件钓鱼演练正式完成,信息安全最大的安全风险往往并不是技术的缺陷,而是由于人的疏忽带来的,一次优质的邮件钓鱼演练,可以帮助企业员工有效的树立起良好的信息安全防范意识。

不仅仅是邮件,短信、微信、QQ、电话等通信方式发来的信息,一旦涉及金钱交易、敏感信息获取,务必提高警惕,不听不信、不转账不泄密!

太可怕了,现在连钉钉都有诈骗了!冒充领导要我加班?我安全意识很强的!

批量发送邮件的脚本使用golang编写,代码也比较简单,在docker环境中已经编译成了可直接执行的sendmail,如有需要脚本源码的同学,可扫描关注微信公众号“白杨木”回复“sendmail“,即可获取脚本源码。

# 邮件钓鱼 # 邮件伪造 # 应急演练 # 宣传周
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录