游客发表
第一次在Wireshark里看到tcp 0150这个过滤表达式的人,多半会愣一下。它不像tcp.port == 80那样直白,也不像tcp.flags.syn == 1那样一眼能猜出意图。0150是什么?端口号?标志位组合?还是某种内部编码?
其实答案比想象中朴素:tcp 0150是Wireshark过滤语法中一种简写形式,等价于tcp port 150。那个前导零没有任何魔法,纯粹是数字写法。150端口在IANA的注册表里挂着“NewS”的名字,但实际网络中几乎见不到正经服务跑在上面。所以你抓到这个过滤结果,大概率不是碰到了什么冷门协议,而是某台机器在扫端口,或者某个老旧内网系统里还残留着没人记得的配置。
我头一回认真对待这个表达式,是在排查一个客户内网的“幽灵流量”问题。他们的监控系统每隔几秒就报一次异常连接告警,源IP和目标IP都在内部,端口对是随机的,但目标端口偶尔会出现150。运维团队查了三天,翻遍了资产表,没人认领这个端口。后来我把抓包文件拖进Wireshark,敲下tcp 0150,过滤出十七条记录。看TCP流内容,全是空载ACK,没有payload。再看时间戳,间隔精确到毫秒级,像心跳。
顺着MAC地址查下去,发现是一台被遗忘的旧打印服务器。它的固件里写死了一个向管理端上报状态的逻辑,管理端IP早就换了,但它还在往旧地址发SYN。150端口是它固件里硬编码的“备用管理通道”。没人记得这回事,因为那台设备在资产系统里标记的状态是“已报废”,物理上却还插着网线通着电。
这件事让我对tcp 0150这个写法有了点私人感情。它像一把钥匙,专门开那些没人注意的锁。Wireshark的过滤语法里,类似的简写还有不少,比如tcp 80、udp 53,但0150这种带前导零的写法,在官方文档里几乎不提。你只能在显示过滤器的自动补全里偶然撞见它,或者像我一样,从某个老工程师的抓包笔记里抄来。
从协议层面看,150端口本身没什么故事。TCP头部里端口号占16位,150就是0x0096,普普通通。但端口号这东西有意思的地方在于,它从来不只是数字。1024以下的端口带着历史包袱,80和443绑着协议生态,3306和6379背后站着具体产品。150呢?它落在“知名端口”区间里,却像个占着车位不挪窝的老住户,没人知道它到底该干什么。
如果你现在打开Wireshark,在过滤器栏敲tcp 0150,然后点应用,大概率什么也看不到。这很正常。真正能抓到这个端口流量的场景,要么是内网里有古董设备在倔强地发包,要么是安全演练时有人故意用冷门端口做隐蔽通道。后一种情况我遇到过一回,红队把C2心跳藏在150端口上,因为蓝队的过滤规则里只写了“监控常见端口”,没人在意一个带前导零的写法能绕过多层检测。
所以这个表达式值得记一笔。它不复杂,但足够冷。冷到大多数人扫一眼就划过去,冷到可以当做一个微小的技术暗号——你知道tcp 0150是什么意思,说明你至少认真翻过Wireshark的过滤器语法,或者踩过某个老旧内网的坑。这两种经历,哪一种都不算轻松。
友情链接