
0x01 等保測評項GBT 22239-2019《信息安全技術 網絡安全等級保護基本要求》中,8.1.4安全計算環境—身份鑑別項中要求包括:a)應對登錄的用戶進行身份標識和鑑別,身份標識具有唯一性,身份鑑別信息具有複雜度要求並定期更換;b)應具有登錄失敗處理功能,應配置並啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施;c)當進行遠程管理時,應採取必要措施防止鑑別信息在網絡傳輸過程中被竊聽;d)應採用口令、密碼技術、生物技術等兩種或兩種以上組合的鑑別技術對用戶進行身份鑑別,並其中一種鑑別技術至少應使用密碼技術來實現。弱口令/空口令對應身份鑑別項中要求a),所以安全控制點為身份鑑別a。
GBT 28448-2019《信息安全技術 網絡安全等級保護測評要求》中,測評單元(L3-CES1-01)a)測評指標:應對登錄的用戶進行身份標識和鑑別,身份標識具有唯一性,身份鑑別信息具有複雜度要求並定期更換。b)測評對象:終端和服務器等設備中的操作系統(包括宿主機和虛擬機操作系統)、網絡設備(包括虛擬網絡設備)、安全設備(包括虛擬安全設備)、移動終端、移動終端管理系統、移動終端管理客戶端、感知節點設備、網關節點設備、控制設備、業務應用系統、數據庫管理系統、中間件和系統管理軟件及系統設計文檔等。2)應核查用戶列表確認用戶身份標識是否具有唯一性;3)應核查用戶配置信息或測試驗證是否不存在空口令用戶;4)應核查用戶鑑別信息是否具有複雜度要求並定期更換。弱口令/空口令屬於測評單元(L3-CES1-01)中測評實施的第3、4項,故定測評單元為L3-CES1-01.3。
0x02 測試內容查看系統是否採用了簡單數字組合、常規等簡單易猜解或空賬戶口令,如應用系統、中間件、數據庫登錄口令、服務器遠程管理賬戶口令、guest賬戶、Axis2弱口令。0x03 漏洞原理目前,賬號仍然是最主要的用戶身份認證方式,但由於安全意識的淡薄,很多人仍在使用弱口令。而一旦泄漏,所有的安全防範機制都將形同虛設。
弱口令沒有嚴格的準確的定義,通常認為容易被人猜測到或者被破解工具破解的口令均為弱口令。比如僅簡單的純數字、簡單的數字與字母組合的口令,123456、123qwe等。
弱口令的產生與個人習慣與相關安全意識有關,為了避免忘記密碼,通常會使用非常容易記住的密碼,或者直接採用系統默認的密碼等。使用弱口令可導致直接被猜解後登錄系統。
0x04 代碼示例此代碼為某系統後台的登錄代碼,可以看出用戶名是admin、密碼為admin888,這應該是管理員為了避免忘記密碼,使用了一個非常容易記住的密碼,安全意識不夠。若攻擊者使用弱口令TOP100對此系統進行爆破,就可以登錄成功,獲得後台權限。0x05 限制繞過數據庫服務:Mysql、MSSQL、Oracle、MongoDB、DB2等;
特殊含義的單詞、好記的特殊字符組合、特殊含義的字母用數字替換等。
針對網站的弱口令,可以先手工進行猜解幾個可能的弱口令,判斷系統是否做了登錄失敗次數限制,若沒有做此限制,就可以使用爆破工具進行爆破。收集相關信息,使用社工字典生成等工具創建針對該系統的字典,可對用戶名、密碼同時爆破,也可通過猜測的用戶名登錄失敗後,系統返回的信息判斷該賬號是否存在,再針對存在的用戶名進行密碼爆破。
但現在很多網站為了防止系統遭受暴力破解、DDOS攻擊、識別用戶身份等攻擊,會使用驗證碼機制。通常在網站的用戶註冊、密碼找回、登錄等頁面處使用驗證碼,但當這些驗證碼具有一定的規律性並且沒有做好對應的防護措施時會導致攻擊者通過爆破等方式猜解/繞過驗證碼機制,可導致任意用戶註冊、批量註冊無用賬戶、重置任意用戶密碼、獲取系統權限等危害。
常見的驗證碼主要有圖片驗證碼、郵件驗證碼、短信驗證碼、滑動驗證碼和語音驗證碼。
短信驗證碼繞過短信驗證碼暴力破解:大部分情況短信驗證碼由4-6位純數字組成。首先可以先抓取服務器向填寫的手機號發送短信驗證碼的請求包,查看返回包中是否有明文的驗證碼,若有,可直接使用。若沒有可先判斷驗證碼為4位還是6位,且判斷系統是否對驗證碼的失效時間和嘗試失敗次數做限制,若沒有,攻擊者就可以通過嘗試對這個區間內所有的數字進行暴力破解。
比如,若驗證碼為6位,先抓取驗證碼驗證請求包,發送至BurpSuite的Intruder模塊,將驗證碼的範圍設置為0000-9999,對驗證碼進行暴力破解。
短信驗證碼重複使用:系統如果在驗證碼認證成功後沒有將session及時清空,將會導致驗證碼首次認證後重複使用;系統只是前端JS實現驗證碼,後台對驗證碼不進行驗證,這種設置如同紙老虎,可直接爆破;
驗證碼客戶端回顯:某些系統會將驗證碼在客戶端生成而非在服務器生成。針對此類驗證碼,當客戶端需要和服務器進行交互發送驗證碼時,可藉助瀏覽器工具或抓包工具查看客戶端與服務器進行交互的詳細信息,可在返回包中查看到驗證碼。
其他思路:空驗證碼,某些系統即使不輸入驗證碼也不影響正常的驗證流程;獲取驗證碼的方式為通過參數的方式去加載,如:www.xxx.com/yanzheng.php?code=xxx,可以嘗試將參數值改為undefined,即設為控制,也可以通過編寫腳本的方式,獲取驗證碼並傳入驗證流程。
弱口令字典合集【進入公眾號後台回復「弱口令工具包」,即可獲取相應工具及字典】後台常見弱口令:弱口令TOP100、弱口令TOP1000、用戶名TOP500、鍵盤組合TOP100、符合條件的強弱密碼合集等
中間件常見弱口令:數據庫常見弱口令:MySQL、SQL Server、DB2、Mongo DB、Oracle、PostgreSQL、SQLServer等。端口服務類弱口令:3389、FTP、POP3、RDP、SMB、SNMP、TELNET、phpmyadmin、ssh、system等。網絡設備弱口令:H3C、IOT、路由器、Wi-Fi、華為安全產品、國內防火牆默認密碼等。其他弱口令:萬能密碼、後門密碼、強弱字典組合、高效手機號碼等。工具【進入公眾號後台回復「弱口令工具包」,即可獲取相應工具及字典】1、SNETCraker—超級弱口令檢查工具windows平台的一款支持自定義服務端口和字典的弱口令檢查工具。工具採用C#開發,需要安裝.NET Framework 4.0。
工具目前支持SSH、RDP、SMB、MySQL、SQLServer、Oracle、FTP、MongoDB、Memcached、PostgreSQL、Telnet、SMTP、SMTP_SSL、POP3、POP3_SSL、IMAP、IMAP_SSL、SVN、VNC、Redis等服務的弱口令檢查工作。
支持多種常見服務的口令破解,支持RDP(3389遠程桌面)弱口令檢查。;支持批量導入IP地址或設置IP段,同時進行多個服務的弱口令檢查;程序自帶端口掃描功能,可以不藉助第三方端口掃描工具進行檢查;
2、WebCrack——網站後台弱口令掃描工具使用WebCrack可以對特定後台程序進行批量的弱口令爆破,當我們有一批統一程序的後台時,可以採用此工具或類似工具進行自動化的爆破。導入URL後可以直接爆破,需提前搜集好後台地址。
3、hydra—弱口令爆破工具hydra是著名黑客組織thc的一款開源的自動化的爆破工具,可以在線破解多種密碼,已集成到kali中。支持:POP3、SMB、RDP、SSH、FTP、Telnet、Mysql、AFP、Cisco AAA、Cisco auth、CVS、FTP、MSSQL、NCP、NNTP、Oracle、PCNFS、IRC、LDAP等。
4、Go-x-crack—一款GO編寫的常見服務的弱口令掃描工具是一款支持Windows、Linux雙用的弱口令爆破工具。支持:FTP、SSH、SMB、MySQL、MSSQL、PostgreSQL、Redis等。5、domainWeakPasswdCheck—域賬號弱口令審計工具將domainWeakPasswdCheck放到一個殺軟殺不到的地方,不然,mimikatz會被刪除,無法獲取到緩存的ST憑據;

6、WeblogicWeakPwd—Weblogic弱口令批量檢測工具WeblogicWeakPwd最終版仍有欠缺,在異常處理這塊還需要完善,尤其是遇到非web logic的URL,所以推薦預識別中間件,可用之前發布過的weblogic識別腳本https://github.com/rabbitmask/WhoIsWeblogic進行識別,另外,因為多進程模塊自有的小bug,儘可能在非交互界面下使用——使用命令窗口執行。
7、pydictor—字典創建工具pydictor是一個使用python語言開發,遵循GPLv3協議的開源命令行工具,功能強大、簡潔實用、適用場景多。完全使用python原生庫寫成不需要額外安裝其他任何的python模塊;同時支持python2.7+和python3.4版本,支持Windows、Linux、macOS;
8、在線字典創建工具—針對單個賬戶的密碼生成利用這兩個社工庫密碼生成工具,根據相關信息,生成一份具有針對性的密碼字典。
9、白鹿社工字典生成器—社工弱口令依據此類社工弱口令組合的規律,編寫成此款靈活和易用兼顧的字典生成器。
10、BurpSuite模塊jsEncrypter擴展——解決密碼被加密處理問題客戶端JS文件對密碼做加密處理髮送給服務端,推薦使用BurpSuite的擴展工具—jsEncrypter。
11、reCAPTCHA擴展-驗證碼處理0x06 測試過程測試案例1:某系統未設置驗證碼,使用BurpSuite的Intruder模塊對用戶名進行爆破;測試案例2:使用工具對某系統開放的服務進行弱口令爆破;測試案例3:利用驗證碼驗證一次反覆使用的缺陷,繞過驗證碼機制;測試案例1使用BurpSuite的Intruder模塊,設置用戶名為變量,密碼為123456,使用「用戶名TOP500」字典進行爆破,發現大量密碼為123456的弱口令用戶。
測試案例2使用超級弱口令檢查工具,爆破出系統的Memcached用戶名和密碼均為弱口令。
測試案例3確認驗證碼有效性。分別輸入錯誤的驗證碼、正確的驗證碼,查看系統返回信息,判斷系統驗證碼有效。抓包,提交空驗證碼,返回信息如下圖,驗證後台是否對驗證碼進行了驗證。修改為錯誤的驗證碼,提示如下,說明後台對驗證碼也進行驗證。判斷驗證碼是否存在過期的問題。刷新網頁,獲取新的驗證碼,將新的驗證碼繼續輸入到剛才抓取的數據包中。這時輸入的是正確的驗證碼,系統應該返回用戶名與密碼不正確。將用戶名或密碼隨意更改一下,再進行提交,正常來說,系統應該返回驗證碼不正確,但系統返回信息與之前相同,為「用戶名與密碼不正確」。說明驗證碼被重複使用,一次驗證反覆使用,不存在過期的情況。
0x07 風險分析進入系統管理後台修改數據,比如:考試成績,電費水費。0x08 加固建議開發、管理角度口令強制安全策略:在口令生成的時候,需要滿足一定的安全策略,才會被系統接受,比如:
(1)口令長度大於8位;
(2)口令應該為以下四類字符的組合:大寫字母、小寫字母、數字、特殊字符,每類字符至少包含一個;
(3)口令中不應該包含本人、父母、子女或配偶的姓名、出生日期、紀念日、登錄名等與本人相關的信息,以及字典中的單詞;
(4)口令不應該為用數字或符號代替某些字母的單詞;
(5)口令不應該為連續的某個字符或重複某些字符的組合;
(6)不使用空口令或系統缺省口令;
(7)口令不得使用鍵盤上連續的數字、字母或字符;
(8)新密碼不得與舊密碼重複;
口令管理安全策略:以上的口令生成策略、口令管理策略並不能完全規避弱口令的生成,比如:定期修改的密碼,舊密碼與新密碼相比,可能只是對最後的尾數做了修改;雙因子的具體實現中,如果雙重驗證因子沒有進行有效的限制,同樣存在被爆破的可能;驗證碼的自動識別以及人工打碼,已經形成了一條黑色產業。普通用戶角度儘量將辦公使用密碼和私人密碼分別設置,避免「一損俱損」,並定期更換密碼;為防止忘記密碼,可以採取記憶訣竅,用一句自己能夠記憶的句子,例如「XX,你是最帥的」使用每個詞的首字母加上標點符號來創建密碼,就是「XX,nszsd」;不同設備、系統等應使用不同的密碼,以免遭受「撞庫攻擊」;避免使用姓名、手機號、生日等信息做密碼,遠離社工危害;禁止在服務器、辦公電腦中存放網絡設備資產信息及登錄口令;針對安全運維人員,應強制系統管理員賬號密碼強度必須達到一定的級別,並定期更換密碼。驗證碼機制加固:限制單位時間內驗證碼的失敗嘗試次數,比如,五分鐘內連續失敗5次即鎖定該賬號1小時。針對驗證碼認證次數問題,建議驗證碼在一次認證成功後,服務端清空認證成功的session,可有效防止驗證碼一次認證反覆使用的問題。禁止驗證碼在本地客戶端生成,應採用服務器驗證生成機制,且驗證碼應隨機生成,使用一次即失效,可防止驗證碼客戶端回顯問題。
【進入公眾號後台回復「弱口令工具包」,即可獲取相應工具及字典】
https://mp.weixin.qq.com/s/gcxAqJgAEBp4Jm099oPPxQ
Tide安全團隊正式成立於2019年1月,是新潮信息旗下以互聯網攻防技術研究為目標的安全團隊,團隊致力於分享高質量原創文章、開源安全工具、交流安全技術,研究方向覆蓋網絡攻防、系統安全、Web安全、移動終端、安全開發、物聯網/工控安全/AI安全等多個領域。
團隊作為「省級等保關鍵技術實驗室」先後與哈工大、齊魯銀行、聊城大學、交通學院等多個高校名企建立聯合技術實驗室。團隊公眾號自創建以來,共發布原創文章370餘篇,自研平台達到26個,目有15個平台已開源。此外積極參加各類線上、線下CTF比賽並取得了優異的成績。如有對安全行業感興趣的小夥伴可以踴躍加入或關注我們。