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

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

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

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
电气施工图纸会审工作要点
1、要审查设计图纸是否符合相关规范或有关技术质量标准,设计是否合理,考虑经济承受能力和投资取得的回报,设计和选用的产品应是开放型的,便于有条件时系统扩展、互联和信息共享。 2、要根据工程的特点和使用功能,明确业主对其项目的定位和需求。应提供意见和建议与业主,及早协调明确要设置哪些系统,以便所设系统与主体工程同步进行,避免主体完工后再上系统,难于施工,造成对建筑主体结构的破坏,加大返工

0评论2024-11-03409

看电气施工图纸时的注意事项
1、动力配电系统是否满足其他相关专业要求,控制原理是否合理。配电系统图线径、预埋管型号、回路编号与平面图上标注是否统一。 2、电缆桥架、插接母线、线槽等的位置、标高是否合理及便于安装,避免与风管、水管等“打架”,电专业图纸安装位置与其他专业安装位置不一等现象,现在设计中出现这种情况,各专业设计师间缺少协调和沟通,各自出图,就会出现如上所说的现象。我们施工前一定要把几个专业的安装

0评论2024-11-03349

哪些项目需填入操作票?哪些操作可不填写操作票?
下列项目须填入操作票内:1)应拉合的开关和刀闸;2)检查开关和刀闸的位置;3)检查接地线是否拆除;4)检查负荷分配和表计指示;5)装拆接地线;6)拉合控制回路、合闸回路的操作保险、合闸保险或刀闸;7)拉合保护回路的直流保险或刀闸,投退或切换保护压板;8)拉合电压互感器回路保险器、刀闸或开关;9)投退重合闸,联锁、同期开关;10)验电、放电。 下列操作可不填写操作票,但应执行操作监

0评论2024-11-03444

电流互感器误差计算流程图
按书上的排版方式讲电流互感器误差计算感觉不简洁、不清晰,就做了这个流程图出来,自我感觉不错。欢迎同行指正。

0评论2024-11-03327

PLC编程学习的好处
一、可以提高电脑水平。  学习PLC编程,首先要学会各种PLC、触摸屏软件安装和卸载,打字当然也是必不可少的要求,软件中的菜单的应用相当于把电脑的基础知识好好的学习了一番,一些人用电脑只会用鼠标点击,久而久之,这其实还是电脑盲,而学好PLC编程,键盘鼠标都要配合使用。在电脑硬件方面,电脑配置要求,串口以及外置接口在学习中自然而然学好了。  二、自然而然也学好了英语。  PLC软件里面的指令L

0评论2024-11-03412

怎样学好PLC编程
一、PLC主要是指数字运算操作电子系统的可编程逻辑控制器,用于控制机械的生产过程。也是公共有限公司、电源线车等的名称缩写。怎样学好PLC专业?步骤/方法:学习PLC首先要选好学习那一个厂家的PLC,日系的PLC内部软件集成度高应用简单。早期的OMRON、三菱应用比较多、现在由于贸易和国际间的合作关系应用西门子PLC、罗克韦尔的多一点,(尽管说学一种品牌学精深了,其他的也会很快上手,但人的精力

0评论2024-11-03428

PLC高手进阶之路
1.面对工作时最好能有自己的思路,有自己的想法。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。  2.PLC书本是必须的,电子书会浪费你更多的时间,当然网上学习是必不可少的,可以查阅PDF文档。  3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件什么都不懂很正常,手册正是我们的好帮手,实在弄不懂在去问别人,每个人工作的时间都是很宝贵的。  4.不要蜻蜓

0评论2024-11-03346

配电箱及开关箱施工安装要点总结
1.配电箱及开关箱的设置(1)配电系统应设置总配电箱及分配电箱,实行分级配电。(2)开关箱应由末级分配电箱配电。(3)开关箱与控制的固定式用电设备的水平距离不宜超过3M。(4)配电箱、开关箱周围应有足够二人同时工作的空间和通道,不得堆放任何妨碍操作、维修的物品。(5)配电箱、开关箱应装设端正、牢固,移动式配电箱、开关箱应装设在坚固的支架上。固定式配电箱、开关箱下底大于1.3M,小于1.5M。

0评论2024-11-031054

发电机定子转子一点接地现象及处理方法
发电机定子一点接地:现象:1) 警铃响,发电机“定子一点接地”光字牌亮;2) 定子绝缘检查,接地的一相电压为零或降低,其余相为线电压或升高。处理:1) 据表计判明是真接地还是假接地;2) 如定子接地保护投了“跳闸”但保护拒动,应立即手动解列发电机;3) 定子接地保护投信号时,如发信应立即查找接地点,接地光字牌设法予以消除;4) 若为真接地,且外部回路设备无明显接地点,应迅速汇报值长、中调,然

0评论2024-11-03492

电容器检测方法
电容器检测方法主要分为三个大类:可变电容器的检测、电解电容器的检测、固定电容器的检测。  1、可变电容器的检测  A用手轻轻旋动转轴,应感觉十分平滑,不应感觉有时松时紧甚至有卡滞现象。将载轴向前、后、上、下、左、右等各个方向推动时,转轴不应有松动的现象。  B用一只手旋动转轴,另一只手轻摸动片组的外缘,不应感觉有任何松脱现象。转轴与动片之间接触不良的可变电容器,是不能再继续使用的。  C将万

0评论2024-11-03458