崔 寧,薛 質,施 勇,郭鳳嬋
(1.上海交通大學 網絡空間安全學院,上海 200240;2.廣東電網公司 江門供電局,廣東江門 529099)
當前,電子郵件是互聯網中應用最廣的服務之一,在網絡通信中扮演著十分重要的角色。近年來,根據反釣魚網絡工作組(Anti-Phishing WorkingGroup,APWG)最新發布的網絡釣魚活動趨勢報告顯示,網絡釣魚在2021 年第一季度繼續保持創紀錄的增長水平[1]。報告顯示,網絡釣魚數量在2021 年1 月達到峰值,創下245 771 個的歷史高位[2]。而針對商務電子郵件攻擊,黑客最常用的手段就是網絡釣魚[3]。網絡釣魚電子郵件攻擊指,攻擊者利用仿冒的電子郵件欺騙受害者將賬戶、口令等信息內容發送給特定的接受者;或者是指,引導受害者點擊仿冒正常網頁的頁面,如仿冒的金融機構或投資理財的網頁頁面,從而導致賬戶名稱及登陸密碼等被竊取。這種攻擊也讓越來越多的企業遭受經濟損失,甚至會導致整個公司無法正常運轉。為了確保公司交易的機密,各大公司都逐漸開始重視電子郵件安全。現實應用中,由于簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)并沒有過多的安全性設計[4],因此電子郵件系統的安全性基本依賴于之后添加的SPF[5]、DKIM[6]、DMARC[7]等安全協議,但是這些協議目前各公司的采用率卻并沒有很高。
現階段,電子郵件身份認證有發件人策略框架(Sender Policy Framework,SPF)、域名密鑰識(DomainKeys Identified Mail,DKIM)、基于域的消息認證、報告和一致性(Domain-based Message Authentication,Reporting and Conformance,DMARC)這3 種安全擴展協議。SPF 可防止域名欺騙,令郵件服務器能夠確定郵件是何時從其所用域名發出的。DKIM 協議可確保郵件內容不被偷窺或篡改。DMARC 協議以一組協調一致的策略融合了SPF 和DKIM 協議,能夠將發件人域名與郵件頭中“From:”域列出的內容相關聯,還具備更好的收件人反饋機制[8]。三大電子郵件安全協議互為補充,可為電子郵件提供最佳的安全防護。但是,根據筆者日常的工作經驗發現,很多公司甚至一些世界500 強的大公司,都沒有使用或錯誤配置了SPF和DMARC 這兩種最被接受和使用的電子郵件安全機制,所有域的SPF 和DMARC 記錄都可以公開查詢。這意味著如果出現配置問題,任何攻擊者都可以掌握情況并發起釣魚攻擊,并且攻擊的結果是可預測的。
當前,一種新的電子郵件安全標準,稱為命名實體的基于DNS的身份驗證(DNS-based authentication,DANE)[9],它為郵件傳輸提供了更安全的方法。DANE 依靠域名系統安全擴展(Domain Name System Security Extensions,DNSSEC)[10]來實現完整性和真實性。目前DANE 很少使用,流行起來還需要時間。而本文工作側重于使用最廣泛的電子郵件安全框架SPF 和DMARC,并嘗試調查和分析現有安全機制的實施不足并提供解決方案。
與此同時,許多研究人員對SPF、DKIM 和DMARC的部署進行了深度研究[11-13]。目前郵件認證技術主要包括基于IP的認證與基于加密的認證兩大類[14]。目前,美國國土安全部要求所有聯邦機構部署嚴格DMARC 政策[15]。同時,也已經開發出新的協議來增強欺騙檢測,比如經過身份驗證的接 收鏈(Authenticated receiving chain,ARC)[16]。ARC 建立在SPF、DKIM 和DMARC 之上,旨在解決修改郵件轉發器導致的認證失敗問題。ARC 允許每個郵件轉發器將他們的身份驗證評估結果附加到轉發的郵件中,以便接收服務器可以根據早期轉發器的身份驗證結果做出明智的決定。由于ARC 依賴于DMARC 驗證的正確性,所以仍不能解決問題。
開放完美隱私(OpenPretty Good Privacy,OpenPGP)[17]和安全多用途Internet 郵件擴展(Secure Multipurpose Internet Mail Extensions,S/MIME)[18]是通過數字簽名提供端到端消息真實性的標準。研究人員發現許多電子郵件客戶端容易受到簽名欺騙或純文本滲漏攻擊。他們的一些攻擊會制作格式錯誤的MIME 消息,以利用簽名驗證程序和電子郵件顯示組件之間的不一致。
有許多研究討論基于從電子郵件內容和標題中提取的特征的網絡釣魚檢測方法,其中大部分依賴于機器學習和深度學習。基于公共和私人收集的電子郵件數據集構建他們的模型,并使用自然語言處理(Natural Language Processing,NLP)方法處理電子郵件樣本,包括詞頻-逆文檔頻率(term frequency-inverse document frequency,TF-IDF)、詞袋(Bag of Words,BoW)等[19]。使用來自UCI存儲庫的垃圾郵件數據集,以及用于特征選擇的多節優化器(Multi-Verse Optimizer)和K-最近鄰算法(K-Nearest Neighbor,KNN),并實現了高精度[20]。使用常見的NLP 文本處理方法,如BoW 和TF-IDF文本表示進行特征提取[21]。他們將多種機器學習和深度學習算法用于檢測模型,發現各種深度學習架構的性能非常接近。
本文掃描并分析目前世界上影響力最大的4 800多個公司或組織的域,發現90%以上的域存在SPF 配置問題,70%以上的域存在DMARC 配置問題。并針對發現的問題,提出SPF和DMARC的全面配置建議。
SMTP 是用于電子郵件傳輸的因特網(Internet)標準[4],它于1982 年設計。圖1 顯示了典型的電子郵件傳輸過程。SMTP的一個關鍵限制是它沒有內置的安全功能來防止人們(攻擊者)冒充或欺騙任意發件人地址。
電子郵件服務的簡易工作流程如圖1 所示。在電子郵件系統中,主要涉及到4 個角色,分別為發件人、收件人、轉發者和用戶界面(User Interface,UI)渲染器。每個角色應承擔不同的安全職責。發件人寫的電子郵件是從郵件用戶代理(Mail Transfer Agent,MUA)通過SMTP 或超文本傳輸協議(Hyper Text Transfer Protocol,HTTP)協議傳送到發件人的郵件傳輸代理(MailTransferAgent,MTA)。發送方的MTA 通過SMTP 協議將郵件發送給接收方的MTA,接收方的MTA 通過HTTP、交互式郵件存取協議(Internet Mail Access Protocol,IMAP)或郵局協議版本3(Post Office Protocol -Version 3,POP3)協議將郵件內容發送給接收方的MUA[9]。

圖1 電子郵件工作流程
攻擊者在執行欺騙攻擊,有以下流程。首先,在建立SMTP 連接后,攻擊者可以使用“MAIL FROM”命令將發件人地址設置為他們想要模擬的任何人。其次,“MAIL FROM”地址作為“Return-Path”插入到頭部。同時,攻擊者還可以修改電子郵件標頭中名為“發件人”的另一個字段,該“發件人”字段可以指定顯示在電子郵件界面上的地址。當用戶收到電子郵件時,用戶將看到“發件人”地址。如果用戶回復郵件,回復信息將轉到“MAIL FROM”設置的“Return-Path”,這就是電子郵件欺騙。電子郵件欺騙是網絡釣魚攻擊獲取受害者信任的關鍵步驟。
使用域名系統(DomainNameSystem,DNS)允許域所有者創建一種記錄,該記錄可以將地址域名與授權郵件發送代理(MailSendingAgent,MSA)使用的一個或多個IP 地址塊相關聯。
一般使用的SPFTXT 記錄示例為:
“v=spf1 ip4:202.112.26.0/24 -all”
各字段含義如表1 所示。

表1 SPF TXT 記錄示例字段含義
假設郵件服務器收到一封郵件,來自主機地址是202.112.26.1,并且聲稱發件人是email@example.com。郵件服務器為了確認發件人不是偽造的,會查詢example.com的SPF 記錄。如果域的SPF 記錄設置允許IP 地址202.112.26.1 發送郵件,服務器會通過SPF 檢查,認為郵件是合法的;如果不允許,它通常會退回郵件或將其標記為垃圾郵件或假冒郵件。
DKIM 定義了一種簽名機制,該機制使用非對稱加密技術對電子郵件消息進行加密和簽名,電子郵件收件人可以通過簽名確定郵件來自何處。[6]
消息接收者可以通過直接查詢簽名者的域并檢索公鑰來驗證簽名,從而確認消息是由擁有簽名域私鑰的一方發送的。消息簽名寫在消息頭域中,這樣消息體中簽名相關的內容就不會造成混淆。如果出現簽名驗證失敗,郵件則會被拒絕。
DKIM 和SPF 可以嚴格限制域名來源的合法性,但不能限制域名的子域名,即子域名不會受到保護。DMARC 聲明放在頂級域名上以保護子域。一些公司在同一個公司郵箱提供商處注冊了公司郵箱,他們的SPF 記錄都指向同一個IP 列表。
Paypal,Google,微軟,雅虎等公司建立了這樣一種反饋機制,讓發送域所有者知道其SPF 和DKIM 策略的比例有效性,并向接收器發送在攻擊場景中應該采取什么行動。在設置策略以建議接收者發送、隔離或拒絕SPF、DKIM 失敗的郵件后,郵件服務器將電子郵件處理的DMARC 聚合和/或失敗報告返回給域所有者,域所有者可以查看結果并可能細化策略。圖2 是DMARC的基本工作流程。

圖2 DMARC 工作流程
與example.com 關聯的示例DMARC TXT 記錄將在DNS 中_dmarc.example.com 上發布,記錄是:
“v=DMARC1;adkim=r;aspf=s;p=none;pct=100;
rf=afrf;ri=86400;ruf=mail:test.example.com;”
各字段含義如表2 所示。

表2 DMARC TXT 記錄示例字段含義
其中最重要的機制是p。它包含三個選項,即“無(none)”“隔離(quarantine)”和“拒絕(reject)”。對于未通過DMARC 檢查的郵件,如果將“p”設置為“none”,則服務器將不對郵件采取任何操作并接收;如果“p”設置為“reject”,服務器會在郵件到達客戶端之前直接拒絕郵件。當“p”設置為“quarantine”時,會發生什么取決于服務器/客戶端設置,郵件可能會被放入隔離區或垃圾郵件文件夾以進行進一步調查,或者被接受并通知用戶這是一封可疑郵件。
雖然DMARC 可以很大程度遏制欺騙和網絡釣魚,但它確實需要詳細配置。轉發郵件的中介有很多正當理由重寫標頭,通常與操作郵件列表、郵件組和最終用戶郵件轉發等合法活動有關。需要注意的是,郵件服務器轉發會改變源IP 地址,并且無需重寫“envelope-From:”字段,這可能會使SPF檢查失敗。另一方面,標題重寫或向郵件內容添加頁腳可能會導致DKIM 簽名失敗。這兩種干預都會導致DKIM 驗證和消息傳遞出現問題。
本節將介紹本文電子郵件安全評估的基本信息、范圍、結果和主要發現。
筆者分別從中國各個行業中篩選出公司或組織,其中包括中國服飾70 強、中國國企100 強、中國互聯網100 強、中國建筑業100 強、中國運輸業100 強、中國銀行100 強、中國飲食業100 強、中國醫療機構100 強、中國制藥業200 強以及上海民企100 強。同時還在世界500 強公司、中國500強公司、Alexa排名前3 000(Alexa Top Domains 3000)和谷歌排名前200(Google Top Domains 200)中選擇了4 819 個域。
本文的評估是針對已啟用郵件服務且具有正常郵件交換(mail exchanger,MX)配置記錄的域。在運行MX 服務掃描后,最終選擇了4 253 個域名作為評估范圍。評估側重于測試域的SPF 和DMARC 配置。本文編寫了腳本來掃描被測域名并查詢MX 記錄、SPF 記錄和DMARC 記錄,然后使用MXToolBox 來確認第一次腳本檢查的結果并實施進一步的安全評估,以檢查SPF 和MARC 配置是否滿足電子郵件安全要求。
實驗環境的軟硬件配置信息如表3 所示。

表3 配置情況
3.3.1 風險分析
本文將評估中發現的配置問題根據對郵件系統安全的風險程度分為高風險和低風險。其中高風險的幾種情況如下文所述。
(1)找不到SPF 記錄或SPF 語法無效。部分域沒有SPF 配置或SPF 記錄有語法錯誤,無法生效。在這種情況下,郵件系統沒有安全防護能力,任何具有基本SMTP 知識的攻擊者都可以進行釣魚攻擊。
(2)包含的查找過多。6.80%的測試域包含10 個以上“lookup”。SPF 實施將DNS 查找的機制和修飾符的數量限制為每次SPF 檢查中最多有10 個。“include”“a”“mx”“ptr”“exists”和“redirect”修飾符也計入此限制。“all”“ip4”和“ip6”不需要DNS 查找,因此不計入此限制。如果在檢查過程中超過這個數字,將返回“permError”并且SPF 將失效。出現這個問題的主要原因是現在很多公司將郵件服務外包給第三方服務商,每個服務商都會在SPF 記錄中添加“lookup”。如果它們還包含DNS 查詢機制/修飾符,它將很快達到極限。
(3)找到多個記錄。根據RFC7489[7],如果同一個域中有多個SPF 記錄,SPF 將無法正確驗證郵件。如果找到多個這樣的記錄,服務器將返回“permError”。
(4)子域未找到SPF 記錄。繞過SPF 檢查的方法有很多,包括無子域SPF 配置[5]。由于SPF的工作機制,a.com 和test.a.com 完全是兩個不同的SPF 檢查域,即使公司主域正確配置了SPF,攻擊者也可以欺騙子域并且它仍然可以通過SPF 檢查,因為對于未配置的域名,默認返回值是“neutral”。
(5)未找到DMARC 記錄或DMARC 無效語法。如果不使用DMARC,有很多方法可以繞過單個SPF 檢查。
(6)DMARC使用“NONE”策略。在這種情況下,DMARC的策略標簽設置為“none”。本文建議不要在策略設置中使用“none”,因為這通常比沒有DMARC 配置更糟糕。當策略“p”設置為“none”時,當郵件無法通過SPF 或DKIM 檢查時,郵件服務器將不采取任何行動并接收可能有問題的郵件。
低風險的幾種情況如下文所述。
(1)在SPF 中使用“~”或“?”。在SPF配置中,當使用“~”或“?”時,表示軟失敗(soft fail)。如果郵件系統管理員不更改默認設置,SPF 驗證失敗的郵件可能會被接受,而不是被隔離(quarantine)或被拒絕(rejected)。本文建議在SPF 記錄的末尾使用“-all”,以嚴格限制接收有問題的電子郵件。
3.3.2 SPF、DMARC 統計分析
根據這幾種風險情況,對各域名結果進行統計分析,結果如表4 和表5 所示。配置情況結果如圖3 所示。

圖3 配置情況評估結果

表4 SPF 配置情況表

表5 DMARC 配置情況
本節針對上節提出的問題,提出一些緩解措施,其中主要針對SPF 和DMARC 提出一些安全配置建議。
每個公司和組織都應該部署SPF 來指定哪些IP 地址被授權代表域傳輸電子郵件。因此,本文在SPF 配置上提出以下建議。
(1)合適的修飾符。建議使用“-all”,避免使用“~all”或“?all”。
(2)對于第三方的郵件服務配置,以Exchange 為例,SPF 記錄必須包含微軟郵件發送服務器的域名:
“v=spf1[ip] include:spf.protection.outlook.com”
2.可操作性。指標體系指標數據易于獲取,既體現完整性,又要進行必要的簡化,突出關鍵指標,能夠體現信息化對企業運營的支撐。
(3)避免太多查找。應該避免創建導致超過10 個DNS 查找的SPF 記錄。如果使用第三方郵件服務,管理員應定期查看SPF 記錄,避免“lookup”記錄超過10 條。此外,如果可能,需要將“include”語句替換為網際協議版本4(Internet Protocol version 4,ipv4)和網際協議版本6(Internet Protocol version 6,ipv6)機制,并避免使用指針記錄(Pointer Record,ptr)機制。
(4)子域SPF 配置。對于所有沒有郵件服務的子域,建議在DNS 設置中添加一條txt 記錄為:
“Type:txt Host:*.example.com Value:v=spf1 -all”
如果子域名有郵件服務,這個配置不會影響正常的郵件收發,因為DNS 匹配機制是先找到可以匹配的域,如果沒有找到匹配的記錄,它將匹配“*”記錄。
(1)將標簽“rua”設置為特定的電子郵件地址,并定期安排員工查看DMARC 發送的報告。如有必要,可將報告設置為每天發送。
(2)定期檢查報告以確保當前的DMARC 設置不會產生太多誤報,如避免來自域的合法電子郵件被拒絕。
(3)如果需要向外部域名發送“rua”或“ruf”報告,則需要在DNS 配置中添加一條記錄。
DMARC的正確推薦配置為:
“v=DMARC1;p=quarantine;sp=reject;rua=mailto:ruareport@example.com;ruf=mailto:rufreport@example.com;fo=0;ri=3600;pct=100;”
目前大部分公司或組織的面臨的網絡威脅最多的就是電子郵件仿冒,其中電子郵件中承載了大量的公司或組織的敏感信息甚至是商業機密。本文采集了4 253 個域名,這其中包括世界500 強、中國500 強、GoogleTop 200 和AlexaTop 3 000中的公司或組織。研究發現超過60%的域存在SPF 配置問題,近70%的域沒有使用DMARC 或使用錯誤的策略設置。研究發現大約97%的公司沒有為沒有電子郵件服務的子域實施SPF 安全配置。根據實驗結果,本文總結出了影響公司電子郵件安全服務的問題,并針對此提出了緩解措施。希望通過本文的實驗數據能夠讓郵件服務提供商可以采用有效的郵件服務保護措施,提升郵件服務系統部署安全性,以保護用戶傳輸電子郵件的真實性,免受網絡釣魚攻擊。下一步,筆者會總結這些措施,結合日常工作經驗,設計一個有效地郵件安全系統檢測模型。