TL; DR:这篇文章描述了通过SPF构建一个自动发现钓鱼攻击活动的过程。
免责声明:
这个版本的某些部分在你所在的区域可能不合法。在野外使用需要你自担风险。在实际利用之前你需要评估你的目的。BHIS @Krelkci对你的行为不承担任何责任。
背景:
在我们之前关于配置SPF的博客文章中,我没有详细说明存在和机制的可怕性。SPF专家以外的人都知道,你可以围绕这两种机制的使用构建一个自动化响应系统。喜欢阅读文档吗?请看这里:RFC 4408 http://www.openspf.org/RFC_4408
现有的机制将强制(兼容)接收邮件服务器检查特定域是否存在特定的A DNS记录。虽然这看起来很有趣,但更重要的是在现有机制中使用SPF宏。它实质上允许你将有关原始SMTP服务器的信息从接收SMTP服务器传递到信封的FROM字段中域的域所有者确定的位置。
你有什么新的想法?
我们来看看这个SPF记录:
v=spfc1 include:mail.youdomain.com -exist:{d}.AutoRecon.yourdomain.com -all
接收SMTP服务器会执行以下操作:
· 从FROM字段=域的原始邮件服务器接收。
· 检查mail.yourdomain.com的SPF记录,找到原始服务器就是OK的,否则继续。
· 检查[ORIGINATING.MAIL.SERVER.NAME] .autorecon.yourdomain.com是否存在A DNS记录。
· 拒绝其他一切(-all)。
以下是要点。如果邮件是从mail.yourdomain.com的SPF标头中不存在的服务器传递的,则接收邮件服务器将尝试检查别名记录,以查找动态构建的动态主机名。你现在要做的就是构建一个配置为接受.autorecon.yourdomain.com的DNS查询的DNS服务器。并向自动侦察系统提供所有查询,并告知你的全局DNS提供商autorecon.yourdomain.com由你的自动侦察服务授权响应。让我们开始操作吧。
在AutoRecon服务上
· 绑定已配置为接受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 click
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. [email protected] (
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
重启绑定:
Service bind9 restart
Service bind9 status
配置绑定以将DNS的查询记录到/var/log/syslog:
#below command toggles query logging, be sure it is enabled
rdnc querylog
#confirm it is turned on with
tail -n 2 /var/log/syslog
设置域DNS记录
**注意**设置SPF记录如下所示,将告知所有邮件服务器拒绝你的电子邮件**
你可以使用exist:autospf.yourdomain.tld机制,它不会立即拒绝电子邮件。请务必保留SPF的正确部分,以免拒绝所有电子邮件。以下示例适用于不应发送电子邮件的域。
请参阅我们关于SPF记录的博客文章,为你的组织创建正确的SPF记录。
在你的TLD名称服务器上:
Type: A Host: autorecon.ns.yourdomain.com Value: IP-OF-AutoRecon
Type: NS Host: autorecon.yourdomain.com Value: autorecon.ns.yourdomain.com
Type: TXT Host: @ Value: “v=spf1 -exist:%
{i}.autorecon.yourdomain.com -all”
把它们放在一起:
当邮件服务器收到电子邮件并且原始邮件服务器检查SPF记录并发现它无法在include:字段中或其他邮件记录中找到邮件服务器时,它将一直继续查找,exist:%{i}.autorecon.yourdomain.com
这将指示它用发起电子邮件的服务器的IP替换 %{i} 服务器将查找autorecon.yourdomain.com的NS记录,并发现它是autorecon.yourdomain.com服务。它将查询{IP} .autorecon.yourdomain.com,并且不会收到有效的DNS响应。然而,autorecon.yourdomain.com上的绑定服务器将在/var/log/syslog中记录查询。
AutoReconSPF.sh脚本读取这些查询的syslog,运行一个shodan查询,然后将结果传递到相关的电子邮件地址。
可以将AutoReconSPF.sh脚本配置为使用crontabs每隔几分钟运行一次。
还有什么可以做的:
此PoC脚本用一种易于分区和易于编辑的方式设置框架。你可以添加自己的脚本操作,例如NMAP扫描,IR事件,甚至可以将其链接回Fail2Ban或IPTable黑名单。
Expand. NMap, Fail2Ban, IPTables, Incident Response. Automate Lights Out.
有人试图通过伪造成来自你域名的电子邮件来欺骗你的员工。由于你的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: SPF that includes exist: mechanic http://www.openspf.org/RFC_4408
BHIS SPF for the Masses Blog Post: https://www.blackhillsinfosec.com/how-to-configure-spfv1-explained-for-the-masses/