ICS工业控制安全类方向赛题简单总结
文章目錄
- ICS工業(yè)控制安全類(lèi)賽題簡(jiǎn)述
- PLC軟件
- 國(guó)內(nèi)工業(yè)安全競(jìng)賽
- 滲透測(cè)試PT
- 逆向分析RE
- 工控協(xié)議MISC
- 工控和組態(tài)編程
- 漏洞挖掘
- 梯形圖計(jì)算
- 變量計(jì)算
- 場(chǎng)景計(jì)算
- 提供HMI不提供梯形圖
- 無(wú)梯形圖的場(chǎng)景
ICS工業(yè)控制安全類(lèi)賽題簡(jiǎn)述
之前一段時(shí)間,參加了一些工控安全的比賽,接觸到了一些工業(yè)控制系統(tǒng)相關(guān)安全內(nèi)容,有過(guò)一些學(xué)習(xí)、分析和思考。這篇文章總結(jié)了一些常見(jiàn)的工業(yè)安全比賽里的內(nèi)容,對(duì)過(guò)往知識(shí)的一些梳理和回顧,末尾對(duì)一些梯形圖上常見(jiàn)的安全場(chǎng)景具體羅列。作者本身非工控專(zhuān)項(xiàng)研究人員,如果文章有錯(cuò)誤請(qǐng)多指正。
ICS工業(yè)控制系統(tǒng)的賽題本身涉及PLC、HMI、SCADA等內(nèi)容,包含網(wǎng)絡(luò)、控制器、傳統(tǒng)PC等主體,出題面比較廣,簡(jiǎn)單可以理解為Web、Reverse、Misc等方向綜合體。從本身入門(mén)難易程度來(lái)看,入門(mén)的題目以WEB和流量分析為主,深入一些會(huì)涉及到梯形圖、固件分析、程序修改等等方面的考察。
要求掌握一定的傳統(tǒng)安全滲透技能,同時(shí)一定程度了解二進(jìn)制安全和工控系統(tǒng)。比較典型的例子是一些工控比賽中,只會(huì)傳統(tǒng)攻防的人員遇到梯形圖、SCADA系統(tǒng)無(wú)法繼續(xù),而只會(huì)PLC、SCADA編程的人員又無(wú)法在過(guò)程中突破主機(jī)或網(wǎng)絡(luò)限制。
關(guān)于隊(duì)伍人員配置。如果是標(biāo)準(zhǔn)的三人隊(duì)伍,推薦組隊(duì)的配置1名滲透人員、1名逆向人員、1名工控人員。或者1名滲透人員、2名工控人員。
PLC軟件
由于工控設(shè)備和軟件的壁壘比較高,不同的PLC只能由對(duì)應(yīng)廠商提供的軟件打開(kāi)和編輯。下面是總結(jié)的一些PLC軟件清單。
| 和利時(shí) | AutoThink |
| 臺(tái)達(dá)(AS) | ISPSoft |
| 西門(mén)子 | STEP 7 MicroWIN SMART(PLC)、S7-PLCSIM(仿真器) |
| 三菱 | GX Works:GX Developer(PLC)、GX Simulator(仿真器) |
| 歐姆龍(Omron) | CX One:CX-Programmer(PLC)、CX-Simulator(仿真器) |
| 霍尼韋爾 | Safety Manager |
| 羅克韋爾(AB) | RSLogix |
| ABB(Asea Brown Boveri) | Control Builder Plus、AC 800PEC Tool |
| 施耐德 | SoMachine |
| 步科 | KincoBuilder |
| 大連理工 | PLC Config(PLC) |
| 力控 | ForceControl |
國(guó)內(nèi)工業(yè)安全競(jìng)賽
下面是一個(gè)表格,總結(jié)了國(guó)內(nèi)工業(yè)安全競(jìng)賽的常見(jiàn)比賽形式。
| 滲透測(cè)試 | 傳統(tǒng)滲透、數(shù)據(jù)保送系統(tǒng)、數(shù)據(jù)庫(kù) | WEB服務(wù)、主機(jī)服務(wù)、數(shù)據(jù)服務(wù)等 |
| 逆向分析 | 固件分析、工控軟件逆向 | 逆向?qū)崙?zhàn),會(huì)有Arm等指令集 |
| 工控協(xié)議 | 工控流量分析、Misc 類(lèi) | Misc 流量分析,工控場(chǎng)景流量特征 |
| 工控編程 | PLC 編程、HMI 組態(tài)、RTU 編程 | 工控實(shí)際組態(tài)軟件使用,梯形圖識(shí)別與分析 |
| 漏洞挖掘 | 協(xié)議分析、Fuzz、固件分析 | 綜合各種漏洞挖掘手段,可以是固件、私有協(xié)議等 |
滲透測(cè)試PT
- 與業(yè)務(wù)場(chǎng)景高度關(guān)聯(lián),例如工業(yè)控制中,Web 端主要為顯示當(dāng)前使用場(chǎng)景中的控制參數(shù)、運(yùn)行狀態(tài)等信息,如果在內(nèi)網(wǎng)中被中間人劫持,當(dāng) HMI 顯示設(shè)備無(wú)法與 PLC 等實(shí)時(shí)運(yùn)行設(shè)備同步時(shí),系統(tǒng)會(huì)報(bào)警或出錯(cuò)。工業(yè)協(xié)議對(duì)校驗(yàn)、加密等防護(hù)手段做的不夠好,容易產(chǎn)生這類(lèi)問(wèn)題。
- 一般采用通用技術(shù)展示 Web 界面,以 windows 操作系統(tǒng)為主要平臺(tái),包括嵌入式系統(tǒng)WinCC、桌面系統(tǒng)Windows Server 2008和Windows 7 等系統(tǒng)為主,MSF在這些系統(tǒng)的突破上會(huì)是一大殺器。
- Web 滲透的同時(shí)會(huì)保留多個(gè)端口,例如 FTP、HTTPS、Telnet、SNMP、NTP 等服務(wù)端口,在 Web 滲透無(wú)法突破時(shí)可以試試其他端口。
- 為了簡(jiǎn)化問(wèn)題復(fù)雜度,有些工控場(chǎng)景一般處于直連環(huán)境,內(nèi)網(wǎng)劫持往往比較有效。但是如果內(nèi)網(wǎng)配置了靜態(tài) IP 或其他防護(hù)措施,ARP 欺騙方式等內(nèi)網(wǎng)劫持方法無(wú)法起效。
- 敏感信息泄露,配置錯(cuò)誤配置等是工控 Web 發(fā)布常見(jiàn)問(wèn)題,比如 .git, .idea, .project 等工程信息,還可能出現(xiàn)路徑遍歷、命令注入、弱口令等問(wèn)題。
逆向分析RE
- 工控操作系統(tǒng)可能為 RTOS(Real Time Operate System), 例如 vxworks、uc-os 等實(shí)時(shí)操作系統(tǒng),在逆向前需要對(duì)其架構(gòu)和指令集需要比較熟悉。
- 遇到ARM、MIPS等指令集程序的概率較高,測(cè)試環(huán)境可以通過(guò) qemu 搭建 arm 環(huán)境進(jìn)行動(dòng)態(tài)調(diào)試。
- 工控固件逆向常見(jiàn)的目標(biāo)是工控工程加密算法、硬編碼秘鑰、硬編碼后門(mén)等常見(jiàn)固件逆向漏洞,如果發(fā)現(xiàn)了堆棧溢出類(lèi)漏洞,往往能夠?qū)е履繕?biāo)設(shè)備拒絕服務(wù),對(duì)工業(yè)設(shè)備來(lái)說(shuō)非常嚴(yán)重。
- 在上位機(jī)、PLC和一些SCADA加密情況比較多,需要在第一步解壓過(guò)程對(duì)其進(jìn)行解壓或解密。也有對(duì)工程文件、編程軟件加密碼的場(chǎng)景,只有對(duì)一些特定的版本可以逆向。
工控協(xié)議MISC
- 工控協(xié)議針對(duì)工控場(chǎng)景設(shè)計(jì),具有簡(jiǎn)單、高效、低延時(shí)等特點(diǎn),協(xié)議可能沒(méi)有校驗(yàn)或者加密,針對(duì)此類(lèi)問(wèn)題完全可以考慮采用重放、劫持等簡(jiǎn)單攻擊手段。
- 工控協(xié)議包括眾多的私有協(xié)議,這部分協(xié)議具體細(xì)節(jié)需要逆向或者采集數(shù)據(jù)來(lái)實(shí)現(xiàn)數(shù)據(jù)功能的還原。
- 工控協(xié)議可能導(dǎo)致目標(biāo) PLC、DCS、RTU 等設(shè)備出現(xiàn)拒絕服務(wù),采用基于 協(xié)議Fuzz 的方法可以快速發(fā)現(xiàn)此類(lèi)問(wèn)題。
- 遇到需要區(qū)分哪些是合法請(qǐng)求、哪些是異常請(qǐng)求的場(chǎng)景,除了分析功能碼,還需要分析流量上下文。
- 除了一些工控協(xié)議,根據(jù)實(shí)際場(chǎng)景還可能有一些數(shù)據(jù)傳輸協(xié)議,比如MQTT、OPC等,都是可以讀取數(shù)據(jù)的點(diǎn)。
工控和組態(tài)編程
- 必需將工控編程邏輯和業(yè)務(wù)場(chǎng)景對(duì)應(yīng),某個(gè)bit值變量為0,對(duì)應(yīng)的操作可以是閉合也可以打開(kāi),要明白工控業(yè)務(wù)邏輯。
- 務(wù)必明確梯形圖文件是什么格式,指定格式只能用指定軟件打開(kāi)和仿真,同廠家也可能存在新舊產(chǎn)品不共用軟件的情況。
- 工控設(shè)備往往可以直接連接、上載程序、在線調(diào)試,不提供梯形圖的多半是此類(lèi)場(chǎng)景。
- 工控設(shè)備的連接方式多樣,一般采用RJ 45網(wǎng)線接口,但是也有COM串口、USB 接口等新的方式。
- 梯形圖計(jì)算最好使用仿真運(yùn)行,尤其是帶有浮點(diǎn)、類(lèi)型轉(zhuǎn)化的梯形圖,口算很難算對(duì)。如果邏輯過(guò)多,可以新建工程選出主要邏輯運(yùn)行,否則可能因?yàn)槠渌兞恐萍s無(wú)法得出結(jié)果。
漏洞挖掘
- 固件分析部分基本同逆向部分,要注意配置文件、數(shù)據(jù)輸入等不安全輸入造成的問(wèn)題。
- 私有協(xié)議測(cè)試需要自己編寫(xiě)收發(fā)包,或者用協(xié)議Fuzz工具。
- 注意工控設(shè)備對(duì)時(shí)效性和魯棒性都要求較高,一些安全問(wèn)題會(huì)更嚴(yán)重,比如拒絕服務(wù)場(chǎng)景。
梯形圖計(jì)算
梯形圖問(wèn)題設(shè)置的意義,在于攻擊者拿到HMI或者工程主機(jī),如何進(jìn)一步破壞工業(yè)系統(tǒng)。比如震網(wǎng)病毒,就是修改了很小一點(diǎn)的內(nèi)容,不易被覺(jué)察,最后導(dǎo)致設(shè)備損壞。看懂梯形圖,能理解邏輯,并且能修改就成了關(guān)鍵的技能技術(shù)。
變量計(jì)算
梯形圖基礎(chǔ)是要識(shí)別符號(hào)。不同的廠家的PLC符號(hào)不盡相同,有的額是縮寫(xiě),有的是符號(hào),需要具體對(duì)待,一般在PLC編程軟件的幫助中帶有相應(yīng)的指令說(shuō)明。下面列舉一些相對(duì)通用的指令,太過(guò)復(fù)雜的也不適合出計(jì)算題:
| ADD | + | 加 |
| SUB | - | 減 |
| MUL | * | 乘 |
| DIV | / | 除 |
| -| |- | 關(guān)閉 | |
| -|/|- | 打開(kāi) | |
| OR | 或 | |
| AND | 與 | |
| MOV | 賦值 |
最佳的計(jì)算方法是使用仿真器運(yùn)行程序,監(jiān)視變量得到運(yùn)行結(jié)果。
不涉及精度和位運(yùn)算的數(shù)據(jù)轉(zhuǎn)化的簡(jiǎn)單梯形圖可以手算。
復(fù)雜功能需要分析簡(jiǎn)化,否則可能在仿真器中運(yùn)行不起來(lái)。最好可以新建一個(gè)工程,只取出相關(guān)的邏輯。
場(chǎng)景計(jì)算
梯形圖場(chǎng)景計(jì)算是比較常見(jiàn)的真正工控內(nèi)容的題目,題目會(huì)給出一段程序和程序背景敘述,最終求得某一個(gè)業(yè)務(wù)邏輯運(yùn)行后的結(jié)果。
這種問(wèn)題一般都會(huì)涉及到變量計(jì)算、時(shí)鐘周期等。需要結(jié)合描述搞清楚控制邏輯是怎么實(shí)現(xiàn)的,哪幾個(gè)變量是開(kāi)關(guān)變量等。最后通過(guò)手動(dòng)計(jì)算或者仿真運(yùn)行得到運(yùn)行結(jié)果。
提供HMI不提供梯形圖
需要上載、控制梯形圖的場(chǎng)景。
一般出現(xiàn)在工業(yè)滲透場(chǎng)景或者線下實(shí)戰(zhàn),PLC中確定有相應(yīng)程序的情況。
獲取梯形圖的時(shí)候,可以用HMI上的組態(tài)軟件連接PLC,然后進(jìn)行程序上載,獲取相應(yīng)的梯形圖。
控制梯形圖一般是對(duì)一些開(kāi)關(guān)開(kāi)閉互轉(zhuǎn),完成對(duì)一些變量的控制,從而控制機(jī)器做出相應(yīng)的動(dòng)作,邏輯一般不會(huì)太復(fù)雜。
編輯完成后需要編譯程序,然后下載到PLC后運(yùn)行程序。
具體邏輯本的分析原則和方法參考上一部分。
無(wú)梯形圖的場(chǎng)景
一般出現(xiàn)在工業(yè)滲透場(chǎng)景或者線下直接連接設(shè)備的實(shí)戰(zhàn)場(chǎng)景,這時(shí)PLC中可能會(huì)存在沒(méi)有程序的情況,屬于難度較高的一類(lèi)場(chǎng)景。
相對(duì)來(lái)說(shuō)不會(huì)太過(guò)復(fù)雜,可能要分析工藝流程之后,設(shè)計(jì)控制邏輯。一般是參考HMI的組態(tài)圖之后,自行設(shè)計(jì)一個(gè)簡(jiǎn)單的梯形圖實(shí)現(xiàn)功能。可能的話,一些編程軟件中攜帶的示例程序改改就可以運(yùn)行。
總結(jié)
以上是生活随笔為你收集整理的ICS工业控制安全类方向赛题简单总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Django中的class Meta知识
- 下一篇: HelloCsdn