2015年9月25日星期五

新型思科路由器后门

  思科路由器在国内使用量不小,而且时常作为核心部件连接企业网络。但最近出现的一个新型思科路由器后门,已经严重威胁到了企业安全。这次思科路由器"SYNful Knock"后门事件引发业界恐慌,纷纷开始着手应急预案。

  影响范围涉及4个国家及常见型号

  通常来说,思科路由器的植入后门以前经常被认为是理论可行或较难实现,但近日有国外安全公司FireEye发现这种针对路由器的植入式后门正悄然流行,涉及Cisco 1841/Cisco 2811/Cisco 3825路由器及其他常见型号。目前发现在乌克兰、菲律宾、墨西哥和印度这4个国家中正有至少14个类似的植入后门在传播。

  要知道,大部分公司的核心网络设备使用的都是思科路由器。如果一个企业的核心网关设备被黑,不仅可以控制企业网络出入口,更可以对过往的信息进行修改及欺骗,这危害就验证了。

  通过弱口令登录替换思科路由器固件

  这个后门是通过修改思科路由器的固件植入恶意代码实现的,类似病毒感染正常文件。攻击者需要通过其他途径将这个后门固件上传或者加载到目标路由器上。目前看攻击者并没有利用任何的0day漏洞来上传固件,而是利用路由器的缺省口令或者弱口令来登录路由器,然后上传后门固件,替换原有正常固件。只要路由器管理员不升级固件,攻击者就可以持久获得对路由器的长期控制。

  放进去的后门类似病毒感染正常文件,攻击者需要通过各种途径,将这个后门上传或者加载到目标路由器上,而且它还采用了先进的技术,可以非常方便的随时加入新的后门功能。这种做法与大家电脑上的僵尸木马非常相似,但用在路由器后门中还是比较少见。这个后门被命名为" SYNful Knock",可能是因为其后门的网络控制功能中有个特殊的标记。

路由器后门

  将僵尸木马的手法移植到路由器上

  这个后门植入了一个万能后门口令,攻击者可以利用这个后门口令通过telnet或者控制台登录路由器。它还采用了动态加载模块的技术,可以非常方便的随时加载新的恶意功能模块,在Windows/Unix系统下的僵尸木马网络中这已是很常见的技术了,但用在路由器后门中还是比较少见。每个模块都可以通过HTTP协议来更新、加载和删除。

  这个后门被命名为“ SYNful Knock”,可能是因为后门的网络控制功能(CnC)会通过一个特殊的TCP SYN包来触发。

  思科路由器植入后门的技术细节

  (由于尚未获得真实样本,本章节技术细节均来自FireEye公司的相关技术报告,仅供参考)

  这个后门通过篡改一个正常的Cisco IOS映像文件来植入恶意功能,主要的修改操作包括:

  修改所有translation lookaside buffer (TLB)的属性为可读可写(RW)

  正常IOS映像文件中,有些TLB的属性是只读的(RO),而此后门会将所有TLB的属性都设置为可读可写(RW),这可能是为了实现通过Hook IOS函数来加载模块。如果TLB属性不是可读可写(RW),那对缓存内存页的修改就不能被同步到内存中原始内存页中。可以通过“ show platform”命令来检查TLB的属性情况,如果发现全部TLB属性都被设置为RW,那可能意味着系统被植入了恶意后门。

  据信是修改了一个与进程调度相关的函数入口,将其指向一段恶意代码,这段代码完成恶意软件的初始化后,再执行原有正常函数功能。选择该函数是因为其在每次系统重启时都会被调用,这样攻击者就可以持续获得控制权。

  用恶意代码重写一些正常的协议处理函数

  为了防止映像文件大小发生变化,此后门会直接用恶意代码替换原有的一些正常函数的代码。

  用恶意代码需要使用的字符串重写正常函数用到的字符串

  同样为了防止大小变化,攻击者还会将CnC通信时用到的一些字符串直接替换正常函数使用的字符串。这样导致在执行一些正常IOS命令时,就可能返回一些如下的异常结果。

  后门口令

  攻击者在后门映像中植入了一个万能口令,保证攻击者可以绕过正常口令限制随时登录系统。这个后门口令可以通过控制台、Telnet、enable(提升到管理员时)时输入,一旦匹配则赋予攻击者管理权限,否则就会继续正常的口令检查过程。目前看SSH和HTTPS登录时没有设置后门口令。

  网络命令和控制(CnC)

  此后门还使用了模块化方式来完成命令控制,可以随时将恶意功能加载到路由器中执行,这在路由器后门中还是比较少见的。这大大增强了恶意软件的可扩展性。一旦路由器重启,所有加载的恶意模块都会消失,攻击者需要重新上传恶意模块。

  攻击者通过发送一些特殊的TCP报文来开启CnC控制,即使路由器管理员设置了一些过滤策略,后门仍然会接收并处理这些报文。

  CnC命令格式

  后门支持5种控制命令,包括显示模块状态、为模块加载分配内存、加载模块、激活模块、卸载模块,最多可加载100个模块。

  防护方式

  常见的国外厂商防护方式

  既然有漏洞,那就打补丁,升级!但在实际的操作环境中,执行会遇到挑战:

  1. 安全需求弱的小客户,难度特别大

  2. 安全需求强的小客户,可执行,但是整改周期特别长

  3. 安全需求弱的大客户,难度特别大,因为要涉及到整体业务链路停机

  4. 安全需求强的大客户,可执行,但是整改周期特别长,牵涉面广

  绿盟科技推荐的防护方式

  绿盟科技推荐用1个基准3个阶段来进行落地防护。1个基准,把风险面转化为风险点;3个阶段,分为设计及实施、试运行及验收、长期运维。各部分内容在项目实施过程中细节较多,下面仅提要说明。

  设计、实施

  1. 统计系统范围内cisco设备的数量以及需要纳入统一策略管理的其他厂商的设备集合,实现风险的识别

  2. 设计时采用区域隔离:管理域与生产域严格隔离(VLAN技术和防火墙),实现风险的控制

  3. 管理域实现堡垒机统一纳管,并且在堡垒机中设定相关口令策略,实现风险的转移

  4. 设计选型时,在稳定的基础上使用较为新的IOS固件并做MD5校验,实现风险的削弱

  5. 设计网络入侵检测及防护设备(NIDS/NIPS)对此事进行检测,并且把对应异常网络事件进行每日监控,实现风险的监控

  a) 从整个SYNful Knock事件过程中,有三个重要阶段事件:弱口令猜测,后门外链,后门命令控制。NIPS不仅仅能够针对每一个阶段单独防护,同时能够建立起逐层防护的机制;

  b) 首先是弱口令,NIPS中弱口令规则能够进行Telnet弱口令事件告警,提示管理员关注账号弱口令问题,同时也能够阻断暴力猜测行为;

  c) 其次后门外链,通过检测TCP会话建立过程中特征,阻断后门的通信连接;

  d) 最后后门命令控制,需要使用CnC或者TCP方式进行命令控制,NIPS在检测流量时,对控制命令进行检测,达到阻断控制的效果。即便是植入了后门,阻断命令发送无法对其命令控制

  6. 选型考虑国产设备,实现风险的规避

  试运行、验收

  1. 做基础安全评估(漏洞扫描、基线核查、内网渗透测试)

  2. 重新规整所有用户口令;

  3. 测试入侵检测日报的可用性;

  等等……

  长期运维

  1. 新交维的系统:按设计、实施规范定期作为维护;

  2. 老系统:

  2.1 快速处理: 搭建TFTP服务器 强制备份所有线上IOS镜像,并且对已经备份的IOS进行与官方下载IOS镜像进行md5校验;

  md5校验成功的处理方式:参照 2.2

  md5校验失败的处理方式:

  本着安全原则,清除IOS已经不保险了,建议采用替换的方式把有问题设备替换下来;

  有问题的设备返厂检测吧,当然也可以考虑将其做成蜜罐;

  建议做一次网络区域内的大排查,不然很危险哦;

  2.2 按新系统设计标准,对管理域进行整改。

  3. 分析 每日入侵检测报告(木马)

  小结

  本文主要技术细节部分来自于FireEye公司的一篇技术报告,其大致的过程就是这样的

  1. 寻找能登录的cisco 设备(通过暴力破解、社工、弱口令等方式),能进去是前提;

  2. 传一个带马的IOS上去;找机会重新加载新的IOS,同时痕迹清理;

  3. 然后加固路由器,防止被其他人拿走这个“成果”;

  4. 开始植入木马等恶意程序,然后实施攻击动作,比如JS劫持等

  从报告披露的信息来看,针对Cisco路由器的后门映像植入技术已经逐渐从理论走向实用化,后门功能从简单的万能口令已经扩展到模块化远程加载任意恶意代码。由于路由器位于网络的核心出入口位置,一旦攻击者可以在路由器中执行代码,意味着攻击者可以对经过路由器的网络流量进行各种操作,而不仅限于路由器原有提供的功能,从而导致更大的危害。

  来源:绿盟科技投稿