内网渗透里最容易被忽略的三件事
做了几年内网渗透(都在授权范围内),慢慢发现一件事:技术上最难的部分,往往不是卡住我的地方。
卡住我的通常是三件很朴素的事。
一、资产清单不准
每次进场,客户给的资产清单都不准。
- 清单上有 200 台机器,实际扫出来 260 台
- 清单说某台是测试机,实际跑着生产数据库
- 清单没有的网段,扫出来一整片子网
为什么这件事致命:你打到清单外的机器,就是在打没有授权的目标。轻则项目中止,重则法律责任。
我的做法是:
- 进场第一件事不是扫端口,是扫描 + 对比清单
- 扫出来的差异,逐条跟客户确认「这台在不在范围内」
- 确认结果写进项目记录,让客户签字
这一步会花半天到一天,但省掉的是整个项目的风险。
技术上怎么扫:
# 存活探测(不用 ping,很多机器屏蔽 ICMP)
nmap -sn -PS22,80,443,3389 10.0.0.0/16 -oG alive.txt
# 按网段整理
grep "Up" alive.txt | awk '{print $2}' | sort -t. -k1,1n -k2,2n -k3,3n > hosts.txt
对比清单:
comm -13 <(sort list.txt) <(sort hosts.txt) # 清单外的主机
comm -23 <(sort list.txt) <(sort hosts.txt) # 清单上但不通的
二、凭据复用被低估
大部分内网横向,靠的不是漏洞,是同一套密码。
我见过的情况:
- 域管理员密码 = 本地管理员密码
- 运维的 SSH key 在所有机器上都有
- 数据库密码和后台登录密码一样
- 一套密码从 2018 年用到现在
这意味着一台机器的失守,等于整个内网的失守。
从防守方的角度,这是我给出频率最高的建议:本地管理员密码要随机化(LAPS)、服务账号要分级、域管账号禁止登录普通机器。
从攻击方角度,我要提醒的是:别急着打漏洞,先试试拿到手的凭据能不能复用。
# 用已有凭据批量验证(授权范围内)
crackmapexec smb 10.0.0.0/24 -u user -p 'password' --continue-on-success
这一步经常能直接拿到大半的机器,比找漏洞快得多。
三、时间窗口
内网渗透是有时间窗口的,而新手(包括当年的我)经常忽略这一点。
具体的表现:
- 白天做扫描,触发 IDS 告警,被运维发现
- 在生产环境做漏洞利用,业务受影响
- 在业务高峰期做密码喷洒,账号被锁,全公司登录不了
一次真实的教训:我在工作时间对一个 OA 系统做密码喷洒,触发了账号锁定策略(5 次失败锁 30 分钟),锁了三个业务部门的账号。虽然客户授权了测试,但那次之后我的测试窗口被限制到凌晨 1 点到 5 点。
凌晨干活是很痛苦的,但如果因为你的操作影响了业务,项目基本就结束了。
我的做法:
- 进场前问清楚:业务低峰期是什么时候、有没有账号锁定策略、有没有 IDS/IPS、能不能关
- 所有可能触发告警的操作,提前报备(时间、源 IP、目标、手法)
- 密码喷洒这类操作,先问清楚锁定阈值(通常是 5 次),然后只试 2~3 次
- 关键操作有人盯着(客户的运维在场)
四、还有一个:别忘了你留下的东西
渗透测试结束时,要清理:
- 上传的 webshell
- 创建的后门账号
- 修改的配置
- 放在
/tmp的工具
有一次我在一台机器上留了个测试账号没删,两个月后客户做安全巡检发现了,打电话过来问。虽然解释了,但印象分掉了很多。
现在我有一个清理清单,每台打过的机器都记一行:IP、做了什么、清理了什么。项目结束时对照一遍。
五、防守方的三条建议
既然写到这里,也给防守方三条最有效的:
- 本地管理员密码随机化。这一条能挡住大部分横向移动。
- 分网段,并且默认拒绝。办公网、服务器网、测试网之间不要互通。很多内网渗透的路径是「从一台被钓鱼的员工机,直接 RDP 到数据库服务器」。
- 看日志。真的,很多入侵在日志里留下了痕迹,只是没人看。一台机器的 4624(登录成功)事件突然出现大量来自陌生 IP 的记录,这就是信号。
六、最后
技术在进步,工具在变,但这三件事十年没变过:搞清楚范围、利用好凭据、别搞坏业务。
新手容易沉迷于「拿到域控」的快感,但真正专业的渗透测试,交付的是一份客户能照着修的报告,而不是一个 shell。
我现在做完一个项目,最有成就感的部分不是打穿了什么,是报告里那几条「如果这样改,下次就打不进来了」。
评论 (0)
还没有评论,来说两句吧~
发表评论