当前位置: 首页 > news >正文

Mitsubishi GX Works3 / GOT3 的惡意工程混淆邏輯注入攻擊

威脅揭露:https://github.com/MartinxMax/GOT3-exploit

GOT3 中的潛在安全問題

觸控螢幕上的部署頁面將上燈連接至 Y22下燈連接至 Y12

image.png
在 GX3 中,畫了一個簡單的控制畫面:

image-1.png

那麼,你覺得哪一個燈會亮起?

image-2.png


如果你認為會亮起的是 Y22 的燈 ——
你已經掉進陷阱了!

image-3.png

為什麼會這樣???

這個問題涉及到 GX 與 GT 間資料的讀寫方式差異

GX 中,Y 輸出使用的是 八進位制(octal)地址

image-4.png

但在 GT(GOT) 中,Y 的資料是以 十六進位制(hex)處理
攻擊者可以利用這個差異,將惡意程式碼包裝在「不可偵測的外殼」中。

image-5.png

用計算驗證結果一樣。

image-6.png


利用 GOT3 特性修改原始專案圖檔,繞過管理者審核

模擬場景:一個內部使用的機密等級污水處理設施。僅有程式編輯部門的機器連網,但內網與設備隔離,無法由編程機橫向滲透。

  • 事件 1:內部程式團隊完成 PLC 程式,交給技術主管審核,確認無誤後燒錄。
  • 事件 2:你已控制了程式部門某台機器,並取得源碼程式。
  • 事件 3:你只能修改 GOT3 專案
功能區域設備/訊號名稱類型地址(八進位)說明
進水段低水位DI 輸入X000水位開關,低水位警報
高水位DI 輸入X001高水位啟動水泵
進水泵DO 輸出Y000控制啟動/停止
格柵池格柵啟動按鈕DI 輸入X002手動啟動格柵電機
格柵運行回訊DI 輸入X003設備狀態反饋
格柵電機輸出DO 輸出Y001控制啟動/停止
沉砂池刮泥機啟動按鈕DI 輸入X004手動控制
刮泥機運行狀態回訊DI 輸入X005狀態反饋
刮泥機輸出DO 輸出Y002控制啟動/停止
初沉池進出水閥DO 輸出Y003控制電動閥
液位檢測DI 輸入X006液位開關
生化池溶氧儀AI 輸入D100溶氧濃度偵測(類比)
鼓風機DO 輸出Y004控制啟動/停止
攪拌機控制DO 輸出Y005控制啟動/停止
攪拌機運行狀態回訊DI 輸入X007設備回饋
二沉池污泥泵啟動按鈕DI 輸入X010手動啟動
污泥泵DO 輸出Y006控制啟動/停止
污泥泵啟動按鈕DI 輸入X011手動啟動
污泥泵DO 輸出Y007控制啟動/停止
加藥系統pH 感測器AI 輸入D101偵測 pH 值
絮凝劑泵DO 輸出Y010加藥控制
pH 調整泵DO 輸出Y011控制 pH 加藥
消毒劑泵DO 輸出Y012控制消毒加藥
消毒段消毒液液位檢測DI 輸入X012液位警報
消毒啟動按鈕DI 輸入X013手動啟動
消毒泵DO 輸出Y013控制啟動/停止
警報系統故障警報輸入DI 輸入X014設備異常警報
警報輸出DO 輸出Y014聲光警報

原始圖檔

警報功能運作正常。
加藥啟動:XB ⇒ X13
警報:XC ⇒ X14

image-7.png

image-10.png


加入加藥功能

加藥輸出:YA ⇒ Y12
警報輸出:YC ⇒ Y14

image-8.png

image-9.png


「無法察覺」的惡意專案與混淆邏輯,繞過管理者審查

劫持急停按鈕

完全禁用急停功能。

  1. 確認程式中加藥輸出 Y12 的邏輯:

image-11.png
2. 確認程式中警報輸出 Y14 的邏輯:

image-12.png

  1. 因為我們無法修改梯形圖邏輯,所以修改 GOT 畫面:

將急停按鈕綁定到 0x14

image-13.png

  1. 惡意的 Main.GTX 專案 交給工程部門:

消毒正常啟動:

image-14.png

急停失效:

image-15.png


破壞性滲透

若可修改 Main.gx3,那麼按下急停後會反而持續進行加藥/消毒

我們已將警報控制綁定到 0x14,在梯形圖中對應 Y24

因此將 X24 加入 OR 邏輯控制加藥:

image-16.png

image-17.png
管理員審查時,只看到控制來自 X14,容易誤以為是合法邏輯:

image-20.png

備註:實際上這完全不是真正的急停目標。

正常啟動消毒:

image-18.png

急停已被替換,加藥仍然持續進行

image-19.png

WHO R U ?
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣶⣶⣾⣿⣿⣿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠷⠾⠿⠶⠶⠶⠿⣷⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣴⡶⠿⠟⠛⠛⠛⠻⠭⠭⠤⠤⠤⠒⠒⠛⠛⠉⢉⣉⣉⣉⡉⠉⠉⠓⠲⠤⣄⡀⠀⠀⠀⠀⠀⠈⠻⢿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⣴⡾⠟⠉⠁⠔⠊⠛⠓⠒⠒⠢⠤⠤⠤⠶⠶⠖⠒⠛⠉⠉⠉⠉⢉⣉⣉⠉⠙⠓⠲⢤⣄⡉⠲⢤⡀⠀⠀⠀⠀⠈⢻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣾⡿⠋⠀⠀⠀⠀⣀⡤⠔⠒⠒⠒⠒⠲⠦⠤⠀⠀⠀⠀⠀⠀⠀⣠⠂⠀⠀⠀⠈⠉⠉⠓⠒⠤⣍⠳⢤⡈⠒⢄⡀⠀⠀⠀⢻⣿⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢠⣿⠀⠀b⠀⠀⠀⡐⠁⠀⠀⠀⠀⠀⠀⠀⠢⡀⠀⠀⠀⠀p⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢆⠙⠢⡀⠀⠀⠀t⠀⠀⢻⣷⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢀⣾⡟⠀⠀⠀⠀⠀⠁⠀⢀⣀⣀⣀⣀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⠿⢿⣿⣿⣿⣿⣶⣦⣀⠀⠀⠀⠀⠀⠀o⠀⠀⠀⠀⠻⣷⡄⠀⠀⠀⠀⠀
⠀⢀⣴⡿⠋⣀⣀⣀⠀⠤⢄⢠⣾⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⡀⠀⠀⠀⠀⣴⣿⠏⠉⣀⣠⣼⣿⣿⣿⣿⣿⣭⣿⣧⠀⢠⣤⡄⠀⠀⢀⣴⣶⣢⡿⢿⣶⣄⠀⠀⠀
⢠⣿⠟⡡⠚⣉⠄⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠛⠛⠻⢿⣿⠿⠛⠀⠀⠀⠀⠻⢿⣶⡾⠟⠛⠉⠉⢠⣄⡀⠉⠉⠉⠉⠀⠃⣀⣤⣤⣶⣶⣤⣤⡀⠈⠙⠪⠻⣷⡄⠀
⣿⡿⡸⠁⡏⢠⣶⣾⣿⣶⣶⣤⡀⢀⣀l⡀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀i⠀⠈⠻⢿⣶⣤⣤⣤⣶⣾⠿⠟⠉⣴⠀⠀⠉⠻⣷⡀⠀⢁⠘⣿⡆
⣿⡇⡇⠀⡇⠈⠀⠀⢠⣆⠈⠿⠿⠿⠟⠀⠀⠀⢀⣴⡿⠟⠀⠀⠀i⠀⠀⠀⠀⣀⣀⣀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣿⣧⣀⠀⠀⢹⣿⠀⢸⠀⢸⣿
⠘⣿⣧⠀⠳⠄⠀⠀⣾⣿⠀⠀⠀⠀⠀⢀⣠⣾⣿⠋⠀⠀⠀⠀⠀⠀⣀⣀⣈⡙⠛⢻⣧⠓⠲⠖⠒⠢⠀⠀⢀⣀⣤⣶⣾⠟⠋⠉⢹⣿⠿⣷⡆⣸⡿⠀⡘⠀⢸⣿
⠀⠙⣿⡝⠒⢤⠀⣼⣿⣿⣤⡀⠀⠤⠚⠉⠘⠋⠛⣷⣄⠀⠀⡀⠀⠚⠿⠟⠛⠟⢠⣿⠇⠀⠀⣀⣠⣴⣶⣿⡿⢿⣿⠉⠀⠀⢀⣠⣿⡏⠀⠀⠀⡿⠁⢠⠇⢠⣿⠇
⠀⠀⢹⣿⡄⠀⢀⣿⣿⡿⢻⣿⣷⣦⣄⣀⡀⠀⠀⠈⠛⢿⠿⠃⠀⠀⠀⣀⣀⣠⣤⣴⣶⣾⠿⠟⠛⠉⠁⠀⢀⣾⣿⣤⣶⣾⣿⣿⠟⠁⠀⠀⠀⠤⠒⢉⣴⡿⠋⠀
⠀⠀⠀⣿⣇⠀⢸⣿⣿⡇⣼⡟⠈⠙⣿⡟⠿⠿⣿⣶⣶⣶⣶⠾⠿⣿⡿⠟⠛⠛⠋⠉⠹⣿⡄⠀⣀⣠⣤⣶⣿⣿⣿⠟⠉⣰⣿⠋⠀⠀⠀⠀⠀⢐⣾⡿⠋⠀⠀⠀
⠀⠀⠀⢹⣿⠀⢸⣿⣿⣷⣿⣿⣀⣸⣿⣁⣀⠀⠀⢸⣿⠁⠀⠀⠀⣿⡇⠀⠀⢀⣀⣀⣤⣿⣿⣿⣿⣿⠿⠛⠉⢿⣇⣀⣴⡿⠁⠀⠀⠀⠀⠀⢠⣿⠟⠀⠀⠀⠀⠀
⠀⠀⠀⢸⣿⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢿⣿⠋⠉⠀⠀⠀⠀⢘⣿⣿⠏⠀⠀⠀⠀e⠀⠀⠀⣼⡏⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢸⡏⠀⠀⢹⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⡿⠛⠉⠁⠀⠀⠈⢿⣧⠀⠀⢀⣠⣾⡿⠛⠁⠀⠀⠀⠀⠀⠀⢀⣼⡟⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣿⡇⠀⠀⠈⢿⣧⣿⡇⢹⣿⡄⠹⣿⡄⠀⠈⢿⣇⠀⠀⠀⠀⢸⣷⠀⠀⠀⠀⠀⠀⢈⣿⣷⣾⡿⠟⠉⠀⠀⡀⠀⠀⢀⠀⢀⣴⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣿⡇⠀⠀c⠀⠈⠻⠿⣷⣶⣿⣷⣤⣿⣿⣄⣀⣘⣿⣀⣀⣀⣀⣸⣿⣤⣤⣤⣶⣶⣿⠿⠟⠋⠁⣀⡤⠖⢋⣩⡴⠞⢉⣤⣾⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢰⣿⠀⠀⢀⠀⠀⠠⡀⠀⠈⠉⠉⠙⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠉⠉⠁⠀⣀⡤⠖⢋⣡⡴⠞⠋⣡⣤⣾⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⣿⠀⠀⠸⡀⠀⠀⠙⠶⣤⣀⣀⠀⠀⠈⠉⠉⠉⠉⠉⠉⢉⠉⣁⣀⣀⡀⠤⠖⣚⣩⠥⠖⠛⠉⣁⣤⣶⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⣿⠀⠀⠀⠉⠲⢤⣄⣀⡀⠀⠈⠉⠉⠉⠀⠀⠀⣀⣉⣁⣀⡭⠭⠤⠒⠒⠋⠉⠁⢀⣠⣴⣶⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠈⢿⣆⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⣀⣤⣶⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠈⠻⣷⣦⣀c⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣴⣾⣿⡿⠿⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀h⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠙⠻⠿⢿⢶⣶⣶⣶⣶⣶⣶⢾⠿⠿⠛⠛⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
http://www.xdnf.cn/news/1002313.html

相关文章:

  • Parasoft C++Test软件集成测试(部件测试)_实例讲解
  • C++的学习路径
  • 第一个简单的爬虫
  • 一起了解--CAST函数
  • C++上学抄近路 动态规划算法实现 CCF信息学奥赛C++ 中小学普及组 CSP-J C++算法案例学习
  • Spring Boot 项目中如何划分事务边界,避免长事务?
  • yolo11学习笔记
  • ajax访问阿里云天气接口,获取7天天气
  • C++ 引用
  • get_attribute的使用方法
  • 【小根堆】P9557 [SDCPC 2023] Building Company|普及+
  • Spring Cloud Gateway + OAuth2 + JWT 单点登录(SSO)实现方案
  • Java八股文——MySQL「SQL 基础篇」
  • 随记:sw2urdf插件导出urdf模型在ROS2-rviz2显示
  • 在Vue2项目中引入ElementUI详细步骤
  • Linux系统下安装elasticsearch6.8并配置ik分词
  • 【Java】浅谈ScheduledThreadPoolExecutor
  • Python实战应用-Python实现Web请求与响应
  • 智能合约的浪潮:从区块链到业务自动化的 IT 新引擎
  • 服务器-客户端下kafka的消息处理流程
  • Vue3+PDF.js 实现高性能 PDF 阅读器开发实战
  • C# 动态管理控件和事件,批量查询管理同类控件
  • JavaWeb期末速成 JSP
  • 浅谈DaemonSet
  • PRIMES“中国校准实验室”正式运营,携手东隆科技共筑精准测量新标准
  • 通过同步压缩小波变换实现信号的分解和重构
  • 概率论几大分布的由来
  • 基于STM32汽车温度空调控制系统
  • Unity-通过Transform类学习迭代器模式
  • 数据集-目标检测系列- 孔雀 数据集 peacock >> DataBall