[西门子] 使用RCE揭露西门子S7-1200/1500硬编码的密码钥匙

[复制链接]
查看83 | 回复0 | 2024-4-29 22:22:19 | 显示全部楼层 |阅读模式
摘要

  • Team82已经开发了一种新的、创新的方法提取的戒备森严,硬编码,全球私人的密码钥匙嵌入在西门子S7-1200/1500PLC和TIA门户产品。
  • 攻击者可以使用这些钥匙要执行多种先进的攻击,对西门子在线产品目录设备和相关TIA的门户网站,同时绕过所有四个其访问级别的保护。
  • 一个恶意的演员可以使用这种秘密信息的妥协整个S7-1200/1500产品线在一个无法弥补的方式。
  • 所有的技术信息披露西门子,它发布了新版本的影响Plc和工程工作站,解决这一漏洞。
  • CVE-2022-38465(https://claroty.com/team82/disclosure-dashboard/cve-2022-38465)已经分配,并CVSS v3分的9.3进行了评估。
  • 此外,攻击可以发展一个独立Siemens块客户(而不需要TIA门户网站),并执行充分上载/下载的程序,行为人中间攻击以及拦截和解密的被动OMS+网络流量。
  • 这项工作是扩展我们  以前的研究成Siemens块Plc .
  • Siemens已经更新了这两个S7-1200和S7-1500Plc和TIA的门户网站,并敦促用户的移动到目前的版本。
  • 这一披露导致引入了一个  新的TLS管理系统在TIA门户的第17 ,确保配置的数据和之间的通信Siemens Plc和工程工作都是加密和保密的。
  • Siemens的咨询可以发现在这里 . Siemens还发表了一个公告与发言中关于关键保护的更新。 读它在这里 .
介绍

近10年前,西门子公司引进非对称密码进入综合安全架构的其TIA门户网站v12发动机和S7-1200/1500PLC CPU固家庭。这样做是为了确保完整性和保密性的设备和用户的程序,以及为保护设备,通信内工业的环境。 动态的关键管理和分布不存在,然后对工业的控制系统,主要是因为业务负担关键管理系统将把集成商和用户。Siemens时决定,而不是依靠固定密码钥匙给安全的编程和通信之间的其Plc和TIA的门户网站。
然而,从那时以来,技术的进步、安全的研究,和一个迅速变化的威胁都呈现这样的硬编码加密钥匙不可接受的风险。一个恶意的演员是谁能够提取全球性的、硬编码钥匙,可能损害整个设备的生产线的安全造成无法挽回的方式。Team82迄今已进行了广泛的研究成PLC安全密切合作,与领先的供应商,以消除这种做法如硬编码钥匙,证明在风险,它们对用户的系统,并改善整体安全性的工业自动化的生态系统。 我们的最新工作的扩展  先前进行的研究,在西门子S7-1200和S7-1500Plc ,以及  Rockwell Automation的架构控制器和Studio5000架构设计师 ,继续在这条道路。 我们发现并披露给Siemens一个新的和创新的技术目标S7-1200和S7-1500PLC Cpu,使我们的研究人员恢复全球硬编码的密码钥匙( 漏洞-2022-38465 )用于通过每个Siemens受影响的产品。关键的,如果提取通过攻击者的,会给他们全面控制每一个PLC每个受影响的西门子生产线。 使用的漏洞发现,在以往的研究(漏洞-2020-15782)在西门子Plc,使我们能够绕过当地存在保护PLC和获得阅读和书写的权限,以便以远程执行代码,我们能够取的内部,有重兵把守私人钥匙的用跨西门子公司的生产线。这种新的知识使我们能够实现完整的协议栈、加密和解密的保护通信和配置。Siemens的响应这一私人公开导致彻底改革的密码保护方案,其旗舰PLC线,以及其TIA门户网站的工程工作站的应用程序。Siemens承认在一个  安全咨询 ,现有保护其周围的硬编码钥匙不再够用,并投入资源和时间有必要引入一个动态的公钥基础设施(PKI),以消除使用的硬编码钥匙。 Siemens的建议,用户可以立即更新S7-1200和S7-1500Plc和相应的版本TIA的门户网站项目的最新版本。 TIA门户网站第17 和相关的CPU固件版本包括的新的PKI系统保护机密的配置数据基于个人的密码,每个设备和TLS保护PG/PC和人机通信,Siemens说,在其咨询。 技术细节  :Siemens的访问限制的机制一个突出的安全特征西门子公司的Plc是一个访问级别的限制的机制,强制执行有密码保护。密码是内配置的项目就是下载到PLC随着所期望的保护水平。那些等级是:
  • 第1级:充分阅读和写访问的任何结构和逻辑框
  • 2级:编写保护:
    • 可以读取的一切
    • 可以改变PLC模式
  • 3级:有限的阅读访问:
    • 可以读取的数据界面(价值观等)。
    • 可以读取的诊断数据
  • 4级:完全的保护
    • 无法沟通与PLC没有密码

所有四个级别使用相同的安全机构授予的权限的用户。他们之间的唯一区别的程度授予的权限或无认证。密码是要求在任何连接到PLC。了解S7-1200、S7-1500加密

非对称加密程序在西门子旗舰Plc有两个主要目的:
  • 认证:一个共用派生的会话的关键,对用户进行身份验证当与PLC。
  • 保密性加密的数据期间的部分所述的通信,即下载的逻辑。
我们能够理解的加密算法,它的基础是椭圆曲线的非对称加密。我们找到的曲线参数,以及作为一个增加复杂化:使用"结构的关键",以进一步模糊和复杂的椭圆形的乘法的过程。 最终我们能够揭开所有相关键参与的加密程:
  • 连接的关键:用于分组完整性验证和认证。
  • CPU的关键:"每模型/固件"(e.g S7-1518,S7-1517)使用密钥进行加密配置、代码和维持代码的完整性。
  • 家庭的关键:"每-家庭"(e.g S7-1200、S7-1500)用于同样目的CPU的关键,当CPU关键是不知道。
获得执行代码在PLC

对一个未加密的西门子SIMATIC.upd固件S7-1200进行反向工程后,我们了解到私钥不在固件文件中,因此我们必须以某种方式直接从PLC中提取私钥。 为了检索的私人钥匙从PLC,我们需要的直接内存存取(DA)能够检索它。为了能够执行达行动,我们搜索和找到一个远程执行代码的脆弱性在1200/1500PLC系列。脆弱性(漏洞-2020-15782)被触发时通过一个具体MC7+功能码含有我们自己造攻击载荷码。
脆弱性的逻辑,CVE-2020-15782如下工作:
  • 使用[删除]操作,这是没有安全存储器区的检查,以复制的内部结构包含一个地指向了一个有效存储器区域的一个可写入记忆的区域
  • 改变指针的内部这个结构来我们想要的地址
  • 重新计算CRC被用来验证这一结构(采用CRC32操作码)
  • 复制的结构回到它原来的位置,现在就指着我们的希望的地址,使用[删除]操作码
  • 在这一点上,我们可以使用间接接触到新的地址在我们造的结构。
MC7+[删除]操作执行功能;因为这错过了安全存储器中存储器区的检查是可以利用它实现RCE(漏洞-2020-15782).现在,我们可以阅读或写的任何内存地址在PLC。使用这种能力,我们可以复盖地代码和执行任何需要的地逻辑。我们给了一个详细的技术专题介绍关于这一漏洞在S4x22会议,如下:  

https://www.youtube.com/embed/r-dmxU1gEl0使用RCE获得的隐私人钥匙

使用DA读的权限我们得到的,我们能够提取整个加密PLC固件(S7-1500)和映射它的职能。在映射过程中,我们发现了一个功能,阅读的私人钥匙在PLC。

一旦我们的功地址,我们就改写了功能性的具体MC7+操作码与我们的外壳代码,迫使他们通话的当地能读的私人钥匙。我们再复制的关键一个已知存地址和阅读它。执行所复盖的功能给我们的全部私人钥匙的PLC。
我们后来发现,这些钥匙是在每个Siemens S7产品线,并立即开始一个协调的披露过程中与西门子。这导致了在一个新的咨询和  漏洞-2022-38465 .使用同样的方法,我们能够取配置关键从CPU。合并私人钥匙,配置关键,并且知识的算法,使我们能够实现完整的协议栈、加密/解密的保护通信和配置。
攻击流:获得控制权PLC和进程

使用私人钥匙我们就能提取,攻击者可能获得完全控制PLC。袭击的密码  

袭击描述下攻击者的知识PLC的私人钥匙的加密算法,以检索的构成上的密码PLC,从而获得完全控制无关的保护级别上配置了设备。
  • 获得配置以及解密的密码哈希(阅读配置从PLC):如果PLC是在保护水平低于3,攻击者可以检索的构成从PLC(上传过程)没有特别权限要求。一旦上传,攻击者拥有PLC结构和可以使用私人钥解码哈希从上传的配置。使用的解密的密码散列的攻击者能够进行身份验证,PLC和获得更高的权限。
  • 中间人:攻击者与知识的密机制的业务,以及进入私人钥匙,可以模拟PLC在一个连接。该中间人的攻击是执行以下步骤:
    • 客户(受害者)连接到攻击者的假PLC和发送一个加密的连接的关键。
    • 攻击者解密连接的关键,并使用的密钥连接的真正的PLC。一旦连接,攻击者收到了基于密码的挑战。
    • 攻击者转发的实PLC的挑战的客户和收到一个有效的挑战的反应。
    • 然后攻击者转发的挑战响应真正的PLC设立一个认证的连接。本届会议将是一个完全的特权的会议。在这一点上,攻击者可能会改变任何结构或模块在PLC,或阅读的配置。这种访问包括能够阅读密码加密散列从PLC和解密。
  • 被动的交通拦截:攻击者与被动接捕获业务为一定PLC在网络上可以拦截配置读写从PLC。使用私人钥匙,攻击者可以解密的配置并提取密码散。与密散列的攻击者能够进行身份验证控制和编写一个新的结构。
摘要  

这种攻击( CVE-2022-38465 )成为可能由于执行能力的机代码在S7Plc我们实现我们与先前的研究  ,CVE-2020-15782 . 使用机代码的执行,我们能够阅读原始记忆的区域保护私人钥匙并最终完全恢复的关键。通过提取PLC的硬编码的私人钥匙,我们能够表明多攻击的情况,包括解密的所有通信之间S7Plc和一个预警系统,解密的配置的密码哈希上PLC,我们可以使用完全进入PLC,行为人中间的攻击,以及更多。使用者应更新目前版本的S7-1200和S7-1500PLC家庭,以及TIA门户的第17,作为建议由西门子。TIA门户网站介绍了第17TLS管理系统为了加密通讯。Siemens还引入了一个预活PLC配置密码的要求,确保所有机密PLC配置数据保护的默认情况下以及预定的安全PG/人机通信,其防止不安全的通讯与其他合作伙伴,并预活PLC访问保护,防止任何类型的访问控制器,除非明确构成。  脆弱性  

CVE-2022-38465
CWE-522没有充分保护凭证
CVSS v3分:9.3
https://claroty.com/team82/disclosure-dashboard/cve-2022-38465
说明 :S7-1200、S7-1500Cpu和相关的产品的保护的内在全球的私人钥匙的方式,不能被认为是足够的。关键是用于遗产保护机密数据的配置和遗产PG/PC和人机通信。这可能使得攻击者发现的私人钥匙的CPU产品的家庭由一个脱机攻击一个单一的CPU的家庭。袭击者随后可能使用这种知识来提取保密数据的配置的项目都受到保护的关键或执行袭击的遗产PG/PC和人机通信。Team82要感谢西门子为其协调工作通过这种公开,并为其迅速反应,在确认我们的发现和修补这些漏洞。 免责声明:本文转自网络,版权归原作者所有,如有侵权,请及时与我们联系删除,谢谢!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则