IPC$的含义
IPC$(Internet Process Connection)是共享"命名管道"的资源,是为了让进程间通信而开放的命名管道,
可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码(当然,对方机器必须
开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户
列表(不过负责的管理员会禁止导出用户列表的)。
ipc$漏洞并不是真正意义上的漏洞,它是为了方便管理员的远程管理而开放的远程网络登陆功能,
而且还打开了默认共享,即所有的逻辑盘(c$,d$,e$……)和系统目录winnt或windows(admin$)。
关闭它直接在命令提示符里输入net share IPC$ /d
或者 net share IPC$ /del
或者 net share IPC$ /delete
就可以删除
当出现 发生系统错误 5。拒绝访问。
也可尝试从注册表里进行操作:
去除共享:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"AutoShareServer"=dword:00000000
"AutoSharewks"=dword:00000000
去除IPC$管理:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"restrictanonymous"=dword:00000001
当确认再次出现 发生系统错误 5。拒绝访问。
则应直接进入管理工具里的服务里,找到Server这个服务项目,将其关闭
也可以在命令提示符里输入net stop server /y 关闭服务
之后在命令提示符里输入net share IPC$ /d
则可见到
没有启动服务器服务。
请键入 NET HELPMSG 2114 以获得更多的帮助。
即表示关闭掉了共享服务
IPC$存在,则可以利用它进行如下操作:
1.建立IPC连接
首先需要知道远程主机的用户名和密码。
打开CMD后用如下命令:net use\\ip\ipc$ "password" /user:"username"进行连接。
注意,如果远程服务器没有监听139或445端口,会话是无法建立的。
也就是说IPC$需要对方开启139或445端口。
2.IPC$连接建立后最容易受到的威胁
如果黑客使用管理员权限的账号和目标连接IPC$,他就可以和对方系统做深入“交流”。
黑客可以使用各种命令行方式的工具,比如pstools系列、Win2000SrvReskit、telnethack等
获得目标信息、管理目标的进程和服务等。如果目标开放了默认共享
(没开的话,黑客会帮你开),黑客就可以上传木马并运行,也可以用tftp、ftp的办法上传,
而dwrcc、VNC、RemoteAdmin等工具(木马)还具有直接控屏的功能,可直接控制PC。
如果是Win2000 Server,黑客还会考虑开启终端服务以方便控制。
3.建立空连接
建立空连接的命令:net use \\IP\ipc$ "" /user:""。
空连接是在没有信任的情况下与服务器建立的会话(即未提供用户名与密码),
但根据Win2000的访问控制模型,空会话的建立同样需要提供一个令牌,可是空会话
在建立过程中并没有经过用户信息的认证,所以这个令牌中不包含用户信息,因此,
这个会话无法在系统间发送加密信息,但这并不表示空会话的令牌中不包含安全标识符SID
(它标识了用户和所属组),对于一个空会话,LSA提供的令牌的SID是S-1-5-7,
这就是空会话的SID,用户名是:ANONYMOUS LOGON(这个用户名是可以在用户
列表中看到的,但是无法在SAM数据库中找到,属于系统内置的账号),这个访问令牌
包含下面的组:Everyone,Network;在安全策略的限制下,这个空会话将能访问到上面
两个组有权访问到的一切信息。
对于NT,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问
Everyone权限的共享,访问小部分注册表等,并没有什么太大的利用价值;对Win2000
作用更小,因为在Win2000和以后版本中默认只有管理员和备份操作员有权从网络访问
到注册表,而且实现起来也不方便,需借助工具。从这些我们可以看到,这种非信任
会话并没有多大的用处,但从一次完整的IPC$入侵来看,空连接是一个不可缺少的跳板,
因为我们从它那里可以得到用户列表,空连接还可以列举用户和组,目标系统类型等。
这对于一个老练的黑客已经足够了
4.利用空连接得到远程主机的用户列表
先建立一个空会话(需要目标开放ipc$),用命令:net use \\ip\ipc$ "" /user:""即可建立空连接。
然后用命令:net view \\IP命令查看远程主机的共享资源,如果对方开了共享,就可以列出
共享名、类型及其注释。
最后再使用nbtstat -A IP命令就可以得到远程主机的NetBIOS用户名列表(需要打开自己的NBT)。
注意,建立IPC$连接的操作会在EventLog中留下记录,不管你是否登录成功。
5.利用IPC$进行磁盘的网络映射到本地磁盘中
使用命令net use z: \\目标IP\c$ "密码" /user:"用户名"命令,即将对方的c盘映射为自己的z盘,其他盘类推。
如果已经和目标建立了IPC$,则可以直接用IP加盘符加$访问。
比如执行copy muma.exe \\IP\d$\path\muma.exe命令,或者再映射也可以,
只是无需用户名和密码了,例如输入:net use y: \\IP\d$命令。然后
再执行copy muma.exe y:\path\muma.exe即可。当路径中包含空格时,须用""将路径全引住。