再度瞄准工控设备基础设施:针对TRITON恶意活动的详细分析
导语:FireEye近期确认TRITON恶意活动正在针对一个新的关键基础设施发动攻击,我们目前已经对该恶意行为采取了响应措施。
概述
FireEye近期确认TRITON恶意活动正在针对一个新的关键基础设施发动攻击,我们目前已经对该恶意行为采取了响应措施。
2017年12月,FireEye公开发布了我们针对TRITON攻击的第一次分析,其中恶意攻击者使用TRITON自定义攻击框架,对关键基础设施工厂的工业安全系统发起攻击,并无意中导致生产过程中断。在随后的研究中,我们分析了攻击者是如何获得构建TRITON攻击框架所需的关键组件的访问权限。在我们最近的分析中,我们认为TRITON恶意活动与位于莫斯科的技术研究机构有所关联,这些机构归属俄罗斯政府所有。
TRITON的入侵始终笼罩在迷雾之中。安全研究人员已经围绕TRITON框架以及对目标站点的影响进行了一些公开的讨论,但在讨论中很少或者完全没有涉及到关于与入侵生命周期相关的策略、技术与流程(TTP)的信息,也没有分析攻击者是如何逐步深入攻击,最终影响工业流程的。TRITON框架以及攻击者使用的入侵工具,都是人工构建和部署的,而一旦涉及到人工进行的步骤,就一定有人为的策略、偏好、入侵操作模式以及自定义工具的特点。我们将目标定位为讨论这些攻击者使用的方法,并重点分析恶意开发者、恶意运营者和其他人员是如何在入侵中使用这些自定义工具的。
在本报告中,我们继续研究攻击者的运营模式,特别关注威胁行为者在目标攻击生命周期的早期阶段,所选择的自定义信息技术(IT)工具和策略(如下图所示)。本报告中的情报信息来源于FireEye Mandiant执行的多个与TRITON恶意活动相关的事件应急响应。
使用本文中描述的方法,FireEye Mandiant事件响应人员在第二个关键基础设施中,发现了来自该威胁行为者的其他入侵活动,包括他们使用了新的自定义工具集。因此,我们强烈建议工业控制系统(ICS)资产的负责人能充分利用本文中所包含的指标、TTP和检测方法,来改进防御机制,从而及时发现网络中可能潜藏的恶意活动。
如果需要寻求IT和运营技术(OT)事件应急响应支持,可以联系FireEye Mandiant。如果希望获取有关TRITON和其他网络威胁的更深入分析,可以考虑订阅FireEye Cyber Threat Intelligence。
FireEye的SmartVision技术通过监控IT和OT网络中的东西向流量,在横向移动的过程中搜索攻击者,降低了攻击最终到达敏感工业控制系统进程的风险。这非常适合于在复杂的工业控制系统中寻找入侵者,因为攻击者会通过两种环境都可以访问的系统,从公司IT网络迁移到OT网络,简单的外围防御远远无法实现监测与阻断。
攻击者:利用各种自定义和商品化入侵工具
在针对目标的整个攻击生命周期中,恶意攻击者利用数十种自定义和商品化的入侵工具,来获取和维护对目标IT和OT的访问。FireEye Mandiant发现的一系列自定义工具,将在本文后面的附录中列出,同时也列出了哈希值。附录A、附录B和附录C中,提供了这些工具的发现规则和技术分析,以及MITRE ATT&CK JSON原始数据。
攻击者的自定义工具,通常可以反映出商品化工具的功能,这些工具似乎是专门为了逃避反病毒检测而开发的。该恶意组织经常利用自定义工具,因为他们似乎正在解决反病毒检测的问题,或者正在处于入侵的关键阶段。举例来说,在获得对工业工作站的访问权限之前,恶意攻击者会重点利用IT和OT DMZ中的自定义后门。例如,他们使用Mimikatz(公开的工具)和SecHack(自定义工具)进行凭据窃取,而这两种工具都具有非常相似的输出结果。
攻击者:致力于长期持续进入目标环境
在复杂的工业控制系统攻击中,攻击的生命周期通常要以年为单位来衡量。攻击者需要很长时间来准备这样的攻击,以便了解目标的工业流程,并构建自定义工具。这些攻击通常也可能由一些以准备应急方案为目的的国家进行(例如:安装像TRITON这样的恶意软件,以等待在合适的时机利用),这些国家不会立即发起攻击。在此期间,攻击者必须确保能够持续访问目标环境,否则可能会失去多年来努力的成果,并使得成本高昂的自定义工业控制系统恶意软件付之东流。我们所分析的本次攻击也不例外。在攻击者进入安全仪表系统(SIS)工程工作站之前,攻击者在目标网络中存在了将近一年。在此期间,他们似乎优先考虑的是恶意活动运营方面的安全性。
攻击者在企业网络上建立初步的立足点之后,TRITON攻击者将大部分精力都聚焦在获得对OT网络的访问上。他们没有开展间谍活动,例如:使用键盘记录器和截图抓取工具,或者浏览文件、泄露大量信息。实际上,攻击者所使用的大多数攻击工具都专注于网络侦察、横向移动以及维持目标环境中的存在。
攻击者使用多种技术来隐藏他们的恶意活动,掩盖他们的踪迹,并避免他们的工具被活动的反病毒软件发现。
1. 攻击者将恶意文件进行重命名,以使得它们看起来像是合法文件,例如KB77846376.exe,这是以Microsoft更新文件来命名的。
2. 攻击者经常使用模仿合法管理员活动的标准工具,大量使用RDP和PsExec/WinRM。
3. 在Outlook Exchange服务器上植入WebShell时,攻击者修改了现有合法的flogon.js和logoff.aspx文件。
4. 攻击者依靠基于SSH的加密隧道来传输工具和远程命令/程序执行。
5. 攻击者使用了多个暂存文件夹,并选择使用合法用户或进程不常使用的目录。
6. 攻击者在成功执行某一阶段攻击后,经常会删除投放的攻击工具、执行日志、分阶段进行渗透的文件以及其他文件。
7. 攻击者对暂存文件夹中的恶意工具进行了重命名,因此即使我们通过某些安全方式(例如:ShimCache记录或WMI最近使用的应用)从磁盘上发现并删除这些文件之后,也无法识别出恶意软件的用途。
8. 攻击者使用Timestomping的方法,来修改而已工具的$STANDARD_INFORMATION属性。
一旦攻击者获得了对目标SIS控制器的访问权限,他们的关注点似乎就只转移到对成功部署的TRITON保持持续的可访问性。从战略上来看,攻击者之所以限制其活动,是为了减少被发现的风险。
1. 该攻击者在分布式控制系统(DCS)上获得了立足点,但没有利用该访问权限来了解工厂的操作流程、窃取敏感信息、篡改DCS控制器或操纵流程。
2. 随后,攻击者获得了SIS工程工作站的访问权限。从这时开始,攻击者将大部分精力集中在使用TRITON攻击框架提供后门Payload以及后门Payload的改进上。
3. 攻击者试图通过在非工作时间与目标控制器进行交互,来降低在高风险活动中被发现的机会。这样将确保现场有更少的工作人员能对恶意操纵控制器引起的潜在告警做出反应。
4. 攻击者重命名了他们的文件,以使这些文件看起来合法,例如他们使用了trilog.exe,这是以合法的Schneider Electric应用程序命名。
恶意活动:至少从2014年开始运营
我们对该恶意组织使用的自定义入侵工具进行了分析,发现该团队从2014年以来一直在运营恶意活动。值得注意的是,FireEye从未发现任何攻击者的自定义工具,尽管其中的许多工具可以追溯到几年前的IoC。基于这个事实,再加上恶意组织对运营安全性的强烈兴趣,共同表明了除了在本文中所分析的第二次入侵,攻击者可能还针对其他目标环境发动了攻击,并且曾经成功获取权限,或者到目前仍然保留了权限。
1. 在调查期间,我们恢复了用于建立初始立足点的后门样本,该样本基于Cryptcat编写,在2014年被恶意组织上传到恶意软件的测试环境。
2. 基于Cryptcat和PLINK的后门从2014年4月28日开始每天执行一次,使用ProgramDataUpdater和NetworkAccessProtectionUpdateDB任务。该日期与观察到的入侵时间节点无关,可能表明威胁参与者首次创建这些持久性机制的日期。
3. NetExec.exe是一个自定义横向移动和远程命令执行工具,其自称为“NetExec 2014 by OSA”。
4. SecHack.exe(By OSA)是一种自定义凭据收集和侦察工具,于2014年10月23日编译完成。
5. 攻击者使用盗版的Wii.exe,这是一种公开的文件索引工具,自2010年该工具获得授权,自2014年以来一直没有更新。
工控启示录:优先考虑IT和OT中Windows系统的检测与防御
大多数复杂的工业控制攻击,都将Windows、Linux和其他常用的IT系统(位于IT或OT网络中)作为最终目标。此前遇到的一些案例包括:利用计算机访问目标可编程逻辑控制器(PLC)(例如:Stuxnet)、直接与连接互联网的人机界面(HMI)(例如:BlackEnergy)进行交互、获取对工程站的远程访问并操控远程终端单元(RTU)(例如:INDUSTROYER)、感染SIS可编程逻辑控制器(例如:TRITON)。
如果防御者能够有针对性地专注于阻止这些方式的攻击行为,那么防御者就会具备许多关键优势。并且,这些优势只会随着IT和OT系统的不断融合而越来越大。
1. 攻击者通常会在大多数攻击生命周期中,在IT系统留下较大的后续利用空间。
2. 防御者应该尽力在攻击生命周期的早期阻止攻击者。一旦攻击者到达目标ICS,导致负面后果的可能性以及攻击者对目标威胁的严重程度将会急剧增加。
3. 目前,有许多成熟的安全工具、服务和其他已有的功能,可以用于在“管道”系统中进行防御和搜索。
防御者:利用已知工具和TTP来寻找TRITON攻击者
该恶意组织的历史活动,展现了他们强大的自定义工具开发能力。这些工具集背后的开发人员,高度依赖现有的软件框架,并对其进行修改,从而最好地服务于入侵操作。开发人员熟悉端口、协议、持久性机制,并且熟悉恶意软件的操作流程。
尽管支持恶意活动的开发团队的偏好可能会随着时间的推移而发生变化,但了解这些内容对于确定其TTP是否适用于其他恶意软件开发人员和威胁参与者仍然非常有用。此外,攻击者可能在其他目标网络上获得了立足点,这也超出了本文中所讨论的范围。在这种情况下,采取追溯性狩猎的方案将有助于防御者识别和防范恶意活动。
基于我们对开发人员偏好及攻击者方法的分析,我们可以使用各种具有保真度和威胁密度的检测与搜索规则,来加强更广泛的TTP的可见性。这些规则的编写使得识别和分类潜在的恶意样本成为可能,同时也建立了新的归类来寻找目标攻击者的活动。
我们针对这一组织的恶意活动所提取的TTP,不一定是具有排他性的,在特定场景下也有可能不是恶意行为导致的。但是,FireEye构建的TTP配置文件可用于搜索网络和终端活动中的恶意模式。这些TTP不仅可以用于发现入侵的证据,而且其中包含了针对与攻击者偏爱的技术具有强烈重叠的活动的识别,可以有效发现这一特定恶意组织的潜在活动,进一步加强事件响应工作。
下表中提供了有关攻击者使用自定义工具的行为模式,以及用于识别该恶意活动及攻击者其他活动的相关指标。与此同时,我们也使用了MITRE ATT&CK框架来展现攻击者的攻击方式(参见附录C:MITRE ATT&CK)。
1. 借助XML触发器,利用计划任务实现持久性
· ATT&CK:T1053
检测建议:查找新增或异常的引用未签名.exe文件的任务计划XML触发器。
2. 通过IFEO注入实现持久性
· ATT&CK:T1183
· 检测建议:在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options下查找引用.exe文件的修改项和新增项。
3. 使用硬编码的DNS服务器创建命令与控制(C2)
· 检测建议:查找以8.8.8.8:53为目标进行DNS查询的PE执行。这可能适用于沙箱和其他恶意软件处理技术。
4. C2使用流行的C2ports
· ATT&CK:T1043
· ATT&CK:T1065
· 检测建议:在常见和非常见端口上(例如:443、4444、8531和50501)查找具有与该端口所对应协议不匹配的出站连接。
5. C2使用虚拟专用服务器(VPS)基础设施
· ATT&CK:T1329
· 检测建议:查找与非标准IP范围之间的入站和出站连接,特别是来自OVH和UK-2 Limited(uk2.net)等国际VPS提供商的连接。
6. 带有连字符的C2域名
· 检测建议:寻找新观察到的包含连字符的2LD和3LD域名。
7. 使用来自fear.org的动态DNS域名的C&C
· ATT&CK:T1311
· 检测建议:寻找新观察到的具有或注册fear.org的动态DNS域名。
8. 使用vfemail.net电子邮件地址注册的C2域名
· 检测建议:在新观察到的域名或DNS解析中,寻找包含vfemail.net的注册邮件信息。
9. 使用PLINK实现RDP隧道通信
· ATT&CK:T1076
· 检测建议:使用事件日志、防火墙日志和注册表项,查找是否存在PLINK和非标准的RDP用法。可以参考FireEye博客文章《通过RDP隧道绕过网络限制》。
可以查找原本不应通过RDP访问敏感系统的用户帐户下的位图缓存文件,从而查找内部RDP透视。查找默认帐户、服务帐户或管理员帐户下的bcache22.bmc等位图缓存文件,或者任何不希望对受保护的OT连接区域中的敏感系统进行内部RDP访问的帐户,特别是在DMZ或者DCS区域(例如:HMI),或者是工程工作站。
10. C2使用硬编码的SSH私钥
· 检测建议:查找具有硬编码OpenSSH私钥的PE。
11. 使用RDP直接连接
· ATT&CK:T1076
· 检测建议:查找具有默认主机信息、非标准或异常的区域设置ID,或包含其他元数据的入站RDP连接。可以参阅FireEye有关RDP活动基线的博客文章。
12. C2使用具有默认Windows主机名的源系统
· 检测建议:在PE证书、SSL和SSH证书、RDP握手中,查找匹配WIN-[A-Z0-9]{11}(例如:WIN-ABCDEFGH1JK)结构的默认Windows主机名。
13. C2使用SSH
· 检测建议:寻找新增的、独特的或者异常的SSH会话。记录SSH密钥和指纹,可以轻松快速地识别恶意软件产生的异常会话。查找通过非默认端口进行的SSH会话。
14. 被攻陷的VPN帐户
· ATT&CK:T1078
· 根据原帐户位置、IP地址、主机名关联等信息,寻找异常的VPN登录。
如果使用基于短信息的多因素认证,可以查找您的员工所在国家以外注册的电话号码。
15. 恶意软件伪装成Microsoft合法组件
· 检测方法:查找PE元数据不匹配的PE,例如包含“Bitvise”字符串的同时,在元数据中又包含“Microsoft Corporation”二进制文件。
16. 使用自定义的Bitvise二进制文件
· 检测方法:查找具有Bitvise PDB路径字符串的PE文件,例如d:\repos\main\ssh2\。
17. 使用自定义的OpenSSH二进制文件
· 检测方法:寻找内容为“Microsoft openSSH client”的PE。
18. 使用自定义Cryptcat,但使用默认密码
· 查找投放Cryptcat二进制文件或包含Cryptcat字符串内容的PE,例如默认密码“metallica”。
19. 通过PowerShell进行时间计算
· ATT&CK:T1099
在PowerShell脚本或PowerShell命令行条目中,查找时间戳命令字符串,例如“.CreationTime=”。在PE编译时间之前,查找具有NTFS创建时间的PE。
20. 使用Visual Studio 2010,从开发人员工作站部署带有调试信息的二进制文件。
· 检测方法:查找包含默认或通用路径的PDB路径的PE,例如:
\Users\user\Documents\Visual Studio 2010\ \Documents\Visual Studio 2010\
21. 使用Thinstall封装恶意软件
· 检测方法:查找内容为“thinstall\modules\boot_loader.pdb”的PE。查找SYSTEM用户在C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\Thinstall\上下文中创建的虚拟化文件中是否包含Thinstall二进制文件。
22. 使用部分偏好的目录进行文件的操作、暂存和执行
· 检测方法:在以下目录中,查找新增或异常的二进制文件:
C:\Windows\system32\inetsrv\ C:\Windows\temp\ C:\Windows\SysWOW64\wbem C:\Windows\SysWOW64\drivers C:\Windows\SysWOW64 C:\Windows\system32\wbem\ C:\Windows\system32\drivers\ C:\Windows\system32\ C:\Windows\ C:\Users\Public\Libraries\ C:\Users\administrator\appdata\local\temp\ C:\ssh\ C:\perflogs\admin\servermanager\ssh\ C:\perflogs\admin\servermanager\ C:\perflogs\admin\ C:\perflogs\ C:\cpqsystem\ C:\hp\hpdiags\ C:\hp\bin\log\
展望
在安全社区中,经常会特别关注工业控制系统恶意软件,主要在于这一系列的恶意软件非常新颖,并且在野外很少被发现。我们认为,防御者在视图识别或阻止以工业控制系统为核心目标的入侵行为时,应该更多关注所谓的“管道”系统。
我们在第二个关键基础设施中发现了这一威胁行为者,为了能够提高安全社区对这一威胁信为者在2014年至2017年之间的能力和恶意活动的人士,我们分享了我们对于这一恶意组织TTP的所掌握情报以及对自定义工具的分析成果。我们鼓励工业控制系统资产的所有者,能够利用本报告中包含的检测规则和其他信息,来寻找相关活动。因为我们认为,这一威胁参与者很可能同样在其他目标网络中存在。
附录
IoC
KB77846376.exe
MD5: 47f9cc543905a69a423f9110ae7deffb
SHA256: 87648aad45d9142d1d825d728b7aa098f92aea38698209d038ba58b7385f8df6
KB77846376.exe.x64
MD5: ee477fdee8b6ad4fe778a6fa4058f9aa
SHA256: 2141b526a81bb87b964880e69933aad3932131ccccee5949d2a16c1e124ccdbb
Netexec.exe
MD5: aca94bb7bdfb735f267f083e28f4db37
SHA256: c55e63f8a3b328c3ba77cebf821bdc5243b15a0298057e75f7605d0922c8d7cd
runsvc.exe
MD5: 1904cad4927541e47d453becbd934bf0
SHA256: 70efbd074326e7bbd4e851ded5c362fe5fe06282ed4bbb4b9f761f1b12ee32f7
svchostpla.exe
MD5: 121772100e46dde2d6317b08c7a59e13
SHA256: 910b26c942c0cff8b1f5a57e1521801bfd54c8cbcfd23d3d11ea9fe27ca4a0e9
compattelprerunner.exe
MD5: 35f443608fc4eeb78f9347a9dfc5aea1
SHA256: 1330594c2685fe6fc2c87439ef151dfacabc78402379a73be39953048b144960
compattelprerunner.exe
MD5: 10fd713eb3bc6a8f7abd7030104d0ce7
SHA256: 6ab948ec61f1f7e04119da85d5263d428a1de070edad3a4e796bada2ab05cea7
compattelprerunner.exe
MD5: 648223034bda28c415a8deeb74dcb3ef
SHA256: 4c2383c8650112e00cb8b52d0faac7b98207073db081dbdcbb278f0470b869a1
ProgramDataUpdater.xml
MD5: c744006ebaaf25cd7fad0ebba56e4f84
SHA256: 6d2d9623762f822949eef80b02f4ba2d26227eb23ad5b8d1a0a3d6da3bc60d6c
napupdatedb.exe
MD5: ba51f25db03a66c658d1fd4396f32843
SHA256: 0fc391cdef0705f032109e16f8f591e1e6f8ffccbc46f4eb4a8fa058047c0adc
alg.exe
MD5: af5b9c9e4c6bfc6cb7fa5e4b04da8dc8
SHA256: 970fab66733ba594b435cf345c72814ee5f8443c44d28ef251f768ad66a6c052
userinit.exe
MD5: 2d11be6755b80cfca5c2f5138881ff25
SHA256: fc5b4c61f66beb58a62636ab7c198e6ab7f38ce201f098f2818a5699b8aa1138
csrss.exe
MD5: de2e1d59c81a2798a239baaa1edc0dd8
SHA256: 1848d26e47ee4937ef02e67a447b4054d66f4d659f1fbd8bda1482dc4f02c7c4
tquery.dll
MD5: 31cd0738ec2e40ff086dfd84ac2510fb
SHA256: 98da0ce88de897e1b08733ac771edab5e5b2a2dda8aab0e73c1d41bade275ff6
txflog.dll
MD5: 8db693f75a0cfe043a5810f799654cf9
SHA256: f0dcbc83d911c382da7ba06a027bdd5861d1a9b723ebe5d9d6f6b79d7b70f29d
cryptopp.dll
MD5: 9a7234078559093e06c9d32148ed95a3
SHA256: 32f5d0a454c26e8aa6f4cad58f3782337cc97cfe2305bbfe564437e5f0d51bbc
DEFAULT
MD5: 30a9ee20052fcc34dee6b09f9210d4ed
SHA256: f7bdddbeae239305ccca3b7eb1019b713bd0f7f060976494e810917a1e6ad5ee
DEFAULT.BAK
MD5: 519098f3970d57b8429a9f6baeaf0f8c
SHA256: 1f1902e4482527824ef2c0c2039162db85e5a671caf0767a695116b03cfc866d
spl32.exe
MD5: 62831f960fe764f090d1201033202438
SHA256: 1d359163b6bd882ae4c26854d69745136a23f3abb7c96341f6d17e18a546a5fd
WinSAT.exe
MD5: 685776e0020ad9bfc4e2f4f7c7a9c623
SHA256: 3b6fd091b956b17476990c6ca77dd8f77d203d3170745d1b7c7894bfcf629b86
csrss.exe
MD5: d05702c4c3924b08bac5079add4e2347
SHA256: 720ef3d5b5416974376ca4ea8bd536e9eeb608f89e3b5b264e197266be8a9f4e
clusapi.dll
MD5: f985fd0d36ab79bfccfaed6d64c5fc23
SHA256: 084c21e75fbfa5056fec913c237ce7fba314f88fbd687e8dcb1e777003f79b0e
PolicMan.dll
MD5: 6fbeb6a9f990402bf6f056c892fefcc6
SHA256: 9224c2b00e94e5c57d63820aebe613843b5c851a027488148308fac2d02206f0
verifier2.dll
MD5: 6f8b33cb1d101c6bf0e9aeaf29b7e72d
SHA256: 7633b4178611e28aedfa365a0de8ebe5f41ae8eeee71322f04d0e30e50ba2914
misc.mof
MD5: 5efbd51044fb90c6231438c51d83037f
SHA256: 7bcca38e43f3b37b1acea05899a7c11dfb62de64531bd48af992d5e400a1755f
logoff.aspx
MD5: 915efc70a812c1cb35b29ba0ecb7c48d
SHA256: 0da4c0b83fa1ad4af9aad6c42feecc6c21c3fd0e660b9e5b3857ddeae3473d54
flogon.js
MD5: 0f144e79ea8d8b66fa973e0568415501
SHA256: f81aa77d23ca6662efb3e6e33538a60e39abb5ca66102e07ffa318a6d6cd78ec
发表评论