发送长度大于的包的工具
SENDIP,可以在各种UNIX或LINUX版本上运行。我使用两个版本,SLACKWARE8、0 和 seo百度发包工具。
REDHAT9、0、
您可以从网站上下载最新的源代码或RPM安卓抓包和发包工具。
包,当前版本是2、5、源代码包的大小只有。
安装过程
SENDIP的安装过程非常简单。首先从上面介绍的网站下载最新的源码包,目前是
sendip-。 百度发包点击工具。
在LINUX系统中执行:百度seo发包技术出售。
#tar–xzvfsendip-
#cdsendip-2、5
#make
#makeinstall
会在/usr/local/bin目录下生成系统一个SENDIP命令文件,同时在/usr/local/lib目录百度模拟点击软件判刑了。
下创建一个sendip目录,在其下放置ipv4、so、ipv6、so、tcp.so等协议相关的模块文件. 模拟点击发包程序。
通过在命令行运行这个文件,我们可以生成我们需要的各种IP包,也可以通过运行
脚本自动发送大量IP包。
AntPower 版权所有©技术文章
第 3 页,共 14 页
报文发送方式百度发包访问。
SENDIP 可以发送多种格式,如 NTP、BGP、RIP、RIPng、TCP、UDP、ICMP、IPv4 和 IPv6
数据包,SENDIP本身以模块的形式发送各种协议的数据包,协议类型用-p参数指定。要发送各个协议的数据包,必须对协议的数据包格式有所了解。通常,发送
TCP/UDP/ICMP数据包时,必须将它们封装在IP包中才能发送出去。在本节中,我们将以 TCP
数据包为例。 百度虚拟发包seo。
SENDIP 的命令行格式如下所述。以下是直接执行 SENDIP 时的输出:
用法:sendip[-v][-ddata][-h][-fdatafile][-pmole][moleoptions] hostname
-ddataaddthisdataasastringtotheendofthepacket
Datacanbe :
rNtogenerateNrandom(ish)databytes;
0followedbyoctaldigits;
anyotherstreamofbytes(用指定字节的随机数据填充数据包中的数据段)
-fdatafilereadpacketdatafromfile(将数据段填入带有指定数据文件内容的数据包)发包app。
-hprintthismessage(输出帮助信息)百度发包出售。
-pmoleloadthespecifiedmole(见下文)(指定协议类型)
-vbeverbose(运行时输出)详细运行信息,如果没有
(协议类型以模块的形式指定,使用 -p 参数指定)
Moles 按顺序加载 -p 选项出现。百度模拟点击。
每个moles 的headers 立即放置在百度模拟搜索点击源码。
finalpacket 中previos 模型的headers 中。例如,toembedbgpin sidetcpinsideipv4,do模拟发包。
sendip-pipv4-ptcp-pbgp....
Molesavailableatcompiletime:
(支持的协议类型)
通常的执行格式如下:百度K站神器。
#sendip–v–d --pipv4--iv4--ih5--il---ptcp--ts--
-v:运行时输出详细的运行信息,如果不指定,运行时不输出任何信息
--d:使用64字节填充IP包中随机取值的数据段
--pipv4:指定协议类型为IP协议(IP协议有自己对应的参数,以i开头)
--iv4:协议版本为4、即IPV4seo发包技术。
–ih5:指定IP头长度为5×4=20字节
–il:指定IP包总长度为字节真机发包。
–:指定源地址IP 包
--:指定 IP 包的目的地址 对应参数,以 t 开头) 百度seo点击软件。
--ts:指定 TCP 包的源端口 百度自动搜索关键词软件。
--:指定 TCP 的目的端口packet as 23
-tt8:指定 TCP 数据包的偏移量,即t 即 TCP header Length,如果没有 TCP 选项,则为 5、即 20 字节seo发包技术教程。
,有 TCP 选项时需要增加。
:指定发送数据包的目的主机
以上部分是使用SENDIP发送一个简单的TCP数据包的方法。下面结合IP和TCP数据
包的格式,详细介绍IP和TCP协议的各种参数。
各种协议的具体报文格式请参考TCP/IP协议中各种协议报文格式的介绍。下面
我们只介绍IP包的格式和TCP包的格式:
IP包的格式:
根据IP包的格式,SENDIP有如下命令行参数来指定Fieldname
Size
(bits)
SendIP
Version4-ivAlways4(对应“4位版本”,通常值为4、表示IPV4)
Headerlength4- ih
IPheaderlength,measuredinwords,5ifthereare
nooptions(对应“4位版本”“Header length”,表示IP头的长度,32位或4个
字节。如果没有IP参数,
一般为5、表示包头长度为20字节,如果有
,需要调整值)
Typeof
Service/Differentiated
Services
8-iy
服务类型(TOS)字段由 8 位组成,包括 3 位
优先级字段(现在忽略)、4 位 TOS 子字段和 1 位未使用但必须设置为 0、4 位 TOS 子字段表示发送最小
延迟、最大吞吐量和最高可靠性,分别是性和最小成本。 4 位中只有 1 位可以设置为
。使用时只需设置相应位即可计算十进制
值。要设置最大吞吐量位(),只需添加参数iy8、
-ilTotallengthofIPpacketincludingheaderanddata,
AntPower Copyright © Technical Article
Page 5 of 14
measuredinoctets(指定IP包的总长度,包括IP头
部分和数据部分,8位bytes是单位,最长的是)
用于帮助重新组装碎片包(指定IP包的标识号,用于帮助重新组装分片的IP包)
-:reserved,shouldbe0
-:don'tfragment (可以指定-ifdx, next可以是0, 1 or r) Flags3
-:morefragmets (可以指定-ifmx, 下面可以是0, 1 or r)
-if
其中构造的数据报这个片段
属于,从0开始测量(在8个字节长度内,指定段偏移)
TimetoLive8-it
在丢弃之前
数据包可以通过的路由器数量(值范围从0到,指定TTL,表示
可以通过的路由器数量,用于防止数据包在循环路径上无休止地通过
)
Protocol8-ip
Protocolassociatedwiththedata.Seeianaforan
uptodatelistofassignednumbers( 用于定义封装在IP包
中的上层协议的协议号。例如TCP为6、可以从IANA网站获取最新的协议号表
ChecksumoftheIPheaderdata(withchecksumsetto
zero)(值可以指定IP头的校验和,通常由SENDIP自动生成
,不要指定这个参数,除非你想发送一个错误的校验和-isDuhh...(源地址,用点分十进制表示)
-idCabbage(目的地址,点分十进制表示)
OptionsVariable-io...
belowfordetails(定义各种IP选项,如果定义了IP
选项,则前面的长度值IP 头应包含 IP 选项的长度,
不带 IP 选项,值为 20、带 IP 选项,
值可以设置,如果要故意创建不匹配的数据包,不符合)
如果有IP选项,也可以指定IP选项的值。SENDIP支持的IP选项如下表所示布尔。
SendIP
RFCCopyClassNumber
描述
EOL-
Usedaspaddingifneeded
(使用该选项后,IP头
中未使用的位会自动补0)
NOP-
Donothing.Oftenusedaspadding
AntPower©保留所有权利©技术文章
第 6 页,共 14 页
用于记录路由
数据包。 :-iorr
0f::--ioeol,其中
iorr表示记录路由,此时系统会自动
设置IP选项号为07、0f表示
指针,即,记录
一个IP地址的指针的最后一条记录,系统会自动计算IP选项的长度
用来记录
packetwasprocessedbyan
intermediatesystem
LSR-
LooseSourceRoute-让
数据包指定路由。
SID-
很少使用,携带SATNET
流标识符。
SSR-
StrictSourceRoute-与LSR相同,
但不允许额外的跃点.,,rarelyused
E-,rarelyused
通常在SENDIP中指定IP选项时,格式比较特殊。我们以RR记录路由选项为例
介绍,如果要发送一个记录三个IP的数据包,需要考虑以下几点,一个是指定IP头的长度要
包括IP选项的长度,但是要指定RR记录路由选项的指针位置和IP地址(系统原来是
自动记录IP并更新指针位置,现在必须手动指定),那么在记录三个IP包后,指针的位置应该是
3+4×3+1=16、完成后数据包的格式应该是:
IP header (IP1)
具体命令行如下:
#sendip–d–pipv4–iv4––il–––:::
–ioeol–ptcp–ts––
-表示IP头的长度为10×4为40字节,去掉标准的20字节长度,为IP
选项保留20字节。
-::: 中的前 10 位表示指针的十六进制表示。
位置,后跟三个用冒号分隔的点分十进制的IP地址
-ioeol表示以00结束IP选项,用随机数填充未使用的IP头位置。
以上部分只是取以RR记录路由IP选项为例,介绍sendip中指定IP选项的方法。当然
也可以根据自己的要求发送IP选项不符合常规的数据包。其他IP选项与此类似,但是在发送
AntPower©技术文章
第7页,共14页
之前,需要详细了解IP选项的格式,才能正确发送。
TCP数据包的格式:
根据TCP数据包的格式,SENDIP有如下命令行参数来指定对应TCP数据包中参数
的值。
SendIP
连接的源端口号
(指定十进制的TCP源端口)
- td
Destinationportnumber
(以十进制指定 TCP 目标端口)
此数据包中的第一个数据八进制数。如果设置了 SYNbitis
,这也是流
的第一个数据八进制数。 (指定TCP序号,如果不指定则随机生成)
Acknowledgment
number
32-ta
如果ACKbitisset,则extsequencenumberthesenderis
期望接收。
Dataoffset4-tt
(指定TCP头的长度
,单位为4字节)
Reserved4-tr
应该是0、注意,但是
Flags:ECN1-tfe
标志:CWR1-tfc
ECNextensionflags,见。 (指定TCP标志位,
如果要打开哪个位,在命令行参数中指定对应位的
值。如果要设置SYN状态,在命令中加-tfs1即可line.Flags:URG1-tfuUrgentpointerissignificant(同上)
Flags:ACK1-tfaAcknowledgmentfieldissignificant(同上)
Flags:PSH1-tfpPushfunction(同上)
Flags:RST1-tfrResettheconnection(同上) )
标志:SYN1-tfsSynchronizesequencenumbers(同上)
AntPower 保留所有权利©技术文章
第 8 页,共 14 页
标志:FIN1-tffNomoredatafromsender(同上)
Numberofoctetstartingfromtheoneinthe
发送方愿意
接受的确认字段
TCP 头的校验和(校验和设置为 0)、
数据和伪头,包括源和
目标 IP 地址、
TCP 头和数据的长度。
如果设置了 URGbitist,则将最后一个字节的偏移量设置为刷新数据
在此数据包中。
OptionsVariable-to...
下面的详细信息。
如果有我作为 TCP 选项,您还可以指定 TCP 选项的值。 SENDIP 支持的 TCP 选项如下表所示。
Name
SendIP
option
RFCType
Length(0present)
Description
EOL-
Usedaspaddingifneeded(填00、表示TCP结束
选项,把TCP头后面的位置用随机数填充)
NOP-
Donothing.Oftenusedaspaddingsothenext
MSS-
的最大接收段大小。仅在SYNis
时有效WSOPT-
窗口大小应按选项()的值
左移。仅在
SYNis也设置时有效。
SACKOK-
连接上允许选择性确认
SACK-
选择性确认非连续
数据块。选项中的数据是
BR>(左边缘)-(右边缘)对分别给出
已收到的第一个序列号和
尚未收到的第一个序列号。
TSOPT-
时间戳。(TSval)是时间
数据包已发送,剩余4个(TSecr)
echo the TSvalofapacketthatwasreceived.TSecr
仅在ACKbitsset时有效。
如上表所示,可以看出TCP op可能只有一个单字节的参数,如-toeol和-tonop,或者
可能由一个类型号和一个长度组成,而长度参数由指定长度字节数的数据组成。使用
时,sendip会自动计算length的长度。因此,TCP选项的长度不能随意设置,而是需要设置
TC。 P 期权的价值。
AntPower 版权所有©技术文章
第 9 页,共 14 页
在设置 TCP 选项时,还需要考虑 TCP 头的长度,包括 TCP 选项的长度。
TCP选项包的格式大致如下:
Kind=3Len=3 数据:移位号
TCP选项号 TCP选项长度 TCP选项数据占1字节,总长度为3字节
具体命令行格式可以参考以下格式:
#sendip–d–pipv4–iv4––il–––:::
–ioeol–ptcp–ts––tt8–tfa0– tfs1–towscale0–
-towscale0:指设置TCP选项3、长度为自动3、TCP选项的值,即移位数为0
-toeol:表示TCP结束选项,然后用随机数填充 TCP 标头 当使用 SENDIP 设置 TCP 选项时,无法设置长度。因此,如果要设置长度不正确的数据包,则需要使用其他工具,例如 SNIFFER,在用 SNIFFER 捕获 SENDIP 发送的数据包后,再使用对应的 TCP
选项的长度即可更改为不规则值。
根据上面介绍的内容,我们已经基本掌握了用SENDIP发送各种协议数据包的方法。
当然我们也可以用它发送各种非标准的数据包,比如校验和错误,长度不正确、状态不正确
等我们需要的数据包,建议配合SNIFFER来验证SENDIP
发送的数据包是否正确,并进行针对性测试。
NESSUS是一个非常大的工具,它可以提供功能齐全的安全扫描服务,还可以提供完善的
包发送功能,构造各种格式的网络通信包。本文只关注 NESSUS 的数据包发送功能。
NESSUS由两部分组成,一部分是服务器,通常运行在LINUX/UNIX等POSIX系统
系统中,负责扫描和攻击,收集数据,另一部分是客户端,可以运行在LINUX/UNIX系统
或WINDOWS系统中,负责接收和显示数据。
如果仅用于发送数据包,则只需要服务器。
NESSUS有专门的维护网站,您可以随时到该网站下载最新的源代码,
获得全面的帮助。目前,NESSUS 的最新版本是 .
安装方法
在安装 NESSUS 之前,您必须了解 NESSUS 可能需要的支持包。一个是GTK。通常,POSIX
系统下的 NESSUS 客户端需要 GTK。如果你的系统中安装了GTK,你必须确保安装了
gtk-config程序,你可以去ftp网站下载最新的GTK程序,如果你只安装了
LINUX/UNIX下的服务器系统,不需要GTK包;另一种是OPENSSL包,如果需要
如果客户端和服务器之间的通信采用SSL方式,则需要OPENSSL包。您可以从
下载最新的 OPENSSL 包。 OPENSSL 包是可选的。
NESSUS有三种安装方法:第一种是使用LINUX下的LYNX工具直接从网上安装。这种方法很容易,但安全性低。这里就不详细介绍了。获取相关信息。第二种方法是使用 NESSUS 提供的 nessus-installer.sh 工具直接安装。这种方法简单,相对安全。第三种方法是获取源码包,然后分别编译安装。下面介绍第二种和第三种方法。
AntPower 版权所有©技术文章
第 10 页,共 14 页
使用 nessus-installer.sh 安装
从 NESSUS 网站下载最新的 nessus-installer.sh 文件到本地 LINUX 目录,然后执行
#shnessus-installer.sh
系统会自动将NESSUS安装到你的系统中,中间会要求你提供相关的提示信息,一直按
回车。
源码包方式安装
如果使用源码包方式安装,需要下载四个软件包,依次安装。四个包
如下:
nessus-libraries
libnasl
nessus-core
nessus-plugins
安装时四个包必须按顺序安装。
在安装之前,我们必须先获取上面提到的四个包,当前版本是:
nessus-libraries-
libnasl-
nessus-
nessus-
然后开始安装。
1、安装 nessus-libraries
#tar–xzvfnessus-libraries-
#cdnessus-libraries-x.x
#./configure
#make
#makeinstall
2、安装libnasl-(同上)
3、install nessus-(同上)
4、install nessus-(同上)
5、if using 如果是对于 LINUX 系统,您必须确保 /usr/local/lib 路径在 /etc/ 文件中。如果是 SOLARIS 系统,则必须执行 exportLD_LIBRARY_PATH=
$LD_LIBRARY_PATH:/usr/local/lib 命令。
6、执行 ldconfig 命令
7、如果您不想或不能使用 GTK 客户端,可以强制使用命令行模式。这时,当你执行第三步
编译nessus-core时,可以使用如下命令:
#tar–xzvfnessus-libraries-
#cdnessus-libraries-x.x
#。 /configure--disable-gtk
#make
#makeinstall
AntPower 版权所有© 技术文章
第 11 页,共 14 页
执行上述命令后,NESSUS 已安装在您的系统中.
发送数据包的方法
NESSUS通常使用脚本来控制发送的数据包。下面以发送圣诞老人攻击包为例介绍
如何使用NESSUS发送数据包。
Santa的包是通过发送TCPFlag中同时带有SYN和FIN标志的数据包,穿透防火墙,达到攻击目的,
为了使用NESSUS发送攻击包,首先定义一个脚本,在LINUX下,执行visendp命令,
输入如下内容:
srcaddr=this_host();注:自动获取IP地址当前主机的
BR>ip=forge_ip_packet(ip_v:4, 注意:IP协议版本为IPV4
ip_hl:5, 注意:IP头长度为5×4=20字节
ip_tos:0,
ip_len:40,注意:这里输入实际长度40、因为IP头和TCP头都是20
ip_id:0xABA,
ip_p:IPPROTO_TCP,注意:内部包协议为 TCP
ip_ttl:,
ip_off:0,
ip_src:srcaddr);注意:这里可以直接输入IP
port=get_host_open_port();注意:自动获取当前主机上的可用端口
if(!port)port =;注意:如果没有可用端口,会自动使用该端口
tcpip=forge_tcp_packet(ip:ip, 注意:表示IP层协议采用之前定义的IP协议packet
th_sport:port, 注意:这里可以直接输入端口
th_dport:port,注意:这里可以直接输入端口
th_flags:TH_SYN|TH_FIN,注意:设置TCP状态的SYN和FIN标志
th_seq:,
th_ack:0,
th_x2:0,
th_off:5, 注意:TCP头长度为5×4=20字节
th_win:,
th_urp:0);
result=send_packet(tcpip ,pcap_active:FALSE);
以上脚本编辑完成后,保存退出,运行如下命令:
#nasl–t目的IP地址测试脚本#nasl–
AntPower版权所有©技术文章
Page 12 of 14
通过Sniffer抓包,你会发现有一个对应的圣诞老人包。
在我使用的过程中,我发现NESSUS似乎不支持发送带有IP或TCP选项的数据包。
发送数据包的具体参数请参考
当使用SNIFFER发送数据包时,有两种方式,一种是直接使用PacketGenerator工具从
hexadecimal format ,这个方法比较难,因为要自己计算校验和,除非需要重现网络上捕获的一个16进制格式的数据包,另一种方法是使用捕获的数据包修改
,然后发送出去。具体实现方法如下。
使用PacketGenerator直接创建包
在SNIFFER中,选择Tools|PacketGenerator菜单,系统会弹出如下窗口:
按下图中红框内的按钮,系统会弹出一个对话框构建包内容,如下图:
AntPower版权所有©技术文章
第13页,共14页
在上图中,可以输入包的内容,也可以指定包裹数量和包裹长度。
使用抓包发包
使用抓包修改,可以避免大量的操作和输入,只需要改变需要改的地方,
然后发送出去.
如上图,根据包的一般要求,用其他工具制作包后,使用SNIFFER抓包,或者直接抓包
网络上的可疑包,然后点击使用鼠标邮件,弹出如上图所示的快捷菜单,从中选择
并选择SendCurrentFrame菜单,系统会弹出包裹发送窗口,如下图:
AntPower 版权所有©技术文章
Page 14 of 14
根据需要更改包裹内容并发送。需要注意的是,如果头部中的IP地址或其他内容发生变化,需要更新校验和,而MAC或选项的变化不需要改变校验和。
3、总结
通过对比前面三个包分发工具,我们发现每个工具都有自己的优缺点。 SENDIP比
更短更实用,更适合日常测试使用。 , SNIFFER打包工具是最免费的,可以发送
任何可能的数据包,NESSUS工具功能更全面,但在打包发送方面不如SENDIP,所以如果需要测试,建议使用, SENDIP和SNIFFER要结合使用,如果要使用
扫描等其他功能,可以使用NESSUS工具。
SENDIP,可以在各种UNIX或LINUX版本上运行。我使用两个版本,SLACKWARE8、0 和
REDHAT9、0、
您可以从网站上下载最新的源代码或RPM
包,当前版本是2、5、源代码包的大小只有。
安装过程
SENDIP的安装过程非常简单。首先从上面介绍的网站下载最新的源码包,目前是
sendip-。
在LINUX系统中执行:
#tar–xzvfsendip-
#cdsendip-2、5
#make
#makeinstall
会在/usr/local/bin目录下生成系统一个SENDIP命令文件,同时在/usr/local/lib目录
下创建一个sendip目录,在其下放置ipv4、so、ipv6、so、tcp.so等协议相关的模块文件.
通过在命令行运行这个文件,我们可以生成我们需要的各种IP包,也可以通过运行
脚本自动发送大量IP包。
AntPower 版权所有©技术文章
第 3 页,共 14 页
报文发送方式
SENDIP 可以发送多种格式,如 NTP、BGP、RIP、RIPng、TCP、UDP、ICMP、IPv4 和 IPv6
数据包,SENDIP本身以模块的形式发送各种协议的数据包,协议类型用-p参数指定。要发送各个协议的数据包,必须对协议的数据包格式有所了解。通常,发送
TCP/UDP/ICMP数据包时,必须将它们封装在IP包中才能发送出去。在本节中,我们将以 TCP
数据包为例。
SENDIP 的命令行格式如下所述。以下是直接执行 SENDIP 时的输出:
用法:sendip[-v][-ddata][-h][-fdatafile][-pmole][moleoptions] hostname
-ddataaddthisdataasastringtotheendofthepacket
Datacanbe :
rNtogenerateNrandom(ish)databytes;
0followedbyoctaldigits;
anyotherstreamofbytes(用指定字节的随机数据填充数据包中的数据段)
-fdatafilereadpacketdatafromfile(将数据段填入带有指定数据文件内容的数据包)
-hprintthismessage(输出帮助信息)
-pmoleloadthespecifiedmole(见下文)(指定协议类型)
-vbeverbose(运行时输出)详细运行信息,如果没有
(协议类型以模块的形式指定,使用 -p 参数指定)
Moles 按顺序加载 -p 选项出现。
每个moles 的headers 立即放置在
finalpacket 中previos 模型的headers 中。例如,toembedbgpin sidetcpinsideipv4,do
sendip-pipv4-ptcp-pbgp....
Molesavailableatcompiletime:
(支持的协议类型)
通常的执行格式如下:
#sendip–v–d --pipv4--iv4--ih5--il---ptcp--ts--
-v:运行时输出详细的运行信息,如果不指定,运行时不输出任何信息
--d:使用64字节填充IP包中随机取值的数据段
--pipv4:指定协议类型为IP协议(IP协议有自己对应的参数,以i开头)
--iv4:协议版本为4、即IPV4
–ih5:指定IP头长度为5×4=20字节
–il:指定IP包总长度为字节
–:指定源地址IP 包
--:指定 IP 包的目的地址 对应参数,以 t 开头)
--ts:指定 TCP 包的源端口
--:指定 TCP 的目的端口packet as 23
-tt8:指定 TCP 数据包的偏移量,即t 即 TCP header Length,如果没有 TCP 选项,则为 5、即 20 字节
,有 TCP 选项时需要增加。
:指定发送数据包的目的主机
以上部分是使用SENDIP发送一个简单的TCP数据包的方法。下面结合IP和TCP数据
包的格式,详细介绍IP和TCP协议的各种参数。
各种协议的具体报文格式请参考TCP/IP协议中各种协议报文格式的介绍。下面
我们只介绍IP包的格式和TCP包的格式:
IP包的格式:
根据IP包的格式,SENDIP有如下命令行参数来指定Fieldname
Size
(bits)
SendIP
Version4-ivAlways4(对应“4位版本”,通常值为4、表示IPV4)
Headerlength4- ih
IPheaderlength,measuredinwords,5ifthereare
nooptions(对应“4位版本”“Header length”,表示IP头的长度,32位或4个
字节。如果没有IP参数,
一般为5、表示包头长度为20字节,如果有
,需要调整值)
Typeof
Service/Differentiated
Services
8-iy
服务类型(TOS)字段由 8 位组成,包括 3 位
优先级字段(现在忽略)、4 位 TOS 子字段和 1 位未使用但必须设置为 0、4 位 TOS 子字段表示发送最小
延迟、最大吞吐量和最高可靠性,分别是性和最小成本。 4 位中只有 1 位可以设置为
。使用时只需设置相应位即可计算十进制
值。要设置最大吞吐量位(),只需添加参数iy8、
-ilTotallengthofIPpacketincludingheaderanddata,
AntPower Copyright © Technical Article
Page 5 of 14
measuredinoctets(指定IP包的总长度,包括IP头
部分和数据部分,8位bytes是单位,最长的是)
用于帮助重新组装碎片包(指定IP包的标识号,用于帮助重新组装分片的IP包)
-:reserved,shouldbe0
-:don'tfragment (可以指定-ifdx, next可以是0, 1 or r) Flags3
-:morefragmets (可以指定-ifmx, 下面可以是0, 1 or r)
-if
其中构造的数据报这个片段
属于,从0开始测量(在8个字节长度内,指定段偏移)
TimetoLive8-it
在丢弃之前
数据包可以通过的路由器数量(值范围从0到,指定TTL,表示
可以通过的路由器数量,用于防止数据包在循环路径上无休止地通过
)
Protocol8-ip
Protocolassociatedwiththedata.Seeianaforan
uptodatelistofassignednumbers( 用于定义封装在IP包
中的上层协议的协议号。例如TCP为6、可以从IANA网站获取最新的协议号表
ChecksumoftheIPheaderdata(withchecksumsetto
zero)(值可以指定IP头的校验和,通常由SENDIP自动生成
,不要指定这个参数,除非你想发送一个错误的校验和-isDuhh...(源地址,用点分十进制表示)
-idCabbage(目的地址,点分十进制表示)
OptionsVariable-io...
belowfordetails(定义各种IP选项,如果定义了IP
选项,则前面的长度值IP 头应包含 IP 选项的长度,
不带 IP 选项,值为 20、带 IP 选项,
值可以设置,如果要故意创建不匹配的数据包,不符合)
如果有IP选项,也可以指定IP选项的值。SENDIP支持的IP选项如下表所示布尔。
SendIP
RFCCopyClassNumber
描述
EOL-
Usedaspaddingifneeded
(使用该选项后,IP头
中未使用的位会自动补0)
NOP-
Donothing.Oftenusedaspadding
AntPower©保留所有权利©技术文章
第 6 页,共 14 页
用于记录路由
数据包。 :-iorr
0f::--ioeol,其中
iorr表示记录路由,此时系统会自动
设置IP选项号为07、0f表示
指针,即,记录
一个IP地址的指针的最后一条记录,系统会自动计算IP选项的长度
用来记录
packetwasprocessedbyan
intermediatesystem
LSR-
LooseSourceRoute-让
数据包指定路由。
SID-
很少使用,携带SATNET
流标识符。
SSR-
StrictSourceRoute-与LSR相同,
但不允许额外的跃点.,,rarelyused
E-,rarelyused
通常在SENDIP中指定IP选项时,格式比较特殊。我们以RR记录路由选项为例
介绍,如果要发送一个记录三个IP的数据包,需要考虑以下几点,一个是指定IP头的长度要
包括IP选项的长度,但是要指定RR记录路由选项的指针位置和IP地址(系统原来是
自动记录IP并更新指针位置,现在必须手动指定),那么在记录三个IP包后,指针的位置应该是
3+4×3+1=16、完成后数据包的格式应该是:
IP header (IP1)
具体命令行如下:
#sendip–d–pipv4–iv4––il–––:::
–ioeol–ptcp–ts––
-表示IP头的长度为10×4为40字节,去掉标准的20字节长度,为IP
选项保留20字节。
-::: 中的前 10 位表示指针的十六进制表示。
位置,后跟三个用冒号分隔的点分十进制的IP地址
-ioeol表示以00结束IP选项,用随机数填充未使用的IP头位置。
以上部分只是取以RR记录路由IP选项为例,介绍sendip中指定IP选项的方法。当然
也可以根据自己的要求发送IP选项不符合常规的数据包。其他IP选项与此类似,但是在发送
AntPower©技术文章
第7页,共14页
之前,需要详细了解IP选项的格式,才能正确发送。
TCP数据包的格式:
根据TCP数据包的格式,SENDIP有如下命令行参数来指定对应TCP数据包中参数
的值。
SendIP
连接的源端口号
(指定十进制的TCP源端口)
- td
Destinationportnumber
(以十进制指定 TCP 目标端口)
此数据包中的第一个数据八进制数。如果设置了 SYNbitis
,这也是流
的第一个数据八进制数。 (指定TCP序号,如果不指定则随机生成)
Acknowledgment
number
32-ta
如果ACKbitisset,则extsequencenumberthesenderis
期望接收。
Dataoffset4-tt
(指定TCP头的长度
,单位为4字节)
Reserved4-tr
应该是0、注意,但是
Flags:ECN1-tfe
标志:CWR1-tfc
ECNextensionflags,见。 (指定TCP标志位,
如果要打开哪个位,在命令行参数中指定对应位的
值。如果要设置SYN状态,在命令中加-tfs1即可line.Flags:URG1-tfuUrgentpointerissignificant(同上)
Flags:ACK1-tfaAcknowledgmentfieldissignificant(同上)
Flags:PSH1-tfpPushfunction(同上)
Flags:RST1-tfrResettheconnection(同上) )
标志:SYN1-tfsSynchronizesequencenumbers(同上)
AntPower 保留所有权利©技术文章
第 8 页,共 14 页
标志:FIN1-tffNomoredatafromsender(同上)
Numberofoctetstartingfromtheoneinthe
发送方愿意
接受的确认字段
TCP 头的校验和(校验和设置为 0)、
数据和伪头,包括源和
目标 IP 地址、
TCP 头和数据的长度。
如果设置了 URGbitist,则将最后一个字节的偏移量设置为刷新数据
在此数据包中。
OptionsVariable-to...
下面的详细信息。
如果有我作为 TCP 选项,您还可以指定 TCP 选项的值。 SENDIP 支持的 TCP 选项如下表所示。
Name
SendIP
option
RFCType
Length(0present)
Description
EOL-
Usedaspaddingifneeded(填00、表示TCP结束
选项,把TCP头后面的位置用随机数填充)
NOP-
Donothing.Oftenusedaspaddingsothenext
MSS-
的最大接收段大小。仅在SYNis
时有效WSOPT-
窗口大小应按选项()的值百度发包软件}
左移。仅在
SYNis也设置时有效。
SACKOK-
连接上允许选择性确认
SACK-
选择性确认非连续
数据块。选项中的数据是
BR>(左边缘)-(右边缘)对分别给出
已收到的第一个序列号和
尚未收到的第一个序列号。
TSOPT-
时间戳。(TSval)是时间
数据包已发送,剩余4个(TSecr)
echo the TSvalofapacketthatwasreceived.TSecr
仅在ACKbitsset时有效。
如上表所示,可以看出TCP op可能只有一个单字节的参数,如-toeol和-tonop,或者
可能由一个类型号和一个长度组成,而长度参数由指定长度字节数的数据组成。使用
时,sendip会自动计算length的长度。因此,TCP选项的长度不能随意设置,而是需要设置
TC。 P 期权的价值。
AntPower 版权所有©技术文章
第 9 页,共 14 页
在设置 TCP 选项时,还需要考虑 TCP 头的长度,包括 TCP 选项的长度。
TCP选项包的格式大致如下:
Kind=3Len=3 数据:移位号
TCP选项号 TCP选项长度 TCP选项数据占1字节,总长度为3字节
具体命令行格式可以参考以下格式:
#sendip–d–pipv4–iv4––il–––:::
–ioeol–ptcp–ts––tt8–tfa0– tfs1–towscale0–
-towscale0:指设置TCP选项3、长度为自动3、TCP选项的值,即移位数为0
-toeol:表示TCP结束选项,然后用随机数填充 TCP 标头 当使用 SENDIP 设置 TCP 选项时,无法设置长度。因此,如果要设置长度不正确的数据包,则需要使用其他工具,例如 SNIFFER,在用 SNIFFER 捕获 SENDIP 发送的数据包后,再使用对应的 TCP
选项的长度即可更改为不规则值。
根据上面介绍的内容,我们已经基本掌握了用SENDIP发送各种协议数据包的方法。
当然我们也可以用它发送各种非标准的数据包,比如校验和错误,长度不正确、状态不正确
等我们需要的数据包,建议配合SNIFFER来验证SENDIP
发送的数据包是否正确,并进行针对性测试。
NESSUS是一个非常大的工具,它可以提供功能齐全的安全扫描服务,还可以提供完善的
包发送功能,构造各种格式的网络通信包。本文只关注 NESSUS 的数据包发送功能。
NESSUS由两部分组成,一部分是服务器,通常运行在LINUX/UNIX等POSIX系统
系统中,负责扫描和攻击,收集数据,另一部分是客户端,可以运行在LINUX/UNIX系统
或WINDOWS系统中,负责接收和显示数据。
如果仅用于发送数据包,则只需要服务器。
NESSUS有专门的维护网站,您可以随时到该网站下载最新的源代码,
获得全面的帮助。目前,NESSUS 的最新版本是 .
安装方法
在安装 NESSUS 之前,您必须了解 NESSUS 可能需要的支持包。一个是GTK。通常,POSIX
系统下的 NESSUS 客户端需要 GTK。如果你的系统中安装了GTK,你必须确保安装了
gtk-config程序,你可以去ftp网站下载最新的GTK程序,如果你只安装了
LINUX/UNIX下的服务器系统,不需要GTK包;另一种是OPENSSL包,如果需要
如果客户端和服务器之间的通信采用SSL方式,则需要OPENSSL包。您可以从
下载最新的 OPENSSL 包。 OPENSSL 包是可选的。
NESSUS有三种安装方法:第一种是使用LINUX下的LYNX工具直接从网上安装。这种方法很容易,但安全性低。这里就不详细介绍了。获取相关信息。第二种方法是使用 NESSUS 提供的 nessus-installer.sh 工具直接安装。这种方法简单,相对安全。第三种方法是获取源码包,然后分别编译安装。下面介绍第二种和第三种方法。
AntPower 版权所有©技术文章
第 10 页,共 14 页
使用 nessus-installer.sh 安装
从 NESSUS 网站下载最新的 nessus-installer.sh 文件到本地 LINUX 目录,然后执行
#shnessus-installer.sh
系统会自动将NESSUS安装到你的系统中,中间会要求你提供相关的提示信息,一直按
回车。
源码包方式安装
如果使用源码包方式安装,需要下载四个软件包,依次安装。四个包
如下:
nessus-libraries
libnasl
nessus-core
nessus-plugins
安装时四个包必须按顺序安装。
在安装之前,我们必须先获取上面提到的四个包,当前版本是:
nessus-libraries-
libnasl-
nessus-
nessus-
然后开始安装。
1、安装 nessus-libraries
#tar–xzvfnessus-libraries-
#cdnessus-libraries-x.x
#./configure
#make
#makeinstall
2、安装libnasl-(同上)
3、install nessus-(同上)
4、install nessus-(同上)
5、if using 如果是对于 LINUX 系统,您必须确保 /usr/local/lib 路径在 /etc/ 文件中。如果是 SOLARIS 系统,则必须执行 exportLD_LIBRARY_PATH=
$LD_LIBRARY_PATH:/usr/local/lib 命令。
6、执行 ldconfig 命令
7、如果您不想或不能使用 GTK 客户端,可以强制使用命令行模式。这时,当你执行第三步
编译nessus-core时,可以使用如下命令:
#tar–xzvfnessus-libraries-
#cdnessus-libraries-x.x
#。 /configure--disable-gtk
#make
#makeinstall
AntPower 版权所有© 技术文章
第 11 页,共 14 页
执行上述命令后,NESSUS 已安装在您的系统中.
发送数据包的方法
NESSUS通常使用脚本来控制发送的数据包。下面以发送圣诞老人攻击包为例介绍
如何使用NESSUS发送数据包。
Santa的包是通过发送TCPFlag中同时带有SYN和FIN标志的数据包,穿透防火墙,达到攻击目的,
为了使用NESSUS发送攻击包,首先定义一个脚本,在LINUX下,执行visendp命令,
输入如下内容:
srcaddr=this_host();注:自动获取IP地址当前主机的
BR>ip=forge_ip_packet(ip_v:4, 注意:IP协议版本为IPV4
ip_hl:5, 注意:IP头长度为5×4=20字节
ip_tos:0,
ip_len:40,注意:这里输入实际长度40、因为IP头和TCP头都是20
ip_id:0xABA,
ip_p:IPPROTO_TCP,注意:内部包协议为 TCP
ip_ttl:,
ip_off:0,
ip_src:srcaddr);注意:这里可以直接输入IP
port=get_host_open_port();注意:自动获取当前主机上的可用端口
if(!port)port =;注意:如果没有可用端口,会自动使用该端口
tcpip=forge_tcp_packet(ip:ip, 注意:表示IP层协议采用之前定义的IP协议packet
th_sport:port, 注意:这里可以直接输入端口
th_dport:port,注意:这里可以直接输入端口
th_flags:TH_SYN|TH_FIN,注意:设置TCP状态的SYN和FIN标志
th_seq:,
th_ack:0,
th_x2:0,
th_off:5, 注意:TCP头长度为5×4=20字节
th_win:,
th_urp:0);
result=send_packet(tcpip ,pcap_active:FALSE);
以上脚本编辑完成后,保存退出,运行如下命令:
#nasl–t目的IP地址测试脚本#nasl–
AntPower版权所有©技术文章
Page 12 of 14
通过Sniffer抓包,你会发现有一个对应的圣诞老人包。
在我使用的过程中,我发现NESSUS似乎不支持发送带有IP或TCP选项的数据包。
发送数据包的具体参数请参考
当使用SNIFFER发送数据包时,有两种方式,一种是直接使用PacketGenerator工具从
hexadecimal format ,这个方法比较难,因为要自己计算校验和,除非需要重现网络上捕获的一个16进制格式的数据包,另一种方法是使用捕获的数据包修改
,然后发送出去。具体实现方法如下。
使用PacketGenerator直接创建包
在SNIFFER中,选择Tools|PacketGenerator菜单,系统会弹出如下窗口:
按下图中红框内的按钮,系统会弹出一个对话框构建包内容,如下图:
AntPower版权所有©技术文章
第13页,共14页
在上图中,可以输入包的内容,也可以指定包裹数量和包裹长度。
使用抓包发包
使用抓包修改,可以避免大量的操作和输入,只需要改变需要改的地方,
然后发送出去.
如上图,根据包的一般要求,用其他工具制作包后,使用SNIFFER抓包,或者直接抓包
网络上的可疑包,然后点击使用鼠标邮件,弹出如上图所示的快捷菜单,从中选择
并选择SendCurrentFrame菜单,系统会弹出包裹发送窗口,如下图:
AntPower 版权所有©技术文章
Page 14 of 14
根据需要更改包裹内容并发送。需要注意的是,如果头部中的IP地址或其他内容发生变化,需要更新校验和,而MAC或选项的变化不需要改变校验和。
3、总结
通过对比前面三个包分发工具,我们发现每个工具都有自己的优缺点。 SENDIP比
更短更实用,更适合日常测试使用。 , SNIFFER打包工具是最免费的,可以发送
任何可能的数据包,NESSUS工具功能更全面,但在打包发送方面不如SENDIP,所以如果需要测试,建议使用, SENDIP和SNIFFER要结合使用,如果要使用
扫描等其他功能,可以使用NESSUS工具。
SENDIP,可以在各种UNIX或LINUX版本上运行。我使用两个版本,SLACKWARE8、0 和
REDHAT9、0、
您可以从网站上下载最新的源代码或RPM
包,当前版本是2、5、源代码包的大小只有。
安装过程
SENDIP的安装过程非常简单。首先从上面介绍的网站下载最新的源码包,目前是
sendip-。
在LINUX系统中执行:
#tar–xzvfsendip-
#cdsendip-2、5
#make
#makeinstall
会在/usr/local/bin目录下生成系统一个SENDIP命令文件,同时在/usr/local/lib目录
下创建一个sendip目录,在其下放置ipv4、so、ipv6、so、tcp.so等协议相关的模块文件.
通过在命令行运行这个文件,我们可以生成我们需要的各种IP包,也可以通过运行
脚本自动发送大量IP包。
AntPower 版权所有©技术文章
第 3 页,共 14 页
报文发送方式
SENDIP 可以发送多种格式,如 NTP、BGP、RIP、RIPng、TCP、UDP、ICMP、IPv4 和 IPv6
数据包,SENDIP本身以模块的形式发送各种协议的数据包,协议类型用-p参数指定。要发送各个协议的数据包,必须对协议的数据包格式有所了解。通常,发送
TCP/UDP/ICMP数据包时,必须将它们封装在IP包中才能发送出去。在本节中,我们将以 TCP
数据包为例。
SENDIP 的命令行格式如下所述。以下是直接执行 SENDIP 时的输出:
用法:sendip[-v][-ddata][-h][-fdatafile][-pmole][moleoptions] hostname
-ddataaddthisdataasastringtotheendofthepacket
Datacanbe :
rNtogenerateNrandom(ish)databytes;
0followedbyoctaldigits;
anyotherstreamofbytes(用指定字节的随机数据填充数据包中的数据段)
-fdatafilereadpacketdatafromfile(将数据段填入带有指定数据文件内容的数据包)
-hprintthismessage(输出帮助信息)
-pmoleloadthespecifiedmole(见下文)(指定协议类型)
-vbeverbose(运行时输出)详细运行信息,如果没有
(协议类型以模块的形式指定,使用 -p 参数指定)
Moles 按顺序加载 -p 选项出现。
每个moles 的headers 立即放置在
finalpacket 中previos 模型的headers 中。例如,toembedbgpin sidetcpinsideipv4,do
sendip-pipv4-ptcp-pbgp....
Molesavailableatcompiletime:
(支持的协议类型)
通常的执行格式如下:
#sendip–v–d --pipv4--iv4--ih5--il---ptcp--ts--
-v:运行时输出详细的运行信息,如果不指定,运行时不输出任何信息
--d:使用64字节填充IP包中随机取值的数据段
--pipv4:指定协议类型为IP协议(IP协议有自己对应的参数,以i开头)
--iv4:协议版本为4、即IPV4
–ih5:指定IP头长度为5×4=20字节
–il:指定IP包总长度为字节
–:指定源地址IP 包
--:指定 IP 包的目的地址 对应参数,以 t 开头)
--ts:指定 TCP 包的源端口
--:指定 TCP 的目的端口packet as 23
-tt8:指定 TCP 数据包的偏移量,即t 即 TCP header Length,如果没有 TCP 选项,则为 5、即 20 字节
,有 TCP 选项时需要增加。
:指定发送数据包的目的主机
以上部分是使用SENDIP发送一个简单的TCP数据包的方法。下面结合IP和TCP数据
包的格式,详细介绍IP和TCP协议的各种参数。
各种协议的具体报文格式请参考TCP/IP协议中各种协议报文格式的介绍。下面
我们只介绍IP包的格式和TCP包的格式:
IP包的格式:
根据IP包的格式,SENDIP有如下命令行参数来指定Fieldname
Size
(bits)
SendIP
Version4-ivAlways4(对应“4位版本”,通常值为4、表示IPV4)
Headerlength4- ih
IPheaderlength,measuredinwords,5ifthereare
nooptions(对应“4位版本”“Header length”,表示IP头的长度,32位或4个
字节。如果没有IP参数,
一般为5、表示包头长度为20字节,如果有
,需要调整值)
Typeof
Service/Differentiated
Services
8-iy
服务类型(TOS)字段由 8 位组成,包括 3 位
优先级字段(现在忽略)、4 位 TOS 子字段和 1 位未使用但必须设置为 0、4 位 TOS 子字段表示发送最小
延迟、最大吞吐量和最高可靠性,分别是性和最小成本。 4 位中只有 1 位可以设置为
。使用时只需设置相应位即可计算十进制
值。要设置最大吞吐量位(),只需添加参数iy8、
-ilTotallengthofIPpacketincludingheaderanddata,
AntPower Copyright © Technical Article
Page 5 of 14
measuredinoctets(指定IP包的总长度,包括IP头
部分和数据部分,8位bytes是单位,最长的是)
用于帮助重新组装碎片包(指定IP包的标识号,用于帮助重新组装分片的IP包)
-:reserved,shouldbe0
-:don'tfragment (可以指定-ifdx, next可以是0, 1 or r) Flags3
-:morefragmets (可以指定-ifmx, 下面可以是0, 1 or r)
-if
其中构造的数据报这个片段
属于,从0开始测量(在8个字节长度内,指定段偏移)
TimetoLive8-it
在丢弃之前
数据包可以通过的路由器数量(值范围从0到,指定TTL,表示
可以通过的路由器数量,用于防止数据包在循环路径上无休止地通过
)
Protocol8-ip
Protocolassociatedwiththedata.Seeianaforan
uptodatelistofassignednumbers( 用于定义封装在IP包
中的上层协议的协议号。例如TCP为6、可以从IANA网站获取最新的协议号表
ChecksumoftheIPheaderdata(withchecksumsetto
zero)(值可以指定IP头的校验和,通常由SENDIP自动生成
,不要指定这个参数,除非你想发送一个错误的校验和-isDuhh...(源地址,用点分十进制表示)
-idCabbage(目的地址,点分十进制表示)
OptionsVariable-io...
belowfordetails(定义各种IP选项,如果定义了IP
选项,则前面的长度值IP 头应包含 IP 选项的长度,
不带 IP 选项,值为 20、带 IP 选项,
值可以设置,如果要故意创建不匹配的数据包,不符合)
如果有IP选项,也可以指定IP选项的值。SENDIP支持的IP选项如下表所示布尔。
SendIP
RFCCopyClassNumber
描述
EOL-
Usedaspaddingifneeded
(使用该选项后,IP头
中未使用的位会自动补0)
NOP-
Donothing.Oftenusedaspadding
AntPower©保留所有权利©技术文章
第 6 页,共 14 页
用于记录路由
数据包。 :-iorr
0f::--ioeol,其中
iorr表示记录路由,此时系统会自动
设置IP选项号为07、0f表示
指针,即,记录
一个IP地址的指针的最后一条记录,系统会自动计算IP选项的长度
用来记录
packetwasprocessedbyan
intermediatesystem
LSR-
LooseSourceRoute-让
数据包指定路由。
SID-
很少使用,携带SATNET
流标识符。
SSR-
StrictSourceRoute-与LSR相同,
但不允许额外的跃点.,,rarelyused
E-,rarelyused
通常在SENDIP中指定IP选项时,格式比较特殊。我们以RR记录路由选项为例
介绍,如果要发送一个记录三个IP的数据包,需要考虑以下几点,一个是指定IP头的长度要
包括IP选项的长度,但是要指定RR记录路由选项的指针位置和IP地址(系统原来是
自动记录IP并更新指针位置,现在必须手动指定),那么在记录三个IP包后,指针的位置应该是
3+4×3+1=16、完成后数据包的格式应该是:
IP header (IP1)
具体命令行如下:
#sendip–d–pipv4–iv4––il–––:::
–ioeol–ptcp–ts––
-表示IP头的长度为10×4为40字节,去掉标准的20字节长度,为IP
选项保留20字节。
-::: 中的前 10 位表示指针的十六进制表示。
位置,后跟三个用冒号分隔的点分十进制的IP地址
-ioeol表示以00结束IP选项,用随机数填充未使用的IP头位置。
以上部分只是取以RR记录路由IP选项为例,介绍sendip中指定IP选项的方法。当然
也可以根据自己的要求发送IP选项不符合常规的数据包。其他IP选项与此类似,但是在发送
AntPower©技术文章
第7页,共14页
之前,需要详细了解IP选项的格式,才能正确发送。
TCP数据包的格式:
根据TCP数据包的格式,SENDIP有如下命令行参数来指定对应TCP数据包中参数
的值。
SendIP
连接的源端口号
(指定十进制的TCP源端口)
- td
Destinationportnumber
(以十进制指定 TCP 目标端口)
此数据包中的第一个数据八进制数。如果设置了 SYNbitis
,这也是流
的第一个数据八进制数。 (指定TCP序号,如果不指定则随机生成)
Acknowledgment
number
32-ta
如果ACKbitisset,则extsequencenumberthesenderis
期望接收。
Dataoffset4-tt
(指定TCP头的长度
,单位为4字节)
Reserved4-tr
应该是0、注意,但是
Flags:ECN1-tfe
标志:CWR1-tfc
ECNextensionflags,见。 (指定TCP标志位,
如果要打开哪个位,在命令行参数中指定对应位的
值。如果要设置SYN状态,在命令中加-tfs1即可line.Flags:URG1-tfuUrgentpointerissignificant(同上)
Flags:ACK1-tfaAcknowledgmentfieldissignificant(同上)
Flags:PSH1-tfpPushfunction(同上)
Flags:RST1-tfrResettheconnection(同上) )
标志:SYN1-tfsSynchronizesequencenumbers(同上)
AntPower 保留所有权利©技术文章
第 8 页,共 14 页
标志:FIN1-tffNomoredatafromsender(同上)
Numberofoctetstartingfromtheoneinthe
发送方愿意
接受的确认字段
TCP 头的校验和(校验和设置为 0)、
数据和伪头,包括源和
目标 IP 地址、
TCP 头和数据的长度。
如果设置了 URGbitist,则将最后一个字节的偏移量设置为刷新数据
在此数据包中。
OptionsVariable-to...
下面的详细信息。
如果有我作为 TCP 选项,您还可以指定 TCP 选项的值。 SENDIP 支持的 TCP 选项如下表所示。
Name
SendIP
option
RFCType
Length(0present)
Description
EOL-
Usedaspaddingifneeded(填00、表示TCP结束
选项,把TCP头后面的位置用随机数填充)
NOP-
Donothing.Oftenusedaspaddingsothenext
MSS-
的最大接收段大小。仅在SYNis
时有效WSOPT-
窗口大小应按选项()的值
左移。仅在
SYNis也设置时有效。
SACKOK-
连接上允许选择性确认
SACK-
选择性确认非连续
数据块。选项中的数据是
BR>(左边缘)-(右边缘)对分别给出
已收到的第一个序列号和
尚未收到的第一个序列号。
TSOPT-
时间戳。(TSval)是时间
数据包已发送,剩余4个(TSecr)
echo the TSvalofapacketthatwasreceived.TSecr
仅在ACKbitsset时有效。
如上表所示,可以看出TCP op可能只有一个单字节的参数,如-toeol和-tonop,或者
可能由一个类型号和一个长度组成,而长度参数由指定长度字节数的数据组成。使用
时,sendip会自动计算length的长度。因此,TCP选项的长度不能随意设置,而是需要设置
TC。 P 期权的价值。
AntPower 版权所有©技术文章
第 9 页,共 14 页
在设置 TCP 选项时,还需要考虑 TCP 头的长度,包括 TCP 选项的长度。
TCP选项包的格式大致如下:
Kind=3Len=3 数据:移位号
TCP选项号 TCP选项长度 TCP选项数据占1字节,总长度为3字节
具体命令行格式可以参考以下格式:
#sendip–d–pipv4–iv4––il–––:::
–ioeol–ptcp–ts––tt8–tfa0– tfs1–towscale0–
-towscale0:指设置TCP选项3、长度为自动3、TCP选项的值,即移位数为0
-toeol:表示TCP结束选项,然后用随机数填充 TCP 标头 当使用 SENDIP 设置 TCP 选项时,无法设置长度。因此,如果要设置长度不正确的数据包,则需要使用其他工具,例如 SNIFFER,在用 SNIFFER 捕获 SENDIP 发送的数据包后,再使用对应的 TCP
选项的长度即可更改为不规则值。
根据上面介绍的内容,我们已经基本掌握了用SENDIP发送各种协议数据包的方法。
当然我们也可以用它发送各种非标准的数据包,比如校验和错误,长度不正确、状态不正确
等我们需要的数据包,建议配合SNIFFER来验证SENDIP
发送的数据包是否正确,并进行针对性测试。
NESSUS是一个非常大的工具,它可以提供功能齐全的安全扫描服务,还可以提供完善的
包发送功能,构造各种格式的网络通信包。本文只关注 NESSUS 的数据包发送功能。
NESSUS由两部分组成,一部分是服务器,通常运行在LINUX/UNIX等POSIX系统
系统中,负责扫描和攻击,收集数据,另一部分是客户端,可以运行在LINUX/UNIX系统
或WINDOWS系统中,负责接收和显示数据。
如果仅用于发送数据包,则只需要服务器。
NESSUS有专门的维护网站,您可以随时到该网站下载最新的源代码,
获得全面的帮助。目前,NESSUS 的最新版本是 .
安装方法
在安装 NESSUS 之前,您必须了解 NESSUS 可能需要的支持包。一个是GTK。通常,POSIX
系统下的 NESSUS 客户端需要 GTK。如果你的系统中安装了GTK,你必须确保安装了
gtk-config程序,你可以去ftp网站下载最新的GTK程序,如果你只安装了
LINUX/UNIX下的服务器系统,不需要GTK包;另一种是OPENSSL包,如果需要
如果客户端和服务器之间的通信采用SSL方式,则需要OPENSSL包。您可以从
下载最新的 OPENSSL 包。 OPENSSL 包是可选的。
NESSUS有三种安装方法:第一种是使用LINUX下的LYNX工具直接从网上安装。这种方法很容易,但安全性低。这里就不详细介绍了。获取相关信息。第二种方法是使用 NESSUS 提供的 nessus-installer.sh 工具直接安装。这种方法简单,相对安全。第三种方法是获取源码包,然后分别编译安装。下面介绍第二种和第三种方法。
AntPower 版权所有©技术文章
第 10 页,共 14 页
使用 nessus-installer.sh 安装
从 NESSUS 网站下载最新的 nessus-installer.sh 文件到本地 LINUX 目录,然后执行
#shnessus-installer.sh
系统会自动将NESSUS安装到你的系统中,中间会要求你提供相关的提示信息,一直按
回车。
源码包方式安装
如果使用源码包方式安装,需要下载四个软件包,依次安装。四个包
如下:
nessus-libraries
libnasl
nessus-core
nessus-plugins
安装时四个包必须按顺序安装。
在安装之前,我们必须先获取上面提到的四个包,当前版本是:
nessus-libraries-
libnasl-
nessus-
nessus-
然后开始安装。
1、安装 nessus-libraries
#tar–xzvfnessus-libraries-
#cdnessus-libraries-x.x
#./configure
#make
#makeinstall
2、安装libnasl-(同上)
3、install nessus-(同上)
4、install nessus-(同上)
5、if using 如果是对于 LINUX 系统,您必须确保 /usr/local/lib 路径在 /etc/ 文件中。如果是 SOLARIS 系统,则必须执行 exportLD_LIBRARY_PATH=
$LD_LIBRARY_PATH:/usr/local/lib 命令。
6、执行 ldconfig 命令
7、如果您不想或不能使用 GTK 客户端,可以强制使用命令行模式。这时,当你执行第三步
编译nessus-core时,可以使用如下命令:
#tar–xzvfnessus-libraries-
#cdnessus-libraries-x.x
#。 /configure--disable-gtk
#make
#makeinstall
AntPower 版权所有© 技术文章
第 11 页,共 14 页
执行上述命令后,NESSUS 已安装在您的系统中.
发送数据包的方法
NESSUS通常使用脚本来控制发送的数据包。下面以发送圣诞老人攻击包为例介绍
如何使用NESSUS发送数据包。
Santa的包是通过发送TCPFlag中同时带有SYN和FIN标志的数据包,穿透防火墙,达到攻击目的,
为了使用NESSUS发送攻击包,首先定义一个脚本,在LINUX下,执行visendp命令,
输入如下内容:
srcaddr=this_host();注:自动获取IP地址当前主机的
BR>ip=forge_ip_packet(ip_v:4, 注意:IP协议版本为IPV4
ip_hl:5, 注意:IP头长度为5×4=20字节
ip_tos:0,
ip_len:40,注意:这里输入实际长度40、因为IP头和TCP头都是20
ip_id:0xABA,
ip_p:IPPROTO_TCP,注意:内部包协议为 TCP
ip_ttl:,
ip_off:0,
ip_src:srcaddr);注意:这里可以直接输入IP
port=get_host_open_port();注意:自动获取当前主机上的可用端口
if(!port)port =;注意:如果没有可用端口,会自动使用该端口
tcpip=forge_tcp_packet(ip:ip, 注意:表示IP层协议采用之前定义的IP协议packet
th_sport:port, 注意:这里可以直接输入端口
th_dport:port,注意:这里可以直接输入端口
th_flags:TH_SYN|TH_FIN,注意:设置TCP状态的SYN和FIN标志
th_seq:,
th_ack:0,
th_x2:0,
th_off:5, 注意:TCP头长度为5×4=20字节
th_win:,
th_urp:0);
result=send_packet(tcpip ,pcap_active:FALSE);
以上脚本编辑完成后,保存退出,运行如下命令:
#nasl–t目的IP地址测试脚本#nasl–
AntPower版权所有©技术文章
Page 12 of 14
通过Sniffer抓包,你会发现有一个对应的圣诞老人包。
在我使用的过程中,我发现NESSUS似乎不支持发送带有IP或TCP选项的数据包。
发送数据包的具体参数请参考
当使用SNIFFER发送数据包时,有两种方式,一种是直接使用PacketGenerator工具从
hexadecimal format ,这个方法比较难,因为要自己计算校验和,除非需要重现网络上捕获的一个16进制格式的数据包,另一种方法是使用捕获的数据包修改
,然后发送出去。具体实现方法如下。
使用PacketGenerator直接创建包
在SNIFFER中,选择Tools|PacketGenerator菜单,系统会弹出如下窗口:
按下图中红框内的按钮,系统会弹出一个对话框构建包内容,如下图:
AntPower版权所有©技术文章
第13页,共14页
在上图中,可以输入包的内容,也可以指定包裹数量和包裹长度。
使用抓包发包
使用抓包修改,可以避免大量的操作和输入,只需要改变需要改的地方,
然后发送出去.
如上图,根据包的一般要求,用其他工具制作包后,使用SNIFFER抓包,或者直接抓包
网络上的可疑包,然后点击使用鼠标邮件,弹出如上图所示的快捷菜单,从中选择
并选择SendCurrentFrame菜单,系统会弹出包裹发送窗口,如下图:
AntPower 版权所有©技术文章
Page 14 of 14
根据需要更改包裹内容并发送。需要注意的是,如果头部中的IP地址或其他内容发生变化,需要更新校验和,而MAC或选项的变化不需要改变校验和。
3、总结
通过对比前面三个包分发工具,我们发现每个工具都有自己的优缺点。 SENDIP比
更短更实用,更适合日常测试使用。 , SNIFFER打包工具是最免费的,可以发送
任何可能的数据包,NESSUS工具功能更全面,但在打包发送方面不如SENDIP,所以如果需要测试,建议使用, SENDIP和SNIFFER要结合使用,如果要使用
扫描等其他功能,可以使用NESSUS工具。
发送长度大于的包的工具yixianfc.com