利用SPF自动化反钓鱼侦察:构建主动防御系统

本文详细介绍了如何利用Sender Policy Framework(SPF)的exists机制构建自动化反钓鱼侦察系统,通过DNS查询日志捕获未授权邮件服务器,并集成Shodan扫描实现实时威胁响应。

攻击性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记录:

1
v=spfc1 include:mail.youdomain.com -exists:{d}.AutoRecon.yourdomain.com -all

接收SMTP服务器执行以下操作:

  1. 从原始邮件服务器接收,其中FROM字段 = 域
  2. 检查mail.yourdomain.com的SPF记录,如果找到原始服务器 = 好,否则 = 继续
  3. 检查是否存在[ORIGINATING.MAIL.SERVER.NAME].autorecon.yourdomain.com的A DNS记录
  4. 杀死其他所有内容(-all)

关键点在于:如果邮件来自不在mail.yourdomain.com的SPF头中的服务器,接收邮件服务器将尝试检查动态构建的主机名的别名记录。您现在需要做的就是构建一个配置为接受.autorecon.yourdomain.com的DNS查询的DNS服务器,并将所有查询提供给自动侦察系统,并告诉您的全局DNS提供商autorecon.yourdomain.com由您的自动侦察服务权威回答。让我们开始吧。

在AutoRecon服务上

  • Bind配置为接受AutoSPF.yourdomain.com的查询
  • SSMTP配置为发送邮件

获取文件:

1
2
3
4
5
6
7
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

1
2
3
4
5
6
nano /etc/bind/named.conf
zone "autorecon.YOURDOMAIN.com" {
    type master;
    notify no;
    file "/etc/bind/AutoRecon.yourdomain.com";
};

设置您的BIND9域 – 区域文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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

1
2
service bind9 restart
service bind9 status

配置Bind将DNS查询记录到/var/log/syslog:

1
2
3
4
# 以下命令切换查询日志记录,确保已启用
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、事件响应。自动化 Lights Out。

有人试图用伪造来自您域的电子邮件钓鱼您的员工。由于您的SPF记录未能授权原始邮件服务器,您的AutoSPFRecon系统得到警报并触发电子邮件、Fail2Ban封锁,并且钓鱼服务器对您基础设施的可见性立即变暗。

运行AutoReconSPF.sh

在此测试中,我发送了一封伪造具有AutoReconSPF SPF记录的域的电子邮件。电子邮件是从Digital Ocean droplet at 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 for the Masses博客文章:https://www.blackhillsinfosec.com/how-to-configure-spfv1-explained-for-the-masses/

想要从撰写此博客的人那里学习更多疯狂技能?
查看Jordan和Kent的这些课程:

  • 防御企业
  • 假设妥协 – 带有检测和Microsoft Sentinel的方法论 提供实时/虚拟和点播!
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计