渗透抓包
去年冬天调一个内网巡检脚本,渗透抓包发现测试机每隔 37 秒就往一台陌生 IP 发心跳包。渗透抓包那台机器不在资产表里,渗透抓包MAC 地址也查不到归属。渗透抓包顺着流量摸下去,渗透抓包才意识到有人早把内网当成了自家后院——抓包这件事,渗透抓包从来不是渗透抓包安全团队的专属动作。 很多人以为抓包就是渗透抓包打开 Wireshark 看几行 HTTP 头。真到了渗透场景里,渗透抓包抓包是渗透抓包另一回事:你要在目标毫无察觉的情况下,把经过网卡的渗透抓包每个字节都留下来,还得让这些字节能还原成可读的渗透抓包凭据、会话、渗透抓包业务逻辑。渗透抓包这中间的渗透抓包差别,就像看别人钓鱼和自己下水摸鱼。 交换机不会把别人的流量白白送给你。普通办公网里,你插上网线,只能收到广播包和发往自己 MAC 的帧。想拿到同网段其他机器的数据,得先让交换机“犯错”。ARP 欺骗是最老也最稳的路子:伪造网关的 ARP 响应,让目标把流量送到你这里,你再转发出去。目标上网没感觉,你这边已经拿到完整会话。 有个细节容易被忽略。Windows 默认开启的 ARP 缓存老化时间大约是 15 到 45 秒,Linux 更短。欺骗包发得太稀,缓存过期后目标会重新广播询问,流量就绕开你了。我习惯把间隔压到 8 秒以内,同时用 arpspoof 的 -t 参数双向欺骗,既骗目标也骗网关,这样往返流量都经过本机。 原始 pcap 文件扔给谁看都头大。渗透里真正有价值的是从流量里捞出明文凭据和会话令牌。HTTP 基本认证的 Authorization 头是 Base64,解出来就是用户名密码。更常见的是 Cookie 里的 session id,拿到它直接重放请求,连密码都不用碰。 HTTPS 是道坎。早期有人靠 sslstrip 把 HTTPS 降级成 HTTP,现在 HSTS 普及后这招基本失效。更实际的做法是在目标机器上装自己的根证书,或者直接对目标浏览器进程做 SSLKEYLOGFILE 注入。前者需要物理接触或域控权限,后者在已控主机上执行时更隐蔽。我见过一个案例,攻击者通过钓鱼拿到一台财务机权限,没急着横向,先在本机设置 SSLKEYLOGFILE 环境变量,等了两周,财务登录网银的密钥日志全落在临时目录里。 内网里跑的东西比想象中杂。SMB 流量能直接提取 NTLM 哈希,拿去做 relay 或者离线爆破。数据库端口的明文查询里经常夹着业务系统的账号。DNS 隧道更隐蔽,把数据编码进子域名,防火墙看着像正常解析请求。抓包时如果只过滤 tcp port 80 和 443,会漏掉一大半有意思的东西。 有次在客户现场,同事用 tcpdump 抓了半小时,抱怨“全是加密的,没东西”。我让他把过滤条件去掉,只看 udp 53。结果发现一台内部服务器在向外部 DNS 查询一个奇怪域名,子域名部分是 Base32 编码的。解出来是数据库连接串。攻击者连 HTTP 都没用,纯靠 DNS 就把数据带出去了。 拿到流量只是开始。你得判断哪些会话还活着,哪些凭据能直接复用。一个过期的 session id 重放回去只会得到 302 跳转登录页。这时候看响应时间差、Set-Cookie 变化、甚至页面标题的细微差异,都比盲目重放有效。 渗透抓包最危险的地方在于,你留下的痕迹比目标业务流量还显眼。ARP 欺骗会让局域网里出现大量重复的网关 MAC,稍微懂点的运维扫一眼交换机日志就能发现。所以真正做内网渗透的人,抓包窗口往往很短,拿到关键数据立刻收手,把流量还原成正常转发状态。剩下的分析工作,离线做。 回到开头那台测试机。后来查清楚了,是某个离职员工留下的定时任务,IP 指向他家里的树莓派。没恶意,但暴露了一个事实:内网里任何一台机器都可能成为抓包的支点。你不需要多高深的工具,只需要比运维多知道一点——流量经过的地方,秘密就留在那里。先搞清楚你站在哪一层
抓到的包怎么变成能用的东西
别只盯着 HTTP
抓包之后的动作才决定成败