用sack去除扫描1433假结果?

用syn类扫描器比如我的SharpTcpScanner

扫描165.194.0.0-165.195.0.0这个ip段的1433端口

会出现大量连续ip的结果

几乎每个ip都返回正常的的syn+ack,就像真有个sqlserver服务器开开启一样

但是这些都是假的,如果你真连接的话就连不上

像这样的ip段有好多

平时扫描出10万个1433,有7、8万都是这样的假结果

还有的ip段,平时单个扫描不会返回,但是一旦大量发送syn扫描就开始出现这种情况

我不知道这是什么样的设备或者程序,但可以断定应该就是一个为了防止syn扫描的东西吧


之前一直为如何去掉这样的假结果而苦恼,后来发现了一个可以比较有效去除这些假结果的办法

就是

之前扫描我发送的是syn头最短的ip:20+tcp:20共40个字节

而如果用sqlconnection去连接,它发送的是52个字节,多出来的12个字节是02 04 05 b4 01 03 03 08 01 01 04 02

这12个字节是tcp的options,其中前4个是最大包大小,04 02就是sack

而我试了一下真的sqlserver会返回48个或52个字节的syn+ack,sack那里也是04 02,意思就是允许sack

而那些假结果返回的是44个字节,tcp的options只有4个字节就是开始的最大包大小,然后就没了,意思是不允许sack

于是就可以判断了,返回44个的就是假的,于是就有效的去除了那些假结果,并且把那些真的从这些地址段中给摘了出来


看了一下微软网站的介绍,还是在介绍win2000的文章,好像可以关掉sack还是怎么着,但是我想10000个人里9000个都不知道啥是sack,999个知道的也不会去做关闭sack这种事情吧。

你可能感兴趣的:(C#)