三,网络扫描
面对不同的网络,应该采用不用的扫描方法:
1,对于内部网络,可用类型很多,ICMP协议是普遍要装上的,在内部网广播ICMP数
据包可以区分WINDOWS和UNIX系统,
发送类型为8的ICMP的ECHO请求,如果可以受到类型为0的ECHO回应,表明对方主机是存活的。
相关工具介绍:
UNIX下的:fping&gping
WINDOWS下:Pinger 特点:速度快,多线程。
2,对于外部网络,可用类型也很多,涉及到的原理也有很多,例如:TCP扫描,UDP扫描,
其实我是很不愿意用扫描工具的,很容易使对方感觉到入侵事件的发生,不论是防火墙还是入侵检测系统都会或多或少的留下我们的脚印,如果遇到一个勤快的管理员的话,那么这次入侵很可能以失败告终。
但使用与否依各个喜好而定了:),有时候我们在测试网络或者主机的安全性时,就不能忽视他的存在了,首先,安全测试不是入侵,全面的测试对抵御黑客和蠕虫的攻击是必要的,在这里推荐的端口扫描工具是NMAP,因为他带有躲避IDS检测的机制,重组了TCP的三次握手机制,慢扫描机制等等都是其他扫描工具无法比拟的,UDP扫描是很不可靠的,原因有下几点:
这种扫描依靠ICMP端口不可达消息,如果发送端给目标一个感兴趣的端口发送了一个UDP数据包后,没有收到ICMP端口不可打消息,那么我们认为该端口处于打开状态。
不可靠的原因:
1,路由器可能丢弃UDP分组;
2,很多的UDP服务不也不产生响应;
3,防火墙的常规配置是丢弃UDP分组(除DNS外);
4,休眠状态的UDP端口是不会发送一个ICMP端口不可到达消息。
还有的扫描工具就是弱点扫描工具,这些工具综合各种漏洞信息构造漏洞数据库,去探究存在漏洞没有打补丁的主机,当然也有针对特定漏洞的检测发现工具(脚本小子能用,网络安全人员也弄用--双刃剑-:)
这里详细介绍对目标操作系统类型的检测原理:
Telnet标识和TCP/IP堆栈指纹:
1,网上许多的系统可以直接Telnet到目标,大多会返回欢迎信息的,返回的信息包含了该端口所对应的服务软件的版本号,这个对于寻找这个版本的软件的漏洞很重要,如果对方开了Telnet,那么可以直接得到对方的系统类型和版本号,这个对于挖掘系统的漏洞很重要(对于溢出来说,不同版本的系统和语言版本的系统来说,RET地址,JMP ESP,地址是不同的)。
2,如今越来越多的管理员懂的了关闭功能标志,甚至提供伪造的欢迎信息。那么TCP/IP堆栈指纹是区分不同系统的好方法。
1,FIN扫描
给打开的端口发送FIN包,RFC 793规定不返回任何响应,例外的系统是: MS Windows,BSDI,CISCO,HP/UX,MVS和IRIX都返回一个RESET包。
2,TCP初始序列号(ISN)采样
这种方法利用了在实现TCP连接时使用不同的ISN模式识别系统,可以分成多种模式:传统的64K增加(旧UNIX OS),随机增加(新版的Solaris,IRIX,FreeBSD,Digital UNIX和Cray等),真正随机(Linux 2.0.*,OpenVMS和新版AIX等),Windows系统使用所谓的"时间依赖性"模型,即ISN的增加同某一个短固定的时间间隔有关系,有些主机始终使用固定的ISN,例如3COM集线器(使用0x803)和AppleLaserWriter打印机(0xC7001)。
3,不分片位
目前许多系统在他们发送的包中使用IP"不分片"位,这主要是想获得好的运行性能,不过也不是所有的操作系统都有此功能,即使有,其实现的方式可能也不同。因此利用次位或许有利于我们收集更多的有关目标OS的信息。
4,TCP初始窗
TCP初始窗只是简单地测试返回包的窗口尺寸。Queso和Nmap可以对实际的窗口进行窗口跟踪。在很多操作系统中是一个常数。例如:AIX是唯一使用0x3F25的操作系统。对于完全重新编写代码的NT 5的TCP堆栈,使用0x402E.
5,ACK值
如果发送一个FIN|PSH|URG,许多操作系统设置ACK等于初始序列号,而Windows和某些打印机将发送seq+1.如果发送一个SYN|FIN|PSH|URG到打开的端口,不同的Windows系统的实现将很不一致,有时返回seq,有时返回seq+1,甚至返回完全随机的数值。
6,ICMP错误消息机制
某些操作系统按照RFC 1812的建议,限制不同错误消息的发送速率。例如:Linux内核(在net/ipv4/icmp.h中定义)限制目标不可到达消息的产生速率为4秒种内80个,如果超过这个限制将有1/4的惩罚。测试方法是发送一大串包到某些随机选取的高端口,然后计算返回的不可到达包的数目。
7,ICMP消息引用(Message Quoting)
RFC规定:ICMP错误消息将引用一小部分导致错误消息包的ICMP消息内容。对于端口不可达消息,几乎所有的实现都只发送所需要的IP头+8字节。不过Solaris发送的内容更多,而Linux发送的东西最多。这就是我们识别没有打开任何端口的Linux和Solaris主机。
8,ICMP错误消息回射完整性
主机对端口不可打错误消息将送回一小部分于是消息的内容。某些机器送回的包中包括的协议头部分已经被改变。例如,AIX和BSDI送回的IP总长度是20字节。而系统BSDI,FreeBSD,OpenBSD,ULTRIX和VAXen则将原样送回你所发送的IP标识符。某些系统(AIX和FreeBSD等)将送回不一致或等于0的校验和。这同样适用于UDP校验和。
Nmap对ICMP错误消息包进行九种不同的测试以标识系统之间的微笑差别。
9,TCP选项
是实现TCP/IP协议时可选的一个部分功能,这跟不同的系统实现有关,这些选项都是挖掘可用信息的好方法。原因是:
1,他们都是可选项,不是所有主机都可以实现的;
2,如果你所发送的包中对某个选项进行了设置,只要目标支持,那么目标主机就返回此选项;
3,可以在包中设置所有的选项进行测试。
例如:Nmap在每个探测包中设置所有的选项来进行测试:
Windows Scale=10;NOP;Max Segment Size=265;Timestamp;End of Ops;
从返回的的包中查看这些选项,就知道了什么系统支持他们。
还有一种被动操作系统识别方法,就是监控不同系统之间网络包的情况来判断目标的操作系统类型,siphon被用来进行这方面的测试,这个工作原理如下:
签名:
主要TCP的四个字段判断:
1,TTL:出站的包的存活时间;
2,Window size:窗口大小;
3,DF:是否设置了不准分片位;
4,TOS:是否设置了服务类型。
综合这些信息可以大概判断出目标的系统,但不能%100。
上一页 [1] [2] [3] [4] 下一页