防火墙/DPI 系统在随机端口上找到 ssh 服务器 IP 的速度有多快

防火墙/DPI 系统在随机端口上找到 ssh 服务器 IP 的速度有多快

嗅探端口上的 SSH 流量22以确定服务器 IP 地址对于任何防火墙/DPI 系统来说都不难。
我想知道端口是否随机的因此,我们有大约 60k 种可能性,防火墙/DPI 系统可以多快找到 SSH 服务器 IP 地址。

答案1

这不是一个 100% 正确的答案,但我更愿意把它放在这里,以防其他人有这个问题

我们知道 SSH 是使用 TCP 连接到服务器的,并且我们知道 TCP 具有有效负载,即发送给对等方的实际数据。SSH 的第一个有效负载似乎说明了其版本。例如SSH-2.0。 因此

  • 如果我们捕获第一个数据包,其有效载荷不为 0,并且
  • 该有效载荷包含“SSH-2.0”

我们可以告诉这是一个 SSH 隧道,并确定 SSH 服务器的 IP 地址


让我们看看它的实际效果

字符串“SSH-2.0”到hax

echo "SSH-2.0" | hexdump -C -n 7
00000000  53 53 48 2d 32 2e 30                              |SSH-2.0|
00000007

捕获第一个非零有效载荷(仅 1 个数据包)

tcpdump -vv -X -n -i wlp2s0  -c 1 "tcp[tcpflags] & (tcp-push) != 0 and port 22" 
tcpdump: listening on wlp2s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
13:27:32.609719 IP (tos 0x48, ttl 64, id 19848, offset 0, flags [DF], proto TCP (6), length 73)
    192.168.1.109.47574 > ADDRESS:PORT Flags [P.], cksum 0x1dc7 (correct), seq 3554308024:3554308045, ack 3135539829, win 502, options [nop,nop,TS val 2550455211 ecr 2971629478], length 21
    0x0000:  4548 0049 4d88 4000 4006 3fbc c0a8 016d  EH.IM.@.@.?....m
    0x0010:  576b 93a2 b9d6 03dd d3da 6fb8 bae4 8a75  Wk........o....u
    0x0020:  8018 01f6 1dc7 0000 0101 080a 9804 dbab  ................
    0x0030:  b11f 77a6 5353 482d 322e 302d 4f70 656e  ..w.SSH-2.0-Open     <== here
    0x0040:  5353 485f 392e 350d 0a                   SSH_9.5..
1 packet captured
3 packets received by filter
0 packets dropped by kernel

我们可以看到这些序列5353 482d 322e 30用 ASCII 表示“SSH-2.0”。这里我们依靠端口 22 来捕获数据。

我最初的问题是,如果端口是随机的怎么办?如何在不知道端口的情况下确定 SSH 流量?

tcpdump 有效载荷过滤器

我发现,要确定 SSH 连接,我们不需要端口。我们可以直接匹配/过滤有效负载中的“SSH-2.0”字符串

tcpdump -vv -X -n -i wlp2s0  -c 1 'tcp[32:4] = 0x5353482d'

这里我们只匹配 1 个数据包,如果有效载荷的 4 个字节包含0x5353482dASCII 中的“SSH-”。结果是一样的。查找5353 482d

    0x0000:  4548 0049 e6fe 4000 4006 a645 c0a8 016d  EH.I..@[email protected]
    0x0010:  576b 93a2 aa4e 03dd 349a 8f97 c475 a3f3  Wk...N..4....u..
    0x0020:  8018 01f6 f39e 0000 0101 080a 9859 2657  .............Y&W
    0x0030:  b173 c254 5353 482d 322e 302d 4f70 656e  .s.TSSH-2.0-Open     <== here
    0x0040:  5353 485f 392e 350d 0a                   SSH_9.5..
1 packet captured
2 packets received by filter
0 packets dropped by kernel

结论(我的)

对于防火墙/DPI 系统来说,SSH 端口无关紧要,我们可以保留原样(22)或将其更改为随机端口,因为通过查看第一个非零有效负载,我们可以找到 SSH 连接

如果你发现更好的测试/解释,请纠正我

相关内容