请输入标题 bcdef
随着恶意软件的不断演变,出现了一种以“无文件”形式存在的恶意软件,它难以被发现,且危害巨大,威胁着全球范围的银行、通讯企业和政府机构。本文首先对“无文件”恶意软件的定义和历史做了介绍,然后对其使用的攻击技术作了详细阐述。最后,本文分析了“无文件”恶意软件带来的挑战及应对措施。
请输入标题 abcdefg
引言
2017 年2 月8 日, 卡巴斯基发布了一篇《Fileless attacks against enterprise networks》的报告,揭示了一种“无文件”恶意软件的攻击方式。此次攻击最初是由一家俄罗斯银行的安全团队在银行的AD 域控服务器1 的物理内存中检测到Meterpreter2 代码后发现的。在攻击过程中,犯罪分子利用“无文件”恶意软件的攻击方式获取了ATM 管理设备的控制权,将事先编写好的基于XFS 标准3 的恶意吐钞软件上传,将钱取光,然后删除恶意吐钞软件。鉴于卡巴斯基把这个恶意吐钞软件命名为ATMitch,本文暂且称这次事件为ATMitch 事件。报告称,全球有超过40 个国家、140 家企业已经受到此类“无文件”恶意软件的感染,主要包括银行、通讯企业和政府机构。本文将主要探索此类“无文件”恶意软件的攻击技术以及需采取的防护措施。
什么是“无文件”恶意软件
与大多数恶意软件不同,“无文件”恶意软件并不会在目标计算机的硬盘中留下蛛丝马迹,而是直接将恶意代码写入内存或注册表中。由于没有病毒文件,传统基于文件扫描的防病毒软件很难侦测到它们的存在。然而,现在“无文件”恶意软件的定义已经逐渐扩大化,那些需要依靠文件系统的某些功能来实现激活或驻留的恶意软件也已经包括在了“无文件”恶意软件的范畴中。
“无文件”恶意软件的演变
2001 年7 月19 日,全球爆发了红色代码病毒,当天超过359 000 台计算机受到了感染,第一次将“无文件”恶意软件这个概念带给了普罗大众。红色代码是一种网络蠕虫病毒,利用微软IIS的缓冲区溢出漏洞进行病毒的感染和传播。该病毒利用HTTP 协议,向IIS 服务器发送一条含有大量乱码的请求,造成系统缓冲区溢出,把“数据包”当作代码运行,然后上传并执行木马程序,使病毒可以在该系统内存驻留。不同于以往的文件型病毒和引导型病毒,红色代码病毒并不将有害代码写入被攻击服务器的硬盘,它只存在于内存,传染时不通过文件这一常规载体,而是借助这个服务器的网络链接攻击其他服务器,直接从一台电脑的内存传到另一台电脑的内存,开创了网络病毒传播的新途径。
展开全文
2003 年1 月,另一个蠕虫病毒SQL Slammer出现,它利用SQL Server 2000 和数据库桌面引擎的缓冲区,溢出漏洞感染服务器内存,并以极快的速度随机向大量IP 地址进行扩散。这些扩散请求致使全球范围内相当数量的路由器不堪重负,消耗了极大的网络带宽,有些区域网络丢包率甚至达到了100%,以至于一开始它被误认为是DDoS 攻击4。
2012 年3 月,卡巴斯基实验室侦测到了一个“无文件”恶意软件bot。黑客入侵了俄罗斯AdFox 广告管理系统,在展示广告的js 脚本里加入了恶意代码,当用户浏览带有广告的页面(通常是新闻网站)时会自动去访问一个带有Java 漏洞的恶意网站,黑客利用漏洞在用户的计算机上安装Lurk 木马。Lurk 木马会在用户访问俄罗斯多家银行的网上银行系统时记录并窃取用户名和密码,从而盗取资金。由于bot 并不会在硬盘上保存任何文件,而是直接将恶意代码注入javaw.exe 进程的内存空间里,所以当用户重启计算机后恶意代码就会消失,但是,由于用户访问这些新闻网站的概率非常高,bot 很有可能会再次进入用户计算机的内存。
相比之前的“无文件”恶意软件会在计算机重启之后消失,2014 年开始陆续出现了能持久存在于计算机上的“无文件”恶意软件。它们通常会将恶意代码写入注册表的Run 键值,调用合法的rundll32.exe 程序执行Java 代码,使自己在重启后自动继续运行,并使用PowerShell 工具执行恶意脚本。类似的“无文件”恶意软件有Poweliks、Phasebot、Kovter。
2015 年6 月,卡巴斯基公布了一份调查报告,调查显示在卡巴斯基的几个内部系统中检测到了网络入侵行为,入侵使用的“无文件”恶意软件被命名为了Duqu2.05。为了最大限度的不被发现,Duqu2.0 没有任何的长久驻留的机制,入侵者挑选了长时间在线的服务器作为目标进行感染,并且在服务器重启后重新感染。然而这个机制有个弱点,当大范围断电时,所有计算机都会重启,恶意软件无法存活。为了预防这种情况,入侵者在少部分机器上部署了一个特殊的驱动程序,可以建立隧道连接外网,接收远程指令,在断电后重新感染整个网络。
2016 年,“无文件”恶意软件的发展又出现了新的特点。PowerSniff、PowerWare、August等利用Microsoft Word 宏来进行钓鱼传播的“无文件”恶意软件陆续出现。PowerSniff的目标是远程控制感染计算机,PowerWare 加密本地文件,是一款勒索软件,August 致力于窃取用户信息。
2017 年, 名叫POSHSPY 的“ 无文件” 恶意软件出现,它利用系统提供的WMI(WindowsManagement Instrumentation)功能来实现定时自启动,并利用PowerShell 工具执行恶意脚本。
然而,拥有“无文件”攻击方式的并非只有这些已经“完成”的恶意软件,诸如Angler EK、Metasploit Framework 等漏洞利用工具平台也已具备了“无文件”攻击的能力,可以针对各种漏洞自定义攻击方式。引言中入侵俄罗斯银行的“无文件”攻击行为就是通过Metasploit Framework 中的Meterpreter 内存攻击载荷实现的。
“无文件”恶意软件的危害
不同于一般的病毒和恶意软件,“无文件”恶意软件最大的特点在于“隐身”,难以追踪,以至于像卡巴斯基这样全球闻名的安全厂商也无法在入侵发生的当时监测到并加以阻断,而且在入侵行为被发现后,无法找到足够的恶意软件样本和日志来进行分析调查。卡巴斯基在报告中这样写道,他们无法找到最初入侵的传染载体,只是怀疑鱼叉式网络钓鱼邮件在这中间起到了非常关键的作用,因为他们亚太区办公室一个雇员的邮箱和网页浏览记录已经被清空,用来掩盖痕迹;虽然看上去入侵者对卡巴斯基的未来技术、安全操作系统、APT6 研究等比较有兴趣,他们也无法弄清入侵者的真正目的是什么。
这带来了一系列严重的问题,我的计算机现在是否已经被入侵?黑客在我的计算机上做了什么手脚?窃取了什么信息?为了了解这些,我们有必要对“无文件”恶意软件的攻击技术做一个大概的了解。
“无文件”恶意软件的攻击技术
以ATMitch 事件为例,从黑客入侵到真正把钱取走需要经过两个阶段。
阶段一:利用“无文件”的攻击方式入侵到银行系统内部
发现漏洞。首先,黑客要找到目标系统的薄弱点进行切入。这个薄弱点可以是服务器系统的漏洞,比如在外部可访问的服务器上存在可以被利用的系统或软件漏洞,而这台服务器还没有来得及安装补丁;也可以是黑客在咖啡馆扫描到了一台银行雇员的个人计算机,而这台计算机没有设置复杂的管理员密码;再或者是黑客群发了一封钓鱼邮件,邮件的附件是一个伪装成工资单明细的带有恶意宏代码的Excel文件,而某个安全意识不够强的银行雇员点开了附件,启用了宏。
利用漏洞。发现了弱点后, 黑客就可以在Metasploit Framework 中找到对应漏洞的利用模块,只要进行简单的设置,就可以完成攻击。我们以MS17-010 漏洞为例,黑客只需根据关键字ms17_010, 搜索到explorer/windows/smb/ms17_010_eternalblue 利用模块, 将RHOST的值设置为目标计算机的IP 地址,执行run 命令,就可以将Meterpreter 代码植入目标计算机spoolsv.exe 进程的内存空间中,而黑客会得到一个Meterpreter 命令行用来执行后续攻击(见图1)。
图1 通过Metasploit Framework 对MS17-010 漏洞进行攻击
提权。黑客获得返回的Meterpreter 命令行后会首先查看自己的权限等级,如果不够高就继续利用漏洞或工具进行提权,在这里比较常用的一个工具就是密码抓取神器Mimikatz。由于微软加密Windows 登录密码时使用了可逆的算法,所以可以把算法破解直接从lsass.exe(本地安全权限服务)进程的内存空间中获取Windows 当前处于活动状态的账号的明文密码(见图2)。
图2 通过Mimikatz 获取管理员密码
持久化。至此,黑客已经获得了目标计算机的完全控制权限。为了更长久地获得此计算机的控制权限,不因为用户后续安装了补丁,修改了弱密码,或者重启了计算机而失去控制,下一步计划就是要让恶意代码永久驻留在计算机中。不同于其他“无文件”恶意软件将恶意代码写入注册表的Run 键值,或者使用WMI 功能实现定时自启动,ATMitch 事件中黑客独辟蹊径,找到了另外一种实现永久驻留又不留下文件踪迹的方式——注册服务。众所周知,Metasploit Framework 的功能非常强大,利用Msfvenom 命令可以轻松的生成PowerShell 内存注入脚本(见图3)。然后,只需通过Meterpreter 打开目标计算机的CMD 命令行,执行SC 命令安装恶意服务,就可以实现恶意代码永久驻留。服务安装后,除了注册表中新增了该恶意服务的键值,在服务视图中多了一行不引人注目的字,没有一个文件会落到硬盘上。
图3 PowerShell 内存注入脚本生成与安装
信息收集、远程控制、横向移动。现在,黑客已经可以肆意浏览、上传、下载目标计算机上的所有文档了,商业合同、技术文档、客户资料,黑客找到多少,看了多少,下载了多少,流入黑市贩卖了多少,没人知道。黑客还可以使用微软的网络配置命令行工具NETSH 在计算机上设置端口代理,建立隧道,与C&C 服务器7 通信并随时远程控制被感染的计算机。然后,他可以添加路由表,把这台计算机作为跳板去扫描银行内部网络,获取网络拓扑,进行横向移动,继续渗透其他计算机,一步一步接近攻击的终极目标——ATM。
阶段二:控制ATM 设备吐钞
相较于第一个阶段入侵银行系统,控制ATM设备吐钞的过程就显得非常直接了。首先,黑客通过内网的横向移动找到了ATM 的远程控制设备,将事先精心编写好的基于XFS 标准的恶意软件ATMitch 安装至设备上。由于ATMitch 软件可以像合法软件那样和ATM 设备进行通信,黑客只需将吐钞的指令文件直接放在ATMitch 的同一目录下,ATMitch 就会逐行执行文件中的指令,例如获取钱箱里的现金数量、吐出指定数量的现金等。吐完现金后,ATMitch 会将指令文件以及它自身从计算机硬盘里统统删除,不留下痕迹。犯罪份子只需现身几秒钟将吐出的现金取出,然后溜之大吉,一次ATM 现金抢劫案就这样完成了。
挑战和应对
面对“无形”和狡猾的敌人,如何防范“无文件”恶意软件是我们接下来要探索的问题。
挑战一:攻击面趋于扩大、攻击间隙趋于缩小
“无文件”恶意软件入侵,一个必要条件是要有漏洞存在。一方面,随着互联网产业日趋发达,智能设备无处不在,漏洞也随之而来,黑客的攻击目标从门户网站、服务器、个人计算机到路由器、摄像头、手机,智能穿戴设备,攻击面不断扩大;另一方面,漏洞从被公布到实际开展攻击,中间的时间间隙不断缩小,绝大多数攻击都发生在漏洞被公布后24 小时之内。细细分析,主要原因有以下几点:
漏洞层出不穷。2017 年1 月,由Risk BasedSecurity 发布的一份2016 年年度漏洞报告显示,2016 年间VulnDB 共报告了15 000 个漏洞,刷新了历史记录。
“黑客”越来越多。黑客工具和安全检测工具的界限已经模糊,没有办法通过强制手段禁止这些工具的传播,而且这些工具正在向代码开源化、漏洞利用集合化、操作傻瓜化的方向发展,任何一个稍有计算机基础的人都可以通过几个简单的教程变成一个“黑客”。
漏洞攻击事件赚足眼球。2017 年4 月14 日,Shadow Brokers 组织在互联网上放出了一部分NSA(美国国家安全局)下属黑客组织的黑客工具;5 月12 日,利用其中EternalBlue 工具的勒索软件WannaCry 席卷全球,医院、高校、加油站、机场等地的Windows 计算机均受到了不同程度的影响,各大媒体头条被刷爆;5 月16 日,ShadowBrokers 组织宣称,他们将从6 月开始披露更多NSA 的黑客工具和情报。全球黑客已经摩拳擦掌,做好下一次攻击准备。
网络犯罪地下黑色产业链规模日益庞大。已经形成了一条“上游提供技术、中游实施犯罪、下游提供支持服务”的“年产值”超千亿元的网络犯罪黑色产业链。一旦漏洞被公布后,新的针对此漏洞的恶意软件将会被迅速制作出来。
为了应对攻击范围上的“广”和速度上的“快”,可以采取如下措施:
外部广泛联合。与国家互联网应急中心、各漏洞平台、安全厂商和产品提供商保持良好的合作关系,建立有效通报机制,对于涉及本单位的产品漏洞第一时间进行通报跟踪。同时,做好互联网舆情监测,将安全防范的视野覆盖到每个角落。
内部广泛教育和有效控制。定期对全体员工进行安全意识教育,结合热点安全事件让员工懂得识别风险,报告风险。同时,根据实际情况对内部计算机访问互联网进行限制,对U 盘等外设接入做好控制和管理,掐断“无文件”恶意软件可能的感染途径。
建立完善的安全资产管理系统,提高漏洞应急响应效率。漏洞公布后,为了更快定位受影响系统、影响范围,为制定防护措施和进行决策提供有效依据,需要建立一套完善的安全资产管理系统,覆盖所有涉及的硬件设备资产、软件产品资产、技术使用信息、系统配置信息等,减少在漏洞公布后进行梳理排查的时间,减少可能存在的重复梳理的过程。
实现补丁安装自动化,在黑客动手前完成系统漏洞修补。例如各大银行,计算机设备众多,特别是各类自助设备,地域分布极其广泛,而且多由设备厂商直接维护,出现漏洞后不可能去指望厂商的“跑腿”速度赶上黑客的攻击速度。实现补丁安装自动化,不仅能有效提高安全防护水平,也降低了维护成本。同时,对于一些非必需功能进行裁剪,非必要端口进行封闭,也能有效抵御黑客的攻击。
当然,以上的应对措施也可以适用于其他病毒和恶意软件的攻击。
挑战二:入侵后没有文件落地,监测困难
“无文件”恶意软件入侵后,由于不需要任何文件的落地,传统基于文件扫描的杀毒软件很难检测并且查杀,给安全监测和防护带来了困难。
一是黑客可以通过“无文件”的方式开展针对终端的攻击,窃取敏感信息、机密文档;二是黑客可以通过已入侵的计算机作为跳板,横向移动,入侵其他办公或者生产设备;三是黑客可以开展针对服务器的攻击,破坏系统,恶意篡改网站页面、实施拖库等。
为了应对以上三种可能的攻击形式,可以采取如下措施:
升级防病毒软件。虽然说基于文件扫描的杀毒方式无法监测,但市面上已经有一些具有预防内存攻击功能的防病毒软件产品,可以实时阻断恶意代码注入计算机内存。同时,这些产品具备了行为监控功能,可以根据设定的安全策略对终端的高风险操作进行提示、阻断和记录,诸如新增了系统管理员用户、正在进行可疑的加密操作、正在修改注册表等。
敏感文档加密保护。对存储在本机的敏感文档进行加密,做好权限控制,只能在授信环境下使用。那么黑客即使偷走了文档,也只是一串无意义的二进制代码。
做好网络区域控制。办公环境、生产环境、研发测试环境都需要做严格的网络区域隔离,并且在每个网络区域内针对445 等高风险端口做好控制,防止黑客感染一台内网计算机后就对整个网络一览无余。
部署异常流量监控设备。对内网中的流量进行监控,通过应用和协议的关联分析,发现网络中存在的可疑活动和未知威胁。
部署各类服务器安全审计工具。包括用户管理工具、数据库审计工具、文件完整性检查工具等,对高危命令执行、敏感信息查询、关键文件修改等操作进行实时阻断和告警。
结语
过去,黑客们编写病毒和恶意软件主要是为了破坏,为了“炫技”,而现在,他们的目标更加明确——钱和政治。所以,他们愿意花费更大的金钱代价去完成他们的“作品”,动辄上百万、上千万,攻击方式不断升级,“无文件”恶意软件只是冰山一角。在这种日趋严峻的形势下,单单靠一种防护手段肯定是不够的,只依靠传统的防护方法也是不够的。我们要做的是全面分析可能面临的潜在威胁,综合使用多种不同功能的安全控制措施,建立多层次深度防护体系,同时,对新技术的使用开展前瞻性的研究和风险分析。唯有如此,才能始终在与黑客的“技术军备竞赛”中不落下风。
(为便于排版,已省去原文注释)
作者 >>>
蒋晓晶,就职于中国工商银行股份有限公司数据中心(上海),从事安全相关工作。
原创声明 >>>
本微信公众号刊载的原创文章,欢迎个人转发。未经授权,其他媒体、微信公众号和网站不得转载。
···························································