0x00 背景
郵箱偽造技術,可被用來做釣魚攻擊。
即偽造管理員或者IT運維部等郵箱發郵件,獲取信任使對方打開附帶的木馬文件或者回復想要獲取的敏感資料等。
0x01 細節
SMTP協議中,允許發件人偽造絕大多數的發件人特征信息。
這就導致了可以偽造別人發送郵件。
來看一下烏雲上的案例:
網上還有個網站比較方便直接發送偽造郵件的:
0x02 防御
為了防止郵箱偽造,就出現了SPF。
SPF(或是Sender ID)是Sender Policy Framework的縮寫。
當你定義了你域名的SPF記錄后,接收郵件方會根據你的SPF記錄來判斷連接過來的IP地址是否被包含在SPF記錄里面,如果在,則認為是一封正確的郵件,否則則認為是一封偽造的郵件。現在絕大部份反垃圾郵件系統都支持SPF過濾,這種過濾一般不會有誤判,除非是郵件系統管理員自己把SPF記錄配置錯誤或遺漏.
至於domain key則是由Yahoo所提出的。必需配合軟件和加密技術,比較麻煩。目前使用的也不多。 Google目前所謂的支援domainkey也只是在寄信的時候加入,免得被yahoo退信,本身並沒有要求寄件者要有domainkey。
正確設置后郵件頭一般顯示如下:
Received-SPF: pass (google.com: domain of wordpress@your_domain.com designates 72.47.192.112 as permitted sender) client-ip=72.47.192.112; Authentication-Results: mx.google.com; spf=pass (google.com: domain of wordpress@your_domain.com designates 72.47.192.112 as permitted sender) smtp.mail=wordpress@your_domain.com
關於SPF是否有設定的必要?一般認為有加上SPF比較好,怕萬一碰到哪個收件服務器有采用SenderID機制來過濾信件的話就有用處了。
如何增加SPF記錄,非常簡單,在DNS里面添加TXT記錄即可,可以使用下面兩個SPF生成檢查工具:
http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/default.aspx
http://old.openspf.org/wizard.html
a 你域名的A記錄,一般選擇yes,因為他有可能發出郵件,比如我上面提到的Wordpress的回信。 mx 一般也是yes,MX服務器會有退信等。 ptr 選擇no,官方建議的。 inlude 如果有可能通過一個isp來發信,isp有自己的SPF記錄,則填入這個isp的域名。比如你使用Google Apps,應該增加include:google.com記錄,因為你的郵件時從Google服務器發出去的。 ip4: 你還有沒有其他的ip發信?可能你的smtp服務器是獨立出來的,那么就填入你的IP地址或者網段。 ~all: 意思是除了上面的,其他的都不認可。當然是yes了。
查看SPF記錄的方法
Windows下進入DOS模式后用以下命令
nslookup -type=txt 域名
Unix操作系統下用:
# dig -t txt 域名
http://drops.wooyun.org/papers/534