林思明1,2,程学旗1,马铭1,2(1中国科学院计算技术研究所软件研究室,北京100080;2中国科学院研究生院,北京100089)摘要:提出网络建模环境的形式化描述,据此将网络模型划分为三种虚拟度,并结合网络安全研究特点提出了具备三种虚拟度的高保真建模概念.
在网络模拟器NS2基础上实现了一个原型系统,并阐述和分析了其结构、实现与性能,还给出一个支持真实攻击包的蠕虫模型实例.
最后分别对若干问题和未来工作进行了总结与展望.
关键词:网络建模;模拟;仿真;网络安全;蠕虫文章编号:中图分类号:TP393.
01文献标识码:AnalysisandImplementationoftheModelingEnvironmentforNetworkSecurityResearchLINSi-ming1,2,CHENGXue-qi1,Ma-Ming1,2(1SoftwareLaboratory,InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100080,China;2GraduateSchooloftheChineseAcademyofSciences,Beijing100089,China)Abstract:Followingtheformaldescriptionofnetworkmodelingenvironment,networkmodelscanbedividedintothreedegreesofvirtualization.
Fornetworksecurityresearch,aconceptionofhigh-fidelitymodelingwiththreedegreesofvirtualizationhasbeenproposedandanNS2basedprototypesystemhasbeenimplemented.
Thispaperdescribesandevaluatesitsarchitecture,implementationandperformance.
Asampleofwormmodelingwithrealexploitpacketsisgivenandfinallysomeproblemsandfutureworkarealsoaddressed.
Keywords:networkmodeling;simulation;emulation;networksecurity;worm引言在真实网络中研究和验证网络安全策略或技术非常困难和危险.
首先,从真实网络获得的结果难以重现,尤其对那些危及网络安全的异常流量更是如此.
其次,管理和技术因素使研究者很难自由配置真实的网络条件,更不可能预期网络行为.
另外,新的安全策略或技术往往需要改动真实网络中的设备,这在研究阶段是不现实的.
最后,安全策略或技术的验证过程本身就有可能危及网络的正常运行.
网络建模技术在通信协议和分布式应用领域已被广泛研究,并产生出Netbed[1]、NS2[2]等多种建模环境,但仍不完全满足网络安全研究的要求.
研究者依据各自面临的具体问题而设计的解决方案不仅很难具备通用性也难免降低了可信度和说服力,可见设计通用的网络安全建模环境极具意义.
最近启动的DETER计划[3]就是以创建和维护计算机网络安全研究测试床为目标的,只是其成本较为高昂且仍处于实施阶段.
本文首先对建模环境进行了形式化描述,提出网络模型的三种虚拟度划分,同时结合安全研究特点提出高保真网络建模的概念,并基于经典的NS2模拟系统实现了一个原型环境NSME(NetworkSecurityModelingEnvironment),最后给出其性能分析和应用实例.
1问题的分析1.
1建模环境的形式化描述首先需要从计算机网络抽象出静态模型,即先假定R为网络中的路由器集合,H为主机集合,L为点到点链路集合,C为共享链路集合,那么整个网络的路由拓扑图,其中映射表示邻接关系.
若H、C非空则一定存在划分和,使得构成全连通图,其中n为局域网数量.
另一方面,基于离散数据包传输的计算机网络动态特性与离散事件系统(DEVS)[4]相符合.
因此,根据自动机与离散事件系统理论,本文得出了网络建模环境的一般形式化描述.
建模环境自动机M即为一个7元组,其中:①为状态集;②为作用点集;③为外部事件集;④为内部事件集;⑤为转移函数集,并且:⑥为初始状态;⑦为终止状态集;这里,的元素指示事件的接收和处理者,因此.
为M与外部交互的数据包集.
一个列表用于管理待处理的内部事件,表中元素表示以为特征值的内部事件将在时刻被接收和处理.
M能够生成各种网络模型行为主要依赖其丰富的转移函数,其中:表示状态下接收外部事件(作用点、时刻)将导致状态转移为,产生内部事件.
表示状态下接收内部事件(时刻)将导致状态转移为,产生内部事件子集和外部事件子集.
表示状态下接收内部事件将使状态转移为,时间推进至并产生内部事件子集.
和中的接收事件取当前列表中值最小的事件,并在转移后删除.
最后,是否要求为空集决定了转移函数集的取值及性质.
依靠中的值维持时钟,不存在实时约束,而与必须满足实时约束,即:其中返回执行后的时间值,为执行后列表中值最小的事件.
成立,当且仅当,其中为当前时间,而为调节因子.
1.
2模型的虚拟度划分根据对建模环境的形式化描述,本文进一步得到了模型的虚拟度划分定义.
对于建模环境:①当且时,其产生的网络模型是半虚拟的.
模型内部的事件接收和处理者限定为抽象的路由器和链路.
即模型只对通信子网虚拟化,主机则位于模型外部与之交互数据;②当且时,其产生的网络模型是准虚拟的.
模型内部的事件接收和处理者扩大到全部可抽象的网络元素,因此模型必须完成网络各层的虚拟化.
同时因为非空,还必须支持外部主机和内部虚拟主机之间通信;③当且时,其产生的网络模型是全虚拟的.
置为空集.
模型内部实现了从物理链路、路由机制到应用数据产生和响应的全部抽象,因此形成封闭的系统.
目前的网络建模环境通常只能产生一种虚拟度条件下的网络模型,如目前的网络仿真系统(如ModelNet[5],Emulab[1])能够产生半虚拟度模型,网络模拟系统(如NS2,OPNET[6])能够产生全虚拟度模型.
由于准虚拟条件对建模环境的要求较高,而目前的建模环境可满足网络协议和分布式系统研究目的,所以仅有个别网络仿真系统(如IP-TNE[7])能够有限的产生准虚拟度模型.
然而由于网络安全问题涵盖了网络研究的各个方面,因此在安全相关背景下的建模环境必须同时能够满足各种虚拟度条件,以提供各种不同性质的网络模型.
1.
3模型的保真度与规模利用建模环境生成的网络模型存在保真度(Fidelity)问题[8],即模型表达真实系统的准确程度.
保真度是衡量建模水平的重要因素,然而由于真实系统特征的复杂性和多样性,很难获得保真度的定量指标,只能从模型表达的特征范围、细节数量、有效性等多方面作定性衡量.
目前的网络建模技术所表达的特征范围仅着重于网络带宽限制、链路拥塞和时延等方面.
由于极大的简化了主机端数据产生和处理的细节,因此保真度较低.
如网络模拟系统由于不受实时性约束而且相对封闭,可在内部进行大量化简而不影响观察网络流量和连接变化情况,其全虚拟条件的V集本质上仅等于.
网络安全问题需要更多地观察主机的行为特征,因此主机的应用逻辑必须能够被模型所表达(即).
这一变化需要增加更多的数据处理细节和模型内部元素数量,因此安全研究背景下的建模环境应具备更高的保真度.
但受成本和技术限制,如此提高保真度不可避免的带来规模的降低.
在V中增加抽象子网集可以在满足主机逻辑的前提下获得保真度与规模的较好折衷,利用并行分布式技术能更好的提高模型的规模.
1.
4NS2的技术特点NS2是由美国国防部高级研究计划署(DARPA)支持的虚拟互联网测试床(VINT)项目开发的多协议网络模拟系统,被学术界广泛使用.
其开源特性使扩展功能模块、共享成果成为可能,具有丰富的模块资源.
NS2是典型的离散事件模拟器,事件分为包到达和时钟超时两种.
模拟器负责调度所有事件直到某一特定事件发生为止.
NS2模型目前是封闭的,因此满足建模的全虚拟条件.
新版正在增加仿真接口以满足建模的半虚拟条件,但功能相当弱.
NS2需要Otcl[2]脚本语言和C++语言实现全部功能,并利用独特的分裂对象模型[2]将两者相关联.
其目的是为用户提供多级别的抽象,使其能在模块核心功能(用C++实现)不变的情况下通过编写Otcl脚本获得灵活的重配置特性而避免重编译的繁琐.
遗憾的是由于设计定位不同,NS2并不能很好的支持主机的应用逻辑,也无法产生准虚拟度模型.
因为:①简略的数据包协议头结构、不支持真实IP地址和子网掩码计算等路由操作;②核心的通信代理(Agent)结构导致通信配置过程的僵化以及应用层(流量发生器)的附属地位、扭曲了协议栈行为;③各协议模块的实现过于抽象,无法完成实际的通信操作、Otcl配置繁琐.
2NSME的实现2.
1总体框架2.
1.
1拓扑与事件调度图1给出了NSME拓扑组织及支撑其运行的内核事件调度过程.
其网络拓扑一般由虚拟主机、路由器及相关链路构成,而在非全虚拟条件下,映射主机和接口路由器能够充当NSME模型与外部交互的接口.
抽象子网能够将属于同一子网的数据流量交由子网应用逻辑层综合处理,因此将规模和复杂度灵活的交由上层设计者把握.
数据包的产生、处理或销毁主要由主机的应用逻辑负责,当其在链路中传输时则被作为事件调入事件列表.
此前,链路会根据包的尺寸、带宽及时延等算出其传输时间,当拥塞时则根据排队策略选择性丢包.
NSME继承了NS2的双重调度思想,使用CalendarScheduler类执行全虚拟建模的调度任务,其它情况则使用EmuScheduler类执行实时调度,用系统时钟取代虚拟时钟并用独立的线程捕获网络数据包.
2.
1.
2通信结构NSME为每个虚拟主机构建了一个小型的、但较为完善的TCP/IP协议栈,因此应用层不再是附属物而成为逻辑实现的主体.
主机应用逻辑通过虚拟套接口(VirtualSocket)层获得网络能力.
它们代替Agent来处理网络和传输层协议,但不再是预配置的而是由协议栈和应用逻辑共同管理.
这种结构的变化带来保真度的提高,在任何虚拟度条件下应用层都可以直接使用真实数据包通信而不必考虑对方程序到底是在虚拟主机上还是在外部真实主机上运行.
2.
1.
3用户视图C++语言和Otcl脚本将NSME的用户视图分成两层.
由于在网络安全研究中,往往需要由应用层解决具体的问题,而且为了与真实环境保持统一,必须能够为用户提供可运行于虚拟主机之上的虚拟应用程序编程接口,因此C++构成了用户的主要逻辑实现层.
在通信结构支持下,编写NSME的虚拟应用程序将与编写真正的面向对象网络程序几乎没有区别(SocketAPI不同),因此NSME本身构成了一个编程环境.
Otcl脚本主要用于后期模型场景的构建,此空间中只存在网络拓扑元素和虚拟应用程序实体.
因此当在Otcl空间中组建和配置完毕一个网络拓扑后,只需为其中的虚拟主机等指派不同的虚拟应用执行即可.
2.
2包、路由与寻址NSME的数据包不再采用ns_addr_t地址等内部数据结构而全部依赖真实协议的协议头域.
为满足非全虚拟条件,包的数据域得到全面支持,而在全虚拟条件下则可使用抽象数据包,即允许包尺寸大于包头域与数据域长度之和.
目前的路由算法仍采用经典的Dijkstra算法,但在路由节点内的包寻址及转发过程中,NSME实现了真实的Radix树路由表和相关算法,并从NsObject基类派生出新的RadixTreeClassifier路由分类器.
从而在底层保证了网络模型可以像真实网络那样进行IP地址分配和网段划分.
2.
3协议栈实现2.
3.
1虚拟套接口层NSME仿照VisualC++(MFC)的网络套接口类实现了包括RawSocket,UDPSocket,TCPSocket和TCPListenSocket在内的虚拟套接口层以支持正常的编程逻辑.
其中,RawSocket类可提供最底层的网络能力,它负责发送任意协议的数据包以及拦截到达本地的数据包.
UDPSocket类则负责传输层的UDP封装,而较为复杂的TCP协议则由TCPSocket类和TCPListenSocket类完成.
NSME没有在Otcl空间为这些Socket类关联Otcl类,因为这些类是被作为通信基础类提供给上层的,安全研究者不必在Otcl空间关心和了解下层的实现细节.
2.
3.
2数据包本地分发NSME协议栈用ip_local_deliver类执行数据包的本地分发过程.
图2给出了NSME协议栈的设计示意.
当创建虚拟套接口的派生类实例时,该实例将在ip_local_deliver中进行注册(如端口绑定等).
当ip_local_deliver收到数据包后首先将其送入rawip_filter内过滤.
此时如果有RawSocket的派生类实例注册了对某协议的截听,则匹配的包将被转发给它.
rawip_filter还将根据协议类型把包继续向上传递给对应协议的处理入口,其中icmp_handler直接处理ICMP的协议包,而tcp_demuxer和udp_demuxer则具有较复杂的协议管理功能.
它们需要为已经注册的套接口建立快速索引(如平衡查找树).
对于不存在的UDP端口请求,udp_demuxer将通知icmp_handler返回端口不可达ICMP报文.
而tcp_demuxer不仅要为每个合法的TCP连接建立索引,而且还必须对主动连接和被动连接加以区别.
当处于被动连接的情况时,需要结合已注册的TCPListenSocket派生类实例共同实现动态的连接管理.
2.
4虚实网络接口虚实网络接口是实现半虚拟和准虚拟建模的重要组件,由一套接口类组成.
其中,IPNetWriter类负责将模型网络中的数据包发送至真实的网络中,而PcapNetReader类的作用则正好相反.
另外PcapFileRecorder类能够支持将数据包以常规的tcpdump文件格式存取.
数据包协议头域校验和的检查与产生等转换处理则由FullTrans类完成.
接口路由器和映射主机作为网络接口的综合实体,其底层由上述接口类构成.
前者负责无差别的将模型接入真实网络,而后者则从逻辑上将外部真实主机映射到模型内部.
两者在具体使用时还需要配合适当的路由和IP地址分配策略,尤其接口路由器的配置更要求和本地真实网络的路由管理相协调.
下面以映射主机为例说明模型网络和真实主机之间通信的可能配置方式:假设主机A运行着NSME,且它的IP地址为202.
118.
19.
128,而另一台主机B的IP地址为202.
118.
19.
132.
利用NSME构建的模型网络为通过路由器连接的两个C类子网(分别是192.
168.
2.
0和202.
118.
19.
0),再将后者中的202.
118.
19.
132分配给一台映射主机.
最后为主机B添加新的路由项:routeadd192.
168.
2.
0mask255.
255.
255.
0202.
118.
19.
128此时主机B已经被映射成NSME内部的一台主机了,但是它目前只能和虚拟的192.
168.
2.
0子网通信同时未影响和本地其它真实主机正常通信.
如继续添加路由项:routeadd202.
118.
19.
0mask255.
255.
255.
0202.
118.
19.
128此时的主机B将完全融入模型网络中而无法再与除A外的其它真实主机通信.
3性能测试3.
1路由代价图3(a)给出了NSME和NS2的路由查找速度及初始内存开销的对比(测试机配置为P42.
6GHz、4G内存).
为了较清晰的说明规模问题,x轴列出了1到10000的不同量级.
不难发现,NS2的路由查找速度接近于常数(0.
96微秒).
它获得的最高节点规模为5000,此时的初始化内存开销约为2GB.
而NSME在1000及以下节点规模时查找速度和初始开销与NS2近似,然而获得的最高规模为4000节点.
此时的路由查找速度为1.
2微秒,内存开销约为2GB.
在大规模情况下(大于1000节点),NS2和NSME的初始内存开销都很高.
这是因为需要额外为每个路由节点维护一个路由表,其空间复杂度为O(n2).
而NSME采用radix树而不是线性数组实现路由表,所以不管是查找时间还是内存开销都比NS2更高一些.
不过需要指出的是,此处的NSME仅使用了虚拟路由器(为了方便对比),而虚拟主机是不需要路由表进行路由查找的,这是和NS2的不同之处.
3.
2协议开销在上述硬件环境下分别测试虚拟套接口结构与NS2的Agent结构带来的开销,图3(b)给出了TCP连接时的情况.
在NSME环境下设置虚拟主机Hv1与Hv2,并由Hv1上的若干虚拟客户端向Hv2上的虚拟服务程序发起TCP连接,客户端数从1到10000变化.
相应的在NS2环境下设置节点N1与N2,并且在其上分别配置FullTcpAgent,数量与前者保持一致.
从图3(b)不难发现,连接的创建时间和内存开销都与连接个数具有线性关系.
但是NSME的平均创建时间(约1.
7毫秒)却明显小于NS2的情况(约13.
9毫秒),而且它的平均内存消耗(约2.
93KB)也小于NS2的情况(约3.
74KB).
这是因为在NS2环境下的每个Agent都必须在Otcl空间预先配置,然后通过Otcl脚本解释器调用分裂对象模型创建C++空间的Agent内核,这是一项非常耗时的过程也必然导致更高的内存消耗.
这说明Agent结构不仅难于实现高保真的主机逻辑,即使从性能角度也是不可取的.
3.
3实时性能为了观察NSME的实时特性共设计了五种虚拟网络场景.
首先是1000Mbps(0.
1毫秒时延)的局域网L1,且部署了映射主机Hs1、Hs2和虚拟主机Hv1.
另外四种场景增加了一个同类局域网L2,且L1和L2由1跳或10跳路由相连、每跳的链路带宽为1000Mbps(0.
1毫秒或1毫秒时延).
与第一种场景不同的是Hs1和Hs2部署于L1而Hv1部署于L2(准虚拟时),或者Hs1和Hs2分别部署于L1和L2而不用Hv1(半虚拟时).
真实环境则由100Mbps局域网内的三台主机(P42.
8GHz、256M内存)组成,其中主机A运行NSME而主机B、C则为Hs1和Hs2映射的真实主机.
准虚拟时主机B、C的客户端向Hv1的服务程序发起若干TCP连接,每条连接利用定时器尝试以0.
78Mbps速度发送数据.
半虚拟时B、C的客户端则互相与对方运行的类似服务程序通信.
图3(c)中的实线表示了准虚拟时各连接获得的总网速,而虚线则对应半虚拟的情况.
可以发现当连接数小于60时几乎都能做到线性增长,说明此时的实时性能比较理想;当连接数大于60时,实时性能随路由跳数的增加逐渐降低,而且链路时延特性也对实时性能有一定影响.
另外当连接数大于80后,主机A的CPU利用率普遍降到90%以下,这说明网络接口的性能还有很大的改进余地.
由于半虚拟时NSME实际是在真实主机间充当转发器(单向须经过两次物理网络),所以受物理网络带宽和网络接口性能的影响更为明显,因此应用层获得的连接速度也较低.
4蠕虫模型实例为了能够给蠕虫检测系统提供较为可靠的测试数据,这里实现了一个利用UDP传输的全虚拟蠕虫传播模型,并为提高问题的规模而使用了抽象子网.
采用UDP传输的蠕虫在网络中的传播速度非常快,因为它不必尝试与目标建立连接.
该蠕虫模型首先采用随机或选择策略确定目标的IP地址,然后向其发送攻击包.
如果目标尚未感染而且存在相关的漏洞则将导致攻击代码执行.
模型的主要参数包括:扫描率s蠕虫每秒钟发送的攻击包数脆弱度w子网中漏洞主机的百分比感染时间t感染一台主机的时间初始感染主机i最初感染的主机数目蠕虫携带的攻击包内容则完全采用MS03-026漏洞[9]的攻击样例.
将该模型部署到10个由路由器互联的抽象B类子网上(1000Mbps带宽、1ms时延),且网中每个有效IP地址(约10216)都被虚拟主机占有.
将扫描策略扩大为在226地址空间随机扫描,可以发现参数t对蠕虫传播的影响不大,而参数i虽然有影响但不是本质的.
图4(a)给出了当t=0.
1秒,i=1时不同的s、w值导致的感染率随虚拟时间的变化情况.
显然增加两者的值都将加剧蠕虫的传播进度.
另一方面,图4(b)对照(a)分别给出了NSME事件和运行时间与虚拟时间的关系,可以看出扫描率和脆弱度对NSME的影响主要体现为所产生的事件数(与传播进度有关),而事件数最终决定了NSME的运行时间.
由于该蠕虫传播模型建立在逼真的虚拟网络之上,不仅充分考虑了带宽、缓冲和拥塞等因素而且还记录下tcpdump格式的真实数据结果来满足多种测试目的,因此比纯数学蠕虫模型[10]具有更实际的意义.
5结论网络建模环境在安全研究中的重要性正在日益突显.
本文通过对建模环境的形式化描述明确了系统设计的目标和功能,由此提出的NSME系统具备所需的三种虚拟度条件,并且能够比较清晰的表达下层网络特性和上层主机应用逻辑.
但是实现这种较高的保真度也不可避免的占用了更多的内存和计算资源,毕竟试图用单一硬件完全模仿网络全部设备的处理能力是不现实的,因此必须寻找合理的折衷点.
目前的问题主要集中在规模增加带来的性能降低,需要根据测试结果进一步改进系统的性能,文献[11]的方法值得借鉴.
并行处理能力是提高规模的有效方法,因此基于并行离散事件模拟(PDES)[7]的并行化改造是NSME的下一个目标.
另外围绕NSME的可视化改造也将在今后的工作中逐步展开.
今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
GreenCloudVPS最近在新加坡DC2节点上了新机器,Dual Xeon Silver 4216 CPU,DDR4内存,10Gbps网络端口,推出了几款大硬盘VPS套餐,基于KVM架构,500GB磁盘起年付30美元。除了大硬盘套餐外,还加推了几款采用NVMe硬盘的常规套餐,最低年付20美元。不过需要提醒的是,机房非直连中国,尤其是电信用户ping值感人,包括新加坡DC1也是如此。大硬盘VPS...