三款常用IP发包工具介绍(sendip、nessus 和sniffer)

更新时间:2024-07-05 22:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

三款常用IP发包工具介绍

来源: ChinaUnix博客

三款常用IP发包工具介绍

AntPower版权所有© 2003 技术文章 http://www.antpower.org 第1 页共14 页 AntPower-技术文章 三款常用IP 发包工具介绍 小蚁雄心成员郎国军著 lgj@qingdao.cngb.com URL 修订版本

版本时间修订人说明

AntPower版权所有© 2003 技术文章 http://www.antpower.org 第2 页共14 页 1. 简介

在从事网络产品尤其是网络安全产品开发时,我们一直面临着一个问题,就是对产品的 TCP/IP 协议栈进行稳定性或安全性测试,确保开发产品在遇到各种不规则的错误的IP 包时

仍可正常稳定高效地工作,我们知道,在正常的网络环境中,很难产生错误的IP 包,也很

难产生我们想要的错误的IP 包,为此,要完成对产品的测试,我们必须自己来制造各种各

样错误的IP 包,本篇的目的就是介绍如何利用各种发包工具来制造自己想要的错误的IP 包。

2. IP 发包工具介绍

目前,有很多常用的产生IP 包的工具,如sendip、nessus、ipsend、ippacket、sniffer 等,

下面我们介绍三种比较常用的工具sendip、nessus和sniffer。 2.1. SENDIP 工具

SENDIP 是一个LINUX 下的命令行工具,可以通过命令行参数的方式发送各种格式的IP 包,它有大量的命令行参数来规定各种协议的头格式,目前可支持NTP, BGP, RIP, RIPng,TCP, UDP, ICMP 或raw IPv4 和IPv6 包格式,并且可以随意在包中添加数据。

SENDIP 可在各种UNIX 或LINUX 版本中运行,本人使用的是SLACKWARE 8.0 和REDHAT 9.0 两个版本。 可在网站

http://www.earth.li/projectpurple/progs/sendip.html

中下载最新的源代码或RPM包,目前版本为2.5,源码包大小只有54K。 2.1.1. 安装过程

SENDIP 的安装过程非常简单,首先从前面介绍的网站中下载最新的源代码包,目前为sendip2.5.tar.gz。 在LINUX 系统中执行: #tar –xzvf sendip-2.5.tar.gz #cd sendip-2.5 #make #make install

在系统的/usr/local/bin 目录下会产生一个SENDIP 命令文件,同时,在

/usr/local/lib 目录下建立一个sendip目录,并在其下放置ipv4.so、ipv6.so、tcp.so 等与协议相关的模块文件。

通过在命令行下运行这个文件,我们可以产生各种各样我们需要的IP 包,还可以通过运行脚本自动发送大量的IP 包。 2.1.2. 发包方法

SENDIP 可以发送NTP, BGP, RIP, RIPng, TCP, UDP, ICMP、IPv4 和IPv6 等各种格式的数据包,SENDIP 本身是以模块的方式发送各种协议的数据包,用-p 参数指定协议类型,要发送每种协议的数据包,必须对该协议的数据包格式有一定的了解。通常发送TCP/UDP/ICMP 数据包时,都必须以IP 包进行封装,然后才可以发出去。本节我们将以TCP数据包为例进行讲述。

下面介绍一下SENDIP 的命令行格式,以下为直接执行SENDIP 时的输出: Usage: sendip [-v] [-d data] [-h] [-f datafile] [-p module] [module options]hostname

-d data add this data as a string to the end of the packet Data can be:

rN to generate N random(ish) data bytes; 0x or 0X followed by hex digits; 0 followed by octal digits;

any other stream of bytes(以指定字节的随机数据填充包中的数据段) -f datafile read packet data from file(以指定数据文件中的内容填充包中的数据段)

-h print this message(输出帮助信息)

-p module load the specified module (see below)(指定协议类型) -v be verbose(运行时输出详细运行信息,如不指定,运行时不输出信息) (协议类型是以模块的方式指定的,用-p 参数指定)

Modules are loaded in the order the -p option appears. The headers from each module are put immediately inside the headers from the previos model in the final packet. For example, to embed bgp inside tcp inside ipv4, do sendip -p ipv4 -p tcp -p bgp .... Modules available at compile time:

ipv4 ipv6 icmptcpudpbgp rip ntp(支持的协议类型) 通常执行格式如下:

#sendip –v –d r64 –p ipv4 –iv 4 –ih 5 –il 128 –is 10.0.0.1 –id 30.0.0.1 –p tcp –ts 1379 –td 23 –tt 8 30.0.0.1

-v:运行时输出详细运行信息,如不指定,运行时不输出信息 –d r64:用64 字节的随机数值填充IP 包中的数据段

–p ipv4:指定协议类型为IP 协议(IP 协议有自己的相应参数,以i 开头) –iv 4:协议版本为4,即IPV4

–ih 5:指定IP 头的长度为5×4=20 字节 –il 128:指定IP 包的总长度为128 字节 –is 10.0.0.1:指定IP 包的源地址 –id 30.0.0.1:指定IP 包的目的地址

–p tcp:指定IP 包中封装的包的协议类型(TCP 协议有自己的相应参数,以t 开头) –ts 1379:指定TCP 包的源端口1379 –td 23:指定TCP 包的目的端口为23

-tt 8:指定TCP 包的偏移量即TCP 头的长度,没有TCP 选项时为5,即20 字节,有TCP 选项时需要增加。 30.0.0.1:指定发包的目的主机

以上部分为利用SENDIP 发送一个简单的TCP 数据包的方法,下面结合IP 和TCP 数据包的格式详细介绍IP 和TCP 协议的各种参数。

具体各种协议的数据包格式可参考TCP/IP 协议中对各种协议数据包格式的介绍,下面

我们只介绍IP 数据包的格式和TCP 数据包的格式: IP 数据包的格式:

根据IP 数据包的格式,SENDIP 有如下命令行参数可以指定对应的IP 数据包中参数的值。 Field name Size (bits) SendIP option Description

Version 4 -iv Always 4(对应“4 位版本”,通常值为4,表示IPV4) Header length 4 -ih

IP header length, measured in 32bit words, 5 if there are no options(对应“4 位首部长度”,表示以32 位即4字节为单位的IP 首部长度,如果没有IP 参数的话,通常为5,表示首部长度为20 字节,如有IP 参数的话,需要调整该值) Type of Service/Differentiated Services 8 -iy

服务类型(TOS)字段由8 位组成,其中包括3 位的优先权字段(现已被忽略)、4 位的TOS 子字段和1

位未用位但必须置0,4 位TOS 子字段分别代表最小时延、最大吞吐量、最高可靠性和最小费用。4 位只

能置其中1 位,使用时只要将设置相应位后运算出十进制值即可。如要设置最大吞吐量位(00001000),只 需添加参数iy 8 即可。 Total Length 16 -il

Total length of IP packet including header and data,measured in octets(指定IP 包的总长度,包括IP 头部分和数据部分,以8 位字节为单位,最长为65535)

本文来源:https://www.bwwdw.com/article/0m4.html

Top