(107/7/29)中華資安國際於HITCON CMT 2018攤位提供模擬系統入侵遊戲,民眾反應熱烈

前言

        「台灣駭客年會社群場」(HITCON CMT 2018)於7/27-7/28為期兩天於南港展覽館舉行,中華電信及中華資安國際在HITCON CMT攤位活動上,設計一個模擬社交工程真實案例的體驗活動,希望以寓教於樂的方式,提醒企業與個人瞭解各種安全防護上的風險因素。

        參加者藉由靜態社交資訊搜集的方式(人肉搜索),利用使用者洩漏的資訊,逐步抽絲剝繭找出使用者的帳號密碼,達到入侵系統的目的,為期兩天的活動共計約250位會眾通過第一階段關卡、80位最終闖關成功,闖關者普遍反應難易適中、解開很有成就感,為呼應「鏈出世界、解密未來」大會主題,攤位成功過關者可參加射飛鏢遊戲,以獲得更多主辦單位發行的HITCON Token虛擬幣,在大會中換取紀念品及獎勵。

圖:熱絡的活動現場


攤位活動題目解題流程說明

        一開始在攤位上取得一張名片,上面載明了公司和該名員工的公開資訊,也就是一般人際交流中就可取得的使用者資料,攻擊目標則是一個只有登入畫面的網站系統。

:左圖為名片,右圖為目標系統

        針對姓名進行搜索,即可找到該人員的Facebook頁面,以及連接的Google+等社交圈,在這些社交媒體中,大頭照及姓名皆為公開顯示,而貼文權限則可由使用者自行決定,許多無隱私觀念的使用者,常會洩漏更多可用資訊,從中可取得個人的喜好與行蹤等。

: FB頁面

        在尋找的過程中,發現該人員使用了Trello的看板式管理網站,其中在待辦事項中,可找到一個開發中系統的功能要求列表,以及Github連結。有些人為求方便分享給朋友,會無意將Trello的權限設為Public,洩漏更多敏感資訊。

: Trello畫面

        在Github中,發現了目標系統的原始碼,以及程式更新紀錄(Commits),找到了一組帳號及密碼,密碼為一組md5雜湊值。由於Github免費使用者必須將開發專案設定為公開,因此任何人皆可存取,且git的特性是可以對程式碼進行版本控管,每一次commit後的結果都會保存下來,即使在最新版本刪除內容,並無法消除過去的紀錄。

從修改紀錄中找回原始的程式內容

        在程式碼中可以發現密碼經過了一次md5,因此只能取得雜湊值,但僅進行一次的md5並不是安全的作法,在本案例中,長度8碼、含大小寫英數字及符號的密碼,不需要暴力運算,只需經過Google或利用線上解即可破解還原,取得原始密碼。

在網路上即可搜尋到雜湊值的原始明文

        利用原始碼中發現的帳號及還原的密碼,即可成功登入系統,至此即完成了第一階段的模擬入侵。挑戰者可繼續第二階段的挑戰,透過常見的流程和程式設計缺失,以及利用前述搜尋過程中的所發現的使用者個人資訊,將另一個系統攻破。


結論與建議

        在流程中所使用的社交媒介、看板式管理、程式碼版控等網站,本身並沒有漏洞,而是利用人員使用產生的資訊,以某種關聯相連而成社交網路,再與目標公司相關聯後,無形中拉高了對企業的威脅。

        攻擊者若直接嘗試入侵本例中的系統,因程式簡單且帳號及密碼強度足夠,入侵相當困難,所以在傳統的弱點掃描或滲透測試,皆無法找出漏洞,但是透過人員洩漏的資訊,最快在10分鐘即可入侵並成為管理者,由此可見,人性的弱點永遠是安全管理上的最大風險。

        因此,無論是系統開發、維護或使用人員,皆應進行安全意識的教育訓練與社交工程演練,避免企業的資訊透過類似的管道洩漏,或遭到釣魚攻擊取得,一旦重要的存取點遭駭客進入,立刻門戶洞開,即使建置再多的安全防護設備都無法發揮作用。另外,也建議定期實施包含APT攻擊的進階滲透測試,亦即時下倡導的紅隊演練(Red Team),以稽核系統和人員意識的安全強度。

        最後,密碼保存部份應遵循正確的作法,無論是明文保存或一次性雜湊,皆為常見且錯誤的方式,正確作法應運用「加鹽雜湊」(Salted-Hash),即先為密碼加上一段秘密長字串(salt),再重覆進行多次雜湊運算後,才存入資料庫,理想的實作方式是依每一個不同使用者,配置不同的salt,使用者日後輸入的密碼,一樣經過同樣步驟運算出雜湊值,比對之下即可得知是否輸入正確密碼,達到安全保存的目的。