起底震网病毒的来龙去脉

news2024/10/6 13:15:56

图片

2010年,震网病毒被发现,引起世界哗然,在后续的10年间,陆陆续续有更多关于该病毒的背景和细节曝光。今年,《以色列时报》和《荷兰日报》又披露了关于此事件的更多信息,基于这些信息,我们重新梳理了震网病毒的来龙去脉。

伊朗自从上世纪50年代开始便有意开展核计划,但直到本世纪初才在浓缩铀生产有所突破,这得益于巴基斯坦核武器之父阿卜杜勒·卡迪尔·汗(Abdul Qadeer Khan)的帮助,此人在上世纪80年代从一家荷兰公司窃取了离心机的设计图纸,并卖给了伊朗。2003年,美国和英国截获了一艘计划向伊朗运输离心机的利比亚船只,其离心机采用的是德国西门子的Step-7型号。

小布什政府和奥巴马政府认为,如果伊朗被证实发展核武器,以色列可能会对伊朗核设施发动空袭,进而引起一场地区战争。之后,一个名为“奥林匹克运动”的计划开始执行,该计划涉及五个国家的情报机构,包括美国、以色列、荷兰、德国以及英国,该计划的目的是通过投放计算机病毒至伊朗的铀浓缩基地,以破坏或推迟伊朗的核武器计划,也被看作一种兵不血刃的方式。

计划的核心是一款名为Stuxnet的蠕虫病毒,中文称为震网病毒,该病毒的研发始于小布什政府时期,并在奥巴马政府期间被继续执行。根据卡巴斯基事后对于该病毒规模和复杂性的评估,震网病毒至少有10人以上的研发团队,历经2-3年研发,大约花费10亿美金。虽然美国和以色列政府都没有正式承认研发了此病毒,但2011年为庆祝以色列国防军领导人加比·阿什肯纳兹(Gabi Ashkenazi)退休而制作的一段视频中,将震网病毒列为了他领导下的成果之一。

震网病毒的攻击目标伊朗纳坦兹(Natanz)工厂(一所从2000年开始建设的铀浓缩工厂)的Windows系统、Windows系统中控制离心机的西门子软件以及PLC自身的嵌入式软件,当震网病毒感染一台计算机时,它会检查该计算机是否连接到西门子Step-7型号的可编程逻辑控制器(PLC,是计算机与工业机械交互和控制的方式)。如果没有检测到PLC,病毒什么也不做,如果有检测到,那么病毒会改变PLC的编程让离心机不规则旋转,从而损坏离心机。同时通过控制器计算机显示离心机一切工作正常,这就使得工作人员很难检测或诊断出离心机的问题。

震网病毒被设计为可以通过U盘传播,运行时包括了用户模式和内核模式,并窃取和利用两个台湾设备制造商的私钥证书来为病毒的内核程序做数字签名,同时利用了至少四个Windows系统的0-day漏洞:一个Windows快捷方式漏洞、一个打印假后台程序漏洞、两个特权升级漏洞、西门子PLC软件的0-day漏洞。

为了让震网病毒能够进入纳坦兹的铀浓缩工厂的计算机,攻击者通过一些渠道将病毒投放到纳坦兹工厂,这需要在伊朗本地的人员完成,因此荷兰情报机构AIVD在2005年招募了一名伊朗工程师埃里克·范·萨本(Erik van Sabben)作为间谍,此人有技术背景,在伊朗有自己的生意,社会关系强大,并在伊朗有自己的家人,因此是理想的间谍人选。

为了称为纳坦兹工厂的供应商,美国和以色列成立了两家公司尝试成为纳坦兹工厂的供应商,其中一家成功获得了工厂的供应商资质,这名伊朗工程师便以这家公司员工名义开展工作和行动。在此期间,该工程师还向情报机构提供了有关离心机和安装的数据,以便病毒的研发人员能够针对纳坦兹工厂中的系统进行开发。之后,震网病毒通过这名工程师成功完成了投放和植入,并又通过工厂内的计算机完成了相互传播和感染。

最先发现蠕虫病毒影响的外界人士是国际原子能机构(IAEA)的检查人员,他们获准进入纳坦兹设施,他们的部分工作是检查并从铀浓缩工厂中移除受损的离心机,以确保它们不会被用于将铀偷运到其他地区。在纳坦兹这样规模的工厂中,每年大约有800台离心机无法使用。但在2010年,IAEA开始注意到损坏离心机的数量异常之高,一位检查员估计有近1000台离心机无法使用,但IAEA并未意识到这种异常和病毒相关。

2010年,震网病毒被意外传播到了纳坦兹工厂之外的其他计算机中,当时伊朗一个办公室的计算机遇到重启和蓝屏死机的情况,即便重装系统也无济于事,当地的安全专家无法定位问题和原因,于是联系了远在白俄罗斯的反病毒公司工作的朋友谢尔盖.乌拉森(Sergey Ulasen),乌拉森和他的团队经过一整天排查后设法隔离了病毒,并意识到其利用的0-day漏洞之多前所未见,于是将他们的发现公之于众,在安全社区进行分享,震网病毒的存在最终被曝光。

荷兰情报机构招募的间谍工程师埃里克·范·萨本(Erik van Sabben)在计划成功实施后成功逃离了伊朗,并在两周后在迪拜的他家附近死于一场摩托车事故。

震网病毒在2010年被曝光时引起了媒体的广泛关注,时至今日,它仍然是历史上最先进的恶意软件之一。

这款病毒之所以广泛被关注且影响深远,原因包括:

  • 它是世界上第一个数字武器,能够对计算机控制的设备造成物理破坏,开创了通过恶意软件攻击他国基础设施的先例。

  • 它在当时被认为是最复杂的网络战攻击。

  • 它毁掉了伊朗近五分之一的离心机,并导致1000台离心机受损,导致伊朗核计划至少推迟了2年。

  • 它利用四个不同的0-day漏洞进行攻击,这在2010年是非常罕见的,至今仍不常见。

  • 震网病毒的攻击证明物理隔离的网络也是可以通过U盘等人为操作无意识中被攻破。

作者:裴伟伟

2024年5月24日

洞源实验室 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1689078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】第七节:堆

个人主页: 深情秋刀鱼-CSDN博客 数据结构专栏:数据结构与算法 源码获取:数据结构: 上传我写的关于数据结构的代码 (gitee.com) ​ 目录 一、堆 1.堆的概念 2.堆的定义 二、堆的实现 1.初始化和销毁 2.插入 向上调整算法 3.删除 向下调整算法…

短剧系统源码解析与应用

在数字化时代,短剧作为一种新兴的娱乐形式,因其内容紧凑、节奏快速而受到广大年轻群体的喜爱。短剧系统源码的开发和应用,不仅为创作者提供了一个展示才华的平台,也为观众带来了全新的观看体验。本文将对短剧系统源码进行解析&…

get和post的区别,二者是幂等的吗?

一、什么是幂等 所谓幂等性通俗的将就是一次请求和多次请求同一个资源产生相同的副作用。 维基百科定义:幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执…

win32-鼠标消息、键盘消息、计时器消息、菜单资源

承接前文: win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列 本文目录 键盘消息键盘消息的分类WM_CHAR 字符消息 鼠标消息鼠标消息附带信息 定时器消息 WM_TIMER创建销毁定时器 菜单资源资源相关菜单资源使用命令消息的…

人类交互2 听觉处理和语言中枢

人类听觉概述 人类听觉是指通过耳朵接收声音并将其转化为神经信号,从而使我们能够感知和理解声音信息的能力。听觉是人类五种感觉之一,对我们的日常生活和交流至关重要。 听觉是人类交流和沟通的重要工具。通过听觉,我们能够听到他人的语言…

jwtcracker下载安装出现错误

1.jwtcracker 用于爆破jwt秘钥 2.下载 ubuntu/kali安装c-jwt-cracker及使用方法-CSDN博客 参考这个大佬写的 但是我在这里出现了这个问题 显示Cannot initialize the default message digest sha256, aborting 我实在找不出来哪里有问题,所以直接换成docker …

Java并发面试题,多线程通关秘籍

【知识点记录】- 不能不知道的知识点 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得&#xf…

Go语言(Golang)的开发框架

在Go语言(Golang)的开发中,有多种开发框架可供选择,它们各自具有不同的特点和优势。以下是一些流行的Go语言开发框架,选择Go语言的开发框架时,需要考虑项目需求、团队熟悉度、社区支持、框架性能和可维护性…

Android 共享内存

Parcelable 和 Serializable 区别 Serializable IO完成(通过磁盘文件读写) Parcelable C 对象指针 来实现共享内存 import android.os.Parcel; import androidx.annotation.NonNull;public class ApiResponseBean extends Throwable implements Parce…

小短片创作-组装场景(一)

1、项目基础设置 通过第三人称模板,创建1个项目 1.自动曝光:关闭,因为要做专业的小短片,曝光需要手动控制。 2.扩展自动曝光中的默认亮度范围:启用 3.全局光照系统:选择屏幕空间光照(SSGI&am…

SpringCloudAlibaba:6.3SpringBoot接入RocketMQ

依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 htt…

vue通过for循环生成input框后双向绑定失效问题

有些时候页面上有太多的表单元素&#xff0c;一个个的写太过繁琐&#xff0c;拿 input 框举例&#xff0c;众多的 input 框&#xff0c;无非就是输入框前的说明和 input 框的 name 属性不一样 <el-form :inline"true" :model"formInline" size"mi…

C语言-atoi()库函数的模拟实现

文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用&#xff0c;以及模拟实现库函数。 一、atoi()库函数的…

allegro 无法删除Xnet

allegro 无法删除Xnet Orcad中打开Constraint Manager之后&#xff0c;再生成网表&#xff0c;导入PCB后就会出现一堆Xnet网络。无法去除Xnet。 解决办法 在原理图ORCAD中&#xff0c; 1、打开Edit Object properties 2、选择Filter by:Capture 3、点击New Property 4、设置…

开源博客项目Blog .NET Core源码学习(25:App.Hosting项目结构分析-13)

本文学习并分析App.Hosting项目中后台管理页面的文章管理页面。   文章管理页面用于显示、检索、新建、编辑、删除文章数据&#xff0c;以便在前台页面的首页、文章专栏、文章详情页面显示文章数据。文章管理页面附带一新建及编辑页面&#xff0c;以支撑新建和编辑文章数据。…

5月20日分割等和子集+最后一块石头的重量Ⅱ

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…

Qt moc系统的黑魔法?

Qt的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的核心功能之一&#xff0c;为C语言增加了一些动态特性&#xff0c;借助元对象系统Qt可以实现以下功能 信号与槽机制&#xff08;Signals and Slots&#xff09;运行时类型信息&#xff08;Run-Time Type In…

激光雷达和相机外参标定

1、外参标定标定什么&#xff1f; 标定激光雷达和相机之间的相对位置&#xff0c;变换矩阵T 2、原理 通过激光扫描出来的轮廓和相机识别出来的栅格的轮廓进行PNP匹配。 3、论文

IDEA的妙用

IDEA 安装破解 复制JetbrainsIdesCrack-4.2.jar到安装目录下 修改安装目录下的bin目录的idea64.exe.vmoptions&#xff1a; 最后一行添加&#xff1a;-javaagent:E:\develop\JetBrains\IntelliJ IDEA 2018.3.5\bin\JetbrainsIdesCrack-4.2.jar(注意&#xff1a;使用自己的路…

大模型时代,掌握Event Stream技术提升Web响应速度

大模型时代,每天搜索都可能会用到一种或多种大模型,在大文本输出的时候,页面是一字一字,一段一段的慢慢输出出来的,这背后是如何实现的呢?我们以KIMI为例 先抓个请求 我们发现界面展示是一句话,但是接口返回的时候是一个字一个字的。 普通请求 多了Event Stream的处理 …