一、 遇到的问题
Nessus在vmware下安装的linux系统里不能扫描外部IP地址,只能对vmware内部IP段进行扫描,具体情况如下
环境:
(1)vmware下安装的BT4 linux vmware eth0 ip为192.168.11.131,nessus安装在这上面(便于认识以后统称BT4)
(2)vmware主机,windows系统,vmware eth0 ip为192.168.11.1(网关)和192.168.11.2(dns),8139网卡eth0 192.168.18.2(真实物理ip)。(便于认识该主机统称WIN)
问题:
Nessus默认规则扫描192.168.11.x(vmware网段)正常,扫描结果也都正常。扫描192.168.18.2异常,查看nessus log日志显示18.2主机不在线(实际都是同一台机器)。Log如下
[Fri Jan 21 03:33:02 2011][10704.5530] User hey starts a new scan (31c72297-8f06-8745-e775-90f7be11f20673bb9d1353fa91ee) [Fri Jan 21 03:33:02 2011][10704.5530] Reducing max_hosts to 16 (HomeFeed) [Fri Jan 21 03:33:03 2011][10704.5530] user hey starts a new scan. Target(s) : 192.168.11.1,192.168.18.2,211.94.163.99, with max_hosts = 16 and max_checks = 5 [Fri Jan 21 03:33:03 2011][10704.5530] user hey : testing 192.168.11.1 (192.168.11.1) [5536] [Fri Jan 21 03:33:03 2011][10704.5530] user hey : testing 192.168.18.2 (192.168.18.2) [5537] [Fri Jan 21 03:33:04 2011][10704.5537] user hey : The remote host (192.168.18.2) is dead [Fri Jan 21 03:33:04 2011][10704.5537] Finished testing 192.168.18.2. Time : 1.04 secs [Fri Jan 21 03:33:47 2011][10704.5536] Finished testing 192.168.11.1. Time : 43.80 secs [Fri Jan 21 03:33:48 2011][10704.5530] user hey : test complete [Fri Jan 21 03:33:48 2011][10704.5530] Scan done: 1 hosts up [Fri Jan 21 03:33:48 2011][10704.5530] Total time to scan all hosts : 46 seconds [Fri Jan 21 03:33:51 2011][10704.2] Task 31c72297-8f06-8745-e775-90f7be11f20673bb9d1353fa91ee is finished |
分析:
起初怀疑和端口扫描选项有关,于是分别测试一下几种端口扫描方法,1、syn+ping host;2、tcp connect + ping host;3、syn;4、tcp connect这几种方法。结果如下
1:syn+ping host,主机不在线
2:tcp connect + ping host,主机不在线
3:syn,在线,返回大量开放端口信息,全误报,并且无主机cve这类漏洞扫描信息
4:tcp connect,主机不在线
然后通过抓包分析,主要分析2种情况,一种主机不在线,一种返回大量误报信息。
第一种不在线情况过程(端口扫描选项 ping host、SYN scan)
1:BT4 arp请求查找dns服务器192.168.11.2(WIN主机),然后做反向arp请求,dns查询失败
2:BT4 做icmp request ID字段为0,WIN icmp replay ID字段为0
3:BT4 向WIN 发送smtp和60000-60009 SYN请求,下面以其中的SMTP来截图
4:可以看到BT4 先同WIN进行了3次握手建立连接。然后WIN主动发起了FIN关闭,BT4确认后使用reset进行了终止
5:BT4用63000端口向WIN 60000端口发起SYN请求,过程如smtp一样,不同是源端口和目的端口每次+1,到63009和60009 reset后停止发送,同时reset smtp,总共42个包,多次测试后发现结束总是60009 reset后smtp reset收尾。
第二种大量误报信息过程(端口扫描选项SYN scan)
1:全程发送大量数据包约有29000个,过程如下
2:DNS请求同第一种情况一样,反向查询
3:查询失败后接着发送了srt UDP 32831 à det DUP 9101 请求,返回端口不可达信息
4:然后对大量已知TCP端口发送SYN请求,http、finger、smtp、ftp等等,用http来列举过程如下
5:如图,3次握手建立连接后,WIN同上一样,发送FIN关闭连接,但BT4这时做了个http1.1 GET请求,然后WIN给予ACK确认,接着BT4 reset关闭该连接。
6:其他端口过程基本类似,finger、http此类的会做个get或是help请求,我想是用来识别服务用?,然后就关闭。telnet这种是如同1一样,不做请求而reset关闭。
7:最终结果是所有端口关闭后,扫描结束,report主机在线,开放了3188个端口,无风险。
8:问题在于1和2的情况下,WIN主机并未开放这些端口,但依然给予了ack握手确认。
二、其他方面测试
为了弄明白原因,后来又做了其他测试,大体是用nmap、nc、fping此类工具做了测试和排查。基本确定了一些问题又带来更多问题
1:上述2个例子测试,分别用的TCP连接扫描和SYN扫描,TCP连接扫描会三次握手建立连接,而SYN会在第二次握手后,第三次不给予ACK而是reset掉。但我反复对比测试nessus的数据包,无论是连接扫描还是syn扫描,方式结果都一样,都会3次握手完毕后在reset(用0策略,只开启单个扫描选项测试)
2:如果在选项中不开启扫描,而是勾选一些风险漏洞进行测试,依然会进行第一种情况的扫描,但接着会进行风险漏洞扫描。所以可以关闭扫描选项,而是漏洞测试结果正常。
3:与工具无关,我做了nmap、nc的tcp扫描都会导致大量误报。如果用UDP扫描就不会发生上述问题。
4:没想明白,为什么对端windows主机tcp端口未开放的情况下,依然会给予tcp连接建立确认,而不是立刻reset掉。(如果是UDP扫描端口关闭会返回icmp端口不可达消息)
5:在家里nessus环境是使用路由器NAT上网,本机安装的nessus,除了没vmware环境外照理说应该同上述环境类似,同样NAT出去,但家里扫描工作正常。回去后再做做对比抓包测试。
三、解决方法
Nessus目前这种状况,我暂时关闭了tcp的扫描,使用ping和udp扫描模式后扫描正常。有很多问题没想明白,还是自己会的太少,对nessus了解不够,还要更多的学习测试实验。
By jason he
2011-1-21
==========
在家测试结果
nessus系统为windows系统,经本网段测试或是nat到其他外部IP,各类扫描都正常。如对端端口关闭,会发送reset过来,符合正常的协议规范。
只是现在更迷糊了,为什么在单位的vmware下会出现这么奇怪的现象,nessus不按正常情况扫描,还有那些外部IP端口明明都是关闭的,为何会发送ack来建立连接。
难道这些都是VMware导致的问题?在单位环境中除了BT4外,Ubuntu也是同样的情况,可以考虑在单位建立这样的环境
A B C
WIN BT4 test
然后B扫C,在A的NAT口和C的网卡同时抓包,看是否包受到vmware篡改导致与实际情况不符