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
我還年輕,我渴望上路。 帶着最初的激情,追尋着最初的夢想,感受着最初的體驗,我們上路吧。
——凱魯亞克 《在路上》