我正在分析一些针对未绑定运行的 dns 服务器的事件。在这项调查的过程中,我遇到了涉及对 dns 服务器的查询的流量,这些服务器被报告在某些情况下具有 1 到 1024 之间的源端口。据我所知,这些是为服务保留的,因此不应该有流量从那些发起/发起到服务器。
因为我也知道这是一种实践,而不是随时间演变的规律,所以我知道在数据包的源端口字段中放置任何数字没有技术限制。所以我的结论是这些查询是由某个工具生成的,其中源端口填充了一个随机值(频率大约在 0-65535 之间平均分配,除了 32768 附近的峰值),这是故意攻击.
有人可以确认/否认源端口理论并证明我的结论或宣称我是个白痴并解释原因吗?
提前致谢。
编辑 1:添加更精确的信息以解决由于我的报告不完整而引起的一些争议。
这绝对不是端口扫描。这是到达端口 53 UDP 的流量并且未绑定显然接受它作为(几乎)有效的 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
Run Code Online (Sandbox Code Playgroud)
所以 256497 条消息,使用了 56438 …
给定以下输入(这是输出的淡化版本,具有另一个复杂查询的 10 万多个对象):
echo '{ "a": { "b":"c", "d":"e" } }{ "a": { "b":"f", "d":"g" } }' | jq '.'
{
"a": {
"b": "c",
"d": "e"
}
}
{
"a": {
"b": "f",
"d": "g"
}
}
Run Code Online (Sandbox Code Playgroud)
所需的输出:
{
"c": "e",
"f": "g"
}
Run Code Online (Sandbox Code Playgroud)
或(更适合后续使用):
{
x: {
"c": "e",
"f": "g"
}
}
Run Code Online (Sandbox Code Playgroud)
我一生都无法弄清楚该怎么做。我真正的问题当然是多对象输入数据,我真的不知道它是否是有效的 JSON。Jq 生成并接受它,而 jshon 没有。我尝试了各种可能性,但没有一个能产生我所需要的。我认为这是最有可能的候选人:
echo '{ "a": { "b":"c", "d":"e" } }{ "a": { "b":"f", "d":"g" } }' | jq ' . | { …Run Code Online (Sandbox Code Playgroud)