如何應對實時雙因子釣魚行為
一、社會工程和雙因子認證
社會工程活動對企業來說是一個持續的威脅,因為它瞄準的是安全最薄弱環節:人。典型的攻擊將捕獲受害者的用戶名和口令,保存下來以便攻擊者後續重新使用。雙因子身份認證(2FA)或多因子身份認證(MFA)通常被視為是解決這些威脅的方案。
2FA在典型的用戶名和口令之上增加了一層額外的認證。兩種常見的2FA是一次性口令和推送通知。一次性口令由輔助設備(如硬體令牌)生成,並綁定到特定用戶。這些口令通常在30到60秒內過期,不能重複使用。推送通知向用戶的移動設備發送提示,並要求用戶確認他們的登錄。這兩種方式都可以保護用戶免受傳統釣魚活動的攻擊,這些釣魚活動只捕獲用戶名和密碼組合。
二、實時釣魚
雖然安全專業人員強烈建議在個人和商業軟體中使用2FA,但這並不是一個可靠的解決方案。因為使用實時釣魚技術可以成功擊敗2FA,這些釣魚攻擊涉及攻擊者與受害者之間的實時交互。
舉個簡單的例子,就是釣魚網站除了用戶名和密碼外,還會提示用戶輸入一次性口令,一旦用戶在釣魚網站上完成認證,他們就會看到一個通用的「登錄成功」頁面,但實際一次性口令仍然未被使用,可是已經被捕獲。此時,攻擊者有一個短暫的時間差,在到期前重新使用受害者的憑證。
利用這些技術的社會工程行動並不新鮮。早在2010年就有關於實時釣魚的報道。然而,此類攻擊大多時候都被忽視,因為發現這種攻擊很困難。本文旨在改變這種看法,提高對問題的認識,並推出新的解決方案。
三、工具說明
行在攻擊者的系統上。它包含一個Python腳本,用於偵聽攻擊者釣魚網站的數據,並使用Selenium框架驅動本地Web瀏覽器。該工具能夠通過導航到指定的網頁、與HTML對象進行交互以及抓取內容來控制攻擊者的web瀏覽器。
ReelPhish的次要組件位於釣魚網站本身。嵌入在釣魚網站中的代碼將數據(如捕獲的用戶名和密碼)發送到攻擊者計算機上運行的釣魚工具。一旦釣魚工具收到信息,它將使用Selenium啟動瀏覽器並向合法網站發起身份認證。釣魚web伺服器與攻擊者系統之間的所有通信均通過加密的SSH隧道進行。
通過會話令牌跟蹤受害者,會話令牌包含在釣魚網站和ReelPhish之間的所有通信中。該令牌允許釣魚工具維護包含獨特挑戰值的多個頁面的認證流程狀態。由於釣魚工具具備態勢感知能力,因此能夠將受害者的信息發送到合法的Web認證門戶,反之亦然。
四、案例
我們已經成功地使用了ReelPhish和這個方法來處理了眾多Mandiant Red Team的挑戰。最常見的情況是使用雙因子身份認證對外的VPN。為執行社會工程攻擊,我們複製了真實VPN的HTML、JavaScript和CSS。我們使用此代碼創建與原始網站類似的釣魚網站。
為方便我們的實時釣魚工具,我們將伺服器端代碼嵌入到與攻擊機上運行的工具進行通信的釣魚網站上。我們還建立了一個到釣魚伺服器的SSH隧道。當提交釣魚網站上的身份認證表單時,所有提交的憑證將通過隧道發送到攻擊者系統上的工具。之後,該工具在攻擊機上啟動一個新的Web瀏覽器,並向真實的VPN提交證書。圖1展示了這個過程:
圖1: ReelPhish 流程圖
我們已經在VPN上看到了多種雙因子身份認證的變體。某些情況下,令牌被傳遞到認證表單本身的「輔助密碼」欄位中。其他情況下,用戶必須響應手機上的推送請求。如果釣魚網站的行為與真實網站的行為相同,則用戶在提交憑據後就會收到推送請求。
某些情況下,我們不得不開發更先進的釣魚網站,可以處理多個身份認證頁面,並在釣魚web伺服器和攻擊機器上運行的工具之間來回傳遞信息。我們的腳本通過跟蹤釣魚網站上受害者的會話並將其與攻擊者系統上運行的特定Web瀏覽器相關聯來處理這些情況。圖1展示了我們的工具在攻擊情況下如何運行。
我們在FireEye GitHub Repository上公開發布了這個工具。
五、結論
不要放棄2FA,雖然它不是一個完美的解決方案,但確實能增加一層安全性。2FA是一種安全機制,會像其他機制一樣失敗,企業必須做好準備減輕失敗帶來的影響。
配置2FA保護的所有服務,以便在攻擊者成功繞過2FA時將影響降到最低。降低會話最大持續時間將限制攻擊者的破壞時間。每個用戶帳戶最多只能有一個並發會話,可以防止攻擊者與受害者同時處於活動狀態。如果有問題的服務是VPN,則實施嚴格的網路隔離。VPN用戶應該只能夠訪問自己所需的資源。最後,培訓用戶認識、避免和彙報社會工程攻擊。


※雲高防之另類玩法:遊戲盾
※教你如何玩轉piVPN,保護網路隱私安全
TAG:嘶吼RoarTalk |