利用機器學習和規則實現弱口令檢測
弱口令(weak password) 沒有嚴格和準確的定義,通常認為容易被別人(他們有可能對你很瞭解)猜測到或被破解工具破解的口令均為弱口令。弱口令指的是僅包含簡單數字和字母的口令,例如“123”、“abc”等,因為這樣的口令很容易被別人破解,從而使使用者的網際網路賬號受到他人控制,因此不推薦使用者使用。
弱口令產生原因是與個人習慣相關與意識相關,為了避免忘記密碼,使用一個非常容易記住的密碼,或者是直接採用系統的預設密碼等。相關的安全意識不夠,總認為不會有人會猜到我這個弱口令的,相關的安全意識不夠,總認為不會有人會猜到我這個弱口令的。
弱口令的危害極大,通過系統弱口令,可被黑客直接獲得系統控制權限。
檢測背景
我們檢測的背景是基於流量,通過底層流量抓取技術(底層抓取技術利用的是dpdk技術),獲得http的請求內容、響應內容。如下圖所示。
弱口令檢測本質是利用機器學習識別登陸頁面(文字識別),再利用專家規則進行弱口令鑑別、登陸成功鑑別兩步。
檢測邏輯
接下來讓我們看下檢測的邏輯。
- 首先通過底層抓取技術獲得輸入資料
- 利用機器學習技術(邏輯迴歸演算法)獲得登入頁面請求
- 利用專家規則進行弱口令判斷(top 1000)
- 利用專家規則進行登入成功判斷
關鍵技術補充解釋
- 在檢測邏輯的步驟2處,在無有效資料的情況下,可以利用規則進行登入頁面判斷。
- 機器學習模組中,特徵向量關鍵提取點有:post、login、account、postLogin、Logins、loginByAccount、password、pwd、username、user、email、dologin、id、user_id等。訓練資料大概為500左右的登入頁面。利用邏輯迴歸進行二分類。機器學習模組的準確度為95%左右。
- 弱口令判斷斷採用的是正則匹配。
-
登入成功判斷主要分為兩種(歡迎補充)
-
系統為使用者種cookie並返回給瀏覽器200
-
系統為使用者location跳轉並返回給瀏覽器30x
-
系統口令強制限制
強制對所有的管理系統賬號密碼強度必須達到一定的級別。不可在使用簡單的admin、123456等弱密碼了,修改密碼為複雜密碼並加密儲存,建議密碼包含大小寫字母,資料和特殊符號,密碼長度不低於八位,如果網站存在資料洩漏漏洞(如sql注入漏洞),務必修復漏洞。
設定密碼通常遵循以下原則:
- 不使用空口令或系統預設的口令,這些口令眾所周之,為典型的弱口令。
- 口令長度不小於8 個字元。
- 口令不應該為連續的某個字元(例如:AAAAAAAA)或重複某些字元的組合(例如:tzf.tzf.)。
- 口令應該為以下四類字元的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字元。每類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。
- 口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登入名、E-mail 地址等等與本人有關的資訊,以及字典中的單詞。
- 口令不應該為用數字或符號代替某些字母的單詞。
- 口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
- 至少90 天內更換一次口令,防止未被發現的入侵者繼續使用該口令。
文章總結
- 機器學習的使用,使得登陸頁判斷有了更好的泛化能力,這點比正則表示式強很多。
- 整個判斷模組的誤報率還是很高,分析其原因為:軟體系統判斷登入成功的邏輯各不相同,導致沒有固定的判斷邏輯,因而會產生誤報。這方面想要降低誤報,需要一條一條的進行專家規則細化與規則新增。
- 該系統在公司內運營發現,確實有不少系統存在弱口令行為,由於弱口令的風險極高,其他網際網路公司需自查。
廣告時間
我們目前正在打造一款全部由AI技術構建的入侵感知系統,目前系統叢集日處理資料達到1800億次。如果對我們做的產品感興趣,或者想加入我們,請聯絡 emhhbmd4aW4xW2F0XTM2MC5jbgo=
城市:北京