检测不出的 PLC rootkit 终于现世

简介: 本文讲的是 检测不出的 PLC rootkit 终于现世,该rootkit实现了对可编程逻辑控制器(PLC)输入/输出(I/O)接口的新攻击。

本文讲的是 检测不出的 PLC rootkit 终于现世,该rootkit实现了对可编程逻辑控制器(PLC)输入/输出(I/O)接口的新攻击。

image

研究人员设计出新的恶意软件攻击方式,针对可编程逻辑控制器(PLC),利用的是微处理器中的架构缺陷,可规避现有检测机制。

PLC是专用嵌入式计算机,工厂、电站、炼油厂、公共设施和其他工业装置都需要PLC来对各种物理过程进行控制和监视。它通过由I/O引脚组成的接口与其他设备进行通信,比如传感器、阀门、电机等。该攻击修改的就是这一通信接口的引脚配置。

11月3号在伦敦举行的黑帽欧洲安全大会上将展示该攻击方法。荷兰特温特大学分布式与嵌入式系统安全小组博士研究生阿里·阿巴斯,巴黎网络安全公司Quarkslab研发工程师马吉德·哈舍米,是该攻击方法的开发者。

该I/O攻击的一个版本被称为引脚配置,在PLC操作系统不知道的情形下用恶意代码切换I/O引脚配置,从输出改成输入或反之。

举个例子,假设连到某阀门的PLC,可通过向配置成输出的I/O引脚发送信号,来开启或关闭阀门。该PLC同时通过另一条配置成输入的引脚来接收传感器的压力读数。PLC逻辑是监视传感器读数,在需要的时候自动开启阀门释放压力。

攻击者注入到该PLC的恶意代码可重配置输出引脚成输入,阻止PLC逻辑向该引脚输出信号,导致阀门不能开启。还可以重配置输入引脚成输出,发送虚假数据。结果将会是:PLC向监视软件报告称自己已经打开了阀门且压力正在下降——拜攻击者提供的虚假读数所赐,而实际上阀门并未开启,压力持续上升。

根本问题在于,嵌入式设备(如PLC)所用片上系统(SoC)中,并没有用于引脚配置的硬件中断,因而试图向重配置成输入的引脚进行写入操作时,系统将不会收到任何报错。这意味着,在运行时环境内部执行的PLC逻辑,不会崩溃,将会继续表现得好像操作成功一样——因为在操作系统虚拟内存里,一切看起来都很正常。

这就是核心问题所在。似乎没有哪家SoC厂商考虑过引脚配置反馈问题,对其他嵌入式系统而言这个问题好像也不是很重要。但对主要操作就是与I/O打交道的PLC而言,这个问题就超级重要了,会引发各种问题。
阿巴斯和哈舍米用rootkit实现了该攻击技术,作为可加载内核模块 (LKM)执行。这种方式可绕过现有基于主机的入侵检测和用于嵌入式系统的控制流完整性工具,比如 Autoscopy Jr 和Doppelganger。

两位研究员的文章称:“我们这种攻击的创新性在于,我们不用修改PLC逻辑指令或固件,就可以操纵物理过程。这里面没有利用到任何传统函数钩子技术,也不用将整个恶意代码载入动态内存。”

将rootkit实现为LKM(基本上就是个驱动)的缺陷是:部署上需要root权限。因此,研究人员还开发出一个用现有PLC运行时功能来重配置引脚的版本,该变种可由内存泄露漏洞利用实现,直接加载恶意代码到动态内存。

另一种攻击技术针对的是引脚复用功能(除通用输入输出(GPIO)外引脚还用作其他接口模式)。引脚的功能可在运行时被重分配,而且同样的,也没有任何反馈以告诉操作系统发生了什么。

阿巴斯说:“假设你通过引脚连到电机,并通过CPU里的脉冲宽度调制(PWM)控制器进行管理。我们的攻击所做的,就是复用该引脚,将其功能改成其他什么东西,但CPU不会告诉负责将虚拟地址转换成物理地址的内存管理单元(MMU)说,‘嘿,这个引脚对应的物理地址不可用了哟’。MMU会继续试图向改地址写入,CPU则无视掉了该请求,但不会返回任何错误,PLC就依然认为电机还是处于控制之下的——细思恐极。”

阿巴斯表示,此类I/O攻击不会很快出现,因为目前还有其他更容易方法侵入PLC。不过,随着厂商在下一代PLC中植入更好的安全,最好谨记固件和逻辑操纵并非黑客的唯一攻击选择。

而且,不仅仅是PLC对I/O攻击束手无策,所有用于I/O的嵌入式设备都在I/O攻击风险笼罩之下,比如汽车中用的电控单元(ECU),或电力工业用的智能电子装置(IED)。

论文中,研究人员提出了I/O攻击检测新技术的两个研究方向。他们未来工作的基础就是这个。

原文发布时间为:十一月 3, 2016
本文作者:nana
本文来自云栖社区合作伙伴安全牛,了解相关信息可以关注安全牛。
原文链接:http://www.aqniu.com/threat-alert/20733.html

相关文章
|
XML SQL 安全
Struts2 漏洞集合
Struts2 漏洞集合
|
6月前
|
人工智能 程序员 决策智能
2026年智能体(Agent)怎么学?从入门到实战的全景避坑指南
2026年,AI进入“智能体元年”。本文系统解析智能体四大核心架构与Agentic Workflow设计模式,涵盖开发者、产品经理到业务人员的实战路径,助力把握AI代理红利期,实现从工具应用到架构创新的跃迁。
11357 6
|
7月前
|
Kubernetes 网络安全 容器
【k8s-1.34.2安装部署】五.worker端containerd2.2.1、kubelet-1.34.2安装
本章介绍k8s-1.34.2 worker节点组件安装,涵盖containerd(含CNI、runc等)、kubelet部署与配置,完成节点验证及证书申请批准流程。
605 1
|
7月前
|
安全 Java 测试技术
Groovy 脚本语法全解析:从入门到精通的干货指南
本文全面介绍基于JVM的动态脚本语言Groovy,涵盖从基础语法到高级特性的完整知识体系。主要内容包括:Groovy环境搭建与Maven集成;基础语法(变量、数据类型、运算符、流程控制);核心特性(集合操作、方法定义、类与对象、闭包);高级特性(元编程、异常处理、文件操作);与Java的差异对比;以及自动化测试、数据迁移、Jenkins Pipeline等实战场景。文章通过大量可直接运行的代码示例,帮助开发者快速掌握Groovy在提高开发效率、简化代码方面的优势,同时提供性能优化建议和学习资源。
972 2
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
JavaScript Java 云计算
后端开发的演变与未来趋势
在数字化时代的浪潮中,后端开发扮演着至关重要的角色。本文将探讨后端技术的历史演变、当前主流技术和框架、以及面临的挑战和未来的发展趋势。通过深入浅出的方式,为读者揭示后端开发的奥秘,并启发对未来技术的思考。
|
网络协议 JavaScript 前端开发
将websocket封装成一个class,断线可重连
将websocket封装成一个class,断线可重连
796 3
|
Kubernetes 容器
Kubernetes(K8S) 镜像拉取策略 imagePullPolicy
Kubernetes(K8S) 镜像拉取策略 imagePullPolicy
531 0
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
1955 0