发新话题
打印

新型思科路由器后门SYNful Knock

新型思科路由器后门SYNful Knock

思科路由器在国内有多大的使用量?做过系统集成的知道,在百度搜索中也可以知道,那思科路由器出现后门,可能影响其大多数型号,你惊慌吗?做过网络管理的都知道,路由器可能很长时间都不会升级其系统固件,攻击者拿到这些后门利用方法,就可以长期使用,你害怕吗?


影响范围涉及4个国家及常见型号
通常来说,思科路由器的植入后门以前经常被认为是理论可行或较难实现,但近日有国外安全公司Fireeye发现这种针对路由器的植入式后门正悄然流行,涉及Cisco 1841/Cisco 2811/Cisco 3825路由器及其他常见型号。目前发现在乌克兰、菲律宾、墨西哥和印度这4个国家中正有至少14个类似的植入后门在传播。
通过弱口令登录替换思科路由器固件
这个后门是通过修改思科路由器的固件植入恶意代码实现的,类似病毒感染正常文件。攻击者需要通过其他途径将这个后门固件上传或者加载到目标路由器上。目前看攻击者并没有利用任何的0day漏洞来上传固件,而是利用路由器的缺省口令或者弱口令来登录路由器,然后上传后门固件,替换原有正常固件。只要路由器管理员不升级固件,攻击者就可以持久获得对路由器的长期控制。
将僵尸木马的手法移植到路由器上
这个后门植入了一个万能后门口令,攻击者可以利用这个后门口令通过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(如下图所示),那可能意味着系统被植入了恶意后门。

  • 修改一个正常的IOS函数,初始化恶意软件
据信是修改了一个与进程调度相关的函数入口,将其指向一段恶意代码,这段代码完成恶意软件的初始化后,再执行原有正常函数功能。选择该函数是因为其在每次系统重启时都会被调用,这样攻击者就可以持续获得控制权。
  • 用恶意代码重写一些正常的协议处理函数
为了防止映像文件大小发生变化,此后门会直接用恶意代码替换原有的一些正常函数的代码。
  • 用恶意代码需要使用的字符串重写正常函数用到的字符串
同样为了防止大小变化,攻击者还会将CnC通信时用到的一些字符串直接替换正常函数使用的字符串。这样导致在执行一些正常IOS命令时,就可能返回一些如下的异常结果:

后门口令攻击者在后门映像中植入了一个万能口令,保证攻击者可以绕过正常口令限制随时登录系统。这个后门口令可以通过控制台、Telnet、enable(提升到管理员时)时输入,一旦匹配则赋予攻击者管理权限,否则就会继续正常的口令检查过程。目前看SSH和HTTPS登录时没有设置后门口令。
网络命令和控制(CnC)此后门还使用了模块化方式来完成命令控制,可以随时将恶意功能加载到路由器中执行,这在路由器后门中还是比较少见的。这大大增强了恶意软件的可扩展性。一旦路由器重启,所有加载的恶意模块都会消失,攻击者需要重新上传恶意模块。
攻击者通过发送一些特殊的TCP报文来开启CnC控制,即使路由器管理员设置了一些过滤策略,后门仍然会接收并处理这些报文。
进行CnC控制的主要过程如下:
1.首先攻击者会发送一个特制的TCP SYN报文到已植入后门的路由器的80端口。这也是路由器HTTP服务器的默认端口。这个报文的SEQ序号和ACK序号的差值必须是0xC123D,ACK序号不需要一定是0。 2.后门会响应一个TCP SYN-ACK报文。报文格式满足:
  • ACK序号和SEQ序号差值变为0xC123E
  • TCP选项被固定设置为: “02 04 05 b4 01 01 04 02 01 03 03 05″
  • TCP紧急指针设置为0x0001, 但紧急标志位URG未置位
  • SEQ序号拷贝自第一个SYN报文中的ACK序号,而通常情况下,SEQ序号是随机生成的。
3.在三方握手完成后,控制端会发送下列命令报文:
  • PUSH和ACK标志位置位
  • TCP头开始偏移0x62字节处写入一个字符串”text”
  • TCP头偏移0x67字节处开始是CnC命令数据
。。。


原文:http://blog.nsfocus.net/cisco-router-door-synful-knock-2/

[ 本帖最后由 linda 于 2015-10-28 10:12 编辑 ]

TOP

发新话题