「現代化IAM落地實踐過程中關於MFA的一些經驗總結」
(1)公司員工需要登錄VPN的場景: VPN屬於高風險場景,需要確保使用人的身份正確無誤,對安全性的要求高於用戶交互體驗要求,因此該場景我們採取結合多項持有物和生物特徵的多因子認證編排。用戶首次在一臺PC設備使用VPN登錄時,要求用戶進行動態密碼+人臉識別認證,確保訪問設備的首次使用是足夠安全的,後續用戶繼續使用時,通過驗證PC設備歷史訪問記錄,僅需要動態密碼即可認證。
(2)C端用戶在線下單的場景: 在線下單一般被認為是低風險操作,很多電商系統出於用戶交互體驗的考慮,在下單是並不要求嚴格的身份驗證,僅需要用戶為登錄狀態,且在常用設備登錄,用戶僅需提供密碼或歷史登錄憑證即可通過認證。但一般到付款環節會要求用戶做強驗證,如指紋/掃臉/驗證單獨的支付密碼等。
(3)B端用戶金額提現的場景: B端用戶提現是一個典型的強校驗場景,一般情況下提現需要在常用設備上進行,作為驗證方,我們在進行身份驗證時要規避掉用戶密碼洩露,設備丟失等意外情況,因此在做認證編排時需要同時包含所知,所有和生物特徵三種手段。
用戶使用位置:常用登錄地點/訪問IP等信息
用戶使用習慣:常用使用時間/使用系統等信息
用戶常用設備:已驗證過身份的手機/PC電腦等信息
作為統一的登錄驗證入口,SSO可以在上述信息發生改變時及時感知並在發起認證請求時要求用戶提交變更項所對應的補充驗證手段。舉例來說,用戶通過簡訊驗證碼在一臺新手機上登錄了我們的應用,只能證明當前用戶擁有帳號所綁定的手機號碼,但無法排除用戶手機卡丟失的可能,我們會在用戶驗證時要求用戶進行人臉掃描來核實生物特徵,認證通過後當前設備會被加入帳號的受信列表,設備的其他驗證方式,如手機指紋驗證或faceID驗證就可以作為後續使用場景中的輔助驗證手段。根據場景和用戶行為分析的多因子認證編排一定要明確每一種認證方式所代表的含義,多因子組合一定是涵蓋不同維度的驗證手段,相互獨立且完全窮盡當前認證所需的安全要求。除通用策略以外,我們也允許用戶和系統管理員可以對動態信任策略做自定義配置,如登錄新設備或異地登錄要求強制二次校驗等,以滿足不同角色用戶的安全要求。從MFA編排需求出發,我們需要完成MFA認證前後端依賴的部署方案,常見的MFA認證終端包含客戶端應用,硬體令牌,Web頁面交互等,各方式介紹如下:客戶端應用目前一般以手機App為主,隨著移動網際網路的普及和智慧型手機功能日趨豐富,我們可以通過手機App得到更多用戶提交的位置,身份,所處網絡,設備等信息,為用戶提供更精準且無感的身份認證服務。移動客戶端可以同時結合三種基本認證手段,使得我們可以為用戶提供一站式交互認證方案,常見功能包含動態碼生成器,掃碼/推送二次驗證,手機號識別,人臉驗證等。體系化的業務系統會根據功能敏感程度的遞進,要求用戶提供高級別的認證方式,更嚴格的功能只有當用戶提供高敏感手段認證渠道之後才會解鎖。此外,我們也可以根據用戶所處位置來判斷訪問用戶是否與以往的使用習慣一致,進而評估用戶本次訪問的安全程度,基於行動裝置得到上下文感知能力,為認證系統基於用戶習慣構建友好的風控策略提供了幫助。客戶端應用推廣使用相對便捷,用戶接受程度較高,部署的邊際成本相對其他方式低。主要的成本在於前期開發,打磨出適合業務自身業務場景的認證客戶端相對比較耗時耗人力。目前市面上存在一些公有雲服務的認證客戶端,但功能都較為傳統且單一,難以滿足實際業務需求,仍需以企業定製開發為主。硬體令牌目前依然廣泛用於政府/銀行等較傳統行業的各個高安全要求的系統中。設計良好的硬體令牌結合安全的使用環境,可以提供很高的系統防護性,並且存在逆向成本高,不易複製的特點。硬體令牌主要問題在於硬體成本和分發成本很高,且難以避免私下借用的情況,不適合作為常規企業的大規模終端部署方案,可用於少量用戶的核心功能補充認證手段,如運維/財務人員等。Web頁面交互一般作為Captcha/郵箱/簡訊驗證碼的呈現載體,插入在用戶的使用過程中。Web頁面可實現多種基於點擊/輸入的認證交互手段,受限於瀏覽器的隱私策略限制以及電腦硬體信息採集能力,Web能實現的認證手段少於移動客戶端,但在大部分非嚴格場景下,Web交互已經能滿足我們對認證安全性的要求。對用戶友好的認證原則一般遵循: 能確保用戶身份可信就不需要認證,能讓用戶點擊驗證就不要輸入,能在電腦輸入就不要用手機認證,能用手機直接點擊認證就不要進行複雜操作。基於此,Web頁面的輕量交互是移動客戶端認證方案很重要的補充手段,是確保整體方案實現用戶友好交互的關鍵點之一。 服務端是整個多因子認證策略的編排點,是認證策略的部署核心。服務端在用戶訪問入口,通過綜合判斷當前訪問用戶所具備的所有可用認證手段和用戶訪問的目標資源/操作所需的必要安全級別,以及當前用戶交互環境的信任等級,在必要情況下攔截用戶交互並返回可被終端識別的認證手段要求。對於當前用戶認證手段不足以操作目標資源的情況,會在對應認證客戶端中提示用戶補充信息以解鎖功能。良好的服務端認證策略編排會減小因MFA認證對用戶操作打斷而帶來的挫敗感,甚至可以在交互成功時提高用戶的成就感,提高產品整體的流暢度。針對MFA的主要攻擊方法主要有三種,社會工程學 Social Engineering、技術攻擊 Technical Attack、物理攻擊 Physical,在真實的攻擊中會用到一種或多種攻擊方法,攻擊經常出現在identity, authentication, and authorization連結中。下面我們聊一聊針對MFA的常見攻擊方式。web會話憑據通常是Cookie中存放的會話ID,該ID是隨機不可預測的值,通常由SHA-256等算法生成,並且在會話過期後丟棄,不可重複使用。大多數情況下,一旦會話被竊取,身份認證將形同虛設,攻擊者可以輕鬆通過有效的會話進入系統並竊取數據,所以會話竊取是最常用的攻擊手段之一。(1)利用會話漏洞或存儲會話配置不當問題
如session ID 或session token 生成的算法存在問題,導致可被預測、暴力破解等,如ID只是通過簡單的編碼、加密;Jwt token 偽造等;存在會話設置,可固定目標會話,待目標認證後使用會話等;憑證未存放在httponly中,可通過跨站腳本攻擊竊取會話;系統即使將會話存放在httponly中,如果存在debug頁面輸出憑證信息,導致通過跨域、跨站等多個利用組合利用獲取httponly中的會話信息(2)從網絡竊取會話
其一,MFA認證面臨著特別多的釣魚攻擊,攻擊者通過代理等方式,在用戶和站點間建立代理伺服器,當用戶認證通過後,竊取用戶憑證,該方案可繞過部分MFA因子如totp、簡訊驗證等等。其二,必須停止使用HTTP這種非加密協議,而是使用HTTPS,HTTP建立的連結是不受保護的,非常容易被劫持。MITM(Man-in-the-MiddleAttack)中間人攻擊是一種常見的攻擊方式,攻擊者可以通過各種中間代理方式(ARP欺騙、路由欺騙、DNS欺騙等)來竊聽和查看會話,社工中經常使用的釣魚郵件就是利用了這種方法來獲取用戶的會話信息。攻擊者通常會引導用戶進入一個與目標域名相似的網站,這些網站甚至擁有可信的數字證書,其內容和目標站點也極其相似,只要用戶進行登錄認證,攻擊者就可以劫持會話信息。RFC8471的Token Binding協議能很好應對這種攻擊手段。Token Binding允許應用程式和服務以加密方式將其安全令牌綁定到TLS層,從而預防會話盜用和重放攻擊。存活時間長、唯一可識別的TLS[RFC5246]綁定可以跨越多個TLS會話和連接,同時支持用戶隨時重置Token。這裡不太好理解,舉個例子,我去買一杯奶茶,我掏出錢包把10塊錢交給店員支付費用換取奶茶。會話劫持就像是,攻擊者搶走了我的10塊錢,買了奶茶。這裡我們把MFA比作錢包——理論上只有我知道,我擁有。一旦我的錢被搶走,MFA就被繞過了。Token Binding就像是把我的錢換成了信用卡,即使攻擊者搶到了,還需要我的籤名才可以支付費用,顯然攻擊者很難預料我的籤名。這裡我的籤名就叫PoP(proof of possession) token。他是預先建立在這個鏈路上(TLS層)的機制,是很難破解的。Token Binding於2019年發布,大多數的認證協議都已經支持。(3)從端點竊取會話
Windows、Linux、MacOS這些最流行的作業系統每年都會公布上百個漏洞,而其中至少有一個是可以遠程入侵作業系統的,攻擊者通常運用社工和編程攻擊(木馬、病毒、惡意軟體等)來利用這些漏洞控制設備,一旦攻擊者能控制端點設備,那麼很快就能獲取這片網絡內所有能訪問到的資源,再通過二次社工,所有IT資產都將岌岌可危。對於MFA來說,首先,攻擊者可以竊取訪問控制令牌,以此通過MFA。其次,攻擊者可以觀察並掌握整個MFA的流程。通常,MFA的關鍵信息無論是明文和密文,都會被記錄在內存中,提權後的攻擊者可以直接獲取到這些信息,並針對它們進行相應繞過。另外,用戶正常開啟第一個連接會話後,攻擊者可以開啟第二個隱藏會話並重用用戶的授權信息,從而進行惡意操作。以上所說的行為大部分都很難被發現,甚至不會被最先進的安全防護軟體檢測到。我們再來說下移動端,攻擊者在移動端所做的攻擊嘗試和PC端如出一轍,移動端通常是防護的薄弱環節,根據卡巴斯基實驗室的研究,在2021年第一季度依舊檢測到了1451660個惡意軟體安裝程序,雖然比2020年第四季度減少了655020個,但同比增加了298998個。自動化密碼猜測:使用一些自動化工具(如 Brutus、Web Brute、Bert、SqlPing、Wfuzz等)將準備好的密碼字典進行登錄嘗試
暴力破解:按照一定順序或隨機生成字符串進行登錄嘗試
字典攻擊:根據單詞或密碼流行情報進行特定組合的登錄嘗試
密碼噴灑:針對一個特定密碼進行不同帳戶登錄嘗試
彩虹表:使用彩虹表對密碼哈希進行猜測,最終破解用戶密碼
這些破解手段已經非常成熟,使用門檻很低,攻擊者可以以此高效地竊取用戶的登錄名和密碼,部分針對性的攻擊,攻擊者會收集人員、企業信息製作對應的密碼字典,如:收集帳號手機號、姓名、生日、常用密碼等組合製作密碼字典,提升密碼破解的成功率。除此之外,用戶的使用習慣也是提高登錄安全風險的因素之一,一些用戶會直接把密碼貼在桌上的,甚至屏幕上,開發人員有時也會將密碼等敏感信息硬編碼在代碼內然後上傳至github等公開代碼託管平臺。這些無疑是幫助了攻擊者更便捷地侵入系統。種種安全事件表明,僅憑密碼無法確保身份認證的安全性和可靠性,需要與其他驗證方式組合。密碼學是一門不停迭代的學問,我們建議始終使用行業認可的加密技術和密碼複雜度,並進行定期更新,不過,自從量子計算向公眾開放後,任意算法的解密破譯就不再是一件遙不可及的事了,在不遠的未來,現在所搭建的加密基礎設施和理論都將被打破,我們將不得不進行另一種維度的加密來保護通信。伴隨持續的紅藍對抗以及生產環境持續的外部攻擊,我們制定的MFA策略逐漸完善,已發揮出日益明顯的防護效果,場景如下: 密碼爆破屬於比較基礎的攻擊手段,服務端一般通過封禁IP、增加人機互動、凍結被爆破的帳號、以及要求用戶使用高強度密碼等方式來對抗攻擊,但這些都屬於比較被動的防禦手段。我們在此之上做了更嚴格的要求: 針對大部分核心系統功能,不允許使用單獨的密碼認證方式,密碼僅為部分場景的登錄認證開放,並作為一些場景的輔助驗證手段。用戶的日常登錄均通過App掃碼/推送登錄實現,不依賴密碼認證可以極大減小被攻擊面。針對驗證碼爆破,我們一方面在驗證碼發送入口採用白名單驗證機制,僅通過交互驗證的設備才可調用一定次數的發送接口,同時在驗證碼提交接口增加針對手機號/驗證碼/設備標識/IP等因素的失敗計數,達到設定閾值即凍結對應特徵值。以上措施可以迫使攻擊者放棄攻擊,或使用其他更高成本的攻擊手段,實現對抗效果。會話劫持一般通過釣魚郵件或連結進行,攻擊者在郵件中散布誘導性很強的內容,吸引用戶到偽造的登錄頁面發起登錄認證。會話劫持常見的有效預防方式是對公司人員的安全意識培訓,通過日常的培訓和不定期的安全演練來提升員工對可疑郵件的敏感性。在系統層面,我們實現了以下防護手段:SSO頒發的所有session或token憑證均記錄頒發時的請求方關鍵信息,一旦後續請求的信息發生變化,如IP位址/歸屬地發生變化,將中止用戶的訪問請求並要求用戶通過手機App進行二次驗證
大部分攻擊者通過公有雲或海外伺服器發起攻擊,服務端會對以上IP發起的請求要求用戶做額外驗證
增加登錄頁前端的複雜性,對當前訪問地址域名做檢查,避免攻擊者通過直接的前端轉發呈現給被攻擊用戶完全相同的登錄頁面
辦公人員統一使用自研郵箱客戶端,對於外來郵件做強提醒並在客戶端內限制用戶發起非公司域名的登錄行為
社工是防禦方無法繞過的問題,人永遠是系統安全防護最薄弱的環節。對於攻擊者而言,通過社工成功獲取到辦公人員電腦權限基本意味著目標已經達成,在不設防的辦公電腦上可以藉由辦公人員已經登錄過的瀏覽器,訪問用戶具有權限的所有公司內部系統,並能以辦公網作為攻擊點來繼續擴大攻擊面。針對社工的防護,除基礎的人員安全意識培訓以外,在系統層面我們還可以做到以下手段:公司內部系統權限實現最小化分配原則,避免出現非關鍵人員一人淪陷後,公司全部系統都被攻擊者摸個遍的情況
針對用戶日常訪問系統做畫像分析,用戶訪問行為有明顯異常的情況下,觸發用戶手機二次驗證
辦公網電腦統一安裝內部殺毒軟體並及時升級,避免辦公人員電腦被木馬控制
辦公網絡限制常見的遠程控制軟體連接,工作場景有需求的均使用內部軟體
辦公網及關聯網段部署蜜罐,及時發現受控電腦的異常訪問或攻擊行為
如今,全世界都在遭受著大量的網絡攻擊,到處都充滿著攻擊者,他們竊取個人隱私、帳戶密碼、甚至IT資產。二十多年來,90%到99%有效的攻擊都來源於社工和軟體漏洞,而最可怕的是,大部分攻擊都沒有被感知到。這些攻擊中,有很大一部分都和系統的身份認證有關,一個簡陋的認證將會導致大量的惡意攻擊和信息洩露。從最早的密碼認證到動態密碼,簡訊驗證碼,人臉認證,再到結合用戶使用場景的多因子認證,多因子MFA認證已成為越來越多系統和服務的選擇,未來的認證場景一定是朝著結合用戶使用習慣,減少用戶操作的方向發展。目前我們已完成的實踐主要是基於規則和業務場景,後面會逐漸依賴機器學習,大數據分析等,使認證編排組合趨向動態化,智能化,無感化。