防釣魚郵件-SPF技術介紹

 

        SPF簡介

      

        SPF,全稱爲 Sender Policy Framework,即發件人策略框架。

當前 Email 通信,還是在使用 SMTP 這個協議。SMTP 的全稱爲 Simple Mail Transfer Protocol,即「簡單郵件傳輸協議」。正如它的名字鎖暗示的,SMTP 實際上是一個非常簡單(甚至簡陋)的傳輸協議,本身並沒有很好的安全措施。根據 SMTP 的規則,發件人的郵箱地址是可以由發信方任意聲明的。在SMTP 協議制定的時候也許還好,但在垃圾和詐騙郵件橫行的今天,這顯然是極不安全的。

        SPF 出現的目的,就是爲了防止隨意僞造發件人。

 SPF記錄原理

 

        SPF 記錄實際上是服務器的一個 DNS 記錄,原理其實很簡單:

        假設郵件服務器收到了一封郵件,來自主機的 IP 是222.91.123.220,並且聲稱發件人爲[email protected]。爲了確認發件人不是僞造的,郵件服務器會去查詢example.com的 SPF 記錄。如果該域的 SPF 記錄設置允許 IP 爲222.91.123.200的主機發送郵件,則服務器就認爲這封郵件是合法的;如果不允許,則通常會退信,或將其標記爲垃圾/仿冒郵件。

        釣魚郵件雖然可以「聲稱」他的郵件來自example.com,但是他卻無權操作example.com的 DNS 記錄;同時他也無法僞造自己的 IP 地址。因此 SPF 是很有效的,當前基本上所有的郵件服務提供商(例如 Gmail、QQ 郵箱等)都會驗證它。

 

SPF語法

        

一條 SPF 記錄定義了一個或者多個 mechanism,而 mechanism 則定義了哪些 IP 是允許的,哪些 IP 是拒絕的。

這些 mechanism 包括以下幾類:

all | ip4 | ip6 | a | mx | ptr | exists | include

每個 mechanism 可以有四種前綴:

  • "+"  Pass(通過)

  • "-"  Fail(拒絕)

  • "~"  Soft Fail(軟拒絕)

  • "?"  Neutral(中立)

        查詢時,將從前往後依次查詢每個 mechanism。如果一個 mechanism 包含了要查詢的 IP 地址(稱爲命中),則查詢結果由相應 mechanism 的前綴決定。默認的前綴爲+。如果測試完所有的 mechanisms 也沒有命中,則結果爲 Neutral。

        除了以上四種情況,還有 None(無結果)、PermError(永久錯誤)和 TempError(臨時錯誤)三種其他情況。對於這些情況的解釋和服務器通常的處理辦法如下:

下面詳細分析每個Mechanisms

all

表示所有 IP,肯定會命中。因此通常把它放在 SPF 記錄的結尾,表示處理剩下的所有情況。例如:

  • "v=spf1 -all" 拒絕所有(表示這個域名不會發出郵件)

  • "v=spf1 +all" 接受所有(域名所有者認爲 SPF 是沒有用的,或者根本不在乎它)

ip4

格式爲ip4:<ip4-address>或者ip4:<ip4-network>/<prefix-length>,指定一個 IPv4 地址或者地址段。如果prefix-length沒有給出,則默認爲/32。例如:

  • "v=spf1 ip4:192.168.0.1/16 -all"

只允許在 192.168.0.1 ~ 192.168.255.255 範圍內的 IP

ip6

格式和ip4的很類似,默認的prefix-length/128。例如:

  • "v=spf1 ip6:1080::8:800:200C:417A/96 -all"

只允許在 1080::8:800:0000:0000 ~ 1080::8:800:FFFF:FFFF 範圍內的 IP

a 和 mx

這倆的格式是相同的,以a爲例,格式爲以下四種之一:

  • a

  • a/<prefix-length>

  • a:<domain>

  • a:<domain>/<prefix-length>

會命中相應域名的 a 記錄(或 mx 記錄)中包含的 IP 地址(或地址段)。如果沒有提供域名,則使用當前域名。例如:

  • "v=spf1 mx -all"

允許當前域名的 mx 記錄對應的 IP 地址。

  • "v=spf1 mx mx:deferrals.example.com -all"

允許當前域名和 deferrals.example.com 的 mx 記錄對應的 IP 地址。

  • "v=spf1 a/24 -all"

類似地,這個用法則允許一個地址段。

例如,這是一個比較常見的 SPF 記錄,它表示支持當前域名的 a 記錄和 mx 記錄,同時支持一個給定的 IP 地址;其他地址則拒絕:

  • v=spf1 a mx ip4:173.194.72.103 -all

include

格式爲include:<domain>,表示引入<domain>域名下的 SPF 記錄。注意,如果該域名下不存在 SPF 記錄,則會導致一個PermError結果。例如:

  • "v=spf1 include:example.com -all"

即採用和 example.com 完全一樣的 SPF 記錄

exists

格式爲exists:<domain>。將對<domain>執行一個 A 查詢,如果有返回結果(無論結果是什麼),都會看作命中。

ptr

格式爲ptr或者ptr:<domain>。使用ptr機制會帶來大量很大開銷的 DNS 查詢,所以連官方都不推薦使用它。

 

SPF記錄查詢

windows:

nslookup -qt=txt example.com

linux:

dig -t txt example.com

 

其他

 

spf官網:http://www.openspf.org/

spf驗證:http://www.kitterman.com/spf/validate.html

其他技術:DKIM,DKIM也是一種防垃圾軟件技術,在國外用的比較多

僞造釣魚軟件:swaks

轉自:https://www.bianchengquan.com/article/406142.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章