PTT票据传踩坑记录:那些让我头秃的“纸片陷阱”
哎,朋友们,今天咱不聊高大上的渗透测试,也不扯那些云里雾里的零日漏洞,就聊聊我最近被“PTT票据传递”这玩意儿折腾到怀疑人生的惨痛经历,说真的,这玩意儿看上去就是个“纸片”游戏,但玩起来,嘿,那叫一个步步惊心,全是坑!我这个老网安人,愣是差点在阴沟里翻了船,必须得写出来给大伙提个醒。
先声明啊,咱这“票据”可不是高铁票,是Kerberos认证协议里的那种“通行证”。 PTT(Pass The Ticket)攻击,说白了就是拿着偷来的合法票据,大摇大摆地冒充别人进系统,听起来是不是超简单?感觉比Pass The Hash还省事?我当时也是这么想的,结果呢?呵,图样图森破!第一个坑就差点把我埋了。
内存里的票据“不翼而飞”?
我当时用mimikatz在目标机器上sekurlsa::tickets /export,费了半天劲,心里美滋滋地等着票据文件落地,结果呢?导出是导出了,但全是.kirbi格式的零字节空文件!我当时就懵了,这啥情况?后来排查半天才发现,原来是被提取的进程权限不够,或者目标机器的Kerberos服务根本没跑在默认的lsass.exe进程里,哎呦喂,那一刻我差点把键盘吃了。记好了,兄弟们,如果要导票据,最好用lsadump::dcsync或者直接在内存里操作,别傻乎乎地只盯着文件导出,那一步最容易出鬼。
票据“保鲜期”比想象中短,过期不候!
好不容易导出了有效的.kirbi文件,我那个激动啊,赶紧在自己攻击机上kerberos::ptt ticket.kirbi,准备用dir \\DC\c$验证一下,结果,系统给我弹了个“拒绝访问”?我丢!我明明拿到了域管的票据啊!冷静下来一查,原来那张票据的有效期早过了,Kerberos票据默认有效期就10个小时,我抓出来的是一张“僵尸票”,哎,这玩意儿就跟超市里的临期食品似的,看着能要,实则已经馊了。所以啊,兄弟们,拿到票据先检查时间戳,kerberos::list看看有没有过期,千万别拿个过期票去撞域控,只会撞一鼻子灰。
抓到的票据“水土不服”,SID不匹配!
最让我崩溃的是第三次,我通过一个高权限的service账户拿到了票据,在本地域用得好好的,一换到另一个子域或者信任域,直接“Invalid Parameter”报错,唉呀妈呀,我当时脸都绿了,后来请教了一位大佬才明白,这票据里绑定了SID(安全标识符)啊! 你拿着A域的票据去访问B域的资源,如果两个域之间没有建立正确的信任关系,或者SID历史没同步,那这票据就是个“假证件”。这点特别重要,PTT要想跨域玩,必须得先摸清楚域信任关系,不然你就等着被各种奇奇怪怪的错误码轰炸吧。
最后悔的一点:忘了清理“现场痕迹”!
你以为攻击完就完事了?太天真了!当你用kerberos::ptt加载了票据后,在当前登录会话里是会留下缓存痕迹的,我上次做完测试,直接关了命令行,以为万事大吉,结果蓝队哥们儿一查日志,发现我的会话里多了一张不属于我用户的票据记录,瞬间暴露。咱做渗透的,不能光顾着打,还得顾着“擦屁股”啊。 用完后记得kerberos::purge把票据清掉,把日志删干净,不然就是给防守方送人头了。
哎,说了这么多,都是血泪啊,PTT票据这东西,看着比哈希传递“高大上”,但其实细节要求极高,从票据提取、权限校验、时间有效期、SID绑定,再到最后的痕迹清理,每一步都是坑,稍不留神,你就从“攻击者”变成“送人头”的了。 但这也正是网络攻防的乐趣所在吧,逼着你不断抠细节,不断学习。
说到底,不管是PTT还是其他攻击手法,都得建立在扎实的基础知识和对底层协议的深刻理解上。 我现在每次遇到这种糟心事,就恨不得多学点东西,如果你也是刚入行或者想转行搞网络安全的,别整天想着那些炫酷的攻击技巧,多啃啃协议文档,多动动手在虚拟环境里踩踩坑,比啥都强!

最后唠叨一句:
对这块感兴趣,或者想系统学习网络安全、渗透测试的朋友,可以加QQ:3227443,咱们可以一起交流踩坑心得,共同进步,但切记,技术无罪,别拿它干坏事,否则踩的就不是技术的坑,而是法律的坑啦!咱们下回再聊,拜拜!

