前言
近年來,工控安全事件頻發(fā),工控安全不僅事關工控行業(yè),更是被上升到國家安全的高度,優(yōu)秀的工控安全解決方案被應用到了生產中,而安全解決方案最終會落地到安全產品中,越來越多工控安全產品部署在工業(yè)現場,其中作為安全產品中的主力軍防火墻在現場用得最多。對工控防火墻的功能測試已經是老生常談,但是對其安全性測試卻鮮有人提及,本篇主要介紹了工控防火墻安全測試一些關鍵思路,目的是提高工控防火墻自身的安全性。
工控防火墻
工控防火墻可以根據需要部署在關鍵節(jié)點上,如工程師站和控制器之間,或者IT網和OT網之間等,防火墻對流量進行解析,根據內置的規(guī)則對流量進行阻斷或者放行,并對用戶及時進行通知告警。工控防火墻和傳統(tǒng)的IT類防火墻除了自身需要滿足在工業(yè)現場部署的相關標準外,最主要的區(qū)別還是在支持的協(xié)議上,除了傳統(tǒng)的IT類協(xié)議,工控防火墻內置了大量工控協(xié)議的解析引擎,例如OPC、Modbus TCP、Siemens S7、IEC104、EIP等工業(yè)協(xié)議,而且有些工業(yè)協(xié)議是私有的,只能進行定制化處理,在實現這些解析引擎時,也會出現一些安全性問題。
測試方法
無論是黑盒還是白盒測試,都是發(fā)現安全問題的利器。
黑盒測試:
通過端口掃描對防火墻的管理口和業(yè)務口進行端口掃描,發(fā)現其開放服務,或者直接使用漏掃測試,發(fā)現已知漏洞。安全人員也可以憑借測試經驗,發(fā)現未知安全問題。
白盒測試:
在獲取到代碼情況下,進行代碼審計,退一步來說,即使在獲取固件的情況下,通過解包固件文件,獲取到其中的相關代碼,通過逆向工具進行逆向分析。
安全測試
暴露的服務
遠程控制服務:
有些工控防火墻為了維護方便,會留下一些諸如SSH,telnet方便運維人員進行遠程支持,一旦知道了root密碼,任何人都可以獲取到防火墻的完全控制權限,這種是非常不安全的設計,也是進行安全測試重點關注的服務。
WEB服務:
WEB服務一般是在管理口會開放,其他網口訪問不到WEB服務,針對該服務進行測試時,可以沿用傳統(tǒng)的WEB安全測試思路,對工控防火墻的WEB口進行相關測試,重點關注未授權訪問,命令注入,SQL注入等危害較大的漏洞,一旦出現這類漏洞,有可能會導致工控防火墻淪陷。
安全建議:
任何時候都不應該使用硬編碼,工控防火墻是通用性產品,一旦攻擊者知道了硬編碼,就可以利用該硬編碼去攻擊其他同系列的產品。
協(xié)議解析
防火墻對協(xié)議解析的健壯性也是值得進行測試的,由于大量工控協(xié)議解析插件可能是廠商自己實現的,沒有經過大量安全測試,那么其中就有可能存在問題。為了快速測試防火墻的健壯性,可以使用模糊測試對其進行快速測試。
測試示意圖:
fuzz發(fā)送端發(fā)送變異的工控數據,在經過防火墻時,防火墻會調用解析引擎對發(fā)送協(xié)議進行解析。
fuzz接收端接收到發(fā)送端發(fā)送的fuzz數據,返回變異的響應數據包,這時防火墻同樣會進行解析。
fuzz可以選取大量的工控協(xié)議測試數據,來保證測試的覆蓋度,一旦防火墻出現了異常,有可能導致數據包丟失或者拒絕服務。
安全建議:解析引擎一般都是c/c++實現的,在開發(fā)的過程中,要遵守安全編碼規(guī)范,對數據包的長度字段使用之前一定要對其范圍進行限定,杜絕使用危險函數。
安全功能繞過
工控防火墻使用得白名單進行訪問控制,只允許規(guī)則中功能碼,或者工控協(xié)議中的指定讀寫地址的數據包通過防火墻。如何構造測試數據包需要結合解析協(xié)議的具體實現,例如一些協(xié)議解析插件細粒度不夠,導致惡意的數據包可以進行“走私”,對控制器或者其他設置進行惡意操作,這也是安全測試過程中需要測試到的。
總結
本篇通過介紹了對工控防火墻安全測試的思路,從不同的測試途徑對工控防火墻的安全性進行測試,旨在提高工控防火墻自身的安全性,從而讓安全的解決方案能夠真正安全!也希望廠商能夠更多關注工控安全產品自身的安全性。