网络端口监听端口扫描技术.ppt_第1页
网络端口监听端口扫描技术.ppt_第2页
网络端口监听端口扫描技术.ppt_第3页
网络端口监听端口扫描技术.ppt_第4页
网络端口监听端口扫描技术.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章,网络端口监听与端口扫描技术,本章提示 4.1 计算机网络监听的概述 4.2网络监听工具Sniffer(嗅探器) 4.3 端口扫描技术,4.1 计算机网络监听的概述,随着计算机技术的发展,网络已日益成为生活中不可或缺的工具,但伴之而来的非法入侵也一直威胁着计算机网络系统的安全。由于局域网中采用广播方式,因此,在某个广播域中可以监听到所有的信息包。而黑客通过对信息包进行分析,就能获取局域网上传输的一些重要信息。事实上,很多黑客入侵时都把局域网扫描和侦听作为其最基本的步骤和手段,原因是想用这种方法获取其想要的密码等信息。但另一方面,我们对黑客入侵活动和其它网络犯罪进行侦查、取证时,也可以使用网络监听技术来获取必要的信息。因此,了解以太网监听技术的原理、实现方法和防范措施就显得尤为重要。 所谓的网络监听,是指主机网络进程接受到IP数据包后,察看其的目标端口是不是自己的端口号,如果是的话就接受该数据包进行处理。进行网络通讯的主机,既要发送数据,也要接受数据,所以就要开启相应的端口以接受数据。一个网络上的主机有可能开启多个网络进程(如即浏览网页又上QQ),也就是监听了多个端口。,4.1 计算机网络监听的概述,4.1.1网络监听的原理,Ethernet协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目标物理地址是什么,主机都将可以接收到。许多局域网内有十几台甚至上百台主机是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了一部分以太祯的祯头的信息。在祯头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相对应的,换句话说就是一个IP地址也会对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一个。而发向网络外的祯中继携带的就是网关的物理地址。 (待续),4.1 计算机网络监听的概述,4.1.1网络监听的原理,Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台主机。再当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个主机了。当数字信号到达一台主机的网络接口时,正常状态下网络接口对读入数据祯进行检查,如果数据祯中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据祯交给IP层软件。对于每个到达网络接口的数据祯都要进行这个过程的。但是当主机工作在监听模式下的话,所有的数据祯都将被交给上层协议软件处理。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。 在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以使主机设置成监听模式了。而在Windows 9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可以实现了。 (待续),4.1 计算机网络监听的概述,当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。 在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以使主机设置成监听模式了。而在Windows 9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可以实现了。 在网络监听时,常常要保存大量的信息(也包含很多的垃圾信息),并将对收集的信息进行大量的整理,这样就会使正在监听的机器对其它用户的请求响应变的很慢。同时监听程序在运行的时候需要消耗大量的处理器时间,如果在这个时候就详细的分析包中的内容,许多包就会来不及接收而被漏走。所以监听程序很多时候就会将监听得到的包存放在文件中等待以后分析。分析监听到的数据包是很头疼的事情。因为网络中的数据包都非常之复杂。两台主机之间连续发送和接收数据包,在监听到的结果中必然会加一些别的主机交互的数据包。监听程序将同一TCP会话的包整理到一起就相当不容易了,如果你还期望将用户详细信息整理出来就需要根据协议对包进行大量的分析。Internet上那么多的协议,运行进起的话这个监听程序将会十分的大哦。 (待续),4.1.1网络监听的原理,现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,因此进行网络监听从而获得用户信息并不是一件难点事情,只要掌握有初步的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网络监听的原理,在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 buff8192; ep; (待续),4.1 计算机网络监听的概述,4.1.1网络监听的原理,将返回的指针赋值给指向数据帧头结构的指针,然后对其进行分析。以下是有关协议的报头:ethhdr 这是以太网数据帧的mac报头: |48bit 目的物理地址 | 48bit 源物理地址 | 16bit 协议地址| 相应的数据结构如下 struct ethhdr unsigned char h_destETH_ALEN; unsigned char h_sourceETH_ALEN; unsigned short h_proto; 其中h_dest6是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_hln;unsigned char ar_pln; unsigned short int ar_op;#if 0unsigned char _ar_shaETH_ALEN;unsigned char _ar_sip4;unsigned char _ar_thaETH_ALEN;unsigned char _ar_tip4;#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; (待续),4.1 计算机网络监听的概述,4.1.1网络监听的原理,#elif _BYTE _ORDER = _BIG _ENDIANu_int16_t doff:4; u_int16_t res1:4;u_int16_t res2:2;u_int16_t urg:1; u_int16_t ack:1;u_int16_t psh:1;u_int16_t rst:1; u_int16_t syn:1;u_int16_t fin:1; #else#error “Adjust your defines“#endifu_int16_t window; u_int16_t check;u_int16_t urg_ptr; 这是Linux 下tcp协议的一部分与ip协议相同取BIG,其中source是源端口,dest 是目的端口,seq是s序,ack_seq 是a序号,其余的是tcp的连接标志其中包括6个标志:syn表示连接请求,urg 表示紧急信息,fin表示连接结束,ack表示连接应答,psh表示推栈标志,rst表示中断连接。window是表示接受数据窗口大小,check是校验码,urg ptr是紧急指针。 Udphdr 这是udp协议报头 struct udphdr u_int16_t source; u_int16_t dest;u_int16_t len;u_int16_t check; 这是Linux下ip协议中udp协议的一部分,结构很明显 source 源端口,dest目的端口,len udp 长度,check 是校验码。 Icmphdr 这是ip协议的icmp协议的报头 (待续),4.1 计算机网络监听的概述,4.1.1网络监听的原理,struct icmphdru_int8_t type;u_int8_t code;u_int16_t checksum;unionstruct u_int16_t id;u_int16_t sequence; echo;u_int32_t gateway;structu_int16_t_unused;u_int16_t mtu; frag; un; 这是linux下的ip协议中的icmp的协议,这里面主要的是前两项参数,其中type是icmp协议的类型,而code 则是对type类型的再分析。如:type 0x03 是表示unsearchable,这时code的不同表示了不同的unsearchable :0x00表示网络不可寻,0x01表示主机不可寻,0x02表示协议不可寻,0x03表示端口不可寻,0x05表示源路由失败,0x06网络不可知,0x07主机不可知。 Igmphdr 这是ip协议的igmp协议报头 struct igmphdr _u8 type;_u8 code;_u16 csum;_u32 group; 这是Linux下的ip协议中的igmp协议,协议中主要是前面两个属性,Type表示igmp 协议的信息类型,code表示routing code. 然后,将截取的数据帧的地址赋值给定义的结构.由此可根据不同的结构分析数据,得到我们需要的信息。 (完),4.1 计算机网络监听的概述,4.1.2 检测网络监听的手段,对发生在局域网的其他主机上的监听,一直以来,都缺乏很好的检测方法。这是由于产生网络监听行为的主机在工作时总是不做声的收集数据包,几乎不会主动发出任何信息。但目前网上已经有了一些解决这个问题的思路和产品: 1反应时间 向怀疑有网络监听行为的网络发送大量垃圾数据包,根据各个主机回应的情况进行判断,正常的系统回应的时间应该没有太明显的变化,而处于混杂模式的系统由于对大量的垃圾信息照单全收,所以很有可能回应时间会发生较大的变化。 2观测dns 许多的网络监听软件都会尝试进行地址反向解析,在怀疑有网络监听发生时可以在dns系统上观测有没有明显增多的解析请求。 3利用ping模式进行监测 上面我们说过:当一台主机进入混杂模式时,以太网的网卡会将所有不属于他的数据照单全收。按照这个思路,我们就可以这样来操作:假设我们怀疑的主机的硬件地址是00:30:6E:00:9B:B9,它的ip地址是,那么我们现在伪造出这样的一种icmp数据包:硬件地址是不与局域网内任何一台主机相同的00:30:6E:00:9B:9B,目的地址是不变,我们可以设想一下这种数据包在局域网内传输会发生什么现象:任何正常的主机会检查这个数据包,比较数据包的硬件地址,和自己的不同,于是不会理会这个数据包,而处于网络监听模式的主机呢?由于它的网卡现在是在混杂模式的,所以它不会去对比这个数据包的硬件地址,而是将这个数据包直接传到上层,上层检查数据包的ip地址,符合自己的ip,于是会对对这个ping的包做出回应。这样,一台处于网络监听模式的主机就被发现了。 (待续),4.1 计算机网络监听的概述,4.1.2 检测网络监听的手段,这种方法,在10pht这个黑客组织的antisniff产品中有很好的体现。可参见:/antisniff/download.html. 4.利用arp数据包进行监测 除了使用ping进行监测外,目前比较成熟的有利用arp方式进行监测的。这种模式是上述ping方式的一种变体,它使用arp数据包替代了上述的icmp数据包。向局域网内的主机发送非广播方式的arp包,如果局域网内的某个主机响应了这个arp请求,那 么我们就可以判断它很可能就是处于网络监听模式了,这是目前相对而言比较好的监测模式。 这种方式,在neped和PromiScan这两个产品中有所体现。可分别参见: / ; /ToolDownload/PromiScan/promiscan_doc.html 。 值得注意的是,现在互联网上流传着一些基于上面这两种技术的脚本和程序,它们宣称自己能准确捕捉到局域网内所有进行网络监听的主机,目前来讲,这种说法基本上是不可靠的,因为上述技术在实现中,除了要考虑网卡的硬件过滤外,还需要考虑到不同操作系统可能产生的软件过滤。因为虽然理论上网卡处于混杂模式的系统应该接收所有的数据包,但实际上不同的操作系统甚至相同的操作系统的不同版本在tcp/ip的实现上都有自己的一些特点,有可能不会接收这些理论上应该接收的数据包。 除了上述几种方式外,还有一些其他的方式,如:检测hub灯,但相比局限性就更大了,只能作为上述模式的补充。 (完),4.2网络监听工具Sniffer(嗅探器),4.2.1.Sniffer的工作环境,sniffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。 嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议: 1标准以太网 2TCP/IP 3IPX 4DECNet 嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。 嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。 数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。 (待续),4.2网络监听工具Sniffer(嗅探器),4.2.1.Sniffer的工作环境,帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。 每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。 在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。 如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。 嗅探器可能造成的危害: 1嗅探器能够捕获口令 2能够捕获专用的或者机密的信息 3或者用来获取更高级别的访问权限 事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能) 一般我们只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西 简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。 (完),4.2网络监听工具Sniffer(嗅探器),4.2.2 网络监听Sniffer的工作原理,通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧: 1帧的目标区域具有和本地网络接口相匹配的硬件地址。 2帧的目标区域具有“广播地址“。 在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。 而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种“混杂“方式时,该nc具备“广播地址“,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成promiscuous方式的能力) 可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。 通常sniffer所要关心的内容可以分成这样几类: (待续),4.2网络监听工具Sniffer(嗅探器),4.2.2 网络监听Sniffer的工作原理,1口令 我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。 2金融帐号 许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin. 3偷窥机密或敏感的信息数据 通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。 4窥探低级的协议信息。 这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)。 (完),4.2网络监听工具Sniffer(嗅探器),4.2.3 怎样在网上发现Sniffer,怎样在网上发现Sniffer?简单的一个回答是你发现不了,因为他们根本就没有留下任何痕迹。sniffer是如此嚣张又安静,如何知道有没有sniffer存在,这也是一个很难说明的问题,比较有说服力的理由证明你的网络有sniffer目前有以下现象: 1网络通讯掉包率反常的高 通过一些网络软件,可以看到信息包传送情况(不是sniffer),向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在Listen,那么信息包传送将无法每次都顺畅的流到目的地。(这是由于sniffer拦截每个包导致的) 2网络带宽出现反常 通过某些带宽控制器(通常是防火墙所带),可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在监听。在非高速信道上,如56Kddn等,如果网络中存在sniffer,你应该也可以察觉出网络通讯速度的变化。 还有一个办法是看看计算机上当前正在运行的所有程序。但这通常并不可靠,但你可以控制哪个程序可以在你的计算机上运行。 在Unix系统下使用下面的命令: ps -aux 或: ps -augx。 这个命令列出当前的所有进程,启动这些进程的用户,它们占用CPU的时间,占用内存的多少等等。 Windows系统下,按下Ctrl+Alt+Del,看一下任务列表。不过,编程技巧高的Sniffer即使正在运行,也不会出现在这里的。 另一个方法就是在系统中搜索,查找可疑的文件。但可能入侵者用的是他们自己写的程序,所以都会给发现sniffer造成相当大的困难。 还有许多工具,能用来看看你的系统会不会在杂收模式。从而发现是否有一个Sniffer正在运行。,4.2网络监听工具Sniffer(嗅探器),4.2.4 怎样防止被sniffer,对于嗅探器如此强大的灵敏度,我们力求作到:1检测和消灭嗅探器2会话加密 3将数据隐藏,使嗅探器无法发现 4加密 你最关心的可能是传输一些比较敏感的数据,如用户ID或口令等等。有些数据是没有经过处理的,一旦被sniffer,就能获得这些信息。解决这些问题的办法是加密。 我们介绍以下SSH,它又叫Secure Shell。SSH是一个在应用程序中提供安全通信的协议。它是建立在客户机/服务器模型上的。SSH服务器的分配的端口是22。连接是通过使用一种来自RSA的算法建立的。在授权完成后,接下来的通信数据是用IDEA技术来加密的。这通常是较强的,适合与任何非秘密和非经典的通讯。 SH后来发展成为F-SSH,提供了高层次的,军方级别的对通信过程的加密。它为通过TCP/IP网络通信提供了通用的最强的加密。如果某个站点使用F-SSH,用户名和口令成为不是很重要的一点。目前,还没有人突破过这种加密方法。即使是sniffer,收集到的信息将不再有价值。当然最关键的是怎样使用它。 其他的方法 另一个比较容易接受的是使用安全拓扑结构。这听上去很简单,但实现起来花销是很大的。在我们小的时候也许都玩过一种智力游戏,它通常由一系列数字组成。游戏的目的是要安排好数字,用最少的步骤,把它们按递减顺序排好。当处理网络拓扑时,就和玩这个游戏一样。 这样的拓扑结构需要有这样的规则:一个网络段必须有足够的理由才能信任另一网络段。网络段应该考虑你的数据之间的信任关系上来设计,而不是硬件需要。 让我们开始处理这个网络拓扑,来看看: (待续),4.2网络监听工具Sniffer(嗅探器),4.2.4 怎样防止被sniffer,一个网络段是仅由能互相信任的计算机组成的。通常它们在同一个房间里,或在同一个办公室里。比如你的财务信息,应该固定在某一节点,就象你的财务部门被安排在办公区域的的一个不常变动的地方。 注意每台机器是通过硬连接线接到Hub的。Hub再接到交换机上。由于网络分段了,数据包只能在这个网段上被sniffer。其余的网段将不可能被sniffer。 所有的问题都归结到信任上面。计算机为了和其他计算机进行通信,它就必须信任那台计算机。作为系统管理员,你的工作是决定一个方法,使得计算机之间的信任关系很小。这样,就建立了一种框架,可以告诉你什么时候放置了一个sniffer,它放在那里了,是谁放的等等。 如果你的局域网要和INTERNET相连,仅仅使用防火墙是不够的。入侵者已经能从一个防火墙后面扫描,并探测正在运行的服务。你要关心的是一旦入侵者进入系统,他能得到些什么。你必须考虑一条这样的路径,即信任关系有多长。举个例子,假设你的WEB服务器对某一计算机A是信任的。那么有多少计算机是A信任的呢。又有多少计算机是受这些计算机信任的呢?在信任关系中,这台计算机之前的任何一台计算机都可能对你的计算机进行攻击,并成功。你的任务就是保证一旦出现的Sniffer,它只对最小范围有效。 Sniffer往往是攻击者在侵入系统后使用的,用来收集有用的信息。因此,防止系统被突破是关键。系统安全管理员要定期的对所管理的网络进行安全测试,防止安全隐患。同时要控制拥有相当权限的用户的数量。请记住,许多攻击往往来自网络内部。 (完),4.3 端口扫描技术,4.3.1 端口扫描的概念,端口扫描是一种攻击者用来发现他们可以进入服务器的很常用的侦察技术。所有局域内或通过Modem连到Internet上的机器运行了很多监听常用和非常用端口的服务。攻击者通过端口扫描发现可用的端口(正处于监听状态的端口)。事实上,端口的扫描是向每个端口一次发送一个消息的过程。根据端口的回应来确认该端口是否可用和更进一步侦察它的漏洞。,4.3.2 端口扫描技术的原理,端口扫描向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。端口扫描也可以通过捕获本地主机或服务器的流入流出IP数据包来监视本地主机的运行情况,它仅能对接收到的数据进行分析,帮助我们发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。,4.3.3 端口号,1常用端口 所有的操作系统都遵循传统的通行仅当超级用户打开从0到1023号端口。常用端口(又称为标准端口)被IANA(互相网号码分配授权单位, )分配给服务。在Unix中,文本文件/etc/services(在windows 2000下为%windir%system32driversetcservices)列出了这些服务名和所用的端口号。以下是从该文中提取的几行。 echo 7/tcp Echo ftp-data 20/udp File Transfer Default Data ftp 21/tcp File Transfer Control ssh 22/tcp SSH Remote Login Protocol telnet 23/tcp Telnet domain 53/udp Domain Name Server www-http 80/tcp World Wide Web HTTP 试图用一个未授权用户程序打开一个在01023范围内的端口是不能成功的,用户程序可以打开任何一个未分配的1023以上的端口。 2非常用端口 通过一个非标准端口,就是我们常常简单化地认为的1023以上的端口。事实上在此范围内的端口号中,也有一些“标准“的端口,例如: wins 1512/tcp Microsoft Windows Internet Name Service radius 1812/udp RADIUS authentication protocol yahoo 5010 Yahoo! Messenger x11 6000-6063/tcp X Window System 一些恶意的程序常常散布很广,它们到处搜寻,收集到了这些常用的端口号码。,4.3 端口扫描技术,4.3.4简单端口扫描技术,最简单的端口扫描(例如:发送一些经过仔细挑选建立的包到选定的目标端口)是试图打开被扫描者的0到65535号端口看些是打开的。 TCP connect(): 连接系统通过唤起一个本机上提供的可以用来打开所有感兴趣端口的程序。如果该端口处于监听状态,连接将会成功,否则不能连接是无法通过的。 Strobe:闸门扫描是一个相对较窄的扫描,仅仅是寻找那些功击者已经普遍知道如何去攻击的服务器。闸门这个名字来源于一个原始的TCP扫描程序,而现在已成为所有扫描工具的共同特征。 Ident协议允许那些通过TCP连接到计算机上的任何进程来窥视计算机的用户名,即便是那个进程并没有被初始化。所以,例如:可以通过连接80号端口然后用Ident来判断HTTP服务是否在root下运行。,4.3 端口扫描技术,4.3.5秘密扫描技术,从攻击者的角度来看通过端口扫描存在的一个问题是,它很容易被在此端口监听的服务所记录在访问日志里。他们会观察连进的程序,然后他们就登记一个错误。有很多的秘密扫描技术能够越过这个问题。秘密扫描工具是一种不会被审核工具发现到的扫描方法。显然,这是一场比赛也许一个月后秘密扫描将不会这么神气了。 端口扫描器通过释放数据包到不同的端口来扫描一个主机。因此,慢速扫描(一天或者更久的时间)也变成了一种秘密技术了。另外一种秘密扫描技术是“反向映射“,当你试图在网络上搜索所有的主机时,然后通过产生“主机不可到达“的ICMP信息来确定哪些IP不存在。 IP包分片:扫描器从IP分片中劈开TCP头。这样可绕过包过滤和防火墙,因为它他看不到一个完整的TCP头所以不能对应相应的过滤规则。许多包过滤器和防火墙要求所有的IP碎片(例如:Linux内核中的CONFIG _IP _ALWAYS _DEFRAG既是),但许多网络并不能提供避免的队列中丢失信息性能。 SYN扫描:这种技术又叫做半开连接扫描,因为TCP连接并没有完成。一个SYN包发送(就像我们准备打开一个连接),目标机器上返回SYN和ACK, (待续),4.3 端口扫描技术,4.3.5秘密扫描技术,这就表示该端口处于监听状态,返回RST表示没有监听。TCP层并不会通知服务进程,因为连接并没有完成。 FIN扫描:典型的TCP扫描是试图建立连接(以最少的步骤)。另一个技术是发送错误的包到一个端口,并期望处于监听状态的端口发回一个不同的错误消息而不是关闭端口的消息。扫描器发送一个FIN包,这将使打开的端口关闭。关闭端口时将恢复一个RST的FIN包。相反,开启的端口会忽略所有查询的包。这在TCP中是要求这样的。如果没有服务在监听目标端口,操作系统也将产生一个错误消息。如果有服务处于监听状态,操作系统将丢弃这个发送过来的包。因此,没有信息返回表示有服务在此端口监听。但是,有的包可能会在线路上发生意外丢失或被防火墙过滤,因此这并不是一个高效的扫描技术。 在XMAS扫描中用到了一些其他的技术,它是把TCP包中的所有标志都设置好了。或所有标记都没有被设置的空扫描。但是,不同的操作系统对这些扫描的回应是不同的,所以识另不同的操作系统甚至操作系统的版本和补丁等级都很重要。 (完),4.3 端口扫描技术,4.3 端口扫描技术,4.3.6 SOCKS 端口探测技术,SOCKS是一种允许多台计算机共享公用Internet连接的系统。之所以攻击者会扫描SOCKS,是因为大多数用户的SOCKS配置有错误。 许多产品都支持SOCKS,一个典型的用户产品就是WinGate, WinGate是一个安装在个别的机器上软件用来和Internet连接。所有其它在内网的机器连接Internet都要通过这台机器上运行的WinGate。 SOCKS错误配置将允许任意的源地址和目标地址通行。就像是允许内部的机器访问Internet一样,外面的机器也可以访问内部的机器。更重要的是,这可能允许攻击者通过你的系统访问其它的Internet上的机器,使得攻击者隐藏他自己的真实地址。 IRC聊天服务器经常扫描客户端以检查SOCKS服务是否打开。他们将通过发送一个消息给那些不知道如何解决这个问题的人而把他们剔出去。如果你收到这样一个消息,你可以查看客户端是否是WinGate执行的检查。一个错误的定位可能导致如果一个应用程序暂时无效的话。在这种情况下,这看起来象是内部的机器在攻击SOCKS服务器。,4.3 端口扫描技术,4.3.7 反弹扫描,对于攻击者来说隐藏他们行踪是能力是很重要的。因此,攻击者快速搜索Internet,查找他们可以的攻击系统。 FTP反弹扫描利用了FTP协议本身的弱点。它要求代理FTP连接支持。这种反弹通过FTP服务隐藏了攻击者来自哪里,该技术与IP隐藏了攻击者地址的欺骗类似。例如:与建立了FTPserver-PI (协议解析器)控制连接,要求server-PI初始化一个活动的server-DTP(数据传送进程)发送一个文件到Internet的任何地方。 一种端口扫描技术就是使用这种方法从ftp代理服务器来扫描tcp端口。因此你可以在防火墙后与FTP服务建立连接,然后扫描那些很可能被封锁的端口(如:139)。如果FTP服务允许读出或写入数据进一个目录(如:/incoming),你可以发送任意数据到这个被发现可以打开的端口。我们的技术是利用端口(FTP)命令来发现和记录一些虽然被动但却在监听目标机器特定的端口user-DTP用户。然后我们试着列出当前地址目录,结果被发送到server-DTP。如果我们的目标主机正在监听指定的端口,该传送就会成功(产生一个250和一个226回应)。否则将得到“425消息:不能建立数据连接:连接被拒绝“,然后我们再向目标主机的下一个端口发送其它的PORT命令。用这种方法的优势很明显(很难追踪到,可绕开防火墙);主要的缺点是比较慢,并行许多FTP服务执行最终屏蔽代理的特征。 查找器:大部分的查找服务器允许命令转寄通过查找器支持递归查询。例如:“robfoobar“查询将向“bar“询问“robfoo“,引起向“bar“查询“foo“。这种技术可以用来隐藏查询的原始来源。 E-mail:发送垃圾邮件的人试图通过SMTP服务器转发他们的垃圾邮件。因此,对smtp试探的方法在网上就经常被使用。 Socks:Socks允许几乎所有的协议穿过中介机器。因此,攻击者对SOCKS的探测扫描在网上是常见的。 HTTP proxy:大多数网站服务都提供代理,便于所有的web传输都可由个别带有过滤器的服务很好的管理以提高性能。但有许多这种服务都配置错误以至于允许Internet上的任何请求,允许攻击者通过第三方转发攻击。对HTTP代理的试探在今天很常见。 (待续),4.3 端口扫描技术,4.3.7 反弹扫描,IRC BNC:攻击者喜欢通过用其它机器绕接他们的连接来隐藏自己的IRC标识。一个叫“BNC“ 的很特别的程序就是用了这种方式危及到机器的安全。 UDP 扫描 端口扫描通常指对TCP端口的扫描,它是定向连接的,因此给攻击者提供了很好的反馈信息。UDP的应答有着不同的方式,为了发现UDP端口,攻击者们通常发送空的UDP数据包,如果该端口正处于监听状态,将发回一个错误消息或不理睬流入的数据包;如果该端口是关闭的,大多数的操作系统将发回“ICMP 端口不可到达“的消息,这样,你可以发现一个端口到底有没有打开,通过排除方法确定哪些端口是打开的。ICMP和UDP包都不是可靠的通信,所以这种UDP扫描器当出现丢包时(或者你得到了一堆错误的位置)必须执行包重法。同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论