0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見的可編程邏輯器件攻擊

jf_78858299 ? 來源:計(jì)算機(jī)與網(wǎng)絡(luò)安全 ? 作者:徐震 周曉軍 ? 2023-03-24 14:11 ? 次閱讀

PLC(Programmable Logic Controller,可編程邏輯器件)是關(guān)鍵基礎(chǔ)設(shè)施中的基礎(chǔ)控制設(shè)備,其安全性涉及到整個(gè)控制系統(tǒng)的穩(wěn)定運(yùn)行。但是,隨著兩化融合的不斷加深以及工業(yè)4.0的推進(jìn),工業(yè)控制系統(tǒng)在提高信息化水平的同時(shí),其信息安全問題也日益突出。PLC遭受黑客攻擊的途徑也日益翻新,各種木馬和病毒變體數(shù)量不斷攀升,威脅工業(yè)控制系統(tǒng)的安全穩(wěn)定運(yùn)行和人員生命財(cái)產(chǎn)安全。本文通過介紹常見的幾種PCL遭受攻擊的途徑,為工業(yè)控制系統(tǒng)安全敲響警鐘。

隨著技術(shù)的不斷進(jìn)步,PLC在向著智能化的方向發(fā)展,接口數(shù)量和類型越來越多,功能也日益豐富。目前的PLC一般都是基于裁剪后的嵌入式系統(tǒng),同時(shí)將原來位于串行鏈路上的通信協(xié)議轉(zhuǎn)移到TCP/IP之上,為黑客實(shí)施攻擊提供了便捷的途徑。

一、通過嵌入式系統(tǒng)漏洞實(shí)施攻擊

PLC采用的大多是經(jīng)過裁剪的實(shí)時(shí)操作系統(tǒng)RTOS),比如Linux RT、QNX、Lynx、VxWorks等。這些操作系統(tǒng)廣泛的應(yīng)用于通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求較高的領(lǐng)域中。但是其安全問題不容忽視。常見的PLC使用的操作系統(tǒng)如表1所示。

圖片

表1 常用PLC的操作系統(tǒng)

Beresford等指出,Simatic PLC運(yùn)行在x86 Linux系統(tǒng)之上,那就意味著如果插入一段載荷,就可以對(duì)shell進(jìn)行爆破并連接到該設(shè)備。尤其需要注意的是PLC上運(yùn)行的所有程序都是以root權(quán)限運(yùn)行的,一旦被攻擊者攻入,后果非常嚴(yán)重。如圖1所示:

圖片

圖1 對(duì)shell系統(tǒng)的爆破

西門子、施耐德的多款PLC設(shè)備軟件搭載在VxWorks系統(tǒng)上運(yùn)行,wdbrpc是VxWorks的遠(yuǎn)程調(diào)試端口,以UDP方式進(jìn)行通信,端口號(hào)為17185。該協(xié)議基于sun-rpc,提供的服務(wù)主要用于支持系統(tǒng)遠(yuǎn)程通過集成開發(fā)環(huán)境Tornado交互(如圖2)。根據(jù)燈塔實(shí)驗(yàn)室公布的資料,黑客可以通過wdbrpc協(xié)議dump全部內(nèi)存空間數(shù)據(jù),找到內(nèi)存中的所有ftp、telnet登錄密碼,進(jìn)一步可以實(shí)現(xiàn)的攻擊有:篡改bootline繞過登錄驗(yàn)證、Dump內(nèi)存數(shù)據(jù)從中抓取登錄密碼等。通過攻擊嵌入式實(shí)時(shí)操作系統(tǒng)進(jìn)而控制PLC的正常運(yùn)行。

圖片

圖2 Tornado開發(fā)環(huán)境與VxWorks系統(tǒng)圖

二、通過PLC通信協(xié)議漏洞實(shí)施攻擊

一般常見工控協(xié)議中包含了大量的命令字,如讀取、寫入數(shù)據(jù)等,然而其中一部分高級(jí)或協(xié)議約定的自定義功能往往會(huì)給用戶安全帶來更多的威脅,如Modbus協(xié)議的從機(jī)診斷命令將會(huì)造成從機(jī)設(shè)備切換到偵聽模式、CIP協(xié)議某些命令字還能導(dǎo)致設(shè)備直接重啟、S7協(xié)議的STOP CPU功能將會(huì)導(dǎo)致PLC程序運(yùn)行停止,在大多數(shù)的情況下用戶在上位機(jī)進(jìn)行組態(tài)時(shí)僅會(huì)使用協(xié)議的某些讀取數(shù)據(jù)功能和固定范圍、固定地址的寫數(shù)據(jù)功能,而協(xié)議棧上更多的功能則不會(huì)應(yīng)用于系統(tǒng)集成中。

Langner等指出不需要控制系統(tǒng)內(nèi)部知識(shí),不需要編程技巧就可以實(shí)現(xiàn)一次攻擊。利用S7協(xié)議漏洞,注入代碼到組態(tài)OB1(相當(dāng)于main函數(shù))之前,這樣PLC在每次掃描之前都會(huì)首先執(zhí)行惡意代碼,并可以通過調(diào)用BEC(block end condition)指令,隨時(shí)終止合法代碼的運(yùn)行。就Stuxnet而言,終止條件是基于時(shí)間和工業(yè)過程。

Meixell等指出,簡單的串口協(xié)議(比如Modbus 和DNP3)已經(jīng)被包含在IP數(shù)據(jù)報(bào)內(nèi),攻擊者僅僅構(gòu)造一個(gè)基于IP的控制數(shù)據(jù)包并發(fā)送給PLC就可以造成嚴(yán)重的后果。以Modbus協(xié)議為例,其常用主要功能碼如下表2所示:利用功能碼0x05就可以將所有的寄存器置1,打開所有的閥門。

圖片

表2 Modbus數(shù)據(jù)包結(jié)構(gòu)及主要功能碼

Tzokatziou等指出,由于PLC通信協(xié)議是明文傳輸,而且對(duì)于通信對(duì)象沒有認(rèn)證過程。因此攻擊者可以利用CoDeSys 系統(tǒng),直接和PLC進(jìn)行連接,捕獲兩者之間的通信的數(shù)據(jù)包,然后直接給PLC發(fā)送篡改后的控制指令,達(dá)到任意啟停PLC的操作。

三、通過PLC軟件漏洞實(shí)施攻擊

PLC的軟件系統(tǒng)包括系統(tǒng)監(jiān)控軟件和用戶組態(tài)軟件,前者用于監(jiān)視控制器本身的運(yùn)行,后者用于編寫用戶程序。以西門子(Siemens)PLC為例,STEP 7 編程軟件用于PLC的編程、參數(shù)設(shè)置和在線調(diào)試,而WinCC則主要用于過程監(jiān)視。

典型的攻擊案例是2010年的“震網(wǎng)”病毒攻擊伊朗核電站事件?!罢鹁W(wǎng)”病毒除了利用windows操作系統(tǒng)的4個(gè)0-day漏洞,還利用了西門子WinCC中的兩個(gè)漏洞:

(1)WinCC系統(tǒng)中存在一個(gè)硬編碼漏洞,保存了對(duì)訪問數(shù)據(jù)的默認(rèn)賬戶名和密碼,Stuxnet利用這一漏洞嘗試訪問該系統(tǒng)的SQL數(shù)據(jù)庫;

(2)在WinCC需要使用的Step7工程中,打開工程文件時(shí),存在DLL加載策略上的缺陷,從而導(dǎo)致一種類似于“DLL預(yù)加載攻擊”的利用方式。然后Stuxnet通過使用自身的s7otbxsx.dll替換Step7軟件中的s7otbxsx.dll,實(shí)現(xiàn)對(duì)一些查詢、讀取函數(shù)的額Hook。

其他的攻擊途徑包括攻擊人機(jī)交互界面(HMI),使得操作員失去視圖。典型的攻擊案例是2015年的烏克蘭電網(wǎng)攻擊事件。攻擊者取得工作站節(jié)點(diǎn)的控制權(quán),獲取與操作員一致的操作界面和操作權(quán)限,通過遠(yuǎn)程控制對(duì)PLC進(jìn)行開關(guān)控制或改變運(yùn)行參數(shù),從而引起電網(wǎng)故障或者斷點(diǎn)。燈塔實(shí)驗(yàn)室指出[8],Unity Pro是施耐德系列PLC的編程軟件,Unity Pro 附帶的OSLoader軟件可以完成PLC的操作系統(tǒng)固件升級(jí)。OSLoader登錄設(shè)備后會(huì)嘗試遠(yuǎn)程讀取文件系統(tǒng),這樣即可實(shí)現(xiàn)遠(yuǎn)程上傳下載,攻擊者可以通過替換固件的方式輕松讓PLC宕機(jī)。

四、通過PLC互連實(shí)施攻擊

當(dāng)前的工業(yè)控制網(wǎng)絡(luò)朝著“一網(wǎng)到底”的方向發(fā)展,工業(yè)控制系統(tǒng)橫向和縱向連接更加緊密:業(yè)務(wù)層可以直接訪問控制層的數(shù)據(jù),甚至對(duì)設(shè)備進(jìn)行控制;同一層次內(nèi)的設(shè)備由于相互間的協(xié)作工作而聯(lián)結(jié)在一起。對(duì)于PLC而言,由于PLC主要用于過程控制,而生產(chǎn)流程往往由諸多控制過程組成,因此需要多個(gè)PLC協(xié)同工作,共同完成某項(xiàng)生產(chǎn)任務(wù)。

圖片

圖3 利用人機(jī)交互界面攻擊PLC過程

Radvanovsky等指出,美國啟動(dòng)的SHINE(SHodan Intelligence Extraction)項(xiàng)目是為了提取關(guān)于可以從互聯(lián)網(wǎng)訪問的SCADA和ICS設(shè)備的信息(尤其是PLC和RTU)。SHODAN搜索引擎是通過搜索常用的TCP/UDP端口來工作的,如表3:

圖片

表3 常用協(xié)議及端口對(duì)照表

Newman指出,監(jiān)獄中控制室值班通過在線瀏覽圖片和電影引入病毒和蠕蟲。一些監(jiān)獄為犯人提供上網(wǎng)服務(wù),雖然不和監(jiān)獄控制和監(jiān)視系統(tǒng)直接連接,但是也是一個(gè)可攻入的脆弱點(diǎn)。還要監(jiān)獄的巡邏車,使用的是無線信號(hào),需要連接監(jiān)獄網(wǎng)絡(luò)上傳數(shù)據(jù),也是一個(gè)攻擊入口。

Klick在2015 USABlackHat上指出,PLC缺乏安全機(jī)制,通??梢陨蟼鞔a到這些面向互聯(lián)網(wǎng)的PLC,利用這些PLC作為網(wǎng)關(guān),滲透生產(chǎn)網(wǎng)絡(luò),甚至是公司IT網(wǎng)絡(luò)。Kclik利用PLC編程語言STL編寫端口掃描器和SOCKS代理,然后利用感染的PLC去掃描本地網(wǎng)絡(luò),并將其作為網(wǎng)關(guān),從而連接與其相連的其他PLC甚至滲透到公司業(yè)務(wù)網(wǎng)絡(luò),如圖4所示:

圖片

圖4 公司內(nèi)系統(tǒng)層級(jí)圖

McLaughlin設(shè)計(jì)了一款針對(duì)PLC的惡意軟件,能夠生成動(dòng)態(tài)數(shù)據(jù)包載荷,攻擊者使用這個(gè)工具,可以不用提前對(duì)控制系統(tǒng)有先驗(yàn)知識(shí)就可以實(shí)施攻擊,極大的降低了攻擊PLC的門檻。首先利用生成的載荷感染一個(gè)到多個(gè)主機(jī),然后進(jìn)行工業(yè)過程分析,接著對(duì)二進(jìn)制文件進(jìn)行解碼,最后對(duì)生成的載荷進(jìn)行裁剪,上傳到PLC并運(yùn)行,具體過程如圖5所示:

圖片

圖5 動(dòng)態(tài)生成惡意載荷過程

McLaughlin在另一篇文章中開發(fā)了一種自動(dòng)生成PLC載荷的工具—Sabot,自動(dòng)識(shí)別PLC邏輯控制,并生成惡意的PLC代碼,具體過程如圖6所示:

圖片

圖6 Sabot攻擊過程示意圖

Spenneberg等在2016 Asia BlackHat上西門子SIMATICA S7-1200為例,展示了一款專門在PLC上存活的蠕蟲。此蠕蟲不需要依賴于PC電腦去擴(kuò)散,僅僅活躍并運(yùn)行于PLC中,通過網(wǎng)絡(luò)掃描來發(fā)現(xiàn)新的目標(biāo)(PLC),然后攻擊這些目標(biāo)并將復(fù)制自身到新的PLC中,而且受感染的PLC主程序不會(huì)發(fā)生任何改變。從而可以做到目標(biāo)發(fā)現(xiàn),攜帶惡意載荷等攻擊手段。而且,清除這些蠕蟲非常困難,目前只能通過恢復(fù)出廠設(shè)置或者復(fù)寫蠕蟲所在的功能塊(Function Block)。感染過程如圖7所示:

圖片

圖7 蠕蟲感染PLC過程

代碼的執(zhí)行過程如圖8所示:

圖片

圖8 蠕蟲惡意代碼執(zhí)行過程

綜上所述,PLC的安全態(tài)勢不容樂觀,針對(duì)PLC的攻擊路徑比較多,而且攻擊層次在逐漸深入,要做好PLC的安全防護(hù)任重道遠(yuǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5004

    文章

    13050

    瀏覽量

    460917
  • 可編程邏輯器件
    +關(guān)注

    關(guān)注

    5

    文章

    136

    瀏覽量

    30272
  • 工業(yè)4.0
    +關(guān)注

    關(guān)注

    48

    文章

    1975

    瀏覽量

    118402
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    可編程邏輯器件

    可編程邏輯器件到底是干什么用的呢,簡單的說,就是通過重新寫程序,重新注入到這個(gè)器件中達(dá)到實(shí)現(xiàn)其它的功能。最常見的當(dāng)屬電腦了。電腦本身除了加法,減法和簡單的邏輯運(yùn)算四種。比如要是想實(shí)現(xiàn)一
    發(fā)表于 04-15 10:02

    可編程邏輯器件是如何發(fā)展的?

    可編程邏輯器件是如何發(fā)展的?
    發(fā)表于 04-29 06:23

    PLD可編程邏輯器件

    PLD可編程邏輯器件 英文全稱為:programmable logic device 即 PLD。PLD是做為一種通用集成電路產(chǎn)生的,他的邏輯功能按照用戶對(duì)器件編程來確定。一般的PLD
    發(fā)表于 07-22 09:05

    可編程邏輯器件設(shè)計(jì)

    可編程邏輯器件設(shè)計(jì) (264頁,nlc格式)
    發(fā)表于 03-25 16:41 ?66次下載

    可編程邏輯器件基礎(chǔ)及應(yīng)用實(shí)驗(yàn)指導(dǎo)書

    可編程邏輯器件基礎(chǔ)及應(yīng)用實(shí)驗(yàn)指導(dǎo)書 《可編程邏輯器件基礎(chǔ)及應(yīng)用》是一門側(cè)重掌握可編程邏輯器件的基本結(jié)構(gòu)和原理的課程。重點(diǎn)是使學(xué)生掌握基于可編程
    發(fā)表于 03-24 14:22 ?29次下載

    什么是PLD(可編程邏輯器件)

    什么是PLD(可編程邏輯器件) PLD是可編程邏輯器件(Programable Logic Device)的簡稱,F(xiàn)PGA是現(xiàn)場可編程門陣列(Field Programable Gate Array)
    發(fā)表于 06-20 10:32 ?2.4w次閱讀
    什么是PLD(<b class='flag-5'>可編程邏輯器件</b>)

    EDA技術(shù)與應(yīng)用(可編程邏輯器件)

    7.1 可編程邏輯器件的基本原理 7.2 可編程邏輯器件的設(shè)計(jì)技術(shù) 7.3 可編程邏輯器件編程與配置
    發(fā)表于 05-23 10:46 ?142次下載
    EDA技術(shù)與應(yīng)用(<b class='flag-5'>可編程邏輯器件</b>)

    可編程邏輯器件FPGA/CPLD結(jié)構(gòu)與應(yīng)用

    可編程邏輯器件FPGA/CPLD結(jié)構(gòu)與應(yīng)用
    發(fā)表于 12-11 23:38 ?0次下載

    可編程邏輯器件(書皮)

    可編程邏輯器件(書皮)
    發(fā)表于 07-10 14:34 ?0次下載

    可編程邏輯器件原理、開發(fā)與應(yīng)用

    可編程邏輯器件原理、開發(fā)與應(yīng)用
    發(fā)表于 09-19 16:04 ?19次下載
    <b class='flag-5'>可編程邏輯器件</b>原理、開發(fā)與應(yīng)用

    可編程邏輯器件PLD課件下載

    可編程邏輯器件PLD課件下載
    發(fā)表于 08-13 10:58 ?31次下載

    可編程邏輯器件EPLD是如何設(shè)計(jì)的

    可編程邏輯器件(Electrically Programmable Logic Device,EPLD)是指采用電信號(hào)的可擦可編程邏輯器件。
    發(fā)表于 08-22 18:12 ?1313次閱讀

    可編程邏輯器件的結(jié)構(gòu)

    常見可編程邏輯器件分為FPGA、EPLD(CPLD)。下面簡單介紹兩類器件的結(jié)構(gòu)和區(qū)別。
    的頭像 發(fā)表于 03-24 14:18 ?1084次閱讀
    <b class='flag-5'>可編程邏輯器件</b>的結(jié)構(gòu)

    可編程邏輯器件測試

    可編程邏輯器件 (Programmable Loeie Device,PLD)是一種用戶編程實(shí)現(xiàn)某種邏輯功能的邏輯器件,主要由
    發(fā)表于 06-06 15:37 ?627次閱讀
    <b class='flag-5'>可編程邏輯器件</b>測試

    什么叫可編程邏輯器件 可編程邏輯器件有哪些特征和優(yōu)勢?

    可編程邏輯器件(Programmable Logic Device,PLD)是一類集成電路器件,可以根據(jù)用戶的需求進(jìn)行編程和配置,以實(shí)現(xiàn)特定的邏輯功能。它們具有
    發(fā)表于 09-14 15:25 ?2489次閱讀