zoukankan      html  css  js  c++  java
  • 三款经常使用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 的安装过程非常简单,首先从前面介绍的站点中下载最新的源代码包,眼下为
    sendip-2.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 包。
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第3 页共14 页
    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 icmp tcp udp bgp 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 包的目的地址
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第4 页共14 页
    –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,
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第5 页共14 页
    measured in octets(指定IP 包的总长度,包含IP 头部
    分和数据部分,以8 位字节为单位,最长为65535)
    Identification 16 -ii
    Used to help reassembled fragmented packets(指定IP
    包的标识号,用来帮助又一次组装分段的IP 包)
    -ifr 1 bit: reserved, should be 0
    -ifd 1 bit: don't fragment(可指定-ifd x,下可为0、1 或r) Flags 3
    -ifm 1 bit: more fragmets(可指定-ifm x,下可为0、1 或r)
    Fragment offset 13 -if
    Where in the reconstructed datagram this fragment
    belongs, measured in 64bit words starting from 0(以8
    字节长度为单位,指定段偏移量)
    Time to Live 8 -it
    Number of routers the packet can pass through before
    being discarded(值的范围从0 到255,指定TTL,表
    示该包可通过的路由器的数目,用于防止包在循环路
    径上无休止地传递)
    Protocol 8 -ip
    Protocol associated with the data. See iana for an
    uptodate list of assigned numbers(用于定义IP 包内部
    封装的上层协议的协议号,如TCP 为6,可在IANA
    的站点上
    http://www.iana.org/assignments/protocol-numbers
    获得最新的协议号表)
    Header checksum 16 -ic
    Checksum of the IP header data (with checksum set to
    zero)(可指定IP 首部校验和的值,通常由SENDIP 自
    动生成,不指定该參数,除非要发出带有错误校验和
    的包)
    Source Address 32 -is Duhh...(源地址,以点分十进制方式表示)
    Destination Address 32 -id Cabbage(目的地址,以点分十进制方式表示)
    Options Variable -io...
    No options are required. Any number can be added. See
    below for details(定义各种IP 选项,假设定义了IP
    选项,则前面的IP 头的长度值要包含IP 选项的长度,
    不带IP 选项时,该值为20,带IP 选项时,可设定该
    值,假设要有益制造不匹配的包,可不符合规范。)
    假设有IP 选项,还可指定IP 选项的值,SENDIP 支持的IP 选项例如以下表所看到的。
    Name
    SendIP
    option
    RFC Copy Class Number
    Type
    (see
    above)
    Length
    (0 not
    present)
    Description
    EOL -ioeol 791 0 0 0 0 0
    Used as padding if needed
    (使用该选项后,会自己主动在IP 头
    中未用到的位补0)
    NOP -ionop 791 0 0 1 1 0
    Do nothing. Often used as padding
    so the next option starts on a 32 bit
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第6 页共14 页
    boundary
    RR -iorr 791 0 0 7 7 variable
    Used to record the route of a
    packet.(记录包走过的每一个路由
    器, 通经常使使用方法是: -iorr
    0f:ff.ff.ff.ff:10.0.0.234 –ioeol,当中
    iorr 表示记录路由,此时系统会自
    动将IP 选项号置为07,0f 表示指
    针,即记录的最后一个IP 地址的
    指针,系统会自己主动运算该IP 选项
    的长度)
    TS -iots 791 0 2 4 68 variable
    Used to record the time at which a
    packet was processed by an
    intermediate system
    LSR -iolsr 791 1 0 3 131 vairable
    Loose Source Route - let the
    source specify the route for a
    packet.
    SID -iosid 791 1 0 8 136 4
    Rarely used, carries the SATNET
    stream identifier.
    SSR -iossr 791 1 0 9 137 variable
    Strict Source Route - same as LSR,
    but extra hops are not allowed.
    SEC
    791,
    1108
    1 0 2 130 variable Security, rarely used
    E-SEC 1108 1 0 5 133 variable Extended Security, rarely used
    通常在SENDIP 中指定IP 选项时,格式比較特别,以下我们以RR 记录路由选项为例
    介绍一下,假设要发送一个记录三个IP 的数据包,须要考虑例如以下,一是指定IP 头的长度要
    包含IP 选项的长度,而是要指定RR 记录路由选项的指针位置和IP 地址(本来是由系统自
    动记录IP 和更新指针位置,但如今必须手工指定),那么记录三个IP 包后,指针的位置应
    是3+4×3+1=16,造好后,数据包的格式应该例如以下:
    IP 头07 15 16 10.0.0.234(IP1) 20.0.0.234(IP2) 30.0.0.234(IP3) 00(ioeol) tcp
    20B RR len ptr 4bytes 4bytes 4bytes Ptr
    具体命令行例如以下:
    #sendip –d r64 –p ipv4 –iv 4 –ih 10 –il 128 –is 10.0.0.1 –id 30.0.0.1 –iorr 10:10.0.0.234:20.0.0.234:30.0.0.234
    –ioeol –p tcp –ts 1379 –td 23 –tt 8 30.0.0.1
    -ih 10 表示IP 头的长度为10×4 为40 个字节,去除标准的20 个字节长度,为IP
    选项预留为20 个字节
    -iorr 10:10.0.0.234:20.0.0.234:30.0.0.234 中第一个10 表示用16 进制表示的指针的
    位置,后面为用冒号分隔的三个用点分十进制表示的IP 地址
    -ioeol 表示用00 结束IP 选项,并用随机数填充后面未用的IP 头位置
    以上部分仅仅是以RR 记录路由IP 选项为例,介绍了sendip 中指定IP 选项的方法,当然
    也能够依据自己的要求发送IP 选项不符合常规的数据包。其它的IP 选项与此雷同,但发送
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第7 页共14 页
    前须要具体了解IP 选项的格式,才可正确发送。
    TCP 数据包的格式:
    依据TCP 数据包的格式,SENDIP 有例如以下命令行參数能够指定相应的TCP 数据包中參
    数的值。
    Field name
    Size
    (bits)
    SendIP
    option
    Description
    Source port 16 -ts
    Source port number for the connection
    (以十进制的方式指定TCP 原端口)
    Destination port 16 -td
    Destination port number
    (以十进制的方式指定TCP 目的端口)
    Sequence number 32 -tn
    Number of the first data octet in this packet. If SYN bit is
    set, this is the number of the first data octet of the stream
    too.(指定TCP 序列号,假设不指定则随机产生)
    Acknowledgment
    number
    32 -ta
    If ACK bit is set, the next sequence number the sender is
    expecting to receive.
    Data offset 4 -tt
    Length of TCP header in 32 bit words(指定TCP 头的长
    度,单位是以32bits 也就是4 字节为单位)
    Reserved 4 -tr
    Should be 0. Note, rfc793 defines this as a 6 bit field, but
    the last 2 are used by rfc2481 for ECN as below.
    Flags: ECN 1 -tfe
    Flags: CWR 1 -tfc
    ECN extension flags, see rfc2481. (指定TCP 标志位,
    假设要打开哪一位,就在命令行參数中指定相应位的
    值,如要设置SYN 状态,仅仅需在命令行加入-tfs 1 就可以

    Flags: URG 1 -tfu Urgent pointer is significant(同上)
    Flags: ACK 1 -tfa Acknowledgment field is significant(同上)
    Flags: PSH 1 -tfp Push function(同上)
    Flags: RST 1 -tfr Reset the connection(同上)
    Flags: SYN 1 -tfs Synchronize sequence numbers(同上)
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第8 页共14 页
    Flags: FIN 1 -tff No more data from sender(同上)
    Window 16 -tw
    Number of octet starting from the one in the
    Acknowledgement field that the sender is willing to
    accept
    Checksum 16 -tc
    Checksum of the TCP header (with checksum set to 0),
    data, and a psuedo-header including the source and
    destination IP addresses, IP protocol field and a 16 bit
    length of the TCP header and data.
    Urgent pointer 16 -tu
    If URG bit is set, tHe offset of the last octet of urgent data
    in this packet.
    Options Variable -to...
    No options are required. Any number can be added. See
    below for details.
    假设有TCP 选项,还可指定TCP 选项的值,SENDIP 支持的TCP 选项例如以下表所看到的。
    Name
    SendIP
    option
    RFC Type
    Length (0
    not
    present)
    Description
    EOL -toeol 793 0 0
    Used as padding if needed(用00 填充,表示TCP
    选项结束,把TCP 头后面的位置用随机数填充)
    NOP -tonop 793 1 0
    Do nothing. Often used as padding so the next
    option starts on a 32 bit boundary
    MSS -tomss 793 2 4
    Specify the maximum recieve segment size of the
    sender as a 16 bit number. Only valid when SYN is
    also set
    WSOPT -towscale 1323 3 3
    The window size should be leftshifted by the value
    of the option (an 8 bit number). Only valid when
    SYN is also set.
    SACKOK -tosackok 2018 4 2
    Selective Acknowledgement is permitted on this
    connection
    SACK -tosack 2018 5 variable
    Selective Acknowledgement of non-contiguous
    blocks of data. The data in the option is a series of
    (left edge)-(right edge) pairs giving, respectively,
    the first sequence number the has been recieved and
    the first that hasn't.
    TSOPT -tots 1323 8 10
    Timestamp. The first 4 bytes (TSval) are the time
    that the packet was sent, the remaining 4 (TSecr)
    echo the TSval of a packet that was recieved. TSecr
    is only valid when the ACK bit is set.
    从上表所看到的,能够看出,TCP 选项可能仅仅有一个单字节參数,如-toeol 和-tonop,也可
    能由一个Type 号和一个length 长度以及该length 长度指定的字节数的数据组成的參数,使
    用时sendip 会自己主动运算length 的长度,所以,不能任意设定TCP 选项的长度,但须要设定
    TCP 选项的值。
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第9 页共14 页
    在设定TCP 选项时,同样要考虑到TCP 头的长度要包含TCP 选项的长度。
    TCP 选项数据包的格式大致例如以下:
    Kind=3 Len=3 数据:移位数
    TCP 选项号TCP 选项长度TCP 选项数据占一个字节,总长度为三个字节
    具体命令行格式可參照例如以下格式:
    #sendip –d r64 –p ipv4 –iv 4 –ih 10 –il 128 –is 10.0.0.1 –id 30.0.0.1 –iorr 10:10.0.0.234:20.0.0.234:30.0.0.234
    –ioeol –p tcp –ts 1379 –td 23 –tt 8 –tfa 0 –tfs 1 –towscale 0 –toeol 30.0.0.1
    -towscale 0 :指设置TCP 选项3,长度为自己主动3,TCP 选项的值即移位数为0
    -toeol :表示TCP 选项结束,后面用随机数填满TCP 头
    由于用SENDIP 设定TCP 选项时,不能设定长度,所以,假设要设定长度不对的包,
    还要借助其它工具,如SNIFFER,用SNIFFER 抓到SENDIP 发送的包后,再将相应的TCP
    选项的长度改为不规则的值就可以。
    依据前面介绍的内容,我们已经基本能够掌握用SENDIP 发送各种协议数据包的方法,
    当然我们还能够利用他发送各种不符合标准的数据包,如校验和错误、长度不对、状态位
    不对等各种我们须要的数据包,在使用时,建议与SNIFFER 搭配使用,以验证SENDIP
    发出的包是否正确,进行有针对性的測试。
    2.2. NESSUS 工具
    NESSUS 是一个非常庞大的工具,它能够提供功能完好的安全扫描服务,还能够提供全
    面的发包功能,用以构造各种格式的网络通信包。本篇仅仅关注NESSUS 的发包功能。
    NESSUS 由两个部分组成,一部分是server,通常执行在POSIX 系统如LINUX/UNIX
    系统中,负责扫描和攻击,并收集数据,还有一部分是client,能够执行在LINUX/UNIX 系
    统或WINDOWS 系统中,负责接收和显示数据。
    假设仅仅是用来发包,则仅仅须要服务端就可以。
    NESSUS 有专门的维护站点,能够随时到http://www.nessus.org 站点下载最新的源代码,
    并获得全面的帮助。眼下,NESSUS 最新的版本号为2.0.8a。
    2.2.1. NESSUS 安装方法
    安装NESSUS 前要知道NESSUS 可能须要的支撑软件包,一个是GTK,通常POSIX
    系统下的NESSUS client须要GTK,假设你的系统安装了GTK,则必须确保安装了
    gtk-config 程序,可到ftp://ftp.gimp.org/pub/gtk/v1.2 站点下载最新的GTK 程序,假设仅仅在
    LINUX/UNIX 系统下安装服务端,则能够不须要GTK 包;还有一个是OPENSSL 包,假设希
    望client和服务端的通信採用SSL 方式,则须要OPENSSL 包,可到http://www.openssl.org/
    下载最新的OPENSSL 包,OPENSSL 包是可选的。
    NESSUS 有三种安装方法:第一种是利用LINUX 下的LYNX 工具直接从网上安装,这
    种方法非常easy,但安全性低,在此不予具体介绍,可到NESSUS 站点上获取相关信息。第
    二种方法是使用NESSUS 提供的nessus-installer.sh 工具,直接安装,这样的方法简单且安全性
    比較高。第三种方法是获取源代码包,然后分别编译再进行安装。以下分别介绍第二种和第三
    种方法。
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第10 页共14 页
    2.2.1.1. 採用nessus-installer.sh 方式安装
    从NESSUS 站点下载最新的nessus-installer.sh 文件到本地LINUX 文件夹,然后执行
    #sh nessus-installer.sh
    系统会自己主动安装NESSUS 到你的系统中,中间会须要你提供相关的提示信息,一直按
    回车就可以。
    2.2.1.2. 採用源代码包方式安装
    假设採用源代码包方式进行安装,须要下载四个软件包,并按顺序进行安装。四个软件包
    分别例如以下:
    nessus-libraries
    libnasl
    nessus-core
    nessus-plugins
    安装时必须按顺序安装这四个软件包。
    安装前,我们必须获得上面所说的四个软件包,眼下版本号为2.0.8a:
    nessus-libraries-x.x.tar.gz
    libnasl-x.x.tar.gz
    nessus-core.x.x.tar.gz
    nessus-plugins.x.x.tar.gz
    然后開始进行安装。
    1. 安装nessus-libraries
    #tar –xzvf nessus-libraries-x.x.tar.gz
    #cd nessus-libraries-x.x
    #./configure
    #make
    #make install
    2. 安装libnasl-x.x.tar.gz (执行与上面同样的操作)
    3. 安装nessus-core.x.x.tar.gz(执行与上面同样的操作)
    4. 安装nessus-plugins.x.x.tar.gz (执行与上面同样的操作)
    5. 假设使用的是LINUX 系统,必须确保/usr/local/lib 路径在/etc/ld.so.conf 文件里,如
    果是SOLARIS 系统, 必须执行export LD_LIBRARY_PATH=
    $LD_LIBRARY_PATH :/usr/local/lib 命令。
    6. 执行ldconfig 命令
    7. 假设不想或不能使用GTK 的client,可强制使用命令行方式,这时,在执行第三
    步编译nessus-core 时,能够使用例如以下命令:
    #tar –xzvf nessus-libraries-x.x.tar.gz
    #cd nessus-libraries-x.x
    #./configure --disable-gtk
    #make
    #make install
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第11 页共14 页
    执行以上命令后,NESSUS 就已经安装在您的系统中了。
    2.2.2. NESSUS 的发包方法
    NESSUS 通常採用脚本方式控制发出的包,以下我们以发送圣诞老人攻击包为例,来介
    绍怎样利用NESSUS 发送数据包。
    圣诞老人包是通过发送TCP Flag 中同一时候有SYN 和FIN 标志的数据包,穿透防火墙,
    来达到攻击的目的。
    为使用NESSUS 发送攻击包,首先要定义一个脚本,在LINUX 下,执行vi sendp 命令,
    输入例如以下内容:
    srcaddr=this_host(); 注:自己主动获取当前主机的IP 地址
    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 : 255,
    ip_off : 0,
    ip_src : srcaddr); 注:可在此直接输入IP
    port = get_host_open_port(); 注:自己主动获取当前主机上的可用端口
    if(!port)port = 139; 注:假设没有可用端口,就自己主动使用139 端口
    tcpip = forge_tcp_packet( ip : ip, 注:表示IP 层协议採用前面定义的IP 协议包
    th_sport : port, 注:可在这里直接输入端口
    th_dport : port, 注:可在这里直接输入端口
    th_flags : TH_SYN|TH_FIN, 注:设置TCP 状态的SYN 和FIN 标志位
    th_seq : 0xF1C,
    th_ack : 0,
    th_x2 : 0,
    th_off : 5, 注:TCP 头的长度位5×4=20 字节
    th_win : 512,
    th_urp : 0);
    result = send_packet(tcpip,pcap_active:FALSE);
    编辑完上面的脚本后,保存退出,执行例如以下命令:
    #nasl –t 目的IP 地址測试脚本
    如:
    #nasl –t 10.0.0.227 sendp
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第12 页共14 页
    通过Sniffer 抓包,就会发现有相应的圣诞老人包。
    在我的使用过程中,发现NESSUS 好像不支持发送带有IP 或TCP 选项的包。
    具体发包的參数可參考http://www.nessus.org/doc/nasl.html
    2.3. SNIFFER 工具
    用SNIFFER 发包时,有两种方式,一种是直接利用Packet Generator 工具,从0 開始用
    16 进制的方式造一个数据包,这样的方法难度较高,由于要自己算出校验和,除非须要重现
    在网络上抓到的一个16 进制格式的数据包,第二种方式是利用已经抓到的数据包改动一
    下,再发送出去,具体实现方法分别例如以下。
    2.3.1. 利用Packet Generator 直接造包
    在SNIFFER 中,选择Tools|Packet Generator 菜单,系统弹出窗体例如以下:
    按图中的红色框中的button,系统会弹出一个构造包内容的对话框,例如以下所看到的:
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第13 页共14 页
    在上图中可输入包的内容,还可规定发包的个数和包的长度。
    2.3.2. 利用已抓的包发包
    利用已抓的包进行改动,能够避免大量的运算和输入,仅仅须要更改自己须要更改的地方,
    然后发出去就可以。
    如上图所看到的,按包的大致要求,用其它工具造好包后,用SNIFFER 抓包,或者直接将
    网络上的可疑包抓过来,然后,用鼠标邮件单击该包,弹出如上图所看到的的快捷菜单,从中选
    择Send Current Frame 菜单,系统就会弹出例如以下图所看到的的发包窗体:
    AntPower 版权全部© 2003 技术文章
    http://www.antpower.org 第14 页共14 页
    按要求更改包的内容,就可以发送。须要注意的是假设更改了IP 地址或其它头中的内容,
    则须要更新校验和,对MAC 或选项的更改不须要更改校验和。
    3. 总结
    通过对照前面的三种发包工具,我们发现每种工具都有自己的长处和缺点,SENDIP 比
    较短小并且功能较齐全,比較适合在日常測试中使用,SNIFFER 发包工具最自由,能够发
    出不论什么可能的数据包,NESSUS 工具功能比較全面,但在发包方面不如SENDIP,所以,建
    议假设是測试须要的话,应该採用SENDIP 和SNIFFER 相结合的方式,假设同一时候还要使用
    扫描等其它功能,能够採用NESSUS 工具。

  • 相关阅读:
    spring boot 上传文件大小限制
    axios全局配置
    springboot 时间类型配置
    mybatis 全查 分页 模糊查询一体
    Vue响应式原理底层代码模拟实现
    浅谈vue响应式原理及发布订阅模式和观察者模式
    Vue Router的原理及history模式源码实现
    Vue路由之Hash模式和history模式的区别及History模式的解决办法
    webpack4.X之complier方法的实现及make前流程回顾
    webpack4.X之EntryOptionPlugin流程书写
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4072946.html
Copyright © 2011-2022 走看看