《奇虎360高級安全研究員李福:別讓黑客毀掉運維》要點:
本文介紹了奇虎360高級安全研究員李福:別讓黑客毀掉運維,希望對您有用。如果有疑問,可以聯系我們。
作者簡介:
李福
奇虎360 高級安全研究員
360 WEB攻防團隊 0keeTeam 成員,擁有多年安全實戰經驗, 擅長滲透測試與漏洞挖掘.專注于安全評估,對各種漏洞利用和場景有獨到的見解.BlackHat 2016演講者.
作者來自360信息安全部的 0KeeTeam,主要做企業級的深度測試,挖掘運維基礎服務的漏洞,并通過漏洞做企業級的安全評估.
1、常見的安全風險
本文以攻擊者的角度看,主要寫一些可能因為運維的問題會導致攻擊成功.比如說弱口令問題,聽起來比較 low,但實際問題一直存在.
1.1 弱口令危害安全的入口之一
弱口令對于強密碼,經常有人問我,怎樣的密碼才叫強? “密碼要求8位以上,大小寫加數字和字符,為什么還說這是弱口令”.
針對鍵盤序列生成的密碼有多少人在使用呢? 如下圖所示,左邊的密碼規律很明顯,對照右邊的鍵盤來看,就是按照這個鍵盤區位產生的密碼,同類型的組合還有很多.
這個組合有限的,而且很多人也有這個習慣.攻擊者在攻擊企業的時候,重要的入口就是郵箱,OA 這些系統會使用這樣的密碼.那么弱口令的問題就是一個大問題了.
常見的密碼組合,這邊有四個規則:
第一種,修改密碼的時候說不包含數字,不符合要求,后面加 123 或者 321 符合要求.
第二種,有可能說前面的長度不夠再加長一點,123456 都是有可能的.
第三種,有可能運維提示,密碼今年過期了,只能再修改一個,為了方便記憶修改加一個年份,如 2017 2016
第四種,密碼組合加公司域名,大家可以想像自己的密碼是不是包含公司的域名.
初始化的問題.大家看到圖中,根據不同人員的類型設置測試密碼.我們作為攻擊者首先關注到了外包人員初始化密碼的規則.
密碼最簡單的就是出生年月,這個攻擊實現起來很簡單,暴露破解賬號,加上有限的生日密碼字典.
1.2 弱口令擴大的安全傷害
除弱口令之外,還有信息收集.現有密碼泄露情況來分析,可以分析出大的一些規則.有的人喜歡把生日放在密碼組合里面,有的人喜歡把公司域名放在里面.
還有通過嘗試,攻擊者可以看到密碼,從而進入比較重要的系統.有的人說密碼比較長,很安全,我說能不能謙虛一點,他說我的密碼 98% 的黑客是攻破不了的.
但當你100個人說這樣的話,概率還是不足1/3的.當500個員工說密碼比較強的時候,這個可能性是趨于零的.
有個互聯網的公開案例,某銀行因為弱口令導致服務器被攻破.攻擊者猜出口令,user 是人名的拼音.
中國的大環境下不同的姓有可能拼音一樣,經過相關數據統計可以統計前500,前1000使用任命組合轉化成拼音,我們把它作為用戶名的字典.
當時攻擊者利用口令進入到系統以后,拿到服務器的權限,攻擊者通過這臺服務器作為入侵銀行的跳板.
弱口令的問題一直存在,有必要引起各位的重視,不能掉以輕心.
2、Devops面臨的安全風險
2.1 關于Github的一些問題
我沒有寫代碼層面和技術層面的安全問題,我覺得系統漏洞和人工造成的漏洞,大家都是需要負責的.
聊一聊敏感信息泄露,在過去很長的時間里,大家可以利用 GitHub 隨時隨地方便修改代碼
上圖是運維,把自己的內容上傳到 GitHub 上,代碼中涉及到賬號密碼和數據庫配置,還有可能涉及到有哪一些資產.
我上傳的可以保證沒有漏洞,密碼都去掉了.關鍵性的算法都去掉,但有的黑客會仔細的審計你的代碼風格,挖掘代碼中的漏洞,然后再攻擊系統.
我們現在做過長期監控,通過關鍵字搜索和長期的賬戶監控,我們會及時地發現員工上傳代碼到 GitHub,有敏感影響的我們會及時地聯系他刪除.
git 泄露,使用了 git 攻擊后會留下 git 目錄.攻擊者利用現場的工具可以獲取部分的代碼,甚至是整個網站的源代碼.DS-Store 會泄露路徑的信息.
idea 對攻擊者有非常有用的點,git、son 都是代碼上傳的工具,利用這兩種方式可以獲取網站的原代碼.通過交換文件,可以完全地還原文件的內容.
特別巧的是,通常有人會去對你數據庫配送文件.通過還原科技獲取到數據庫密碼.代碼備份,我打一個包,以日期命名或者當前的目錄命名.
不管是數據庫程序,在攻擊者的眼里是很容易掃描到代碼和數據庫數據的.通過代碼審計漏洞,然后通過代碼獲取敏感連接或者獲取關鍵性的算法.
2.2 代碼和流程問題
代碼和流程問題.很多的開發人員說自己開發代碼,為了更加方便在代碼加入開關,看有哪一些數據輸出輸入.
測試完成以后沒有問題就上線,代碼還是線上代碼.因為這個開關沒有人會注意,但黑客傾向于發現這樣的問題,為了方便,開關可能放在 Cookies 里面,或者在 git 請求里面.
有一個典型的例子,開源的 CMS 對外發布一個版本,在用戶系統里每個人有用戶空間.UID=1,這是用戶空間.然后 git 請求下,會把用戶信息給你打印出來.
數據庫報錯的信息,可以清楚地知道這個領域,也可以猜測你的數據庫結構,知道你存儲了哪一些東西,利用這些東西可以更加深層地挖掘漏洞.
2.3 其他的信息泄露風險
信息泄露另外的途徑就是不可控的途徑,我也不知道自己的信息和密碼在互聯網上有多少版本.
有一次通過密碼泄露查到了初中時候使用的 QQ 號密碼.我覺得比較驚喜和驚訝,對員工的攻擊面是非常廣的.很多人使用公司郵箱注冊密碼,我攻擊企業肯定通過數據公開查詢對比密碼,然后再針對員工去攻擊.
這個員工可能在互聯網上有兩三套密碼,我都解決掉,在他的郵箱和網盤發現了敏感的內容.公司某某的電話多少,公司的通信錄密碼多少.
員工個人安全也是我們專注的,因為有人說自己是 360 的,個人郵箱和網盤被攻破了,我們認為這是安全的問題,因為網盤存儲的內容和我們360相關.
GitHub 運維腳本,郵箱是否可以連通,使用了自己的賬號和密碼.比較配合地將內容上傳到 GitHub,黑客用關鍵字搜索這家公司域名的時候,發現運維腳本,然后登錄了統一認證系統,統一認證系統說手機二次驗證,因為沒有手機號.
攻擊者通過郵箱的密碼給了郵件,說我的手機號碼換了,確認一下身份,我是某某,手機號換多少.手機號修改成攻擊者自己的,經過了二次驗證.
在內網核心的攻擊是代碼支持庫,核心代碼的 SVN 與 GitHub.后臺系統在管理人員看來已經為所欲為.
3、運維躺過的那些坑
3.1 基礎服務上的安全風險
基礎服務的安全風險無非就是弱口令、未授權、配置不當.上圖列的是代碼備份的訪問,連上去可以下代碼和操作的.
通過未授權可以獲得服務器的選項,因為可以執行系統命令.
3.2 如何去改進
這里有一個典型的例子,有黑客對網站進行攻擊的時候,發現測試系統存在弱口令,原因是因為測試環境和生產環境混在一起了導致存在弱口令,這樣的問題很容易出現.
另外同事之間不在自己的電腦上搭建外部服務或者說開啟一些敏感端口,黑客入侵到內網的時候,會先入侵到內網的服務器.入侵辦公網,這個概念又是不一樣,因為個人電腦存儲敏感信息比服務器更多.
4、總結
我作為攻擊者,做安全評估時間很長.但自己總是站在防疫的角度看,安全是一個整體,細節再安全難免有疏忽.攻擊者總是尋找薄弱點進行攻擊,木桶原理.作為防御者我會以攻擊者的角度來防御.
未知攻,焉知防.只有知道怎么攻擊,才能更好地防御.
原文來自微信公眾號:高效運維