freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
  • 0 文章数
  • 0 关注者
文章目录