首頁(yè) 培訓(xùn)網(wǎng) 最新資訊 熱門問(wèn)答

PLC編程

13013833891 免費(fèi)試聽(tīng) 在線客服

您的位置: 蘇州培訓(xùn)網(wǎng) > PLC編程培訓(xùn)資訊 > 蘇州PLC編程培訓(xùn)學(xué)費(fèi)

蘇州PLC編程培訓(xùn)學(xué)費(fèi)

來(lái)源:教育聯(lián)展網(wǎng) | 發(fā)布時(shí)間: | 編輯:佚名

隨著工業(yè)控制系統(tǒng)由封閉走向互聯(lián),大量的控制器配備了以太網(wǎng)通信組件,使得攻擊者可以直接訪問(wèn)PLC硬件及其編程軟件。但PLC邏輯控制層缺少認(rèn)證和監(jiān)測(cè)等保護(hù)措施,PLC代碼的安全缺陷成為工業(yè)控制系統(tǒng)的重要安全威脅之一。

蘇州PLC編程培訓(xùn)學(xué)費(fèi)

隨著工業(yè)控制系統(tǒng)由封閉走向互聯(lián),大量的控制器配備了以太網(wǎng)通信組件,使得攻擊者可以直接訪問(wèn)PLC硬件及其編程軟件。但PLC邏輯控制層缺少認(rèn)證和監(jiān)測(cè)等保護(hù)措施,PLC代碼的安全缺陷成為工業(yè)控制系統(tǒng)的重要安全威脅之一。


**部分 PLC代碼利用相關(guān)研究

與傳統(tǒng)的編程語(yǔ)言一樣,PLC存在代碼安全缺陷,而這些代碼安全缺陷為攻擊者攻擊工業(yè)控制系統(tǒng)留下了后門。

2013年South Carolina大學(xué)的Sidney對(duì)PLC代碼設(shè)計(jì)安全缺陷進(jìn)行了深入的研究,并把PLC代碼設(shè)計(jì)級(jí)缺陷主要分為基于硬件缺陷和基于軟件缺陷兩種。攻擊者可以利用PLC代碼缺陷破壞代碼邏輯,進(jìn)行中間代碼插樁,實(shí)現(xiàn)任意代碼執(zhí)行等。

2014年北京科技大學(xué)李偉澤等提出和分析了一種針對(duì)SCADA系統(tǒng)的新型的網(wǎng)絡(luò)物理攻擊——偽邏輯攻擊。

2015年在blackhat-US會(huì)議上Klick等在西門子S7-300中注入了一種新型的后門,**注入工具實(shí)現(xiàn)了在S7-300上進(jìn)行SNMP掃描SOCK5代理功能。作者利用PLC程序中存在跳轉(zhuǎn)指令的安全缺陷,成功在主程序OB1前嵌入惡意指令從而可以控制PLC的啟停以及輸出寄存器。

2016年11月在blackhat歐洲會(huì)議上Ali Abbasi等實(shí)現(xiàn)了對(duì)PLC輸入/輸出接口的新攻擊,該攻擊**篡改輸出輸入引腳改變系統(tǒng)的運(yùn)行邏輯。

2017年3月,來(lái)自印度海德拉巴和新加坡的學(xué)者,演示了針對(duì)工業(yè)控制系統(tǒng)的PLC梯形圖邏輯炸彈(Ladder Logic Bombs,LLB)。該邏輯炸彈是用梯形圖語(yǔ)言編寫的惡意軟件,這種惡意軟件可被攻擊者注入到PLC現(xiàn)有控制邏輯中,**改變控制動(dòng)作或者等待特定的觸發(fā)信號(hào)來(lái)激活惡意行為,以實(shí)現(xiàn)傳感器數(shù)據(jù)篡改,系統(tǒng)敏感信息獲取以及PLC拒絕服務(wù)攻擊等。


第二部分 PLC代碼缺陷分類

不同于傳統(tǒng)的IT系統(tǒng),工業(yè)控制系統(tǒng)有其特殊的編程語(yǔ)言,根據(jù)國(guó)際電工委員會(huì)制定的工業(yè)控制編程語(yǔ)言標(biāo)準(zhǔn)(IEC61131-3),PLC的編程語(yǔ)言包括以下五種:梯形圖語(yǔ)言(LadderLogic Programming Language,LD)、指令表語(yǔ)言(Instruction List,IL)、功能模塊圖語(yǔ)言(Function Block Diagram,F(xiàn)BD)、順序功能流程圖語(yǔ)言(Sequential function chart,SFC)及結(jié)構(gòu)化文本語(yǔ)言(Structured text,ST)。本文中的代碼缺陷研究也是基于上述編程語(yǔ)言展開(kāi)的。

工業(yè)控制系統(tǒng)的入侵與傳統(tǒng)互聯(lián)網(wǎng)入侵雖然手段上大同小異,但工業(yè)控制系統(tǒng)的部署與其物理工藝流程緊耦合,因此利用工藝流程中的代碼邏輯缺陷成為針對(duì)工業(yè)控制系統(tǒng)的有效打擊手段之一,如陷阱門、邏輯炸彈、特洛伊木馬、蠕蟲(chóng)、Zombie等,且這類新的惡意代碼具有更強(qiáng)的傳播能力和破壞性。本文主要研究基于軟件的PLC代碼缺陷,并從代碼邏輯缺陷和違反安全需求規(guī)約兩個(gè)方面對(duì)PLC代碼缺陷進(jìn)行分類研究。

(一)PLC代碼邏輯缺陷

PLC代碼邏輯缺陷具有隱蔽性強(qiáng)的特性,難以發(fā)現(xiàn),可以潛伏多年,傳統(tǒng)的安全防御思路無(wú)法解決這方面問(wèn)題。在工業(yè)控制系統(tǒng)中,一次開(kāi)關(guān)動(dòng)作不執(zhí)行,工藝執(zhí)行流程的改變以及特定的輸出響應(yīng)故障都可能造成毀滅性的破壞。

本文以梯形圖語(yǔ)言為例分析PLC代碼邏輯缺陷,梯形圖語(yǔ)言形象直觀,與繼電器的控制電路的表達(dá)方式極為相似。梯形圖由觸點(diǎn)、線圈等圖形符號(hào)結(jié)合數(shù)字指令、算術(shù)運(yùn)算指令、控制指令等指令符號(hào)構(gòu)成,PLC代碼邏輯缺陷也是由這些元素和組件位置放置不恰當(dāng)、鏈接和范圍不正確引起的。表1給出了PLC代碼邏輯缺陷分類及其相關(guān)描述。

**利用表1中列舉的PLC代碼邏輯缺陷,可實(shí)現(xiàn)拒絕服務(wù)攻擊,中間人攻擊、改變控制器正常的工作流程等,對(duì)工業(yè)控制系統(tǒng)造成難以估量的損失。下面給出幾個(gè)PLC代碼缺陷分析和利用。

(1)計(jì)時(shí)器條件競(jìng)爭(zhēng)缺陷

PLC編程中的計(jì)時(shí)器可**設(shè)置預(yù)設(shè)時(shí)間觸發(fā)計(jì)時(shí)器。定時(shí)器完成位元件的不正確放置可能導(dǎo)致涉及定時(shí)器完成位的過(guò)程和定時(shí)器本身進(jìn)入競(jìng)爭(zhēng)條件。當(dāng)定時(shí)器完成位成為激活其自身觸發(fā)機(jī)制的必需元素時(shí),發(fā)生這種競(jìng)爭(zhēng)條件使得定時(shí)器陷入死循環(huán)并使定時(shí)器復(fù)位。

計(jì)時(shí)器的預(yù)設(shè)值設(shè)為0,使得定時(shí)器觸發(fā)位和定時(shí)器同時(shí)打開(kāi),造成計(jì)時(shí)器持續(xù)振蕩,使得輸出O4.1無(wú)法被觸發(fā),致使程序流程順序錯(cuò)誤或進(jìn)程無(wú)法關(guān)閉等故障,實(shí)現(xiàn)拒絕服務(wù)攻擊。

(2)比較函數(shù)硬編碼缺陷

PLC邏輯代碼中的數(shù)字指令包含比較指令,該比較指令如果編碼不正確可能會(huì)導(dǎo)致安全隱患,使得惡意用戶可以**比較指令將不正確的數(shù)據(jù)插入到進(jìn)程中。這些數(shù)據(jù)可能會(huì)導(dǎo)致進(jìn)程序列發(fā)生變化,或者導(dǎo)致進(jìn)程完全中止。

假設(shè)常開(kāi)觸點(diǎn)I0.1可以觸發(fā)高壓鍋爐的初始化,常開(kāi)觸點(diǎn)后連接一個(gè)比較函數(shù),O4.1控制高壓鍋爐的關(guān)閉進(jìn)程。直到A的值大于等于B的值時(shí),O4.1被激活,鍋爐停止加熱。如果比較元素B不參考符號(hào)表中的數(shù)值而是使用定值進(jìn)行硬編碼,B中的數(shù)據(jù)是不受保護(hù)的,我們**提高B的溫度值,使得高壓鍋爐不斷加熱直到設(shè)備損壞甚至發(fā)生爆炸。

(3)跳轉(zhuǎn)和鏈接缺陷

跳轉(zhuǎn)和鏈接缺陷是由一些可影響程序執(zhí)行順序的跳轉(zhuǎn)指令和邏輯塊指令的錯(cuò)誤的跳轉(zhuǎn)到某個(gè)程序段而引起。這種類型的代碼缺陷類似于中間人攻擊,攻擊者可以利用錯(cuò)誤的跳轉(zhuǎn)指令跳轉(zhuǎn)到一個(gè)非預(yù)期的位置,并且把在非預(yù)期的位置插入惡意的程序段,再返回到跳轉(zhuǎn)之前的位置。

給出了基于跳轉(zhuǎn)和鏈接缺陷的代碼利用方法,我們可以利用跳轉(zhuǎn)到子程序JSR函數(shù)從File1跳轉(zhuǎn)到惡意代碼文件File3中,引入惡意的子程序再返回到JSR跳轉(zhuǎn)之前位置,完成惡意代碼的插入,實(shí)現(xiàn)中間人攻擊。


(二)PLC代碼安全需求規(guī)約

除了PLC代碼邏輯缺陷,PLC代碼在物理現(xiàn)場(chǎng)的安全需求屬性也將決定PLC缺陷利用的成功與否。安全需求屬性是由工業(yè)控制現(xiàn)場(chǎng)的安全要求決定,指的是為了保證工業(yè)控制系統(tǒng)的安全,對(duì)設(shè)備狀態(tài)、時(shí)序、時(shí)間、輸入輸出量等的約束。如一個(gè)電機(jī)的額定轉(zhuǎn)速不超過(guò)2000rpm以及交叉路口的綠燈不能同時(shí)點(diǎn)亮等約束條件。在代碼中可能由于程序員的疏忽導(dǎo)致違反安全需求屬性的情況,就需要對(duì)其進(jìn)行檢測(cè)。可見(jiàn)安全需求屬性不是常量,而需要實(shí)際用戶進(jìn)行描述并輸入到檢測(cè)器中。Pavlovic等對(duì)PLC的設(shè)備狀態(tài)、時(shí)序、時(shí)間、輸入輸出量等安全需求進(jìn)行了約束。本文將安全需求總結(jié)為分為以下五類,如表2所示。


第三部分 PLC代碼形式化分析與驗(yàn)證

PLC代碼采用“順序掃描,不斷循環(huán)”的工作方式,典型的PLC的工作過(guò)程包括三個(gè)不同階段:把輸入數(shù)據(jù)讀入存儲(chǔ)器、處理存儲(chǔ)器中的數(shù)據(jù)和更新輸出數(shù)據(jù)。PLC程序僅包含有限的狀態(tài)集合和有限的變量,且程序內(nèi)部不包含循環(huán),安全需求依賴于輸出變量等,所以在一定程度上形式化驗(yàn)證技術(shù)適用于PLC程序安全分析和惡意代碼檢測(cè)。

形式化分析分為定理證明和模型檢測(cè)兩種方法,定理證明過(guò)程過(guò)于復(fù)雜和冗繁,實(shí)際中利用定理證明來(lái)驗(yàn)證PLC程序正確性的研究并未得到認(rèn)可。模型檢測(cè)是一種廣泛使用的形式化方法,他更適合用于PLC代碼的驗(yàn)證,相比于傳統(tǒng)的計(jì)算機(jī)程序,對(duì)低級(jí)的PLC程序建模會(huì)更容易,因?yàn)樗臓顟B(tài)轉(zhuǎn)換系統(tǒng)相對(duì)簡(jiǎn)單。
(一)PLC形式化分析中面臨的困難

(1)PLC缺乏高級(jí)編程語(yǔ)言

PLC編程屬于低級(jí)編程語(yǔ)言且編程語(yǔ)言眾多,語(yǔ)法語(yǔ)義晦澀,采用分層尋址,地址尋址復(fù)雜,存在隱式的類型數(shù)據(jù),建模難度大,語(yǔ)言屬性易丟失。

(2)時(shí)間建模缺失

工業(yè)控制系統(tǒng)的實(shí)時(shí)性要求很高,因此對(duì)時(shí)間進(jìn)行建模極為重要,時(shí)間建模的對(duì)象應(yīng)包括定時(shí)器的累積時(shí)間、單條指令的運(yùn)行時(shí)間和執(zhí)行周期時(shí)間,由于定時(shí)器是跨循環(huán)周期的全局變量,建模時(shí)將時(shí)間考慮在內(nèi)會(huì)極大地提高建模的難度并增加檢測(cè)的時(shí)間,但不考慮時(shí)間就無(wú)法檢測(cè)出與時(shí)間相關(guān)的安全規(guī)約。

(3)物理環(huán)境建模缺失

工控系統(tǒng)與物理環(huán)境關(guān)系密切,工業(yè)控制器的輸入一般可以認(rèn)為是物理環(huán)境的輸出,輸出一般可以認(rèn)為是物理環(huán)境的輸入,構(gòu)成一個(gè)閉環(huán)回路,不考慮物理環(huán)境就無(wú)法精確地模擬出工業(yè)控制器的行為。

(4)狀態(tài)空間爆炸

PLC代碼包含的變量多,狀態(tài)空間大,對(duì)PLC代碼進(jìn)行建模分析是建立在狀態(tài)轉(zhuǎn)化基礎(chǔ)上的,如果直接進(jìn)行模型檢測(cè)會(huì)造成狀態(tài)空間爆炸的問(wèn)題。

(二)PLC代碼形式化分析

PLC代碼形式化驗(yàn)證旨在檢測(cè)出PLC代碼缺陷,防止惡意代碼的入侵。目前**形式化驗(yàn)證方式發(fā)現(xiàn)PLC代碼缺陷的研究主要集中于對(duì)PLC代碼形式化模型構(gòu)建、PLC代碼缺陷及安全需求規(guī)約描述以及PLC代碼模型檢測(cè)技術(shù)的研究。

(三)PLC控制代碼檢測(cè)的技術(shù)路線

(1)中間語(yǔ)言翻譯

由于工業(yè)控制器支持多種標(biāo)準(zhǔn)編程語(yǔ)言,且語(yǔ)法語(yǔ)義上都有較大差異,現(xiàn)有的模型檢測(cè)技術(shù)大都基于特定的編程語(yǔ)言,為了降低建模的復(fù)雜性,我們需要把PLC編程語(yǔ)言轉(zhuǎn)化成模型檢測(cè)器可以處理的中間語(yǔ)言。

Darvas等提出了將PLC程序的SCL語(yǔ)言轉(zhuǎn)化為基于NuSMV的中間模型方法,它是一種接近于自動(dòng)機(jī)模型的中間模型。McLaughlin等給出了將PLC的指令表IL語(yǔ)言代碼翻譯為基于Vine的中間語(yǔ)言ILIL的方法。Zonouz等**反編譯的方法將MC7code轉(zhuǎn)化為中間語(yǔ)言ILIL,該中間語(yǔ)言ILIL同樣使用BitBlaze二進(jìn)制分析工具Vine插件來(lái)描述。

(2) 時(shí)間模型構(gòu)建

工業(yè)控制系統(tǒng)的實(shí)時(shí)性要求很高,因此時(shí)間是很重要的建模對(duì)象。延時(shí)寄存器(On-Delay Timer,TON)用于確保PLC中實(shí)時(shí)性屬性,TON指令為PLC的輸入信號(hào)提供延遲機(jī)制。對(duì)TON計(jì)時(shí)器建模會(huì)極大地提高建模的難度并增加檢測(cè)的時(shí)間,但不考慮時(shí)間就無(wú)法檢測(cè)出與時(shí)間相關(guān)的安全規(guī)約。因此對(duì)TON計(jì)時(shí)器的形式化驗(yàn)證成為PLC代碼形式化驗(yàn)證的瓶頸之一。

近年來(lái)也有一些對(duì)TON計(jì)時(shí)器的建模研究,Masder等**早開(kāi)始這方面的研究,他們將IL程序轉(zhuǎn)換為時(shí)間自動(dòng)機(jī)模型并使用自動(dòng)機(jī)和Prometa模型兩種方式對(duì)計(jì)時(shí)器建模。Willems使用時(shí)間自動(dòng)機(jī)對(duì)TON模型建模計(jì)來(lái)解決關(guān)于TON的問(wèn)題。Wan等在定理證明器Coq中針對(duì)梯形圖語(yǔ)言對(duì)TON計(jì)時(shí)器進(jìn)行形式化驗(yàn)證,但沒(méi)有給出通用模塊的PLC程序形式化描述。Sidi在定理證明器Coq中針對(duì)指令表語(yǔ)言對(duì)TON計(jì)時(shí)器進(jìn)行形式化驗(yàn)證。

(3)模型檢測(cè)技術(shù)

模型檢測(cè)是一種廣泛使用的自動(dòng)化驗(yàn)證技術(shù),選擇合適的模型來(lái)驗(yàn)證系統(tǒng),并且**系統(tǒng)地探測(cè)建模來(lái)檢查所要驗(yàn)證的所需屬性。由于模型檢測(cè)可以自動(dòng)執(zhí)行,并能在系統(tǒng)不滿足性質(zhì)時(shí)提供反例路徑,因此在工業(yè)界比演繹證明更受推崇。模型檢測(cè)在PLC系統(tǒng)安全的驗(yàn)證方面特別有用,因?yàn)榕c傳統(tǒng)的計(jì)算機(jī)編程相比,可以更容易地將低級(jí)PLC代碼建模為狀態(tài)轉(zhuǎn)換系統(tǒng)。

目前研究中用到的模型檢測(cè)工具有很多, 如SMV、UPPAAL、SPIN等。Yoo等使用Verilog模型和CadenceSMV模型對(duì)核電站控制系統(tǒng)的PLC代碼進(jìn)行模型檢查。McLaughlin等開(kāi)發(fā)了一個(gè)TSV(Trusted Safety Verifier)工具,該工具是利用TEG(Temporal Execution Graph)圖來(lái)進(jìn)行模型檢測(cè),在原始的IL代碼對(duì)輸出變量賦值再轉(zhuǎn)換到ILII中間語(yǔ)言,依據(jù)被給的安全需求,TSV使用生成的TEG圖來(lái)決定具體的原子命題值。Zonouz等同樣利用TEG圖的方法進(jìn)行模型檢測(cè),先對(duì)線性時(shí)序邏輯規(guī)范公式進(jìn)行取反接著得到TEG-UR圖模型P,然后在模型M中搜尋滿足的路徑,**后,如果在第三步中不存在任何路徑,則可認(rèn)為原始代碼滿足安全需求,能夠安全地執(zhí)行。如果存在路徑,則可以**違反約束的路徑條件得到相應(yīng)的反例。

實(shí)際開(kāi)發(fā)的PLC程序包含的多個(gè)變量和狀態(tài)空間,執(zhí)行路徑較復(fù)雜。會(huì)遇到狀態(tài)空間爆炸的問(wèn)題。解決狀態(tài)空間爆炸問(wèn)題**有效的方法是符號(hào)執(zhí)行,McLaughlin等提出一種合并具有相同輸出的輸入來(lái)避免等價(jià)狀態(tài)生成的狀態(tài)聚合方法。Guo等提出了一種用于自動(dòng)測(cè)試PLC編程語(yǔ)言符號(hào)執(zhí)行工具SymPLC。SymPLC將PLC源代碼作為輸入,并在應(yīng)用符號(hào)執(zhí)行之前將其轉(zhuǎn)換為C語(yǔ)言,以系統(tǒng)的生成測(cè)試輸入來(lái)覆蓋每個(gè)周期任務(wù)中的所有路徑。為此,他們提出了一些PLC特定縮減技術(shù),用于識(shí)別和消除冗余。

在工業(yè)控制系統(tǒng)中,一個(gè)微小的代碼缺陷可能影響到整個(gè)工業(yè)流程遭受破壞甚至威脅到生命財(cái)產(chǎn)安全。本文圍繞著工業(yè)控制系統(tǒng)控制代碼安全展開(kāi)研究,從PLC代碼邏輯缺陷、代碼安全需求規(guī)約兩個(gè)方面對(duì)工控代碼缺陷進(jìn)行分類,并結(jié)合了現(xiàn)實(shí)中常見(jiàn)的梯形圖邏輯缺陷構(gòu)造了代碼利用場(chǎng)景,基于這些代碼邏輯缺陷實(shí)現(xiàn)了對(duì)工業(yè)控制系統(tǒng)的拒絕服務(wù)攻擊,中間人攻擊等。PLC代碼形式化驗(yàn)證是發(fā)現(xiàn)PLC代碼缺陷的一種重要且有效的方法,文章**后圍繞著如何實(shí)現(xiàn),簡(jiǎn)要從中間語(yǔ)言翻譯,時(shí)間模型構(gòu)建和模型檢測(cè)技術(shù)三個(gè)方面闡述了PLC代碼形式化驗(yàn)證的技術(shù)路線及研究進(jìn)展。



咨詢聯(lián)系方式:13861302024(楊老師)或者QQ:2589245390 還可以直接在線咨詢

了解更多的蘇州PLC編程培訓(xùn)課程

蘇州PLC編程培訓(xùn)網(wǎng)

蘇州助遠(yuǎn)教育培訓(xùn)機(jī)構(gòu)

蘇州金動(dòng)力教育培訓(xùn)中心

蘇州上元教育培訓(xùn)機(jī)構(gòu)

熱門機(jī)構(gòu)推薦
PLC編程

免費(fèi)體驗(yàn)課開(kāi)班倒計(jì)時(shí)

11: 41: 09

稍后會(huì)有專業(yè)老師給您回電,請(qǐng)保持電話暢通

咨詢電話:13013833891

本周熱門資訊

全國(guó)分站 熱門機(jī)構(gòu)

北京PLC編程培訓(xùn) 上海PLC編程培訓(xùn) 廣州PLC編程培訓(xùn) 深圳PLC編程培訓(xùn) 杭州PLC編程培訓(xùn) 蘇州PLC編程培訓(xùn) 南京PLC編程培訓(xùn) 天津PLC編程培訓(xùn) 佛山PLC編程培訓(xùn) 南寧PLC編程培訓(xùn) 長(zhǎng)沙PLC編程培訓(xùn) 重慶PLC編程培訓(xùn) 太原PLC編程培訓(xùn) 青島PLC編程培訓(xùn) 寧波PLC編程培訓(xùn) 鄭州PLC編程培訓(xùn) 西安PLC編程培訓(xùn) 廈門PLC編程培訓(xùn) 武漢PLC編程培訓(xùn) 成都PLC編程培訓(xùn) 無(wú)錫PLC編程培訓(xùn) 濟(jì)南PLC編程培訓(xùn) 昆明PLC編程培訓(xùn) 貴陽(yáng)PLC編程培訓(xùn) 揚(yáng)州PLC編程培訓(xùn) 徐州PLC編程培訓(xùn) 珠海PLC編程培訓(xùn) 合肥PLC編程培訓(xùn) 長(zhǎng)春PLC編程培訓(xùn)

義烏興元設(shè)計(jì)金華興元設(shè)計(jì)義烏上元教育如皋上元教育

申請(qǐng)?jiān)嚶?tīng)名額

已有10254人申請(qǐng)免費(fèi)試聽(tīng)

01電話咨詢 | 13013833891

QQ:1413838287
加盟合作:0755-83654572

今日已有25人申請(qǐng),本月限額500