Cisco的多元性是它的1个鲜明特点,关键分成系统多元性和命令构造多元性。
管理体系多元化:CiscoIOS,CiscoIOSXE,CiscoNX-iQ,CiscoIOSXR,ASAOS。
多元化的命令构造:PowerPC,MIPS,x86_64。
(1)CiscoIOS固件需要反向分析。
(2)通常镜像是需要进行静态分析的大型二进制文件。
(3)在苹果系统中,所有代码都以提权模式执行,因此可以使用特权命令。
(4)在苹果系统中,很有可能好多个虚拟内存设置段相匹配相同物理空间段(如20000000和80000000)
(5)溢出进行shellcode,将链表排序回到到正常的服务。
(6)CiscoIOS在苹果系统触发1个异常时重新启动设备(dos攻击很简单,RCE需要重新构建)
由于CiscoIOS没有额外的API函数或命令支持,所以如果想调用tcp连接之类的功能,就需要找到相关的函数。
(1)DEP:内存栈、堆等无法执行,要进行ROP攻击。
(2)ASLR:栈、堆具有随机化特征,避免地址的随机化。
(3)堆检查:苹果系统将在固定时间检查堆结构,并在堆释放时进行堆检查(在以前的公共号文章中介绍了具体检查方法),并且苹果系统的栈的空间也是在堆中,因此栈溢出和堆溢出运用都可以检查。
(4)代码完整性检查:完整性检查是否在镜像文件中植入1个后门或shellcode(一般使用签名)
定时器:如果shellcode运行时间过长,定时器将触发,然后终止攻击进程。
(6)Cisco多元化:思科镜像的多元性,将exp移植到镜像之间需要时间。
(7)I-cache,D-cache防护:Powerpc架构的处理器将隔离代码区域和数据区域,因此有时无法将链表排序劫持到数据区域。
5.CiscoIOS漏洞利用总体思路:
1.交换调试器:
要实现漏洞的运用,首先要能够执行漏洞调试,这里关键介绍两种调试方法。
虚拟平台调试:
①安装Ciscodynamips调试平台(支持gdb调试版):
cddynamips-gcc-mod/src。
updatedb。
locatelibelf.a。
②使用dynamips运行相对应仿真模拟调试:
dynamips-Z+连接端口-j(禁用JIT编译器)-P+仿真模拟的硬件平台-t2621-s0:0:tap:tap1-s0:1:linux_eth:eth0+镜像文件。
③使用gcc连接进行调试:
请注意,此处使用的gcc连接调试需要使用相对应模式的gcc,有两种解决方案:
一是运用gcc-multiarch;二是运用buildroot或交叉编译器软件链交叉编译器1个gdb调试软件。