1. 程式人生 > >奇虎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、總結

我作為攻擊者,做安全評估時間很長。但自己總是站在防疫的角度看,安全是一個整體,細節再安全難免有疏忽。攻擊者總是尋找薄弱點進行攻擊,木桶原理。作為防禦者我會以攻擊者的角度來防禦。

未知攻,焉知防。只有知道怎麼攻擊,才能更好地防禦。

原文來自微信公眾號:高效運維