郵件發送工具swaks基礎使用與郵件SPF配置漏洞簡析

1.swaks工具使用

2.什麼是郵件的SPF配置

3.SPF漏洞簡析

4.SPF漏洞修復方案

 

 

壹   swaks工具的使用

(怎麼這麼多瑞士軍刀.....)

一般來說kali自帶:

基礎用法:

swaks –to <要測試的郵箱>      用來測試郵箱的連通性

我們先申請一個臨時郵箱:http://24mail.chacuo.net/enus

[root@AlexzKali ~/swaks]# swaks -t [email protected] -f [email protected] --body 'this is a test email' --header 'Subject:TEST' --ehlo alexz.com

回車發送:

當然,這只是一個臨時郵箱,沒有做任何的垃圾郵件過濾等其他的防禦措施,所以可以收到任何的郵件;

--to <接收方的地址>

--from <要顯示的發件人郵箱>

--ehlo <僞造的郵件ehlo頭>

--body <郵件正文>

--header <郵件頭信息,subject爲郵件標題>

--data <源郵件>  #可以使用txt格式的郵件原文進行發送郵件

當然,我們這裏使用swaks並不是用來無聊發郵件的,因爲使用swaks其實還可以進行更高級的郵件僞造,幾乎可以僞造郵件中的每一個參數。

使用--body定義文件內容,--header定義郵件標題頭,--ehlo定義僞造的ehlo頭信息

[root@AlexzKali ~/swaks]# swaks --body "FAKE-TEST" --header "Subject:Fake" --to [email protected] --from [email protected]

這樣,馬總就成功的給我發了一封郵件,邀請我入職阿里巴巴的CFO

那這樣一來,豈不是誰都可以冒充馬總到處發郵件去騙財騙色了?

針對這個SMTP協議的一處天生的漏洞,人們開發出了一個郵件服務器的選擇過濾功能:SPF配置

 

 

 

貳   什麼是郵件服務器的SPF配置

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

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

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

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

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

因爲不懷好心的人雖然可以「聲稱」他的郵件來自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(中立) 

嚴格來說,SPF 數據應該創建爲 SPF 記錄。但是鑑於很多 DNS 服務商不支持 SPF 記錄,甚至有的郵件服務器也不支持 SPF 記錄,因此大部分郵件服務提供商都創建爲一條 TXT 記錄;

在dns記錄裏面,除了最常見的a記錄,cn記錄,mx記錄,還有不常見的txt記錄。

txt記錄用來保存域名的附加文本信息,txt記錄的內容按照一定的格式編寫,最常用的是spf格式,spf用於登記某個域名擁有的用來外發郵件的 所有ip地址。
mx記錄的作用是給寄信者指明某個域名的郵件服務器有哪些
spf格式的txt記錄的作用跟mx記錄相反,它向收信者表明,哪些郵件服務器 是經過某個域名認可會發送郵件的。
spf的作用主要是反垃圾郵件,主要針對那些發信人僞造域名的垃圾郵件。

按照spf格式在dns中增加一條txt類型的記錄,將提高該域名的信譽度,同時可以防止垃圾郵件僞造該域的發件人發送垃圾郵件。

所以我們通常使用Linux下的dig命令去查看目標郵件服務器的SPF配置信息:

我這邊查詢的是某企業的騰訊企業郵,可以看到如下信息

"v=spf1 include:spf.mail.qq.com ~all"

  • v=spf1    這是必須的,這個表示採用 SPF 1 版本,現在它的最新版本就是第 1 版。
  • nclude    格式爲include:<domain>,表示引入<domain>域名下的 SPF 記錄。注意,如果該域名下不存在 SPF 記錄,則會導致一個PermError結果。例如: "v=spf1 include:example.com -all" 即採用和 example.com 完全一樣的 SPF 記錄   這裏可以看到他和騰訊的QQ郵箱使用了相同的SPF記錄
  • ~all    軟拒絕所有的域名發送的郵件(參考上面提到的SPF語法)

只要最後這裏不是硬拒絕的 -all 我們就有課可乘之機:

 

 

 

 

叄   SPF漏洞簡析

漏洞描述

SPF 記錄是一種域名服務(DNS)記錄,用於標識哪些郵件服務器可以代表您的域名發送電子郵件。 SPF 記錄的目的是爲了防止垃圾郵件發送者在您的域名上,使用僞造的發件人地址發送郵件。

若您未對您的域名添加 SPF 解析記錄,則黑客可以仿冒以該域名爲後綴的郵箱,來發送垃圾或詐騙郵件

 

這裏依然是一個企業的騰訊企業郵,我冒充一下馬總給我的有郵箱發一下郵件:[email protected]

然後馬總就給我發郵件了:

莫名的興奮,興奮過後確實無盡的空虛

 

最後總結一下

檢查一個企業的郵箱是否存在該漏洞,先dig一下SPF記錄,看看只要不是硬拒絕 -all 就有可能存在該漏洞

然後直接使用網易系列的郵箱進行測試就行,網易郵箱護理機制比較寬鬆

要是不想使用swaks發郵件也可以使用foxmail

 

 

 

 

肆   SPF漏洞修復方案

在您的 DNS 服務提供商處,爲您的域名添加一條 TXT 記錄:

  • 將主機字段(Host)設置爲您子域名的名稱。(例如,如果您的電子郵件地址是[email protected],則爲 mail。)如果不使用子域名,則將其設爲@

  • 用您的 SPF 記錄填寫 TXT 值字段。例如 v = spf1 a mx include:secureserver.net-all

 

 

 

 

 

 

參考資料

http://www.mamicode.com/info-detail-2418032.html

https://www.freebuf.com/articles/web/138764.html

https://www.cnblogs.com/zhaijiahui/p/11494626.html

https://help.aliyun.com/knowledge_detail/37532.html

 

 

我還年輕,我渴望上路。  帶着最初的激情,追尋着最初的夢想,感受着最初的體驗,我們上路吧。

                                                                                                                                                        ——凱魯亞克 《在路上》

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