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