网络入侵取证分布式系统的设计与实现.docx

上传人:b****8 文档编号:11007612 上传时间:2023-02-24 格式:DOCX 页数:33 大小:106.02KB
下载 相关 举报
网络入侵取证分布式系统的设计与实现.docx_第1页
第1页 / 共33页
网络入侵取证分布式系统的设计与实现.docx_第2页
第2页 / 共33页
网络入侵取证分布式系统的设计与实现.docx_第3页
第3页 / 共33页
网络入侵取证分布式系统的设计与实现.docx_第4页
第4页 / 共33页
网络入侵取证分布式系统的设计与实现.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

网络入侵取证分布式系统的设计与实现.docx

《网络入侵取证分布式系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《网络入侵取证分布式系统的设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。

网络入侵取证分布式系统的设计与实现.docx

网络入侵取证分布式系统的设计与实现

网络入侵取证分布式系统的设计与实现

蔡超李祥

(贵州大学计算机软件与理论研究所)

摘要:

本文研究网络入侵取证,在Win32平台下设计实现了由取证机及客户端信息采集系统构成的分布式网络入侵取证系统,包括链路层以太帧的捕获子系统(从网络传输底层获取追踪、取证所必须的MAC地址,IP地址,通讯内容等详细信息),被取证机的数据采集子系统(检测核心机密文件是否被篡改,重要进程的运行情况等)等;文中对网络数据包捕获,取证系统自身保护,系统间通讯给出了多种设计方案,并做了比较和探讨。

关键词:

入侵取证网络监测取证机

 

DistributedSystemofForensicDiscoveryOnComputerNetworkIntrusionDesignandImplementation

CaiChaoLiXiang

Abstract:

Withthedevelopmentofinformationtechnology,peopleareincreasingconcernonthesecurityandsafetyofinformation.AccordingtothetheoryofComputerNetworkIntrusionForensicDiscoverySystem,wedesignedandimplementedsomepartsaboutComputerNetworkIntrusionForensicDiscoverySystemincludingthepartofEthernetframecapture(gettheinformationthatisimportanttoforensicdiscoverysuchasMACaddress,IPaddressandthecontent),thepartcollectimportantinformationanddatafromthecomputers(themodificationofimportantandsecretdocuments,thestateofkeyprocess).Inthepaperwedesignseveralsolutionaboutpacketcapture,forensicdiscoverysystemprotectionandcommunicationalsowecomparethesesolutions.

keyword:

IntrusionForensicDiscovery,NetworkMonitor,ForensicDiscoverySystem

引言

计算机网络入侵取证是一门针对计算机网络入侵与犯罪进行证据获取、保存、分析和出示的计算机网络技术。

目前,入侵取证的模式大致可分为两种,一种是在案发后,使用技术手段对相关计算机进行取证,主要是对被损坏的文件进行恢复和分析,同时,发现相关入侵信息;另一种,是取证机进行实时监测,对连接在网络中被保护终端的状态数据进行即时监测记录,类似与飞机上使用的黑匣子,一但发生入侵行为,便可通过对记录的数据进行分析,确定攻击源。

本文研究网络入侵取证,在Win32平台下设计实现了由取证机及客户端信息采集系统构成的分布式网络入侵取证系统,包括链路层以太帧的捕获子系统(从网络传输底层获取追踪、取证所必须的MAC地址,IP地址,通讯内容等详细信息),被取证机的数据采集子系统(检测核心机密文件是否被篡改,重要进程的运行情况等)等;文中对网络数据包捕获,取证系统自身保护,系统间通讯给出了多种设计方案,并做了比较和探讨。

 

一、入侵取证的意义与现状

在无法有效防范网络、计算机犯罪的情况下,有效的打击网络的非法入侵者显得十分重要,计算取证技术为我们提供了手段,通过获取电子证据,寻找罪犯并将其绳之于法。

计算机取证是一门针对计算机入侵与犯罪进行证据获取、保存、分析和出示的计算机网络技术。

目前,入侵取证的模式大致可分为两种,一种是在案发后,使用技术手段度对相关计算机进行取证,主要是对损坏的文件进行恢复和分析,同时,发觉相关使用信息;另一种,是实时监测模式的取证机,它连接在网络中随时监测记录被保护终端的状态数据,类似与飞机上使用的黑匣子,一但发生入侵行为,便可通过对记录的数据进行分析,确定攻击源,依法打击入侵者。

网络入侵已成为最主要的攻击手段,网络安全一直以来都是,网络应用进一步发展的核心问题。

防火墙是传统入侵防范措施,在技术理论上,现代防火墙是一种先进而复杂的基于应用层的网关,经过仔细的配置,通常能够在内、外网之间提供安全的网络防护,降低网络被攻击的风险,但实践中发现,仅仅依靠防火墙是不够的,网络入侵检测和取证系统正成为其有效的补充。

有效的监测、记录网络的数据包,是发现入侵行为,取证的重要手段。

黑客攻击的重点通常是重要文件,例如,对网站的攻击常常是以恶意窜改网页文件的方式进行的。

因此,主动监视关键文件已获取篡改迹象是入侵取证的关键。

目前,国际上的入侵监测技术也正出于起步和探索阶段,同时,计算机取证还需要与相关的法律相结合,但是现行与之相关的法律尚不完善。

已开发的一些取证工具有:

TheCoroner‘sToolkit“取证剖析工具”可以用于被删除文件的恢复、.TASK针对文件系统取证的命令行工具集合等软件。

二、分布式网络入侵取证系统

网络入侵取证系统的核心是取证机,取证机实时的获取网络数据和被取证机的各种重要信息并进行存储,并能对数据进行分析得出最终结论。

取证机上应包含高性能网络监听部分用于获取网络数据源,监测网络中的全部活动;客户机信息采集部分接收、保存来自客户机信息收集器的各种信息;数据分析部分帮助网络管理员根据记录分析入侵行为。

被取证机上包含信息收集器用于收集包括重要文件访问、篡改等重要的系统信息,并将其发回取证机。

网络物理结构框架如图:

网络入侵取证系统的流程如下(适当加点文字说明):

 

三、网络入侵取证系统的设计及技术要点

下面讨论网络入侵取证系统的原理,实现网络入侵取证系统中的主要模块。

3.1网络数据采集实现

网络监听技术可以有效捕获网络数据包是实现网络监测,入侵检测,入侵取证的系统的基石。

使用网络监听技术可以发现入侵并对入侵者进行追踪定位,在对网络犯罪进行侦查取证时获取有关犯罪行为的重要信息,成为打击网络犯罪的有力手段。

3.1.1网络监听的基本原理

以太网数据传输是通过广播实现的,将要发送的数据包发往连接在一起的所有主机,包中包含着应该接收数据包主机的正确地址,只有与数据包中目标地址一致的那台主机才能接收。

但是,当主机工作监听模式下,无论数据包中的目标地址是什么,只要经过自己网络接口,主机都将接收。

当网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包发向目的主机。

TCP/IP协议中数据包从IP层交给数据链路层,而网络接口是不会识别IP地址的,因此在网络接口数据包又增加了一部分以太帧头的信息。

在帧头中有两个域,分别为只有网络接口才能识别的源主机和目的主机的物理地址,这是一个与IP地址相对应的48位的MAC地址。

当数据帧到达一台主机的网络接口时,正常情况下,网络接口读入数据帧,如果数据帧中携带的物理地址是自己的或者是广播地址,则将数据帧交给上层协议软件,也就是IP层,否则就将这个帧丢弃。

对于每一个到达网络接口的数据帧,都要进行这个过程。

然而,当主机工作在监听模式下,所有的数据帧都将被交给上层协议软件处理。

常用的以太网卡支持以下工作模式:

广播模式、多播模式、直接模式和混杂模式。

网卡在设置为广播模式时,它将会接收所有目的地址为广播地址的数据包,一般所有的网卡都会设置为这个模式。

网卡在设置为多播模式时,当数据包的目的地址为多播地址,而且网卡地址是属于那个多播地址所代表的多播组时,网卡将接纳此数据包,即使一个网卡并不是一个多播组的成员,程序也可以将网卡设置为多播模式而接收那些多播的数据包。

网卡在设置为直接模式时,只有当数据包的目的地址为网卡自己的地址时,网卡才接收它。

网卡在设置为混杂模式时,它将接收所有经过的数据包,这个特性是编写网络监听程序的关键。

3.1.2用Libpcap软件包实现数据分组的捕获

Libpcap(其Windows版本为Winpcap)是一种与系统无关,采用分组捕获机制的分组捕获函数库,用于访问数据链路层。

Libcap在不同的平台上采用统一的编程接口,使用libcap编写的程序可自由的跨平台使用。

Windows并未提供内置的分组捕获机制,这一功能由应用系统提供,Winpcap使用BPF虚拟机(NPF)补充了这一机制。

NPF在Windows95/98/ME中以VXD文件的方式实现,在windows2000中以SYS文件的方式实现。

由于Libpcap的平台无关性及其优异的性能,下面将论述基于Libpcap的高性能网络监听器的实现。

3.1.3Libpcap的体系结构

Libcap接口支持基于BSD数据过滤器(BPF)的数据过滤机制。

Winpcap是基于NPF机制的,NPF于BPF最大的不同在于采用的内核缓存的形式不同。

Libpcap是基于程序员的角度设计的,它帮助程序员实现了应用程序与操作系统内核的接口。

Libpcap提供了一组强大而高效的函数来实现数据包的捕获,同时提供了用户数据缓存用于存储来自与内核的数据包,有效防止应用程序进入系统内核管理的存储区域,提高程序的健壮性。

基于BSD的Libpcap结构

Libpcap由二十多个C程序文件组成,按功能大致分为以下几个部分:

1)打开,读取设备,设置过滤部分

2)编译、优化、调试过滤部分

3)脱机方式监听部分

4)本地网络设置检测部分

5)主控程序及版本部分

3.1.4Libpcap数据包捕获程序流程

1.获取本地设备信息。

通过函数pcap_lookupdev寻找系统中可用的网络接口设备,返回一个表示网络适配器的字符串。

2.打开设备开始监听会话

通过函数pcap_open_live()建立监听会话。

Pcap_t*pcap_open_live(char*device,intsnaplen,intpromisc,intto_ms,char*ebuf)

其中:

device为上一步中所提到的网络适配器的字符串,snaplen定义监听程序所捕获的最大字节数,promisc定义是否将网络适配器设置为混杂模式。

to_ms定义读操作的时间。

Ebuf函数调用失败时返回错误信息字符串。

3.设置过滤条件

编辑过滤字符串,设置过滤器,制定要捕获的主机、协议等,可以有效的捕获指定类型的数据。

通过函数pcap_compile将过滤字符串编译为二进制。

常用的过滤字符串有“host210.40.7.129”表示捕获主机210.40.7.129收发的数据帧,“tcp”表示捕获协议类型为TCP的数据帧,“port20”表示捕获目的或源端口是20的数据帧等等,很多过滤字符串还能进行组合。

由pcap_setfilter()函数进行内核过滤器的设置生效。

4.执行捕获循环

每捕获一个数据包后就调用用户的回调函数对数据包进行处理,以上功能可通过调用以下两个函数实现pcap_dispatch,pcap_loop,它们的功能基本相同,唯一的差别在于pcap_loop在读取超时时不会返回。

3.1.5监听程序性能的调整

在需提高监听程序性能时可做以下相应调整。

1.调整用户级缓存。

通过修改pcap_open_live()函数的源代码并重新编译后来调整用户级缓存。

2.调整函数pcap_open_live()中的读操作等待时间值。

通常出于效率可将该值设置的比较大;但当对响应时间要求比较高时,应将该值改小。

3.设置严格的过虑条件。

4.在基于WIN32平台,winpcap中还可以通过函数pcap_setbuff()来设置内核缓存,通常情况,要取得较好的性能应设置较大的内核缓存。

3.1.6数据帧的协议解析

捕获后的数据帧经过解析才能得到我们想要的信息,如作为网络监听所需要的数据帧的源地址,目的地址,协议类型等信息。

解析的过程是将数据帧中的数据按不同协议进行分析提取。

首先,要按照不同协议数据组织格式定义效应数据类型,下面根据以太网网数据帧的格式及TCP/IP协议栈定义相关数据类型。

定义以太帧的头部数据类型:

typedefstruct

{

UCHARDestMac[6];

UCHARSrcMac[6];

UCHAREtype[2];

}ETHHEADER;

注意网络接口卡驱动程序会负责计算效验和,并取走帧中的前同步字符和效验字段。

根据IP数据包的封装格式定义IP头部的相应数据类型:

typedefstruct{

UCHARheader_len:

4;

UCHARversion:

4;

UCHARtos:

8;//typeofservice

USHORTtotal_len:

16;//lengthofthepacket

USHORTident:

16;//uniqueidentifier

USHORTflags:

16;

UCHARttl:

8;

UCHARproto:

8;//protocol(IP,TCP,UDPetc)

USHORTchecksum:

16;

UCHARsourceIP[4];

UCHARdestIP[4];

}IPHEADER;

可根据以上示例定其他协议的相应数据结构。

3.1.7网络监听程序实例

以下将通过作者利用Winpcap及MFC开发的网络入侵取证系统的网络数据包捕获部分,来进一步阐述利用libpcap开发网络监听程序的方法。

以下仅分析程序的监听部分。

1.数据类型定义

为了实现捕获数据的解析定义了相关数据类型:

(在文件decode.h中定义)

//定义协议类型名称

char*Proto[]={"Reserved","ICMP","IGMP","GGP","IP","ST","TCP",

"UCL","EGP","IGP","BBN-RCC-MON","NVP-II","PUP",

"ARGUS","EMCON","XNET","CHAOS","UDP","MUX",

"DCN-MEAS","HMP","PRM","XNS-IDP","TRUNK-1","TRUNK-2","LEAF-1","LEAF-2","RDP","IRTP","ISO-TP4","NETBLT","MFE-NSP","MERIT-INP","SEP","3PC","IDPR","XTP","DDP","IDPR-CMTP","TP++","IL","SIP","SDRP","SIP-SR","SIP-FRAG","IDRP","RSVP","GRE","MHRP","BNA","SIPP-ESP","SIPP-AH","I-NLSP","SWIPE","NHRP","unassigned","unassigned","unassigned","unassigned","unassigned","unassigned","anyhostinternalprotocol","CFTP","anylocalnetwork","SAT-EXPAK","KRYPTOLAN","RVD","IPPC","anydistributedfilesystem","SAT-MON","VISA","IPCV","CPNX","CPHB","WSN","PVP","BR-SAT-MON","SUN-ND","WB-MON","WB-EXPAK","ISO-IP","VMTP","SECURE-VMTP","VINES","TTP","NSFNET-IGP","DGP","TCF","IGRP","OSPFIGP","Sprite-RPC","LARP","MTP","AX.25","IPIP","MICP","SCC-SP","ETHERIP","ENCAP","anyprivateencryptionscheme","GMTP"};

typedefstruct{//定义以太帧的头部数据类型

UCHARDestMac[6];

UCHARSrcMac[6];

UCHAREtype[2];

}ETHHEADER;

typedefstruct{//IP头部的数据类型

UCHARheader_len:

4;

UCHARversion:

4;

UCHARtos:

8;//typeofservice

USHORTtotal_len:

16;//lengthofthepacket

USHORTident:

16;//uniqueidentifier

USHORTflags:

16;

UCHARttl:

8;

UCHARproto:

8;//protocol(IP,TCP,UDPetc)

USHORTchecksum:

16;

UCHARsourceIP[4];

UCHARdestIP[4];

}IPHEADER;

typedefstruct{//定义端口数据类型用于解析TCP和UDP中的源端口和目的端口

USHORTsrcPort;

USHORTdecPort;

}PORT;

2.监听和解析过程的实现

pcap_t*fp;

UINTlisten(LPVOIDParam)

{

bpf_u_int32mask;

bpf_u_int32net;

CStringstrerr;

structbpf_programfilter;

charebuf[PCAP_ERRBUF_SIZE];

char*adapter;

if(!

m_continue){fp=NULL;return0;};

tt=sizeof(Proto)/sizeof(char*);

//1.查找本地网络适配器

adapter=(char*)pcap_lookupdev(ebuf);

pcap_lookupnet(adapter,&net,&mask,ebuf);

if(adapter==NULL)

{

strerr.Format("PCAPerror:

%s",ebuf);

MessageBox(NULL,strerr,NULL,0);

return1;

}

//2.建立监听会话

//Note:

theadaptermaynotproperadapter!

!

fp=pcap_open_live(adapter,2000,1,20,ebuf);

charf_app[250];

for(inti=0;i<250;i++)f_app[i]='\0';

filter_app.TrimLeft();

filter_app.TrimRight();

strcpy(f_app,(LPCSTR)(filter_app));//filter_app为全局字符变量,在其他部分设定

//表示过滤规则字符串。

if(fp==NULL)

{

strerr.Format("PCAPerror:

%s",ebuf);

MessageBox(NULL,strerr,NULL,0);

return1;

}

if(pcap_datalink(fp)!

=DLT_EN10MB)//返回数据链路层的类型

{

MessageBox(NULL,"NotEthernet10MBadapter!

",NULL,0);

pcap_close(fp);

return1;

}

pcap_compile(fp,&filter,f_app,0,0);

pcap_setfilter(fp,&filter);//,0,net

//3.建立捕获循环

pcap_loop(fp,0,dispatcher_handler,NULL);//dispatcher_handler为数据包处理回调函数

//4.关闭设备.

pcap_close(fp);

fp=NULL;

return0;

}

3.数据包处理回调函数。

函数将解析后得到后的信息,显示在对话框中的ListView控件中,并将全部数据帧的内容以十六进制显示在文本框中。

voiddispatcher_handler(u_char*,conststructpcap_pkthdr*header,constu_char*pkt_data)

{

if(!

m_continue):

:

AfxEndThread(CREATE_SUSPENDED);

CGuicapDlg*m_dlg=dynamic_cast(:

:

AfxGetApp()->GetMainWnd());

ETHHEADER*eth_header=(ETHHEADER*)pkt_data;//解析数据包的以太帧头部

CTimet=CTime:

:

GetCurrentTime();//获取当前时间

CStringitem;

item.Format("%02d:

%02d:

%02d",t.GetHour(),t.GetMinute(),t.GetSecond());

m_dlg->m_list.InsertItem(0,item,-1);

item.Format("%ld",header->len);

m_dlg->m_list.SetItemText(0,1,item);

if(header->len>=ETHHEADERSIZE)//解析数据包的IP头部

{

IPHEADER*ip_header=(IPHEADER*)(pkt_data+14);

if(ip_header->proto>99)

strcpy(strType,"IP/UNKNOWN");

else

strcpy(strType,Proto[ip_header->proto]);//解析出协议类型

item.Format("%02X-%02X-%02X-%02X-%02X-%02X",eth_header->DestMac[0],

eth_header->DestMac[1],eth_header->DestMac[2],eth_header->DestMac[3],

eth_header->DestMac[4],eth_header->Des

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1