作者:Kent Ickler
注意: 本博客中提及的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习参考,并可能被集成到现代工具和技术中。
摘要: 本文描述了构建主动系统以自动侦察SPF违规的过程。请注意,部分操作可能在某些地区不合法,实施前请咨询法律团队。
背景
在之前的SPF配置博客中,未详细讨论exists和reason机制的强大功能。除了SPF专家外,很少有人知道可以围绕这两个机制构建响应自动化系统。语法参考:RFC 4408。
exists机制详解
exists机制会强制(合规的)接收邮件服务器检查特定域是否存在特定的A记录。更重要的是,可以在exists机制中使用SPF宏,从而将源自SMTP服务器的信息传递到信封FROM字段中域所有者指定的位置。
示例SPF记录:
|
|
接收SMTP服务器的操作流程:
- 接收来自发件服务器的邮件(FROM字段=域名)。
- 检查mail.yourdomain.com的SPF记录,若找到发件服务器则通过,否则继续。
- 检查是否存在
[发件服务器IP].autorecon.yourdomain.com
的A记录。 - 拒绝其他所有邮件(-all)。
实施步骤
1. 配置AutoRecon服务
- 安装所需工具:
1 2 3 4
cd /opt/ git clone https://github.com/Relkci/AutoSPFRecon apt-get install bind9 logtail python-setuptools easy_install clic shodan
2. 配置BIND9域名解析
- 编辑
/etc/bind/named.conf
:1 2 3 4 5
zone "autorecon.YOURDOMAIN.com" { type master; notify no; file "/etc/bind/AutoRecon.yourdomain.com"; };
- 配置区域文件并重启BIND:
1 2
service bind9 restart service bind9 status
3. 启用DNS查询日志
|
|
4. 设置域DNS记录
警告: 以下SPF记录会导致所有邮件被拒绝,请谨慎使用。
适用于从不发送邮件的域:
- A记录:
autorecon.ns.yourdomain.com
→ AutoRecon服务IP - NS记录:
autorecon.yourdomain.com
→autorecon.ns.yourdomain.com
- TXT记录:
v=spf1 -exists:%{i}.autorecon.yourdomain.com -all
工作流程
当邮件服务器接收邮件且发件服务器未在SPF记录中找到时,会查询%{i}.autorecon.yourdomain.com
(%{i}被替换为发件服务器IP)。AutoRecon服务记录该查询,并通过AutoReconSPF.sh
脚本解析syslog、执行Shodan查询,并将结果发送至指定邮箱。
扩展功能
该框架支持集成NMAP扫描、事件响应(IR)、Fail2Ban或IPTables黑名单。例如:当攻击者尝试钓鱼时,系统可自动触发邮件警报和Fail2Ban封锁,使攻击者无法访问基础设施。
测试示例
从Digital Ocean droplet(206.189.xxx.xxx)发送伪造邮件后,系统通过Shodan查询攻击者IP并将结果通过邮件交付。
资源链接
- GitHub代码库:https://github.com/Relkci/AutoSPFRecon
- RFC 4408:http://www.openspf.org/RFC_4408
- BHIS SPF详解博客:https://www.blackhillsinfosec.com/how-to-configure-spfv1-explained-for-the-masses/
本文仅提供技术学习参考,请合法合规使用。