目录
一、工控安全现状
二、工控类攻击事件汇总
三、十大工控网络武器分析
3.1 Stuxnet:工控网络攻击的里程碑
3.2 Duqu-Stuxnet之子
3.3 Flame
3.4 Havex
3.5 Dragonfly2.0
3.6 BlackEnergy
3.7 Industroyer
3.8 GreyEnergy
3.9 VPNFilter
3.10 Triton
四、结语
一、工控安全现状
工控即工业控制系统是水力、电力、石油化工、制造、航空航天、交通运输、军工等国家命脉行业的重要基础设施。这些重要的系统一旦受到攻击,便会严重威胁到居民生活甚至是国家安全。而传统的工控系统安全偏向于功能安全、设备硬件安全属于生产事故或者故障范涛,却极少关注信息安全,由于这些工业控制系统和设备大都比较老旧,生产、制造和使用的过程也较为封闭,使得信息安全问题(包含软件、固件、网络等安全问题)暴露的几率极低。更严重的是即使发现信息安全问题或者黑客攻击,部分系统却难以更新甚至没有更新接口。这些工控系统中存在的安全问题就像是一个个定时炸弹一样隐藏在其中,严重威胁到工控行业的安全。通过对CNVD公开披露的工控漏洞数据的统计分析发现(如图1-1),截至目前有2743个工控漏洞,其中高危漏洞占比为33%,有907个,中危漏洞占比为42%,达1163个,大大高于传统行业的高中危漏洞比例。其中部分硬件级别的漏洞修复极为困难,只能进行硬件更新。
图1-1 工控漏洞等级分布图
通过每年的漏洞披露数量绘制的柱状图如图1-2可以看出,2011年工控类的漏洞数量激增,这可能是因为2010年“震网”攻击伊朗核设施的事件所致。“震网”事件使得工控安全迅速得到了普遍的重视,甚至被各国提升到了国家安全战略的位置,因而信息安全企业和相关安全研究人员持续关注工业控制系统安全问题及工业控制系统厂商在客户的压力下开始注重自己所存在的一些历史遗留安全问题。由此使得接下来的几年里,漏洞披露的数量均保持在较高水平。但由于工业控制系统的封闭性使得工控安全研究进展缓慢,工业控制系统是使用方对信息安全从认识到真正能够实施信息安全相关政策需要一定时间,因而在2015年至2016年多起工控攻击事件如乌克兰电厂两次大规模停电攻击、纽约鲍曼水库防洪控制系统攻击、德国核电站网络攻击、针对西门子ICS/SCADA的IronGate病毒攻击等的刺激,再一次地对工控系统安全发起警告,使得2016的工控漏洞再一次出现了高增长,直到2018年工控安全漏洞数量高达469个。
图1-2 工控漏洞数量
同样,在震网攻击伊朗核设施的事件之后,工控类安全攻击事件的披露数量也得到明显的提升。由于普遍的关注和信息安全厂商的介入,使得这些攻击威胁被提前发现并终止,其中大部分均在情报收集阶段便被披露如Duqu、Flame、Havex(Dragonfly1.0)、Dragonfly2.0、Triton、VPNFilter等,并未造成重大后果,仅有少数攻击是在造成严重事故后才被发现(乌克兰电力系统攻击的BlackEnery和Industroyer)。
值得注意的是,近几年疯狂肆虐的勒索病毒也已经盯上工业控制系统。其中除了2016年爆发的wannacry已经染指工控行业外,去年2018年8月3日台积电开始遭到针对性的勒索病毒攻击致使该企业高达18亿的损失,而2019年3月18日位于挪威全球最大铝生产商之一的海德鲁(Norsk Hydro)公司同样也遭到了针对性的勒索软件攻击,致使其位于欧洲和美国的部分自动化生产线被迫关闭。
本文首先会就2000年之后的工控网络攻击事件进行梳理并选取其中最具影响的攻击事件及相关的攻击武器进行详细阐述。将会对这些攻击事件进行深入探讨并对其中10个重要的攻击武器进行一次总结归纳,通过分析其攻击背景、目标、手法以及技术特性,以使大家对工业控制系统所面临的安全威胁有一个更为全面的认识。
二、工控类攻击事件汇总
在2019年3月7日,委内瑞拉全国发生大规模停电事件,影响23个州中的18个州,美国被指导演了这场针对委内瑞拉的“电力战争”,但目前并没有直接证据. 但美国国务卿迈克•蓬佩奧在3月7日晚上发布了一条推特:“No food. No medicine. Now, no power. Next, no Maduro.”,似乎印证了该指责。迈克•蓬佩奧的Twitter截图如图2-1所示。
图2-1 蓬佩奧Twitter截图
如果委停电事故的确有国家级网络攻击所致,那么该事件便是一起比以往任何工控攻击事件都严重的网络攻击事件,该次事件导致本已政局不稳的委内瑞拉更加动荡不安。在曾经的工控攻击事件中,有两次是针对电力系统并且成功导致大范围停电的网络攻击,分别为2015年12月和2016年12月的乌克兰电力系统攻击事件。除了这几起导致了严重后果的工控攻击外,从2000年开始已经有持续不断的工控恶意攻击事件,本节将会从2000年到目前的39起攻击事件进行回顾分析。而其中许多都是具有政府背景的网络安全攻击如:攻击伊朗的Stuxnet、针对能源行业的Duqu、攻击乌克兰电厂的Blackenergy和Industroyer等等,我们将目前能够收集到该类黑客攻击事件绘制成了一个时间线,如图2-2所示。
图2-2 工控攻击事件时间线
(1)澳大利亚马卢奇污水处理厂非法入侵事件
2000年3月,澳大利亚昆士兰新建的马卢奇污水处理厂出现故障,故障表现为:无线连接信号丢失、污水泵工作异常、报警器也没有报警。经过调查后发现是该厂前工程师Vitek Boden因不满工作续约被拒而蓄意报复所为。Vitek Boden通过一台手提电脑和一个无线发射器控制150个污水泵站长达三个多月,在此期间,共计有100万公升的污水未经处理直接经雨水渠排入自然水系,进而导致当地环境受到严重破坏。
(2) 加州电力运营商被入侵
2001年5月11日,黑客入侵监管加州多数电力传输系统的独立运营商被发现。Cal ISO的官员说,安全漏洞已经被修复,电网没有受到威胁。但是,据了解内情的人称,黑客已经非常接近进入控制系统的关键部分了,一旦进入核心控制部分,可能会破坏整个加州的电网。事后的一份内部调查报告显示:该攻击最早于4月25日开始,直到5月11日才被发现。
(3)美国Davis-Besse核电站受到Slammer 蠕虫攻击事件
2003年1月,美国俄亥俄州Davis-Besse核电站和其它电力设备受到SQL Slammer(也被称为“蓝宝石”)蠕虫攻击,导致该核电站计算机处理速度变缓、安全参数显示系统和过程控制计算机长达5小时无法正常工作。经调查发现,该病毒利用SQL Server 2000中1433端口的缓冲区溢出漏洞进行攻击,在攻击成功后,它会尝试感染随机生成的IP地址对应的主机,进而使得网络拥堵,造成SQL Server无法正常工作甚至宕机。
(4)龙泉、政平、鹅城换流站控制系统感染病毒事件
2003年12月30日,龙泉、政平、鹅城换流站控制系统感染病毒。事后调查发现,由于外国工程师在系统调试中使用笔记本电脑上网,因此导致控制系统感染病毒。
(5)美国Browns Ferry核电站受到网络攻击事件
2006年8月,美国阿拉巴马州的Browns Ferry核电站3号机组受到网络攻击,反应堆再循环泵和冷凝除矿控制器失灵,导致3号机组被迫关闭。事后调查发现,调节再循环泵马达速度的变频器(VFD)和用于冷凝除矿的可编程逻辑控制器(PLC)中都内嵌了微处理器。通过微处理器,VFD和PLC可以在以太局域网中接受广播式数据通讯。但是,由于当天核电站局域网中出现了信息洪流,VFD和PLC无法及时处理,致使两台设备瘫痪。
(6)黑客通过互联网控制哈里斯堡污水处理厂计算机事件
2006年10月, 黑客通过一台受感染的笔记本电脑访问位于宾夕法尼亚州哈里斯堡的水处理厂的计算机系统,并以此为跳板在工厂内部计算机中安装病毒和间谍软件,而该受感染笔记本电脑系污水厂员工所有。美国联邦调查局费城办事处的特工杰里威廉姆斯说,黑客不是为了破坏污水处理厂,而只是将计算机作为分发电子邮件的资源或者用作其他用途。美国水工协会宾夕法尼亚分部安全协调员Mike Snyder说,如果黑客是针对污水处理厂发起的攻击,那可能会产生极其严重的后果,因为一旦攻击者提高水中的氯的含量,会使污水变得非常危险。
(7)黑客入侵加拿大的一个水利SCADA控制系统事件
2007年,黑客入侵了加拿大一个水利SCADA控制系统,并破坏了用于取水调度的控制计算机。
(8)14岁男孩入侵有轨电车事件
2008年1月8日,14岁波兰男孩利用自己改装的电视遥控器“入侵”罗兹市有轨电车系统的轨道控制系统,改变电车运行轨道,致使四辆电车脱轨,所幸没有人员遇害。
(9) 震网病毒攻击伊朗核电站
2010年6月,Stuxnet被白俄罗斯安全公司VirusBlokAda首次发现,它的传播是从2009年6月开始甚至更早,它攻击伊朗布什尔核电站,致使铀浓缩设备的出现故障,成功推迟了伊朗核计划,是第一个专门定向攻击真实世界中基础(能源)设施的恶意代码。
(10)Duqu(Stuxnet变种)收集工控系统周边情报
Duqu是2011年9月1日在布达佩斯技术经济大学的密码学与系统安全(CrySyS)实验室中发现的恶意软件,被认为是Stuxnet的一个新型变种并且由以色列的“8200部队”创建。其目的是潜伏并收集攻击目标的各种信息,以便在获得远程进入的能力,为将来发动网络袭击做技术储备。
(11)全新网络间谍Flame攻击能源领域
Flame是2012年5月被发现的恶意代码,在中东地区大范围传播。其构造复杂,可以通过USB存储器以及网络复制和传播,并能接受来自世界各地多个服务器的指令。
(12) 全球最大的石油公司被黑客攻击
2012年8月15日,沙特阿拉伯国营石油公司阿美石油公司(Aramco)遭到Shamoon电脑病毒的侵袭。该病毒清除了四分之三的阿美公司企业PC上的数据(电子表格、电子邮件等文件),并用一张燃烧的美国国旗图片改写了硬盘的主引导记录。美国官员进而暗示,这起攻击事件是在某个国家政府的支持下进行的,其中有些报道援引有些人的猜测表示,Shamoon电脑病毒来自伊朗。然而,在这场电脑病毒袭击事件发生后,一个自称为“正义利剑”(Cutting Sword of Justice)的黑客行动主义者组织声称对这起事件负责,他们表示,他们此举是为了抗议沙特政府采取的相关行动。
(13)USB病毒攻击美国电厂窃取工控系统数据
2012年,两座美国电厂遭受USB病毒攻击。随后美国工控应急响应中心表示,包含恶意程序的U盘插入系统,导致工厂的工控系统被病毒感染,攻击者可以远程控制受感染的电脑并窃取相关数据。
(14)Havex袭击工业控制系统
Havex于2013年被发现,主要攻击对象是欧洲的使用和开发工业应用程序和机械设备的公司,并成功入侵1000多家欧洲和北美能源公司。
(15) 俄罗斯一座核电厂被震网感染
2013年11月12日,卡巴斯基披露,臭名昭著的“震网”病毒感染了俄罗斯的一座核电厂,据说这家尔罗斯核电站并未接入互联网。
(16)日本Monju核电厂控制室被入侵,部分数据被泄露。
2014年1月2日,Monju核电站控制室中的一台计算机遭到入侵。网络管理员发现,在员工更新了某电脑中的一个免费应用程序后,反应堆控制室中的系统在过去5天内被访问了30多次。该计算机中存有42000多封电子邮件和员工培训资料。调查次事件的专家认为这是一次基于恶意软件的攻击。恶意代码可能是通过软件更新感染到核电站内部并窃取了一些数据,然后发送到C&C服务器。网络出站流量日志显示,C&C服务器在韩国。
(17)韩国水力核电厂计算机系统被入侵,内部资料外泄。
2014年12月,运行韩国23个核反应堆的韩国水电核电有限公司(KoreaHydro and Nuclear Power Co.,Ltd)表示,其计算机系统遭到黑客攻击,但只有非关键数据被盗。
(18)德国钢铁厂遭受APT攻击
2014年12月,德国联邦信息安全办公室公布消息称:德国一家钢铁厂遭受高级持续性威胁(APT)网络攻击,并造成巨大的经济损失。攻击者使用鱼叉式钓鱼邮件和社会工程手段,获得钢厂办公网络的访问权。然后利用这个网络,设法进入到钢铁厂的生产网络。攻击者的行为导致工控系统的控制组件和整个生产线被迫停止运转,由于不是正常的关闭炼钢炉,从而对设备造成重大物理伤害。
(19)中石化华东公司内鬼破坏SCADA系统骗取维修费
2015年5月23日,上海市奉贤区人民法院宣判了一起破坏SCADA系统谋取私利的案件。涉案人员徐某、王某以谋取维修费用为目的,由徐某针对中石化华东公司SCADA系统开发了一套病毒程序,王某利用工作之便,将此病毒程序植入到华东公司SCADA系统的服务器中,导致SCADA系统无法正常运行,软件公司先后安排十余名中外专家均无法解决问题。此时,两名嫌疑人再里应外合,由公司内部的王某推荐开发病毒程序的徐某前来“维修”,骗取高额维修费用,实现非法牟利。
(20) 波兰航空公司操作系统遭遇黑客攻击
2015年6月21日,LOT波兰航空公司的地勤系统遭黑客攻击,无法制定飞行计划,致使预定航班无法出港,导致长达5个小时的系统瘫痪,至少10个班次的航班被迫取消,超过1400名乘客被迫滞留在波兰华沙萧邦机场。所幸,黑客攻击没有对正在飞行的飞机和机场系统产生影响,否则后果不堪设想。该事件是全球首次发生的航空公司操作系统被黑事件。
(21) 乌克兰大停电
2015年12月23日,乌克兰电力部门遭受到恶意代码攻击,乌克兰新闻媒体TSN在24日报道称:“至少有三个电力区域被攻击,并于当地时间15时左右导致了数小时的停电事故”;“攻击者入侵了监控管理系统,超过一半的地区和部分伊万诺-弗兰科夫斯克地区断电几个小时。
(22)黑客入侵纽约鲍曼水库
2016年3月24日,美国司法部公开指责7名伊朗黑客入侵了纽约鲍曼水坝(Bowman Avenue Dam)的一个小型防洪控制系统。幸运的是,经执法部门后期调查确认,黑客还没有完全获得整个大坝计算机系统的控制权,仅只是进行了一些信息获取和攻击尝试。这些伊朗黑客可能为伊朗伊斯兰革命卫队服务,他们还涉嫌攻击了包括摩根大通、美国银行、纽约证券交易所在内的46家金融机构。
(23)德国核电站遭网络攻击
2016年4月,德国Gundremmingen核电站的计算机系统,在常规安全检测中发现了Conficker和Ramnit恶意软件。核电站的操作员RWE为防不测,关闭了发电厂。
(24)Stuxnet震网病毒的高仿版IronGate——专攻西门子ICS/SCADA
2016年6月2日,FireEye称,他们于2015年下半年发现一款恶意软件——IronGate(铁门),该恶意软件利用了和Stuxnet相同的技术和功能,并将目标锁定在了西门子工业控制系统上。在2014年,两个不同来源的该恶意代码被上传到VirusTotal,但是当时所有的防病毒厂商都没有将其标记为恶意。IronGate的特点是针对工业过程模拟中的过程输入输出(IO)和过程操作员软件的中间人(MITM)攻击。Irongate用恶意DLL替换正常的DLL,恶意DLL充当可编程序逻辑控制器(PLC)与合法监控系统之间的中间人。该恶意DLL从PLC到用户界面记录“正常”的流量并进行替换,同时将不同的数据再发回PLC。这就允许攻击者在操作者不知情的情况下改动受控过程。由此可见,Irongate和Stuxnet的相似之处:均利用寻找和替代专用的DLL文件,来实现中间人攻击。从复杂性上说,IronGate与Stuxnet相比根本不在一个量级,但是它使用了一些新技术和方法。二者的不同点:Stuxnet检测杀毒软件,而IronGate检测运行环境(VMware、Cuckoo);Stuxnet不会隐藏过程操作,而是暂停了S7-315的正常运行,但IronGate主动记录和回放过程数据以隐藏操作。该恶意软件似乎是为在某种特定仿真环境下运行编写的,因此FireEye的研究人员认为该软件可能是一种工控系统攻击技术测试、概念验证或研究活动。
(25)“食尸鬼”网络攻击
2016年8月,卡巴斯基揭露了针对工控行业的“食尸鬼”网络攻击,该攻击针对30多个国家的工业、制造业和工程管理机构发起了定向渗透入侵,利用鱼叉式钓鱼邮件攻击目标机构的高级管理人员的PC,攻击中使用键盘记录程序HawkEye收集受感染系统的输入数据。攻击范围包括西班牙、巴基斯坦、阿联酋、印度、中国、埃及等国。
(26)黑客入侵美国供水电脑系统操作系统
2016年10月9日,黑客利用美国宾夕法尼亚州哈里斯堡市一家自来水厂员工的个人电脑入侵了该厂负责水过滤的电脑系统,并在水过滤电脑上安装间谍软件,利用受感染主机向外发送电子邮件和盗版软件,与此同时,黑客还修改了该电脑的登录密码,致使水厂管理员也不能够进入操作系统。
(27)Shamoon v2攻击沙特阿拉伯民用航空管理局
2016年12月,安全研究人员发现Shamoon出现了新变种,并称它为“Shamoon 2”。黑客利用它对沙特阿拉伯民用航空管理局(Saudi Arabia’s General Authority of Civil Aviation,GACA)发起有针对性的攻击。
(28)乌克兰电网遭攻击,造成大范围停电
2016年12月17日当地时间23点左右,乌克兰的国家电力部门又一次遭遇了黑客袭击,这次停电持续了 30 分钟左右,受影响的区域是乌克兰首都基辅北部及其周边地区。推测2016年12月那次半个小时的乌克兰停电事件是由Industroyer攻击导致。
(29) WannaCry利用永恒之蓝漏洞肆虐全球
2017年5月12日,WannaCry勒索病毒利用MS17-010漏洞袭击全球,至少150个国家、30万名用户中招,造成损失达80亿美元,已经影响到金融,能源,医疗等众多行业。中国部分普通用户和企事业单位受到感染,导致大量文件被加密,无法正常工作,影响巨大。
(30) Dragonfly 2.0出现
2017年9月6日,赛门铁克发布消息称,著名俄罗斯黑客组织“Dragonfly”近期活动更加频繁。“Dragonfly”是一个专门以能源电力机构、ICS设备制造厂商、石油管道运营商等为攻击目标的黑客组织。最近发现的“Dragonfly”从攻击目的和恶意代码技术上都有所提升,被称为“蜻蜓二代”或者“Dragonfly2.0”。
(31)Triton被FireEye披露
2017年11月中旬,Dragos Inc.团队发现了针对ICS量身定做的恶意软件,并将此恶意软件命名为TRISIS(又被称为 Triton 和 HatMan),该恶意软件的攻击目标是沙特阿拉伯的一家石油化工厂。同年12月,FireEye发布了Triton的分析报告。Triton恶意代码当时的攻击目的是破坏其运营并引发爆炸,因为攻击者的一个失误触发了关键系统紧急关停,导致攻击失败,暴露自身。
(32)俄黑客对美国核电站和供水设施攻击事件
2018年3月15日,US-CERT对外公告(TA18-074A)称俄罗斯黑客发起针对美国某发电厂的网络攻击。本次攻击的主要目的是以收集情报为主,攻击者植入了收集信息的程序,该程序捕获屏幕截图,记录有关计算机的详细信息,并在该计算机上保存有关用户帐户的信息。
(33)台积电遭勒索病毒入侵,3天损失18亿
2018年8月3日晚间,台积电位于台湾新竹科学园区的12英寸晶圆厂和营运总部,遭遇勒索软件攻击且生产线全数停摆。直到8月6日台积电官方才发表声明,称已经恢复生产。官方发言人还表示这三天的停摆,将会直接导致台积电第三季度的营收下降3%!而据此前对台积电第三季度营收的预测为600亿,3%也就是18亿!台湾媒体爆料称,这次攻击台积电设备的是勒索病毒Wannacry,而中毒的原因可能是Windows 7系统没有升级补丁,或者没有关闭445端口,导致WannaCry病毒入侵就迅速传播到其他生产线中。
(34)GreyEnergy攻击乌克兰和波兰能源公司
2018年10月 18日,ESET团队称发现一个新的APT组织GreyEnergy,该APT组织被认为是BlackEnergy的继承者。在过去三年内,GreyEnergy主要针对乌克兰和波兰的能源公司等高价值目标。GreyEnergy的恶意软件框架与BlackEnergy具有很多相似之处。研究人员并没有观察到专门针对ICS的恶意软件模块,但GreyEnergy的攻击策略一直是针对关键基础设施中的SCADA工作站和服务器等。
(35) 意大利石油与天然气服务公司Saipem遭遇网络攻击
2018年12月10日,意大利石油与天然气开采公司Saipem遭受网络攻击,主要影响了其在中东的服务器,包括沙特阿拉伯、阿拉伯联合酋长国和科威特,造成公司10%的主机数据被破坏。Saipem发布公告证实此次网络攻击的罪魁祸首是Shamoon恶意软件的变种。McAfee研究人员Shamoon磁盘擦除攻击归咎于伊朗黑客组织APT33。
注:APT33是一个可疑的伊朗威胁组织,自2013年以来一直在运营。该组织针对的是美国、沙特阿拉伯和韩国的多个行业,其中尤其关注航空和能源领域。
(36)VPNFilter攻击
VPNFilter恶意代码旨在入侵物联网设备(路由器、网络存储设备等)从事可能由国家发起的全球性的高级恶意软件攻击。它能够根据远程的指令,安装不同特定功能的模块,并运行相应的功能,不同场合安装的模块可能会不一样,如在工业控制设备上会安装Modbus、SCADA相关的组件,在需要监听通信内容时安装Tor、ssller模块等。其中,ssller模块可用于中间人攻击,向网络注入恶意流量负载,修改发送的流量,嗅探网络数据,并收集凭证,监督控制和数据、Tor模块与远程C&C进行加密通信。
(37)委内瑞拉停电事件
2019年3月7日,委内瑞拉全国发生大规模停电事件,影响23个州中的18个州。据媒体报道,停电是因为南部玻利瓦尔州的一座主要水电站发生故障,事件发生后,委内瑞拉政府立刻组织人力调拨资源全力恢复,与此同时,总统马杜罗指出,大规模停电是美国方面的攻击行为造成,但是并未提供上述指控的证据。
(38)全球最大铝生产商遭LockerGoga勒索软件攻击
据外媒报道, 2019年3月18日,位于挪威全球最大铝生产商之一的海德鲁(Norsk Hydro)公司遭勒索软件攻击,攻击致使其位于欧洲和美国的部分自动化生产线被迫关闭,并以手工生产流程运营冶炼厂。如当前情况持续则可能导致延迟交货,甚至可能会影响铝价格。据挪威国家安全局(NSM)称,攻击者有可能使用了在今年1月首次被发现的LockerGoga勒索软件,它不是一种大范围传播的勒索软件,但在今年早些时候也曾被用于攻击法国工程咨询公司Altran Technologies,而海德鲁应该是该勒索软件近期唯一的受害者。
(39)Triton卷土重来
2019年4月10,FireEye披露了工业控制系统恶意软件Triton的最新的战术、技术、流程(TTP),并将其kill chain发布到了MITRE ATT&CK框架,但是并未公布本次受到攻击基础设施的类型,行业以及所处地理位置等相关信息。报告称攻击者已经在目标网络中潜伏将近一年,在建立立足点以后,攻击者使用多种工具进行侦查、横向移动以及持久化。
从上述的攻击事件可以看出,工控行业的攻击从未有所停止,反而更加的频繁,这些攻击大多都是具有经济目的和政治动机的。大都前期利用间谍软件进行情报获取,试图通过情报信息的分析来确定其下一步攻击,部分攻击已经切实的导致设备停机网络断电等严重后果。因此,对于这些工控攻击所采用的攻击手法、攻击工具、攻击路径的更深入的理解变得非常重要。下一章我们将从以上39件工控行业的攻击事件中选出其中影响力较大的攻击及其攻击武器进行更加深入的分析。
三、十大工控网络武器分析
从已发现的工控网络攻击案例可以看出,大部分的攻击在情报收集阶段已经被披露,少部分如震网攻击、乌克兰电厂攻击等事件是因为攻击成功并导致严重后果后才被发现。其中从已被披露的工控恶意代码来看,基本上所有的工控恶意代码都具有情报收集的能力,如Duqu、Flame、Havex、Dragonfly2.0、Industroyer、VPNFilter等,它们收集的情报内容包括但不限于目标主机系统信息、目标网络拓扑结构、工业设施有关的设计图纸、登录凭证(VPN、SSH、远程桌面等)、目标主机中的文档,图片,音视频文件(office,pdf,png, txt等)等等。而在攻击事件中少部分工控恶意代码被发现存在破坏性能力,它们可致使目标工控系统瘫痪或者故障。如众所周知的Stuxnet就是通过突然改变发动机转速来破坏浓缩铀工厂的核心部件离心机,进而达到减缓伊朗核进程的目的。以及成功破坏乌克兰电厂系统并造成大面积停电的BlackEnergy和Industroyer。
工控系统是一个国家极为重要的基础设施,一旦遭受到网络攻击,会严重影响正常工业生产造成巨大的经济损失,甚至可能导致公共安全事故危害人民的生命安全,以至于影响社会稳定,如:道路失去了交通信号灯、医院里的病人无法得到及时的救治等。因此,只有更好的掌握工控恶意代码的攻击手法、攻击执行过程才能避免悲剧的发生。
3.1 Stuxnet:工控网络攻击的里程碑
3.1.1 Stuxnet简介
Stuxnet(又称作超级工厂、震网,双子),是Windows平台上的恶意代码,于2010年6月被白俄罗斯的一家安全公司(VirusBlokAda)发现。因为恶意代码中包含“stux”字符,所以被命名为“震网病毒(Stuxnet)”。Stuxnet利用西门子公司控制系统(SIMATIC WinCC/Step7)存在的漏洞感染数据采集与监控系统(SCADA),向可编程逻辑控制器(PLC)写入代码并将代码隐藏。因其代码及其复杂攻击手法极其隐蔽,也被称为有史以来最复杂的网络武器,同时它也是全球首个在工控领域投入实战并取得胜利的网络武器。
Stuxnet攻击目标
研究表明,该病毒60%的感染发生在伊朗。2012年6月1日,美国《纽约时报》的一篇报道也证实了这一研究结果。报道内容大致如下:Stuxnet病毒起源于2006年前后,由美国总统小布什启动的“奥运会计划”,是美国国家安全局外交事务局(FAD)在以色列协助下研发,旨在减缓伊朗的核计划,从而避免采取高风险的空袭。2008年,奥巴马上任后下令加速该计划,纽约时报报道内容如图3-1所示。
图3-1 纽约时报关于“奥运会计划”的报道
产生的后果
据估计,“震网”病毒使伊朗的核计划延迟了至少2年。
攻击行动涉事人员
加比•阿什克纳齐(Gabi Ashkenazi)是以色列国防军第19任总参谋长,在2007年上任。在2011年加比•阿什克纳齐的退役晚宴中的一段视频显示,Stuxnet被以色列国防军当作一次胜利。加比•阿什克纳齐在Wikipedia的简介如图3-2所示。
图3-2 加比•阿什克纳齐在Wikipedia的简介
2013年5月,Edward Snowden 在接受采访中透露:美国国家安全局(NSA)和以色列联手开发了破坏伊朗铀浓缩设备的 Stuxnet。在2009年至2010年,Stuxnet渗入伊朗核设施网络,用于改变数千台离心机发动机的运转速度。这种突然的改变发动机转速会对离心机造成无法修复的伤害,从而达到破坏伊朗核研究的目的。
2013年6月,美国司法部因Stuxnet泄密事件开始调查美国战略司令部前负责人詹姆斯卡特赖特(James Cartwright)将军。联邦调查人员怀疑卡特赖特向“纽约时报”记者泄露了该行动的细节,詹姆斯卡特赖特当即否认这一指控,但是,在2016年10月17日,卡特赖特在美国哥伦比亚特区地方法院认罪。2017年1月17日,巴拉克•奥巴马(Barack Obama)总统赦免了他,从而使他无罪。詹姆斯卡特赖特在Wikipedia的介绍如图3-3所示。
图3-3 詹姆斯卡特赖特在Wikipedia的简介
根据纽约时报关于Stuxnet的报道,结合在任时间窗口和个人背景,我们推测Stuxnet的实际的执行者有可能是前CIA将军迈克尔•海登(Michael Hayden),Michael Hayden在Wikipedia的履历如图3-4所示。
图3-4 迈克尔.海登在Wikipedia的简介
直到今天也没有人正式承认或否认这次对伊朗的网络打击这是谁干的,因为即便是现在Stuxnet仍然具有攻击性,甚至有可能已经升级成为隐蔽性更好,破坏力更强大的更高级的病毒。
3.1.2 Stuxnet攻击原理
Stuxnet是一个定向攻击现实世界中能源设备的恶意代码,它的成功给很多人敲响了警钟:内网也不是绝对的安全、工控领域面临着巨大的风险。让我们从技术的角度来阐述一下Stuxnet攻击的实现原理。
攻击路径
Stuxnet的攻击目标是SIMATIC WinCC(Windows Control Center)--视窗控制中心。WinCC为工业领域提供完备的监控与数据采集(SCADA)功能,部署在专用的内部网络中,并与外部互联网实行物理隔离。Stuxnet采取多种手段进行渗透和传播,如图3-5所示。
图3-5 Stuxnet攻击流程图
攻击大致流程如下:Stuxnet首先感染外部主机,然后感染与此主机相连的移动存储介质,利用快捷方式文件解析漏洞感染局域网电脑,在内网中,通过快捷方式解析漏洞、RPC远程执行漏洞、打印机后台程序服务漏洞,实现联网主机之间的传播,最后抵达安装了WinCC软件的主机,展开攻击。
攻击中所用的0day漏洞
Stuxnet为了实现传播和攻击,利用了微软操作系统中4个0Day漏洞,有安全研究员统计Stuxnet中0Day漏洞的总价值超过一百万美元,Stuxnet中使用的漏洞和在攻击过程中的功能如下:
RPC远程执行漏洞(MS08-067)与提升权限漏洞
这是2008年爆发的一个极严重的微软操作系统漏洞,其特点是利用简单、波及范围广、危害程度高。具体而言,存在此漏洞的系统收到精心构造的RPC请求时,可能允许远程执行代码。在Windows 2000、Windows XP和Windows Server 2003系统中,利用这一漏洞,攻击者可以通过恶意构造的网络请求直接发起攻击,无需认证直接执行任意代码,并且具有完整的权限。Stuxnet利用这个漏洞实现在内部局域网中的传播。
快捷方式文件解析漏洞(MS10-046)
在Stuxnet攻击中使用的一个0Day漏洞,该漏洞利用Windows在解析快捷方式文件(例如.lnk文件)时的系统机制缺陷,使系统加载攻击者指定的DLL文件,从而触发攻击行为。Stuxnet蠕虫会搜索电脑中的可移动存储设备,一旦发现新设备,就将恶意的快捷方式文件和DLL文件拷贝到其中。如果用户将这个设备再插入到内部网络中的其他计算机上使用,就会触发漏洞,从而实现所谓的“摆渡”攻击,即利用移动存储设备对物理隔离网络的渗入。
打印机后台程序服务漏洞(MS10-061)
在Stuxnet攻击中使用的一个0Day漏洞,Windows打印后台程序没有合理地设置用户权限。攻击者可以通过提交精心构造的打印请求,将文件发送到暴露了打印后台程序接口的主机的%System32%目录中。成功利用这个漏洞可以以系统权限执行任意代码,从而实现传播和攻击。Stuxnet利用这个漏洞实现在内部局域网中的传播。
内核模式驱动程序(MS10-073)
在Stuxnet攻击中使用的一个0Day漏洞,Stuxnet利用这个漏洞进行提权。
任务计划程序漏洞(MS10-092)
此漏洞允许特权提升。 攻击者必须拥有有效的登录凭据并能本地登录才能利用此漏洞。 Stuxnet利用这个漏洞进行提权。
Stuxnet除了使用多个0Day漏洞进行感染和传播外,它还盗用了一家台湾公司(瑞昱半导体公司)的数字证书对恶意代码进行签名,从而成功的绕过安全软件的防护。
Stuxnet在二进制代码中会用到一个固定的异或算法的密钥为:0xAE1979DD,相关代码如图3-6所示。
图3-6 异或密钥
~WTR4141.tmp该模块还会创建一个名为"{BE3533AB-2DDC-46a1-8F7B-F102B8A5C30A}"的互斥体,关键代码如图3-7所示。
图3-7 互斥体名
~WTR4141.tmp该模块还利用IATHook实现文件隐藏,主要Hook了FindFirstFileW、FindNextFileW、FindFirstFileExW、NtQueryDirectoryFile、ZwQueryDirectoryFile这5个函数,关键代码如图3-8所示。
图3-8 被Hook的API
3.1.3 控制域名
www.mypremierfutbol.com |
www.todaysfutbol.com |
smartclick.org |
best-advertising.net |
internetadvertising4u.com |
ad-marketing.net |
注:上表中的域名虽然曾经被用于Stuxnet恶意代码,但是不排除现在已被用作其他用途。
3.2 Duqu-Stuxnet之子
3.2.1 Duqu简介
Duqu(中文名:毒区)在2011年9月1日,于布达佩斯技术经济大学的密码学与系统安全(CrySyS)实验室中被发现。由于它创建的临时文件都是以 ~DQ开头,因此被命名为Duqu。Duqu与Stuxnet有一定的相似度,它们都使用了相同的加密算法和密钥,此外,Duqu也盗用了一家台湾公司(骅讯电子公司)的数字证书对恶意代码进行签名。
Duqu2.0是在2015年卡巴斯基的一次安全检测中被发现的。卡巴斯基经过调查后发现,该恶意代码已经在其内部网络潜伏长达数月,进一步研究发现,入侵卡巴斯基和入侵伊朗核问题“六方会谈”承办酒店电脑的都是Duqu2.0。
相关目标
Duqu主要目的是刺探与伊朗核计划有关的情报。Duqu2.0 被一些安全机构认定是以色列“8200部队”的产物,被用来监视伊朗核谈判和经济制裁,因为它感染位于瑞士和奥地利酒店的计算机,这些酒店就是伊核六方会谈(“P5+1”组织成员国包括美国、俄罗斯、中国、英国、法国和德国)的国际谈判地点。
注:以色列的8200部队相当于美国的NSA或英国的政府通信总部,是以国防军中规模最大的独立军事单位,从事电子侦查活动,该部队的正式名称为“中央情报搜集部队”,8200是其番号。 它最成功的情报工作是在“六日战争”(也称为第三次阿以战争)的第1天,就成功截获时任埃及总统纳赛尔和时任约旦国王侯赛因的高保密专线电话,因此它被情报专家认为是世界上令人生畏的网络间谍部队。
Duqu 2.0除了入侵卡巴斯基和“六方会谈”以为,它还针对奥斯维辛-比克瑙集中营解放70周年的纪念活动发动了类似攻击,它的攻击目标组织还包括欧洲电信运营商,北非电信运营商和东南亚电子设备制造商等。
攻击目的
Duqu的攻击目的不是以破坏为主,而是潜伏并收集被攻击者的各种情报信息,为将来可能发生的网络战提供准确的情报。
3.2.2 攻击原理
Duqu恶意代码包含两部分,一部分用于信息侦测,另一部分用于信息传送。Duqu在执行30天后会自毁并删除所有的入侵痕迹,但攻击者也可以通过控制C2服务器下发额外的配置来推迟自毁时间。Duqu攻击没有使用0day漏洞利用程序来帮助其传播,也不能像Stuxnet那样自动的传播,但是一旦机器感染了Duqu,攻击者只需手动的向受控制的服务器上发送攻击指令,它就可以立即感染其他的机器。安全研究人员在代码中还发现了复活节彩蛋,它包含了一行版权声明“Copyright (c) 2003 Showtime Inc. All rights reserved. DexterRegularDexter”,Dexter是指在Showtime电视台放映的《嗜血法医》。
为了躲避杀毒软件的查杀:Duqu2.0利用Windows Installer的MSI安装包加载恶意代码所需的资源并解密,再将执行权限交给内存中的代码,进而绕过了反病毒产品的检测。在反删除和反检测功能的实现上:Duqu2.0的恶意代码只驻留在受感染计算机内存中,没有文件落地到磁盘;并且在受感染计算机重启前做自我清理;以及在该计算机再次启动后,它会被局域网中的其它受感染主机再次感染。因此要想从受感染的主机上完全清除Duqu2.0,必须把局域网中所有的主机同时断电重启,而且在重启前还要找到哪个机器上有恶意的驱动程序,只有把它们卸载掉,才能把Duqu2.0清理干净。
除了上述特点外,Duqu2.0还利用了至少3个以上0Day漏洞进行感染,漏洞编号和功能如下表格所示:
漏洞编号 | 功能 | 描述 |
CVE-2015-2360 | 提升权限 | 本地提权 |
CVE-2014-4148 | 远程执行任意代码 | 远程执行 |
CVE-2014-6324 | 在局域网中横向移动 | 利用该漏洞可以把非特权域用户将凭据提升为域管理员帐户。 |
“CTwoPENC.DLL”在 “win32k.sys” 中利用一个0-day漏洞获取到内核权限并利用这个漏洞来创建多个窗口,名称分别是“CPer”、“Zero”、“CTwo”、“Vero”,如图3-9所示。
图3-9 漏洞利用核心代码
同源性分析
研究结果表明Duqu 和Stuxnet 共享了大量的代码,但有效载荷完全不同。Duqu用远程控制代码替换了Stuxnet中破坏ICS系统的代码。对Duqu和Stuxnet所采用的编译器、核心模块、功能、数据结构进行相似性分析,比对结果如下表所示:
项目 | Duqu | Stuxnet |
功能模块化 | 是 | |
Ring0注入方式 | PsSetLoadImageNotifyRoutine | |
Ring3注入方式 | Hook ntdll.dll | |
注入系统进程 | 是 | |
资源嵌入DLL模块 | 一个 | 多个 |
利用微软漏洞 | 是 | |
使用数字签名 | 是 | |
包括RPC通讯模块 | 是 | |
配置文件解密密钥 | 0xae240682 | 0x01ae0000 |
注册表解密密钥 | 0xae240682 | |
Magic number | 0x90,0x05,0x79,0xae | |
使用异或加密 | 是 | |
异或加密密钥 | 0xAE1979DD | |
运行模式判断代码存在Bug | 是 | |
注册表操作代码存在Bug | 是 | |
攻击工业控制系统 | 否 | 是 |
驱动程序编译环境 | Microsoft Visual C++ 6.0 | Microsoft Visual C++ 7.0 |
通过上表可以看出,Duqu和Stuxnet都是模块化开发,注入方式一样,具有相同的注册表解密密钥、魔数和bug代码,因此Duqu和Stuxnet极有可能同源,并且由于Stuxnet闭源,所以它们可能由同一个黑客组织即方程式组织所开发。
对SHA256为20a3c5f02b6b79bcac9adaef7ee138763054bbedc298fb2710b5adaf9b74a47d的样本进行分析,定位到其异或密钥0xAE1979DD,关键代码位置如图3-10所示。
图3-10 异或密钥
3.2.3 控制命令服务器
182.253.220.29 |
186.226.56.103 |
206.183.111.97 |
206.183.111.98 |
注:上表中的IP虽然曾经被用于Duqu恶意代码,但是不排除现在已被用作其他用途。
3.3 Flame
3.3.1 Flame简介
Flame(也被称作Flamer、Da Flame、sKyWiper、Skywiper)于2012年5月28日被卡巴斯基披露,由卡巴斯基在国际电信联盟(ITU)的一次调查中发现。Flame是一种模块化的、可扩展的、可更新的,具有广泛隐蔽性和极强攻击性的恶意代码。在收到控制者发出的控制指令后,Flame就能够通过USB移动存储介质以及网络进行复制和传播,而发出控制指令的服务器来自世界各地。它会运用包括键盘、屏幕、麦克风、移动存储设备、网络、WIFI、蓝牙、USB和系统进程在内的所有的可能条件去收集信息。Flame还会将用户浏览的网页、通讯通话(Skype聊天记录)、账号密码以至键盘输入等记录发送给远程操控病毒的服务器。此外,即便与服务器的联系被切断,攻击者依然可通过蓝牙信号对被感染计算机进行近距离控制。功能极其丰富,覆盖了用户使用电脑的所有输入输出的接口。目前被定性为“工控病毒”。
Flame攻击目标
Flame 病毒开始主要集中攻击中东地区,包括伊朗、以色列、巴勒斯坦、叙利亚、苏丹、黎巴嫩、沙特阿拉伯和埃及等国家。据统计,世界范围内受感染电脑数量大约在 1000 至 5000 台之间。
2012年6月19日,华盛顿邮报发表了一篇文章,声称Flame至少在5年前,由美国国家安全局、中央情报局和以色列军方联合开发,该项目据说是代号为奥运会的一部分,旨在缓伊朗发展核武器的进度,为进行网络破坏活动收集情报。
Flame攻击目的
攻击伊朗的Flame病毒对AutoCAD文件、PDF文件、TXT文件以及Microsoft Word 和其它Office格式格外关注,它还对桌面上的内容特别感兴趣,似乎在有目的的收集被感染电脑中的技术文档和图纸类情报。
3.3.2 攻击原理
Flame 病毒文件达到20MB之巨,并且使用了游戏开发用Lua脚本语言编写部分功能与C++代码配合,实现攻击者要达到的目的,此外它还能够加载攻击者的其它功能模块。在安全方面,它用上了 5 种不同的加密算法,3 种不同的压缩技术,和至少 5 种不同的文件格式,包括其专有的格式。并将它感染的系统信息以高度结构化的格式存储在SQLite 等数据库中。感染途径有两种,一种是利用LNK漏洞(Stuxnet也利用了次漏洞),通过USB存储设备感染PC,另一种通过恶意链接或邮件附件感染目标PC。
Flame文件信息如图3-11所示。
图3-11 Flame模块关系
mssecmgr.ocx:主模块,有多个衍生版本,文件大小在6M左右,运行后会释放多个功能模块,通过调用Lua来执行脚本完成指定的功能。
nteps32.ocx:由主模块释放,主要用来记录键盘按键和屏幕信息截取。
msglu32.ocx:它由主模块释放,负责读取特定文件类型的文件信息,将其写入到sql数据库中。
advnetcfg.ocx:由主模块释放,被Services.exe加载,截取屏幕信息。
Jimmy.dll:由Flame的“146”资源释放,主要的功能是收集信息。
boot32drv.sys:由Flame的“146”资源释放,它是一个加密的配置文件。
soapr32.ocx:由Flame的“146”资源释放,用来收集信息的功能模块,如:系统安装的软件信息,网络信息,无线网络信息,USB信息、时间,时区等。
ccalc32.sys:由Flame的“146”资源释放,存储配置信息。
通过对mssecmgr.ocx模块进行深入的分析后发现,该模块静态编译了Lua, Lua版本信息如图3-12所示。
图3-12 静态编译的Lua版本信息
静态编译的Lua模块的功能函数如图3-13所示。
图3-13 Lua的内置函数
关联性分析
目前推测 Flame 病毒与之前发现的 Stuxnet (震网)和 Duqu (毒区)有关联(早期版本的Stuxnet包含通过USB驱动器传播的代码与Flame中该功能代码几乎相同)。
3.3.3 控制端域名
admin-on.biz | netproof.info |
autosync.info | netsharepoint.info |
bannerspot.in | network-acs.biz |
bannerzone.in | networkupdate.net |
bestcopytoday.com | newsflashsite.com |
bizupdate.org | newstatisticfeeder.com |
bk2by.com | newsync.info |
blogsearchtoday.com | nvidiadrivers.info |
bytewiser.com | nvidiasoft.info |
bytewiser.info | nvidiastream.info |
chchengine.com | phpmanualbox.com |
chchengine.net | pingserver.info |
conf-net.com | processrep.com |
confnet.net | profcenter.biz |
crashinfo.info | quick-net.info |
dailynewsupdater.com | quickboot.info |
dbdrivers.biz | rapidmemorylink.com |
diznet.biz | rapidmyhardware.com |
dnslocation.info | rendercodec.info |
dnsmask.info | rsscenter.webhop.info |
dnsportal.info | sec-enhanced.org |
dnsupdate.info | serveflash.info |
dvmdownload.net | serverss.info |
eventshosting.com | smart-access.net |
fastestever.net | smartloader.info |
fastinfo.biz | smartservicesite.info |
fine4all.com | spaceworldpics.com |
flashp.webhop.net | specthosting.biz |
flashupdates.info | syncdomain.info |
flushdns.info | synclock.info |
formsupdates.info | syncprovider.info |
globemaster.info | syncsource.info |
isyncautomation.in | syncstream.info |
isyncautoupdater.in | syncupdate.info |
liveservice.biz | traffic-spot.biz |
living-business.com | traffic-spot.com |
living-help.com | ultrasoft.in |
localconf.com | update-ver.biz |
localgateway.info | videosync.info |
loginfo.info | videoupdates.org |
micromedia.in | webhop.net |
mysync.info |
注:上表中的域名虽然曾经被用于Flame恶意代码,但是不排除现在已被用作其他用途。
3.4 Havex
3.4.1 简介
Havex于2013年被发现,是一种用于攻击特定目标的远程控制木马(Remote Access Trojan,RAT)。2014年初,Havex开始对工业控制系统发起攻击,感染SCADA和工控系统中使用的工业控制软件。网络安全公司CrowdStrike披露了一项被称为“Energetic Bear”(该黑客组织也被称作蜻蜓“Dragonfly”,因此Havex也被称作Dragonfly1.0)的网络间谍活动。据CrowdStrike称:攻击者试图通过俄罗斯联邦渗透欧洲、美国和亚洲的能源公司计算机网络,在此次攻击中所用的恶意软件就是Havex RAT。
攻击目标
攻击者通过把ICS/SCADA制造商的网站上用来供用户下载的相关软件感染木马,当用户下载这些软件并安装时,实现对目标用户的感染。
攻击目的
Havex可能是以窃取工控数据情报为目的,因为它利用OPC协议监视受感染主机的数据通信。而OPC协议主要是流程工业上用的比较多,例如石油石化行业,这也是为什么说Havex是针对工控行业的原因。
3.4.2 攻击原理
Havex是用PHP编写的C&C服务器。可以在服务器的代码中看到“Havex”字样。PHP代码如图3-14所示。
图3-14 PHP代码中的Havex字符串
OPC(Ole for Process Control)是一种通信标准,采用CLIENT/SERVER模式。针对硬件设备的驱动程序由硬件厂商或专门的公司完成,并提供具有统一OPC接口的SERVER程序,软件厂商按照OPC标准访问SERVER程序,即可实现与硬件设备的通信。Havex变种带有一个OPC扫描模块,它可以收集被入侵客户端或服务端的系统中存储的OPC协议的信息和数据。OPC扫描模块会探测TCP 44818、105和502端口上运行的设备。这些端口在西门子和罗克韦尔自动化等ICS / SCADA公司的产品上是通用的。
在传播途径上,除了利用钓鱼邮件、垃圾邮件、重定向到受感染的Web网站等传统感染方式外,Havex还采用了“水坑”攻击方式,即通过渗透到目标软件公司的Web站点,然后把Havex恶意程序(“mbcheck.dll”文件就是攻击者用作后门的Havex恶意程序)注入到那些合法的安装程序中,并等待目标被黑客被篡改过的应用。一旦Havex恶意代码被执行,就会自动安装OPC客户端,收集OPC服务器回应的数据信息,并将其上传到C&C服务器。除此以外,它也从受感染机器收集数据,比如:操作系统的相关信息;窃取存储在浏览器中的密码。
一个名为PE.dll的文件(6bfc42f7cb1364ef0bfd749776ac6d38)。Havex downloader会调用PE.dll的文件的runDll导出函数进行网络扫描,导出函数如图3-15所示。
图3-15导出的runDll关键函数
OPC扫描器模块通过对WNetOpenEnum、WNetEnumResources和WNetCloseEnum的递归调用来识别潜在的OPC服务器,调用扫描功能的代码如图3-16所示。
图3-16 OPC扫描代码
3.4.3 相关IP及域名
93.188.161.235 |
93.171.216.118 |
disney.freesexycomics.com |
electroconf.xe0.ru |
rapidecharge.gigfa.com |
sinfulcelebs.freesexycomics.com |
www.iamnumber.com |
abainternationaltoursandtravel.com |
adultfriendgermany.com |
africancranesafaris.com |
alexvernigor.com |
al-mashkoor.com |
alpikaclub.com |
antibioticsdrugstore.com |
arsch-anus.com |
artem.sataev.com |
artsepid.com |
ask.az |
atampy.com |
aziaone.com |
注:上表中的IP和域名虽然曾经被用于Havex恶意代码,其中包含一些合法的网站和博客被黑客入侵后作为C&C服务器,但是不排除现在已被用作其他用途。
3.5 Dragonfly2.0
3.5.1 简介
“Dragonfly”是著名的俄罗斯黑客组织,该黑客组织自2010年开始活跃,直到2014年被安全公司披露后,一度停止了攻击活动,但是在2017年9月,它又开始频繁活动,因为最新发现的“Dragonfly”从攻击目的和恶意代码技术上都有所提升,所以被称为“蜻蜓二代”或者“Dragonfly2.0”。目前的证据表明,实际上蜻蜓二代在2015年12月份就已经有了活动迹象。蜻蜓二代“Dragonfly2.0”和一代一样,使用多种攻击方式(恶意电子邮件、水坑攻击和合法软件捆绑)对目标进行渗透并植入恶意代码。早期的Dragonfly活动更像是处于探索性的阶段,攻击者只是试图进入目标组织的网络,Dragonfly 2.0的活动则显示了攻击者已经进入了一个新的阶段,最近的袭击活动可能为攻击者提供了访问操作系统的机会,将来可能被用于更具破坏性的攻击。
攻击目标
“Dragonfly”是一个专门以能源电力机构、ICS设备制造厂商、石油管道运营商等为攻击目标的黑客组织,早期攻击的目标为美国和加拿大的防务和航空公司、美国和欧洲的能源公司、大多数受害者分布在美国、西班牙、法国、意大利、德国、土耳其和波兰,而“Dragonfly2.0”则重点攻击美国和土耳其。
3.5.2 攻击原理
技术上,蜻蜓二代相比蜻蜓一代而言通信更加难以监测,蜻蜓一代几乎都采用了明文的 HTTP 通信,而二代组件与C&C的通信(包含信息收集、命令交互、文件回传等操作)普遍采用了 HTTPS 的方式来进行加密传输,无法通过 IDS 等流量监测设备进行有效的监测。另外组件进行远程请求的 URL 也有所改进,蜻蜓一代的 URL 都包含有明确含义的.php(如:“log.php”、“testlog.php”、“source.php”),而蜻蜓二代更具有迷惑性,如采用随机名且无后缀的URL(如:/A56WY),以及采用后缀名.gif(如:getimage/830411.gif)。蜻蜓二代的 Loader 模块开始采用实时下载纯加密 Shellcode 代码执行的方式来执行,并不会落地到磁盘,而蜻蜓一代的 Loader 模块则是下载完整PE文件执行,并且会落地到磁盘。另外,蜻蜓二代还将一些隐蔽性很高的技术应用于其攻击组件之中,如预初始化劫持技术(Backdoor.Dorshel)、模板注入技术(Trojan.Phisherly)等。蜻蜓二代在收集信息及窃密时,采用组件 Hacktool.Credrix 窃取更为敏感的信息,除了窃取各类浏览器相关登录凭证外,还开始获取系统账户的登录凭证、远程桌面登录凭证以及邮件客户端的登录凭证。相关凭证信息及实现方法如下表所示:
窃取的凭证信息 | 实现方法 |
RDP凭证信息 | 注入shellcode到lsass进程中对C:Users当前用户名AppDataLocalMicrosoftCredentials目录下的RDP凭证信息解密 |
系统凭证信息 | 开源项目mimikatz |
Thunderbird凭证信息 | 读取AppDataRoamingThunderbirdProfiles目录下的数据库文件,并通过应用程序目录下的nss3..dll对存储的密码进行解密 |
Outlook凭证信息 | 遍历注册表SoftwareMicrosoftWindows NTCurrentVersionWindows Messaging SubsystemProfiles下子键进行识别并解密 |
FileZilla凭证信息 | FileZilla凭证信息以明文形式存储在Application DataFileZilla目录 |
Chrome | 读取AppDataLocalGoogleChromeUser DataDefault Login Data数据库文件进行查询 |
Mozilla Firefox | 读取配置路径下的signons.sqlite数据库,并通过nss3.dll解密 |
Internet Explorer | 从注册表解密自动完成的口令 |
Opera | 与Chrome类似 |
蜻蜓二代各个组件的基本功能及其可能的投放阶段,如下表:
组件 | 基本功能 | 可能的投放阶段 |
Backdoor.Dorshel | 下载模块执行,通过合法软件捆绑植入 | 第一阶段 |
Trojan.Karagany.B | 实现上传、清理、远程命令执行、远程执行组件,通过Flash软件更新的方式植入 | 第一阶段 |
Trojan.Heriplor | Shellcode下载执行,在一代中类似组件是通过组件Backdoor.Oldrea植入,二代中未知 | 第二阶段 |
Trojan.Listrix | 收集文件受害者主机文件信息,由组件Karagany.B下载执行 | 第二阶段 |
Hacktool.Credrix | 窃取系统账户的登录凭证、浏览器页面登录凭证、远程桌面登录凭证以及邮件客户端的登录凭证。植入方式未知,可能由组件Backdoor.Dorshel远程下载 | 第二阶段或第三阶段 |
Backdoor.Goodor | 下载组件执行,通过PowerShell进入 | 第三阶段 |
Trojan.Phisherly | 模板注入,窃取共享文件登录凭证,通过邮件投递的方式感染 | 第二阶段或第三阶段 |
Screenutil | 屏幕工具,截屏管理等功能,植入方式未知,可能通过Karagany.B组件植入 | 第二阶段 |
上表中,第一阶段投放表示黑客通过各种攻击手段向受害者投放的第一个可执行组件,主要用于下载第二阶段的组件执行以及执行一些必要操作;而第二阶段的组件是由第一阶段的组件下载执行的,主要以收集情报为主;第三阶段可能在已有情报的基础上对目标下放特定组件,一则可能用于进一步的信息窃取,二则用于扫描受害者主机的环境,这个阶段的样本并不完整,比如缺少 OPC/SCADA 扫描组件等。
3.5.3 控制命令服务器
184.154.150.66 |
103.41.177.69 |
37.1.202.26 |
注:上表中的IP虽然曾经被用于Dragonfly2.0恶意代码,但是不排除现在已被用作其他用途。
3.6 BlackEnergy
3.6.1 简介
BlackEnergy是著名的黑客Cr4sh创造的。在2007年,他声称不再开发这款木马,并且以$700左右卖出源代码(流通在俄罗斯的地下网络)。最初,它被设计为一个DDos攻击工具,主要用于建立僵尸网络,对定向的目标实施DDos攻击,源码卖出后,新的开发者为其开发了各种功能的插件,以满足各种攻击需求。BlackEnergy被不同黑客用于各自的用途,有的黑客用它发送垃圾邮件,有的黑客用来盗取银行凭证,但是,在2008年“俄格冲突”期间,该工具被用来对格鲁吉亚实施网络攻击,自此BlackEnergy开始转向攻击政治目标。在2014年夏季, BlackEnergy频繁对乌克兰政府及企事业单位发起攻击,通过分析发现它有一款支持对ICS监测控制和数据采集类的插件。这显示出BlackEnergy还存在的一些特别的能力,不仅仅局限于DDOS攻击。
在2015年乌克兰电力系统遭到攻击后,启明星辰ADLab实验室对此次攻击的恶意代码进行了深度的分析,并发布了两篇分析报告《启明星辰ADLab:乌克兰电力系统恶意破坏组件分析》和《启明星辰ADLab:乌克兰电力系统攻击过程深度分析》。
攻击目标
乌克兰的ICS,能源,政府和媒体以及全球的ICS/SCADA公司和能源公司。
攻击结果
2015年11月22日凌晨,克里米亚遭乌克兰断电,近200万人受影响。2015年12月23日,乌克兰电力网络受到黑客攻击,导致伊万诺-弗兰科夫斯克州22.5万民众失去电力供应长达6小时。
3.6.2 攻击原理
经过数年的发展,BlackEnergy逐渐加入了Rootkit技术、插件支持、远程代码执行、数据采集等功能,已能够根据攻击目的和对象,由黑客来选择特制插件进行APT攻击。此外,黑客又对它进一步升级,包括支持代理服务器,绕过用户账户认证(UAC)技术,运行时动态解密代码以逃避安全防护软件的检测,以及针对64位Windows系统的签名驱动等等。
它的攻击插件和功能如下表格所示:
Dll名称 | 功能 |
fs.dll | 文件系统操作 |
si.dll | 系统信息,“BlackEnergy Lite” |
jn.dll | 寄生虫 |
ki.dll | 按键记录 |
ps.dll | 密码窃取者 |
ss.dll | 截图 |
vs.dll | 网络发现,远程执行 |
tv.dll | 团队查看器 |
rd.dll | 简单的伪“远程桌面” |
up.dll | 更新恶意软件 |
dc.dll | 列出Windows帐户 |
bs.dll | 查询系统硬件,BIOS和Windows信息 |
dstr.dll | 销毁系统 |
scan.dll | 网络扫描 |
2015年12月23日,乌克兰电力网络受到黑客攻击。网络安全专家指出,此次乌克兰电网攻击的黑客可能是经验丰富的俄罗斯黑客集团。美国的iSight Parterns认为盘踞于莫斯科的Sandworm(全球最危险四大黑客组织之一,这个组织的名字由经典科幻小说《沙丘》而来;别名:Electrum、Iridium;主要攻击目标:北约、乌克兰,以及一些相关人士)。不过,在同一时期内有多个俄罗斯黑客团体针对乌克兰与西方世界发起攻击; Cyberberkut(“CyberBerkut”是在“金雕”(Berkut)特种部队解散后出现的组织,其成员身份不明,保持匿名行动。该组织将自己定位为“帮助乌克兰维持独立、阻止西方保护新纳粹政府与军事入侵企图”的黑客组织。)有可能就是攻击者之一,Sandworm此前曾经宣称为German媒体与NATO站点遭遇的攻击事件负责。
此次攻击事件是由黑客通过鱼叉攻击将包含恶意代码的XLS文件通过邮件的方式推送给电力部门有关人员,并通过设置业务相关的邮件标题诱导被攻击者打开XLS文件。当XLS文件被打开后,恶意代码就会把BlackEnergy下载到目标主机并执行,随后BlackEnergy释放killdisk(硬盘数据擦擦)插件,导致电网SCADA主机系统崩溃,造成电网故障。
killdisk恶意代码会破坏系统连接所有硬盘数据,其手法是遍历所有硬盘设备PhysicalDrive%Num%(Num从0到10)并且直接向硬盘前256个扇区写零,相关代码如图3-17所示。
图3-17 killdisk模块破坏硬盘代码
遍历进程,结束sec_service.exe并删除sec_sercice服务,向sec_service.exe中写入随机数据。进程sec_service.exe为工业串口转换服务器,虚拟串口-网口转换工具服务程序,这个进程被用于工业控制、或者ELTIMA系列以太网控制器。通过执行shutdown命令关机,此时系统遭到严重破坏,关机之后已经无法重启,导致电力系统无法恢复运行,致使乌克兰出现大面积的断电事件,关机代码如图3-18所示。
图3-18 killdisk模块关机代码
3.6.3 相关IP及域名
5.149.254.114 |
5.9.32.230 |
31.210.111.154 |
88.198.25.92 |
146.0.74.7 |
188.40.8.72 |
cazino-game.com |
darcks.parfumstudio.com |
dive-null.net84.net |
noname.street-info.com |
sanjaga.esy.es |
temich94.phpnet.us |
注:上表中的IP和域名虽然曾经被用于BlackEnergy恶意代码,但是不排除现在已被用作其他用途。
3.7 Industroyer
3.7.1 Industroyer背景介绍
2017年6月12日,一款针对电力变电站系统进行恶意攻击的工控网络攻击武器 Industroyer 被ESET披露。随后,启明星辰ADLab立即对该恶意代码进行深度分析,通过分析我们发现该攻击武器可以直接控制断路器,可导致变电站断电。 Industroyer 恶意软件目前支持四种工控协议:IEC 60870-5-101、IEC 60870-5-104、IEC 61850以及OLE for Process Control Data Access(简称OPC DA)。这些协议广泛应用在电力调度、发电控制系统以及需要对电力进行控制行业,例如轨道交通、石油石化等重要基础设施行业,尤其是 OPC 协议作为工控系统互通的通用接口更广泛应用在各工控行业。可以看出,攻击者对于工控系统尤其是电力系统相关的工控协议有着深厚的知识背景,并且具有目标工控环境下的各种工控设备,攻击者需要这些设备来实现恶意代码的编写和测试工作。
与2015年袭击乌克兰电网最终导致2015年12月23日断电的攻击者使用的工具集(BlackEnergy、KillDisk、以及其他攻击模块)相比,这款恶意软件的功能意义重大,它可以直接控制开关和断路器,Industroyer 身后的黑客团队无论从技术角度还是从对目标工控系统的研究深度都远远超过了2015年12月乌克兰电网攻击背后的黑客团队。
通过对该批恶意软件的编译时间推测该恶意软件曾被利用来攻击乌克兰的变电站导致2016年12月那次半个小时的乌克兰停电事件。目前可以说 Industroyer 恶意软件是继 STUXNET、BLACKENERGY 2以及 HAVEX 之后第四款对针对工业控制系统进行攻击的工控武器。
攻击目标
乌克兰的ICS,能源,政府和媒体以及全球的ICS/SCADA公司和能源公司。
攻击结果
据推测2016年12月那次半个小时的乌克兰停电事件是由Industroyer攻击导致。
3.7.2 攻击原理
Industroyer 恶意软件是由一系列的攻击模块组成,目前公开的模块就多达10多个。其中存在一个主后门模块,它被用于连接C&C下载另外一批模块执行,这些模块分别为:实现 DLL Payload 模块执行的加载器模块、实现数据及痕迹清理的 haslo 模块、实现IP端口扫描的 port 模块以及实现西门子 SIPROTEC 设备 DoS 攻击的 DoS 攻击模块。其中,DLL Payload 模块包含实现 IEC 101 工控协议的 101.dll 模块、实现 IEC 104 工控协议的 104.dll 模块、实现 IEC 61850 协议的61850.dll/61850.exe 模块以及实现 OPC DA 协议的 OPC.exe/OPCClientDemo.dll 模块等。
通过主后门模块程序,攻击者可以对攻击行为进行管理:安装和控制其他组件,连接到远程服务器来接受指令,并返回信息给攻击方。Industroyer有四个 payload 组件,用于直接获取对于变电站开关和断电器的控制。每个组件都针对了一种特定的通讯协议:IEC 60870-5-101, IEC 60870-5-104, IEC 61850 和 OLE(OPCDA)。Payload 会在目标映射网络的阶段工作,然后寻找并发出与特定工业控制设备配合使用的命令。
值得注意的是,Main Backdoor 与 C&C 通信的时候是通过内网中的一台主机作为跳板连接到 C&C 上实施命令控制的,ESET 发现该模块是通过 Tor 网络实现与 C&C 的交互。因此根据目前所掌握的信息我们绘制了该恶意软件大致工作流程如图3-19所示。
图3-19 Industryer 攻击流程图
从恶意软件的攻击流程中我们可以推测该黑客可能的攻击路径:首先黑客可以通过电子邮件、办公网系统、外来运维终端、U盘等途径成功入侵一台主机(如:内网的10.15.1.69),并且在该主机联网时下载必要的模块执行比如 Tor 网络客户端或者代理服务模块等作为后续攻击的回连跳板,黑客接下来以该主机为跳板对系统局域网络进行探测扫描,当发现自己感兴趣的目标(是否为104从站、OPC服务器或者操作站等)后对其实施攻击,一旦攻击成功,黑客就将这台可以连接外网的主机 IP 配置为攻击模块 Main Backdoor 的代理IP,下发到该主机中,这台主机是可以直接与 RTUs 或者 PLCs 进行通信的,并且可以做直接的控制。
Main Backdoor模块主要用于实现与攻击者C&C通信,在收到控制命令数据后,它会对数据做一定处理,最后创建一个线程来处理黑客端发来的控制请求,如图3-20所示。
图3-20 控制命令处理关键代码
其中,控制命令的第五个字节为控制码,其值为0x1-0xB的整形值,控制命令的控制命令参数位于第16个字节的偏移之后。控制命令分发以及处理功能代码如图3-21所示。
图3-21 控制命令分发关键代码
其中,控制命令以及相应的功能说明如下表所示:
命令ID | 功能 |
0 | 执行进程 |
1 | 在指定用户帐户下执行进程,账户凭证由攻击者提供 |
2 | 从C&C服务器下载文件 |
3 | 拷贝文件 |
4 | 执行shelll命令 |
5 | 在指定用户帐户下执行shell命令,账户凭证由攻击者提供 |
6 | 退出 |
7 | 停止服务 |
8 | 在指定用户帐户下停止服务,账户凭证由攻击者提供 |
9 | 在指定用户帐户下启动服务,账户凭证由攻击者提供 |
10 | 为服务替换“镜像路径”注册表值 |
从控制功能上可以看出该后门模块的主要任务是从C&C下载扩展模块执行以及做远程命令执行,并且提供了由账户凭证支持的权限控制。如果黑客获取了管理员权限就可以将已安装的后门升级到一个更高的权限版本,黑客可以选择一个现有的、非关键的Windows服务,在注册表中替换它的ImagePath键值为新后门的代码路径。
3.7.3 相关C&C
195.16.88.6 |
46.28.200.132 |
188.42.253.43 |
5.39.218.152 |
93.115.27.57 |
95.16.88.6 |
注:上表中的IP虽然曾经被用于Industroyer恶意代码,但是不排除现在已被用作其他用途。
3.8 GreyEnergy
3.8.1 GreyEnergy简介
2018年10月18日,ESET研究团队称发现一个新的APT组织GreyEnergy,且该APT组织是BlackEnergy的继承者,因BlackEnergy在2015年引发乌克兰大停电而名声大噪,此后便销声匿迹,而GreyEnergy的活动记录也同时出现,另外,2015年同期还出现了另一个组织TeleBots(可能是2017年策划大规模NotPetya病毒的爆发的幕后黑手)。除了两者几乎同时出现之外, GreyEnergy在2016年使用的一种破坏性恶意软件Moonraker Petya。顾名思义,它与NotPetya类似,虽然不太先进,但是这表明GreyEnergy和TeleBots之间的合作,或者至少是思想和代码的交流。
ESET研究团队认为BlackEnergy演变为两个独立的组织:TeleBots和GreyEnergy,它们给出了一个相似性关系图,如图3-22所示。
图3-22 BlackEnergy和GreyEnergy及TeleBots关联
GreyEnergy主要针对乌克兰和波兰的能源部门、交通部门等高价值目标,攻击行为主要是网络侦查(即间谍行为)。GreyEnergy与BlackEnergy具有很多相似之处,它也是采用模块化结构,目前已经发现的模块有:注入模块、获取系统信息模块、文件管理模块、屏幕截图模块、键盘记录模块、密码和凭证窃取模块、代理模块、ssh隧道模块等,但是至今仍未发现专门针对ICS的恶意软件模块。
攻击目标
据目前所获情报,此次攻击主要对乌克兰和波兰的能源部门及交通部门进行渗透攻击,以期获取相关数据和情报。
攻击结果
可能导致乌克兰和波兰的能源相关重要部门的信息泄露,内部敏感信息、相关技术资料内部网络架构等重要信息被窃取。
3.8.2 GreyEnergy攻击原理
GreyEnergy黑客组织一直对运行SCADA软件和服务器的工业控制系统的工作站进行情报收集,它主要通过两种方式进行传播,利用鱼叉式钓鱼攻击向目标投放带有恶意附件的邮件;和从互联网访问受感染的Web服务器部署后门。
附件中的word文档被打开后,会看到左上角有一个宏安全警告,文档正文是用乌克兰语编写的,在文档第二页的最顶端用红色字体突出显示一段文字,翻译成中文的意思是:“页面是交互的,你需要启用宏!”,以此诱骗“读者”启用宏,然后执行恶意代码,文档内容如图3-23所示。
图3-23 恶意Word文档内容
一旦宏被开启,便会触发宏恶意代码,以下函数会依次执行:
Document_Open() -> Test() -> HashCheck()
最后,由“HashCheck”函数下载一个名为GreyEnergy mini(也被称为FELIXROOT)的不需要管理员权限执行的轻量级后门,与下载有关的字符串均被Base64编码,经过解码后得到下载链接为:http://pbank.co.ua/favicon.ico,下载后的文件被命名为“TVUNSS3.exe”并保存到临时目录中,宏代码如图3-24所示。
图3-24 下载GreyEnergy mini的宏代码
GreyEnergy mini部署成功后,便使用Nmap和Mimikatz等工具绘制网络地图并收集管理凭证。收集到的凭证后,用该凭证部署需要管理员权限执行的主要恶意代码GreyEnergy。除了nmap和mimikatz外,GreyEnergy还使用了PsExec和WinExe,用于横向移动。GreyEnergy有两种部署方式,仅内存模式运行(不需要持久化)和使用DLL服务持久化(在系统重新启动时存活)运行,GreyEnergy以服务运行的服务入口伪代码如图3-25所示。
图3-25 ServiceMain核心函数
迄今为止,GreyEnergy恶意软件已经被发现的所有模块都不会影响ICS,但其攻击者曾使用磁盘擦除组件(KillDisk)来破坏攻击目标的系统,已被发现的模块和功能如下:
模块名称 | 功能 |
remoteprocessexec | 将PE二进制文件注入远程进程 |
info | 收集有关系统和事件日志的信息 |
file | 执行文件系统操作 |
sshot | 抓取截图 |
keylogger | 键盘记录 |
passwords | 收集各种应用程序保存的密码 |
mimikatz | 使用Mimikatz窃取Windows凭据 |
plinkPlink | 使用Plink创建SSH隧道 |
3proxy | 使用3proxy创建代理 |
3.8.3 涉事服务器汇总
109.200.202.7 |
193.105.134.68 |
163.172.7.195 |
163.172.7.196 |
5.149.248.77 |
31.148.220.112 |
62.210.77.169 |
85.25.211.10 |
138.201.198.164 |
124.217.254.55 |
46.249.49.231 |
37.59.14.94 |
213.239.202.149 |
88.198.13.116 |
217.12.202.111 |
176.31.116.140 |
185.217.0.121 |
178.150.0.200 |
176.121.10.137 |
178.255.40.194 |
193.105.134.56 |
94.130.88.50 |
185.216.33.126 |
82.118.236.23 |
pbank.co.ua |
注:上表中的IP有一部分来自Tor网络,可能会发生误报。
3.9 VPNFilter
3.9.1 简介
VPNFilter恶意代码是由思科Talos团队首次公开,因其危害极其严重,Talos并未完成全部分析。启明星辰ADLab对其进一步分析,并发布了《【深度分析】VPNFilter:危及全球工控设备和办公网络的物联网高级威胁》报告。VPNFilter恶意代码旨在入侵物联网设备(路由器、网络存储设备等)从事可能由国家发起的全球性的高级恶意软件攻击。截止2018年5月23日,至少有54个国家遭入侵,已感染约50万台路由器。由于其核心模块文件为VPNFilter,故该恶意代码也被命名为“VPNFilter”。FBI称此次攻击与俄罗斯政府支持的黑客组织Fancy Bear有关。Fancy Bear又称作奇幻熊、APT28、Sofacy Group、Pawn Storm、Sednit。
攻击目标
自2007年以来,Fancy Bear一直在进行网络间谍活动,入侵过北约、奥巴马白宫、法国电视台、世界反兴奋剂机构和无数非政府组织以及欧洲、中亚和高加索地区的军事和民间机构,是一个臭名昭著的黑客组织。
在2018年5月8日出现大规模的以乌克兰为主要目标的攻击活动,并且在5月17日乌克兰的受感染设备出现大幅度增加,这些受感染设备均受控于C&C 46.151.209.33, 看起来此次攻击目标似乎瞄准乌克兰。
攻击结果
乌克兰电力系统曾经受到过两次黑客攻击,并且导致了停电事故。
3.9.2 攻击原理
攻击者利用VPNFilter来控制并监视处于工控网络、办公环境中的网络设备(包含路由器、网关、防火墙以及其他的物联网设备),其支持工控网络情报收集、重要敏感的流量(登录凭证、Modbus SCADA设备流量)截取、流量篡改、定向JS注入、设备破坏性攻击等功能。
这次的攻击活动以物联网入口,利用大量存在漏洞的物联网设备作为载体进行撒网式攻击,并且以惊人的速度感染了至少50万台设备,其中包含有华为、中兴、华硕、Dlink、Ubiquiti、UPVEL、Linksys、MikroTik、NETGEAR 和 TP-Link等设备。同样,此次恶意代码与2015年攻击乌克兰电网的BlackEnergy使用相同的变形RC4算法对关键信息进行加密;并且与之类似的是同样也有对主机设备进行重要数据擦除与重启的连环动作以达到让设备无法启动的目的(同时也提高了取证的难度)。
VPNFilter的攻击流程图如图3-26所示。
图3-26 VPNFilter攻击流程图
VPNFilter的攻击共分3个阶段:
第一阶段:作为dropper获得感染设备的持续化访问权限,为第二阶段打开入口,该阶段的特点是采用了很强的C2隐藏和安全对抗行为。
Loader模块(文件名为msvf)从多种渠道获取第二阶段的恶意代码,然后执行所下载恶意代码,最后退出。下载的第二阶段的恶意代码被保存为文件”/var/vpnfilter”。关键代码如图3-27所示。
图3-27 执行第二阶段代码
第二阶段,作为信息收集和加载模块功能的载体,能对设备文件系统,设备常规信息收集,并提供命令执行能力和设备管理能力,并且在某些平台中实现了自毁,以达到隐匿踪迹的目的。
控制命令的请求有两种方式,一种是通过socks5代理方式,一种是通过Tor网络请求。通过socks5代理请求的C&C地址如下(在新版本中91.121.109.209被移除):
91.121.109.209
217.12.202.40
94.242.222.68
通过Tor网络请求的地址如下(在新版本中”zuh3vcyskd4gipkm.onion/bin32/update.php”被移除):
6b57dcnonk2edf5a.onion/bin32/update.php
zuh3vcyskd4gipkm.onion/bin32/update.php
tljmmy4vmkqbdof4.onion/bin32/update.php
这两种方式的请求都是通过ssl协议进行的。请求完成后,恶意代码解析相应数据并且提取出控制命令和控制参数信息。其实现的远程控制命令和控制参数信息如下:
控制命令 | 控制参数 |
kill | 通过擦除设备mtdblock0的前5000个字节达到破坏设备的目的,随后重启让设备变砖。 |
exec | 远程bash命令执行。 |
tor | 设置Tor标志,以确定在通信过程中进行模式切换(采用Tor还是其他) |
cpy | 文件拷贝,将远程命令中的文件拷贝到工作目录中,文件名类似于:file_%d_%d_.bin,后面两个%d会被当前时间值的高低双字节值所替代。 |
seturl | 远程配置黑客在Tor网络中配置的C&C服务器地址。 |
proxy | 配置socks5代理服务器的IP地址。 |
port | 配置socks5代理服务器的端口。 |
delay | 设置延迟时间。 |
reboot | 重启设备,如果控制参数为all(所以设备)或者为当前build名”pPRXi686QNAPX86”( x86的设备)。 |
download | 根据控制参数将一个指定的远程文件下载到指定的目录中。 |
第三阶段,作为第二阶段的恶意功能模块下发,为第二阶段提供了更有目的性的攻击行为能力。目前已经发现大量的组件,其中包含一个为MIPS平台的流量嗅探器、一个用于破坏设备的dstr模块、一个用于进行广泛HTTP流量嗅探和监控的ssler模块,还有一些辅助性模块如:Tor client、mikrotik.o、torrc、ip_tables.ko、iptable_filter.ko、iptable_nat.ko等。辅助性模块如Tor客户端用于支持第二阶段的Tor网络通信。Tor工程提示如图3-28所示。
图3-28 Tor工程提示信息
由于其为标准的Tor客户端,不具备恶意功能,因此我们仅仅分析核心的三个模块。
(1)MIPS平台的TCP流量嗅探模块
该模块为MIPS平台,其主要通过从原始数据包中过滤出TCP/IP数据包,并且通过对TCP的payload数据进行过滤,检索其中的敏感信息存储起来。
该流量嗅探模块通过第二阶段恶意代码远程下载并启动执行,其启动运行参数如下:
{模块名} DstDir Unkownagr ModbusServer
其中第一个参数为嗅探数据的存放路径,第二个参数未使用,第三个参数为modbus server的IP地址。
该模块启动后并没有做过多额外的工作,初始化环境后直接调用流量截取函数进行流量嗅探,关键代码如图3-29所示。
图3-29 进行流量嗅探函数
(2)ssler HTTP嗅探与监控模块
该模块主要针对HTTP层实施更加丰富和强大的处理,其提供有HTTP流量重定向、HTTP流量监控与截取、流量劫持与篡改、定向注入JS以进行精准攻击等功能。其由第二阶段的恶意模块启动运行,运行参数说明如下:
参数 | 功能 |
dst:ipstr | 指定一个可用于流量监控的目的地址或者CIDR 地址范围。 |
src:ipstr | 指定一个可用于流量监控的源地址或者CIDR 地址范围。 |
dump:domain | dump指定主机域名的所有HTTP请求数据到文件reps_*.bin文件中。 |
site:domain | 指定一个网站的域名,当有客户端访问该网站时,向其中响应的页面数据中注入JavaScript。 |
hook:javascript url | 用于指定注入JavaScript中js文件url。 |
(3)设备破坏模块(Destroy module)
由于老版本的第二阶段模块单纯的只是简单擦除设备mtdblock0的前5000个字节以破坏设备,有很大几率会失败,因此新版本的第二阶段模块将kill指令的破坏性功能取消,并采用插件模块的方式来实现。该插件模块不仅改进了破坏设备功能,而且还提供了痕迹清理的功能。其目的不仅让设备无法恢复,而且即便恢复了也无法取证获取恶意代码相关痕迹。
模块启动后首先删除自身文件,然后强制关闭所有包含"vpnfilter"、"security"、"tor"关键字的进程。关键代码如图3-30所示。
图3-30 强制关闭包含关键词的进程
接下来清理掉所有痕迹文件,其中包含有证书文件、Tor客户端相关文件、版本信息文件等。该模块还会遍历mtd分区,并强制擦除整个FLASH。最后采用 "rm -rf /*" 强制递归删除文件系统上的所有文件,并重启设备,删除文件代码如图3-31所示。
图3-31 删除所有文件代码
3.9.3 涉事服务器汇总
91.121.109.209 |
217.12.202.40 |
94.242.222.68 |
82.118.242.124 |
46.151.209.33 |
217.79.179.14 |
91.214.203.144 |
95.211.198.231 |
195.154.180.60 |
5.149.250.54 |
91.200.13.76 |
94.185.80.82 |
62.210.180.229 |
23.111.177.114 |
photobucket.com |
toknowall.com |
zuh3vcyskd4gipkm.onion |
6b57dcnonk2edf5a.onion |
tljmmy4vmkqbdof4.onion |
4seiwn2ur4f65zo4.onion |
zm3lznxn27wtzkwa.onion |
注:上表中的IP和域名虽然曾经被用于VPNFilter恶意代码,但是不排除现在已被用作其他用途。
3.10 Triton
3.10.1 Triton简介
2017年11月中旬,Dragos Inc.团队发现了针对ICS量身定做的恶意软件,并将此恶意软件命名为TRISIS(又被称为 Triton 和 HatMan),同年12月, FireEye发布了Triton的分析报告。Triton是首款针对安全仪表系统进行攻击的恶意软件,Triton恶意软件旨在针对施耐德电气的工业环境中使用的Triconex安全仪表系统(SIS)控制器,共采用5种不同开发语言构建,仅能在其瞄准的工业设备上执行。TRIRON恶意代码可对SIS系统逻辑进行重编辑,使SIS系统产生意外动作,对正常生产活动造成影响;能使SIS系统失效,在发生安全隐患或安全风险时无法及时实行和启动安全保护机制,从而对生产活动造成影响;还可以对DCS系统实施攻击,并通过SIS系统与DCS系统的联合作用,对工业设备、生产活动以及人员健康造成破坏。
2018年5月4日,Dragos公司称Triton背后的黑客组织Xenotime已经扩大了攻击范围,除了攻击施耐德电气的 Triconex 以外还针对其它的系统。
Xenotime黑客组织可能自2014年开始活跃,于2017年成功攻击中东一家石油天然气工厂,致其工厂停运。工业网络安全和威胁情报公司 CyberX 的研究人员曾认为,Triton的幕后黑手是伊朗,但Dragos并未提供任何有能够证明此猜测的证据信息。Dragos 公司指出,尚未发现 Xenotime 与其它已知黑客组织存在关联的线索。
2018年10月23日,FireEye称他们发现了Triton恶意软件与位于莫斯科的俄罗斯政府研究机构中央化学与机械科学研究所(CNIIHM)之间的联系:样本中语言西里尔文和时区与俄罗斯相关;通过分析测试文件PDB路径的字符串,发现一段特殊字符串可能是俄罗斯信息安全社区活跃用户(从2011年开始活跃)的昵称,结合被废弃的社交媒体资料,推测出这个人是CNIIHM的教授,该教授位于莫斯科 Nagatino-Sadovniki 区的 Nagatinskaya 街附近;该研究所注册的一个IP地址(87.245.143.140)参与了Triton攻击。此外,值得一提的是CNIIHM具备开发Triton恶意软件的能力,它拥有专门研究关键基础设施保护和武器及军事装备开发的研究部门,并与广泛的其他组织合作,包括计算机科学,电气工程,国防系统和信息技术。
攻击目标
至少针对一个中东地区的组织。其他使用施耐德电气的Triconex安全仪表系统(SIS)控制器的能源单位也面临被攻击的风险,据不完全统计,该型号的控制器被全球1.8万家工厂使用,其中包含核相关设施。
攻击结果
2017年成功攻击中东一家石油天然气工厂,使其停止运营。
3.10.2 攻击原理
Triton是少数几个可以直接操控工业控制系统的恶意代码,它采用Python语言开发,并用打包工具Py2Exe进行打包,然后对特定目标展开攻击,使用Python开发的一个好处就是开发和调试都极其方便,大大的缩减了攻击者的开发周期。Triton的攻击流程大致如图3-32所示。
图3-32 Triton攻击流程图
通过上图可知,Triton包括两部分:基于Windows平台的Trilog.exe(Python脚本程序),以及两个恶意代码inject.bin、imain.bin(打包到Trilog.exe中)。Trilog.exe是Triconex应用软件中用于记录日志的程序。Triton病毒将该程序感染,用来与Triconex控制器通信。一旦检测控制器在线状态,就将两个恶意代码inject.bin以及imain.bin注入到Triconex控制器中。
样本名称 | 功能描述 |
trilog.exe | 主要可执行文件利用libraries.zip |
library.zip | 用于与Triconex控制器交互的通信库。 |
通过上表可知:library.zip是与Triconex控制器进行交互的通信的库,其中主要依赖于TsHi.pyc、TsBase.pyc、TsLow.pyc、TS_cnames.pyc、sh.pyc等模块,它们提供了强大的远程控制功能,用rar打开该文件,文件基本信息如图3-33所示。
图3-33 用rar打开library.zip文件
其中,TS_cnames.pyc是一个常量定位文件,包含TriStation协议功能和响应代码以及关键开关和控制程序状态的命名查找常量,部分内容如图3-24所示。
图3-34部分控制状态常量数据
TsBase.pyc文件中的TsBase类提供了启停程序,上传下载程序,取消下载,版本更新执行漏洞利用等功能,代码如图3-25所示。
图3-35 TsBase类中的函数
TsHi.pyc文件用来实现对控制器攻击的全部过程,主要包含读写函数或程序,解析ProjectInfo信息,获取ProjectInfo,获取ProgramTable等功能,相关函数名称如图3-36所示。
图3-36 TsHi.pyc模块的函数
TsLow.pyc文件实现了TriStation底层网络通信,其中以udp_ 开头的函数实现了基础的UDP协议,以tcm_ 和tc_ 开头的函数实现了与Triconex安全仪表控制系统控制器的报文数据封装,tcm_ 负责最外一层数据封装,tc_ 负责 tcm_ 结构中的数据字段的封装。其函数树形图如图3-37所示。
图3-37 TsLow.pyc模块中的函数
TsLow.pyc文件的功能包括探测运行Tritation协议的主机,连接主机,数据发送,数据接收,打印错误信息等,其中“detect_ip”函数使用1502端口(TriStation协议运行端口为1502)发送UDP广播,按照TriStation协议发送ping数据,以此判断目标设备是否在线。在收到目标设备的应答后,先保存目前设备的IP地址,然后再向目标设备发送close数据包,以确保交互成功,代码如图3-38所示。
3-38 detect_ip函数实现
除了上面的与TriStation的通信框架外,Triton还包含一个Script_test.pyc脚本,在Script_test.pyc中调用动态加载inject.bin和imain.bin,它们被作为载荷文件打包在exe文件中,此脚本使用TriStation私有网络协议连接到Tricon,并注入载荷,相关代码如图3-39所示。
图3-39 加载载荷代码
3.10.3 IOC
我们在对Triton进行逆向后没有发现其含有与互联网通信的IP和域名,下表内容相关攻击样本的HASH:
文件名 | MD5 |
trilog.exe | 6c39c3f4a08d3d78f2eb973a94bd7718 |
imain.bin | 437f135ba179959a580412e564d3107f |
inject.bin | 0544d425c7555dc4e9d76b571f31f500 |
library.zip | 0face841f7b2953e7c29c064d6886523 |
四、结语
通过对十种工控武器的分析可以看出,工控攻击产生的危害轻则导致工业控制系统内部关键信息泄露(如网络图谱图、核心部件的通风散热、建筑关键承重点等),重则可能造成重大的安全事故(人员伤亡,环境破坏)。工控安全不但关系着安全生产,也关系到国家的安全和稳定,为避免被网络工控武器的袭击,我们提供以下几条简单建议:
不要随意打开邮件中的链接和附件;
删除或重命名系统默认账户;
USB存储介质不要在连接互联网的电脑和内网中的电脑之间交叉使用;
安装实时监控的防病毒软件;
定期修改密码,不要使用弱口令;
定期给工控设备和电脑进行升级和打补丁;
定期进行安全检查,发现潜在的威胁和漏洞;
对控制系统,如非必要,不要连接互联网,避免直接暴露在互联网受到攻击;
分离工业控制系统的开发、测试和生产环境;
通过工业防火墙、网闸等防护设备对工业控制网络安全区域之间进行逻辑隔离安全防护;
原则上严格禁止工业控制系统面向互联网开通HTTP、FTP、Telnet等高风险通用网络服务;
在工业控制网络部署网络安全监测设备,及时发现、报告并处理网络攻击或异常行为。
参考链接:
1.https://en.wikipedia.org/wiki/Gabi_Ashkenazi
2.https://en.wikipedia.org/wiki/James_Cartwright
3.https://en.wikipedia.org/wiki/Michael_Hayden_(general)
4.http://www.antiy.com/resources/Analysis_and_Introspection_of_Stuxnet_Duqu_and_Flame.pdf
5.https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2018/03/07205202/The_Mystery_of_Duqu_2_0_a_sophisticated_cyberespionage_actor_returns.pdf
6.https://www.freebuf.com/articles/system/38525.html
7.https://baike.baidu.com/item/%E4%BB%A5%E8%89%B2%E5%88%978200%E9%83%A8%E9%98%9F/2636151
8.http://m.news.cctv.com/2019/03/10/ARTI831TcUJJyd3D8wahRvJW190310.shtml
9.https://twitter.com/SecPompeo
10.http://downloadcenter.mcafee.com/products/mcafee-avert/sw/old_mfe_skywiper_brief_v.1.pdf.zzz
11.https://www.antiy.net/media/reports/flame-analysis.pdf
12.https://mp.weixin.qq.com/s/rRr3bJtCeiehQoXPWcnHqA
13.https://mp.weixin.qq.com/s/7ZtBct2suc_NoBqgp7SrhA
14.https://mp.weixin.qq.com/s/8d8MezUKIGg0fF8t2JQdAQ
15.https://mp.weixin.qq.com/s/VgHg-5Lw8zB_-OxzgFSR6Q
16.https://mp.weixin.qq.com/s/3kwVMMctjy7Y-BhFU2OH0g
17.https://mp.weixin.qq.com/s/V-oNKctAAQOAYBoQwb1rlg
18.https://www.computerworld.com/article/2547938/hackers-break-into-water-system-network.html
19.https://www.latimes.com/archives/la-xpm-2001-jun-09-mn-8294-story.html
20.https://blog.talosintelligence.com/2018/05/VPNFilter.html
21.https://invinsec934982159.files.wordpress.com/2018/08/vpnfilter-malware1.pdf
22.https://blog.talosintelligence.com/2018/06/vpnfilter-update.html
23.https://securelist.com/the-mystery-of-duqu-2-0-a-sophisticated-cyberespionage-actor-returns/70504/
24.https://www.f-secure.com/weblog/archives/00002718.html
25.https://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_stuxnet_dossier.pdf
26.https://otx.alienvault.com/pulse/5534546eb45ff52dc83ffd7b
27.https://dragos.com/wp-content/uploads/TRISIS-01.pdf
28.https://dragos.com/resource/xenotime/
29.https://www.fireeye.com/blog/threat-research/2016/06/irongate_ics_malware.html
30.https://www.fireeye.com/blog/threat-research/2018/10/triton-attribution-russian-government-owned-lab-most-likely-built-tools.html
31.https://www.fireeye.com/blog/threat-research/2019/04/triton-actor-ttp-profile-custom-attack-tools-detections.html
32.https://www.welivesecurity.com/wp-content/uploads/2018/10/ESET_GreyEnergy.pdf
声明:本文来自ADLab,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。