用perl实现一个简单的nids

用perl实现一个简单的nids

ID:21160090

大小:89.00 KB

页数:10页

时间:2018-10-20

用perl实现一个简单的nids_第1页
用perl实现一个简单的nids_第2页
用perl实现一个简单的nids_第3页
用perl实现一个简单的nids_第4页
用perl实现一个简单的nids_第5页
资源描述:

《用perl实现一个简单的nids》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用PERL实现一个简单的NIDS~教育资源库  随着对网络安全需求的深入开发,基于网络的入侵检测技术已经成为一个重要且有意思的研究方向。想学习NIDS技术除了去读一些现成的资料和一些开源系统的源码,最好的办法莫过于自己去写一个NIDS程序,只有那样才能真正体会到一些NIDS的实现需求和设计妙处。  本质上说NIDS只是一种网络流量的分析工具,通过对网络流量的分析识别出一些已知或未知的攻击行为,一个最简单的NIDS完成的主要工作也就是抓包->协议解码->匹配,众所周知PERL是极其强大的脚本语言,尤其是它的字符串处理

2、能力可以方便地实现对于网络流量中恶意特征进行匹配。当然PERL毕竟只是脚本语言,它的执行效率不允许用于真正大流量生产性环境,但PERL的简单易学及强大功能对于实现一个简单的NIDS达到学习的目的无疑是非常好的,下面我介绍一个用PERL实现的简单NIDS框架,我们将在Linux下实现它,在其他操作系统上类似。  PERL的一个强大特性就在于它海量的CPAN模块库,很多你想实现的功能都可以找到现成的模块,你所要做的只是安装上那些模块即可,关于PERL的模块及面向对象特性的管理和使用在这就不介绍了,请参看相关资料,比如O'R

3、EILLY出版的《高级Perl编程》。在用PERL编写网络流量分析脚本之前,需要安装一些底层的抓包及基本的数据包解码模块,包括如下这些:  .tcpdump.org/release/libpcap-0.8.1.tar.gz  底层基本的抓包库。  .cpan.org/authors/id/T/TI/TIMPOTTER/Net-Pcap-0.04.tar.gz  libpcap的PERL接口。  .cpan.org/authors/id/T/TI/TIMPOTTER/Net-PcapUtils-0.01.tar.gz  Net-

4、Pcap模块的ents/suggestionstostardustatxfocusdotorg  #  #  #$Id:perl-ids.pl,v1.162004/03/0421:51:12stardustExp$  #  #引用所有相关的模块  useNet::PcapUtils;  useNetPacket::Etherqonitorlog=monitor.log;  #以后台进程方式运行  daemon();  subdaemon{  unless(fork){  SniffLoop();  exit0;  }  exi

5、t1;  }  #抓包循环  subSniffLoop{  #进入工作目录  chdir($onitorlog);  #设置文件读写为非缓冲模式  select(ATTACKLOG);$ ++;select(MONITORLOG);$ ++;select(STDOUT);$ ++;  #设置信号处理函数,因为程序运行于后台,退出时需要利用信号处理函数做些清理工作  $SIG{INT}='HandleINT';  $SIG{TERM}='HandleTERM';  #进入抓包回调函数  Net::

6、PcapUtils::loop(sniffit,SNAPLEN=>1800,Promisc=>1,FILTER=>'tcporudp',DEV=>'eth0');  }  subsniffit{  my($args,$header,$packet)=_;  #解码IP包  $ip=NetPacket::IP->decode(eth_strip($pac123456下一页友情提醒:,特别!ket));  #TCP协议  if($ip->{proto}==IP_P

7、ROTO_TCP){  #解码TCP包  $tcp=NetPacket::TCP->decode($ip->{data});  #检查来自SMB客户端的包  if(($tcp->{dest_port}==139)  ($tcp->{dest_port}==445)){  #如果目的端口是139或445,认为是SMB协议包,做相应的检查  SmbClientCheck($ip->{src_ip},$tcp->{src_port},$ip->{dest_ip},$tcp->{dest

8、_port},$tcp->{data});  }elsif($tcp->{dest_port}==21){  #如果目的端口是21,认为是FTP协议,做相应的检查  FtpClientCheck($ip->{src_ip},$tcp->{src_por

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。