■ 中國移動(dòng)通信集團(tuán)河南有限公司業(yè)務(wù)支撐中心 田菁菁 馬文 許慧云
編者按:本文通過對(duì)互聯(lián)網(wǎng)暴露面應(yīng)用系統(tǒng)敏感信息泄露的檢測發(fā)現(xiàn)進(jìn)行介紹,總結(jié)出針對(duì)性的檢測發(fā)現(xiàn)方法,提出了安全管理的要求措施,基于企業(yè)的安全管理場景提供了一些建議和思考。
如今企業(yè)部署安裝的IT 應(yīng)用系統(tǒng)越來越多、越來越復(fù)雜,同時(shí)也對(duì)其承載企業(yè)敏感信息的安全管理工作提出了更高的要求。
當(dāng)企業(yè)IT 應(yīng)用系統(tǒng)中的敏感信息發(fā)生泄露后,企業(yè)卻往往后知后覺,不知所措。因此本文提出了兩種常見的企業(yè)敏感信息風(fēng)險(xiǎn)場景及其對(duì)應(yīng)的檢測發(fā)現(xiàn)方法——應(yīng)用管理地址探測與源代碼信息泄露探測,同時(shí)介紹了使用一些低成本的技術(shù)方式最大限度地發(fā)現(xiàn)風(fēng)險(xiǎn)情況。
在企業(yè)應(yīng)用系統(tǒng)被攻擊的案例中,因應(yīng)用系統(tǒng)自身的管理地址暴露于互聯(lián)網(wǎng)所占比例很高,其中也包含一些常見的Web 中間件的管理地址,如Tomcat、WebSphere等Web 中間件的管理功能頁面。針對(duì)應(yīng)用管理地址的攻擊方式通常為注入攻擊和暴力破解,其中以弱口令和默認(rèn)帳號(hào)密碼猜測為主。以Tomcat 為例,管理員為了維護(hù)方便,通常會(huì)啟用Manager管理頁面,如圖1 所示。
在一些舊版本中,Tomcat的Manager 管理功能的帳號(hào)和密碼在“conf/tomcatusers.xml”文件中進(jìn)行配置,使用一些默認(rèn)的帳號(hào)和密碼,或者弱口令等。通過上述攻擊方法,攻擊者可以在較短時(shí)間內(nèi)獲取攻擊收益。例如,針對(duì)Tomcat 管理功能的某些暴力破解核心代碼中,對(duì)Tocmat的管理地址進(jìn)行提交用戶名和密碼的操作,如果返回的結(jié)果頁面中包含“Tomcat Web Application Manager”或“Tomcat Host Manager”等關(guān)鍵詞,則表示已經(jīng)通過弱口令進(jìn)入其管理地址端。
圖1 Tomcat 開啟了Manager 功能的登錄頁面
由此可見,針對(duì)企業(yè)應(yīng)用系統(tǒng)的管理地址的探測發(fā)現(xiàn)非常有必要。安全管理人員可以通過對(duì)企業(yè)應(yīng)用系統(tǒng)的管理地址及常見中間件的管理地址進(jìn)行探測發(fā)現(xiàn),進(jìn)行針對(duì)性的安全加固和防護(hù)。
在探測方式上,可以采用“管理地址字典+登錄信息關(guān)鍵詞字典”的方式,即首先通過“應(yīng)用系統(tǒng)訪問URL 地址+管理地址字典”進(jìn)行HTTP 模擬訪問,對(duì)于訪問成功且字典類型為中間件的信息,則直接認(rèn)定為存在管理地址泄露。如果成功訪問操作所使用的字典類型為普通的登錄地址字典,還需要再次進(jìn)行登錄信息關(guān)鍵詞字典進(jìn)行匹配,即發(fā)現(xiàn)網(wǎng)頁源碼中使用了“username”“password”及“l(fā)oginid”等關(guān)鍵詞且存在對(duì)應(yīng)的input輸入框,則認(rèn)為存在管理地址泄露。如表1 所示。
字典庫需要能夠分類,并支持不斷地添加和維護(hù),持續(xù)豐富。通過使用字典庫的形式,企業(yè)可以在無需介入業(yè)務(wù)部門具體業(yè)務(wù)的情況下,對(duì)應(yīng)用系統(tǒng)的管理地址泄露情況進(jìn)行探測,能夠以較低的成本實(shí)現(xiàn)對(duì)管理地址的安全管控。
表1 探測字典示例
除了企業(yè)應(yīng)用系統(tǒng)管理地址泄露外,另一個(gè)常見的敏感信息泄露問題是企業(yè)應(yīng)用系統(tǒng)的源代碼泄露。隨著軟件行業(yè)的蓬勃發(fā)展,越來越多的開發(fā)人員將自己的代碼分享到一些源碼管理網(wǎng)站,比如最為著名的GitHub 網(wǎng)站。
近年來發(fā)生過多起大型企業(yè)代碼敏感信息泄露事件,這會(huì)給企業(yè)造成極其嚴(yán)重后果:一是源代碼自身以及配置的帳號(hào)密碼等信息被惡意利用,導(dǎo)致攻擊者無需過高的技術(shù)手段即可攻擊企業(yè)應(yīng)用系統(tǒng);二是開發(fā)技術(shù)、業(yè)務(wù)能力、工程進(jìn)度,甚至戰(zhàn)略投入方向可能被競爭對(duì)手掌握,導(dǎo)致企業(yè)經(jīng)濟(jì)損失。
企業(yè)在對(duì)內(nèi)做好常規(guī)的源代碼安全管理的同時(shí),還應(yīng)在外部進(jìn)行源代碼信息泄露的常態(tài)化探測。與管理地址探測類似,可以使用爬蟲技術(shù)進(jìn)行探測,即根據(jù)代碼分享網(wǎng)站(如GitHub、gitee.com 等)公開API 或使用網(wǎng)頁爬蟲技術(shù)定期進(jìn)行關(guān)鍵字爬取,獲取命中的源碼工程相關(guān)內(nèi)容,內(nèi)容至少包含源碼的URL 路徑、源碼的上下文內(nèi)容、源碼更新時(shí)間,以及命中的關(guān)鍵詞。如表2 所示。
以GitHub 為例,可以使用其開放API 能力進(jìn)行關(guān)鍵詞的檢索。圖2 為偽代碼邏輯示例。
首先通過GitHub 的公開API 進(jìn)行登錄,登錄成功后,使用關(guān)鍵詞進(jìn)行搜索,默認(rèn)搜索100 頁。之后對(duì)搜索結(jié)果進(jìn)行分析,解析出代碼倉庫地址、用戶名及最后修改時(shí)間。如圖3 所示。
表2 常見關(guān)鍵詞示例
通過對(duì)應(yīng)用系統(tǒng)管理地址、企業(yè)源代碼信息泄露的探測研究,筆者發(fā)現(xiàn)企業(yè)往往在上述兩方面的安全管控工作比較薄弱,企業(yè)應(yīng)該建立整體的信息安全防控體系。針對(duì)此類風(fēng)險(xiǎn),根據(jù)實(shí)際的應(yīng)用經(jīng)驗(yàn),筆者提出如下建議:
1.建立完善的企業(yè)敏感信息管理制度,并進(jìn)行預(yù)案化,責(zé)任到人,同時(shí)加強(qiáng)企業(yè)敏感信息保護(hù)宣傳,增強(qiáng)企業(yè)員工的保密意識(shí)。
2.對(duì)應(yīng)用系統(tǒng)確需對(duì)外開放的管理地址、確需公開的源代碼工程進(jìn)行白名單化,并對(duì)白名單內(nèi)的管理地址進(jìn)行針對(duì)性的加固,對(duì)源代碼工程進(jìn)行代碼級(jí)別審核。
3.將應(yīng)用系統(tǒng)管理地址、源代碼信息泄露探測作為常態(tài)化監(jiān)測任務(wù),發(fā)現(xiàn)問題后通過電話、即時(shí)通訊軟件、加急或重大級(jí)別的工單進(jìn)行迅速處置,并進(jìn)行閉環(huán)跟蹤。
4.除企業(yè)內(nèi)部員工外,還要對(duì)離職員工、承包商及其員工、合作伙伴等實(shí)施企業(yè)敏感信息保護(hù)管理要求,必要時(shí)進(jìn)行法律合同約束。
圖2 偽代碼邏輯示例
圖3 探測發(fā)現(xiàn)的源代碼泄露案例
企業(yè)敏感信息保護(hù)應(yīng)是統(tǒng)一的、立體的,這對(duì)互聯(lián)網(wǎng)暴露面資產(chǎn)的應(yīng)用系統(tǒng)尤為重要。本文針對(duì)應(yīng)用系統(tǒng)管理地址及企業(yè)源代碼信息泄露的探測發(fā)現(xiàn)進(jìn)行研究和實(shí)踐,提出的技術(shù)和管理方式能夠使企業(yè)以較低成本發(fā)現(xiàn)和治理應(yīng)用系統(tǒng)的風(fēng)險(xiǎn)點(diǎn)。