網路釣魚
網路釣魚(Phishing)是一種社會工程學攻擊,在這種攻擊中,使用者被欺騙,使其相信自己正在與一個他們擁有賬戶的網站進行互動,而實際上他們是在與攻擊者進行互動。攻擊者說服使用者在虛假網站上輸入他們的憑據,從而竊取使用者的憑據。
概述
網路釣魚是一種非常古老但仍然非常普遍的攻擊,它已經經歷了許多變種,既是為了規避防禦,也是為了利用新的漏洞。儘管如此,在基本形式上
- 攻擊者註冊一個與目標網站相似的域名。例如,如果使用者的銀行網站是
my-bank.example.com,攻擊者可以註冊my-bank.examp1e.com。 - 攻擊者在該地址建立一個看起來像真實網站的網站。
- 攻擊者傳送一封電子郵件給使用者,聲稱來自
my-bank.example.com,並給出某個理由要求使用者訪問該網站,其中包含指向虛假網站my-bank.examp1e.com的連結。 - 使用者點選連結並被要求登入。他們輸入使用者名稱和密碼,攻擊者現在就擁有了他們的憑據。
網路釣魚攻擊有時會使用不同的技術來聯絡受害者,例如簡訊或語音電話,有時甚至根本不涉及網站,而是說服使用者口頭告知密碼或 PIN 碼。
有些網路釣魚攻擊是高度不加區分的,它們會向大量潛在受害者傳送大量訊息,希望其中一些能被欺騙。另一方面,在魚叉式網路釣魚(spear-phishing)攻擊中,攻擊者會研究特定的受害者,收集有關他們的個人資訊,以使誘餌更具說服力。例如,電子郵件可能聲稱來自受害者認識的人,甚至包含私人資訊。
網路釣魚攻擊並非只針對天真或缺乏經驗的使用者:數十年的經驗表明,即使是經驗豐富、知識淵博的使用者也可能容易受到網路釣魚攻擊,尤其是當他們忙碌、疲憊或分心時。
防禦措施
網路釣魚的一個挑戰在於,目標網站完全不參與攻擊。它完全依賴於使用者被攻擊者欺騙。在本節中,我們將討論一些可能有所幫助的做法,但唯一真正有效的是使用通行金鑰(passkeys)而不是密碼。
DNS 配置
網路釣魚郵件經常偽造發件人地址,讓受害者認為郵件確實來自目標網站。三個DNS 記錄有助於電子郵件伺服器檢測這些偽造,從而確保網路釣魚郵件在受害者電子郵件客戶端中被標記為垃圾郵件,或者被完全阻止。
- 由安全策略框架 (SPF) 記錄列出了允許從域名傳送電子郵件的地址。接收電子郵件的伺服器會從郵件的
Return-Path頭部提取域名,並查詢與該域名關聯的 SPF 記錄。 - 由域名金鑰識別郵件 (DKIM) 記錄使發件人能夠數字簽名電子郵件。接收伺服器從簽名中提取域名,並使用它來查詢與該域名關聯的 DKIM 記錄。DKIM 記錄包含用於驗證簽名的公鑰。簽名中的域名也必須與郵件
From頭部中的域名對齊(這基本上意味著域名必須匹配,或者From頭部中的值必須是簽名中域名的子域)。 - 由基於域的訊息身份驗證、報告和一致性 (DMARC) 告訴收件人如何處理 SPF 和 DKIM 失敗:是將其作為垃圾郵件隔離、拒絕還是允許。
您應該為您的域名設定這些 DNS 記錄,以幫助電子郵件伺服器識別偽造的訊息。
密碼管理器
密碼管理器可以提供一定程度的針對網路釣魚攻擊的保護。它們主要執行三個功能:
- 密碼生成:使用者註冊時建立強密碼。
- 密碼儲存:安全地儲存使用者的密碼,這樣使用者就不必記住它們(因此可以使用更強的密碼)。
- 密碼輸入:當用戶訪問網站的登入頁面時,自動輸入使用者的密碼。
最後一個功能可以幫助防範網路釣魚。使用者可能看不出虛假域名my-bank.examp1e.com與真實域名my-bank.example.com之間的區別,但密碼管理器會,因此它不會在虛假網站上自動輸入真實密碼。幸運的是,這足以警告使用者登入請求不是合法的。
作為一名 Web 開發人員,您無法讓您的使用者使用密碼管理器。但是,如果您不小心,您可能會使密碼管理器無法與您的網站整合。文章使密碼管理器與您的登入表單協同工作是對想要讓使用者在您的網站上使用密碼管理器的最佳做法和需要避免的做法的絕佳總結。同樣重要的是,要使用密碼管理器測試您的網站,包括瀏覽器內建的密碼管理器和流行的獨立應用程式。
不幸的是,使用者已經被訓練成預期工具有時會失敗,並設法繞過其故障。因此,即使某個使用者擁有密碼管理器,並且它與您的網站相容,並且在網路釣魚嘗試期間不自動填充密碼,您仍然無法保證使用者不會手動貼上密碼。
多因素認證
使用多因素身份驗證 (MFA) 對使用者進行身份驗證可以使網路釣魚更困難,但根據所使用的具體方法,並不能完全阻止它。
特別地,在最常見的 MFA 實現中,使用者需要輸入他們的密碼和另一個程式碼,稱為一次性密碼(OTP),該程式碼對於本次登入嘗試是唯一的。兩種常見的變體是:
-
基於簡訊的 OTP
- 使用者在註冊時提供他們的手機號碼。
- 使用者提供使用者名稱和密碼後,網站會向用戶傳送一條包含 OTP 的簡訊。
- 使用者輸入 OTP。
- 如果 OTP 值匹配,使用者將被登入。
-
基於時間的 OTP (TOTP)
- 使用者安裝了身份驗證器應用程式。
- 使用者提供使用者名稱和密碼後,網站會使用當前時間作為輸入來計算 OTP。
- 使用者的身份驗證器進行相同的計算,使用者輸入應用程式生成的 OTP。
- 如果 OTP 值匹配,使用者將被登入。
TOTP 被認為比基於簡訊的 OTP 更安全,因為攻擊者有可能攔截簡訊。但是,從網路釣魚的角度來看,這兩種方法都容易受到攻擊。
為了釣取使用 OTP 作為第二因素的使用者,攻擊者的虛假網站是使用者和真實網站之間主動的中間人(man-in-the-middle)。
- 攻擊者傳送電子郵件給使用者,其中包含指向虛假網站的連結。
- 使用者點選電子郵件中的連結,並在虛假網站上輸入他們的使用者名稱和密碼。
- 虛假網站將使用者名稱和密碼中繼到真實網站。
- 真實網站生成一個 TOTP。
- 虛假網站要求使用者輸入他們的 TOTP。
- 使用者的身份驗證器應用程式生成相同的 TOTP,使用者在虛假網站上輸入它。
- 虛假網站將 TOTP 中繼到真實網站,攻擊者被授予訪問許可權。
這比僅僅釣取密碼要困難得多,因為攻擊者必須即時操作。然而,網路釣魚工具包大大降低了完成此操作的複雜性。
Web Authentication (通行金鑰)
最強大的技術防禦網絡釣魚的方法是使用基於Web Authentication API 的通行金鑰(passkeys)來驗證使用者。
通行金鑰在使用者註冊網站時建立,並且僅限於最初建立它的源(origin)。通行金鑰由一個稱為身份驗證器的模組生成並存儲,該模組內置於使用者的裝置或連線到使用者的裝置。
與密碼或 OTP 程式碼不同,使用者從不在網站上手動輸入通行金鑰:實際上,通行金鑰根本不會傳輸到網站。當網站要求使用者使用 Web Authentication 進行身份驗證時,瀏覽器會向身份驗證器請求一個與網站源匹配的通行金鑰。如果找到,身份驗證器會生成一個令牌,瀏覽器將其傳送到網站。網站驗證令牌並登入使用者。
由於通行金鑰特定於網站源,如果為使用者在my-bank.example.com 的賬戶建立了通行金鑰,使用者將無法在my-bank.examp1e.com 上使用它。瀏覽器根本不會認為它適用於虛假網站。
這使得通行金鑰成為一種有效的網路釣魚防禦手段。通行金鑰比密碼或 OTP 是更新的身份驗證方法,圍繞它的工具集也不夠成熟。然而,這種情況正在改變,通行金鑰最終可能會取代密碼,成為 Web 上最常見的身份驗證方法。
個性化安全指示器
另一種網路釣魚防禦措施,現在已不再常用,是網站在其登入頁面向用戶顯示一個秘密訊息或影像。
- 使用者註冊後,會要求使用者選擇一個與他們的賬戶關聯的秘密訊息或影像。
- 當用戶登入時,他們首先輸入他們的使用者名稱。
- 登入頁面隨後顯示與賬戶關聯的秘密。
- 如果秘密不是使用者預期的,那麼使用者就不應該輸入密碼。
其想法是攻擊者不知道秘密是什麼,因此無法在虛假登入頁面上顯示它。
在此技術的變體中,網站使用永續性 cookie 來決定顯示哪個秘密,而不是使用者名稱。
實際上,這種技術存在一些困難:
- 它依賴於使用者關注安全指示器:也就是說,它依賴於使用者教育。經驗表明,作為一項通用原則(即,在安全管理的公司的受控環境之外),使用者教育在防止網路釣魚攻擊方面效果不佳。
- 取決於用於決定顯示哪個秘密的機制,它可能容易受到與 MFA 相同的中間人攻擊。
- 伺服器用於決定顯示哪個秘密的機制可能容易受到攻擊:例如,攻擊者可能更容易發現使用者名稱而不是密碼。有了使用者名稱,攻擊者就可以確定秘密並構建一個令人信服的虛假網站。
由於這些弱點,這種防禦措施很少使用:MFA 和通行金鑰都被認為是更強大的防禦措施。
防禦總結清單
- 為您的域名設定
SPF、DKIM和DMARCDNS 記錄。 - 考慮使用通行金鑰來驗證使用者。
- 如果您使用密碼,請考慮使用 MFA,並確保密碼管理器可以與您的網站協同工作。