欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

针对西门子PLC蠕虫的实现

来源:本站整理 作者:佚名 时间:2017-06-08 TAG: 我要投稿


研究背景
随着“互联网+”、“中国智能制造2025“、“工业4.0”等概念的提出,为了提高生产率,独立、隔离的传统工控领域将迎来了新的互联网时代,越来越多的工控设备(如控制器、机器人、数控机床)将被暴露在互联网上或者与企业内网相连。随着互联网时代的来临,安全问题会越来越突出。然而,工业控制系统的安全不同于传统信息网络的安全,一旦出现网络攻击,后果不堪设想。关于工控病毒相关关键事件如下:
2010年伊朗核设施遭受“震网”超级病毒攻击,病毒的复杂程度超出人们的想象,该事件也被称为世界上首个“网络超级武器”事件。由于工业病毒攻击可以直接导致物理设备的故障,并进一步造成生产瘫痪甚至爆炸的灾难性后果。
Black Hat 2011报告《Exploiting Siemens Simatic S7 PLCs》,演示了通过西门子S7Comm协议的权限缺失漏洞来远程操作PLC,对PLC进行启停控制、内存的读写。
Black Hat 2015报告《Internet-facing PLCs – A New Back Orifice》,演示了如何通过PLC实现通信代理,通过PLC突破网络边界,来发现内网中更多的PLC设备。
Black Hat 2016报告《PLC-Blaster: A Worm Living Solely in the PLC 》,提出了PLC蠕虫病毒的概念,提出了西门子1200 V3版本协议认证的缺陷,但没有具体的实现细节。
近日,工匠实验室工控安全专家针对PLC进行深入研究,通过梯形图和SCL相结合的方式,利用PLC自身通信功能, 复现了这个病毒,实现了病毒在PLC与PLC之间进行传播。同时,针对这一病毒,我们已经开发了相应的检测工具,这标志着华创网安在工控安全领域掌握了这方面的核心技术,也体现了工控领域的研发实力。
PLC基本结构
PLC 实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同,如图所示:

 
1.中央处理单元(CPU)中央处理单元(CPU)是PLC 的控制中枢。它按照PLC 系统程序赋予的功能接收并存储从编程器键入的用户程序和数据:检查电源、存储器、I/O 以及警戒定时器的状态,并能诊断用户程序中的语法错误,当PLC 投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O 映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后按指令的规定执行逻辑或算数运算的结果送入I/O 映象区或数据寄存器内。等所有的用户程序执行完毕之后,最后将I/O映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行,直到停止运行。为了进一步提高PLC 的可靠性,近年来对大型PLC 还采用双CPU 构成冗余系统,或采用三CPU 的表决式系统。这样,即使某个CPU 出现故障,整个系统仍能正常运行。
2.存储器存放系统软件的存储器称为系统程序存储器。存放应用软件的存储器称为用户程序存储器。虽然各种PLC的CPU的最大寻址空间各不相同,但是根据PLC的工作原理其存储空间一般包括以下三个区域:系统程序存储区、系统RAM 存储区(包括I/O 映象区和系统软设备等)、用户程序存储区
3.电源PLC 的电源在整个系统中起着十分重要得作用。如果没有一个良好的、可靠得电源系统是无法正常工作的,因此PLC 的制造商对电源的设计和制造也十分重视。一般交流电压波动在±10%(±15%)范围内,可以不采取其它措施而将PLC 直接连接到交流电网上去。
4.输入/输出电路I/O扩展接口用于将扩充外部输入/输出端子数的扩展单元与基本单元(即主机)连接在一起。
蠕虫介绍
蠕虫病毒是一种常见的计算机病毒。它是利用网络进行复制和传播,传染途径是通过网络和电子邮件。最初的蠕虫病毒定义是因为在DOS环境下,病毒发作时会在屏幕上出现一条类似虫子的东西,胡乱吞吃屏幕上的字母并将其改形。蠕虫病毒是自包含的程序(或是一套程序),它能传播自身功能的拷贝或自身的某些部分到其他的计算机系统中(通常是经过网络连接)。
工控蠕虫主要的针对的对象是工业控制设备,通过控制器之间进行病毒传播,这与传统计算机蠕虫是存在很大差别,传统蠕虫寄生对象都是计算机(Window或者Linux),工控蠕虫寄生对象是控制器逻辑代码中。由于病毒可以混淆于正常的控制逻辑代码中,传统防御方式都不适合于工控蠕虫的防护,检测与查杀的方式更强困难。虽然工控蠕虫与计算机蠕虫存在很多的不同点,但所有的蠕虫的基本架构都是相同的。所有的蠕虫攻击都可以归为一下几个阶段:搜索目标,感染目标,在目标上执行,添加恶意功能。由于PLC控制器提供网络通信能力,在PLC上蠕虫也同样支持这些功能。这篇文章将展示每个必须组件的实现方法。
蠕虫实现
蠕虫实现的主要的编程软件为西门子的TIA Portal(博途),在TIA Portal(博途)编程软件中,用户通过编写程序来完成工业现场的控制以及工艺流程的实现。博途中分为以下几类块:
OB(Organization Block ):组织块,为程序的入口块,被系统直接调用(其他块不可以被系统直接调用,必须包含在OB中才可以执行)。
FB(Function Block):功能块,既可以是博途中已包含的功能块,也可以是用户自己编写的块,编程中需要带背景数据块(又叫实例数据块,Instance Data Block)使用。
FC(Function):功能,既可以是博途中已包含的功能块,也可以是户自己编写,不可以带背景数据块。
DB(Data Block):数据块,分为背景数据块和共享数据块,其中背景数据块为私有块。编程时,户可以定义共享数据块的数据存储结构,不可以定义背景数据块的数据存储结构,必须由FB定义。数据块中的数据掉电不丢失。
SFB(System Function Block):系统功能块,系统内部功能块,用户不可自己编写,不可更改,使用同FB。
SFC(System Function):系统功能,系统内部功能,用户不可自己编写,不可更改,使用同FC。博途软件支持的编程语言有: LD(梯形图),FBD(功能块图)、SCL(结构化控制语言)、STL(语句列表)。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载