引言:网络安全领域的许多网络安全技术,如防火墙、入侵检测、安全扫描、网络嗅探、协议分析、流量统计、网络
管理、蜜罐等,其设计和实现都离不开一些网络安全操作,其中一些基本操作都在底层进行,使用频繁,如网络地址
的操作、网络接口的操作、数据包的捕获、数据包的构造和发送、网络入侵检测等;还有一些比较复杂的操作,如流
量的统计、路由的管理,ARP缓存的配置、防火墙的管理和配置等,都会在开发网络安全模型或应用系统时碰到。
网络安全开发包就是为实现这些基本功能而开发的专业开发函数库,它为开发、研究人员进一步研究和开发网络安全
系统提供了编程接口,可以直接调用,从而大大提高开发效率,加快程序设计的速度,降低开发成本,节省时间和精
力,利用网络安全开发包,可以很方便地编写出结构化、健壮性好、可移植性高的网络安全应用程序。
几个著名的网络安全开发包:
网络数据包捕获开发包Libpcap,
Windows网络数据包捕获开发包WinPcap,
数据包构造和发送开发包Libnet,
通用网络安全开发包Libdnet,
网络入侵检测开发包Libnids。

1、Windows网络数据包捕获开发包WinPcap

winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的
在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能:
  1> 捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;
  2> 在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
  3> 在网络上发送原始的数据报;
  4> 收集网络通信过程中的统计信息。
  winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,winpcap不能阻塞,
过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序
或个人防火墙。目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一
小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向
NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说
9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。有个软件叫sniffer pro.可以作网管软件用,有很多功能,可
监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可
对过滤器进行设置,以便只抓取想要的包,比如POP3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户
名和密码.它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件.还有一个简单的监听软件叫 
Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在用HUB网络上著名软件tcpdump及ids 
snort都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。

 
  winpcap提供给用户两个不同级别的编程接口:一个基于libpcap的wpcap.dll,另一个是较底层的packet.dll。
对于一般的要与unix平台上libpcap兼容的用wpcap.dll是当然的选择。
下载地址:http://winpcap.polito.it/]http://winpcap.polito.it/
基于winpcap的软件:
Windump:协议分析软件、
Analyzer :windows下的一个嗅探器、
ethereal:一个免费的协议分析软件
Dsniff:一个嗅探器
2、网络数据包捕获开发包Libpcap
    libpcap是unix/linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础。Libpcap可以在绝大
多数类unix平台下工作.Libpcap应用程序框架Libpcap提供了系统独立的用户级别网络数据包捕获接口,并充分考虑
到应用程序的可移植性。Libpcap可以在绝大多数类unix平台下工作,参考资料 A 中是对基于 libpcap 的网络应用
程序的一个详细列表。在windows平台下,一个与libpcap 很类似的函数包 winpcap 提供捕获功能,其官方网站是
http://winpcap.polito.it/
  Libpcap 软件包可从 http://www.tcpdump.org/ 下载,然后依此执行下列三条命令即可安装,但如果希望
libpcap能在linux上正常工作,则必须使内核支持"packet"协议,也即在编译内核时打开配置选项 CONFIG_PACKET(
选项缺省为打开)。
  ./configure
  ./make
  ./make install
  libpcap源代码由20多个C文件构成,但在 Linux系统下并不是所有文件都用到。可以通过查看命令make的输出了
解实际所用的文件。本文所针对的libpcap版本号为0.8.3,网络类型为常规以太网。Libpcap应用程序从形式上看很
简单.
3、数据包构造和发送开发包Libnet
libnet是一个小型的接口函数库,
  主要用C语言写成,
  提供了低层网络数据报的构造、处理和发送功能。
  libnet的开发目的是:
  建立一个简单统一的网络编程接口以屏蔽不同操作系统低层网络编程的差别,
  使得程序员将精力集中在解决关键问题上。
  他的主要特点是:
  高层接口:libnet主要用C语言写成
  可移植性:libnet目前可以在Linux、FreeBSD、Solaris、WindowsNT等操作系统上运行,并且提供了统一的接口
  数据报构造:libnet提供了一系列的TCP/IP数据报文的构造函数以方便用户使用
  数据报的处理:libnet提供了一系列的辅助函数,利用这些辅助函数,帮助用户简化那些烦琐的事务性的编程工

  数据报发送:libnet允许用户在两种不同的数据报发送方法中选择。
  另外libnet允许程序获得对数据报的绝对的控制,其中一些是传统的网络程序接口所不提供的。这也是
  libnet的魅力之一。
  libnet支持TCP/IP协议族中的多种协议,
  比如其上一个版本libnet1.0支持了10种协议,
  一些新的协议,比如对IPV6的支持还在开发之中。
  libnet目前最新的版本是1.1版本,
  在该版本中,作者将这些函数做了进一步的封装,
  用户的使用步骤也得到了进一步的简化。
  内存的初始化、管理、释放等以及校验和的计算等函数,
  在默认情况下,都无须用户直接干预,使得libnet的使用更为方便。
  作者还提供了基于老版本的应用程序移植到新版本上的方法指导。
下载地址: http://www.packetfactory.net/libnet/dist/libnet.tar.

基于libnet的软件:
ettercap:一个交换网络环境下的网络监视、捕获和记录工具。
Snort:大名鼎鼎的网络入侵检测系统
Tcpreplay:基于libnet的tcp操作软件,能在线网络流量。
4、通用网络安全开发包Libdnet
libnet是UNIX系统同台上网络安全工具开发的重要的库,它和libpcap、libnids一起,给网络安全工具的开发人员提
供了一组丰富而且完全的武器,使之得以很方便地编写出结构化强、健壮性好、可移植性高等特点的程序。
libnet提供一系列的接口函数,实现和封装了数据包的构造和发送过程。利用它可以亲自构造从应用层到链路层的各
层协议的数据包头,并将这些包头与有效数据有序地组合在一起发送出去。当然,它也是基于tcp/ip协议族模型的。
下载地址:http://prdownloads.sourceforge.net/libdnet/libdnet-1.10.tar.gz
5、网络入侵检测开发包Libnids
Libnids(Library Network Intrusion Detection System)是一个网络入侵检测开发的专业编程接口。它实现了
基于网络的入侵检测系统的基本框架,并提供了一些基本的功能。使用Libnids可以快速地构建基于网络的入侵检测
系统,并可以在此基础上进一步扩展开发。Libnids实现了入侵检测系统的底层功能,使开发者可以专注于高层的功
能开发。
    Libnids是基于Libpcap和Libnet而开发的,所以它具有Libpcap和Libnet的优点,具有较强的移植性,效率高,
使用简单。Libnids是仿造Linux 2.0.x内核中的TCP/IP协议部分而实现的,具有高可靠性,并通过了许多测试。
    Libnids的主要功能包括捕获网络数据包、IP碎片重组、TCP数据流重组及端口扫描攻击测试和异常数据包测试等
。Libnids使用了Libpcap捕获数据包的功能,可以设定过滤规则,指定捕获感兴趣的数据包。IP碎片重组是Libnids
的一个重要内容,它是仿照Linux内核中的IP重组而实现的,所以非常可靠。Libnids提供了TCP数据流重组功能,这
是Lipcap所不具备的,利用TCP数据流重组,可以分析基于TCP协议的各种应用层协议。另外,Libnids还提供了检测
TCP端口扫描攻击的功能,检测异常数据包的功能,这是入侵检测系统(IDS)最基本的功能。
Libnids的使用范围
   Libnids使用了Libpcap。所以他具有捕获数据包的功能,利用Libnids可以轻松地实现对数据包的捕获,对其进行
分析。同时,Libnids提供了TCP数据流重组功能,所以对于分析基于TCP协议的各种协议Libnids都能胜任。Libnids
还提供了对IP分片进行重组的功能,以及端口扫描检测和异常数据包检测功能,所以它对于分析网络异常情况也是非
常有效的。总结起来,Libnids可以用在以下几个方面。当然,良好的扩展性可以给我们带来更多的惊喜。
一、入侵检测系统
   Libnids的设计是作为入侵检测系统的一个部件来设计的,它实现了入侵检测系统中非常基础的功能,如数据包捕
获、协议分析接口等。另外,它还专门针对入侵检测系统的特性,实现了TCP数据流重组功能,这对于分析准对TCP协
议的各种攻击是很有效的。还有,它已经实现了IP碎片重组功能、对异常数据包的检测功能以及对TCP端口扫描的检
测功能。最重要的是,Libnids为入侵检测系统更深入的开发提供了开发接口。因此,开发人员可以更关注于对入侵
检测技术的研究,而不用考虑底层的实现细节。
二、网络协议分析
   Libnids是在Libpcap的基础上开发的,所以它具备了Libpcap的功能,可以实现各种协议的分析,并在Libpcap的
基础上开发了更多的功能,如TCP数据流重组。这样,在利用Libnids分析基于TCP协议的各种协议时,不仅可以分析
各种单个TCP数据包,而且可以分析整个TCP连接过程。这对于分析FTP协议,HTTP协议,POP3协议等基于TCP的应用层
协议是非常有帮助的。
三、网络嗅探
   网络嗅探也成网络监视,主要是指检测网络信息,查看网络内容。针对不同的目的,有各种各样的故障,它可以
利用网络嗅探技术来实现。对于网络非法攻击者来说,为了获得敏感信息,他也可以利用网络嗅探技术来获取他所需
要的内容,如,密码、用户、帐号等。后面,读者将可以看到,利用Libnids可以轻松获取很多协议传输的用户和密
码。所以说,Libnids是一把双刃剑。除此之外,利用Libnids还可以重现网络内容,还原网络数据,如重现HTTP协议
中传输的网页,POP3协议中传输的电子邮件等。
下载地址:http://libnids.sourceforge.org