
茅44 网格搞口盟听与荡口扫描技术
第4章 网络端口监听与端口扫描技术

·本章提示 -4.1计算机网络监听的概述 -4.2网络监听工具Sniffer(嗅探器) -4.3端▣扫描技术
• 本章提示 – 4.1 计算机网络监听的概述 – 4.2网络监听工具——Sniffer(嗅探器) – 4.3 端口扫描技术

②4.1计算机网络监听的概述 随着计算机技术的发展,网终已日益成为生适中不可或缺的 工具,但伴之而来的非法入侵也二直威胁着计算机网终系 统的安全:,由手高域网中采角广播方式,、因此,在某不 趯域中司以蓝到有的信息包。而黑客通过对信息包进 行分析,、就能获取局域网上传输的二些重要信息。事实上, 很多黑客入侵时都把局域网扫描和侦听作为其最基本的步 骤和手段,原因是想用这种方法获取其想要的密码等信息。 但另一方面,我们对黑客入侵活动和其它网络犯罪进行侦 查、取证时,也可以使用网络监听技术来获取必要的信息。 因此,了解以太网监听技术的原理、实现方法和防范措施 就显得无为重要。 所谓的网络监听,是指主机网络进程接受到P数据包后,察 看其的目标端口是不是自己的端口号,如果是的话就接受 该数据包进行处理。进行网络通讯的主机,既要发送数琚, 也要接受数据,所以就要开启相应的瑞口以接受数据。 的老是不客进担前湖宽网页
4.1 计算机网络监听的概述 随着计算机技术的发展,网络已日益成为生活中不可或缺的 工具,但伴之而来的非法入侵也一直威胁着计算机网络系 统的安全。由于局域网中采用广播方式,因此,在某个广 播域中可以监听到所有的信息包。而黑客通过对信息包进 行分析,就能获取局域网上传输的一些重要信息。事实上, 很多黑客入侵时都把局域网扫描和侦听作为其最基本的步 骤和手段,原因是想用这种方法获取其想要的密码等信息。 但另一方面,我们对黑客入侵活动和其它网络犯罪进行侦 查、取证时,也可以使用网络监听技术来获取必要的信息。 因此,了解以太网监听技术的原理、实现方法和防范措施 就显得尤为重要。 所谓的网络监听,是指主机网络进程接受到IP数据包后,察 看其的目标端口是不是自己的端口号,如果是的话就接受 该数据包进行处理。进行网络通讯的主机,既要发送数据, 也要接受数据,所以就要开启相应的端口以接受数据。一 个网络上的主机有可能开启多个网络进程(如即浏览网页 又上QQ),也就是监听了多个端口

4.1计算机网络监听的概述 4.1.1网络监听的原理 Ethernet协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头 中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的 那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目 标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机 是通过一个电缆、 一个集线器连接在一起的,在协议的高层或者用户来看,当同 网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目 的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机 P地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要 发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。 网络接口不会识别P地址的。在网络接口由P层来的带有P地址的数据包又增加了 一部分以太祯的祯头的信息。在祯头中,有两个域分别为只有网络接口才能识别的 源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与P地址相 对应的,换句话说就是一个P地址也会对应一个物理地址。对于作为网关的主机, 由于它连接了多个网络,它也就同时具备有很多个P地址,在每个网络中它都有 个。而发向网络外的祯中继携带的就是网关的物理地址。 (待续
4.1 计算机网络监听的概述 4.1.1网络监听的原理 Ethernet协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头 中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的 那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目 标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机 是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一 网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目 的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机 IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要 发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。 网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了 一部分以太祯的祯头的信息。在祯头中,有两个域分别为只有网络接口才能识别的 源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相 对应的,换句话说就是一个IP地址也会对应一个物理地址。对于作为网关的主机, 由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一 个。而发向网络外的祯中继携带的就是网关的物理地址。 (待续…)

②4.1计算机网络监听的概述 4.1.1网络监听的原理 Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物 理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输 信号就能够到达线路上的每一台主机。再当使用集线器的时候,发送出去的信号到达 集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数 字信号也就能到达连接在集线器上的每个主机了。当数字信号到达一台主机的网络接 口时,正常状态下网络接口对读入数据祯进行检查,如果数据祯中携带的物理地址是 自己的或者物理地址是广播地址,那么就会将数据祯交给P层软件。对于每个到达网 络接口的数据祯都要进行这个过程的。但是当主机工作在监听模式下的话,所有的数 据祯都将被交给上层协议软件处 理。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有 一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同 的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可 以被接收到。 在UNX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式 只需要向Interface(网络接口)发送VO控制命令,就可以使主机设置成监听模式了。 而在Windows9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可 以实现了。 (待续)
4.1 计算机网络监听的概述 4.1.1网络监听的原理 Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物 理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输 信号就能够到达线路上的每一台主机。再当使用集线器的时候,发送出去的信号到达 集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数 字信号也就能到达连接在集线器上的每个主机了。当数字信号到达一台主机的网络接 口时,正常状态下网络接口对读入数据祯进行检查,如果数据祯中携带的物理地址是 自己的或者物理地址是广播地址,那么就会将数据祯交给IP层软件。对于每个到达网 络接口的数据祯都要进行这个过程的。但是当主机工作在监听模式下的话,所有的数 据祯都将被交给上层协议软件处 理。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有 一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同 的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可 以被接收到。 在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式, 只需要向Interface(网络接口)发送I/O控制命令,就可以使主机设置成监听模式了。 而在Windows 9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可 以实现了。 (待续…)

4.1计算机网络监听的概述 4.1.1网络监听的原理 当连接在同一条电缆或集线器上的主机被逻辑地分为个子网的时候,那 台主机处于监听模式 它还将可以接收到发息点身己不同 不同的罨码、P地延和阀关的圣机的数据雹,在简个 物理信道上传输的所有信息都可以被接收到。 在UNX系安 当拥有超级权限的用芦要想使自己所控制的主机进入监 听模式 要向nte9ceC网络接发送O控命含a可使机 设置成监听模式了。而/indows9x的系统中则宋论用户是杏有校限都将 可以通过直接运行监听工具就可以实现了。 在网络监听时, 常常要保存头量的信息(也包含很多的垃圾信息), 并将 对收集的信息进行大量的整理,这样就会使正在监听的机器对其它用 请求响应委 的很慢。同时蓝听程序在运行的时候需要消耗大量的处理器时 分析蓝听到的数据包是很实疼的事情。 网终中的数据有 在监听到的结果中 必 -TCP会话的包整理 然 如果你还期望将用户详细信息整理出来就需要根据协 安neme雀久多的议aT进的我n 程序将会分的天哦。 (待续
4.1 计算机网络监听的概述 • 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那 么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一 个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个 物理信道上传输的所有信息都可以被接收到。 • 在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监 听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以使主机 设置成监听模式了。而在Windows 9x的系统中则不论用户是否有权限都将 可以通过直接运行监听工具就可以实现了。 • 在网络监听时,常常要保存大量的信息(也包含很多的垃圾信息),并将 对收集的信息进行大量的整理,这样就会使正在监听的机器对其它用户的 请求响应变的很慢。同时监听程序在运行的时候需要消耗大量的处理器时 间,如果在这个时候就详细的分析包中的内容,许多包就会来不及接收而 被漏走。所以监听程序很多时候就会将监听得到的包存放在文件中等待以 后分析。分析监听到的数据包是很头疼的事情。因为网络中的数据包都非 常之复杂。两台主机之间连续发送和接收数据包,在监听到的结果中必然 会加一些别的主机交互的数据包。监听程序将同一TCP会话的包整理到一 起就相当不容易了,如果你还期望将用户详细信息整理出来就需要根据协 议对包进行大量的分析。Internet上那么多的协议,运行进起的话这个监听 程序将会十分的大哦。 (待续…) 4.1.1网络监听的原理

②4.1计算机网络监听的概述 4.1.1网络监听的原理 现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常 友好的,通信的双方充分信任的基础。在通常的网络环境之下,用户的信息 包括口令都是以明文的方式在网上传输的,因此进行网络监听从而获得用户 信息并不是一件难点事情,只要掌握有初步的TCPP协议知识就可以轻松的 监听到你想要的信息的。前些时间美籍华人China-babble曾提出将望路监听 从局域网延伸到广域网中,但这个想法很快就被否定了。如果真是这样的话 我想网络必将天下大乱了。而事实上现在在广域网里也可以监听和截获到 些用户信息。只是还不够明显而已。在整个Internet中就更显得微不足道了。 监听的协议分析 我们的研究从监听程序的编写开始,用Linux C语言设计实现。 以太网上数据帧的监听剖析 以太网上的数据帧主要涉及Tcp/ip协议,针对以下几个协议的分析:P,ARP, RARP,IPX,其中重点在于ip和arp协议,这两个协议是多数网络协议的基 础,因此把他们研究彻底,就对大多数的协议的原理和特性比较清楚了。由 于各种协议的数据帧个不相同,所以涉及很多的数据帧头格式分析,接下来 将一一描述 (待续.)
现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常 友好的,通信的双方充分信任的基础。在通常的网络环境之下,用户的信息 包括口令都是以明文的方式在网上传输的,因此进行网络监听从而获得用户 信息并不是一件难点事情,只要掌握有初步的TCP/IP协议知识就可以轻松的 监听到你想要的信息的。前些时间美籍华人China-babble曾提出将望路监听 从局域网延伸到广域网中,但这个想法很快就被否定了。如果真是这样的话 我想网络必将天下大乱了。而事实上现在在广域网里也可以监听和截获到一 些用户信息。只是还不够明显而已。在整个Internet中就更显得微不足道了。 监听的协议分析 我们的研究从监听程序的编写开始,用Linux C语言设计实现。 以太网上数据帧的监听剖析 以太网上的数据帧主要涉及Tcp/ip协议,针对以下几个协议的分析:IP,ARP, RARP,IPX,其中重点在于ip和 arp协议,这两个协议是多数网络协议的基 础,因此把他们研究彻底,就对大多数的协议的原理和特性比较清楚了。 由 于各种协议的数据帧个不相同,所以涉及很多的数据帧头格式分析,接下来 将一一描述. (待续…) 4.1 计算机网络监听的概述 4.1.1网络监听的原理

②4.1计算机网络监听的概述 4.1.1网络监听的原理 在Iiux下监听网络,应先设置网卡状态,使其处于杂混模式以便监听网络上的 所有数据帧。然后选择用Linux socket来截取数据帧,通过设置socket(0函数参 数值,可以使socketi截取未处理的网络数据帧,关键是函数的参数设置,下面就 是有关的程序部分: AF_INET=2表示internet ip protocol SOCK PACKET=10表示截取数据帧的层次在物理层,既不作处理: Htons(Ox0003)表示截取的数据帧的类型为不确定,既接受所有的包。 总的设定就是网卡上截取所有的数据帧。这样就可以截取底层数据帧,因为返回 的将是一个指向数据的指针,为了分析方便,我设置了一个基本的数据帧头结 构。 Struct etherpacket (struct ethhdr eth; struct iphdr ip; struct tcphdr tcp; char buff[8192];}ep; (待续)
4.1 计算机网络监听的概述 4.1.1网络监听的原理 在linux 下监听网络,应先设置网卡状态,使其处于杂混模式以便监听网络上的 所有数据帧。然后选择用Linux socket 来截取数据帧,通过设置socket() 函数参 数值,可以使socket截取未处理的网络数据帧,关键是函数的参数设置,下面就 是有关的程序部分: AF_INET=2 表示 internet ip protocol SOCK_PACKET=10 表示 截取数据帧的层次在物理层,既不作处理。 Htons(0x0003)表示 截取的数据帧的类型为不确定,既接受所有的包。 总的设定就是网卡上截取所有的数据帧。这样就可以截取底层数据帧,因为返回 的将是一个指向数据的指针,为了分析方便,我设置了一个基本的数据帧头结 构。 Struct etherpacket {struct ethhdr eth; struct iphdr ip; struct tcphdr tcp; char buff[8192];} ep; (待续…)

② 4.1计算机网络监听的概述 4.1.1网络监听的原理 将返回的指针赋值给指向数据帧头结构的指针,然后对其进行分析。以下是有关 协议的报头:ethhdr这是以太网数据帧的mac报头: 48bit日的物理地址|48bit源物理地址16bit协议地址l 相应的数据结构如下 struct ethhdr unsigned char h_dest[ETH ALEN]; unsigned char h_source[ETH ALEN]: unsigned short h proto; 其中h dest[6]是48位的日标地址的网卡物理地址,h_source[6]是48位的源地 址的物理网卡地址。H_proto是16位的以太网协议,其中主要有0x0800ip, 0x8035.X25,0x8137ipx,0x8863-0x8864 pppoe(这是Linux的ppp),0x0600 ether loop back,0x0200-Ox0201pup等。Iphdr这是ip协议的报头: 由此可以定义其结构如下: 这是Liux的ip协议报头,针对版本的不同它可以有不同的定义,我们国内一般 用BIG的定义,其中version是ip的版本,protocol是ip的协议分类主要有OxO6 tcp.0x11udp,0x01icmp,0x02igmp等,saddr是32位的源ip地址,daddr是32 位的目标ip地址。相应的数据结构: (待续.)
4.1 计算机网络监听的概述 4.1.1网络监听的原理 将返回的指针赋值给指向数据帧头结构的指针,然后对其进行分析。以下是有关 协议的报头:ethhdr 这是以太网数据帧的mac报头: |48bit 目的物理地址 | 48bit 源物理地址 | 16bit 协议地址| 相应的数据结构如下 struct ethhdr unsigned char h_dest[ETH_ALEN]; unsigned char h_source[ETH_ALEN]; unsigned short h_proto; 其中h_dest[6]是48位的目标地址的网卡物理地址,h_source [6] 是48位的源地 址的物理网卡地址。H_proto是16位的以太网协议,其中主要有0x0800 ip, 0x8035.X25,0x8137 ipx,0x8863-0x8864 pppoe(这是Linux的 ppp),0x0600 ether _loop_back ,0x0200-0x0201 pup等。Iphdr 这是ip协议的报头: 由此可以定义其结构如下: 这是Linux 的ip协议报头,针对版本的不同它可以有不同的定义,我们国内一般 用BIG的定义,其中version 是ip的版本,protocol是ip的协议分类主要有0x06 tcp.0x11 udp,0x01 icmp,0x02 igmp等,saddr是32位的源ip地址,daddr是32 位的目标ip地址。相应的数据结构: (待续…)

4.1计算机网络监听的概述 4.1.1网络监听的原理 struct arphdr {unsigned short int ar_hrd; unsigned short int ar pro; unsigned char ar hin;unsigned char ar pln; unsigned short int ar_op:#if Ounsigned char ar sha[ETH ALEN;unsigned char _ar_sip[4]:unsigned char_ar_tha[ETH_ALEN]:unsigned char_ar_tip[4]:#end if); 这是inuⅸ的arp协议报头,其中ar hrd是硬件地址的格式,ar pro协议地址的格式,ar hin是硬 件地址的长度,ar plni时协议地址的长度,arop是arp协议的分类0x001是arp echo0x0002是 arp reply.接下来的分别是源地址的物理地址,源ip地址,目标地址的物理地址,目标ip地址。 Tcphdr ip协议的tcp协议报头 以下是相应数据结构: struct tcphdr fu int16 t source; u int16 t dest; u int32 t seq; u int32 t ack seq; if BYTE ORDER =LITTLE ENDIANu int16_t resl:4; u int16 t doff:4;u_int16_t fin:1;u_int16_t syn:1; u int16 trst:1;u int16 t psh:1;u int16 t ack:1; u int16 t urg:1;u int16 t res2:2; (待续)
4.1 计算机网络监听的概述 4.1.1网络监听的原理 struct arphdr {unsigned short int ar_hrd; unsigned short int ar_pro; unsigned char ar_hln;unsigned char ar_pln; unsigned short int ar_op;#if 0unsigned char _ar_sha[ETH_ALEN];unsigned char _ar_sip[4];unsigned char _ar_tha[ETH_ALEN];unsigned char _ar_tip[4];#end if}; 这是linux 的arp 协议报头,其中ar_hrd 是硬件地址的格式,ar_pro协议地址的格式,ar_hln是硬 件地址的长度,ar_pln时协议地址的长度,ar_op是arp协议的分类0x001是arp echo 0x0002 是 arp reply.接下来的分别是源地址的物理地址,源ip地址,目标地址的物理地址,目标ip地址。 Tcphdr ip协议的tcp协议报头 以下是相应数据结构: struct tcphdr {u_int16_t source; u_int16_t dest; u_int32_t seq; u_int32_t ack_seq; # if _BYTE_ORDER == _LITTLE _ENDIANu_int16_t resl:4; u_int16_t doff:4;u_int16_t fin:1;u_int16_t syn:1; u_int16_t rst:1;u_int16_t psh:1;u_int16_t ack:1; u_int16_t urg:1;u_int16_t res2:2; (待续…)