分享好友 水电电工首页 水电电工分类 切换频道

Stuxnet病毒是怎样“入侵”PLC的?

2024-08-13 10:30730建材之家

1.如何选择需要感染的PLC

Stuxnet会根据目标系统的特点,使用不同的代码来感染PLC。一个感染的序列包括了许多PLC模块(代码模块和数据模块),用以注入PLC来改 变目标PLC的行为。这个威胁包括了三个感染序列。其中两个非常相似,功能也相同,我们将其命名为序列AB。第三个序列我们命名为序列C。 Stuxnet 通过验证“指纹”来判断系统是否为计划攻击的目标。它会检查:PLC种类/家族:只有CPU6ES7-4176ES7-315-2 会被感染。系统数据模块:SDB会被解析;根据他们包含的数据,感染进程会选择A,B或其它感染方式开始行动。当解析SDB时,代码会搜索这两个值是否存 在--7050hand9500h;然后根据这两个数值的出现次数,选择序列AB中的一种来感染PLC。代码还会在SDB模块的50h子集中搜索字节序 2CCB0001,这个字节序反映了通信处理器CP342-5(用作Profibus-DP)是否存在。而选择序列C进行感染的条件则由其他因素构成。

2.感染方法。

Stuxnet使用“代码插入”的感染方式。当Stuxnet感染OB1时,它会执行以下行为:增加原始模块的大小;在模块开头写入恶意代码;在恶意 代码后插入原始的OB1代码。Stuxnet也会用类似于感染OB1的方式感染OB35。它会用自身来取代标准的协同处理器DP_RECV代码块,然后在 Profibus(一个标准的用作分布式I/O的工业网络总线)中挂钩网络通信。利用A/B方法的感染步骤如下:检查PLC类型;该类型必须为S7 /315-2;检查SDB模块,判断应该写入序列AB中的哪一个;找到DP_RECV,将其复制到FC1869,并用Stuxnet嵌入的一个恶意拷贝 将其取代;在序列中写入恶意模块(总共20个),由Stuxnet嵌入;感染OB1,令恶意代码可以在新的周期开始时执行;感染OB35,它将扮演“看门 狗”的角色。

3.感染代码。

被注入OB1功能的代码是用来感染序列AB的。这些序列包含了以下模块:代码块:FC1865FC1874,FC1876FC1880(注 意:FC1869并非Stuxnet的一部分,而是PLCDP_RECV模块的一个拷贝);数据模块:DB888DB891。序列AB用 DP_RECV挂钩模块来拦截Profibus中的数据包,并根据在这些模块中找到的数值,来构造其他的数据包并发送出去。这由一个复杂的状态机控制(状 态机被建立在上面提到的FC模块中)。这个状态机可部分受控于数据块DB890中的DLL。在某些条件下,序列C会被写入一个PLC。这个序列比AB包 含更多的模块:FC6055FC6084DB8062,DB8063DB8061,DB8064DB8070(在运行中产生)。序列C主要为了将 I/O信息读写入PLC的内存文件映射的I/O区域,以及外围设备的I/O。程序A/B的控制流如下图所示,在之前的Step7编辑器的截图中也有部分显 示(数据模块FC1873

4.RootkitStuxnetPLCrootkit代码全部藏身于假冒的s7otbxdx.dll中。

为了不被PLC所检测到,它至少需要应付以下情况:对自己的恶意数据模块的读请求;对受感染模块(OB1,OB35,DP_RECV)的读请求;可能 覆盖Stuxnet自身代码的写请求。Stuxnet包含了监测和拦截这些请求的代码,它会修改这些请求以保证StuxnetPLC代码不会被发现或被 破坏。下面列出了几个Stuxnet用被挂钩的导出命令来应付这些情况的例子:s7blk_read:监测读请求,而后Stuxnet会返回:真实请求的 DP_RECV(保存为FV1869);错误信息,如果读请求会涉及到它的恶意模块;OB1OB35的干净版本的拷贝s7blk_write:监测关于 OB1/OB35的写请求,以保证他们的新版本也会被感染。s7blk_findfirst/s7blk_findnext:这些例程被用于枚举PLC中 的模块。恶意模块会被自动跳过。s7blk_delete:监测对模块的“删除”操作。如上文所述,Stuxnet是一个非常复杂的威胁,而其中的PLC 感染代码令问题更加难以解决。

举报
收藏 0
打赏 0
评论 0
停送电操作指导书
一、 停送电倒闸操作必须听从调度指挥,并与用户取得联系后方可进行。二、 严格执行“电业安全规程”及“两票”制度执行一人操作,一人监护。三、 送电必须按母线侧刀闸、线路刀闸、油开关顺序操作,停电顺序相反,严禁带负荷拉闸。四、 停电后应立即挂好停电标志牌,严防挂错。五、 停电操作必须戴绝缘手套、穿绝缘鞋,站在绝缘垫上。六、 高压设备均为双回路供电,一回使用一回备用,严格执行双回路送电有

0评论2024-10-0445

DCS控制系统和PLC控制系统的区别
1. DCS是一种“分散式控制系统”,而PLC只是一种(可编程控制器)控制“装置”,两者是“系统”与“装置”的区别。系统可以实现任何装置的功能与协调,PLC装置只实现本单元所具备的功能。  2. 在网络方面,DCS网络是整个系统的中枢神经,和利时公司的MACS系统中的系统网采用的是双冗余的100Mbps的工业以太网,采用的国际标准协议TCP/IP。它是安全可靠双冗余的高速通讯网络,系统的拓展

0评论2024-10-0467

Modbus以及Modbus Plus有什么区别?
Modbus是一种通讯结构,广泛应用在智能设备之间进行主-从方式通讯。一个Modbus信息桢包括从机地址、功能码、数据区和数据校验码。正因为 Modbus仅仅定义了通讯结构,所以可以使用RS232、RS422和RS485端口,可以使用光纤、无线等媒质实现通讯。而 Modbus Plus则是一种典型的令牌环网,完整定义了通讯协议、网络结构、连接电缆(或者光缆)以及安装工具等方面的性能指标。

0评论2024-10-0435

继电保护安全措施票
近几年的继电保护事故通报中,由于漏拆、误拆有关连线或漏退、误投有关压板,造成运行开关误掉闸的现象时有发生。从各起事故中总结出,大部分原因是未认真执行现场继电保护安全措施票。下面对某发电厂具体执行继电保护安全措施票的情况作一介绍。 1 继电保护安全措施票的格式 继电保护安 全措施票的格式是参照《继电保护和电网安全自动装置现场工作保安规定》中的格式,并稍加改动 而形成,主要在内容格式上和审批格式

0评论2024-10-0433

西门子S7-200高速计数器怎么接收伺服驱动器的A相B相Z相差动信号
想利用西门子S7-200PLC的高速计数器,采集伺服驱动器的反馈编码器值,利用高速计数器采集到的值,在程序中比较好控制伺服电机实际运行的位置.答:西门子的200无法直接采集差分信号,因此你需要买个转化板进行转换(即使是224xp也只是支持集电极开路的0到5v,并不是差分)其次每个cpu的循环周期都得10ms左右,如果你在程序中比较实际位置,在进行输出的话很有很大的延迟,除非速度很慢,否则在

0评论2024-10-0460

双电源供电配电图
双电源供电配电图

0评论2024-10-0449

西门子变频器预充电的问题
变频器在放置很长时间不使用时,首次上电需要执行预充电,有人说需要用直流调压器直接接在母线正负极,慢慢升压,我想问的是变频器不是有预充电的吗,为什么还要用直流调压器啊?预充电有预充电电阻和预充电继电器,那么预充电继电器吸合和断开的时间是由什么来控制呢,这个时间可调吗?还有,如果接上输入电源,但是不启动,那么这个时候是不是在执行预充电?另外,如果不执行任何形式的预充电,变频器是在接上输入电源时主

0评论2024-10-0470

51单片机CPU的内部结构及工作原理
从上图中我们可以看到,在虚线框内的就是CPU的内部结构了,8位的MCS-51单片机的CPU内部有数术逻辑单元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序状态字PSW(8位)、程序计数器PC(有时也称为指令指针,即IP,16位)、地址寄存器AR(16位)、数据寄存器DR(8位)、指令寄存器IR(8位)、指令译码器ID、控制器等部件组成。1、运

0评论2024-10-0474

电功率计算公式的灵活变通
现有一个碳膜电阻,其额定电功率为P=1W(瓦),额定电阻为R=100Ω(欧);知道这两个数值后需要计算出这个电阻的额定电流I以及额定电压U。解题:我们知道电功率公式是P=UI,现在我们知道电功率和电阻,所以电功率公式要转换一下,转换计算公式为:P=I²R;但是我们需要计算的是电流,所以I²=P/R,然后把I开方就计算出了电流:电流:然后我们代入上面的公式中,I=1/10

0评论2024-10-0492

编码器工作原理
绝对脉冲编码器:APC  增量脉冲编码器:SPC  两者一般都应用于速度控制或位置控制系统的检测元件.  旋转编码器是用来测量转速的装置。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。  增量型编码器与绝

0评论2024-10-0468