王鵬輝 金曉飛 唐磊 王克昌 鄭子辰 馬牧野
(1.中國建筑一局(集團)有限公司;2.深信服科技股份有限公司;3.住房和城鄉建設部信息中心)
隨著建筑行業信息系統建設的有序推進,智能建造逐步成為建筑行業轉型升級的重要抓手,建筑行業系統的高度互聯大大增加了網絡安全風險。習近平總書記強調,“網絡安全和信息化是一體之兩翼、驅動之雙輪,必須統一謀劃、統一部署、統一推進、統一實施”。目前,智能建造系統使用大量物聯網設備、傳感器和視頻監控等設備去獲取實時數據,達到對建造過程的可視化管理,進而推進項目設計、施工和運維各個階段的智能應用。但是通過態勢感知平臺的日常運營監測,發現有大量的攻擊者對各業務系統進行無差別的網絡攻擊探測。其中,云函數攻擊就是近年來廣受攻擊者青睞的一種攻擊技術,由于云函數的IP 地址是隨機分配,導致無法對攻擊進行有效的攔截與防護。本文通過分析建筑行業智能建造系統的特點,提出了一種基于零信任模型構建的云函數攻擊防御體系,以保障各智能建造系統的安全平穩運行。
BIM 技術的應用、云技術平臺應用、大數據應用、物聯網應用是信息化建設的發展趨勢,這些技術的應用使得項目管理逐步透明化、規范化和標準化。但是,建筑行業面臨的信息安全風險也急劇增高,主要體現在以下四個方面:
一直以來,建筑技術在信息化程度的投入和關注不高,在早期建筑自動化的通信標準中缺少基礎的安全加密、認證和保護方面的設計,能看出行業對網絡安全方面的關注微乎其微。使用未加密的協議進行通信,為攻擊者進行流量嗅探和篡改敏感信息提供了機會。由于建筑行業項目交付產物周期長,仍然有大量傳統的建筑自動化系統(Building Automation System,BAS)在提供服務,這類系統和設備大多使用默認的用戶名密碼,充滿了安全漏洞和配置問題。攻擊者也更容易利用這類系統的歷史漏洞進行攻擊,進而影響BAS 功能的可用性,尤其是影響水、電、通風、電梯以及火警和滅火系統等可能引起人身安全問題的關鍵BAS 功能。
隨著云平臺和物聯網等技術在智能建造項目中的應用,智能化建筑系統需要部署大量的傳感器和計算機,設備之間涉及到大量的網絡連接、數據傳輸和存儲。與傳統建筑行業內網運行的信息化系統不同,智能化建筑系統還普遍開放在互聯網,方便設備互連互通的同時也導致了極高的互聯網暴露面風險。目前智能化設備普遍缺乏安全性,容易受到網絡攻擊,進而導致敏感數據泄露的安全風險,對用戶個人隱私和財產安全構成威脅。
建筑行業在智能化轉型的過程中,廣泛推進新技術的運用,越來越多的企業數據被以電子形式使用、共享和保存。但是,加快信息系統建設的同時卻缺少全面、系統性的網絡安全頂層設計,沒有建立完善的網絡安全管理體系,設立的安全體系和安全控制措施不能充分有效地發揮效能。管理人員和技術人員又缺乏必要的專業知識,不能及時發現系統的安全隱患和風險,對網絡安全應急事件不能作出積極、有序和有效的反應。
近年來,人工智能技術的迅猛發展給各個領域都帶來了前所未有的變革和進步,GPT 的出現更是引發人工智能大模型應用熱潮。但AI 技術不僅可用于維護網絡安全,還可能為有心之人用以AI 網絡攻擊,互聯網惡意攻擊者也開始利用這項技術快速構建攻擊工具,對互聯網資產進行批量攻擊。而且,攻擊者正在濫用云服務和策略,以充分利用云原生環境的復雜性,使用源混淆、云函數等使它們更難被跟蹤,防守方基于IoC 的防御效果大打折扣。
基于以上安全風險,有必要對攻擊者常用的安全技術進行分析,發現潛在的攻擊行為,以提高網絡安全防御能力,保護業務系統的安全性。
云函數是Serverless(無服務器計算)目前應用最廣泛的一種計算服務產品,提供FaaS(Function as a Service)能力。云函數是一段運行在云端的、輕量的、無關聯的、并且可重用的代碼,無需管理服務器,只需編寫和上傳代碼,即可獲得對應的數據結果。使用云函數可以使企業和開發者不需要擔心服務器或底層運維設施,可以更專注代碼和業務本身,也可以使代碼進一步解耦,增加其重用性。
云函數具有按需執行、靈活擴展、多語言支持等特點,其無狀態性保證了高可用,同時減少了基礎設施管理的工作負擔,適用于各種獨立、短時、事件驅動的任務,為現代應用程序提供了高效、彈性的開發方式。
(1)按需執行
云函數在需要時才會啟動,執行特定的代碼邏輯,然后立即停止。這可以節省資源并降低成本。
(2)靈活擴展
云函數可以根據需求動態擴展,處理大量并發請求,然后在負載下降時自動縮減。
(3)多語言支持
云函數服務通常支持多種編程語言,如JavaScript、Python、Java、Node.js、Go 等,讓開發者可以使用熟悉的語言來編寫代碼。
(4)多服務出口
云函數運行在云服務商數據中心依托于云服務商的多互聯網出口及CDN 服務對外提供API 調用,天然實現服務端IP 隱藏及服務加速的功能。
與任何新技術一樣,Serverless 應用讓開發更加便利和高效,但其安全性也是在事后才被考慮到。云服務商只負責云的安全性,而不是云函數的安全性,云函數的操作缺乏有效的監管與追蹤,為企圖濫用的攻擊者提供了更多的機會。目前,濫用云函數作為攻擊前置的攻擊方式是攻擊者常用的隱藏自身的有效手段,其主要原因有兩點:一是云函數作為一種Serverless 的服務,會有一個API 網關觸發器配合進行使用,該網關提供了一個云服務商備案過的特定域名,具備高可信度的同時又具備IP 不唯一的特點;二是云函數支持多種語言環境,可直接進行工具部署,大大縮短了準備時間。攻擊者利用云函數通過HTTP 代理、SOCKS5 代理等方式建立代理池,借助云函數多出口的特性,在掃描探測階段繞過WAF、態勢感知等設備的監測,防止大量的掃描探測攻擊被封禁。除此之外,攻擊者在突破邊界利用免殺CS 木馬上線的時候,通過云函數來轉發HTTP/HTTPS 請求達到隱藏C2 上線的效果,為防止被溯源,利用云函數隱藏連接Webshell 的本機IP 地址,為了達到更隱秘的目的,可以對Webshell 流量進行加密以逃避流量分析和威脅情報的檢測。以下為利用云函數常見的攻擊方式:
攻擊者通過HTTP 代理客戶端掛上代理發送數據包,HTTP 代理服務器攔截數據包,提取 HTTP 報文相關信息,然后將報文以某種形式POST 到云函數HTTP 代理服務端進行解析,云函數HTTP 代理服務端根據解析到的信息對攻擊目標發起請求,最終將結果一層一層返回。由于攻擊者使用云函數代理通過了CDN 網絡,目標服務器僅可以看到CDN服務商的域名發起了攻擊行為,且每次攻擊的IP 地址都會發生變化。

正常SOCKS5 代理請求的流程為服務端監聽來自客戶端的請求,當客戶端發起一個新的連接,服務端生成一個socket A,并從數據包中解析出目標服務器的地址和端口,在本地對目標發起一個socket B,同步兩個socket 的IO 操作。

socket 可對外發起連接,云函數能對外發包,因此攻擊者可以將云函數當作中間人,一側對云函數發起連接,另一側對目標服務器發起連接。從目標服務器側看是云服務商的IP 地址在建立SOCKS5 連接,達到隱藏攻擊者真實IP 的目的。
通過云函數的方法攻擊者可以隱藏連接Webshell 的本機IP 地址,從而防止溯源,為了達到更加隱秘的目的,可以對Webshell 流量進行加解密來逃逸流量檢測,通過流量加密與云服務商域名白名單的方式可以完美的逃避檢測。
攻擊者使用云服務商云函數配置Webshell 轉發器,配置成功后得到Webshell 完整的URL 連接,通過Webshell 攻擊工具配置Webshell 客戶端,客戶端配置成功后通過CDN/云函數等隱藏IP 的代理技術將Webshell 上傳到目標服務器。最后,通過Webshell 攻擊工具發起連接,在目標服務器側看到訪問地址均為云服務IP 地址。

攻擊者通過云函數上傳代理掃描服務端到云函數,得到完整的服務端URL,在本地通過Client 使用URL 配置代理服務,然后通過網絡掃描工具發起掃描探測,在目標服務器側看到掃描探測的源地址為云服務商IP,且每次掃描的IP 地址均不相同。


利用云函數隱匿C2 的原理也很簡單,其實攻擊者相當于在云服務商開啟了一個代理服務,攻擊者將C2 木馬的所有流量通過云服務商進行轉發,而云服務商通常有很多出口IP,會隨機使用這些IP,達到了隱匿自身真實IP 的目的。
零信任的概念最早由John Kindervag 提出,其核心思想是默認情況下,企業內外部的任何人、事和物均不可信,應在授權前對任何試圖接入網絡和訪問網絡資源的人、事和物進行驗證。從而確保身份可信、設備可信、應用可信和鏈路可信。
云函數攻擊技術幾乎可應用于網絡攻擊的任何環節,基于三重零信任模型的防護策略,從終端安全、鏈路安全、訪問控制安全三個關鍵維度入手,構建立體防御矩陣,以應對不斷演進的云函數攻擊所造成的網絡安全威脅。
(1)終端安全
攻擊者使用云函數攻擊是為了保持對內網權限的穩定控制,通常會采取構建隱藏賬號或植入惡意后門等手段,實現其攻擊入侵的持續和隱匿性。傳統的防病毒軟件主要基于特征庫進行攻擊比對,判定是否為惡意軟件,在最早期,病毒種類數量少,殺毒軟件防病毒是哈希惡意文件獲得MD5值,屬于一對一對比,改動文件名都會導致MD5 值的變化,隨著病毒種類增多,MD5 略顯乏力,后來安全人員發現某些病毒有同樣的特征,所以反病毒發展到了特征值匹配階段,目前各安全廠商也在維護自己的病毒特征庫,但實際上特征值更像是MD5 的升級版,無非是從一對一升級成了一對多個。但近年來病毒變種呈指數級增長,維護特征庫更新特征庫這種被動防御方式效果甚微,所以反病毒進入了啟發式監測,即總結病毒入侵主機后的一系列共性行為為惡意行為(此行為特征與HIDS 不同,HIDS 的入侵檢測更多是指真實攻擊者入侵主機后可能在系統層面做的惡意行為,比如可疑命令、異常登錄、反彈shell、上傳webshell 等,而啟發式檢測只是總結了一些惡意文件執行后的共同行為),當針對性、持續性的APT 攻擊增多,勒索病毒泛濫,被動的防御建設已經無法阻止病毒的滲入,為了彌補傳統防病毒的不足,就誕生了新的技術EDR。
通過在終端部署EDR,優化當前主機側的訪問關系,實現東西向的安全訪問控制,根據業務系統設置主機不同的角色,如:WEB、數據庫、FTP、負載均衡、消息隊列等。根據不同的角色,設置基于角色+端口(或安全組)的訪問策略設置,嚴格限制角色間的訪問關系,部署主機監控軟件,對應本機的進程變更,命令執行,權限提升等敏感操作,一旦出現越權行為的情況,即刻進行日志上報和告警通知,必要時終止違規行為。通過EDR 的微隔離能力與高級威脅檢測能力有效檢測云函數攻擊,并遏制威脅擴散。
(2)鏈路安全
傳統鏈路安全主要通過在關鍵的區域邊界部署IPS、WAF、防火墻等設備實現基于鏈路的訪問控制及威脅檢測。隨著攻防對抗技術的不斷升級,攻擊者往往會利用云函數攻擊、加密等手段實現隱藏自身IP 及通信流量加密的方式繞過防護類設備檢測。
當攻擊者利用云函數發起惡意攻擊請求時,攻擊流量將由云服務商提供的IP 池發起,源IP 會隨時發生變化。為有效應對云函數攻擊IP 的多變性,在邊界流量維度通過全流量檢測分析及XFF 解析,匹配云函數指紋白名單,并結合威脅情報黑名單,及時聯動阻斷手段,有效阻斷基于云函數攻擊所產生的惡意流量請求,實現對云函數攻擊流量的零信任防護。
(3)訪問控制安全
傳統的訪問控制安全主要通過邊界類的防火墻、業務賬戶密碼實現從網絡到業務的訪問安全控制。這種靜態授權的訪問方式在網絡攻防日益嚴峻的當下,以難以保障業務的安全。通過零信任的方式構建基于賬戶、設備、業務三維一體的訪問控制邏輯,要求必須可信的設備通過可信的賬戶訪問授權的業務。同時,在訪問過程中不斷進行訪問環境和狀態的監測,當出現異常時,即刻切斷業務訪問。
實現基于零信任的訪問控制,首先,零信任要求所有賬號必須使用強密碼策略,禁止使用弱密碼,設置密碼有效周期,賬號定期修改密碼。其次,對于閑置的賬號進行鎖定,開啟賬號行為分析,對于賬號使用非授信終端、異常地點、異常時間登錄時觸發短信增強認證。通過零信任代理終端訪問業務系統,實現業務隱身,并在業務系統邊界防火墻設置訪問策略,僅零信任可訪問業務系統,保障業務系統安全。
隨著云上業務的不斷發展,利用云函數的攻擊也越來越多樣化,雖然云函數攻擊具有多出口、無需服務器承載、難溯源等優勢,但云函數的利用也有相應的缺點,如依賴云服務商,云函數的主動權掌握在云服務商的手上,當下云函數主流還是用Node.js 寫,云服務商對Java 云函數的支持普遍還不是那么好;調試的復雜性,由于函數的執行是在云提供商的環境中進行的,本地調試和跟蹤函數會更加復雜;成本不可控,按需計費有助于降低成本,但對于某些高負載或長時間運行的工作負載,可能會導致不可控的費用增加。
此外,云函數域名具有典型的主域名特征,統一收集各提供商的云函數相關主域名信息,進行如下處置:
(1)業務不涉及相關云函數使用的,按照最小化原則,建議在統一出口網關,過濾相關域名的請求,阻斷C2 通信。
(2)在檢測類設備中,將相關域名特征,定義為流量監測設備的告警特征,可第一時間發現存在相關通信的可疑主機。
(3)具備全流量留存能力的單位,可以針對云函數主域名,在DNS 流量中進行全文檢索,定位可疑主機。
此外,利用云函數的攻擊也是有跡可循,通過分析通信的流量特征進行判斷,如果攻擊者要利用stage,則在服務器上會有一個下載動作,下載的過程中會訪問/bootstrap-2.min.js (配置文件特征),同時返回包有很大一串加密數據,在配置文件中云函數的host 是類似于service-173y3w0zxxxxxxxxxx.sh.apigw.tencentcs.com 這樣的格式,若業務部門沒有相關的業務,可以直接封禁該域名。同時,在云函數的請求頭中也會有相關的特征,如:
Request-Id:請求的id
X-Api-FuncName:函數名
X-Api-AppId:對應賬號
X-Api-ServiceId:服務id
X-Api-HttpHost:APP ID 賬號ID+云函數域名
X-Api-Status:200 返回值
X-Api-UpstreamStatus:200 返回值
抓取攻擊者連接數據包,通過流量回放方式,重復回放連接數據包,造成虛假上線,欺騙服務器,使攻擊者認為有更多的用戶上線,從而使服務器資源過載或崩潰,可以利用這種方式來癱瘓目標系統,阻止攻擊者竊取敏感信息或進行其他惡意活動。
通過容器技術來構建一個虛擬環境,內置反向釣魚木馬程序,攻擊者進入虛擬環境后,反向釣魚木馬會自動啟動并與攻擊者的設備建立連接,大量上線遠控客戶端。一旦連接建立,攻擊者的設備就會成為遠程控制客戶端,而容器中的惡意程序則會獲取攻擊者的敏感信息或執行其他惡意操作。這種方式可以誘捕攻擊者,使其暴露自己的身份和行為,從而為安全團隊追蹤和應對提供線索。
云函數隱藏攻擊者IP 和CDN 很像,但都有同一個弱點,就是訪問是需要計費的,云服務商通常會根據使用量或者請求次數來計費,而攻擊者可能會使用腳本或自動化工具進行攻擊,導致請求次數大量增加,從而增加了計費成本,基于此使用腳本將攻擊者云服務的費用耗光,導致無法進行攻擊。另外,云服務商通常會有一些安全措施來防止濫用和異常行為,例如限制請求頻率、IP 封禁、驗證碼等,可以防止攻擊者通過大量請求來消耗資源和費用。
采集攻擊者使用云服務商的云函數服務的相關證據,主要是host 名X-Api-FuncName X-Api-AppId 這些帶有明顯云函數特征的證據,說明該攻擊者正在使用云函數進行惡意攻擊,舉證請求云服務商對其暫時封禁。
在我單位以往日常網絡安全運營中,經常監測到多個有確切攻擊特征的事件,但是發現與該攻擊IP 相關的事件信息卻幾乎沒有,可以初步判斷攻擊者使用云函數進行批量掃描。進一步對系統訪問日志進行排查,發現存在大量不同IP 的訪問日志,個別訪問路徑之間又有關聯,來源IP 全是云服務器的動態IP,基本確認是云函數攻擊。根據以往業務實際,結合本文研究成果,我單位逐步構建針對云函數攻擊的三重防護體系,經過一年的網絡安全運營優化,全年成功精準識別并阻斷了30 余次云函數攻擊的惡意行為,凸顯了該防護體系的防護效果。
基于零信任防御體系是一個全方位的網絡安全策略,通過綜合利用強化身份驗證、動態訪問控制和多因素認證等手段,確保每一次訪問都得到充分的驗證和授權。這種策略可以顯著降低網絡遭受未經授權訪問和潛在威脅的風險,可有效防止攻擊者利用云函數發起的攻擊行為,進而保障系統的安全平穩運行。