查看原文
其他

IT团队避免中招的“神技能”,让勒索软件见鬼去吧!

陈峻编译 51CTO技术栈 2018-08-04

在过去几年里,勒索软件无疑让那些恶意软件的开发者们赚得盆满钵满。勒索软件的各种典型代表包括:2013 年的 CryptoLocker、2017 年 5 月的 WannaCry 和 2017 年 6 月的 NotPetya。


它们的受害者包括各大电话公司、英国国家医疗服务(NHS)、以 FedEx 为首的快递公司、本田和雷诺之类的汽车制造商、以及乌克兰国家机构。


这些攻击目标往往是并无针对性,而且如果不加以防范的话,大多数企业在未来的某个时候还可能面临同类的威胁。


本文分为如下四部分对勒索软件进行深度剖析:

  • 都是“比特币”惹的祸:勒索软件基本概念与原理

  • “零容忍”地识别:IT 团队如何识别出自己的系统是否已被感染

  • 确认过眼神,该行动了:在发现中招后应采取的各个步骤

  • 未雨绸缪,管好“一亩三分地”:做好防范,减小被攻击的可能


都是“比特币”惹的祸


什么是勒索软件?


勒索软件是一种快速传播的恶意软件,它可以加密计算机上的各种文件以换取赎金。


它通过锁定屏幕、键盘或文件,攻击者能够阻止或限制用户访问自己的系统,并通常以索取付款(一般是比特币之类的电子货币)的方式,换取文件或系统的解锁密钥。


在少数情况下,就算赎金已支付,勒索软件也无法解锁文件,或者文件内容在加密时就已被混乱,导致其永远无法再被访问。


同时,还有另一种风险存在:勒索软件在收到付款之后,可能在影响过的系统上留下痕迹,以便未来再次发起加密攻击。


与比特币的关系


众所周知,比特币是一种全球性的加密货币。由于它能够提供匿名性,因此常被作为赎金支付的首选方式。


鉴于系统中没有中间方(如银行或信用卡公司)的介入,因此交易直接发生在两个用户之间。


什么是电子赎金条?


与现实生活中的赎金条或勒索信类似,这种电子提示是给受害者或第三方留下的,告知他们攻击者已劫持了某些文件。


因此,在恶意软件体系中,它通常能明确地指示受害者如何通过转账(一般是比特币),以换取对被加密文件的破解或继续访问。


赎金条可以有多种形式,这当然会限制计算机的继续启动,但最常见有:

  • 用户桌面上新增可打开的文件

  • 新的桌面墙纸或

  • 引导启动时的醒目消息

图 1:WannaCrypt 赎金条示例


那么应该付款吗?


当然不!因为如果支付了赎金,您最终将助长该恶意软件产业,给他们去攻击更多的无辜受害者提供资助。


同时,如果您被识别为愿意支付赎金的人,您可能在未来再次成为受害者。就算您付清了赎金,实际上也不能保证一定收到恢复数据的解密密钥。


此外,一些“假的”勒索软件变体,甚至都无法有效地真正加密数据,何况它们中的一些可能已经被破解,并且市面上已有了解密工具。


应该引起关注


在过去的几年里,勒索软件已经成为了大多数企业与个人系统的重大威胁,一些不那么举足轻重的电脑也可能会中招。


而且,因为家庭用户不一定有到位的备份策略,所以针对个人电脑的攻击会更为常见。


勒索攻击的后果一般是非常严重的,除了感染可能导致业务的中断之外,勒索软件攻击所造成的经济损失还会导致:

  • 代价高昂的响应与调查

  • 灾难公关处理

  • 敏感数据泄漏的相关法律行为

  • 可能违反 DPA(数据保护法案)或 GDPR(通用数据保护条例)所支付的罚金


最重要的是,企业可能遭受到严重的声誉损失、失去现有或潜在客户、并长期削弱其品牌形象。


此外,勒索软件的目的也并不总是靠赎金牟利。在最近的一些案例中,人们发现某些勒索软件只是某些其他恶意目的的“面纱”。


它们给传统的网络攻击和数据盗窃提供了掩护,通过使得 IT 团队忙于应对显著的勒索软件感染事故,而限制或破坏了系统的整体效率。


如何会被感染?


勒索软件最常见的感染媒介是网络钓鱼,即通过诱惑用户去点击电子邮件中的恶意链接、附件或社交网站上的信息,电脑和移动设备就会被感染。


其他感染方式还包括:

  • Drive-up 攻击,受害者打开了挂马的网站或访问恶意组件,如点击广告时勒索软件就会自动进行安装。

  • Watering hole攻击,水坑攻击,即攻击者猜测或观察一些常被使用的目标网站,将恶意软件植入其中。


“零容忍”地识别


虽然用户看到赎金条是最为明显的被感染迹象,但是勒索软件攻击在早期阶段并不那么明显。


恶意软件作者经常将勒索软件构造为:等到加密完成之后,再让受害者知道,这消耗了受害者及时限制攻击影响的宝贵时间。


在多数情况下,一旦业务环境受到了感染,勒索软件就可以通过网络共享的途径,在后台有条不紊地加密它有所有权访问的各种文件。


勒索软件的直观识别,通常始于用户报告 IT 团队某个文件已被损坏,或被创建了未知的文件扩展名。然后 IT 团队接手查找感染源,以控制正在进行的攻击,并遏制其影响。


以下部分旨在为 IT 团队提供指导,以应对正在进行的勒索软件感染、并标注出那些是被最终用户发现的感染源。


无论感染是正在继续还是已经停止,这些任务都可以被并行执行,同时也能通过组合判断来消除误报。


查看安全警报


请善用已经部署到环境的现有安全工具,包括查看防病毒软件(AV)的日志,入向电子邮件和代理设备上的日志警报。


虽然您会碰到大量的数据,但是这些可以与后面提到的其他任务相关联,以提高结果判断的准确性。


从用户处获取的信息


我们时常会忽略通过咨询 IT 支持人员或用户来确定事故的根源,因为他们对于日常工作中出现的异常现象会更敏锐、更具体。


您最好能提供一个单独的联系点,如某个邮件地址组或支持电话号码,以便用户直接报告问题,从而避免出现各自去频繁地呼叫 IT 支持人员,而耽误了他们实施调查的宝贵时间。


我们可以指导用户按照如下的检查表,逐条报告问题:

  • 是否有无法被打开/被找到/被损坏的文件?

图 2:文件无法打开

  • 是否出现奇怪扩展名的文件?

  • 桌面背景是否被改为赎金条字样?

图 3:桌面背景被修改

  • 是否无法启动并显示赎金单的计算机?


调查人员可以根据以下问题来进一步询问用户:

  • 是否在事发前打开过任何新的文档?

  • 是否点击了电子邮件中的附件或链接?

  • 最近是否有任何软件出现过崩溃?

  • 是否访问了任何陌生网站?

  • 网站是否弹出过与加密有关的窗口?

图 4:NanoLocker 的示例


虽然这会产生许多“噪音”,但是这些不但是事故的第一手资料,同时也能培养用户观察与报告问题的基本意识。


文件服务器是否被感染?


单从无法访问的角度来看,我们无法准确定位自己的文件共享服务器或主机是否已被感染。


因此请遵循以下步骤来予以判断:

  • 在文件服务器上运行防病毒软件的扫描。

  • 查看那些未被共享的路径,如本地桌面和系统盘。如果这些位置上都有被感染/加密的文件,则文件服务器很可能已被感染。

  • 查询未知进程的列表(最好能与以前采集过的正常基线相比较)。

  • 如果将文件服务器置于脱机状态,加密情况会停止蔓延吗?


检查文件所有权


为了加密,勒索软件必须打开并写入文件,这就意味着文件的所有权会被更改成受感染的用户。


另外,赎金条也同样需要有受感染帐户的权限。识别所有者的最快方法就是打开被加密文件的属性,在“详细信息”选项卡中查看其所有者。

图 5:识别所有者的用户名


你也可以用如下 PowerShell 命令来进行查询:


Get-Acl ‘.\2017-finance_report.doc.wncry’ | Select Owner


我们可以通过手头的用户名来直接联系相关用户,然后通过查询活动目录,以获知用户登录的计算机名称。


虽然活动目录本身本地并不提供此项操作,但是我们可以使用以下的脚本来实现。当然,根据域的大小不同,该脚本的运行时间也有所差异。


$username = "infected_username"
$computers = Get-ADComputer -Filter 'Enabled -eq $true' -Properties Enabled | Select Name
foreach ($comp in $computers) {
   $Computer = $comp.Name
   $ping = new-object System.Net.NetworkInformation.Ping
   $Reply = $null
   $Reply = $ping.send($Computer)
if ($Reply.status -like 'Success'){
       $proc = gwmi win32_process -computer $Computer -Filter "Name = 'explorer.exe'"
       ForEach ($p in $proc) {
           $temp = ($p.GetOwner()).User
               if ($temp -eq $Username){
                   write-host "$Username is logged on $Computer"
               }
       }
}
}


另外,用户名也可以作为筛选的条件,来获取某个用户当前所打开的文件列表。


当前文件共享会话


如果攻击针对的是网络共享,那么对于打开文件和当前会话的查询则非常有用。


那些具有多个连接的文件集会特别可疑,它们应该正在创建未知文件类型的文件。


要想显示当前会话,请打开“计算机管理”,用“系统工具→共享文件夹→会话”(如图 6)和“系统工具→共享文件夹→打开文件”(如图 7)来查看当前的各种文件共享和远程连接。

图 6:系统工具→共享文件夹→会话

图 7:系统工具→共享文件夹→打开文件


同样,你也可以使用 PowerShell 命令来查询打开的文件。


如果已知恶意软件的文件扩展名,您可以添加查询参数(-Match“extension_of_encrypted_files”),以限制返回结果的数量:


Get-SmbOpenFile | Where-Object -Property ShareRelativePath -Match "extension_of_encrypted_files" | Select-Object ClientUserName,ClientComputerName,Path


另外,您可以根据用户名来筛选 Get-SmbOpenFile 的输出结果:


Get-SmbOpenFile | Where-Object -Property ClientUserName -Match "infected_username" | Select-Object ClientComputerName,Path


关联文件的访问


识别出含有被加密的文件的共享路径,与用户组属性之间的关联。例如,如果财务共享文件夹里的文件被加密,并且只有财务用户才能有权访问,那么感染源很可能使用的是财务用户帐户。


同时,如果有多个受影响的共享路径,那么确定哪个用户组同时有多个访问权限是至关重要的。


例如:如果财务和销售的共享盘里的文件都被加密了,那么感染源很可能是财务用户,因为只有他们部门才有权访问这两个路径。

图 8:财务部用户可访问两个路径


有针对性的防病毒定义


您的防病毒供应商通常可以帮助您,为加密文件所关联的文件扩展名创建有针对性的定义更新(或手动创建特征签名)。这将有助于调查人员确定哪些系统受到了感染。


定义更新通常需要设置警报日志,而不是删除或隔离文件,否则在能够解密时,您的重要文件就已经丢失了。


该更新应该能够被推送到所有系统中,以获取被感染的系统列表,以及识别感染源。


在与防病毒供应商联系时,您可以涉及到如下方面,以便他们对您当前的情况有所了解:

  • 描述遇到的问题,包括要访问和被损坏的文件。

  • 描述当前针对感染所采取的措施,包括是否已将主机与网络连接断开,或已确定了所涉及到的用户。

  • 描述被加密的文件及其扩展名。

  • 描述被加密的文件位置,是在共享文件夹还是用户的电脑上。

  • 描述业务规模和受影响主机的数量。


检查连接互联网的主机


许多案例证明:那些面向外部提供终端服务、和远程桌面的主机最容易被恶意软件所感染。各类攻击者每天都会扫描数百万个 IP 地址,以寻找易受攻击的系统。


通过检查自己系统中这些服务的最近登录情况,您可以确定那些频繁使用网络连接的帐户,并限制感染的横向传播。


勒索软件样本


在调查期间,响应与分析团队通常会将潜在的恶意样本提交到事先设计好的沙箱中,进行快速自动的分析。这在很多情况下为分析工作提供了一个很好的起点。


名为 CAPE(Configuration and Payload Extraction,配置和有效负载提取)的开源工具会专门构建出上下文环境、并快速地分析输入样本是否为恶意。


如果在目标网络中发现了未知的可执行文件,你还能够将其上传到 https://cape.contextis.com/submit/ 进行深入分析。


以下是特别针对勒索软件的 CAPE 公开实例。它们分别展示了将文件写入磁盘,以及更改用户文档扩展名等行为。

WannaCryptor: https://cape.contextis.com/analysis/7240/
CryptoShield: https://cape.contextis.com/analysis/4509/
Locky: https://cape.contextis.com/analysis/3579/
BadRabbit: https://cape.contextis.com/analysis/3007/
NanoLocker: https://cape.contextis.com/analysis/806/


如果您想构建自己的 CAPE 实例,也可以使用 GitHub 上的链接:https://github.com/ctxis/CAPE


确认过眼神,该行动了


无论是您自己在电脑上发现了令人讨厌的赎金条,还是您的员工报告了可疑的感染,您都需要迅速采取一些步骤来控制和修复,以减少损失。


下面分两部分来具体介绍:

  • 针对企业内部 C 级别的人员,给出一般性的建议和采纳的步骤,最大限度地减轻攻击的后果。

  • 针对内部 IT 团队的具体处理实务,大家可以直接对号入座。


给 C 级别的建议


不要惊慌,不要付款:

  • 要知道,在您之前许多组织都遇到过,所以请深吸一口气,这并不意味着您明天会上头条。

  • 不要草率为了面子而支付赎金,在很多情况下,赎金条上的链接很可能会构造出另一个网络钓鱼的机制。


通知您的 IT 团队,并考虑获得外部帮助:

  • 立即通知您的 IT 团队,以确保尽快采取措施。

  • 您也可以考虑打电话给外部专家。在很多情况下,具有网络事件响应经验的专业安全公司会比内部 IT 团队更擅长处理此类事件。他们将能够调查问题的严重程度,并确定下一步需要采取的措施。


迅速行动,并制定公关计划:

  • 迅速的响应对于减少攻击的进一步影响是至关重要的。建议组织针对此类攻击制定演习计划,以确保其有效性。

  • 及时将信息传递给外部媒体。建议创建适当的通信模板或声明,以便按需发布。


确保符合法规和法律的要求:

  • 注意:勒索软件也可能会影响到您的部分客户数据。在这种情况下,您需要遵守相应的监管和法律要求,如数据保护法(DPA)和通用数据保护条例(GDPR)。

    这就意味着您必须在意识到数据泄露的 72 小时内通知主管部门,以及受影响的个人,以避免受到处罚。


给 IT 团队的技术指导


主要任务


下面列出了可应用于勒索软件感染场景的各项技术步骤:


与网络进行物理隔离,并关闭已识别的主机:这是一个关键性的步骤,应该尽快完成。鉴于最近蠕虫类勒索软件的流行(如 WannaCry 利用了 Windows 核心组件中的漏洞),如果缺少此步,企业将“如临大敌”。


在实践中,我们应该执行一些经过了充分测试的流程,如某种网络访问控制(NAC)的方案。


在需要时,可将主机与网络的连接断开,并提醒用户会出现无法访问共享盘的情况。


从网络中断开被加密的共享盘,或禁用写入权限:此举可以抑制任何新的文件被加密。


如果网络共享确实无法断开的话,请尽可能地根据调查结果撤销对共享盘的写入权限,以便用户仍可以只读的方式访问幸存的文件。


下一步是要确保加密进程已被停止。如果没有,则感染很可能在于服务器端,因此应当及时关闭服务器。


次要任务


为了限制感染的传播范围,并隔离源主机,我们可以采取如下步骤来予以减缓:


识别勒索软件家族:用沙箱进行分析,识别勒索软件的变种与类型会是一个复杂的过程,因此我们需要用到各种工具和信息。


其中包括:Context 的 CAPE(https://cape.contextis.com/)沙箱,它提供对恶意软件样本的详细技术分析;Chronicles 的 Virus Total 则(https://www.virustotal.com/)提供了更为全面的描述。


用 Google 检查文件扩展名:如果该软件已经存在了一段时间,那么在网上会有大量可用的信息。我们通过搜索文件扩展名,就能识别出勒索软件的家族类型。


另外,通过诸如 https://id-ransomware.malwarehunterteam.com/ 这样的第三方网站,我们也能够快速地通过勒索条、加密文件的样本来确定被感染的类型。


清理:在重新连接回网络之前,将主机恢复到之前的“干净”状态是非常必要的。


具体操作包括:完全擦除干净系统,从“黄金映像”中恢复,而不仅仅只是删除已知的感染文件那么简单。


随着虚机技术的发展,现在重新镜像的速度非常快,并且这是首选的可靠清理方法,尤其是在面对恶意软件已影响到硬盘引导扇区的时候。


恢复到已知安全日期的文件:公司的备份策略会影响到恢复的进程,因此需要有一个经过良好测试与实施的日常备份记录,以供不时之需。


另外如下面链接所示,一些防病毒供应商或免费工具网站也能提供第三方工具,以识别勒索软件家族中某些加密机制的弱点,并实现解密的服务。

https://success.trendmicro.com/solution/1114221-downloading-and-using-the-trend-micro-ransomware-file-decryptor


当然,如果发现备份记录失效的话,我们还可以将被加密的文件经过扫描之后,再传输到一个带有最新防病毒软件的干净系统之上,以便后续处理。


未雨绸缪,管好“一亩三分地”


只要恶意软件作者能够持续获利,那么勒索软件的攻击程度与范围就会不降反升。因此,企业的安全团队应时刻做好各种事件响应的准备。


下面我们列出了一些有助于最大限度地降低业务威胁的建议:

  • 采取切实可行的预防措施,持续保护 IT 基础架构及其持有的数据,例如:我们可以模拟运行各种攻击的场景,以测试和评估自身的安全性。

  • 采用“深度防御(defence-in-depth)”的策略,以减少风险的暴露、并阻止恶意软件在内网中的传播。

    其中包括:防火墙和电子邮件安全产品可以阻止已知的恶意发件人、并去除已知的恶意附件类型;浏览器中的广告拦截器和脚本拦截器能够在用户端各司其职。

    而新的“沙盒”隔离技术则可以阻止从钓鱼链接、恶意广告、网络驱动器和“水坑”中下载并执行勒索软件。

  • 实施严格的备份制度、持续备份数据、并将其存储到受感染的系统所无法访问到的多个位置(包括脱机),以确保在发生攻击时不会造成数据的丢失。同时,我们还应定期测试这些系统的访问性,而且最重要的是定期测试备份的完整性和恢复流程的可行性。

  • 通过定期更新系统的补丁程序、并消减漏洞被利用的可能性,来保障自己网络与系统的安全态势。

  • 通过考虑如何增强技术系统与流程的恢复能力,来为最糟糕情况的发生做好准备,进而保证您的关键系统在被勒索软件锁定时,仍能继续运作。

  • 制定事件的响应计划,并定期进行测试,以不断寻求改进。当然,如果您没有此项内部技能的话,可以外包或寻求外部电脑取证专家的服务。

    同时,对于违规所可能引起的公众利益受损,您应当确保有适当的沟通计划,以及具有及时通知媒体的能力。

  • 开展员工意识培训。确保您的员工充分了解自己可能面临的威胁,和常见的攻击方式(如:钓鱼邮件等)。


作者:Matthew Holley,陈峻编译

编辑:陶家龙、孙淑娟

投稿:有投稿、寻求报道意向技术人请联络 editor@51cto.com

精彩文章推荐:

为什么分布式一定要有Redis?

如何消除“技术债”?高效DevOps团队的6个核武器

程序员,除了写好代码,你更应该看5月的这十篇热门文章!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存