Nessus4.4 vmware linux下不能正确扫描的问题和测试

一、             遇到的问题

Nessusvmware下安装的linux系统里不能扫描外部IP地址,只能对vmware内部IP段进行扫描,具体情况如下

环境:

1vmware下安装的BT4 linux vmware eth0 ip192.168.11.131nessus安装在这上面(便于认识以后统称BT4

2vmware主机,windows系统,vmware eth0 ip192.168.11.1(网关)和192.168.11.2dns),8139网卡eth0 192.168.18.2(真实物理ip)。(便于认识该主机统称WIN

问题:

    Nessus默认规则扫描192.168.11.xvmware网段)正常,扫描结果也都正常。扫描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

分析:

    起初怀疑和端口扫描选项有关,于是分别测试一下几种端口扫描方法,1syn+ping host2tcp connect + ping host3syn4tcp connect这几种方法。结果如下

1syn+ping host,主机不在线

2tcp connect + ping host,主机不在线

3syn,在线,返回大量开放端口信息,全误报,并且无主机cve这类漏洞扫描信息

4tcp connect,主机不在线

    然后通过抓包分析,主要分析2种情况,一种主机不在线,一种返回大量误报信息。

第一种不在线情况过程(端口扫描选项 ping hostSYN scan

1BT4 arp请求查找dns服务器192.168.11.2WIN主机),然后做反向arp请求,dns查询失败

2BT4 icmp request ID字段为0WIN icmp replay ID字段为0

3BT4 WIN 发送smtp60000-60009 SYN请求,下面以其中的SMTP来截图

4:可以看到BT4 先同WIN进行了3次握手建立连接。然后WIN主动发起了FIN关闭,BT4确认后使用reset进行了终止

5:BT463000端口向WIN 60000端口发起SYN请求,过程如smtp一样,不同是源端口和目的端口每次+1,到6300960009 reset后停止发送,同时reset smtp,总共42个包,多次测试后发现结束总是60009 resetsmtp reset收尾。

第二种大量误报信息过程(端口扫描选项SYN scan

1:全程发送大量数据包约有29000个,过程如下

2DNS请求同第一种情况一样,反向查询

3:查询失败后接着发送了srt UDP 32831 à det DUP 9101 请求,返回端口不可达信息

4:然后对大量已知TCP端口发送SYN请求,httpfingersmtpftp等等,用http来列举过程如下

 

 

5:如图,3次握手建立连接后,WIN同上一样,发送FIN关闭连接,但BT4这时做了个http1.1 GET请求,然后WIN给予ACK确认,接着BT4 reset关闭该连接。

6:其他端口过程基本类似,fingerhttp此类的会做个get或是help请求,我想是用来识别服务用?,然后就关闭。telnet这种是如同1一样,不做请求而reset关闭。

7:最终结果是所有端口关闭后,扫描结束,report主机在线,开放了3188个端口,无风险。

8:问题在于12的情况下,WIN主机并未开放这些端口,但依然给予了ack握手确认。而syn扫描在收到ACK后应发生reset而不是ack确认。nessus选项也确实只开放syn扫描模式。为什么会这样?

二、             其他方面测试

为了弄明白原因,后来又做了其他测试,大体是用nmapncfping此类工具做了测试和排查。基本确定了一些问题又带来更多问题

1:上述2个例子测试,分别用的TCP连接扫描和SYN扫描,TCP连接扫描会三次握手建立连接,而SYN会在第二次握手后,第三次不给予ACK而是reset掉。但我反复对比测试nessus的数据包,无论是连接扫描还是syn扫描,方式结果都一样,都会3次握手完毕后在reset(用0策略,只开启单个扫描选项测试)

2:如果在选项中不开启扫描,而是勾选一些风险漏洞进行测试,依然会进行第一种情况的扫描,但接着会进行风险漏洞扫描。所以可以关闭扫描选项,而是漏洞测试结果正常。

3:与工具无关,我做了nmapnctcp扫描都会导致大量误报。如果用UDP扫描就不会发生上述问题。

4:没想明白,为什么对端windows主机tcp端口未开放的情况下,依然会给予tcp连接建立确认,而不是立刻reset掉。(如果是UDP扫描端口关闭会返回icmp端口不可达消息)

5:在家里nessus环境是使用路由器NAT上网,本机安装的nessus,除了没vmware环境外照理说应该同上述环境类似,同样NAT出去,但家里扫描工作正常。回去后再做做对比抓包测试。

三、             解决方法

Nessus目前这种状况,我暂时关闭了tcp的扫描,使用pingudp扫描模式后扫描正常。有很多问题没想明白,还是自己会的太少,对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篡改导致与实际情况不符