网安SMB枚举哪些坑?我差点被这些“老朋友”坑到怀疑人生!
哎,兄弟们,今天咱们不聊那些高大上的APT攻击,也不扯什么0day漏洞,就聊聊渗透测试里最基础、但最容易让人翻车的——SMB枚举,说真的,我干网安这行五六年了,每次看到新手兴冲冲地去扫139/445端口,然后一头撞进那些“隐形地雷”里,我是又心疼又想笑,今天我就把自己的血泪史掏出来,跟你们好好扒一扒,网安SMB枚举到底埋着哪些坑!如果你正打算对内网做一次深度排查,或者刚入门想练手,这篇文章建议你反复看三遍,真的,能救命!

第一个坑:版本信息?别信那个横幅!
你是不是也有这个习惯?用Nmap一扫,“叮”一声,看到445端口开着,上面写着Windows 6.1或者Samba 4.6.2,立马就放心了?哎呀,我跟你讲,这第一个坑就埋在这儿!为什么?因为很多企业服务器上跑了流量监控或者蜜罐,人家那个“版本横幅”是伪造的!我就曾经在实战中碰到过一个主机,Nmap显示是Windows Server 2008,我屁颠屁颠地拿着MS17-010(永恒之蓝)去打,结果呢?人家实际上是CentOS上的Samba,直接给我弹了个“Host is down”,好家伙,那一刻我血压都上来了!所以啊,网安SMB枚举的第一步,千万别指纹识别,别信横幅,你要做的是先尝试连接,用smbclient -L //IP去探探它真实的协议协商响应,那个才靠谱。
第二个坑:空会话不一定能建立,但别急着放弃!
哎呀,我记得刚学enum4linux的时候,那家伙,猛如虎啊!什么-U -P -S -N全给它安排上,结果一跑,屏幕上全是“NT_STATUS_LOGON_FAILURE”,心凉半截,心想这目标加固得真好。但坑就在这儿! 你以为空会话失败就结束了?NAIVE!你得换个思路呀!有些系统,虽然不允许匿名枚举,但它允许guest账号(来宾账号)或者空白密码登录,你拿smbclient -U guest% //IP/IPC$试过没?要是还不行,那再试试-U " "%" "这种奇奇怪怪的组合,我上次渗透一个集团内网,就是用guest账号硬生生看到了共享文件列表,结果里面放着一个passwords.txt,哈哈哈哈,当时我在工位上笑出了声,同事以为我中邪了,记住喽,网安SMB枚举时,撞库不如撞“guest” ,这招我是百试百灵。
第三个坑:共享文件列表出来了,可你用错工具读取了!
好,假设你运气不错,通过Nmap的脚本或者SMBMap列出了一个共享目录,叫DataShare,是不是立马就想挂载下来?用mount.cifs?哎呀,急性子最容易掉坑里。网安SMB枚举最大的坑之一,就是别把枚举和利用混为一谈,你只是枚举信息,没必要直接挂载到本地,因为挂载会留下日志记录,甚至触发杀软报警,你应该用smbclient //IP/DataShare -U user,然后一条条cd、ls去扒目录,重点来了!很多目录名字看起来像是Documents,实则里面是一堆快捷方式(.lnk文件),这时候你得小心了,千万别手贱点开,那可能是哈希泄露的钓鱼文件,我就吃过这个亏,点开个.lnk,结果PCAP抓包里多了一条SMB2.1的认证请求,差点以为要被溯源了,所以呀,在枚举阶段,能看和能动是两码事,千万别越界!
第四个坑:那个“危险”的IPC$,到底怎么看?
说到SMB枚举,IPC$绝对是个绕不开的坎儿,但这里有个超级大的坑,就是很多人分不清null session和IPC$访问的区别,我见过不少新手,看到有IPC$共享就兴奋,以为能直接列出所有用户,喂喂喂,醒醒吧兄弟!现在的Windows(尤其是打过补丁的),默认只有Everyone组才能访问IPC$,但你除了能ping通,啥也列不出来。正确的网安SMB枚举姿势是什么呢?你要利用IPC$去进行一次有效的SMB连接,然后通过这个管道去RPC调用samr服务,采用rpcclient来枚举用户组,我用rpcclient -U "" -N连上去后,输入enumdomusers,那才是实打实的账号列表,如果这一步失败了,别慌,再去用crackmapexec smb IP --users,试试暴力枚举用户名,这坑告诉我一个理儿:面向对象的思维很重要,别逮着IPC$死磕,要懂得曲线救国。
第五个坑:SMB签名开启与关闭,决定你后续快慢!
哎,这个坑,怎么说呢,最不起眼但最致命,很多人在枚举完信息后,准备用responder抓包或者做中间人攻击,结果发现抓了一堆垃圾流量,搞了半天才发现,目标开启了SMB签名。网安SMB枚举的坑,就是你不提前检测签名是否必需,如果对方强制要求签名(高端服务器常用),你发的包它全给拒了,那你的流量劫持就毫无意义,当你用了smbmap -H IP后,请务必看一眼输出里有没有[+] Signing: True或者[+] Signing: False,如果是True,赶紧收起你的坏心思,老老实实去爆破口令,别做无用功,我那次在域控面前抓了半小时包,结果全是因为签名校验失败的拒绝包,简直蚌埠住了!
第六个坑:枚举出的主机名,别直接去DNS解析!
你有没有遇到过这种情况:enum4linux枚举出了主机名,叫FILESERVER-01,你立刻解析它的IP,发现是10.10.10.50,然后就想直接连上去。打住! 这里有个逻辑陷阱。SMB枚举出的NetBIOS名称和DNS名称是两码事,尤其是在WINS注册的网络环境里,你可能解析出一个看似正常的地址,但那可能是某个没有更新的老旧DNS记录,或者干脆就是一台已经退役的机器,你应该用nmblookup -A IP去确认这个IP对应的NetBIOS名是否就是目标,千万别让枚举出的名字带着你跑偏,导致你渗透了一台毫不相干的僵尸主机,浪费大半天时间去撞墙,那种绝望感……唉,说多了都是泪。
第七个坑:最后防线——权限枚举别只看Administrator!
忙活半天,终于搞定了一对弱密码,拿到了一个账号,这时候你高高兴兴去枚举共享权限。坑来了!你是不是只看Administrator、Domain Admin组?要知道,网安SMB枚举的核心是找“隐藏的后门账号” ,很多运维图省事,会把backup、test这种账号加入Remote Desktop Users或者Backup Operators组,你用enum4linux -a IP跑完,请仔细看那个Group Membership部分,别错过HelpLibraryGroup(好吧,这个有点老坑了)或者NT VIRTUAL MACHINE,我就靠着一个叫tempadmin_2020的残留账号,从普通用户一路枚举到备份管理员权限,最后拿到了域管,哎呦我去,那一刻感觉之前的坑都值了!
好了,啰嗦了这么多,其实也就把我在实战中踩过的网安SMB枚举哪些坑给大家伙儿总结了一下,总而言之吧,SMB枚举就像开盲盒,看着简单,实则细节满满。
如果你现在正卡在某个内网环境,拿着smbclient无从下手,那咱俩可以评论区聊聊,毕竟网安SMB枚举哪些坑这个话题,我一个人是真说不完,最后送各位一句话:枚举不仔细,渗透两行泪,希望兄弟们都能顺顺利利,少踩几个坑,多拿几个域控!加油!奥利给!