|
445端口,当前洞SMB协议,服务未授权访问。未授这三个词凑一起,权漏基本等于把门钥匙插在锁上还贴了张纸条写着“随便进”。当前洞我上周扫了一个客户的服务公网IP段,三十多个地址里,未授六个开着445,权漏其中两个直接能读共享目录。当前洞不是服务空目录,是未授带财务表格和备份数据库的那种。 SMB这协议年纪不小了,权漏设计之初就没太考虑公网暴露的当前洞场景。它原本是服务给局域网用的,大家在一个交换机底下,未授互相传传文件,信任成本低。后来有人图省事,把445直接映射到公网,方便自己在外网访问公司文件。方便是方便了,攻击者也方便了。 未授权漏洞这事,分几种情况。一种是配置失误,共享权限设成了Everyone完全控制,谁都能读写。另一种是SMB签名没开,中间人可以直接篡改流量。还有一种更隐蔽的,靠NTLM relay,攻击者不需要破解密码,直接中继认证凭据就能拿到权限。这三种我都见过,第一种最多,也最致命。 有个案例印象很深。一家做外贸的小公司,二十来号人,服务器放在办公楼机房里,IT外包给一个兼职小伙。小伙为了老板出差能看报表,把445端口映射出去了。密码是公司名加123。我用smbclient试了一下,直接列出共享列表,里面有个叫“backup”的目录,权限是读写。打开一看,客户名单、报价单、合同扫描件,全在。我没动任何东西,截了个图就退出来了。后来通过朋友转告他们,第二天端口就关了。 这种漏洞利用门槛低到什么程度?Kali里敲一行命令的事。nmap扫段,smbclient -L列共享,smbclient //ip/share连上去。不需要写exp,不需要绕WAF,不需要任何高级技巧。一个刚学安全的学生,花半小时就能上手。这才是最让人不安的地方——攻击者不需要多厉害,防守方却经常连自己开了什么服务都不知道。 为什么445老是关不干净?我观察下来,几个原因。一是历史遗留,老系统老配置没人敢动。二是业务依赖,某些老旧ERP或财务软件必须走SMB共享。三是认知盲区,很多运维觉得“内网的东西外网看不到”,但边界防火墙的端口映射规则可能早就被改过。四是扫描盲区,资产台账不更新,影子IT遍地都是。 怎么处理?最直接的办法:封。公网入口封445,内网跨段封445,只允许必要的白名单IP访问。如果业务非要走SMB,套VPN,别裸奔。已经暴露的,赶紧查日志,看有没有异常连接。SMB日志默认不太记录详细访问,得开审计策略。另外,SMB签名和加密该开就开,性能损失在现代硬件上可以接受。 还有个坑:很多人以为改了默认端口就安全了。没用。SMB协议特征太明显,nmap一个版本探测就认出来了。换端口只是增加一点扫描成本,挡不住定向攻击。 我自己的习惯是,拿到一个网段先扫445和139。这两个端口开着,基本就能画出内网文件服务器的分布图。再结合smb-os-discovery脚本,连系统版本、主机名、域名都出来了。信息收集阶段就能把攻击面摸个七七八八。防守方要是连这个都没做过,那真是在裸奔。 说回那个外贸公司。后来我问那个兼职小伙,为什么开445。他说老板催得急,VPN又老是掉线,就直接映射了。我理解这种无奈。业务压力面前,安全经常是第一个被牺牲的。但牺牲的方式可以聪明一点——至少别用公司名加123当密码,至少把共享权限收紧到具体账号,至少开个SMB签名。这些操作花不了十分钟,但能挡住九成以上的自动化扫描。 445未授权这事,说到底不是技术难题,是管理问题。技术方案早就有了,封端口、开签名、做审计,三板斧下去基本干净。难的是有人盯着资产台账,有人定期扫端口,有人敢跟业务部门说“这个需求得加钱上VPN”。安全这行干久了,越来越觉得,工具和漏洞都是表象,背后的人和流程才是根子。 |