隱藏攻擊面,提升信息安全防范能力
1. 攻擊面在安全攻防中的價(jià)值
洛克希德-馬丁公司的網(wǎng)絡(luò)殺傷鏈(Kill Chain )模型描述的攻擊過(guò)程一般包括7個(gè)階段:偵察跟蹤、武器構(gòu)建、載荷投遞、漏洞利用、安裝植入、命令與控制、目標(biāo)達(dá)成。偵察階段主要實(shí)現(xiàn)對(duì)攻擊目標(biāo)(如服務(wù)器,公司網(wǎng)站,內(nèi)網(wǎng)等)的各類(lèi)信息收集,其中就包括通過(guò)各種技術(shù)手段進(jìn)行主機(jī)和端口掃描,獲取存活I(lǐng)P地址、系統(tǒng)類(lèi)型、開(kāi)放端口、服務(wù)版本等基本信息。
安全防守方一般基于傳統(tǒng)的縱深防御理念,在物理、網(wǎng)絡(luò)、系統(tǒng)、應(yīng)用、數(shù)據(jù)、流程、人員管理等不同維度使用技術(shù)和管理手段,對(duì)各種攻擊行為進(jìn)行威懾、預(yù)防、檢測(cè)、響應(yīng)和恢復(fù)。針對(duì)攻擊過(guò)程第一階段的掃描行為,安全防守方可以采取的措施包括梳理并減少對(duì)外暴露的攻擊面,進(jìn)行系統(tǒng)和應(yīng)用的安全基線加固,補(bǔ)丁更新、banner隱藏、日志和網(wǎng)絡(luò)流量審計(jì)等手段,一方面減少和降低攻擊者可以發(fā)現(xiàn)的風(fēng)險(xiǎn)資產(chǎn)數(shù)據(jù),同時(shí)對(duì)早期的攻擊行為及時(shí)進(jìn)行預(yù)警。
根據(jù)實(shí)戰(zhàn)經(jīng)驗(yàn),攻擊者在偵察階段收獲的目標(biāo)資產(chǎn)數(shù)據(jù)量多少和風(fēng)險(xiǎn)高低,某種程度上決定了后續(xù)攻擊行動(dòng)的難易程度和最終的攻擊成果。一些HW行動(dòng)中,經(jīng)常會(huì)看到紅方人員早期的拔線操作,其最終目標(biāo)就是盡可能減少藍(lán)方可以獲取到的攻擊面風(fēng)險(xiǎn)資產(chǎn)數(shù)據(jù)。因此從某種方式來(lái)看,最初的攻擊面掃描和安全防護(hù),對(duì)攻防雙方來(lái)說(shuō)有點(diǎn)像爭(zhēng)奪灘頭陣地。對(duì)于攻擊者來(lái)說(shuō),需要盡可能拿到更多的攻擊面信息,以便下一步開(kāi)展武器化攻擊活動(dòng);對(duì)于防守方來(lái)說(shuō),需要盡可能通過(guò)各種方法減少暴露的攻擊面信息,以在攻擊初期就可以截?cái)喙粽吆罄m(xù)的各類(lèi)攻擊行為。
我們可以試著想象一下這種場(chǎng)景:攻擊者在攻擊第一階段進(jìn)行資產(chǎn)漏洞掃描時(shí),如果防守方突然通過(guò)某種方式給信息資產(chǎn)穿上了一層隱身衣,會(huì)是怎樣一種情形?攻擊者會(huì)發(fā)現(xiàn)無(wú)論是fping、nmap、zmap又或者是openvas、nessus、wvs等各種掃描工具均無(wú)功而返,根本不能和想攻擊的服務(wù)器或應(yīng)用建立任何的網(wǎng)絡(luò)層連接,之前預(yù)先準(zhǔn)備好的各種攻擊工具、POC和0Day漏洞等招數(shù)全部落空,一臉郁悶吧。盡管現(xiàn)實(shí)中的實(shí)際情況不會(huì)這么絕對(duì),但如果防守方可以把關(guān)鍵信息資產(chǎn)(如對(duì)外開(kāi)放的公網(wǎng)服務(wù)、內(nèi)部辦公應(yīng)用系統(tǒng)等)進(jìn)行統(tǒng)一隱身管理,必然可以大大降低公司整體信息資產(chǎn)風(fēng)險(xiǎn),顯著提升公司安全防范能力。
這種隱身方法,除物理斷網(wǎng)外,現(xiàn)有的一些安全技術(shù)也可以達(dá)到類(lèi)似的攻擊面隱藏效果,如Port-knocking、SPA及SDP解決方案。
2. 隱藏攻擊面的幾種方法
2.1. 端口敲門(mén)技術(shù)(Port-Knocking)
端口敲門(mén)是一種通過(guò)服務(wù)器上關(guān)閉的端口來(lái)傳輸約定信息的方法,從而在用戶訪問(wèn)受保護(hù)服務(wù)之前對(duì)用戶進(jìn)行身份驗(yàn)證,主要用于對(duì)公網(wǎng)開(kāi)放的服務(wù)如sshd進(jìn)行安全防護(hù)。
Port-Knocking實(shí)現(xiàn)原理介紹
- 主機(jī)防火墻默認(rèn)規(guī)則是DROP所有請(qǐng)求包,從外網(wǎng)來(lái)說(shuō),沒(méi)有任何方法可以確認(rèn)服務(wù)器是否存活(備注:因?yàn)镈ROP規(guī)則不會(huì)發(fā)送響應(yīng)包,從而避免掃描器根據(jù)響應(yīng)包確認(rèn)端口的開(kāi)放情況。REJECT/DENY規(guī)則會(huì)發(fā)送ICMP_PORT_UNREACHABLE返回給客戶端,掃描器如nmap可據(jù)此判斷出端口狀態(tài)是filter,從而暴露服務(wù)器本身是存活的,端口是開(kāi)放的,但禁止掃描器IP訪問(wèn));
- Port-Knocking守護(hù)進(jìn)程運(yùn)行在服務(wù)端,并在主機(jī)防火墻DROP數(shù)據(jù)包時(shí)進(jìn)行分析,如果某個(gè)源IP發(fā)送的一系列TCP或UDP數(shù)據(jù)包是按照服務(wù)端預(yù)先設(shè)定的特定順序訪問(wèn)了對(duì)應(yīng)的一組TCP或UDP端口(表示敲門(mén)暗語(yǔ)正確),則knockd進(jìn)程自動(dòng)調(diào)用iptables命令執(zhí)行配置文件中預(yù)設(shè)的對(duì)應(yīng)規(guī)則,如增加一條允許該IP地址訪問(wèn)服務(wù)器SSH端口的規(guī)則。如果數(shù)據(jù)包不滿足服務(wù)端預(yù)設(shè)的端口訪問(wèn)順序,則守護(hù)進(jìn)程不會(huì)執(zhí)行任何操作。
Port-Knocking帶來(lái)的安全性提升
- 服務(wù)器是否在線對(duì)攻擊者來(lái)說(shuō)不可感知
服務(wù)器主機(jī)防火墻默認(rèn)DROP所有請(qǐng)求的數(shù)據(jù)包,因此攻擊者不能通過(guò)掃描器確認(rèn)服務(wù)器是否存活,以及服務(wù)器上開(kāi)放的任何端口。
- 漏洞服務(wù)不會(huì)對(duì)外暴露
訪問(wèn)服務(wù)器上對(duì)外開(kāi)放端口所對(duì)應(yīng)的服務(wù)需要預(yù)先知曉敲門(mén)順序,所以即使對(duì)外開(kāi)放的服務(wù)如SSH等存在哪怕是0day漏洞,攻擊者也無(wú)法利用。不存在暴力破解、字典攻擊、協(xié)議漏洞等安全問(wèn)題。
- 建立多層防御體系
端口敲門(mén)順序是受信用戶才應(yīng)知曉的秘密口令,因此某種程度來(lái)說(shuō),敲門(mén)順序和密碼一樣,也是一種用戶身份驗(yàn)證機(jī)制。只有輸入了正確的敲門(mén)順序后,才會(huì)允許訪問(wèn)對(duì)應(yīng)的服務(wù),即在所訪問(wèn)服務(wù)之前增加了一層用戶身份認(rèn)證防護(hù)。
2.2. 單包授權(quán)技術(shù)(Single Packet Authorization)
SPA可以說(shuō)是下一代的端口敲門(mén)技術(shù),和Port-Knocking實(shí)現(xiàn)機(jī)制不同的是,SPA把敲門(mén)所需要的信息即授權(quán)包PA(Authorization Packet),編碼在單個(gè)數(shù)據(jù)包內(nèi),然后發(fā)送給服務(wù)器的任意端口。
SPA傳遞的授權(quán)包信息類(lèi)似:
AID : 發(fā)送數(shù)據(jù)包的客戶端唯一ID,明文傳輸以便服務(wù)端根據(jù)該ID查到對(duì)應(yīng)的解密密鑰
PASSWORD : 客戶端口令(和服務(wù)端共享)
NEW_SEED : 下次事務(wù)的新種子
RANDOM : 客戶端發(fā)包前生成的隨機(jī)數(shù),避免重放攻擊
MD5_HASH : 上述值的hash計(jì)算結(jié)果
和Port-Knocking技術(shù)相比,SPA具有如下優(yōu)點(diǎn):
- SPA僅需發(fā)送一個(gè)數(shù)據(jù)包,而Port-Knocking需要發(fā)送多個(gè)敲門(mén)數(shù)據(jù)包 (數(shù)據(jù)量大小)
- Port-Knocking數(shù)據(jù)包到達(dá)服務(wù)端順序不一致時(shí)會(huì)導(dǎo)致敲門(mén)暗語(yǔ)錯(cuò)誤從而認(rèn)證失敗,SPA不存在類(lèi)似問(wèn)題
- SPA數(shù)據(jù)包中包括一個(gè)一次性隨機(jī)字段,可以避免重放攻擊(重放攻擊)
- SPA傳輸?shù)臄?shù)據(jù)是加密的,而Port-Knocking數(shù)據(jù)包中包括了明文端口敲門(mén)順序(sniffer)
- 通過(guò)修改數(shù)據(jù)包源IP地址,攻擊者可以破壞Port-Knocking認(rèn)證過(guò)程,但是SPA服務(wù)器僅允許訪問(wèn)SPA載荷中最初加密的IP(避免MITM)
2.3. 軟件定義邊界技術(shù)(Software Defined Perimeter)
隨著云時(shí)代的來(lái)臨,2013年云安全聯(lián)盟(CSA)提出了軟件定義邊界(Software Defined Perimeter,SDP)的概念,并于2014年發(fā)布了《SDP標(biāo)準(zhǔn)規(guī)范1.0》,為各安全廠商構(gòu)建自己的SDP產(chǎn)品提供指南。
SDP標(biāo)準(zhǔn)的核心仍然是通過(guò)SPA協(xié)議對(duì)后端服務(wù)實(shí)現(xiàn)隱身后的防護(hù),但擴(kuò)展了SPA的應(yīng)用場(chǎng)景。通過(guò)引入SDP控制器,可以支持多種身份認(rèn)證和授權(quán)服務(wù),通過(guò)連接接受主機(jī)(AH)的網(wǎng)關(guān)模型,可以對(duì)網(wǎng)關(guān)后的多臺(tái)服務(wù)器或應(yīng)用服務(wù)進(jìn)行隱身和防護(hù),從而在Iaas、Paas、SaaS、遠(yuǎn)程辦公、私有云、混合云等場(chǎng)景下實(shí)現(xiàn)信息資產(chǎn)的隱身保護(hù)。
SDP技術(shù)方案的真正落地涉及到管理人員的安全認(rèn)知改變,SDP產(chǎn)品性能和功能完善,IT基礎(chǔ)架構(gòu)及應(yīng)用使用場(chǎng)景的身份認(rèn)證和授權(quán)機(jī)制的改造,目前主要還是以取代遠(yuǎn)程VPN訪問(wèn)、內(nèi)辦公平臺(tái)統(tǒng)一安全管理等內(nèi)部應(yīng)用場(chǎng)景。有關(guān)SDP的介紹和其他應(yīng)用場(chǎng)景可參考之前發(fā)布的《零信任和軟件定義邊界》一文。
目前在其他行業(yè)如游戲行業(yè),零信任或“連接之前首先進(jìn)行身份驗(yàn)證”的安全理念也有一些實(shí)踐成果,通過(guò)游戲客戶端內(nèi)嵌專(zhuān)用sdk和游戲服務(wù)端建立連接并進(jìn)行合法性驗(yàn)證,可有效預(yù)防和降低DDOS和CC攻擊,如阿里云游戲盾,締盟云太極盾等。
可以肯定的是,基于ZTNA的顛覆性安全理念,幾年后云計(jì)算、IOT、工業(yè)控制、衛(wèi)星通信等多個(gè)行業(yè)必將有更多的SDP實(shí)現(xiàn)方案和案例落地。
2.4. 實(shí)現(xiàn)工具
- 服務(wù)隱身,如iptables recent模塊,knockd項(xiàng)目,fwknop項(xiàng)目
- 網(wǎng)段內(nèi)服務(wù)和應(yīng)用隱身,SDP產(chǎn)品廠商如deepcloud,Pulse Secure等
2.5. 參考資料
- https://zeroflux.org/projects/knock knockd項(xiàng)目
- http://www.cipherdyne.org/fwknop/ fwknop項(xiàng)目
- https://ir.lib.uth.gr/xmlui/handle/11615/48775
- http://www.securitygeneration.com/wp-content/uploads/2010/05/An-Analysis-of-Port-Knocking-and-Single-Packet-Authorization-Sebastien-Jeanquier.pdf