利用SPF框架自动化反钓鱼侦察的技术指南
攻击性SPF:如何利用发送方策略框架自动化反钓鱼侦察
作者:Kent Ickler
警告: 本文提及的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习资料,并可能被整合到现代工具和技术中。
摘要: 本文描述了构建主动系统以自动侦察SPF违规的过程。
免责声明: 此构建的某些部分在您所在地区可能不合法。请自行承担使用风险。实施前请与团队讨论。BHIS和@Krelkci不对您的行为负责。
背景
在之前关于配置SPF的博客文章中,我未详细阐述exists和reason机制的强大功能。除SPF专家外,很少有人知道可以围绕这两个机制构建响应自动化系统。喜欢阅读?语法参考:RFC 4408 http://www.openspf.org/RFC_4408
exists机制会强制(合规的)接收邮件服务器检查特定域是否存在特定的A DNS记录。虽然这听起来有趣,但更重要的是在exists机制中使用SPF宏。它本质上允许您将关于原始SMTP服务器的信息从接收SMTP服务器传递到信封FROM字段中域的所有者指定的位置。
如何实现?
请看这个SPF记录:
v=spf1 include:mail.yourdomain.com -exists:{d}.AutoRecon.yourdomain.com -all
接收SMTP服务器执行以下操作:
- 接收来自原始邮件服务器的邮件,其中FROM字段=域
- 检查mail.yourdomain.com的SPF记录,如果找到原始服务器=良好,否则继续
- 检查是否存在[原始邮件服务器名称].autorecon.yourdomain.com的A DNS记录
- 拒绝所有其他内容(-all)
关键点在于:如果邮件来自未在mail.yourdomain.com的SPF头中列出的服务器,接收邮件服务器将尝试检查动态构建的主机名的别名记录。您现在需要做的就是构建一个DNS服务器,配置为接受.autorecon.yourdomain.com的DNS查询,并将所有查询提供给自动侦察系统,同时告知您的全局DNS提供商autorecon.yourdomain.com由您的自动侦察服务权威解答。让我们开始吧。
在AutoRecon服务上
- Bind配置为接受AutoSPF.yourdomain.com的查询
- SSMTP配置为发送邮件
获取文件:
cd /opt/
git clone https://github.com/Relkci/AutoSPFRecon
apt-get install bind9
apt-get install logtail
apt-get install python-setuptools
easy_install clic
easy_install shodan
设置BIND9域 - named.conf:
nano /etc/bind/named.conf
zone "autorecon.YOURDOMAIN.com" {
type master;
notify no;
file "/etc/bind/AutoRecon.yourdomain.com";
};
设置BIND9域 – 区域文件:
nano /etc/bind/autospf.yourdomain.tld
$TTL 3D
@ IN SOA autorecon.ns.yourdomain.com. admin@yourdomain.com (
199802151 ; serial, todays date + todays serial #
21600 ; refresh, seconds
3600 ; retry, seconds
604800 ; expire, seconds
30 ) ; minimum, seconds
;
NS ns ; Inet Address of name server
;
localhost A 127.0.0.1
ns A IP-OF-AutoRecon
重启Bind:
service bind9 restart
service bind9 status
配置Bind将DNS查询记录到/var/log/syslog:
# 以下命令切换查询日志记录,确保已启用
rdnc querylog
# 确认已开启
tail -n 2 /var/log/syslog
设置域DNS记录:
注意: 按以下设置SPF记录将告知所有邮件服务器拒绝您的电子邮件**
您可以使用?exists:autospf.yourdomain.tld机制,这样不会立即拒绝电子邮件。确保保留SPF的适当部分,以免拒绝所有电子邮件。以下示例适用于从不发送电子邮件的域。
参考我们关于SPF记录的博客文章为您的组织创建适当的SPF记录。
在您的TLD名称服务器上:
- 类型:A | 主机:autorecon.ns.yourdomain.com | 值:IP-OF-AutoRecon
- 类型:NS | 主机:autorecon.yourdomain.com | 值:autorecon.ns.yourdomain.com
- 类型:TXT | 主机:@ | 值:"v=spf1 -exists:%{i}.autorecon.yourdomain.com -all"
整体流程
当邮件服务器接收电子邮件,且原始邮件服务器检查SPF记录发现无法在include:或其他邮件记录中找到该邮件服务器时,它会继续直到找到exists:%{i}.autorecon.yourdomain.com,这将指示它用原始电子邮件服务器的IP替换%{i}。服务器将查找autorecon.yourdomain.com的NS记录,并发现它是autorecon.yourdomain.com服务。它将查询{IP}.autorecon.yourdomain.com,但不会收到有效的DNS响应。然而,autorecon.yourdomain.com上的Bind服务器会在/var/log/syslog中记录该查询。
AutoReconSPF.sh脚本读取syslog中的这些查询,运行shodan查询,然后将结果发送到指定的电子邮件地址。AutoReconSPF.sh脚本可以通过crontabs配置为每隔几分钟运行一次。
其他功能
此概念验证脚本以模块化且易于编辑的方式设置了框架。您可以添加自己的脚本操作,如NMAP扫描、IR事件,甚至将其链接回Fail2Ban或IPTable黑名单。扩展功能包括:NMap、Fail2Ban、IPTables、事件响应。实现自动化无干预防护。
当有人尝试用伪造来自您域的电子邮件钓鱼您的员工时,由于您的SPF记录未授权原始邮件服务器,您的AutoSPFRecon系统会收到警报并触发电子邮件、Fail2Ban封锁,立即使钓鱼服务器对您基础设施的可见性变为黑暗。
运行AutoReconSPF.sh
在此测试中,我发送了一封伪造具有AutoReconSPF SPF记录的域的电子邮件。电子邮件从Digital Ocean droplet(206.189.xxx.xxx)发送。接收邮件服务器向autospf.bhis.io发送查询,并创建日志条目。AutoReconSPF.sh识别违规邮件服务器的IP并向shodan查询,然后将结果通过电子邮件发送给我。非常棒。
结果电子邮件已送达。
链接
- GitHub:https://github.com/Relkci/AutoSPFRecon
- RFC:包含exists机制的SPF http://www.openspf.org/RFC_4408
- BHIS SPF大众化博客文章:https://www.blackhillsinfosec.com/how-to-configure-spfv1-explained-for-the-masses/
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码