1.一種基于狀態(tài)關(guān)系圖的PLC漏洞挖掘方法,本發(fā)明主要包括狀態(tài)關(guān)系圖生成模塊、壞數(shù)據(jù)注入攻擊模塊、PLC漏洞判斷模塊。
2.根據(jù)權(quán)利要求1所述的狀態(tài)關(guān)系圖生產(chǎn)模塊,其特征在于在PLC正常運行過程中,對PLC的輸入映像區(qū)和輸出鎖存區(qū)注入壞數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的壞數(shù)據(jù)注入攻擊模塊,其特征在于在壞數(shù)據(jù)注入攻擊后,會導(dǎo)致輸入映像區(qū)、程序處理區(qū)和輸出鎖存區(qū)的數(shù)據(jù)產(chǎn)生差異,通過數(shù)據(jù)之間的邏輯關(guān)系,引發(fā)數(shù)據(jù)之間的關(guān)聯(lián)故障。
4.根據(jù)權(quán)利要求1所述的PLC漏洞判斷模塊,其特征在于包括以下步驟:
步驟1:采集輸入數(shù)據(jù),采集所有輸入端子的數(shù)據(jù);
步驟2:根據(jù)所采集的輸入數(shù)據(jù),生成某時刻的輸入狀態(tài)圖;
步驟3:采集輸出數(shù)據(jù),采集所有輸出端子的數(shù)據(jù);
步驟4:根據(jù)所采集的輸出數(shù)據(jù),生成某時刻的輸出狀態(tài)圖;
步驟5:根據(jù)輸入和輸出的邏輯狀態(tài)關(guān)系圖判斷此時刻的輸入狀態(tài)和輸出狀態(tài)是否符合邏輯關(guān)系,若符合則回到步驟1,因為PLC的工作流程是周而復(fù)始地進行,所以開始新一輪的數(shù)據(jù)采集,若不符合則繼續(xù)進行PLC漏洞判斷;
步驟6:輸入映像區(qū)攻擊判斷,因為輸入映像區(qū)的數(shù)據(jù)和狀態(tài)是PLC直接由輸入端子順序存入,若輸入端子的狀態(tài)和輸入映像區(qū)的狀態(tài)不一致,則可以判定存在輸入映像區(qū)攻擊,若一致則進行步驟7,輸出鎖存區(qū)攻擊判斷;
步驟7:輸出鎖存區(qū)攻擊判斷,因為輸出端子的數(shù)據(jù)和狀態(tài)是由輸出鎖存區(qū)直接輸出處理,若輸出端子的狀態(tài)和輸出鎖存區(qū)的狀態(tài)不一致,則可以判定存在輸出鎖存區(qū)攻擊,若一致則判定攻擊存在于程序處理區(qū)。