圖片來源: 

iThome

針對現今以研發能量為後盾的高科技產業而言,公司核心價值面臨的各式威脅,可說是內憂外患,不只是來自外部駭客的攻擊,同時還有存在於內部的威脅。

但無論是內賊還是外鬼,在許多的攻擊事件中,竊取公司的機密,往往才是攻擊者的主要目的,因此,企業對於自己的智慧財產,也試圖採取各式的管制和防範措施,尤其是針對擁有較完整存取權限的高階主管,加以防備。

不過,在高科技產業裡,研發單位(R&D)因業務需要,相關人員通常也具備這種管理層級的存取權限,企業卻可能忽略開發環境裡,各式工具被濫用所衍生的風險。在2019年臺灣資安大會上,有廠商針對研發環境可能暗藏的資料外洩管道,進行探討。

研發環境成為資料保護死角

一般來說,高科技產業可能對於重要的公司機密檔案,早就已經採取了各式的資安防護措施,避免多年來發展的心血遭到剽竊,像是多種面向的資料外洩防治(DLP)系統,阻止透過電子郵件或是上傳到公有雲,將資料外傳,還有外接裝置的控管,防範洩密者使用USB隨身碟等儲存裝置,將資料帶出公司等。

只是道高一尺、魔高一丈,如今洩密者運用了更難被察覺的方法,將資料傳送出去。

雖然,企業通常會運用AD、群組原則(GPO),以及各式網路管制等措施,加以控管員工的權限,可是大部分的開發工具,往往需要相當高的權限才能正常運作,這樣的情況下,原本在IT環境中的管理機制,難以兼顧這類軟體的應用需求,企業可能只好採取放行的做法。再加上許多開發工具還要定期連線到原廠系統,驗證授權的有效性,以及安裝更新程式,因此,這些開發用的電腦,企業可能無法建置在封閉環境。

在研發環境中,精品科技資安顧問陳伯榆將軟體開發的型態,大致區分成兩種類型:一種是開發者的電腦透過RJ-45網路線或是JTAG連接埠,與開發板連接,電腦裡存放程式碼,開發者執行整合式開發環境(IDE)應用程式,進行開發作業。

另一種則是在高科技製造業較為常見的方式,開發工程師在電腦上,利用硬體描述語言(HDL)工具、模擬器、電子設計自動化(EDA)工具、印刷電路板(PCB)設計工具等,進行開發工作。這種型態的開發方式,往往是因應特定機器的控制,進行研發。再者,這些研發用的電腦,也通常會進一步連接到資料庫,以及SVN或Git版本控制系統上,彙集所有工程師的開發成果。

但無論是上述的那一種開發型態,工程師開發所使用的端點電腦,都很有可能成為資料洩露的管道。陳伯瑜指出,企業過往有關的保護機制,都是在橋接端進行防禦,但採取這樣策略的前提,是認為在開發環境裡,人員和裝置都是善良的,因此,對於開發用的端點電腦,長期以來,企業普遍缺乏檢視其狀態的做法。

從開發工具外傳資料難防範

無論是IDE還是各式開發工具,在研發部門的開發環境中,往往需要相當高的權限,才能運作,企業若僅依靠各式資安防護措施,便可能難以察覺異狀,或是進一步管理。因此,在企業的管理方針上,就要重新釐清,開發作業上需要放行的正常行為,與應該管制與禁止的項目。例如,企業研發的成果,若是允許分享到某個部門,程式碼能夠提供加以運用、列印,還是該部門只能檢視片段內容等等。

由於前述提到的這些開發工具,都是在管理者等級的高權限下運作,因此,許多作業都可能面臨濫用的風險。以視窗作業系統最常見的Visual Studio為例,陳伯榆舉出工程師的研發環境裡潛藏的危機。從開發的過程來看,包含透過Visual Studio呼叫系統的DLL、網路通訊API、命令提示字元與PowerShell,以及連接外部硬體裝置等,而據他所知,為了避免在開發工具上留下記錄,有些研發工程師還會用螢幕截圖工具,截取企業開發的成果。

陳伯榆舉出在工程師的研發電腦上,可能會面臨的風險。從開發的過程來看,包含會呼叫系統的DLL、網路通訊、命令提示字元與PowerShell,以及連接外部硬體裝置等,由於必須與原廠伺服器驗證軟體授權,開發環境也得與網際網路連接。再者,有些研發工程師還會用各式的螢幕截圖工具,截取企業開發的成果。

上述的作業型態中,又以在開發電腦上,呼叫命令提示字元或是PowerShell的情況,進而能夠執行各種的工作,影響的層面最為廣泛。基本上,執行的方式大致可分成3種,分別是由系統呼叫、由IDE開發工具呼叫,以及從其他外部應用程式呼叫等。

在開發電腦上呼叫命令提示字元或是PowerShell的情況,大致可分成3種,分別是由系統呼叫、由IDE開發工具呼叫,以及從其他外部應用程式呼叫等。

而在限制的部分,像是程式碼的複製與貼上,如果完全不設限,就可能成為資料外洩的管道。但是,研發工程師在除錯的過程中,很可能擷取部分開發的內容,並且上網查詢資料,確認錯誤的徵結點。企業若是一味限制研發單位只能使用內部網路,顯然會影響相關的開發流程,因此,要採取什麼策略,便成為企業需要面臨的難題。

再者,研發過程中,工程師可能會以處理程序之間通訊(IPC)的方式,呼叫各種應用程式,通常這樣的情況下,被呼叫的應用程式也同樣繼承了相同的執行權限,導致能夠略過某些IT的管制措施,傳送資料到外部,企業也需要加以防範可能衍生的問題。

外部裝置也可能是洩露機密的管道,如果僅透過外接設備的管制、防堵,研發電腦上各式元件的維護機制,也可能受到影響。但要是不加以管理,有心人士要將特定程式碼輸出並不難,這些外接設備顯然是一大漏洞。

在執行系統展示的過程中,陳伯榆拿出了一款企業裡常見的Teensy開發板,並嘗試將執行Visual Studio電腦上的研發資料,傳送到這個開發板。

陳伯榆以精品自家的解決方案中,舉出可透過管控系統做到的措施,像是禁止開發電腦上的列印、螢幕截圖,或是執行IPC呼叫等行為,而對於文字的複製和貼上,則是能採取較為彈性的做法,由管理者限縮一次能剪貼的長度,並在管控系統中留下存取記錄。

能透過專屬系統做到的規範,主要包含了管制開發人員部分可能會洩密的功能(列印、螢幕截取、IPC呼叫、文字複製等),以及共用對象的規範。

內賊進階機密竊取手法已與駭客攻擊模式近似

直接從開發的流程管制著手,可以防範研發人員無意間將程式碼洩露,或是各式較為容易發現的竊取手法。不過,現實情況中,有心人士要是想要暗中一點一滴、無聲無息的盜走研發成果,也出現了許多近乎於駭客所使用的方式。例如,為了規避公司的稽核制度,工程師很可能會採取某些措施,包含了程式碼迴避與混淆手法,並且利用企業對於網路環境規範的不足,採取DNS通道傳送資料到外部。

雖然程式碼混淆在開發的流程中相當常見,目的是防止程式碼遭到破解。但陳伯榆表示,他曾經看過有些企業的工程師,竟一口氣用了6道混淆程序處理程式碼。在這樣的情況下,他認為企業現有的資安機制,很難察覺異狀。因此,陳伯榆指出,光是靠管制措施,不能完全防範這種隱而未現的外洩手法,而是要搭配端點電腦的事件記錄追蹤才行。

其實,企業對於這類電腦的狀態監控,從中發現可能的異常跡象,也是相當重要的措施,這也與當今端點防禦措施裡,透過大量事件記錄找出攻擊事件徵兆,再進一步因應的概念,算是不謀而合。

以PowerShell執行上述回避或是混淆手法,陳伯榆舉出有關指令,包含了運用hidden隱藏外接裝置狀態,還有3種下載檔案的做法,分別是Invoke-WebRequest、System.Net.WebClient、Start-BitsTransfer;而在程式碼的混淆上,需要執行的腳本則是經過了解密才能運作,至於傳輸的管道,採用了Dnscat2這款存取DNS通道的軟體。作案完成之後,再清除端點電腦上所有的事件記錄(Clear-EventLog-LogName),以防相關記錄成為證據,從上述的流程來看,陳伯榆說,無論是駭客的攻擊,還是研發工程師監守自盜,竊取企業機密的手法上,兩者已經算是相當接近。

無論是工程師有心竊取機密,還是駭客操控研發用的電腦,都可能利用圖中所列的PowerShell指令外洩,藉此規避企業各式機制,並且在完成之後,清除相關事件記錄。若是沒有對應的監控機制,便難以發現或是追查這種異常事件。

總而言之,企業想要防治這些危機,陳伯榆認為,不只要從內部的網路架構加以管制,也要試圖透過研發單位電腦的事件記錄上,發現潛伏其中的竊密行為。


Advertisement

更多 iThome相關內容