我正在分析一些针对运行unbound的dns服务器的事件。在调查过程中,我遇到了涉及查询 dns 服务器的流量,有时源端口在1到1024之间报告。据我所知,这些端口是保留给服务使用的,因此不应该从这些端口发起/启动到服务器的流量。
由于我也知道这是一个随着时间演变而形成的实践,而不是一项法律,所以我知道在数据包的源端口字段中放置任何数字都没有技术限制。因此,我的结论是这些查询是由某个工具生成的,其中源端口填充了随机值(频率大约平均分布在0-65535之间,除了32768附近的峰值),这是一种故意的攻击。
能否有人确认/否认源端口理论、证实我的结论或者说我是个彻头彻尾的白痴,并解释原因呢?
提前致谢。
编辑1:添加更精确的信息以解决下面由于我的不完整报告而引起的争议。
这绝对不是端口扫描。它是通过端口53 UDP到达的流量,并且unbound显然接受了它作为(几乎)有效的dns查询,同时为每个数据包生成以下错误消息:
所以最低的源端口是4,它被使用了5次。
由于我也知道这是一个随着时间演变而形成的实践,而不是一项法律,所以我知道在数据包的源端口字段中放置任何数字都没有技术限制。因此,我的结论是这些查询是由某个工具生成的,其中源端口填充了随机值(频率大约平均分布在0-65535之间,除了32768附近的峰值),这是一种故意的攻击。
能否有人确认/否认源端口理论、证实我的结论或者说我是个彻头彻尾的白痴,并解释原因呢?
提前致谢。
编辑1:添加更精确的信息以解决下面由于我的不完整报告而引起的争议。
这绝对不是端口扫描。它是通过端口53 UDP到达的流量,并且unbound显然接受了它作为(几乎)有效的dns查询,同时为每个数据包生成以下错误消息:
notice: remote address is <ipaddress> port <sourceport>
notice: sendmsg failed: Invalid argument
$ cat raw_daemonlog.txt | egrep -c 'notice: remote address is'
256497
$ cat raw_daemonlog.txt | egrep 'notice: remote address is' | awk '{printf("%s\n",$NF)}' | sort -n | uniq -c > sourceportswithfrequency.txt
$ cat sourceportswithfrequency.txt | wc -l
56438
共有256497条消息,使用了56438个唯一的源端口。
$ cat sourceportswithfrequency.txt | head
5 4
3 5
5 6
所以最低的源端口是4,它被使用了5次。
$ cat sourceportswithfrequency.txt | tail
8 65524
2 65525
14 65526
1 65527
2 65528
4 65529
3 65530
3 65531
3 65532
4 65534
因此,最高使用的源端口是65534,并且已使用4次。
$ cat sourceportswithfrequency.txt | sort -n | tail -n 25
55 32786
58 35850
60 32781
61 32785
66 32788
68 32793
71 32784
73 32783
88 32780
90 32791
91 32778
116 2050
123 32779
125 37637
129 7077
138 32774
160 32777
160 57349
162 32776
169 32775
349 32772
361 32773
465 32769
798 32771
1833 32768
所以32768左右的峰值是真实存在的。
我的原始问题仍然存在:这种流量模式是否暗示着攻击,或者是否有一个逻辑上的解释,例如源端口小于1024的流量?