OpenPLC:符合IEC 61131-3标准的用于网络安全研究的开源工业控制器
OpenPLC: An IEC 61,131–3 compliant open source industrial controller for cyber security research【翻譯】
摘要
在過去的十年中,多次網絡攻擊成功地破壞了SCADA系統和plc的正常運行。為了對付這些攻擊,研究人員已經努力尋找能夠保護網絡和可編程邏輯控制器的防御機制。然而,由于供應商不提供有關其設備硬件和固件的可用信息,因此對可編程邏輯控制器進行網絡安全研究變得具有挑戰性。本文提出了一種符合IEC 61131-3國際標準的開源PLC的開發方案。介紹了系統的硬件結構、開發環境、支持的SCADA協議和一個附加的HMI編輯器包。此外,本文還提出了一種驗證PLC邏輯執行、性能和SCADA連接的方法,并將OpenPLC在Modbus注入攻擊下的行為與其他四種流行的商用PLC進行了比較,以支持OpenPLC是PLC網絡安全研究的有效平臺的說法。
一.介紹
封閉的工業環境隱藏著與專利、版權和商標背后的技術發展相關的關鍵信息。如何保護發明人的知識產權不受濫用是一個值得商榷的問題,但傳統的知識產權保護模式會阻礙科學研究的信息流動。自1968年第一個可編程邏輯控制器(PLC)發明以來,供應商一直在開發針對工業環境的專用硬件和軟件解決方案。近年來,隨著通信網絡和互聯網的發展,這些系統已經變得容易受到各種各樣的網絡攻擊。
鑒于可編程邏輯控制器也用于關鍵的基礎設施,如電能系統、核能系統、水和污水處理廠、天然氣/石油能源系統和運輸系統,對這些系統的攻擊會給國家帶來災難性的后果。Alcaraz和Lopez(2012)提出的工作確定了關鍵控制系統的5項要求,如果實施,可能會對控制系統環境的服務、資源、操作控制和敏感信息造成影響。
為了對抗這些攻擊,研究人員已經把他們的力量放在尋找防御機制,可以保護監督控制和數據采集(SCADA)網絡和plc。關于SCADA系統的漏洞和威脅的文獻非常豐富。Alcaraz和Zeadally(2015, 2013)探討了SCADA系統的漏洞和威脅,并提出了4個方面的保護機制:治理(安全策略和標準)、健壯的網絡設計、自修復、建模和仿真。Rautmare(2011)識別了SCADA環境中的一些威脅向量,并使用良好的網絡和操作安全實踐來處理它們。
然而,由于供應商不提供有關其可編程邏輯控制器設備的硬件和固件的信息,因此對可編程邏輯控制器進行網絡安全研究變得非常困難,通常必須依賴供應商提供任何安全更新。
開源技術可以改變這種模式。術語“開放源碼”是指具有可公開訪問的設計的技術,該設計可以根據需要進行修改而不受任何限制。通過將開源工具引入到研究中,結果可以被大量的人進行實驗和驗證。本文提出的OpenPLC平臺正是針對這一問題而設計的。因此,這項工作的主要貢獻是開發一個開源PLC平臺,該平臺包括一個程序開發環境,支持流行的SCADA協議,如Modbus/TCP(Modbus-IDA,2004)和DNP3(Curtis,2000),還包括一個名為ScadaBR的開源人機界面(HMI)編輯器。OpenPLC項目是根據IEC 61131-3標準(國際電工委員會,1993)創建的,該標準定義了plc的基本軟件架構和編程語言。這意味著OpenPLC可以用五種標準語言中的任何一種進行編程:梯形圖(LD)、功能框圖(FBD)、結構化文本(ST)、指令列表(IL)和順序功能圖(SFC)。
此外,為了應對對SCADA系統的網絡威脅,了解整個系統的行為非常重要。因此,許多研究人員依賴于建立能夠精確模擬監控與數據采集系統的試驗臺。Holm等人的一項重要調查。(2015)分析了30個不同的監控與數據采集試驗臺,確定了創建試驗臺的最主要目標是使用它們進行脆弱性分析,然后是對防御機制的教育和測試。為SCADA創建一個高保真度的測試臺通常意味著將PLC作為硬件在環,一旦在沒有PLC內部行為信息的虛擬環境中模擬PLC真的很有挑戰性。雖然PLC作為硬件在環為試驗臺提供了高保真度,但它降低了可移植性并增加了成本,開源PLC使研究人員無需訪問專有代碼就可以設計、測試和驗證工業控制器的安全增強。經過驗證后,這些增強功能可以由其供應商移植到封閉的商業系統中。此外,開源PLC使得SCADA虛擬化成為可能,因為PLC源代碼也可以移植到虛擬環境中運行。通過對PLC進行虛擬化,可以創建虛擬SCADA試驗臺,而無需在回路中使用硬件。開源平臺也為教育和SCADA培訓提供了低成本的替代方案。
本文將在以下幾個部分展開論述:相關工作、PLC體系結構、OpenPLC體系結構、PLC評估和基準、網絡安全應用。
2.相關工作
Linux是開源的最大貢獻者之一(Nagar,2017)。在科學界,它使學生、教育工作者和研究人員能夠在很大程度上利用計算機。Linux上的大多數工具都是由教育工作者和學生開發的,這并不奇怪。Linux的重要性可以從它現在被用來運行大部分的互聯網,包括硬件和軟件來判斷。
開源產品可以變得比商業產品更加可靠和安全,因為測試和糾正錯誤的志愿者數量之多。從這個意義上說,谷歌啟動了一個項目,自動分析開源代碼,以發現并糾正錯誤。該項目被稱為OSS Fuzz(OSS Fuzz 2017)。協議變異測試,又稱模糊測試,是一種識別軟件中各種編程錯誤的著名技術。其中許多可檢測的錯誤(如緩沖區溢出漏洞)都可能具有嚴重的安全隱患。因此,OSS Fuzz的目標是使用現代的fuzzing技術來發現和報告公共開源軟件上的漏洞,使它們更加安全和穩定。OSS Fuzz不僅能發現與內存安全相關的錯誤,還能發現正確性或邏輯錯誤。
根據谷歌提供的一份報告(OSS Fuzz:5個月后,獎勵項目2017),經過5個月每天處理約10萬億個測試輸入,OSS Fuzz在47個項目上發現了1000多個bug,其中發現的1000個bug中有264個是潛在的安全漏洞。
因此,鑒于開源軟件對于科學研究和開發的重要性,開發一個工業控制器是至關重要的。有人試圖創建一個開源的PLC,其中最突出的一個由Souza提出,被稱為MatPLC(de Sousa,2002)。MatPLC的行為類似于POSIX兼容操作系統上的軟PLC,由幾個模塊組成,每個模塊在不同的線程上執行。
雖然MatPLC奠定了一個開源PLC的基礎,但它是不完整的。該項目網站上提供的最新穩定版本可追溯到2006年5月,根據該網站,目前仍處于早期階段(de Souza,2017)。對于一些仍然缺少的東西,該項目缺乏與編程IDE的接口,缺乏一個硬件平臺來運行它和內置的物理I/O以及對梯形邏輯的支持。
MatPLC提供的工具之一是matec編譯器(de Sousa and Carvalho,2003),它是兩種IEC 61131–3文本語言的編譯器。此編譯器分四個階段執行:詞法分析器、語法分析器、語義分析器和代碼生成器。這種體系結構允許輕松地為所需的任何輸出語言編寫新的代碼生成器,而無需重寫所有的詞匯、語法和語義解析器。OpenPLC使用MatIEC編譯器從IEC 61131-3結構化文本代碼生成C++代碼。
(Tisserant等人。(2007)為IEC 61131-3框架開發了一個集成開發環境(IDE),稱為PLCOpen編輯器。IDE由一個圖形用戶界面組成,該界面允許用IEC 61131-3中定義的任何編程語言開發程序。另外,IDE還有一個后端編譯器,可以生成IEC 61131-3用戶程序中的結構化文本代碼。PLCOpen編輯器的創建主要是為了讓學生在自己的個人計算機上使用IEC 61131-3編程環境并使用該語言進行實踐,而無需支付現有供應商昂貴的許可協議。盡管目的是滿足學生的需求,但作者希望并打算將PLCOpen編輯器項目也能在工業環境中用于實際的控制項目。OpenPLC通過在一個完整的PLC包上集成PLCOpen編輯器和MatIEC編譯器來實現這一點,并支持開源硬件和流行的SCADA協議。
對SCADA系統的研究依賴于能夠模擬真實SCADA環境的測試床的創建。考慮到PLC設備是基于專門的、有時是專有的硬件和軟件,Holm等人分析的30個不同的SCADA試驗臺中沒有一個包含虛擬的或仿真的PLC。因此,關于SCADA安全性研究的大部分工作僅依賴于帶有模擬plc的測試床或帶有硬件在環仿真的測試床。
有各種各樣的PLC仿真工具可用,從簡單的SCADA協議仿真器到完整的PLC系統仿真器。因此,為了便于對可用選項的分析,將PLC仿真工具分為三類:
(1) PLC系統仿真器:PLC系統仿真器是一種軟件,通常由PLC制造商提供,它可以模擬整個PLC系統,包括其內部行為、編程和網絡通信。PLC系統模擬器的例子包括S7-PLCSIM(西門子2017)和RSLogix Emulator(羅克韋爾2017)。
(2) PLC核心仿真器:PLC核心仿真器通常使用腳本語言來模擬PLC控制邏輯程序和網絡行為。可編程邏輯控制器核心仿真器的例子包括通用開放式研究仿真器(Core)(美國海軍研究實驗室,2017年)和AMIC(Genge等人,2012年)。
(3) PLC網絡仿真器:PLC網絡仿真器只關注模擬SCADA網絡協議的應用層。因此,PLC網絡仿真器可以作為一個常規的PLC來響應網絡查詢,但是沒有內置的控制邏輯。可編程邏輯控制器網絡模擬器的例子包括來自Witte軟件的Modbus Rsim(Braam,2017)和Modbus Slave(Modbus T ools,2017)。
表1總結了上述方法的特點,并與OpenPLC進行了對比。
西門子S7-1200(Siemens,2017)被用作硬件在環的例子,因為它是工業中最受歡迎的可編程邏輯控制器之一。RSLogix仿真是一個例子,一個PLC系統模擬器從艾倫布拉德利。AM-ICI是一個在關鍵基礎設施上進行多域安全實驗的平臺,它被用作一個可編程邏輯控制器核心模擬器的例子。最后,以開放源碼Modbus Rsim作為PLC網絡仿真器的實例。
使用硬件在環的試驗臺對實際SCADA環境中使用的設備具有高保真度,但成本要高得多。用商用可編程邏輯控制器建造大型試驗臺在金錢上是不可行的。
另一方面,PLC系統模擬器可以提供與硬件在環方法相同的軟件環境,但沒有真正的硬件。考慮到一臺計算機可以運行一個PLC模擬器的多個實例,但不能提供任何硬件級的研究,對于大型SCADA試驗臺來說,這可能更具成本效益。
與PLC系統模擬器相比,PLC核心模擬器是一種更經濟有效的將PLC集成到SCADA試驗臺的解決方案。然而,PLC核心模擬器通常過于具體,因為它們是為模擬單個PLC程序而構建的,并且由于它們不支持傳統的PLC編程環境,因此很難重新編程。
PLC網絡仿真器通常不那么復雜,因為它們只專注于在應用層上模擬監控與數據采集協議,除了網絡通信之外沒有PLC功能。因此,它們更適合于SCADA設備網絡通信中更為關注的試驗臺。
OpenPLC是目前唯一允許在SCADA測試臺上對現場設備進行虛擬化或仿真的PLC。與PLC核心仿真器和PLC網絡仿真器不同,OpenPLC提供了一個完整的IEC 61131-3兼容系統,可以隨意重新編程,同時仍然為常用的SCADA協議提供支持。此外,OpenPLC擁有完整的可用源代碼,這一事實使研究人員能夠探索OpenPLC的內部操作,并對硬件級別進行更改。
三.可編程邏輯控制器體系結構
可編程邏輯控制器(PLC)術語由IEC 61131-1定義為“設計用于工業環境的數字操作電子系統”。該標準還規定,可編程邏輯控制器應具有可編程存儲器,用于面向用戶程序的內部存儲。這些程序必須能夠實現特定的功能,如邏輯、排序、定時、計數和算術,以便通過數字或模擬輸入和輸出控制各種類型的機器或過程。此外,PLC必須具有編寫PLC程序的開發環境,并支持用于監控和數據采集的工業通信協議。
3.1 PLC硬件架構
PLC的主要部件是處理器(或CPU)模塊、電源和輸入輸出模塊。緊湊型可編程邏輯控制器通常將所有這些組件放在一個機箱中,而較大的可編程邏輯控制器則具有模塊化結構,并且是可擴展的。由于PLC是一種基于微處理器的設備,它的內部結構類似于許多嵌入式計算機和控制器。可編程邏輯控制器和其他嵌入式設備的一個主要區別是,可編程邏輯控制器通常經過加固以適應惡劣的工業環境。此外,可編程邏輯控制器具有輸入和輸出模塊的標準化電壓和電流額定值,使用常用的SCADA協議進行通信,并提供確定的實時響應。
CPU模塊是PLC的核心部分,通常有一個微處理器來處理所有的程序任務,一個可編程存儲器來存儲用戶程序,一個臨時存儲器來存儲程序執行期間的數據。此外,CPU具有與外部和內部I/O模塊通信的總線、與編程設備的接口以及與用于監視和控制的其他通信網絡的接口。
由于可編程邏輯控制器是可編程的,它們可以執行用戶定義的自定義邏輯程序。該用戶程序由可編程邏輯控制器在無限循環中執行,循環的每次迭代稱為掃描循環。在每個掃描周期,微處理器必須執行三個主要任務:讀取物理輸入、執行程序邏輯和寫入物理輸出。
為了讀取物理輸入,實際輸入的狀態被復制到通常稱為輸入圖像表的CPU內存的一部分(Erickson,2016)。當程序邏輯被執行時,微處理器檢查輸入信息表以確定輸出的狀態。對輸出的這些更改隨后被寫入CPU內存的另一部分,稱為輸出圖像表。最后,在掃描周期結束時,將輸出圖像表的內容復制到物理輸出。這種執行順序意味著,除非存在與輸入相關聯的中斷程序,否則可編程邏輯控制器在掃描周期內無法感知其輸入的變化。
3.2 PLC程序開發環境
梯形邏輯最初是一種記錄繼電器機架設計和構造的書面方法,但后來發展成為可編程邏輯控制器的編程語言。它是在繼電器邏輯硬件電路圖的基礎上,用圖形化的方式表示程序的,這意味著編寫程序就相當于畫一個開關電路。這種方法有助于軟化從中繼機架到基于PLC的系統的過渡。
盡管梯形邏輯已經成為所有可編程邏輯控制器的事實編程語言,但在實現這一概念時,從一家供應商到另一家供應商之間存在一些分歧。這導致不同品牌和型號的軟件不兼容。這些分歧最終導致了可編程邏輯控制器國際標準IEC 61131的誕生。本標準的第三部分涉及基本的軟件體系結構,定義了5種編程語言:梯形圖(LD)、功能框圖(FBD)、結構化文本(ST)、指令表(IL)和順序功能圖(SFC)。大多數可編程邏輯控制器供應商至少支持一種IEC 61131-3語言。
3.3 PLC通信協議
第一代可編程邏輯控制器開發不久,就需要與遠程輸入/輸出系統通信,然后再與其他可編程邏輯控制器通信。這種通信使可編程邏輯控制器能夠控制遠程設備并將數據報告回監控與數據采集系統。
Modicon于1979年推出了第一個PLC到PLC的協議,稱之為Modbus。它很快成為了一個事實上的行業標準,并且由于其標準是公開的,而且實施不需要許可費,所以仍然受到SCADA的歡迎。此外,Modbus可以在電話、以太網、無線電和衛星等多種通信媒介上工作,這使得它非常適合大型SCADA系統。
另一個開放和流行的SCADA協議是分布式網絡協議(DNP3)。它的主要用途是電力和自來水公司等公用事業。DNP3協議具有顯著的特點,如提高了帶寬效率、時間同步和面向點的對象,使得它比Modbus更加健壯、高效和可互操作,但代價是更高的復雜性。
IEC 60870-5-104,或者僅僅IEC 104(2006年遠程控制設備和系統),也被廣泛應用于水、氣和電的控制通信,在歐洲公用事業和相關行業中尤為常見。經設計證明,IEC 104的安全性存在問題(Maynard等人,2014),Modbus、DNP3和許多其他SCADA協議的安全性也在同一時間開發。這些協議的關鍵漏洞是缺乏身份驗證、完整性和保密機制。盡管有解決這些問題的解決方案,但由于運營問題、遺留問題和成本的原因,它們在現實世界中很少使用。
盡管Modbus、DNP3和IEC 104是一些最常見的SCADA協議,但一些供應商已經創建了自己的自定義協議,通常是專有協議。其他流行的工業協議包括PROFIBUS(DP、PA和PROFInet)(PROFIBUS 2015)、WorldFIP(CENELEC 1996)、ControlNet(ControlNet International 1998)、EtherNet/IP(ControlNet International 2001)和A-B DF1(Allen Bradley 1996)。
3.4 PLC人機界面(HMI)
在過去,控制系統的典型用戶界面由一個帶有按鈕、開關、燈和儀表的物理面板組成,所有這些都硬連線到面板中的主控制器。隨著低成本個人電腦的出現,更大的硬接線面板被電腦程序上的圖形屏幕所取代。
PLC軟件包的一個重要特性是用于開發人機界面屏幕的軟件。該軟件是SCADA系統的核心,采集過程中的數據顯示在屏幕上,并向現場連接的設備發送控制命令。在較大的SCADA系統中,監控軟件可以與運行在操作員工作站和客戶機上的HMI軟件分開。在這種情況下,數據采集系統可以運行在多個冗余服務器上,填充一個大型數據庫。
HMI軟件必須使用可編程邏輯控制器支持的網絡協議之一才能與其通信。由于這個原因,PLC供應商通常提供他們自己的人機界面軟件,與PLC使用的協議兼容。PLC供應商提供的一些HMI軟件示例有:SIMATIC WinCC(Siemens,2017)、Rockwell RSView(Rockwell Automation,2011)、Schneider IGSS(Schneider Electric,2012)、Omron CX Designer(Omron,2018)和Melsoft GT SoftGOT(Mitsubishi Electric,2018)。盡管所述軟件已優化為使用供應商可編程邏輯控制器協議運行,但所有所述示例也與其他供應商的協議兼容,并且所有這些示例都支持Modbus協議的至少一種變體。
4 OPENPLC體系結構
open PLC是一個開源的PLC平臺,目前可以運行在各種流行的設備上,如Raspberry Pi、Arduino和ESP8266。盡管這些設備可以運行OpenPLC,但它們不能提供真正的PLC所需的相同級別的電氣保護。Raspberry Pi平臺的一些變體,如UniPi和PiXtend,經過加固,可以與工業級I/O兼容,也可以運行OpenPLC,但它們的硬件架構并不理想,影響了OpenPLC的實時性能。UniPi使用諸如MCP23008和MCP3422的端口擴展器來操作離散和模擬信號。這些集成電路使用I2C總線進行通信,比直接存儲器存取慢約50倍。PiXtend使用AT-mega32A微控制器處理輸入和輸出信號,串行外圍接口(SPI)總線連接mi-crocontroller和Raspberry Pi。微控制器運行一個自定義固件,當配置為最快模式時,該固件提供高達10赫茲的I/O更新。對于需要小于100 ms掃描時間的PLC應用程序來說,這太慢了。
因此,為了公平比較OpenPLC平臺與其他商用plc的性能,提出了一種新的OpenPLC項目硬件板。OpenPLC Neo被設計成具有最佳性能的OpenPLC代碼,同時仍然是低成本的。
考慮到項目的硬件和軟件的復雜性,在這項工作中描述整個OpenPLC體系結構是不可行的。因此,下一節將對OpenPLC的硬件和軟件體系結構進行廣泛的概述。關于這個項目的更多信息,特別是它如何安裝在開源平臺上,比如Ar-duino和Raspberry Pi,可以在項目的網站上找到(Alves,2017)。最新版本的源代碼可以在OpenPLC GitHub中找到(Alves,2017)。有關OpenPLC Neo硬件的信息,包括原理圖和案例設計,位于OpenPLC Neo GitHub(Alves,2017)。
4.1 OpenPLC新硬件
OpenPLC Neo在機箱上提供11個隔離的直流離散輸入、3個0-10v范圍的模擬輸入、8個隔離的離散輸出(其中4個是基于晶體管的,另外4個是基于繼電器的),以及3個基于PWM的模擬輸出。此外,OpenPLC Neo還具有一個RS-485擴展總線連接器,允許CPU與外部I/O模塊通信。
該CPU基于Allwinner H3,一款四核Cortex-A7 ARM處理器,最高運行頻率可達1.2GHz。處理器模塊有256 MB的DDR3 RAM和10/100位以太網端口,用于網絡連接。可編程邏輯控制器通常被視為具有非常有限計算能力的傳統設備。與大多數可編程邏輯控制器中的處理器相比,OpenPLC Neo架構提供了更好的性能。一個更強大的多核體系結構支持額外的安全增強,如機器學習算法和入侵檢測系統,內置在設備中,與PLC應用程序一起運行。
CPU模塊還有一個協處理器,負責I/O操作。協處理器是一個運行在16兆赫的AVR ATMega644P。兩個處理器通過500 Kbps的UART鏈路相互通信。由于協處理器有兩個UART端口,它使用第二個端口作為與RS-485擴展總線的接口。因此,來自主處理器的消息通過協處理器到達連接到擴展總線的外部I/O模塊。
OpenPLC Neo運行Armbian Linux,這是一個針對嵌入式設備的改良的Debian發行版。OpenPLC軟件運行在這個操作系統之上。圖1顯示了OpenPLC的內部結構及其當前模塊:web服務器、MatIEC編譯器、網絡層、I/O圖像表、硬件層和實時庫。
OpenPLC web服務器是一個允許上傳和編譯PLC程序的實用程序。它一直在8080端口上運行,可以在大多數現代web瀏覽器中打開。可編程邏輯控制器程序作為單個文件上傳,其中包含由OpenPLC提供的IEC 61131-3圖形編輯器生成的代碼。一旦文件被接收,它就被發送到MatIEC編譯器。
MatIEC編譯器將上傳的PLC程序編譯成等效的C程序。但是,這個C程序是不完整的,因為它只包含用戶創建的邏輯。如圖1所示,附加功能必須添加到系統中才能使用。OpenPLC提供額外的C文件,添加對網絡連接、內部映像表、硬件接口(用于處理物理I/O)的支持,以及一個為OpenPLC添加實時行為的實時庫。當與用戶創建的邏輯相結合時,這些額外的C文件為PLC應用程序提供了整個環境。
網絡層負責通過SCADA協議進行網絡通信。目前,OpenPLC支持Modbus/TCP和DNP3。將來可以通過在網絡層插入相應的源代碼來添加更多的協議。為了響應來自SCADA協議的網絡請求,該層必須能夠訪問輸入和輸出圖像表。
輸入和輸出圖像表是OpenPLC應用程序中定義的存儲區域,用于存儲所有輸入和輸出的當前狀態。當執行用戶程序時,它檢查輸入圖像表,以便邏輯可以確定所有物理輸出的下一個狀態。一旦邏輯執行完成,所有輸出的狀態都將寫入輸出映像表。
硬件層模塊必須讀取物理輸入,將其狀態寫入到輸入圖像表中,并根據輸出圖像表設置物理輸出。要執行這些操作,硬件層必須包含負責處理硬件I/O的設備驅動程序。這種模塊化架構使OpenPLC很容易與其他設備兼容。事實上,它已經有了硬件層驅動程序來處理許多不同的平臺,如Raspberry Pi、UniPi、Arduino、ESP8266等。因此,為OpenPLC Neo編寫了一個新的硬件層驅動程序,使OpenPLC能夠處理板I/O。
為OpenPLC Neo板編寫的設備驅動程序通過擴展總線與協處理器和外部設備進行通信。通過讀取從協處理器接收到的所有輸入點并將其寫入輸入圖像表來處理輸入。輸出從輸出圖像表讀取并封裝到發送到協處理器的內部總線消息中。
實時庫為OpenPLC進程提供了更好的實時響應。Linux以不具有良好的實時性而聞名,它極大地影響了依賴確定性響應的應用程序。Linux的實時性受到調度策略的影響。當一個正在運行的進程被調度出去時,很難準確地知道它什么時候會被調度回來。這種缺乏確定性的情況會影響需要實時響應的進程。OpenPLC的實時庫通過在分離的內核上隔離OpenPLC進程、將OpenPLC主線程的調度策略更改為SCHED_FIFO并將其優先級設置為最大值來改進多核架構上的Linux響應。根據具有最大優先級的SCHED_FIFO策略調度的進程將始終立即搶占核心中當前運行的任何進程。此外,此策略下的進程沒有時間切片,這意味著調度線程無限期運行,直到它產生處理器或被I/O請求阻止為止。由于沒有其他進程在給定的核心上與OpenPLC競爭,因此它永遠不會被調度出來。由于OpenPLC進程是不斷運行的,它可以提供一個改進的確定性響應,特別是在系統處于重負載時。
4.2 OpenPLC程序開發環境
PLCOpen編輯器是用于為OpenPLC創建程序的開發環境。PLCOpen編輯器由一個圖形界面組成,該界面允許創建帶有多個IEC 61131-3程序組織單元(POU)的PLC項目。每個POU可以用五種IEC 61131–3語言中的任何一種編程。POU與PLC配置和資源一起列在左窗格的樹狀圖中。通過雙擊POU,相應的語言編輯器將打開,其中包含程序的內容。
圖形編輯器與PLCOpen規范緊密相連(PLCOpen技術委員會2005年6月)。此規范定義了描述五種IEC 61131-3語言的XML語法。根據此語法,在此環境中編寫的所有程序都保存到XML文件中。因此,可以與其他符合PLCOpen XML標準的IEC 61131-3編輯器交換項目。
PLCOpen編輯器有一個模塊負責將圖形語言(LD、FBD和SFC)編譯成結構化文本(ST)。因此,在將程序上載到OpenPLC之前,當前PLC程序的所有pou都被編譯成一個ST程序,不管它們最初是用哪種語言編寫的。
4.3 OpenPLC通信協議
OpenPLC在TCP/IP之上支持Modbus和DNP3-SCADA協議。來自任一協議的讀寫請求都可以直接訪問所有物理I/O點。默認情況下,Modbus在502端口可用,DNP3在20000端口可用。但是,OpenPLC有可選的命令行參數,這些參數只允許在特定端口上運行Modbus,或者只允許在特定端口上運行DNP3,或者在非標準端口上同時運行兩者。
Modbus實現是基于Modbus應用協議規范從頭開始構建的。DNP3應用的實現基于opendnp3庫(opendnp3 2017)。Opendnp3是用C++11編寫的DNP3協議棧的可移植、可伸縮和經過嚴格測試的實現。該庫是為具有許多并發TCP會話的高性能應用程序設計的,盡管它也可以很容易地嵌入到較小的平臺上。
4.4 OpenPLC人機界面(HMI)
由于OpenPLC支持Modbus/TCP和DNP3協議,因此它與當前可用的大多數SCADA軟件兼容。然而,OpenPLC還包括一個開源的SCADA軟件ScadaBR。ScadaBR是一個基于Java的應用程序,運行在Windows、Linux或其他可以運行應用服務器(如Apache T omcat)的操作系統上。ScadaBR最初由MCA Sistemas(ScadaBR 2017)開發,并使用開放源代碼許可證分發。一旦ScadaBR被部署,它將作為后臺服務運行。
可以通過web瀏覽器訪問用戶接口,指向正確的地址和端口(默認端口為8085)。主界面易于使用,并提供變量可視化、圖表、統計、協議配置、警報、人機界面屏幕創建和變量監控。
目前,ScadaBR支持多種SCADA通信協議,包括Modbus和DNP3。
ScadaBR提供數據源和數據點,以組織來自遠程設備的數據。數據源表示通過特定協議進行通信的單個遠程設備。一個數據源可以有多個數據點。每個數據點與來自遠程設備的單個項相關聯,例如模擬輸入、離散輸出或存儲器位置。HMI屏幕是通過在屏幕上拖放元素并將它們與數據點關聯來構建的。圖2示出了使用ScadaBR構建的典型HMI。此屏幕的數據點通過Modbus從OpenPLC檢索。
5. 可編程邏輯控制器評估和基準
在一個開源的PLC平臺上進行研究,只有當這個平臺可以被驗證為可以像其他PLC一樣工作時,才是有價值的。因此,為了支持OpenPLC是PLC網絡安全研究的有效平臺的說法,本節通過分析PLC系統的三個基本概念:掃描時間、梯形邏輯執行和SCADA連接,提出了驗證PLC的方法。此外,還執行了Modbus注入攻擊,以評估網絡攻擊期間每個PLC的響應。
創建了四個測試來評估上述每個概念:掃描時間測試、PLC梯形圖邏輯執行測試、SCADA連接測試和Modbus注入攻擊測試。
這些測試在OpenPlcNeo和其他四個流行的(Boyes和O’Brien,2009)(ARC咨詢集團2001)商用PLC上進行:施耐德M221、西門子S7-1214C、歐姆龍CP1L-L20DR-D和艾倫布拉德利(A-B)MicroLogix 1400。
表2和表3列出了被測設備的特性。
5.1 掃描時間測試
PLC是實時系統的一個例子,因為輸出結果必須在有限的時間內響應輸入條件而產生,否則,將發生意外操作。PLC的實時行為通常與其掃描時間有關,掃描時間是PLC讀取所有輸入、執行邏輯程序和寫回所有輸出所需的時間。
考慮到邏輯程序的執行通常可以簡化為條件語句的求值和一些算術運算,因此大部分掃描時間用于讀取輸入和寫入輸出。因此,如圖3所示,所提出的掃描時間測試由具有一個輸入和一個輸出的單階梯邏輯線組成。
這個程序根據輸入的否定狀態切換輸出。因此,如果輸入為false,則輸出為true。否則,如果輸入為true,則輸出為false。通過運行該程序并將PLC上的輸出和輸入物理連接在一起,可以創建振蕩器。這個振蕩器輸出一個方波,頻率是PLC在軟件中可以產生的最高頻率。由于每次掃描時輸出都會切換,所以掃描時間(以秒為單位)由公式(1)定義,其中f是以赫茲為單位生成的方波的頻率。
圖3中的梯形邏輯程序被上傳到使用供應商編程軟件測試的每個可編程邏輯控制器中,將掃描時間設置為最小的可用選項。此外,根據測試定義,程序中的輸入和輸出引用連接在一起。用單片機測量輸出切換時間,每臺PLC采集4000個采樣。采樣數受微控制器上可用內存量的限制。結果如下表4所示
掃描時間表示系統的響應時間。在PLC上,硬件性能、I/o數量、操作系統和庫的復雜性以及梯形圖邏輯解釋器/編譯器的實現將定義掃描時間。掃描時間的標準差表示系統保持實時響應的能力,換句話說,它定義了從可能的最小掃描時間可以預期的平均延遲。在分析的可編程邏輯控制器中,OpenPLC Neo獲得了與其他可編程邏輯控制器相似的標準偏差,同時也具有最小的掃描時間。OpenPLC Neo的性能更好,因為它使用的是具有更高時鐘頻率的現代處理器。選擇這個處理器是為了支持與未來網絡安全增強相關的研究。
5.2 PLC梯形圖邏輯執行測試
本試驗的目的是根據IEC 61131-3標準驗證梯形圖的正確執行。IEC 61131-3定義了所有PLC編程語言通用的以下標準功能塊:雙穩態元件、邊緣檢測、定時器、計數器和比較器。該測試集中于評估使用IEC 61131-3中定義的所有標準功能塊以及算術運算的測試程序的執行情況。測試程序通過供應商的編程軟件上傳到每個可編程邏輯控制器。提供一個隨機輸入向量,并對所有輸出向量進行比較。
測試程序有4個離散輸入和4個離散輸出。每個輸出負責評估一組特定的塊。因此,測試程序分為四個部分,每個部分負責四個輸出中的一個。
5.2.2 output O2-計時器的計算
第二個輸出(O2)計算計時器。使用了TON和TOF類型,它們的過期時間不同。根據IEC 61,131 3的定義,在經過時間延遲PT后,在輸出Q處,TON定時器提供輸入的上升沿。如果輸入脈沖短于PT,則不啟動計時器,輸出Q為false。TOF定時器執行與TON相反的功能,即它立即在輸出Q處提供輸入IN的上升沿,但延遲輸入IN的下降沿到輸出Q。
對于圖5所示的梯形圖測試程序段,如果其中一個平行TON計時器接收到大于PT值的輸入脈沖,則輸出O2被設置為true。定時器TON0到TON3由輸入I1、I2、I3和I4激活。O2應保持激活狀態,直到串聯的TOF計時器過期。
5.2.3 output O3-計數器的計算
第三個輸出(O3)驗證計數器塊。此測試同時使用向上(CTU)和向下(CTD)計數器。CTU計數器在輸入CU的每個上升沿上遞增內部計數變量CV。如果CV中的值與用戶定義的PV變量匹配,則輸出Q設置為true。當輸入R出現上升沿時,內部計數變量CV被重置為零。類似地,CTD計數器在輸入CD的第一個上升沿上從PV加載內部CV變量值,并在輸入CD的每個后續上升沿上遞減CV。一旦CV為零,輸出圖6-計數器測試。圖7-算術和比較器測試。Q設置為true。在輸入LD的上升沿上,原始PV值恢復為CV。
如圖6所示,在從CTD0接收到復位脈沖之前,如果CTU0評估為真至少兩次,則輸出O3被設置為真。輸入I1和I2連接到CTU0計數器的CU和R輸入,而輸入I3和I4連接到CTD0計數器的CD和LD輸入。
5.2.4 output O4-算數的計算
最后,第四個輸出(O4)計算算術和比較塊。在這個測試中,CTU計數器被添加到四個輸入中的每一個。每個CTU的CV變量連接到算術塊,以便執行以下等式:
算術表達式的結果將轉到兩個并列塊。如果結果大于3或小于-3,則輸出設置為真。該試驗段的梯形圖如圖7所示。
5.2.5 結果
這個測試程序的所有四個輸入都是由一個隨機生成的100字節長的輸入向量刺激的。每個PLC上連接一個微控制器,提供輸入矢量刺激,并讀取運行測試程序的PLC產生的四個輸出。該測試評估給定相同的程序和相同的輸入向量,所有plc是否生成相同的輸出向量。各PLC的輸出矢量如表5所示。
表5中的值都是十六進制。每個十六進制數字代表一個字節(4位),與四個輸入(用于輸入向量)或輸出(用于輸出向量)直接相關。例如,輸入向量上的十六進制數字A表示以下輸入位
從最重要的開始,輸入向量的每個半字節被發送到以100 ms間隔測試的所有可編程邏輯控制器的四個輸入端。在100 ms間隔之間,從可編程邏輯控制器的輸出端讀取輸出向量的每個半字節。
從表5所示的數據來看,OpenPLC和Siemens具有相同的輸出矢量。Schneider和A-B也有相同的輸出向量,但它們不同于OpenPLC和Siemens生成的第一組。歐姆龍有一個不同于其他所有的輸出矢量。試驗得出的結論是:
(1) 所有測試的可編程邏輯控制器的輸出O1和O2(雙穩態元件、邊緣檢測和定時器)的結果相同。除歐姆龍外,所有可編程邏輯控制器的輸出O3(計數器測試)結果相同。OpenPLC和Siemens對輸出O4(算術和比較器測試)的結果相同。施耐德、A-B和歐姆龍對O4的輸出也有相同的結果,但與OpenPLC和西門子的結果不同。
(2) 盡管A–B和Schneider對于輸出O1有正確的結果,但它們在指令集中沒有雙穩態元素。因此,A-B和Schnei-der的雙穩態元件必須使用單獨的set和reset指令來實現。
(3) CTD計數器的A-B實施不符合IEC 61131-3標準。在第一次加載時,在輸入的上升沿上,它應將預設值加載到accumu-lator。此外,在復位輸入的情況下,它應該再次將預設變量的原始值加載到累加器中。對于這個特定的數據集,輸出沒有任何變化,但是,A–B可編程邏輯控制器的累加器在測試結束時的值與其他可編程邏輯控制器不同。
(4) 歐姆龍的編程軟件(CX程序員)不是基于IEC 61131-3標準。歐姆龍的編程軟件有一個不同的版本,叫做CX Programmer IEC,它符合標準。但是,CX程序員IEC只能與SYSMAC CS系列和CJ系列CPU單元一起使用。此外,Omron沒有TOF定時器塊,因此必須在測試程序中使用TON和一些梯形邏輯來實現它們。最后,歐姆龍的計數器與IEC 61131-3標準中定義的計數器非常不同。不可能使它們以與其他可編程邏輯控制器類似的方式工作。因此,歐姆龍公司在計數器測試中有不同的結果。
(5) 施耐德(Schneider)、A-B和歐姆龍(Omron)對零劃分的解釋不同于OpenPLC和西門子(Siemens)。對于Schneider、A–B和Omron,忽略零的除法,因此目的地保留上一個值。對于Siemens和OpenPLC,零除將零移到目標寄存器。這解釋了為什么他們在算術和比較器測試中有不同的結果。
5.3 SCADA連接測試
可編程邏輯控制器和其他自動控制器設備是在工業通用互操作性標準(如IEC 61131)出現之前開發的。結果是,供應商創建了大量不可互操作的控制協議,作為一種激勵,他們有自己的協議來鎖定他們的客戶群。
隨著SCADA開放協議的到來,業界開始從專有的封閉網絡轉向開放源代碼解決方案和支持TCP/IP的網絡,允許不同的設備進行互操作。盡管DNP3和以太網/IP等協議正逐漸流行起來,但實際上所有主要的PLC制造商都提供了對Modbus的支持。從表2中的數據可以看出這一點。盡管DNP3和以太網/IP在一些可編程邏輯控制器設備中很常見,但Modbus是所有這些設備的通用協議。因此,擬議的監控與數據采集連接測試主要集中在Modbus協議中,因為它是監控與數據采集供應商之間的一個共同點。
Modbus是一種請求/應答協議,提供由功能代碼指定的服務。Modbus應用協議規范定義了三類Modbus功能代碼:公共、用戶定義和保留。用戶定義的和保留的功能代碼不適用于此測試,因為它們是特定于設備的,并且可以從一個實現更改為另一個實現。另一方面,公共功能代碼定義明確,公開記錄,并且對于符合Modbus規范的每個設備始終相同
Modbus規范定義了19種不同的公共功能代碼。SCADA連接測試評估每個被測PLC上所有Modbus公共功能代碼的實現,以及每個功能代碼可用的地址范圍。測試程序用所有可能的Modbus公共功能代碼發送消息,并檢查響應,以評估被測設備是否支持特定的功能代碼。此外,它還請求離散輸入、線圈、輸入寄存器和保持寄存器的數據,以評估設備上每種數據類型支持的地址范圍。表6和表7分別顯示了每個設備支持的功能代碼列表以及每個數據類型支持的地址范圍。
在執行SCADA連接測試之前,有必要向Omron PLC添加CP1W-MODTCP61擴展卡,因為該PLC沒有內置以太網端口。該模塊負責將以太網和Modbus TCP功能添加到Omron CP1L系列中。
SCADA連接測試的結果導致了一些觀察結果:
1.盡管Modbus規范定義了許多公共功能代碼,但該測試表明,可編程邏輯控制器僅關注與Modbus數據類型和診斷直接相關的公共功能子集。
2.除了診斷功能外,OpenPLC支持與其他測試設備相同的功能代碼子集。但是,由于OpenPLC代碼是開源的,因此如果需要,可以添加對診斷和其他功能代碼的支持。
3.Modbus地址范圍在每個ven-dor之間變化很大。一些設備的離散I/O范圍較大,而另一些設備的寄存器范圍較大。
4.OpenPLC和Schneider將Modbus地址空間直接映射到物理I/O,這意味著可以通過Modbus請求直接觀察物理輸入和輸出的變化。西門子還將Modbus地址空間直接映射到I/O,但保留寄存器除外,其中,用戶被迫創建一個單獨的數據庫,以與Modbus保持寄存器相關聯。A-B和Omron對Modbus請求使用完全獨立的地址空間。如果需要在Modbus上報告物理I/O,用戶程序必須手動將每個Modbus地址鏈接到物理輸入或輸出。
5.根據Modbus規范,當設備接收到不支持功能代碼的請求時,它必須以無效功能代碼異常回答。Omron沒有實現無效的函數代碼異常。相反,它只是關閉與請求者的連接。這給測試增加了很大的困難,因為每次測試不支持的函數代碼時都必須重置連接。
5.4 Modbus注入攻擊測試
指令注入攻擊是過程控制系統面臨的主要威脅之一。鑒于可編程邏輯控制器是一種智能電子設備,可編程邏輯控制器可直接在遠程站點自動監測和控制物理過程,通常有可編程邏輯控制器寄存器,用于保存過程的關鍵控制參數,如上限和下限、有效狀態和當前操作模式。攻擊者可以使用命令注入覆蓋這些寄存器中的值,從而導致控制算法做出錯誤的決策。
此測試的目的是驗證受到Modbus注入攻擊時的每個PLC行為。對于測試,每個可編程邏輯控制器用圖8中的梯形圖邏輯程序編程。
圖8中的梯形邏輯有一個主振蕩器,其產生周期為40 ms的方波。第一定時器(TON)將脈沖保持在低狀態20 ms,第二定時器(TOF)將脈沖保持在高狀態20 ms。該方波用作計數從0到100的內部計數器的輸入。一旦計數達到100,計數器自動復位,計數重新開始。每個可編程邏輯控制器被配置為允許內部計數在地址0處的Modbus保持寄存器中可用。
創建了一個監控程序,以持續讀取和記錄每個可編程邏輯控制器的Modbus保持寄存器0。注入攻擊由另一個程序執行,該程序旨在盡可能快地將寫消息發送到目標PLC上的Modbus保持寄存器0。這些消息的目的是用值99覆蓋目標PLC上的內部計數。攻擊每個PLC的結果可以在圖9中看到。
結果表明,每個PLC在攻擊過程中都有不同的行為。OpenPLC和Schneider也有類似的行為,即使攻擊能夠多次覆蓋計數值,但它們都能夠正確地保持內部計數,從而使注入期間的輸出值在正確的內部計數和注入值99之間振蕩。
A-B有一個不同的行為,攻擊實際上改變了內部計數值,這樣計數器就可以從注入的值繼續計數。因此,噴射期間的輸出值在值99、100和0之間振蕩。
如第5.2節所述,歐姆龍計數器與其他平臺不同。歐姆龍CP1L系列只有下行計數器指令(CTD),因此歐姆龍可編程邏輯控制器的測試是用遞減計數器進行的。解釋了為什么歐姆龍公司的曲線看起來是垂直的。此外,由于注入消息發送太快,Omron PLC無法處理許多讀取請求消息,這導致注入攻擊期間的讀取點更稀疏。由此得出結論,該PLC可能比其他PLC更容易受到拒絕服務(DoS)攻擊。
西門子是被測試的唯一一家對注射攻擊免疫的PLC。經過仔細分析,可以看出西門子處理Modbus請求的優先級低于梯形圖程序。此外,西門子PLC阻止了發送消息過快的連接,這迫使注入攻擊以更慢的速度發生。因此,即使注入程序試圖在Modbus寄存器中寫入該值,由于梯形圖邏輯周期的優先級較高,內部計數值立即恢復為正確值,因此在讀數上看不到注入。
鑒于open PLC是一個開源PLC,因此可以修改其內部行為,使之與西門子PLC相匹配,以應對此攻擊。如圖1所示,網絡層-w h i c h處理Modbus和DNP3連接,并且PLC邏輯可以直接訪問內部圖像表。這意味著Modbus寫請求直接訪問OpenPLC內部緩沖區,因此可以立即修改緩沖區中的任何變量。為了具有與西門子PLC相似的行為,在網絡層和PLC邏輯之間添加了仲裁塊,這樣它們就不再直接訪問內部圖像表。仲裁器被編程為優先考慮可編程邏輯控制器邏輯,因此Modbus寫入請求將在臨時緩沖區上等待,直到所有梯形圖邏輯寫入內部圖像表完成。如果Modbus寫入和PLC邏輯寫入之間存在沖突,則將保持PLC邏輯值。在OpenPLC上執行這些修改之后,Modbus注入攻擊測試被重復。
從圖10可以看出,修改了源代碼的OpenPLC與Siemens PLC具有相同的行為。注入的消息無效,因為PLC邏輯優先于Modbus寫入請求。在這種情況下修改open PLC以匹配最佳實踐,或者在其他情況下擊敗特定攻擊的能力,顯示了開源PLC在網絡安全研究中的價值。
雖然這種修改能夠擊敗這種特殊的注入攻擊,但它沒有修復與Modbus協議相關的身份驗證、完整性和機密性問題,這使得注入攻擊最初成為可能。解決這個問題的一個更全面的解決方案是在協議中實際消除這些限制。阿爾維斯等人進行的一項研究。(2018)試圖解決其中一些問題,方法是證明有可能通過使用機器學習識別和阻止可能的攻擊的嵌入式入侵防御系統來增強OpenPLC。同樣的研究還描述了一個嵌入式加密模塊,為Modbus協議提供機密性。鑒于許多工業過程對實時性的嚴格要求,本研究還評估了采用加密和機器學習算法的ap的性能損失,并得出結論,這些改進不會影響OpenPLC的實時性。這種行為的原因在于OpenPLC的實時庫,它受益于多核架構,為核心OpenPLC進程提供了更好的實時響應。
6 網絡安全應用
與傳統的集中式方法相比,開源PLC為邊緣的嵌入式安全性創造了研究機會,可以提供更高的彈性。下面的章節列舉了OpenPLC的三個重要的網絡安全應用領域。
6.1 可開發PLC用于SCADA安全培訓
出于各種原因,安全行業的人員一直在使用故意易受攻擊的系統,如Metasploitable(Metasploitable:一種易受攻擊的機器,用于測試Metasploit 2017),如網絡開發培訓、漏洞開發和軟件測試。鑒于目前在可編程邏輯控制器層面上不存在此類系統,可以創建原始OpenPLC代碼的分支,以實現在ICS-CERT咨詢和報告(ICS-CERT咨詢| ICS-CERT 2017)中披露的商業系統的安全漏洞。這個故意易受攻擊的系統可以用來進行ICS安全培訓,測試網絡安全工具,并在不需要原始硬件的情況下實踐常見的ICS滲透技術。
6.2 嵌入式入侵檢測系統
雖然在提高入侵檢測系統(IDS)的準確性和復雜度方面做了大量工作,但當攻擊者攻擊網絡中的可信節點時,要保護工業系統免受受損節點的攻擊,就面臨著巨大的研究挑戰。攻擊者可以發起攻擊,發送有害的控制命令,甚至從受信任的節點取消激活ID。可以修改開放源碼的PLC代碼以包含嵌入式id。嵌入式體系結構將ID暴露在網絡中的可能性降到最低,這樣受信任的節點就不能訪問ID。另外,一個嵌入式IDS一旦只關心自己的節點,可以分析更小的數據流。這樣可以提高入侵檢測系統的準確性和訓練時間。
在PLC中嵌入IDS還可以提供其他優點。基于機器學習算法的IDS通過網絡遙測學習。機器學習IDS的性能和準確性依賴于正確的特征和屬性的選擇,這是一個非常復雜和領域特定的任務。嵌入式IDS可以直接訪問由PLC執行的邏輯程序,從而獲得有關該過程的領域特定知識,從而在最少的人工監督下自動選擇正確的特性。
6.3 嵌入式加密
通過加密PLC與集中監控之間的通信通道,可以提高SCADA網絡的安全性。IPsec為數據包提供加密和身份驗證,從而保護它們不被竊聽和篡改。由于IPsec在網絡層(OSI第3層)運行,它對應用程序是完全透明的。研究人員一直致力于使用IPsec和其他加密技術(如SSL和TLS)包裝SCADA協議(Patel et al., 2009;阿爾希羅夫和金姆;Patel和Sanyal, 2008)。
由于閉源商用可編程邏輯控制器的網絡功能無法修改,在當前的監控與數據采集系統上使用加密技術需要額外的硬件,如可編程邏輯控制器與監控與數據采集網絡其余部分之間的線路連接。這種方法的問題是PLC和加密設備之間的鏈接易受攻擊,因為它沒有加密。此外,網絡上添加的節點會增加延遲,從而影響網絡的實時響應。
OpenPLC的模塊化架構允許修改網絡層架構,而無需更改系統其他組件上的任何內容。另外,由于OpenPLC是完全開放源碼的,它支持在設備中實現SSL、TLS或IPsec加密,而不需要任何外部硬件。將strongSwan(strongSwan簡介2017)集成到OpenPLC中進行了初步測試,結果令人滿意。StrongSwan是一個完整的IPsec解決方案,為服務器和客戶端提供加密和身份驗證。它使用因特網密鑰交換協議(IKEv1和IKEv2)在兩個對等點之間建立安全關聯(SA)。IKE提供兩個對等方的強身份驗證,并派生唯一的加密會話密鑰。OpenPLC能夠使用strongSwan通過端到端加密通道成功地與ScadaBR HMI通信。不需要額外的硬件。
7. 結論
本文概述了一個通用的可編程邏輯控制器體系結構,并定義了一個符合IEC 61131-3國際標準的開源可編程邏輯控制器。這項工作的主要貢獻是OpenPLC Neo的開發,它允許ICS研究人員在沒有專有代碼的情況下設計、測試和驗證工業控制器的安全增強。一旦這些增強功能經過測試和驗證,供應商就可以將它們移植到商業平臺上。
此外,為了支持OpenPLC是PLC研究的有效平臺的說法,本文提出了一種驗證PLC的方法。創建了四個測試來分析可編程邏輯控制器系統的有趣概念及其在網絡攻擊期間的行為:掃描時間測試、可編程邏輯控制器梯形圖邏輯執行測試、SCADA連接測試和Modbus注入攻擊測試。應用該方法對OpenPLC Neo與其他四種商用plc進行了比較。結果是令人滿意的,因為OpenPLC Neo實現了相似的掃描時間,IEC 61131-3可兼容的邏輯執行,與其他商業plc測試相同的SCADA連接。另外,在對OpenPLC源代碼做了一些修改之后,OpenPLC能夠模擬Modbus注入攻擊期間的最佳行為。修改open PLC以匹配最佳實踐或擊敗特定攻擊的能力顯示了開源PLC在網絡安全研究中的價值。
除了提供低成本的可編程邏輯控制器環境外,開放式可編程邏輯控制器還為集成電路網絡安全研究開辟了許多不同的領域。原始OpenPLC代碼的一個故意易受攻擊的版本可用于進行ICS安全培訓和測試網絡安全工具。嵌入OpenPLC代碼中的IDS系統暴露于網絡的程度較低,分析的數據流較小,提高了準確性和訓練時間,并且可以根據PLC執行的邏輯程序自動選擇要學習的特征。最后,OpenPLC使SSL、TLS和IPsec等加密技術能夠嵌入到應用程序中。嵌入式加密為控制中心提供直接和安全的通信通道,而不需要增加網絡延遲的外部硬件。
R E F E R E N C E S
Alcaraz C , L o p e z J . Analysis of requirements for critical control
systems. Int J Crit Infrastruc Protect 2012;5(3,4):137–45 .
Alcaraz C , Zeadally S . Critical control system protection in the
21st century. Computer 2013;46(10):74–83 .
Alcaraz C , Zeadally S . Critical infrastructure protection:
requirements and challenges for the 21st century. Int J Crit
Infrastruct Protect 2015;8:53–66 .
Allen-Bradley, “DF1 protocol and command set: reference
manual”, Publication No. 1770-6.5.16, Allen-Bradley
Milwaukee, Wisconsin, 1996.
Alsiherov F and Kim T, “Secure SCADA network technology and
methods”, WSEAS Trans Syst Control , vol. 5, no. 8, p. 635–645
Alves T, Das R, Morris T. Embedding encryption and machine
learning intrusion prevention systems on programmable logic
controllers. IEEE Embed Syst Lett 2018.
doi: 10.1109/LES.2018.2823906 . 1–1.
Alves T. The OpenPLC project. [Online]. Available,
http://www.openplcproject.com/ ; 2017 Accessed: 14- Dec
Alves T. OpenPLC_v2: OpenPLC with the new IEC ST to C
compiler. [Online]. Available:
https://github.com/thiagoralves/OpenPLC _ v2 ; 2017 [Accessed:
14- Dec].
Alves T. OpenPLC-Neo: a cheap, reliable, expandable and, of
course, open source device that works with OpenPLC
software. [Online]. Available:
https://github.com/thiagoralves/OpenPLC-Neo ; 2017
[Accessed: 14- Dec].
ARC Advisory Group, “A R C user survey: PLC supplier
preferences”, ARC Advisory Group 2001.
Boyes W , O’Brien L . To p 50 automation companies. Control
2009;XXI(12):22–9 .
Braam C. Modbus PLC simulator. [Online]. Available:,
http://www.plcsimulator.org/ ; 2017 [Accessed: 14- Dec] .
CENELEC, “General purpose field communication system”,
Document No. EN 50170, CENELEC 1996.
ControlNet International, “ControlNet specifications”, 2nd. ed.
ControlNet International, Boca Raton, FL, 1998.
ControlNet International, “EtherNet/IP specification”, Release 1.0,
ControlNet International, 2001
Curtis K, “A DNP3 protocol primer. Technical report”, DNP User’s
Group, 2000
de Sousa M , C a r v a l h o A . An IEC 61131-3 compiler for the MatPLC.
Proceedings of the EFTA 2003, IEEE conference on emerging
technologies and factory automation. (Cat. No.03TH8696),
2003 .
de Sousa M . MatPLC-the truly open automation controller.
Proceedings of the IEEE 28th annual conference of the
industrial electronics society, 2002 .
de Souza M. MatPLC home page. [Online]. Available,
http://mat.sourceforge.net/ ; 2017 [Accessed: 01- Aug- 2017] .
Erickson K, “Programmable logic controllers: an emphasis on
design and application”, 3rd ed., 2016. pp. 43-51, 86-88,
1218–1222.
Genge B , Siaterlis C , Hohenadel M . AMICI: an assessment
platform for multi-domain security experimentation on
critical infrastructures. Proceedings of the international
workshop on critical information infrastructures security -
CRITIS, 2012 .
Holm H , K a r r e s a n d M , Vidstr?m A , Westring E . A survey of
industrial control system testbeds. Secure IT Syst
2015;9417:11–26 .
ICS-CERT Advisories | ICS-CERT . ics-cert.us-cert.gov. [Online].
Available, https://ics- cert.us- cert.gov/advisories ; 2017
Accessed: 01- Aug- 2017 .
“International Electrotechnical Commission. IEC 61131-3:
programmable controllers – P a r t 3 programming languages”,
International Electrotechnical Commission, Geneva,
Switzerland, 1993.
Introduction to strongSwan. wiki.strongswan.org. [Online].
Available, https://wiki.strongswan.org/projects/strongswan/
wiki/IntroductionT ostrongSwan ; 2017 Accessed: 01- Aug-
2017 .
Maynard P , McLaughlin K , Haberler B . Towa rd s understanding
man-in-the-middle attacks on IEC 60870-5-104 SCADA
networks. Proceedings of the 2nd international symposium
for ICS & SCADA cyber security research, 2014 .
Rapid7, Metasploitable: a vulnerable machine to test metasploit,
Rapid7 2017. [Online]. Available: https://www.rapid7.com/
resources/test- metasploit- with- metasploitable/ . [Accessed:
01- Aug- 2017].
Mitsubishi Electric, “Graphic operation terminal/SCADA”,
Mitsubishi Electric 2018.
Modbus IDA, “Modbus application protocol specification v1.1a”,
Modbus IDA, June 4, 2004
Modbus T ools. Modbus slave simulator. [Online]. Available: ,
http://www.modbustools.com/modbus _ slave.html ; 2017
[Accessed: 14- Dec]
Nagar S. Open source boosts innovation in software, hardware
and beyond. Res Dev 2017. [Online]. Available
https://www.rdmag.com/article/2017/03/open-source-
boosts- innovation- software- hardware- and- beyond .
[Accessed: 31- Jul- 2017] .
Omron, “CX-designer: screen designer for NS series”, Cat. No.
V404-E1-01, Omron, 2018.
opendnp3. Automatak.com. [Online]. Available,
https://www.automatak.com/opendnp3/ ; 2017 [Accessed: 01-
Aug- 2017] .
OSS-Fuzz. GitHub; 2017 [Online]. Available:
https://github.com/google/oss-fuzz . [Accessed: 01-Aug-2017].
“OSS-Fuzz: five months later, and rewarding projects”, [Online].
Available https://opensource.googleblog.com/2017/05/
oss- fuzz- five- months- later- and.html ; 2017 [Accessed: 01-
Aug- 2017].
Patel S , S a n y a l P . Securing SCADA systems. Inf Manage Comput
Secur 2008;16(4):398–414 .
Patel S , B h a t t G , G r a h a m J . Improving the cyber security of SCADA
communication networks. Commun ACM 2009;52(7):139 .
PLCopen Technical Committee 6, “XML Formats for IEC 61131-3,
Ver 1.0”, PLCopen Technical Committee 6, April 2005
Profibus, “Profibus: design guideline”, Version 1.13, Order No.
8.012, Profibus 2015.
Rautmare S . SCADA system security: challenges and
recommendations. Proceedings of the annual IEEE India
conference, 2011 .
Rockwell. Studio 5000 Logix Emulate. rockwellautomation.com
[Online]. Available:, https://www.rockwellautomation.com/
rockwellsoftware/products/studio5000- logix- emulate.page ;
2017 Accessed: 14- Dec .
Rockwell Automation, “RSView 32 user’s guide”, Publication No.
VW32-UM001F-EN-E, Rockwell Automation 2011.
ScadaBR. Scadabr.com.br. [Online]. Available,
http://www.scadabr.com.br/ ; 2017 Accessed: 01- Aug- 2017 .
Schneider Electric, “Interactive graphical SCADA system: insight
and overview”, Publication No. 201209 US, Schneider Electric,
2012.
Siemens, “SIMATIC S7-PLCSIM - software for SIMATIC
controllers”, siemens.com [Online]. Available:
http://w3.siemens.com/mcms/simatic- controller- software/
en/step7/simatic- s7- plcsim/pages/default.aspx . [Accessed:
14- Dec- 2017]
Siemens AG, “Basic controller SIMATIC S7-1200”, Article No.
DFFA-B10053-03-7600, Germany, 2017
Siemens AG, “SIMATIC WinCC V7”, Article No.
DFFA-B10453-00-7600, Siemens AG, Germany, 2017
Telecontrol Equipment and Systems, “Part 5-104: transmission
protocols - network access for IEC 60870-5-101 using standard
transport profiles”, IEC Standard 60870, IEC, 2006.
Tisserant E , Bessard L , d e Sousa M . An Open Source IEC 61131-3
Integrated Development Environment. Proceedings of the 5th
IEEE international conference on industrial informatics, 2007 .
U.S. Naval Research Lab. Common Open Research Emulator
(CORE). [Online]. Available Accessed: 14- Dec,
https://www.nrl.navy.mil/itd/ncs/products/core ; 2017
Accessed: 14- Dec
2013年,蒂亞戈·阿爾維斯在“卡托利卡大學”(PUC)獲得電氣工程學士學位。2013年獲北大電氣工程系最佳高級設計獎。2014年,他創建了OpenPLC,這是第一個符合IEC 61131-3標準的開源工業控制器。OpenPLC正成為控制系統研究和教育的重要工具。OpenPLC項目得到了一些大學和私人公司的資助,如約翰霍普金斯大學和FreeWave技術公司。目前蒂亞戈是亨茨維爾阿拉巴馬大學的博士生。
他的研究方向包括SCADA系統、工業控制器和嵌入式系統的網絡安全。
莫里斯博士的主要研究領域是計算機安全。他目前的研究涉及工業控制系統(SCADA、智能電網、智能儀表、過程控制系統)的安全。為了與一群學生研究人員合作,他正在調查控制系統的漏洞,并開發控制系統入侵檢測、法醫數據記錄和網絡流量驗證的方法。在加入位于亨茨維爾的阿拉巴馬大學之前,他于2008-2015年在密西西比州立大學工作,1991-2008年在德克薩斯儀器公司工作。在微軟大學,他擔任副教授和中心主任。在TI,他曾擔任數字設計師和數字設計驗證工程師。
總結
以上是生活随笔為你收集整理的OpenPLC:符合IEC 61131-3标准的用于网络安全研究的开源工业控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSIS中文用户手册下载(免费下载)
- 下一篇: c语言程序设计数字电位器,可编程数字电位