尽管过滤,但连接到端口 2000 和 5060 成功

信息安全 地图 港口 iptables 网络电话
2021-09-06 17:42:09

我运行我自己的(基于 Ubuntu 的)路由器,并iptables配置为默认丢弃所有传入的数据包。令我惊讶的是,运行nmap扫描(从 WAN 端)显示两个与 VOIP 相关的开放端口:

nmap -Pn -v --reason XXX.net

Starting Nmap 7.60 ( https://nmap.org ) at 2018-03-28 09:52 CEST
Initiating Parallel DNS resolution of 1 host. at 09:52
Completed Parallel DNS resolution of 1 host. at 09:52, 0.09s elapsed
Initiating Connect Scan at 09:52
Scanning XXX.net (XXX.XXX.XXX.XXX) [1000 ports]
Discovered open port 21/tcp on XXX.XXX.XXX.XXX
Discovered open port 22/tcp on XXX.XXX.XXX.XXX
Discovered open port 5060/tcp on XXX.XXX.XXX.XXX
Discovered open port 2000/tcp on XXX.XXX.XXX.XXX
Completed Connect Scan at 09:52, 5.17s elapsed (1000 total ports)
Nmap scan report for XXX.net (XXX.XXX.XXX.XXX)
Host is up, received user-set (0.035s latency).
Not shown: 995 filtered ports
Reason: 995 no-responses
PORT     STATE  SERVICE    REASON
21/tcp   open   ftp        syn-ack ttl 52
22/tcp   open   ssh        syn-ack ttl 54
113/tcp  closed ident      reset ttl 254
2000/tcp open   cisco-sccp syn-ack ttl 61
5060/tcp open   sip        syn-ack ttl 61

Read data files from: /usr/local/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 5.33 seconds

ftp并且ssh是正确的,因为这两个服务是在路由器上配置的。但是cisco-sccpsip开放对我来说是个新闻。

实际上,telnet连接到两个端口都是成功的:

telnet XXX.net 2000
Trying XXX.XXX.XXX.XXX...
Connected to XXX.net.
Escape character is '^]'.

telnet XXX.net 5060
Trying XXX.XXX.XXX.XXX...
Connected to XXX.net.
Escape character is '^]'.

但是netstat -talpn在会话处于活动状态时在路由器上运行telnet显示没有为任一端口建立连接。日志显示iptables丢弃数据包:

Mar 27 20:52:16 router DROP INPUT  IN=ppp0 OUT= MAC=MM:MM:MM:M SRC=YYY.YYY.YYY.YYY DST=XXX.XXX.XXX.XXX LEN=60 TOS=00 PREC=0x00 TTL=51 ID=39215 DF PROTO=TCP SPT=52200 DPT=2000 SEQ=106277563 ACK=0 WINDOW=42340 SYN URGP=0 MARK=0

从哪里连接YYY.YYY.YYY.YYY的IP telnet

我的诊断正确吗?

telnet如果是,即使数据包在路由器处丢弃,如何建立连接?谁在监听 2000 和 5060 端口?

1个回答

扫描仪和目标之间有一些东西代表目标做出响应,欺骗其源地址,从而看起来像是目标本身。当您以 root 身份运行 Nmap 扫描时--reason -v,它会显示每个端口的响应数据包的 IP 生存时间 (TTL) 值:

港口国服务原因
21/tcp 打开 ftp syn-ack ttl 52
22/tcp 打开 ssh syn-ack ttl 54
113/tcp 关闭 ident 重置 ttl 254
2000/tcp 打开 cisco-sccp syn-ack ttl 61
5060/tcp 打开 sip syn-ack ttl 61

TTL 字段从某个数字(通常为 128 或 64)开始,并由每个中间 IP 路由器或跃点递减。如果任何接收到的 TTL 字段出乎意料地高,这可能意味着数据包起源于比预期更接近扫描仪的位置,即来自其中一个跃点。

你说 21 和 22 预计会开放。它们具有不同的 TTL 值,这可能意味着其中一个 (FTP) 被端口转发到网络内的系统,或者可能意味着正在进行一些非对称路由,从而导致每次都使用不同的路径。但真正的问题是超过 2000 和 5060,它们比最接近的预期距离近 7 跳。这些几乎肯定会被截获。

您应该能够通过执行跟踪路由来确定哪个跃点正在拦截流量。如果您将其流量限制到有问题的一个端口,则可以使用 Nmap 来执行此操作:

nmap --traceroute -Pn -p 2000 example.com

这将显示一系列跃点,最终以“来自”您的目标的一个跃点为高潮。它实际上最有可能是此列表中最后一跳之外的一跳。将其与按预期运行的端口的跟踪路由进行比较。例如,如果您的扫描如下所示:

# nmap --traceroute -Pn -p 2000 example.com
TRACEROUTE(使用端口 2000/tcp)
1 2.04 毫秒网关 (192.168.1.1)
2 14.37 毫秒 10.100.96.1
3 15.60 毫秒 example.com (192.0.2.5)

# nmap --traceroute -Pn -p 22 example.com
TRACEROUTE(使用端口 22/tcp)
1 2.04 毫秒网关 (192.168.1.1)
2 14.37 毫秒 10.100.96.1
3 15.60 毫秒 182.23.16.88
4 10.11 毫秒 182.23.16.82
5 44.73 毫秒 example.com (192.0.2.5)

最后一个公共跃点是 10.100.96.1。序列中的下一跳是 182.23.16.88,这很可能是欺骗响应的那个。

至于为什么这些端口可能被欺骗,我注意到 SCCP(端口 2000)和 SIP(​​端口 5060)都是 VoIP 服务。也许您的 ISP 不希望您运行 VoIP 服务器、客户端或中继,并且正在使用这种方法来阻止它?