分布式网络监控系统设计与实现
2022-09-15
来源:小侦探旅游网
/设计与应用/ 分布式网络监控系统设计与实现 于 涛 (山东济南生产力促进中心) 摘要:本文针对目前防火墙等网络监控产品存在过滤不全面,力度不强等问题,研究设计了分布式网络监控 系统(简称DNM),给出了DNM系统框架和结构设计,并详细介绍了DNM系统的核心—监控端的设计与实现。 关键词:分布式;网络监控;防木马;监控端 1、引言 能。监控端是整个系统的重中之重。本文主要介绍监 随着计算机网络技术的发展与普及,网络安全已 控端的设计与实现技术。 经成为一个国际化的问题。今天网络安全事故的发生 由多方面的原因造成,系统漏洞、配置漏洞,同时人 为的疏忽也越来越占更大的比率。除数据破坏以外, 信息外泄也成为网络安全需要解决的一个重要问题, 其造成的危害和损失不亚于有时甚至大大高于直接的 数据破坏。如何对网络设备进行监视与控制是解决问 题的基础和关键所在。 作为保护主机的“盾牌”一单机防火墙、分布式 防火墙、网络监控系统等,这些产品和技术一直在不 断的发展,但是现有的防火墙及其他网络监控产品侧 重于对用户应用程序和数据包的过滤控制,而忽视了 对WEB浏览、邮件收发、以及系统进程及其服务应用的 控制,仍然存在过滤不够全面、力度不够强等不足。 分布式网络监控系统(简称DNM)针对上述几个 图1 DNM系统框架模型 监控端 2.2 主机监控端功能描述 (1)内容过滤功能。主要针对应用层的应用协议, 方面的问题,采用下述措施提升系统的安全性:(1)分  ̄I]HTTP、SMTP、POP3等。该层的目标是能够控制用 布式基础模型:(2)三层过滤框架结构,监控更彻底全 户的WEB行为与邮件行为等。 面;(3)策略集中控制,被监控设备无权更改策略。安 全性更高:(4)更强的防木马特性:(5)详细日志记录。 2、系统设计 (2)应用过滤功能。主要针对主机上访问网络的进 程。该层的目标是控制进程访问网络的行为,任何一 个进程都必须在策略的允许下才能访问网络。 (3)数据包过滤功能。该层的目标能够从全局上 2.1系统框架 本系统的体系结构和部分功能与分布式网络防火 控制网络访问。限制某些IP地址段的主机对本机的访 墙相类似。整个系统分为监管中心和监控端,如图1 问,禁止本机对某些IP地址段的访问,限制某些本地 所示;监管中心统一制定策略,具有日志审计查看功 端口被访问,限制访问远程端口地址段。限制各种协 能。实时查看管理被监控设备网络连接;监控端负责 议数据的进出。 监控设备的网络行为,同时具有一定程度的防木马功 (4)防恶意代码功能。能够对远程线程插入实时监 作者简介:于涛,单位:山东济南生产力促进中心,学历:本科,专业:计算机科学与技术。 o Sc_ence And Managemenl 2011#-第4期 控,对注册表的写操作实时监控,对用户主机的网络 /分布式网络监控系统设计与实现/ SOCKET S://套接字描述符 连接实时管理,将系统服务与其对应的端口绑定。 3、关键技术 /一 ..LA 1 图2监控端三层过滤模块框架图 DNM按照三层过滤的规划,划分为内容过滤、应 用过滤、数据包过滤。数据包要经过层层的过滤最终 才能完成传输。三层过滤之间的关系如图2所示。 3.1内容过滤 该层的策略只给出了用户可以访问的Web站点, 没有给出的站点,都是不允许用户访问的站点。将服 务提供者接口的几个关键函数替换为自己的函数,其 中包括:WSASOCKET、WSASEND、WSASENDT0、 WSARECV、WSARECVFR0M、WSACON、NECT等。 只要是通过套接字方式进行网络通信的数据都能被拦 截到,但是对于直接通过tcp.sys,udp.sys进行通信的 数据该层是拦截不到的。在WSACONNECT函数中, 可以通过远程端口号对套接字的协议类型进行设置, 协议类型包括HTTP、POP3、SMTP等。这样根据协 议类型。在WSASEND、WSASENDTO、WSARECV、 WSARECVFROM函数就可以解析该协议数据,提取关 键字。在提取完关键字之后,需要按照策略对关键字 进行过滤,并且记录下来作为日志。 关于关键字的提取,以上各个协议都是明文协 议。例如。通过在HTTP数据包查找“HOST”字符 串。就能得到网站名称。通过在SMTP数据包中查 找“Subject:”字符串,就可以得到邮件主题。查 找“From:”字符串,可以得到发信人地址。查找 “T0:”字符串。可以得到收信人地址。对于POP3协 议也同样适用。 关键数据结构体定义: Typedef steret_SESSION{ DWORD ulRemotelP;//远端IP地址 BYTE bDirection;//数据进出方向 BYTE bProtocol;//协议类型。包括HTTP、SMTP 等 TCHAR sMemo[MAX_PATH1;//数据包关键字 }SESSION,PSESSION; 3.2应用过滤 在本层只有策略中给出的进程才是允许访问网 络的进程,没有允许的就是禁止的。同时为了防止嵌 入在系统进程中的嵌入式木马,将系统进程与端口绑 定比如windows2000中的services系统进程,该进程完 成DNS地址解析等功能,通过53号端口访问DNs服务 器,那么只有通过53号端口发送出去的数据是合法的 数据。 在TDI驱动层中,一个进程要访问网络,必须首 先发送MajorFunction为IRP_MJ—CREATE的IRP ̄J建一 个代表传输地址的文件对象。如果一个进程无法创建 代表传输地址的文件对象,就无法访问网络的任何后 续操作。因此,拒绝一个进程创建传输地址文件对象 的请求就可以达到拒绝该进程所有网络请求的目的。 创建传输地址文件对象的请求中提供了要求创建的地 址信息(在EA提供的TRANSPORT—ADDRESS中), 这些信息包括进程要求使用的本地端口号。是否应该 拒绝某进程创建传输地址文件对象的请求是通过调用 访问控制模块函数确定的。访问控制模块的流程图如 图3所示。 图3应用过滤模块流程图 过滤T C P连接请求的实现:驱动程序接到 MajorFuncti0n为IRP—MJ—DEVICE—CONTROL, 科学与管理0 {设计与随忍} TId,IN BOOLEAN bCreate) MinorFunction为TDI—CONNECT的IRP后调用相应的 HANDLE 处函数,处理函数调用访问控制模块函数判断请求的 合法性。根据访问控制模块函数的返回结果拒绝或向 参数及其意义: PId包括该线程的进程,而不是创建该线程的进 程 TCP¥ ̄备转交连接请求。 过滤发送UDP数据包请求的实现:驱动程序接到 TId将要创建的线程的线程号 MajorFunction Code为IRP—MJ—DEVICE—CONTROL, MinorFunction Code为TDI—SEND—DATAGRAM的IRP bCreate创建或者销毁 函数流程: 后,采用与过滤TCP连接请求时相同的方法判断合法 要判断是否是远程线程,要根据创建线程的进程 性,根据结果拒绝或向UDP设备转交请求。 3-3数据包过滤 作为以上两层的补充,该层过滤可以更充分的过 滤掉各种数据包。比如上层过滤无法过滤掉的ICMP等 协议,还有Netbios协议数据等。在该层过滤中,策略 中给出的都是禁止的。 在进行数据包分析的时候,从以太网数据得到IP 数据或者ARP数据。从IP数据得 ̄IJTCP数据,或者UDP 数据,或者ICMP数据。本层具有“宏观”过滤和“细 致”过滤。 “宏观”控制是指在本层存在一个全局策 略,这个宏观控制策略包括:协议控制、端口控制、 时间控制、协议控制可以过滤进入或者流出的属于某 个协议的数据包:端口控制可以过滤进入或者流出某 个端口的数据包:时间控制则规定了用户上网的时间 期限。此外除了“宏观”控制,该层策略也提供了明 细策略表。明细策略表包括IP地址,端口地址。在进 行数据包过滤的时候,首先进行全局过滤。然后再进 行“细致”过滤。在发送的时候,首先判断是否在时 间期限内,如果在,则在全局端口策略中遍历,如果 发送的这个本地端口不可用,或者远端端口不可用, 则丢弃数据包,如果通过全局端口策略的检验,则进 行“细致”检验,需要检验的包括IP地址,本地端口 信息,远端端口信息。只有通过了全部的检验后,方 能交与下层完成发送,否则则丢弃数据包。对于数据 包的接收与此过程类似。 3.4防恶意代码 结合当前恶意代码采用的技术手段,防恶意代码 的激活与执行功能,是通过对远程线程插入和注册表 的实时监控来实现的。 (1)远程线程插入控制 DDK提供了通过PssetcreateThreadN0tifvRoutine() 来向系统注册一个回调函数,只要在创建线程的时候 都会调用该回调函数。利用该机制,可以实现远程线 程的控制。注册创建线程的回调函数: VOID ThreadCreatoMon fIN HANDLE PId,IN o scIenceAnd Management 和包含线程的进程是否是同一个进程,由此判断是否 是远程线程。需要找出那个创建线程的进程号,才能 够比较创建线程的进程和包含线程的进程是不是同一 个进程,从而判断是不是远程线程。 (2)注册表写入控制 注册表写入控制的实现是基于Hook系统服务调 用的方法。在ntoskrn1.exe中维护着两个表系统服务 调度表(System Service Dispath Table)和系统服务参数 表(System Service Parameter Table)。如果修改SSDT 中的某个系统服务程序的人口地址为指向自定义的 函数地址,在执行完我们的代码后再执行原始系统 服务地址处的代码,就实现了对系统服务调用的 Hook。定位系统服务调度表是实现Hook的关键。在 WindoWs 2000中有一个未公开的对应于一个数据结构 KeServiceDescriptorTable,可以通过它来完成对SSDT的 访问与修改。 typedef struct SystemServiceDescriptorTable{UINT *ServiceTableBase;//指向系统服务程序的地址 UINT ServiceCounterTabhBase;// UINT NumberOfService; UCHAR ParametorTableBase;//指向SSPT 中的参数地址lSystemServiceDe scriptorTable,:I: PSystemServiceDescriptorTable; 本模块的实现通过对注册表相关的几个函数 (ZwCreateKey、zwsetValueKey、ZwDeleteKey)实现 HOOK。 4、结束语 测试表明DNM能够控制访问网络的进程;能够实 现WEB过滤和邮件过滤;对于应用程序往系统进程插 入线程或者注入DLL的行为能够拦截;对于所有的注 册表写入操作能够实现拦截过滤。 DNM能够更全面更彻底的监控网络行为,并且一 定程度上也限制了木马的运行与存活,全面提升了系 统的安全性,可靠性。