您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Nmap使用及指纹库分析报告
华中科技大学计算机学院《计算机网络安全》实验报告实验名称:Nmap扫描器使用和分析团队成员:姓名班级学号贡献百分比得分教师评语:一.环境(详细说明运行的操作系统,网络平台,机器的IP地址)主机操作系统:Windows7Ultimate(关闭防火墙)虚拟机环境:VMwareWorkstation7.0+WindowsXPProfessionalSP3(关闭防火墙)主机虚拟IP:192.168.239.1虚拟机IP:192.168.239.128扫描软件:Zenmap5.21版截包工具:WireShark1.3.1版二.实验目的掌握主机、端口扫描的原理掌握Nmap扫描器的使用掌握Nmap进行远程OS检测的原理三.实验步骤及结果(包括主要流程和说明)1.安装Nmap1)进入页面,下载最新的windows平台的nmap:nmap-5.21-setup.exe。2)安装过程截图略,全部选择默认选择即可。2.使用Nmap扫描主机1)TCPSYNscan:扫描截图如图1所示:图1从图中可以看到,共扫描了192.168.239.128的1000个tcp端口,发现有990个关闭,并列出了10个开放的端口。我尝试打开了被扫描主机的windows自带的防火墙,扫描结果就变成了所有的1000个端口都被过滤,无法扫描到开放的端口。2)TCPconnectscan扫描截图如图2所示:扫描结果和TCPSYNscan相同,但是耗时却是TCPSYNscan的180多倍,用了4分多钟才完成。原因大概是因为TCPconnectscan是调用connect()函数来打开一个链接,效率较低,而TCPSYNscan不必全部打开一个tcp连接,只是发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。图23)UDPscan:扫描截图如图3所示:扫描速度非常快,扫描1000个端口,发现了4个udp端口,但是其中有三个的状态是open|filtered,filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。但是此时被探测主机的防火墙实际是关闭的,可能是nmap无法判断这几个端口的状态。图34)SCTPINITscan所有扫描的42个端口都被过滤,原因不明。图45)TCPNULL,FIN,andXmasscans扫描截图如图5、6、7所示,依次为TCPNULL,FIN和Xmas扫描:图5图6图7三个扫描的结果都是未发现开放的端口,略有不同的是,NULL扫描探测到端口的状态是open|filtered,而另外两个扫描的结果都是closed。6)TCPACKscan扫描截图如图8所示:图8没有找到任何开放的端口,但是了解了ACK扫描的原理,就知道这也是正常的,因为这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。我想,这个扫描应该要结合wireshark来使用,分析返回的包。7)TCPWindowscan扫描截图如图9所示:对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口。因而扫描结果也就和ACK扫描一样了,未扫描到开放的端口图98)TCPMaimonscan扫描结果如图10所示:Maimon扫描是探测FIN/ACK,根据RFC793(TCP),一个RST包应该作为响应当端口是open或者closed。图109)IPprotocolscan扫描截图如图11所示:图11IP协议扫描允许你判断目标主机支持哪些IP协议,从结果可以看到共扫描了256个端口,发现被扫描主机支持4种IP协议,但是其中一个132状态为关闭。10)CustomTCPscan图12图13图14设置所有位的扫描截图如图12所示:也可只设置某一位,比如设置SYN标志位,则扫描效果等同于SYN扫描,如图13所示:除了指定需要的标志位,还可以指定一个TCP扫描类型(如-sA,-sF)。这些告诉nmap怎么解释响应,例如,一个SYN扫描认为没有响应表明一个filtered端口,一个FIN扫描为open|filtered.比如指定为FIN扫描,则扫描出的同样的状态都为open|filtered。如图14所示:3.深入了解NmapOS指纹库的结构和含义1)准备工作运行wireshark,打开主菜单的CaptureOption菜单,设置需要抓包的网卡为虚拟机的网卡,其余全部默认,如图15所示:图15然后选择“Start”,wireshark即进入captrue状态,截获所有的主机与虚拟机之间的通信。2)在Nmap中执行OSDetection命令,结果如图16所示:可以看出,Nmap成功的探测到了虚拟机的操作系统为MicrosoftWindowsXPSP2orSP3图16此时,wireshark中也截获了所有的nmap发出的报文,如图17所示:图17最左端为截获的包的编号,我们看到总共截获了2137个报文,这么多报文当然很难一个个的分析,我们主要要找出其中有用的部分。3)对照指纹库分析截获的报文首先找到Nmap安装目录下的nmap-os-db文件,用记事本打开,看到里面有很多指纹库,查找WindowsXPSP3,本来以为只有一个,但是却搜索到了很多个,猜测可能原因是只要符合其中任何一个就认为是WindowsXPSP3吧。我们可以对照着截获的报文,选取其中最接近的一个。比如我们选择下面这个指纹库:#Version5.1(Build2600.xpsp.080413-2111:ServicePack3)FingerprintMicrosoftWindowsXPSP3ClassMicrosoft|Windows|XP|generalpurposeSEQ(SP=104-10E%GCD=1-6%ISR=107-111%TI=I%TS=0)OPS(O1=M5B4NW0NNT00NNS%O2=M5B4NW0NNT00NNS%O3=M5B4NW0NNT00%O4=M5B4NW0NNT00NNS%O5=M5B4NW0NNT00NNS%O6=M5B4NNT00NNS)WIN(W1=7D78%W2=7D78%W3=7D78%W4=7D78%W5=7D78%W6=7D78)ECN(R=Y%DF=Y%T=7B-85%TG=80%W=7D78%O=M5B4NW0NNS%CC=N%Q=)T1(R=Y%DF=Y%T=7B-85%TG=80%S=O%A=S+%F=AS%RD=0%Q=)T2(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=Y%DF=Y%T=7B-85%TG=80%W=7D78%S=O%A=S+%F=AS%O=M5B4NW0NNT00NNS%RD=0%Q=)T4(R=Y%DF=N%T=7B-85%TG=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=N%T=7B-85%TG=80%W=0%S=A|O%A=O%F=R%O=%RD=0%Q=)T7(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=O|S+%F=AR%O=%RD=0%Q=)U1(DF=N%T=7B-85%TG=80%IPL=B0%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(DFI=S%T=7B-85%TG=80%CD=Z)接下来我们要弄清指纹库的含义:a)SEQtestSEQtest是通过向被探测主机的一个开放的端口连续发送6个SYN报文,然后收集其返回的SYN+ACK报文得到的。通过分析其返回报文的初始序列号(ISN)获取被扫描主机的特征。本实验中,nmap找到了smtp这个开放的端口,截获的报文如图18所示:图18图中用黑色标记的部分即为nmap发出的6个SYN报文,紧跟其后的就是被探测主机返回的SYN+ACK报文。其初始序列号分别如图19所示:图19nmap就根据这6个初始序列号分别算出SP:序列号的可预测指数,是对预测序列号难度的一个大概的估计值GCD:6个序列号差值的最大公约数ISR:序列号的平均增长率(以上三个值的计算都比较复杂,这里就不进行验证了)TI:这是一个对返回报文的IP的ID字段进行分析的测试,对于不同的情况TI取不同的值,这里TI=I是说明6个ID号之间的差别没有超过10,分析截获的报文印证了这一结果,如图20所示:图20这里只截了第一个报文和最后一个报文的图,其ID号都是连续的,从31672到31677SS:这个测试的结果建立在6个TCP返回报文和两个ICMP返回报文的基础上。这里SS=S是指ICMP返回报文的IPID共享TCP返回报文的IPID,即ICMP返回报文的IPID值是紧跟着前一个TCP返回报文的值,分析截获的报文印证了这一结果,如图21所示:图21第一个窗口是最后一个TCP返回报文的截图,后面两个窗口是两个ICMP返回报文的截图,可以清晰的看到其值是加1递增的。TS:该测试是分析6个TCP返回报文的TCPtimestamp选项,检查TSval的值。这里TS=0是指每个报文的TSval的值都是0,分析截获的报文印证了这一结果,如图22所示:图22b)OPStest该测试仍然是通过向被探测主机的一个开放的端口连续发送6个SYN报文,然后收集分析其返回的SYN+ACK报文。该测试主要记录TCP的option字段,例如O1=M5B4NW0NNT00NNS,M代表MSS,5B4是十六进制数,表示MSS的大小,换算成十进制就是1460,N表示NOP,W表示window,0表示窗口大小,NN表示两个NOP,T表示timestamp,两个0表示TSval和TSecr的值都为0,又两个NN也是表示两个NOP,最后的S表示SACKpermitted。其O1~O6分别对应6个返回报文,可以看到,指纹库里O1~O6只有O3、O6与其他几项不同,其余都是M5B4NW0NNT00NNS。分析截获的报文,印证了这一结果,截图如图23所示:图23可以看到O3对应的是M5B4NW0NNT00,O6对应的是M5B4NNT00NNS,其余的都是M5B4NW0NNT00NNS。c)WINtest该测试就是简单的记录6个TCP返回报文的窗口大小。从W1~W6分别对应6个报文,这里W1~W6的值都是0xFFFF,换算成十进制就是65535。分析截获的报文,印证了这一结果,截图如图24所示。可以看到WindowSize字段的值都是65535图24d)ECNtest该测试向目标主机发送一个设置了CWR和ECN字段的SYN报文,然后记录其返回报文的各个字段的值,这里ECN(R=Y%DF=Y%T=7B-85%TG=80%W=FFFF%O=M5ACNW0NNS%CC=N%Q=)R=Y表示有回应,DF=Y表示设置了Don’tfragment字段,T=7B-85,表示IP报文的TTL值介于0x7B和0x85之间即123到133之间,TG=80是Nmap猜测的TTL的值为128,W=FFFF表示windowsize的大小是65535,O表示option字段的状态(前面已经解释过),CC=N
本文标题:Nmap使用及指纹库分析报告
链接地址:https://www.777doc.com/doc-3763599 .html