很多人一提“post渗透”就想到提权、渗透读密码、渗透开3389。渗透真进去了才发现,渗透最烦的渗透往往不是技术问题,是渗透不知道该干嘛。我见过一个哥们儿,渗透好不容易通过Struts2拿下一台Tomcat,渗透进去第一件事是渗透翻webapps目录找源码,结果被运维的脚本抓了个正着——那台机器上装了OSSEC,文件完整性监控每五分钟跑一次,他改的那点东西全被记下来了。
所以我的习惯是:先看环境,再动手指。进去之后别急着whoami,先跑几条命令看看这台机器是干嘛的。比如netstat -ano看有没有连内网数据库,tasklist看有没有杀软或者EDR,systeminfo看补丁打了多少。这些信息比一个root密码值钱多了。有一次我进了一台Windows Server 2012,发现它连着Oracle RAC,那台机器本身权限不高,但通过它我能横向到核心数据库。这时候提权反而成了次要目标。
网上那些“留后门十八招”大部分已经不好使了。注册表Run键、计划任务、服务——这些地方EDR盯得比你家门口的摄像头还紧。我试过在一个客户内网里用schtasks加了个每十分钟回连的任务,结果第三天就被发现了。后来我学乖了,能不动系统就不动。真需要维持访问,优先考虑应用层的东西:比如往Web目录里塞个webshell,或者利用已有的数据库账号建个反向连接。这些操作在日志里看起来像正常业务流量,比改系统配置隐蔽得多。
还有一个坑:别用默认端口和默认路径。你留个cmd.exe在C:\Windows\Temp下面,或者连一个4444端口,蓝队扫一遍就出来了。我一般把回连端口设在80或443,路径放在某个正常程序的子目录里,文件名起得跟系统组件似的。不图别的,就图个多活几天。
很多人一拿到内网就急着上Cobalt Strike,扫一大片,结果触发了流量告警。我更喜欢“慢就是快”。先用手工命令摸清网络拓扑:arp -a看邻居,route print看路由,net view看域内机器。然后挑一两个看起来像跳板机的下手。什么叫跳板机?就是那种开了很多端口、装了多块网卡、或者连着多个网段的机器。拿下一台,比扫一百台都有用。
横向的时候,凭证比漏洞好用。我经常在内存里翻明文密码或者hash。Mimikatz当然可以,但有时候procdump把lsass dump下来,拿回本地慢慢读更安全。有一次我在一台运维机上翻到一个unattend.xml,里面存着域管密码,那还提什么权,直接域控了。
说实话,在现在这个日志集中收集的年代,彻底擦屁股基本不可能。你删了本地日志,SIEM里还有一份。你清了事件日志,网络流量记录还在。所以我的策略是:尽量少留痕迹,而不是事后擦。能用无文件就不用落地文件,能用内存加载就不写磁盘。真需要上传工具,用完立刻删,并且把时间戳改掉——但别改得太完美,改得太完美反而可疑。
还有一点:别在目标机器上直接编译或者跑大型工具。我见过有人把frp传到服务器上跑,CPU直接飙到100%,运维不看监控才怪。要跑也挑业务低峰期,或者把工具伪装成正常进程名,限制一下CPU占用。
post渗透没有标准答案。同一个环境,不同的人进去,走的路完全不一样。关键是你得知道自己要什么——是拿数据、控权限、还是单纯证明能进去。目标不同,手法和节奏就不同。别为了炫技去提权,也别为了留后门而留后门。很多时候,拿到你要的东西,安静地退出来,比在里面折腾半天更专业。
对了,别忘了写报告。客户不关心你用了什么0day,他们只关心:哪些数据被访问了,哪些系统受影响,怎么修。你写得越清楚,下次他们越愿意让你测。
```