CHoney:一个面向Cisco路由器攻击捕获的新型蜜罐
刘胜利,彭 飞, 武东英, 邹摇睿,肖 达    
信息工程大学 数学工程与先进计算国家重点实验室, 郑州 450000
摘要

从提升网络安全性的目的出发,设计实现了一个Cisco路由器蜜罐CHoney,用于检测针对Cisco路由器的攻击. CHoney使用函数监控和数据追踪等方法来收集攻击者的信息,并根据攻击者不同的敏感操作分别设定报警规则. 经过实验测试发现,CHoney可以及时捕获针对Cisco路由器的攻击,并支持对攻击过程的分析和攻击代码的提取. 实验结果表明,CHoney对于Cisco路由器的攻击检测是有效的,可以有效的提升网络的安全性.

关键词: Cisco路由器    蜜罐    网络安全    攻击检测    CHoney         
中图分类号:TP309.08 文献标志码:A 文章编号:1007-5321-38-5-47 DOI:10.13190/j.jbupt.2015.05.008
CHoney: a New Honeypot for Capturing Attacks Against Cisco Routers
LIU Sheng-li, PENG Fei, WU Dong-ying, ZOU Rui, XIAO Da    
State Key Laboratory of Mathematical Engineering and Advanced Computing, Information Engineering University, Zhengzhou 450000, China
Abstract

For purpose of improving cyber security, a honeypot named CHoney used to detect attacks against Cisco routers was designed and implemented. CHoney uses function monitoring and data tracking to collect information about attackers. It sets up alarm rules based on different sensitive operations of attackers. Experiment shows that CHoney can promptly capture attacks against Cisco routers, support analysis of attack process and extraction of attack code. CHoney is effective in detecting the attacks against cisco routers, and improves the cyber security through experiment.

Key words: cisco router    honeypot    cyper security    attack detection    CHoney    
0 引言

路由器作为网络基础设施的重要组成部分,其安全性的好坏决定着整个互联网的安全质量. 目前,Cisco公司生产的路由器占到了全球互联网路由器市场60%以上的份额[1],居于首位.

Cisco路由器中运行的是Cisco公司为其路由交换设备开发的操作系统Cisco(IOS,internetwork operating system). 在Cisco IOS脆弱性利用方面,FX在文献[2]中完整的分析了当时在Cisco IOS中发现的一些安全问题并给出了缓冲区溢出漏洞利用的一些方法. Micheal Lynn在文献[3]中对Cisco IOS的体系结构进行了分析,探讨了Cisco IOS任意代码执行的可行性. Muniz在文献[4]中提出了一种基于虚拟化的Fuzzing方法,用于Cisco IOS漏洞的挖掘和调试分析. Li等人[5]介绍了一种用于Cisco IOS漏洞挖掘的fuzzing框架,并给出了漏洞挖掘工具Fuzzer. Nakibly在文献[6]中给出了Cisco IOS中存在OSPF路由器协议漏洞的一个系统化的分析结果. 在Cisco IOS安全性检测方面,FX在文献[7]中介绍了对Cisco IOS的取证工具CIR(Cisco incidence response),该工具通过验证路由器运行时的状态来判断IOS是否受到了安全威胁,其只能检测引起路由器宕机的攻击,检测范围有限. 陈立根等[8]提出了一种基于动态污点分析的Cisco IOS漏洞攻击检测方法,然而由于只考虑了漏洞的触发条件,并不能完整地收集攻击者的信息,对于攻击行为的分析帮助不大.

作为一种新型的攻击诱骗技术,蜜罐已经在互联网的安全监测上得到了广泛应用. 在网络入侵和恶意代码检测方面,Kaushik等[9]针对Android系统中恶意软件的检测问题,实现了DroidCheck系统,对已知和未知的恶意软件均可检测;在恶意代码样本捕获方面,HoneyBow[10]系统可以实现对恶意代码样本的自动捕获;在安全威胁追踪与分析方面,Project Honey Pot项目利用蜜罐软件对超过25万个垃圾邮件诱骗地址进行监控,研究了邮件发送者的行为和对垃圾邮件的地下经济链进行了分析[11]. 在攻击特征提取方面,HoneyCyber[12]基于捕获多台网络蠕虫的流入会话和流出会话,自动地提取攻击特征. 正是由于蜜罐技术在安全威胁监测方面的优势和价值,研究人员开始利用蜜罐技术来构建网络入侵检测平台,实现对网络入侵行为的监控和安全威胁的追踪. 然而目前普通的蜜罐无法满足检测Cisco路由器攻击的要求,并且在本文之前公开发表的文献中还没有报道过针对Cisco路由器攻击检测的蜜罐系统.

1 CHoney系统结构

针对Cisco路由器的特点,设计实现的Cisco路由器蜜罐系统CHoney的结构如图 1所示,系统由网络诱骗、信息收集和检测报警等3部分组成. 其中网络诱骗部分是基于dynamips模拟器[13]实现的,笔者调整了dynamips的结构,开发了远程管理接口,主要包括用户远程控制模块,负责对蜜罐系统的管理和脆弱性的配置;信息收集部分主要由数据包捕获模块、函数监控模块、数据追踪模块、日志管理模块组成. 其中数据包捕获模块负责捕获进出蜜罐的数据包;函数监控模块负责监控Cisco IOS中相关函数的使用情况,并在满足特定条件时输出函数调用时的上下文信息;数据追踪模块负责追踪记录系统对攻击数据包的处理过程;日志管理模块负责对蜜罐系统本身日志的维护;检测报警部分由报警判定模块构成,负责在攻击行为满足报警规则时对报警信息的记录和反馈. 同时,系统会将数据包捕获信息、函数监控信息、污点记录信息、报警信息以及系统日志等信息存储到位于宿主机的数据库中,以方便后期对攻击方法和行为的分析.

图1 CHoney系统结构
2 CHoney实现关键技术

CHoney基于dynamips模拟器实现Cisco路由器的硬件虚拟化平台,可以满足Cisco IOS的加载运行. 此时,虚拟化实现的CHoney提供的是和实体路由器的相同服务和功能. 通过在虚拟化平台中添加信息收集模块和检测报警模块,来实时的收集攻击者对于路由器的入侵信息和对攻击者的恶意操作进行检测,并在满足报警规则时输出报警信息,并进行及时的反馈.

2.1 网络诱骗

CHoney加载运行真实的Cisco IOS,为攻击者提供高交互的网络服务,因此CHoney属于高交互蜜罐,相比于模拟相关服务的实现方式,具有更好的诱骗性. CHoney对于攻击者的欺骗用以下的方式来实现:

1)加载运行真实的Cisco IOS,来提供网络服务;

2)使用用户远程控制模块提供的用户管理结构开启路由器上的某些特定端口,来引诱攻击者对系统进行探测;

3)配置某些服务(例如telnet)的弱口令,降低攻击者进入蜜罐的难度;

4)开启Cisco IOS中某些具有漏洞的服务,来引诱攻击者实施漏洞攻击.

2.2 信息收集

信息收集模块实现了对蜜罐中的所有入侵行为的监控、跟踪和记录,为后期的分析和报警提供基础性的数据支持.

2.2.1 数据包捕获

CHoney对进出蜜罐数据包的捕获使用的是libpcap库,通过绑定宿主机网卡来实现的. 通过将宿主机网卡设置成混杂模式,之后通过MAC地址匹配来捕获进出蜜罐的数据包,在虚拟网卡接收数据包的过程中就可以将数据包的相关信息记录下来,以方便后续的分析. 具体实现的过程中,为了分析的方便,只记录数据包的部分信息. 同时,CHoney是将捕获的数据包信息保存到宿主机上的. 由于蜜罐系统对于数据包的捕获是通过绑定宿主机网卡来实现的,使得蜜罐系统本身无法访问宿主机,因此,这样做可以保证收集信息的安全性.

2.2.2 数据追踪

CHoney将数据追踪模块嵌入到虚拟化平台dynamips中,使用的是动态污点分析的方法[14],主要包括污点引入、污点传播和报警记录3个部分. 对于CHoney来说,污点源主要是来自于网络中的数据包,在蜜罐收到数据包之后,污点分析模块会检查数据包中的目的IP地址,当发现和蜜罐的IP地址相匹配时,Choney就将虚拟网卡接收到的网络数据包所在的缓冲区作为污点源;污点属性的传播是在对Cisco IOS中的指令模拟执行时进行的,根据不同的指令类型,设定不同的污点传播规则,来实现污点属性的传播. 初始时,对于路由器的物理内存的污点属性使用一块影子内存来记录,当数据包的内容拷贝到内存中时,则将此块内存标记为污染的;对于污点记录,当攻击者的行为满足事先设定好的报警规则(见2.3节)时,CHoney会按照不同的情况记录报警信息,以方便之后对攻击者行为和意图的分析.

Cisco IOS采用PowerPC指令集或者MIPS指令集,下面以PowerPC指令集为例分析CHoney中的污点传播规则.

PowerPC指令集是RISC指令集,指令长度为定长的32bit. 在PowerPC指令集中,只有加载和装入指令可以访问内存,而其他的指令均在寄存器之间进行数据的处理. 按照访问内存的不同,将指令Inst分为读内存指令Rmem、写内存指令Wmem以及非访问内存指令Umem. 操作数包括内存、寄存器和立即数等. 其结构关系如图 2所示.

图2 PowerPC指令集分类

对于读内存指令Rmem,根据其指令的语义定义如式(1)所示污点传播规则,其中T(x)是污点映射函数,代表的是x的污点属性.

$\text{T(dst }\!\!\_\!\!\text{ op)=T(}{{\text{r}}_{\text{a}}}\text{)}\cup (({{\text{r}}_{\text{a}}}))$ (1)

在式(1)中,目的操作数dst_op的污点属性等于指令所要读取的内存地址ra的污点属性和ra所代表的内存地址处的存储值的污点属性的并集.

对于写内存指令Wmem,根据其指令的语义定义如下污点传播规则.

$\text{T(dst }\!\!\_\!\!\text{ op)=T(src }\!\!\_\!\!\text{ op)}\cup T(({{\text{r}}_{\text{b}}}))$ (2)

在式(2)中,目的操作数dst_op的污点属性等于源操作数src_op的污点属性和决定指令所要访问内存地址的寄存器rb的污点属性的并集.

对于非访问内存的指令Umem,其主要是通过寄存器进行数据流的计算和传递的. 从指令类型上来说比较相似,定义以下污点传播规则.

$\text{T(dst }\!\!\_\!\!\text{ op)=}\underset{j=1}{\overset{n}{\mathop{\cup }}}\,\text{T(src }\!\!\_\!\!\text{ o}{{\text{p}}_{\text{j}}}\text{),j=1,2,}\ldots \text{,n}$ (3)

其中,目的操作数dst_op的污点属性等于所有源操作数src_op的污点属性的并集.

2.2.3 函数监控

为了充分记录攻击者的行为,CHoney在设计的过程中借鉴了Windows下监控API调用的方法,通过监控Cisco IOS中相关函数的调用情况来记录分析攻击者的行为操作.

CHoney中对于函数的监控分为两类:一类是对系统库函数的监控,监控的是系统库函数相关参数的安全性;另一类是Cisco IOS中功能函数的监控,监控的是相关功能函数被调用的情况. CHoney对于函数的监控关键在于函数库的构建.

在系统库函数发现方面,Guilfanov[15]的研究发现,在实际程序中,特别是使用C、C++等高等语言开发的程序中,库函数的数量占到了50%以上,对于库函数的调用高达95%. 因此,研究定位出Cisco IOS中的库函数具有重要意义. 由于Cisco IOS本身不提供源代码并且不提供符号文件,所以对于系统库函数的识别主要是通过逆向分析的方法来实现的. 这里的系统库函数主要包括内存操作函数(malloc、realloc等)和字符串操作函数(strcpy、strcmp等). 具体来讲,首先使用IDA对Cisco IOS进行静态的逆向分析. 在IDA解析后,会识别出许多系统函数的提示信息(malloc,%bad password等). 然后,使用文献[16]中介绍的IDAPython脚本在IDA解析出的指令代码中快速的查找malloc、strcpy等字符串信息,并且定位出其内存地址. 最后,根据库函数的参数个数,以及具体的实现功能来定位出相关的系统库函数.

对于Cisco IOS中功能函数的定位,同样可以使用系统库函数定位的方法来实现,通过将定位的出函数地址保存到函数库中即可实现对攻击者行为的监控.

2.2.4 日志记录

日志记录可以按照时间序列记录攻击者对系统所作的修改. 从安全方面考虑,CHoney在设计过程中是将日志信息保存到远程的日志服务器中,并且每隔一定的时间将日志文件保存到数据库中. 这样一方面可以实时查看攻击者对蜜罐所做的修改;另一方面也可以防止攻击者将日志文件删除.

2.3 检测报警

基于信息收集模块. CHoney根据不同的敏感操作分别设置了报警规则,其具体判定规则如下:

规则1   当Cisco路由器中虚拟CPU执行的指令地址超出了代码区的范围,则发出报警. 对于Cisco IOS而言,其执行代码区的地址位于相对固定的范围内,当CHoney发现进程执行指令的地址超出了其范围,则判定受到了攻击.

规则2   当寄存器LR或者CTR受到污染时,或者当受污染的LR寄存器或者CTR寄存器中的值污染了指令地址寄存器IA时,则发出报警. 在Cisco IOS中,能污染指令地址的寄存器只有LR和CTR,一般是在进行堆栈操作时,才有可能影响LR和CTR寄存器的值,进而来影响IA寄存器的值.

规则3   当对字符串的拷贝过程中出现了连续的堆边界标志字符时,则发出报警. 通过文献[3]的介绍可知,在Cisco IOS中,空闲堆的结构都是以0xAB1234CD(MAGIC值)开始,以0xFD0110DF(REDZONE值)结束,check_heaps()进程对于堆块完整性的检查也主要以这两个数值进行的. 如果来自于网络的数据中含有0xFD0110DF和0xAB1234CD连续出现时,则很有可能产生了攻击(例如伪造空闲堆块的攻击). 同时,如果在向内存中拷贝字符串时连续覆盖了堆结构中的REDZONE值和MAGIC值时,则可能发生了堆溢出,此时需要发出报警信息.

规则4   当监控到功能函数被调用时,则发出报警,并记录危险操作发生的指令地址和时间等信息. 对于Cisco IOS而言,只有在使用某些操作命令(例如write)时,特定的函数才会触发执行. 当这些函数被触发时,则认为发生了危险操作.

规则5   当监控到系统库函数的相关参数受到了污染,则发出报警并记录其相关的指令地址信息. 这里的系统库函数主要分为两类:一类是内存操作函数;另一类是字符串拷贝函数. 对内存操作函数(malloc,alloc等)来说,如果其影响内存分配大小的size参数受到了污染,很有可能导致分配的内存过小而发生缓冲区溢出;对于某些字符串拷贝函数来说,例如strcpy函数,如果其拷贝的数据来自于污点源,由于strcpy函数并没有对拷贝的字符串长度进行限制,则很有可能导致拷贝的字符过长而发生缓冲区溢出,应当进行报警记录.

3 实验分析

为了验证CHoney在对Cisco路由器攻击捕获方面的有效性,通过在局域网中搭建测试环境,对实现的Cisco路由器蜜罐进行了测试,重点在于对攻击行为的捕获和分析. 实验中选取已公开的Cisco IOS下的多个协议漏洞的利用作为测试对象,综合测试Cisco路由器蜜罐对于入侵行为的发现,数据的追踪,危险操作报警以及信息反馈的能力.

3.1 实验环境

系统测试的网络环境如图 3所示,CHoney运行于操作系统为ubuntu12.04的宿主机上,宿主机具有两块网卡,通过E1/0端口绑定的网卡连接到远程日志服务器. PC1、PC2、PC3是三台局域网中的测试主机,连接到CHoney的E0/0端口绑定的网卡上. 实验中使用的测试样本的信息如表1所示.

图3 CHoney测试结构图

表1 实验测试样本信息
3.2 系统测试与分析

下面以Cisco IOS(12.3)中存在的FTP MKD长目录名漏洞的利用代码[4]为测试用例进行整个攻击过程的检测和记录.

首先,在PC2主机上利用FTP MKD长文件名漏洞的利用代码对CHoney发起攻击,CHoney首先会捕获攻击数据包并记录其相关的数据包信息. 如图 4所示,CHoney成功捕获了攻击数据包,并记录其数据包标识、源IP、目的IP、源端口、目的端口等信息. 从图中可以看出,攻击者首先发送了用户名为User,密码为password的数据包进行FTP服务请求,使用的是12905端口,之后使用FTP MKD命令发送了过长的目录名发起攻击(数据包里可能含有shellcode代码),数据包标识为f827. 并在攻击成功之后,使用12906端口,对CHoney请求telnet服务,获取了管理员权限. 之后使用了write命令来保存系统配置,最后退出了蜜罐系统.

图4 数据包捕获信息

其次,在数据包到达之后,CHoney中的污点分析模块和函数监控模块会对数据包的处理过程进行记录,并在满足报警规则时记录报警信息. 如图 5所示,LR寄存器的值传到了IA寄存器中,由于LR寄存器的污点属性来自于数据包f827的第96~99字节,满足检测报警规则2. 同时可以看出,在指令执行的过程中,CTR寄存器的值0x822278f0传到了IA寄存器中,并在此处执行了相关的shellcode代码. 由于其执行指令的地址超出了Cisco IOS的代码空间,满足检测报警规则1,于是记录了相关的报警信息. 同时可以看出,攻击者在之后的操作中使用了保存系统配置的命令,从而触发了NVRAM_wr(即write NVRAM命令的响应函数)函数的调用,此时满足报警规则4.

图5 检测报警信息

最后,在成功进入CHoney后,系统日志服务器会实时的记录攻击者对蜜罐系统配置所做的修改,并且存储到相应的日志文件中.

在对上面收集的攻击数据进行分析之后,可以得出本次攻击信息的收集如表2所示.

表2 攻击信息收集

之后,分别使用公开的存在于Cisco IOS中TFTP长文件名漏洞、NHRP漏洞、以及IP option漏洞作为测试样本对CHoney进行了实验测试,实验测试结果的详细信息如表3所示.

表3 CHoney测试结果

同时,为了展现笔者设计实现的CHoney系统在捕获攻击信息方面的优势,实验中利用上述样本对比测试分析了笔者提出的CHoney系统和陈立根[8]提出的CTaintDetect系统以及Linder[7]提出的CIR系统在攻击行为检测方面的能力. 实验比较结果如表4所示.

表4 实验比较结果

表4中,“支持”表示可满足测试项的要求,“不支持”表示无法满足测试项的要求. 通过比较可以看出,CHoney在对Cisco路由器攻击捕获方面相比陈立根等[8]提出的CTaintDetect系统以及文献[7]介绍的CIR工具具有很大的优势,不仅可以检测攻击的存在,同时支持对攻击者行为的分析、函数调用的监控以及攻击代码的提取.

通过对Cisco IOS相关协议漏洞的测试分析可知,CHoney可以准确的检测出攻击者的入侵,及时的捕获记录攻击者的相关信息,并且可以记录分析攻击者的行为、提取出攻击代码. 实验结果证明了CHoney对于Cisco路由器攻击捕获的有效性.

4 结束语

从蜜罐实现的诱骗技术、信息收集技术以及检测报警技术等方面出发,对Cisco路由器蜜罐的结构和关键的实现技术进行了详细的介绍,引入了数据包捕获、函数监控以及数据追踪等方法,设定了报警规则,实现了一个Cisco路由器蜜罐系统CHoney. 利用Cisco IOS中多个漏洞利用样本对CHoney进行的实验结果表明,CHoney可以完整捕获和追踪攻击者的相关信息,验证了CHoney对于Cisco路由器攻击检测的有效性. 测试实验只是为了验证CHoney对于Cisco路由器攻击捕获的有效性,因此,没有在互联网上大规模的进行测试. 下一步的工作重点就是将CHoney部署到互联网上进行长时间的测试,并对其检测结果进行统计分析,以增强其实际的应用能力.

参考文献
[1] IDC. IDC's worldwide quarterly ethernet switch and router tracker shows record ethernet switch market size, weaker router market[EB/OL]. (2014-12-03)[2015-01-10].http://www.idc.com/getdoc.jsp?containerId=prUS25266314.[引用本文:1]
[2] IDC. IDC's worldwide quarterly ethernet switch and router tracker shows record ethernet switch market size, weaker router market[EB/OL]. (2014-12-03)[2015-01-10].http://www.idc.com/getdoc.jsp?containerId=prUS25266314.[引用本文:1]
[3] Linder F. Design and Software Vulnerability in Embedded System[EB/OL]. (2003-04-25)[2014-08-19]https://www.blackhat.com/presentations/bh-usa-03/bh-Fed-03-fx.pdf.[引用本文:2]
[4] Lynn M. The holy grail: Cisco IOS shellcode and exploitation techn iques[EB/OL]. (2005)http://cryptome.org/lynn-cisco.pdf.[引用本文:2]
[5] Muniz S, Ortega A. Fuzzing and debugging Cisco IOS[EB/OL]. (2005-11-12)[2014-10-14]. http://www.pdfpedia.com/download/13758/fuzzing-and-debugging-cisoc-ios-blackhat-europe-2011-pdf.html.[引用本文:1]
[6] Li F, Zhang L, Chen D. Vulnerability mining of Cisco router based on fuzzing[C]//2nd International Conference on Systems and Informatics (ICSAI), 2014 IEEE. Shanghai:IEEE Press, 2014: 649-653.[引用本文:1]
[7] Nakibly G, Sosnovich A, Menahem E, et al. OSPF vulnerability to persistent poisoning attacks: a systematic analysis[C]//Proceedings of the 30th Annual Computer Security Applications Conference. 2014 ACM. New York:ACM Press 2014: 336-345.[引用本文:3]
[8] Linder F. Developments in Cisco IOS forensics [EB/OL]. (2009-08-14)[2013-03-10].http://www. blackhat.com/presentions/bn-usa-08/Linder/BH_US_08_Linder_Developments_in_IOS_Froensics.pdf.[引用本文:3]
[9] 陈立根,刘胜利,高翔等. 一种基于动态污点分析的Cisco IOS漏洞攻击检测方法[J]. 小型微型计算机系统,2014,35(08):1798-1802.[引用本文:1]
[10] Kaushik P, Jain A. DroidCheck: android malware detection by behavioral techniques and honeypot[J]. International Journal of Computer Science and Mobile Computing(IJCSMC), 2015, 4(4):829-834.[引用本文:1]
[11] 诸葛建伟, 韩心慧, 周勇林,等. HoneyBow:一个基于高交互式蜜罐技术的恶意代码自动捕获器[J]. 通信学报, 2007, 28(12):8-13.[引用本文:1]
[12] Levchenko K, Pitsillidis A, Chachra N, et al. Click trajectories: End-to-end analysis of the spam value chain[C]// 2011 IEEE Symposium on Security and Privacy (SP). 2011 IEEE.Berkeley: IEEE Press, 2011: 431-446.[引用本文:1]
[13] Mohammed M, Chan H A, Ventura N, et al. An automated signature generation approach for polymorphic worms using principal component analysis[J]. Int'l Journal for Information Security Research (IJISR), 2011, 1(1): 45-52.[引用本文:1]
[14] Dynamips project[EB/OL]. 2007. http://www.ip flow.utc.fr/index.php/Cisco_7200_Simulator.[引用本文:1]
[15] Newsome J, Song D. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software[EB/OL]. 2005. http://web.eecs.umich edu/-mahlke/courses/583f12/reading/newsome-ndss05.pdf.[引用本文:1]
[16] Guilfanov I. IDA fast library identification and recognition technology(FLIRT technology): in-depth[EB/OL]. (2012-02-27)[2012-03-11]. http://www.hex-rays,com/products/ida/tech/flirt/in_depth.shtml, 2012.[引用本文:1]
[17] Erdélyi G. IDAPython: User scripting for a complex application[D]. EVTEK:University of Applied Sciences, 2008.